<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Frank Perez's Blog - SWFOX</title>
    <link>http://www.pfsolutions-mi.com/blog/</link>
    <description>Tips, tricks, rantings, ravings, ideas, and life as a Visual FoxPro developer.</description>
    <language>en-us</language>
    <copyright>Frank Perez</copyright>
    <lastBuildDate>Sun, 19 Oct 2008 18:43:13 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>frankperez@pfsolutions-mi.com</managingEditor>
    <webMaster>frankperez@pfsolutions-mi.com</webMaster>
    <item>
      <trackback:ping>http://www.pfsolutions-mi.com/blog/Trackback.aspx?guid=f4b3e2c6-56a3-433d-bd0d-f9d2b003511e</trackback:ping>
      <pingback:server>http://www.pfsolutions-mi.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pfsolutions-mi.com/blog/PermaLink,guid,f4b3e2c6-56a3-433d-bd0d-f9d2b003511e.aspx</pingback:target>
      <dc:creator>Frank Perez</dc:creator>
      <wfw:comment>http://www.pfsolutions-mi.com/blog/CommentView,guid,f4b3e2c6-56a3-433d-bd0d-f9d2b003511e.aspx</wfw:comment>
      <wfw:commentRss>http://www.pfsolutions-mi.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f4b3e2c6-56a3-433d-bd0d-f9d2b003511e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Southwest Fox 2008 - Day 4 
<p>
My last day started with Christof Wollenhaupt's "Optimizing and Debugging" session.
In this presentation Christof demonstrated many good debugging and optimizing tips.
Some of my favorites are:
</p><ul><li>
When building a new application, work on the data migration before the forms and reports.
This way you will have good sample data to test the forms and reports with.</li><li>
Design to match complexity. For example, N-Tier is a good idea for enterprise systems,
but probably overkill for a hobby application.</li><li>
Avoid defensive programming such as parameter checking. It can promote bad coding
practices.</li><li>
Forms make horrible progress bars because they change focus (Activate and Deactivate
events), which can interfere with debugging. Use a toolbar instead. This also has
the benefit of always being on top.</li><li>
Use a hotkey to turn the Coverage Profiler on and off.</li><li>
When using Coverage Profiler, keep in mind that the time it takes to log an event
can make a line of code that normally executes quickly appear much slower due to the
overhead.</li><li>
Use SCAN FOR instead of REPLACE FOR whenever possible because the REPLACE FOR command
has to do a table lock, versus a record lock.</li></ul><br /><p>
My last session of the conference was Craig Boyd's "VFP Fundamentals: Creating a Professional
VFP Application from Start to Finish". Craig began with how he likes to setup his
project folders, how he uses Subversion for version control, and sub-classing the
base classes. He also discussed user interface best practices, such as using one font,
using colors sparingly, avoid creating a battleship (black, white, and gray only),
and being consistent in how you layout and size things.
</p><p>
My favorite part of his demonstration was an awesome grid that he created. It had
really cool features such as column sorting, incremental search and filtering (very
similar to Microsoft Excel), export capabilities, and the ability to save and restore
how a user customizes the grid (i.e. column re-ordering and re-sizing).
</p><br />
Links:<br />
Subversion <a href="http://subversion.tigris.org/">http://subversion.tigris.org/</a><img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=f4b3e2c6-56a3-433d-bd0d-f9d2b003511e" /></body>
      <title>Southwest Fox 2008 - Day 4</title>
      <guid isPermaLink="false">http://www.pfsolutions-mi.com/blog/PermaLink,guid,f4b3e2c6-56a3-433d-bd0d-f9d2b003511e.aspx</guid>
      <link>http://www.pfsolutions-mi.com/blog/2008/10/19/SouthwestFox2008Day4.aspx</link>
      <pubDate>Sun, 19 Oct 2008 18:43:13 GMT</pubDate>
      <description>Southwest Fox 2008 - Day 4

&lt;p&gt;
My last day started with Christof Wollenhaupt's "Optimizing and Debugging" session.
In this presentation Christof demonstrated many good debugging and optimizing tips.
Some of my favorites are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
When building a new application, work on the data migration before the forms and reports.
This way you will have good sample data to test the forms and reports with.&lt;/li&gt;
&lt;li&gt;
Design to match complexity. For example, N-Tier is a good idea for enterprise systems,
but probably overkill for a hobby application.&lt;/li&gt;
&lt;li&gt;
Avoid defensive programming such as parameter checking. It can promote bad coding
practices.&lt;/li&gt;
&lt;li&gt;
Forms make horrible progress bars because they change focus (Activate and Deactivate
events), which can interfere with debugging. Use a toolbar instead. This also has
the benefit of always being on top.&lt;/li&gt;
&lt;li&gt;
Use a hotkey to turn the Coverage Profiler on and off.&lt;/li&gt;
&lt;li&gt;
When using Coverage Profiler, keep in mind that the time it takes to log an event
can make a line of code that normally executes quickly appear much slower due to the
overhead.&lt;/li&gt;
&lt;li&gt;
Use SCAN FOR instead of REPLACE FOR whenever possible because the REPLACE FOR command
has to do a table lock, versus a record lock.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;
My last session of the conference was Craig Boyd's "VFP Fundamentals: Creating a Professional
VFP Application from Start to Finish". Craig began with how he likes to setup his
project folders, how he uses Subversion for version control, and sub-classing the
base classes. He also discussed user interface best practices, such as using one font,
using colors sparingly, avoid creating a battleship (black, white, and gray only),
and being consistent in how you layout and size things.
&lt;/p&gt;
&lt;p&gt;
My favorite part of his demonstration was an awesome grid that he created. It had
really cool features such as column sorting, incremental search and filtering (very
similar to Microsoft Excel), export capabilities, and the ability to save and restore
how a user customizes the grid (i.e. column re-ordering and re-sizing).
&lt;/p&gt;
&lt;br&gt;
Links:&lt;br&gt;
Subversion &lt;a href="http://subversion.tigris.org/"&gt;http://subversion.tigris.org/&lt;/a&gt;&lt;img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=f4b3e2c6-56a3-433d-bd0d-f9d2b003511e" /&gt;</description>
      <comments>http://www.pfsolutions-mi.com/blog/CommentView,guid,f4b3e2c6-56a3-433d-bd0d-f9d2b003511e.aspx</comments>
      <category>SWFOX</category>
    </item>
    <item>
      <trackback:ping>http://www.pfsolutions-mi.com/blog/Trackback.aspx?guid=c9f9a586-3221-46bf-80ae-f7e88da6c5d7</trackback:ping>
      <pingback:server>http://www.pfsolutions-mi.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pfsolutions-mi.com/blog/PermaLink,guid,c9f9a586-3221-46bf-80ae-f7e88da6c5d7.aspx</pingback:target>
      <dc:creator>Frank Perez</dc:creator>
      <wfw:comment>http://www.pfsolutions-mi.com/blog/CommentView,guid,c9f9a586-3221-46bf-80ae-f7e88da6c5d7.aspx</wfw:comment>
      <wfw:commentRss>http://www.pfsolutions-mi.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c9f9a586-3221-46bf-80ae-f7e88da6c5d7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Saturday began with Doug Hennig’s “Creating Explorer Interfaces in Visual FoxPro”
session. This presentation was about creating an explorer like interface similar to
Windows Explorer using a TreeView control and the <a href="http://www.codeplex.com/VFPX">VFPX</a> OutlookNavBar
component.
</p>
        <p>
Besides being an excellent speaker, Doug’s sample code and white papers are alone
worth the price of admission. For example, Doug does not just use the standard TreeView
control. He extends it by automatically linking an ImageList control, proving node
load control, adding double click and right click functionality, adding “go back”
support, adding support for saving and restoring the state on close/open, and more.
Did I mention that it is also data-driven? That’s just awesome.
</p>
        <br />
        <p>
The second session of the day was Andrew MacNeill’s “Working with CodePlex and VFPX”.
In this presentation Andrew discussed the basics of <a href="http://www.codeplex.com/VFPX">VFPX</a>,
how to use the CodePlex site, and how to access the source code. I’ve always felt
like the <a href="http://www.codeplex.com/VFPX">VFPX</a> site was a little confusing
to navigate so it was nice to get a demonstration.
</p>
        <br />
        <p>
The third session was Alan Stevens’ “Manage Complexity with Agility”. This was my
first time hearing Alan speak. I had heard good things about his presentation last
year, so I was eager to experience one this time. I have to say, Alan exceeded my
expectations. His presentation contained a lot of good ideas about the software development.
For example, on the topic of software schedules, Alan suggests delivering something
every 1 to 2 weeks. It is better to find out what you’ve done is not what the customer
wanted, even though it may be what they asked for, sooner than later. He discussed
that most customers are not technical and therefore cannot provide formal requirements.
What you can do is get the user to explain what they need in short descriptions, a.k.a.
user stories. A user story consists of a role, a need, and a reason.
</p>
        <p>
Alan also demonstrated unit testing with <a href="http://www.foxunit.org/">FoxUnit</a>,
and automating builds using VFP MSBuild Target. FoxUnit is an open source unit testing
framework from VisionPace. VFP MSBuild Target is a <a href="http://www.codeplex.com/VFPX">VFPX</a> project
for performing Visual FoxPro builds.
</p>
        <br />
        <p>
After lunch I attended Doug Hennig’s “Advantage Database Server for Visual FoxPro
Developers” session. I was really interested in attending this session so that I could
get some first-hand knowledge about this product from a trusted Visual FoxPro developer.
</p>
        <p>
Doug did a really thorough job of explaining what Advantage Database Server (ADS)
is, how to install it, and how to use it with Visual FoxPro. This session covered
a lot of material, so I’m going to limit my comments to my favorite three things.
</p>
First, if you are still using the Visual FoxPro ODBC driver, which has not been updated
since Visual FoxPro 6, you may want to consider replacing it with the ADS ODBC for
the following reasons. One, it supports Visual FoxPro 9 fields types, such as auto
incrementing. Two, it’s free!<p></p><p>
Second, ADS supports accessing Visual FoxPro data both as native tables and through
ADS. This means that you can slowly convert an existing system to a client server
model one module at a time. For example, you could change one form to access the data
using ADS, while the rest of the system continued to access the tables directly. The
end goal would be to change all the forms to use ADS, but this one module at a time
approach allows you to first concentrate on the portions of the system that need the
conversion to client server the most. How cool is that?
</p><p>
And finally, the ADS full text search capability. This feature alone could be enough
reason to use this product. Doug started by creating a table with 80,000+ records
(60MB DBF) that had a 500MB FPT file. He then performed a search with both Visual
FoxPro and ADS. The results speak for themselves.
</p><ul><li>
Visual FoxPro Case Insensitive: 305 seconds 
</li><li>
Visual FoxPro Case Sensitive: 60 seconds 
</li><li>
ADS: 0.07 seconds</li></ul><br /><p>
My last session of the day was Alan Stevens’ “Ignorance is Bliss: Why You Don't Need
to Know Where or How Your Data is Stored?”. Alan discussed the idea that an application
should not tightly coupled to the data. This makes it possible to have a more flexible
system that can support different data sources.
</p><p>
Unlike his other session, Alan walked through quite a bit of sample code in this session
to show this could be implemented using XML to transport the data. Alan warned that
the Visual FoxPro XMLTOCURSOR() function tends to hang when the size of XML reaches
about 11MB. His solution, was to use the XML DOM object in a loop to process the XML
in batches of 500. I’ll have to keep that in mind if I ever run into that problem
in the future.
</p><img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=c9f9a586-3221-46bf-80ae-f7e88da6c5d7" /></body>
      <title>Southwest Fox 2008 - Day 3</title>
      <guid isPermaLink="false">http://www.pfsolutions-mi.com/blog/PermaLink,guid,c9f9a586-3221-46bf-80ae-f7e88da6c5d7.aspx</guid>
      <link>http://www.pfsolutions-mi.com/blog/2008/10/18/SouthwestFox2008Day3.aspx</link>
      <pubDate>Sat, 18 Oct 2008 16:21:00 GMT</pubDate>
      <description>&lt;p&gt;
Saturday began with Doug Hennig’s “Creating Explorer Interfaces in Visual FoxPro”
session. This presentation was about creating an explorer like interface similar to
Windows Explorer using a TreeView control and the &lt;a href="http://www.codeplex.com/VFPX"&gt;VFPX&lt;/a&gt; OutlookNavBar
component.
&lt;/p&gt;
&lt;p&gt;
Besides being an excellent speaker, Doug’s sample code and white papers are alone
worth the price of admission. For example, Doug does not just use the standard TreeView
control. He extends it by automatically linking an ImageList control, proving node
load control, adding double click and right click functionality, adding “go back”
support, adding support for saving and restoring the state on close/open, and more.
Did I mention that it is also data-driven? That’s just awesome.
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
The second session of the day was Andrew MacNeill’s “Working with CodePlex and VFPX”.
In this presentation Andrew discussed the basics of &lt;a href="http://www.codeplex.com/VFPX"&gt;VFPX&lt;/a&gt;,
how to use the CodePlex site, and how to access the source code. I’ve always felt
like the &lt;a href="http://www.codeplex.com/VFPX"&gt;VFPX&lt;/a&gt; site was a little confusing
to navigate so it was nice to get a demonstration.
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
The third session was Alan Stevens’ “Manage Complexity with Agility”. This was my
first time hearing Alan speak. I had heard good things about his presentation last
year, so I was eager to experience one this time. I have to say, Alan exceeded my
expectations. His presentation contained a lot of good ideas about the software development.
For example, on the topic of software schedules, Alan suggests delivering something
every 1 to 2 weeks. It is better to find out what you’ve done is not what the customer
wanted, even though it may be what they asked for, sooner than later. He discussed
that most customers are not technical and therefore cannot provide formal requirements.
What you can do is get the user to explain what they need in short descriptions, a.k.a.
user stories. A user story consists of a role, a need, and a reason.
&lt;/p&gt;
&lt;p&gt;
Alan also demonstrated unit testing with &lt;a href="http://www.foxunit.org/"&gt;FoxUnit&lt;/a&gt;,
and automating builds using VFP MSBuild Target. FoxUnit is an open source unit testing
framework from VisionPace. VFP MSBuild Target is a &lt;a href="http://www.codeplex.com/VFPX"&gt;VFPX&lt;/a&gt; project
for performing Visual FoxPro builds.
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
After lunch I attended Doug Hennig’s “Advantage Database Server for Visual FoxPro
Developers” session. I was really interested in attending this session so that I could
get some first-hand knowledge about this product from a trusted Visual FoxPro developer.
&lt;/p&gt;
&lt;p&gt;
Doug did a really thorough job of explaining what Advantage Database Server (ADS)
is, how to install it, and how to use it with Visual FoxPro. This session covered
a lot of material, so I’m going to limit my comments to my favorite three things.
&lt;/p&gt;
First, if you are still using the Visual FoxPro ODBC driver, which has not been updated
since Visual FoxPro 6, you may want to consider replacing it with the ADS ODBC for
the following reasons. One, it supports Visual FoxPro 9 fields types, such as auto
incrementing. Two, it’s free!&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Second, ADS supports accessing Visual FoxPro data both as native tables and through
ADS. This means that you can slowly convert an existing system to a client server
model one module at a time. For example, you could change one form to access the data
using ADS, while the rest of the system continued to access the tables directly. The
end goal would be to change all the forms to use ADS, but this one module at a time
approach allows you to first concentrate on the portions of the system that need the
conversion to client server the most. How cool is that?
&lt;/p&gt;
&lt;p&gt;
And finally, the ADS full text search capability. This feature alone could be enough
reason to use this product. Doug started by creating a table with 80,000+ records
(60MB DBF) that had a 500MB FPT file. He then performed a search with both Visual
FoxPro and ADS. The results speak for themselves.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Visual FoxPro Case Insensitive: 305 seconds 
&lt;/li&gt;
&lt;li&gt;
Visual FoxPro Case Sensitive: 60 seconds 
&lt;/li&gt;
&lt;li&gt;
ADS: 0.07 seconds&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;
My last session of the day was Alan Stevens’ “Ignorance is Bliss: Why You Don't Need
to Know Where or How Your Data is Stored?”. Alan discussed the idea that an application
should not tightly coupled to the data. This makes it possible to have a more flexible
system that can support different data sources.
&lt;/p&gt;
&lt;p&gt;
Unlike his other session, Alan walked through quite a bit of sample code in this session
to show this could be implemented using XML to transport the data. Alan warned that
the Visual FoxPro XMLTOCURSOR() function tends to hang when the size of XML reaches
about 11MB. His solution, was to use the XML DOM object in a loop to process the XML
in batches of 500. I’ll have to keep that in mind if I ever run into that problem
in the future.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=c9f9a586-3221-46bf-80ae-f7e88da6c5d7" /&gt;</description>
      <comments>http://www.pfsolutions-mi.com/blog/CommentView,guid,c9f9a586-3221-46bf-80ae-f7e88da6c5d7.aspx</comments>
      <category>SWFOX</category>
    </item>
    <item>
      <trackback:ping>http://www.pfsolutions-mi.com/blog/Trackback.aspx?guid=b377d337-e76e-4a9f-80a1-d70002420f45</trackback:ping>
      <pingback:server>http://www.pfsolutions-mi.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pfsolutions-mi.com/blog/PermaLink,guid,b377d337-e76e-4a9f-80a1-d70002420f45.aspx</pingback:target>
      <dc:creator>Frank Perez</dc:creator>
      <wfw:comment>http://www.pfsolutions-mi.com/blog/CommentView,guid,b377d337-e76e-4a9f-80a1-d70002420f45.aspx</wfw:comment>
      <wfw:commentRss>http://www.pfsolutions-mi.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b377d337-e76e-4a9f-80a1-d70002420f45</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Day 2 started with Andrew MacNeill's “Profiling and Refactoring: How to Analyze and
Clean-up Your Code” session. This was my first time seeing Andrew present, although
I've been reading his blog and following his podcast <a href="http://www.thefoxshow.com/">The
Fox Show</a> for some time now. The two big things I got out this session were Code
Analyst and Coverage Profiler tip.
</p>
        <p>
Code Analyst is an open source developer tool on <a href="http://www.codeplex.com/VFPX">VFPX</a> that
is used to evaluate code against a set of user defined rules. For example, there could
be a rule that PUBLIC variables are not allowed. There could also be a rule that every
method/program/function must have a RETURN. Code Analyst would then scan the source
code and document which rules were broken and where at in the source code. Kind of
like a Code References on steroids.
</p>
        <p>
A really cool feature of Code Analyst is that it supports four types of rules: method,
line, object, and file. A good example of a method rule is the RETURN command. Each
method must have at least one. Or only one, depending on you was raised {g}. Whereas
checking for a PUBLIC variable would be something that is done for each line.
</p>
        <p>
One idea I had for using Code Analyst is enforcing Software Development Standards
(a.k.a. this is how we do it here). For example, I could have a function for opening
tables called OpenDBF(). Therefore, the USE command should only exist in this function.
I could create Code Analyst rule to check for the USE command.
</p>
        <p>
As for the Coverage Profiler tip. Anyone who has used Coverage Profiler knows that
the LOG file it generates can get big real fast. Disk space is not the problem so
much as getting the Visual FoxPro Coverage Profiler Analyzer tool to process a 100+
MB file. Andrew suggested importing the LOG file into a table and then deleting the
entries that were not important. For example, I could delete entries based on the
filename, class, or the time it took to execute. After that I’ve got something that
is probably a lot easier to grok.
</p>
        <p>
The second session of the day was Christof Wollenhaupt’s “Introduction to Mobile Development”.
This presentation covered the basics of developing software for mobile devices. Christof
discussed how to setup a virtual mobile device for testing, mobile device limitations
such as screen size and API, and did a demonstration of how to use the alternative
Visual FoxPro runtime <a href="http://guineu.foxpert.com/">Guineu</a> for running
VFP applications on a mobile device.
</p>
        <p>
Next I attended Rick Strahl’s “Using Ajax and jQuery features to build Rich Web User
Interfaces with Web Connection” session. Rick explained what jQuery is, why you want
to use it, and demonstrated some cool examples. He stated the number one reason for
using something like jQuery is the normalization across the different browsers. He
also mentioned a blog post on his web site where he explains how to add jQuery IntelliSense
to Visual Studio. Although it sounded like Microsoft should be adding that feature
soon.
</p>
        <p>
After lunch, it was time for Craig Boyd’s session “VFP Studio: Extending the Visual
FoxPro IDE”. Ever since the Southwest 2007 keynote where Craig and Bo Durban first
did a sneak peak of VFP Studio, I’ve been waiting to hear more about VFP Studio. Craig
explained that VFP Studio is a replacement for the Visual FoxPro IDE. For example,
the MODIFY COMMAND window, Class Browser, Project Manager, Form Designer, and etc.
It is not a run time replacement, like Christof’s Guinea or eTechnologia's VFPCompiler
for .NET projects.
</p>
        <p>
Craig went on to explain that VFP Studio was created with Microsoft Visual Studio
SDK. This same SDK has already been used to create IronPython and a few other IDEs.
He stated the biggest problem with the SDK is that it is so huge that it can be quite
overwhelming. He also mentioned that it is still evolving, so sometimes a new release
will break existing code.
</p>
        <p>
Craig was able to demonstrate some of what he and Bo have already completed. What
I saw was very cool. I especially like code editor and form designer features.
</p>
        <p>
Replacing the Visual FoxPro IDE may not sound like a cool idea if you have never worked
with Visual Studio. Trust me, it is {g}.
</p>
        <p>
Craig wrapped up with a call for help. He and Bo are currently looking for developers
with C# and Visual FoxPro experience. They also have a need for testers. So if you
are interested, please contact either of them directly via email at <a href="http://www.sweetpotatosoftware.com">SweetPotatoe
Software</a> or <a href="http://www.moxiedata.com">Moxie Data</a>.
</p>
        <p>
Next I attended Christof Wollenhaupt’s “Creating Owner Drawn Controls in Visual FoxPro”
session. In this presentation Christof demonstrated how to create your own controls
(i.e. page frames, progress bars, and etc.) using GDI+. I would call it a basic how
to guide for creating the same kind of cool things you see on <a href="http://www.codeplex.com/VFPX">VFPX</a> like
ctl32 StatusBar and FoxCharts.
</p>
        <p>
One of the coolest parts of this session was an example of an Office 2007 style floating
menu bar. You know the one that pops up when text is highlighted and the mouse is
positioned over the text. Very cool.
</p>
        <p>
I also enjoyed the way he “converted” a complete Visual FoxPro form to a .NET GUI
with the click of a check box. Everything from page frames and option groups to text
boxes. That was pretty slick.
</p>
        <p>
The last session of the day was Rick Strahl’s “Using .NET with Visual FoxPro for Reliable
Web Service Access and Hosting” session. Rick discussed the current state of Web Services
and Visual FoxPro, how to use .NET via COM Interop, and the differences between ASMX
and WCF.
</p>
        <p>
I must admit that I have only done a few web services so far, mostly Visual FoxPro
server to Visual FoxPro client. It was good to see what my options are for the future
and to be able to squirrel away some sample code and notes {g}.
</p>
        <br />
Links:<br />
Andrew MacNeill's Blog <a href="http://akselsoft.blogspot.com/">http://akselsoft.blogspot.com/</a><br />
Rick Strahl's Blog <a href="http://www.west-wind.com/Weblog/">http://www.west-wind.com/Weblog/</a><img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=b377d337-e76e-4a9f-80a1-d70002420f45" /></body>
      <title>Southwest Fox 2008 - Day 2</title>
      <guid isPermaLink="false">http://www.pfsolutions-mi.com/blog/PermaLink,guid,b377d337-e76e-4a9f-80a1-d70002420f45.aspx</guid>
      <link>http://www.pfsolutions-mi.com/blog/2008/10/17/SouthwestFox2008Day2.aspx</link>
      <pubDate>Fri, 17 Oct 2008 20:18:11 GMT</pubDate>
      <description>&lt;p&gt;
Day 2 started with Andrew MacNeill's “Profiling and Refactoring: How to Analyze and
Clean-up Your Code” session. This was my first time seeing Andrew present, although
I've been reading his blog and following his podcast &lt;a href="http://www.thefoxshow.com/"&gt;The
Fox Show&lt;/a&gt; for some time now. The two big things I got out this session were Code
Analyst and Coverage Profiler tip.
&lt;/p&gt;
&lt;p&gt;
Code Analyst is an open source developer tool on &lt;a href="http://www.codeplex.com/VFPX"&gt;VFPX&lt;/a&gt; that
is used to evaluate code against a set of user defined rules. For example, there could
be a rule that PUBLIC variables are not allowed. There could also be a rule that every
method/program/function must have a RETURN. Code Analyst would then scan the source
code and document which rules were broken and where at in the source code. Kind of
like a Code References on steroids.
&lt;/p&gt;
&lt;p&gt;
A really cool feature of Code Analyst is that it supports four types of rules: method,
line, object, and file. A good example of a method rule is the RETURN command. Each
method must have at least one. Or only one, depending on you was raised {g}. Whereas
checking for a PUBLIC variable would be something that is done for each line.
&lt;/p&gt;
&lt;p&gt;
One idea I had for using Code Analyst is enforcing Software Development Standards
(a.k.a. this is how we do it here). For example, I could have a function for opening
tables called OpenDBF(). Therefore, the USE command should only exist in this function.
I could create Code Analyst rule to check for the USE command.
&lt;/p&gt;
&lt;p&gt;
As for the Coverage Profiler tip. Anyone who has used Coverage Profiler knows that
the LOG file it generates can get big real fast. Disk space is not the problem so
much as getting the Visual FoxPro Coverage Profiler Analyzer tool to process a 100+
MB file. Andrew suggested importing the LOG file into a table and then deleting the
entries that were not important. For example, I could delete entries based on the
filename, class, or the time it took to execute. After that I’ve got something that
is probably a lot easier to grok.
&lt;/p&gt;
&lt;p&gt;
The second session of the day was Christof Wollenhaupt’s “Introduction to Mobile Development”.
This presentation covered the basics of developing software for mobile devices. Christof
discussed how to setup a virtual mobile device for testing, mobile device limitations
such as screen size and API, and did a demonstration of how to use the alternative
Visual FoxPro runtime &lt;a href="http://guineu.foxpert.com/"&gt;Guineu&lt;/a&gt; for running
VFP applications on a mobile device.
&lt;/p&gt;
&lt;p&gt;
Next I attended Rick Strahl’s “Using Ajax and jQuery features to build Rich Web User
Interfaces with Web Connection” session. Rick explained what jQuery is, why you want
to use it, and demonstrated some cool examples. He stated the number one reason for
using something like jQuery is the normalization across the different browsers. He
also mentioned a blog post on his web site where he explains how to add jQuery IntelliSense
to Visual Studio. Although it sounded like Microsoft should be adding that feature
soon.
&lt;/p&gt;
&lt;p&gt;
After lunch, it was time for Craig Boyd’s session “VFP Studio: Extending the Visual
FoxPro IDE”. Ever since the Southwest 2007 keynote where Craig and Bo Durban first
did a sneak peak of VFP Studio, I’ve been waiting to hear more about VFP Studio. Craig
explained that VFP Studio is a replacement for the Visual FoxPro IDE. For example,
the MODIFY COMMAND window, Class Browser, Project Manager, Form Designer, and etc.
It is not a run time replacement, like Christof’s Guinea or eTechnologia's VFPCompiler
for .NET projects.
&lt;/p&gt;
&lt;p&gt;
Craig went on to explain that VFP Studio was created with Microsoft Visual Studio
SDK. This same SDK has already been used to create IronPython and a few other IDEs.
He stated the biggest problem with the SDK is that it is so huge that it can be quite
overwhelming. He also mentioned that it is still evolving, so sometimes a new release
will break existing code.
&lt;/p&gt;
&lt;p&gt;
Craig was able to demonstrate some of what he and Bo have already completed. What
I saw was very cool. I especially like code editor and form designer features.
&lt;/p&gt;
&lt;p&gt;
Replacing the Visual FoxPro IDE may not sound like a cool idea if you have never worked
with Visual Studio. Trust me, it is {g}.
&lt;/p&gt;
&lt;p&gt;
Craig wrapped up with a call for help. He and Bo are currently looking for developers
with C# and Visual FoxPro experience. They also have a need for testers. So if you
are interested, please contact either of them directly via email at &lt;a href="http://www.sweetpotatosoftware.com"&gt;SweetPotatoe
Software&lt;/a&gt; or &lt;a href="http://www.moxiedata.com"&gt;Moxie Data&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Next I attended Christof Wollenhaupt’s “Creating Owner Drawn Controls in Visual FoxPro”
session. In this presentation Christof demonstrated how to create your own controls
(i.e. page frames, progress bars, and etc.) using GDI+. I would call it a basic how
to guide for creating the same kind of cool things you see on &lt;a href="http://www.codeplex.com/VFPX"&gt;VFPX&lt;/a&gt; like
ctl32 StatusBar and FoxCharts.
&lt;/p&gt;
&lt;p&gt;
One of the coolest parts of this session was an example of an Office 2007 style floating
menu bar. You know the one that pops up when text is highlighted and the mouse is
positioned over the text. Very cool.
&lt;/p&gt;
&lt;p&gt;
I also enjoyed the way he “converted” a complete Visual FoxPro form to a .NET GUI
with the click of a check box. Everything from page frames and option groups to text
boxes. That was pretty slick.
&lt;/p&gt;
&lt;p&gt;
The last session of the day was Rick Strahl’s “Using .NET with Visual FoxPro for Reliable
Web Service Access and Hosting” session. Rick discussed the current state of Web Services
and Visual FoxPro, how to use .NET via COM Interop, and the differences between ASMX
and WCF.
&lt;/p&gt;
&lt;p&gt;
I must admit that I have only done a few web services so far, mostly Visual FoxPro
server to Visual FoxPro client. It was good to see what my options are for the future
and to be able to squirrel away some sample code and notes {g}.
&lt;/p&gt;
&lt;br&gt;
Links:&lt;br&gt;
Andrew MacNeill's Blog &lt;a href="http://akselsoft.blogspot.com/"&gt;http://akselsoft.blogspot.com/&lt;/a&gt;
&lt;br&gt;
Rick Strahl's Blog &lt;a href="http://www.west-wind.com/Weblog/"&gt;http://www.west-wind.com/Weblog/&lt;/a&gt; &lt;img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=b377d337-e76e-4a9f-80a1-d70002420f45" /&gt;</description>
      <comments>http://www.pfsolutions-mi.com/blog/CommentView,guid,b377d337-e76e-4a9f-80a1-d70002420f45.aspx</comments>
      <category>SWFOX</category>
    </item>
    <item>
      <trackback:ping>http://www.pfsolutions-mi.com/blog/Trackback.aspx?guid=6252685a-c349-493a-a9b0-18c9d2c15e4a</trackback:ping>
      <pingback:server>http://www.pfsolutions-mi.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pfsolutions-mi.com/blog/PermaLink,guid,6252685a-c349-493a-a9b0-18c9d2c15e4a.aspx</pingback:target>
      <dc:creator>Frank Perez</dc:creator>
      <wfw:comment>http://www.pfsolutions-mi.com/blog/CommentView,guid,6252685a-c349-493a-a9b0-18c9d2c15e4a.aspx</wfw:comment>
      <wfw:commentRss>http://www.pfsolutions-mi.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6252685a-c349-493a-a9b0-18c9d2c15e4a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the questions I get asked most often by someone who could not attend the conference
is what happened during the keynote? Traditionally the keynote is when big announcements
are made and new cool stuff is publically previewed. For example, last year Craig
Boyd and Bo Durban demonstrated VFP Studio.
</p>
        <p>
This year the organizers of the conference did something different that I think was
really cool. A live video broadcast streamed over the internet.
</p>
        <p>
So, if you missed the live broadcast or just want to see it again. It is available
for viewing at <a href="http://www.ustream.tv/channel/swfoxtv">http://www.ustream.tv/channel/swfoxtv</a>.
Be sure to catch the "magic" of Craig Boyd and Bo Durban about 57 minutes into the
video {g}.
</p>
        <p>
One last thing. I want to thank Steve Bodnar of Geeks and Gurus for making this happen.
He did all of the work solo. From the setup and testing, to shooting the video and
handling the chat window. Way to go Steve!
</p>
        <br />
Links:<br />
Geeks and Gurus <a href="http://www.geeksandgurus.com">http://www.geeksandgurus.com</a><img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=6252685a-c349-493a-a9b0-18c9d2c15e4a" /></body>
      <title>Southwest Fox 2008 - Keynote Presentation</title>
      <guid isPermaLink="false">http://www.pfsolutions-mi.com/blog/PermaLink,guid,6252685a-c349-493a-a9b0-18c9d2c15e4a.aspx</guid>
      <link>http://www.pfsolutions-mi.com/blog/2008/10/16/SouthwestFox2008KeynotePresentation.aspx</link>
      <pubDate>Thu, 16 Oct 2008 21:23:54 GMT</pubDate>
      <description>&lt;p&gt;
One of the questions I get asked most often by someone who could not attend the conference
is what happened during the keynote? Traditionally the keynote is when big announcements
are made and new cool stuff is publically previewed. For example, last year Craig
Boyd and Bo Durban demonstrated VFP Studio.
&lt;/p&gt;
&lt;p&gt;
This year the organizers of the conference did something different that I think was
really cool. A live video broadcast streamed over the internet.
&lt;/p&gt;
&lt;p&gt;
So, if you missed the live broadcast or just want to see it again. It is available
for viewing at &lt;a href="http://www.ustream.tv/channel/swfoxtv"&gt;http://www.ustream.tv/channel/swfoxtv&lt;/a&gt;.
Be sure to catch the "magic" of Craig Boyd and Bo Durban about 57 minutes into the
video {g}.
&lt;/p&gt;
&lt;p&gt;
One last thing. I want to thank Steve Bodnar of Geeks and Gurus for making this happen.
He did all of the work solo. From the setup and testing, to shooting the video and
handling the chat window. Way to go Steve!
&lt;/p&gt;
&lt;br&gt;
Links:&lt;br&gt;
Geeks and Gurus &lt;a href="http://www.geeksandgurus.com"&gt;http://www.geeksandgurus.com&lt;/a&gt;&lt;img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=6252685a-c349-493a-a9b0-18c9d2c15e4a" /&gt;</description>
      <comments>http://www.pfsolutions-mi.com/blog/CommentView,guid,6252685a-c349-493a-a9b0-18c9d2c15e4a.aspx</comments>
      <category>SWFOX</category>
    </item>
    <item>
      <trackback:ping>http://www.pfsolutions-mi.com/blog/Trackback.aspx?guid=e2798d8e-5ab0-457d-9f9b-07a77dc57328</trackback:ping>
      <pingback:server>http://www.pfsolutions-mi.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pfsolutions-mi.com/blog/PermaLink,guid,e2798d8e-5ab0-457d-9f9b-07a77dc57328.aspx</pingback:target>
      <dc:creator>Frank Perez</dc:creator>
      <wfw:comment>http://www.pfsolutions-mi.com/blog/CommentView,guid,e2798d8e-5ab0-457d-9f9b-07a77dc57328.aspx</wfw:comment>
      <wfw:commentRss>http://www.pfsolutions-mi.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e2798d8e-5ab0-457d-9f9b-07a77dc57328</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today began with Andy Kramek's pre-conference session - Introduction to Transact SQL.
This session covered the basics of Microsoft SQL Server Transact SQL (T-SQL). From
variables, temporary tables, and common table expressions. To functions, stored procedures,
triggers, and more.
</p>
        <p>
My favorite part was the explanation of how Microsoft SQL Server, and most other database
management systems, process a SELECT command. Andy took us step by step how the query
engine builds each of the intermediate result sets, the order everything is processed
in, and how Visual FoxPro's engine works slightly different.
</p>
        <p>
Knowing this helps me understand how to build better SELECT commands. It also explains
why a SELECT command might not always do what I expect it to. Great information. 
</p>
        <p>
        </p>
        <img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=e2798d8e-5ab0-457d-9f9b-07a77dc57328" />
      </body>
      <title>Southwest Fox 2008 - Day 1</title>
      <guid isPermaLink="false">http://www.pfsolutions-mi.com/blog/PermaLink,guid,e2798d8e-5ab0-457d-9f9b-07a77dc57328.aspx</guid>
      <link>http://www.pfsolutions-mi.com/blog/2008/10/16/SouthwestFox2008Day1.aspx</link>
      <pubDate>Thu, 16 Oct 2008 21:05:06 GMT</pubDate>
      <description>&lt;p&gt;
Today began with Andy Kramek's pre-conference session - Introduction to Transact SQL.
This session covered the basics of Microsoft SQL Server Transact SQL (T-SQL). From
variables, temporary tables, and common table expressions. To functions, stored procedures,
triggers, and more.
&lt;/p&gt;
&lt;p&gt;
My favorite part was the explanation of how Microsoft SQL Server, and most other database
management systems, process a SELECT command. Andy took us step by step how the query
engine builds each of the intermediate result sets, the order everything is processed
in, and how Visual FoxPro's engine works slightly different.
&lt;/p&gt;
&lt;p&gt;
Knowing this helps me understand how to build better SELECT commands. It also explains
why a SELECT command might not always do what I expect it to. Great information. 
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=e2798d8e-5ab0-457d-9f9b-07a77dc57328" /&gt;</description>
      <comments>http://www.pfsolutions-mi.com/blog/CommentView,guid,e2798d8e-5ab0-457d-9f9b-07a77dc57328.aspx</comments>
      <category>SWFOX</category>
    </item>
    <item>
      <trackback:ping>http://www.pfsolutions-mi.com/blog/Trackback.aspx?guid=6b02ae1f-e354-4a12-8261-4a1570ab90d3</trackback:ping>
      <pingback:server>http://www.pfsolutions-mi.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pfsolutions-mi.com/blog/PermaLink,guid,6b02ae1f-e354-4a12-8261-4a1570ab90d3.aspx</pingback:target>
      <dc:creator>Frank Perez</dc:creator>
      <wfw:comment>http://www.pfsolutions-mi.com/blog/CommentView,guid,6b02ae1f-e354-4a12-8261-4a1570ab90d3.aspx</wfw:comment>
      <wfw:commentRss>http://www.pfsolutions-mi.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6b02ae1f-e354-4a12-8261-4a1570ab90d3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I started today with Doug Hennig's session Best Practices for Vertical Application
Development.  Although I had attended this same session previously at the 2006
Great Lakes Great Database Workshop conference, I still managed to learn some new
things.  If you missed this session I have a couple of book recommendations of
my own.  Check out "Eric Sink on the Business of Software" by none other than
Eric Sink.  And finally "Micro-ISV: From Vision to Reality" by Bob Walsh.
</p>
        <p>
My last session was Marcia Akins QuickBooks Automation.  Marcia did an amazing
job of demonstrating of how to get started with the QuickBooks COM component. 
I especially liked all of the "gotcha" warnings.
</p>
        <p>
In summary, I had a really good time at Southwest Fox this year.  It was good
to see some old friends, make some new ones, and learn new ways to use my favorite
development tool - Visual FoxPro.
</p>
        <img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=6b02ae1f-e354-4a12-8261-4a1570ab90d3" />
      </body>
      <title>Southwest Fox 2007 - Day 4</title>
      <guid isPermaLink="false">http://www.pfsolutions-mi.com/blog/PermaLink,guid,6b02ae1f-e354-4a12-8261-4a1570ab90d3.aspx</guid>
      <link>http://www.pfsolutions-mi.com/blog/2007/10/21/SouthwestFox2007Day4.aspx</link>
      <pubDate>Sun, 21 Oct 2007 22:27:01 GMT</pubDate>
      <description>&lt;p&gt;
I started today with Doug Hennig's session Best Practices for Vertical Application
Development.&amp;nbsp; Although I had attended this same session previously at the 2006
Great Lakes Great Database Workshop conference, I still managed to learn some new
things.&amp;nbsp; If you missed this session I have a couple of book recommendations of
my own.&amp;nbsp; Check out "Eric Sink on the Business of Software" by none other than
Eric Sink.&amp;nbsp; And finally "Micro-ISV: From Vision to Reality" by Bob Walsh.
&lt;/p&gt;
&lt;p&gt;
My last session was Marcia Akins QuickBooks Automation.&amp;nbsp; Marcia did an amazing
job of demonstrating of how to get started with the QuickBooks COM component.&amp;nbsp;
I especially liked all of the "gotcha" warnings.
&lt;/p&gt;
&lt;p&gt;
In summary, I had a really good time at Southwest Fox this year.&amp;nbsp; It was good
to see some old friends, make some new ones, and learn new ways to use my favorite
development tool - Visual FoxPro.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=6b02ae1f-e354-4a12-8261-4a1570ab90d3" /&gt;</description>
      <comments>http://www.pfsolutions-mi.com/blog/CommentView,guid,6b02ae1f-e354-4a12-8261-4a1570ab90d3.aspx</comments>
      <category>SWFOX</category>
      <category>VFP</category>
    </item>
    <item>
      <trackback:ping>http://www.pfsolutions-mi.com/blog/Trackback.aspx?guid=6fc61d39-f9bd-4e5e-88c0-304a5b34a0ff</trackback:ping>
      <pingback:server>http://www.pfsolutions-mi.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pfsolutions-mi.com/blog/PermaLink,guid,6fc61d39-f9bd-4e5e-88c0-304a5b34a0ff.aspx</pingback:target>
      <dc:creator>Frank Perez</dc:creator>
      <wfw:comment>http://www.pfsolutions-mi.com/blog/CommentView,guid,6fc61d39-f9bd-4e5e-88c0-304a5b34a0ff.aspx</wfw:comment>
      <wfw:commentRss>http://www.pfsolutions-mi.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6fc61d39-f9bd-4e5e-88c0-304a5b34a0ff</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
My first session of the day was Christof Wollenhaupt's Using CVS and Subversion with
VFP.  Since I have only used Microsoft's Visual Source Safe and Sourcegear's
Fortress, I was curious as to how CVS compared.  It is definitely something I
would consider using in the future.  Christof also showed a utility he wrote
to convert Visual FoxPro files into XML files before checking them into Source Code
Control.  The utility also has the ability to convert the XML files back to binary
files - very cool!  For those who are interested, you can download the TwoFox
utility from his website at <a href="http://foxpert.com">http://foxpert.com</a>.
</p>
        <p>
The next session was Craig Boyd's The Power of Regular Expressions.  I must admit
that I never tried Regular Expressions before because they looked so complicated. 
However, after Craig's presentation I've come to realize that they really are not
that bad once you know the basics.  Of course it helps that Craig did an awesome
job of explaining what how to read and write regular expressions, how to use them,
and provided plenty of good real world examples.
</p>
        <p>
Following lunch I attended Steve Sawyer's Basic Marketing for Custom Business Software
Services session.  Steve had some very interesting ideas on marketing and networking. 
He also recommended another book for the reading list - Rain Making: The Professional's
Guide to Attracting New Clients by Ford Harding.
</p>
        <p>
After that I went to Whil Hentzen's So You've Inherited an Application. Now What? 
A lot of this session was geared towards custom software development shops with some
good general programming ideas mixed in.  For example, when you are working on
a project - don't end your day by stopping at the end of the module/class you were
working on.  Try to stop somewhere in the middle and document what you had left
to do.  The next day you'll find that you are able to get into the zone much
faster.
</p>
        <img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=6fc61d39-f9bd-4e5e-88c0-304a5b34a0ff" />
      </body>
      <title>Southwest Fox 2007 - Day 3</title>
      <guid isPermaLink="false">http://www.pfsolutions-mi.com/blog/PermaLink,guid,6fc61d39-f9bd-4e5e-88c0-304a5b34a0ff.aspx</guid>
      <link>http://www.pfsolutions-mi.com/blog/2007/10/20/SouthwestFox2007Day3.aspx</link>
      <pubDate>Sat, 20 Oct 2007 21:59:12 GMT</pubDate>
      <description>&lt;p&gt;
My first session of the day was Christof Wollenhaupt's Using CVS and Subversion with
VFP.&amp;nbsp; Since I have only used Microsoft's Visual Source Safe and Sourcegear's
Fortress, I was curious as to how CVS compared.&amp;nbsp; It is definitely something I
would consider using in the future.&amp;nbsp; Christof also showed a utility he wrote
to convert Visual FoxPro files into XML files before checking them into Source Code
Control.&amp;nbsp; The utility also has the ability to convert the XML files back to binary
files - very cool!&amp;nbsp; For those who are interested, you can download the TwoFox
utility from his website at &lt;a href="http://foxpert.com"&gt;http://foxpert.com&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
The next session was Craig Boyd's The Power of Regular Expressions.&amp;nbsp; I must admit
that I never tried Regular Expressions before because they looked so complicated.&amp;nbsp;
However, after Craig's presentation I've come to realize that they really are not
that bad once you know the basics.&amp;nbsp; Of course it helps that Craig did an awesome
job of explaining what how to read and write regular expressions, how to use them,
and provided plenty of good real world examples.
&lt;/p&gt;
&lt;p&gt;
Following lunch I attended Steve Sawyer's Basic Marketing for Custom Business Software
Services session.&amp;nbsp; Steve had some very interesting ideas on marketing and networking.&amp;nbsp;
He also recommended another book for the reading list - Rain Making: The Professional's
Guide to Attracting New Clients by Ford Harding.
&lt;/p&gt;
&lt;p&gt;
After that I went to Whil Hentzen's So You've Inherited an Application. Now What?&amp;nbsp;
A lot of this session was geared towards custom software development shops with some
good general programming ideas mixed in.&amp;nbsp; For example, when you are working on
a project - don't end your day by stopping at the end of the module/class you were
working on.&amp;nbsp; Try to stop somewhere in the middle and document what you had left
to do.&amp;nbsp; The next day you'll find that you are able to get into the zone much
faster.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=6fc61d39-f9bd-4e5e-88c0-304a5b34a0ff" /&gt;</description>
      <comments>http://www.pfsolutions-mi.com/blog/CommentView,guid,6fc61d39-f9bd-4e5e-88c0-304a5b34a0ff.aspx</comments>
      <category>SWFOX</category>
      <category>VFP</category>
    </item>
    <item>
      <trackback:ping>http://www.pfsolutions-mi.com/blog/Trackback.aspx?guid=1d066357-2fd5-4b2d-93a9-108f7e5ced4d</trackback:ping>
      <pingback:server>http://www.pfsolutions-mi.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pfsolutions-mi.com/blog/PermaLink,guid,1d066357-2fd5-4b2d-93a9-108f7e5ced4d.aspx</pingback:target>
      <dc:creator>Frank Perez</dc:creator>
      <wfw:comment>http://www.pfsolutions-mi.com/blog/CommentView,guid,1d066357-2fd5-4b2d-93a9-108f7e5ced4d.aspx</wfw:comment>
      <wfw:commentRss>http://www.pfsolutions-mi.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1d066357-2fd5-4b2d-93a9-108f7e5ced4d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Day 2 began with Steve Sawyer presenting a session on Software Project Management. 
During the past couple of years I've taken more of an interest in the business side
of software development, therefore this session was something I was really looking
forward to.  Steve did a good job of explaining what a project manager is, and
just as important, is not.  One key point that I got from the session was that
project management requires a lot of diplomacy when they take the role of a liaison
between customers and technical people.  Steve also recommended a book by Thomas
Friedman, "The World is Flat".  I'll have to add that to my reading list.
</p>
        <p>
My next session was Michael Hogan's 254 Fields in that Table?  This presentation
addressed the problem where you need to store different fields for each record in
a table.  For example, an Items table contains a record for Shoes and a record
for Blenders.  Each Shoe item has a Brand, Color, and Size attribute.  Whereas
each Blender item has a Brand, Motor Speed, and Watts attribute.  He demonstrated
several common solutions such as a single flat table, many related tables, a generic
attribute table, and using embedded XML.  Michael discussed the pros and cons
of each solution, with last one being the best overall solution.
</p>
        <p>
My third session was Christof Wollenhaupt's Introduction to COM.  This session
discussed the history COM, what makes it so cool.  He also offered an excellent
rebuttal to the argument that COM is dead and went on to provide evidence to the contrary. 
A real highlight of this session is a function he wrote that can be used to load DLLs
without registering them first!
</p>
        <p>
After lunch, I attended Whil Hentzen's session Introduction to Client-Server Using
VFP and MySQL.  One of the topics he discusses is the problem of loading MySQL
on a development machine.  It is easy to be misled by the performance since the
data is "local".  I though about this and wondered if running MySQL in a virtual
environment, such as VirtualPC or VMWare, would address that issue.  If this
topic was something you missed, I would suggest checking out Whil's book "MySQL Client-Server
Apps with Visual FoxPro" at <a href="http://www.hentzenwerke.com">Hentzenwerke</a>. 
Having read the book and attended the session, I would say that the book covers what
he presented and more.
</p>
        <p>
Following that I went to Christof Wollenhaupt's session On the Dark Side of FoxPro. 
This session explained a lot about how Visual FoxPro works internally.  He discussed
data sessions, object creation, variables, memory management, tables and indexes,
Rushmore optimization, and so much more.  This is one of those times when you
don't want the presentation to end because you are learning so much.
</p>
        <p>
My last session of the day was Doug Hennig's Developing Visual FoxPro Applications
for Windows Vista.  Doug did an excellent job of explaining what has changed
in Vista, how it affects application development and deployment, and what we need
to do for our applications to run on Vista.  One of Doug's comments was something
to the effect that Vista is not going to go away anytime soon - so we might as well
get used to it.
</p>
        <img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=1d066357-2fd5-4b2d-93a9-108f7e5ced4d" />
      </body>
      <title>Southwest Fox 2007 - Day 2</title>
      <guid isPermaLink="false">http://www.pfsolutions-mi.com/blog/PermaLink,guid,1d066357-2fd5-4b2d-93a9-108f7e5ced4d.aspx</guid>
      <link>http://www.pfsolutions-mi.com/blog/2007/10/19/SouthwestFox2007Day2.aspx</link>
      <pubDate>Fri, 19 Oct 2007 20:54:47 GMT</pubDate>
      <description>&lt;p&gt;
Day 2 began with Steve Sawyer presenting a session on Software Project Management.&amp;nbsp;
During the past couple of years I've taken more of an interest in the business side
of software development, therefore this session was something I was really looking
forward to.&amp;nbsp; Steve did a good job of explaining what a project manager is, and
just as important, is not.&amp;nbsp; One key point that I got from the session was that
project management requires a lot of diplomacy when they take the role of a liaison
between customers and technical people.&amp;nbsp; Steve also recommended a book by Thomas
Friedman, "The World is Flat".&amp;nbsp; I'll have to add that to my reading list.
&lt;/p&gt;
&lt;p&gt;
My next session was Michael Hogan's 254 Fields in that Table?&amp;nbsp; This presentation
addressed the problem where you need to store different fields for each record in
a table.&amp;nbsp; For example, an Items table contains a record for Shoes and a record
for Blenders.&amp;nbsp; Each Shoe item has a Brand, Color, and Size attribute.&amp;nbsp; Whereas
each Blender item has a Brand, Motor Speed, and Watts attribute.&amp;nbsp; He demonstrated
several common solutions such as a single flat table, many related tables, a generic
attribute table, and using embedded XML.&amp;nbsp; Michael discussed the pros and cons
of each solution, with last one being the best overall solution.
&lt;/p&gt;
&lt;p&gt;
My third session was Christof Wollenhaupt's Introduction to COM.&amp;nbsp; This session
discussed the history COM, what makes it so cool.&amp;nbsp; He also offered an excellent
rebuttal to the argument that COM is dead and went on to provide evidence to the contrary.&amp;nbsp;
A real highlight of this session is a function he wrote that can be used to load DLLs
without registering them first!
&lt;/p&gt;
&lt;p&gt;
After lunch, I attended Whil Hentzen's session Introduction to Client-Server Using
VFP and MySQL.&amp;nbsp; One of the topics he discusses is the problem of loading MySQL
on a development machine.&amp;nbsp; It is easy to be misled by the performance since the
data is "local".&amp;nbsp; I though about this and wondered if running MySQL in a virtual
environment, such as VirtualPC or VMWare, would address that issue.&amp;nbsp; If this
topic was something you missed, I would suggest checking out Whil's book "MySQL Client-Server
Apps with Visual FoxPro" at &lt;a href="http://www.hentzenwerke.com"&gt;Hentzenwerke&lt;/a&gt;.&amp;nbsp;
Having read the book and attended the session, I would say that the book covers what
he presented and more.
&lt;/p&gt;
&lt;p&gt;
Following that I went to Christof Wollenhaupt's session On the Dark Side of FoxPro.&amp;nbsp;
This session explained a lot about how Visual FoxPro works internally.&amp;nbsp; He discussed
data sessions, object creation, variables, memory management, tables and indexes,
Rushmore optimization, and so much more.&amp;nbsp; This is one of those times when you
don't want the presentation to end because you are learning so much.
&lt;/p&gt;
&lt;p&gt;
My last session of the day was Doug Hennig's Developing Visual FoxPro Applications
for Windows Vista.&amp;nbsp; Doug did an excellent job of explaining what has changed
in Vista, how it affects application development and deployment, and what we need
to do for our applications to run on Vista.&amp;nbsp; One of Doug's comments was something
to the effect that Vista is not going to go away anytime soon - so we might as well
get used to it.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=1d066357-2fd5-4b2d-93a9-108f7e5ced4d" /&gt;</description>
      <comments>http://www.pfsolutions-mi.com/blog/CommentView,guid,1d066357-2fd5-4b2d-93a9-108f7e5ced4d.aspx</comments>
      <category>SWFOX</category>
      <category>VFP</category>
    </item>
    <item>
      <trackback:ping>http://www.pfsolutions-mi.com/blog/Trackback.aspx?guid=81959e24-3234-4a5a-8653-8128da8081a1</trackback:ping>
      <pingback:server>http://www.pfsolutions-mi.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.pfsolutions-mi.com/blog/PermaLink,guid,81959e24-3234-4a5a-8653-8128da8081a1.aspx</pingback:target>
      <dc:creator>Frank Perez</dc:creator>
      <wfw:comment>http://www.pfsolutions-mi.com/blog/CommentView,guid,81959e24-3234-4a5a-8653-8128da8081a1.aspx</wfw:comment>
      <wfw:commentRss>http://www.pfsolutions-mi.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=81959e24-3234-4a5a-8653-8128da8081a1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Day 1 began with Michael Hogan's pre-conference session No Boundaries: Visual FoxPro
Web Applications.  Michael did a great job of explaining the differences between
web applications and desktop applications; and the advantages/disadvantages of both. 
I especially liked the way he demonstrated "statelessness" using audience participation. 
In addition he showed us some of his deployed solutions and took us for a tour behind
the scenes.  If you want to get started in web applications, this session was
a great way to begin.
</p>
        <p>
After a quick dinner break, it was time for the Keynote.  I'll skip most of the
details and jump straight to the cool stuff.
</p>
        <p>
First, Christof Wollenhaupt demonstrated his <a href="http://guineu.foxpert.com/">Guineu</a> project. 
Guineu is an alternative runtime that allows a Visual FoxPro application to run on
multiple platforms (Windows, Pocket PC, and Linux) without any modifications to the
code.  Guineu is currently in development, but it still looks very promising.
</p>
        <p>
Next, Toni Feltman demonstrated a couple of <a href="http://www.etecnologia.net/">eTechnologia's</a> developer
tools.  The first tool was .NET Extender.  It provides the ability to use
any of the .NET classes (including controls) in Visual FoxPro.  The second item
was VFPCompiler for .NET.  This tool compiles Visual FoxPro forms and classes
(SCX, VCX, and PRG) into pure .NET IL Managed Code.  Both of these tools are
currently in alpha stage.
</p>
        <p>
Finally, Alan Stevens and Craig Boyd demonstrated something they called "VFP Studio
2008".  It uses something that will be new in Visual Studio called the "isolated
shell".  I wish I could explain more, however due to the time constraints they
were not able to provide a whole of details.  So, I'm just going to leave it
at that for now.  Hopefully Craig will be able to talk more about it on his blog
at <a href="http://www.sweetpotatosoftware.com/SPSBlog/default.aspx">Sweet Potato
Software</a>.<br /></p>
        <img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=81959e24-3234-4a5a-8653-8128da8081a1" />
      </body>
      <title>Southwest Fox 2007 - Day 1</title>
      <guid isPermaLink="false">http://www.pfsolutions-mi.com/blog/PermaLink,guid,81959e24-3234-4a5a-8653-8128da8081a1.aspx</guid>
      <link>http://www.pfsolutions-mi.com/blog/2007/10/18/SouthwestFox2007Day1.aspx</link>
      <pubDate>Thu, 18 Oct 2007 18:38:30 GMT</pubDate>
      <description>&lt;p&gt;
Day 1 began with Michael Hogan's pre-conference session No Boundaries: Visual FoxPro
Web Applications.&amp;nbsp; Michael did a great job of explaining the differences between
web applications and desktop applications; and the advantages/disadvantages of both.&amp;nbsp;
I especially liked the way he demonstrated "statelessness" using audience participation.&amp;nbsp;
In addition he showed us some of his deployed solutions and took us for a tour behind
the scenes.&amp;nbsp; If you want to get started in web applications, this session was
a great way to begin.
&lt;/p&gt;
&lt;p&gt;
After a quick dinner break, it was time for the Keynote.&amp;nbsp; I'll skip most of the
details and jump straight to the cool stuff.
&lt;/p&gt;
&lt;p&gt;
First, Christof Wollenhaupt demonstrated his &lt;a href="http://guineu.foxpert.com/"&gt;Guineu&lt;/a&gt; project.&amp;nbsp;
Guineu is an alternative runtime that allows a Visual FoxPro application to run on
multiple platforms (Windows, Pocket PC, and Linux) without any modifications to the
code.&amp;nbsp; Guineu is currently in development, but it still looks very promising.
&lt;/p&gt;
&lt;p&gt;
Next, Toni Feltman demonstrated a couple of &lt;a href="http://www.etecnologia.net/"&gt;eTechnologia's&lt;/a&gt; developer
tools.&amp;nbsp; The first tool was .NET Extender.&amp;nbsp; It provides the ability to use
any of the .NET classes (including controls) in Visual FoxPro.&amp;nbsp; The second item
was VFPCompiler for .NET.&amp;nbsp; This tool compiles Visual FoxPro forms and classes
(SCX, VCX, and PRG) into pure .NET IL Managed Code.&amp;nbsp; Both of these tools are
currently in alpha stage.
&lt;/p&gt;
&lt;p&gt;
Finally, Alan Stevens and Craig Boyd demonstrated something they called "VFP Studio
2008".&amp;nbsp; It uses something that will be new in Visual Studio called the "isolated
shell".&amp;nbsp; I wish I could explain more, however due to the time constraints they
were not able to provide a whole of details.&amp;nbsp; So, I'm just going to leave it
at that for now.&amp;nbsp; Hopefully Craig will be able to talk more about it on his blog
at &lt;a href="http://www.sweetpotatosoftware.com/SPSBlog/default.aspx"&gt;Sweet Potato
Software&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.pfsolutions-mi.com/blog/aggbug.ashx?id=81959e24-3234-4a5a-8653-8128da8081a1" /&gt;</description>
      <comments>http://www.pfsolutions-mi.com/blog/CommentView,guid,81959e24-3234-4a5a-8653-8128da8081a1.aspx</comments>
      <category>SWFOX</category>
      <category>VFP</category>
    </item>
  </channel>
</rss>