Mar
08

Today we released the Call for Speakers for Southwest Fox 2011. Anyone interested in presenting should visit the Call for Speakers page on the Southwest Fox website, read the complete Call for Speakers document (linked from that page), and download the proposal submission application. Session proposals are due by March 28.

As in the past few years, we plan to offer a good selection of topics in core VFP development, extending VFP, using VFP with other technologies, and VFPX, as well as technology sessions to help VFP developers become better developers, not just more expert at VFP.

If you think you have something to say to the VFP community, please submit session proposals, even if you’ve never spoken at a conference before. Our community is strengthened when more people take an active role. Do be aware that speaking at a conference is a serious commitment. Even for experienced speakers, preparing a new session takes 40-80 hours. Doing it well at the conference calls for several rehearsals beforehand, too. So make sure you can commit the necessary time–the Call for Speakers lays out all the deadlines.

We’re looking forward to seeing what you all come up with. Reading through the proposals we receive each year is really exciting, and choosing among them is always a challenge.

Feb
01

Today I tracked down a strange error “File does not exist.” triggered when the users were testing the built in Stonefield Database Toolkit (SDT) Reindexing capability inside their application. We just updated this application from SDT 5.x to SDT 6.2 so we did risk breaking some of the functionality. At White Light Computing we have an external utility (EXE) that runs the Reindexing, Updates, and Repairs. This utility works fine with the current set of metadata, which made me think it was an environment issue inside the application. Sure enough the code failing is in the DBCXMgr class in the FindProperty method.

lcLongName = padr(upper(alltrim(tcProperty)), ;
             fsize('cLongName', .cPropCursorName))

The FSIZE() function is one of the functions affected by SET COMPATIBLE ON (it defaults OFF). When the setting is ON the function is returning the actual file size. When the setting is OFF, the function is returning the size of the field. This is one of those design decisions you got to wonder about. I know Microsoft made it to make the code work for dBase developers, but I think it is crazy-nuts to reuse functions in this manner. It leads to time tracking down problems like this one.

The application we are supporting has a SET COMPATIBLE ON in the start up code for reasons unknown to me. This is a global setting and it would take a considerable amount of time to track down all the possible code I would break by turning it OFF making it high risk. One workaround I could have implemented around this problem is inserting the SET COMPATIBLE OFF before the call to the SDT code and resetting it ON after the call (low risk, but only fixes this application). I decided to modify the FindProperty method to set and reset because it could be called by other application that use the DBCX Manager code. I also sent the findings to Stonefield support for their consideration.

[EDIT * 2-Feb-2011]  I have since realized that the changes are necessary throughout the DBCX Manager code. After further consideration, both Doug and I have come to the same conclusion, there are to many places to fix the code in the DBCXMgr, and no good reason why SET COMPATIBLE should be set ON. So I have changed the application to toggle the setting before calling the SDT Reindexing, Update, and Repair functions.

Glad to have that one off the bug list for our customer.

Jan
06

Mark your calendars! Southwest Fox 2011 will take place on October 26-29, 2011 with a post-conference event on the afternoon of October 29 and morning of October 30. Note a few changes this year:

  • The shift not only from the second week in October to the last week (to avoid running into Jewish holy days).
  • The shift from our usual Thursday to Sunday dates to Wednesday to Saturday this year (so you can get home in time for Halloween).
  • The post-conference starts Saturday afternoon rather than the next day.

    By the way, the post-conference event is guaranteed to blow your socks off, so you’ll definitely want to consider staying the extra day. Stay tuned for more details.

    Nov
    17

    The conference was terrific. I learned a lot and it was great renewing some friendships and making a couple of new ones. The Germans are terrific guests and Rainer and Tina (who does most of the real work according to Rainer) do a terrific job putting on the event. Despite the jet lag, I look forward to the trip every year. This year was more fun because Cathy came to speak for the first time and it was nice having a friend along for the long flight to and from Germany. I have already been invited back for next year too, which is terrific.

    The speaker dinner was themed oriental with some of my favorites including sushi and Thai food. More importantly the discussion was fun and often so funny I had tears in my eyes. It started at 8:00pm and ended around 3:00am for me, just a few short hours before we had to get in the taxi for the ride to the airport for the morning flights. Lots of discussion on how we can improve both German DevCon and Southwest Fox. We have a lot of synergy between the conferences and the organizers help each other out when ever possible. I think you will find many of the discussed topics making their way into the conferences next year as some of the ideas were downright cool and genius.

    Nov
    17

    The last day of the conference is always the hardest since your brain is suffering from “VFP overflow” from all the knowledge you gained from the sessions. Combine that with the jetlag and you have a recipe for sleepiness. Fortunately there are only 5 sessions and the closing session on the last day.

    Up first is Doug Hennig and his “Cool Controls for Your Applications” session. Doug’s theme this year was deep diving into various controls in both of his conference sessions. Doug is making the important point that your apps do not have to be mundane and boring. There are no more excuses. Doug covered his impressive SF Splitter control (for vertical and horizontal splitting, which I am planning to use soon for one project), the SFComboTree (found in the PEMEditor), the VFPX PopMenu project, Paul Mrozowski’s RCSCalendar control, and finally the VFPX Balloon tips by Carlos Allotti. Great session for anyone looking to spruce up your app.

    I skipped the next session because my head was hurting a little bit and because it felt like I had gone non-stop for a few days.

    Alaska Software was kind enough to show us where they are going with their “Polar Fox” project. They showed this off at Southwest Fox, but I did not have time to review it in Pheonix. Steffen Pirsig detailed the plans for the next major version of XBase++ and how it will transpile the current FoxPro source code into their format to run. Details include:

    • Transpiler: will take existing Visual FoxPro code and transport it to XBase++ code.
    • Source code control will be simplified with text based source code.
    • Source compiles down to native platform executables.
    • Decompilers will be a thing of the past.
    • Designers will be written in XBase++, IDE can be automated (continuing the tradition of extensibility).
    • Command prompt, roll your own commands (interactive just like Visual FoxPro).
    • Concepts they are pushing: no limits, innovate without disruption, favor design, continue the language.

    Code already is compiling and building EXEs, the initial designers are working, they are making the reporting engine 100% compatible, and have the Profiler and Debugger working.

    The idea that gives me the most confidence that Alaska Software can pull this off is that they have done it before with Clipper and the Clipper Community. They also seem to have a terrific grasp on what Visual FoxPro does and how developers use Visual FoxPro, and the types of applications they write. I really appreciate the time Steffan put in on the presentation and how Alaska Software is working on a path for Visual FoxPro developers in the future.

    After lunch was my “Mocking Your Customer” session. This session is the one I was most nervous about because it really counts on audience participation. Having other contribute to any session benefits everyone, and the participation I have had in rehearsals and at other conferences was terrific. So in an effort to coax people into asking questions I offered to draw names for one of two licenses of Balsamiq Mockups. It worked a little as two people asked questions. Each won a copy of Mockups. The business side of the session went faster than normal since there were no questions or observations to share. I enjoyed the session and got several nice compliments from attendees as they were leaving.

    The last session of the conference for me was Servoy’s vendor session “Servoy for the Visual FoxPro Developers.” Several Fox developers have made some very public statements on how they are learning Servoy and how they like it. Ken Levy did not show up on time so I went out in the lobby to track him down and remind him he had a session to give in 5 minutes. I am not throwing stones here based on my tardiness to my first session. I normally don’t get to see vendor sessions so I decided to take the opportunity to check out Servoy. After all, they have sponsored SWFox for 4 years and I don’t really have in-depth knowledge of the specifics, and have not seen a demo of the product. It does look impressive, especially how you can literally change the source code while the code is running. Once you save the change it is immediately reflected in the running form. They offer a good deal to start with the development IDE for free. Unfortunately as cool as it looks, the one thing I did not get answered specifically is the licensing costs, which I have been told is per seat licensing. They slipped through the pricing slide extremely quick and ask that you contact them for specifics on the pricing.

    The conference finished up with the closing session where lots of door prizes are given away.

    Nov
    17

    One might be thinking of “feast” and the food served at German DevCon. While breakfast was delicious (I had eggs and smoked salmon, with grapefruit juice), I am referring to the nine session slots during the day. Lots of choices and lots to learn. Official sessions on Friday start at 8:30am and run until 10:00pm. It is a day developers feast on a lot of great material presented by some great speakers.

    Up first is Christof Wollenhaupt with his first of five sessions for the conference. This session is called “Psychologie und Softwareentwicklung” and was presented in German. All the sessions in this slot were in German so I picked the one in the same room as my next session. I listened as much as I could, but mostly I caught up on some email and other work. Christof’s sessions in German are fast, as in speaking fast and packing in the information for the attendees. I like the fact that people laugh at is jokes and he has interactive sessions.

    I followed Christof’s session with my “How Craig Boyd Makes Me a Hero!” session. I enjoyed it and hope the attendees did as well. The session was more interactive than most sessions I have given in Frankfurt. I love interaction and contributions from the audience when I talk so this helped me. I got through all but one demo so the timing on this session is still not perfected (something I worked on last weekend and on the plane ride to Frankfurt). The demo gods made sure I was in check with a VFP 9 SP2 C5 crash and the same for Skype (which definitely should not have been running in the first place). Rainer, the conference organizer, stopped by the room before the session and noted how much he really liked the session title. I have plenty of material for part two next year if Rainer wants to invite me back.

    Up next was Cathy Pountney’s “Making the Most of VFP 9 SP2 Reports.” Cathy reminded me about some issues with respect to installing VFP 9 SP2. Since I have seen this session numerous times at user groups and conferences I took the time to update my document “Install and Run Different VFP 9 Versions on One Computer” with her discussion about Virtual Storage in Windows Vista, Windows 7, and Windows Server 2008. The introduction to the new Report Dynamics is delivered from one of the few experts in the community. The tips she shows in this session are outstanding. One of her tips in particular deals with the wrapping of details to the next page of reports when you have more than one object with different sizes bumping up the height of the band. This one hit home because on of my mentoring customers has a very similar problem (which Cathy helped me work through for a solution during lunch). This reminds me of an important benefits of conferences: getting help from other developers to solve problems that have you stumped. I know I try to help out other developers when ever I have a chance, but to do it face-to-face is really beneficial. This session actually was a perfect warm up to her fxReports session later in the afternoon.

    Lunch followed Cathy’s session. At this point I was not hungry because breakfast was so good, but I had some salad and naturally the smoked salmon.

    “Windows Presentation Foundation 4″ by Kevin McNeish followed lunch. This was the perfect follow up to the Entity Framework 4 session on Thursday. Kevin compared and contrasted the differences between Windows Forms and WPF-based interfaces. I really know nothing about either, so it was great getting background from one of the experts on the subject.

    “fxReports – Sharing Custom Report Features” by Cathy Pountney is another session I saw in rehearsal at the Grand Rapids Fox User Group. Cathy added some stuff based on the fact that the VFPxRepository.com site is established. We are working on getting a place set up so the community can share add-ons and plug-ins for the various VFPX tools that have them. We decided that we needed a place separate from the VFPX Codeplex pages because VFPX hosts core projects and is not great with respect to multiple downloads. The rest of the session showed various dynamics and special effects Cathy has produced via a new reporting framework called fxReports. She showed the code and how they work, and how they are implemented in the ReportListener class hierarchy. The framework is designed to share components with other developers. Cathy has devised a VFPX project that helps developers not only design special effect classes for reports, but to load other ones by other developers, and share the ones they create. This is a really cool project and has tremendous potential for developers to create special effects on report and simple to implement ones developed by others. Really cool and a great session.

    Christof (note, I only have to use his first name {g}) presented “Automatisierung des Entwicklungsprozesses” also in German. I was catching up on more work as I listened to him and tried to understand the various processes he has tried to automate in his work life. So many things to try and so little time to do so.

    I skipped the two after dinner sessions since they were in German and got some more real work done. I needed to work on a proposal that was due for a customer by 5:00 EST so the fact that I was six hours ahead really helped me beat the space-time continuum limitations.

    Once the proposal was completed and emailed I headed downstairs to participate in some discussions in the bar and later headed to bed because I was really tired after the long day. Unfortunately, jetlag was kicking my behind once again.

    Nov
    17

    As you can read in my previous post, things did not start out well on day one for me. It was not until after lunch some time that the adrenaline finally leveled off and my hands stopped shaking.

    For the record, I had smoked salmon at every meal during the conference including lunch on day 1. This is a personal goal I am happy to meet each year at German DevCon.

    Doug’s “A Deep Dive into the VFPX ThemedControls” session was up first after lunch and as is normal for one of the world’s best speakers, Doug did a great job. He stepped us through a deep dive into Emerson Santon Reed’s class library of fantastic controls that really helps in the quest to make Visual FoxPro applications look modern. Doug talked about the fundamental classes: ThemesManager (allows you and your customers to pick from one of six predefined themes), the ThemedContainer, the ThemedTitlePageFrame, and the ThemedButton (including the builder). After the fundamentals Doug described in great detail the classes and code needed to implement the ThemedExplorerBar, the ThemedOutlookNavBar, ThemedToolbox, ThemedZoomNavBar, and the newer Ribbon. I agree 100% with Doug’s summary that there are no more excuses for Visual FoxPro developers to create applications that do not look good. Doug’s 26 page white paper on this topic is a gold mine of information as well.

    Cathy Pountney’s session “PEM Editor: An Absolute MUST HAVE in your development toolkit” followed Doug’s session. I saw this session in Grand Rapids when she rehearsed it for Southwest Fox. Cathy’s session in Grand Rapids was good, but it was obvious she refined timings and material since I saw it. I was wondering if I would learn anything new since I saw it once before, and should not have forgotten that there is so much to this tool and I was destined to learn or relearn something new. PEMEditor is always changing and being improved by Jim Nelson so any minute we can count on a new release with new features. Cathy gave a brief overview to show people in the room who did not know what the PEMEditor is. After this she showed the crowd a dozen or more different features that are new in the current version. One of my favorites was the “Go To Definition” which literally opens up the method in the method editor, the property in the PEMEditor, or an object in the PEMEditor Document Treeview. The “Extract to method” does exactly that, BeautifyX is a beefed up beautifier, and the built in Enhanced Cut, Copy and Paste are fantastic advancements in the PEMEditor becoming a serious refactoring tool.

    Kevin McNeish’s “The Microsoft Entity Framework 4″ (also known as EF4) made my list of sessions because I have read and heard from others that it is Microsoft’s data access soup of the day for .NET development. Seriously, Microsoft has put a lot of resources together to improve the Entity Framework. White Light Computing purposely used EF4 in our conference session eval Web site that we created earlier this year for Southwest Fox so we could learn more about it. Kevin introduced EF4 with his normal wit and humor. The one thing I took away from the session is that Microsoft made some significant improvements from EF1 to EF4. EF4 is really the second release of the Entity Framework and in true Microsoft fashion, needs three releases to really get this product at a mature state. One thing is for sure though from what I have learned at German DevCon, Microsoft needs to listen to database developers more closely as there are some fundamentals missing in EF4, which I find disturbing, but not surprising.

    I skipped the first session after dinner since I needed a bit of a break. I also needed to finalize the three tips I planned to present during the bonus session.

    The second bonus session was the delivery of two “FoxPro Lifetime Achievement Awards” and Tips & Tricks from the conference speakers. Rainer started out the session with an overview of an app he is working on. Most of his discussion was in German with an occasional break in English to help out the non-German people in the audience. It looked like an interesting application.

    The two “FoxPro Lifetime Achievement Awards” were given to Jürgen “wOOdy” Wondzinski, and Christof Wollenhaupt. Both wOOdy and Christof are developers people recognize with a single name, like Cher, and have made so many contributions over the years to the world-wide Fox Community. Their contributions are going to be posted soon on the Fox Wiki. I was honored to be one of the presenters along with fellow award winners Doug Hennig and Rainer Becker.

    Up next was the Tips and Tricks session. Several speakers presented tips they have learned over the years. I presented an ActiveX/IntelliSense tip, ability to sort Watch Expressions in Debugger, and a DataExplorer Query tip.

    Other tips presented by the other developers included:

    • Doug Hennig demoed “Go To Definition” feature of PEM Editor and a instrumenting/logging tool.
    • Ken Levy demoed _SetAllX FFC class he included in VFP, _EvalText found in _HTML.vcx, and advanced Component Gallery tips.
    • Cathy Pountney demos Report Designer trick for “;” as CHR(13) in reports, and is showed off SlickRun.
    • wOOdy is showed a field type tip, a BROWSE NAME trick, and EVAL() tip.
    • Christof showed integer in Command Window does Goto, “-” concatenates and ALLTRIM(), using SET VOLUME, and killing/restarting VFP. Christof also mixed tips and tricks with humor and had the audience in stitches.

    The tips might be printed in a future issue of FoxRockX. That was the end of the conference day. I hung out with folks in the bar for a while, and then headed back to my room around midnight to get some customer work completed. Day 2 would come too quickly.

    Nov
    11

    The most common nightmare I have as a speaker is showing up for a conference unprepared. So far I have been able to avoid this. The second most common nightmare is completely losing my voice. The third most common nightmare I have is oversleeping. You know, waking up to a phone call from the organizer wondering why I am not starting my session. I have heard stories over the years for a couple people that this happened too, mostly due to some heavy partying the night before. I take pride in the fact that I am always on time for my sessions and prepared, and organizers often count on me to do the early morning sessions because I don’t party.

    Today I overslept despite setting up a wake-up call, the television alarm, and my phone as a backup. I did not wake up until Doug Hennig called me almost four hours after the alarms.

    I heard the phone ring. I answered it expecting it to be someone from the hotel telling me to wake up. Strange though was the voice sounded a lot like Doug. I think I asked him what time it was. “11:20″, Doug replied. Mental check, my session starts at 11:30. Holy $%#, 10 minutes.

    Need computer working so I figured I could log in and get things set up and ready so I can start immediately upon getting in the room. Blue Screen! Seriously?!? Really?!? At this point I thought I might want to wake up from this nightmare. This is not a joke. These are real thoughts. Pinch, nope I am awake, phone says it is 11:21. Reboot the machine and hit shower, dress, login, and run for session room.

    I arrived and started my session at 11:35.

    The first 5 minutes were the hardest 5 minutes of my presenting life. The adrenaline level was as high as I have experienced in all my years of speaking. I could feel my heart jumping out of my chest as I introduced the session. At the same time I was introducing the session I was trying to figure out where I could cut time, and slow down my racing heart.

    Jet lag is obviously killing me this trip. I returned to my room exhausted last night, but could not fall asleep since my body thinks it is dinner time back home. I tried several techniques to sleep and all failed. I got up and called my family and went through my session (which turns out to be a key to delivery this morning), tweeted about the problem of not sleeping, and handled some email for customers. All tasks were done hoping to make me more tired. I ended up falling asleep at 4:30 local time.

    All-in-all I was able to convey the information I wanted to share with the people in the room. One of the attendees told me at lunch after the session, after learning I woke up 15 minutes before starting the session, that I did remarkably well considering the experience. In my mind it was definitely not my best work, but appreciate the kind review. I am also hoping the adrenaline levels off some time this afternoon. Wish I could bottle it up for use later.

    Thanks to Doug for recognizing my absence and waking me up. Thanks to those who stayed and attended the session. And apologies to Rainer for letting you down this morning. It will not happen again. As a fellow organizer I know how important it is to count on the speakers to show up on time and deliver a good session.