Aug
12

I am doing some research on a strange index issue today (likely a future blog post). Googling almost anything in VFP will link you to the single biggest FoxPro KnowledgeBase on the planet: Steven Black’s hosted Visual FoxPro Wiki. I wish I had a count of the number of times I visit the Visual FoxPro Wiki.

Today the topic I found extremely compelling is “CDX Corruption Checklist“. It is already marked as a three-star topic (highly rated). This topic did not help me solve my problem, but it was an excellent read.

My thanks to all involved in putting this one together.

Jul
20

Testing, 1-2-3, testing

GoDaddy hosts my personal Web site for cheap. Last week while on vacation they decided to move it to a new server, then asked *me* to test it. Sure enough: 401.3 Unauthorized due to ACL on resource. My research indicates it is a NTFS permissions problem.

Every time I navigated to the Web site I was prompted by a login screen. Sweet.

Yesterday I called GoDaddy’s normally excellent tech support from an airport as I was waiting for a flight. They told me I had to uninstall and reinstall FrontPage extensions, then republish the entire Web site. How is this related to a permissions problem?

OK, this is a hardware problem so I am not the authority here so I follow along. Uninstall and wait for 30 minutes. Fly home, eat dinner, reinstall. Same problem. Too tired from travel so I hit the sack. Get up, same problem. Have you heard how much I love hardware?

I call back today and get the same story. This time I mention I did a little research on the issue and it *could* be related to NTFS permissions. On and off hold for 30 minutes. GoDaddy tech support calls advanced tech support. New advice: reinstall FrontPage extensions and republish Web site. What?!?!

Sure enough it seem to work without the republishing of the Web site so I suspect some advanced tech support dude fixed the NTFS permissions in the 30 minutes it took to reinstall the extensions.

Anyway, I only meant to post a test post to see if I can. I can’t imagine slapping up a smoke screen to my customers while I fix something behind their back. GoDaddy should have tested my site before telling me it was ready. It would have saved me lots of time I don’t have.

Jul
10

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.

Jul
09

All the details can be read on the Southwest Fox Blog.

I can say without question this was one of the most positive things I did yesterday. It is always fun listening to people be so excited about coming to Southwest Fox and hear how they think it will be a very beneficial experience. D.J. is coming to his first ever VFP conference! He is part of the Madison FoxPro Users Group (MadFox) so they are guaranteed at least $25 to help with the costs of running their user group too. I am looking forward to meeting him in person..

This was the third year in a row White Light Computing gave away a scholarship to someone coming to Southwest Fox, and the first year it was awarded to someone who is the sole person registered from their company.

Congratulation D.J.!

Only 99 days until we all meet in Mesa.

Jul
03

You heard it here first: I have changed my mind about speaking at Southwest Fox. Why? Providing better content and value to the people who pay good money to attend this terrific conference.

Oh, you might be thinking I am replacing myself with another speaker. Hmmm, trust me, it did cross my mind during the selection process because there were some terrific session ideas we had to turn away, but Doug and Tamar refused to let me “relax” during the conference while they are speaking {g}.

No, I am swapping out one session for another. I submitted a proposal to the other organizers to replace the Upsizing Wizard session with a new session I am developing called: “Using VFPX Components in Production Applications”. I have been having an absolutely great time working with some of the terrific components people like Emerson Stanton Reed, Carlos Alloatti, Kevin Ragsdale, Bo Durban, Cesar Chalom, and others have been creating. I have been presenting some of my implementation ideas I have at various user group meetings and the feedback has been exhilarating. I cannot wait to share this session with you at Southwest Fox. You will see live demonstrations of the VFPX components in real VFP production applications, and then I will show you all the nitty-gritty details to implement them.

More details here: Using VFPX Components in Production Applications

Hopefully those who were looking for the insight into the Upsizing Wizard are not too disappointed. Depending on the timing, I might include the white paper for this session on the conference CD as a bonus session.

ONLY 105 days until we meet in Mesa!

Jun
22

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?

Jun
19

As I mentioned in a post last week, I am less inclined these days to install the latest and greatest of every piece of software I use. To me, a lot of software manufacturers have moved their products into a perpetual beta. While I understand the need to move things to market quicker and be first with new innovations, in general it seems to me software is pushed too fast and users suffer the consequences. I am sort of burned out in this respect, and don’t have time to spend finding the problems. I am in the part of the cycle where I can watch others move out into the waters before I do for most software updates.

Upfront, I can state that Firefox has been my primary browser for the last few years. I rarely use IE7 except for the frequent visits to Microsoft.com. I like it. The only issues I have is the latest build locks up on me as I am surfing (likely a conflict with an add-on), and it is a memory hog. Both issues are allegedly fixed in the newest release.

I downloaded Firefox 3 during the download fest to set the Guinness Book of World Records. I hope they get the record, even if I am not sure how it is really measured.

I have not installed it yet. I was thinking about it, but everything I have read is polarized from its great, to it sucks. Not much in the middle. Performance is terrific, performance stinks. Fast rendering, slower rendering. Interface rocks, to what the heck did they do to the icons. Address bar features are cool, address bar features make it unusable. Some will never look back, some have uninstalled and moved back to 2.0.

Across the board. Blogs, Twitter, emails from friends and customers, and expert analysis. Polarized.

I likely will take some time in the next week to load it in a virtual machine. No sense in hosing up the production box. What are your experiences? Like it? Hate it? Sitting on the fence and watching the game like me?

Jun
19

Twitter Honeymoon

I am finishing the second full day of learning about Twitter and how this thing works. Observations so far:

  1. An interesting mix of characters makes it enjoyable to listen in. I definitely see the water cooler benefits for the folks working on their own. I have been out of the team and office environment for more than a year and miss the camaraderie.
  2. So far it has not been as distracting as I anticipated.
  3. Getting an applet to get tweets is definitely the way to go if you want to keep up with things. Turning it off is easy to do. Right now I am using twhirl because it seemed the most popular of the people I follow. First Adobe Air product I have used.
  4. Learning to write in short sentences is not as easy as I thought it would be.
  5. Short sentences not easy {g}.
  6. I am learning about FireFox 3 from several people jumping in the pool before I do.
  7. I am surprise to see Twitter put up pages about how it is too busy and to try later. This happens a lot. I would expect it to be scaled by now.
  8. Guy Kawasaki is a twittering madman and often off the wall. Different person than what you read on his blog.
  9. Alan Griver is a soda junkie, or it seems his day revolves around the choice of beverage he partakes in at work. I actually had a craving for a Coke the other day. Have not had one of those in a long time. I have been off caffeinated beverages for two and a half years.
  10. Craig Bailey is a caffeine junkie and has a new coffee maker in the office he worships.
  11. Rick Strahl actually takes vacation. I am surprised that this surprises me.

I am still not 100% sold on Twitter, but I am definitely not disliking it either. Time will tell.