In spite of staying up too late, I woke up well before the alarm went off. That’s a common story at the conference as everyone tries to adjust to the time zone difference.
Open Source Tools
I saw Menachem for the first time last year, and based on that, I knew this session would be both entertaining and informative, a good start to the day. I was not disappointed. The intent was to introduce several tools and overall to recognize how much good free and open source stuff is out there, just waiting for you to try it. We looked at Notepad++, MantisBT (bug tracking), VirtualBox, and others. Menachem has an obvious passion for open source, but he hasn’t abandoned VFP and other Microsoft software out of spite. He commonly connects VFP to MySQL databases. He also was very clear that “free” tools still have a cost in terms of time and resources, and it may still make sense to pay for software that meets your needs. It was a balanced discussion and I enjoyed it.
Enhancing the Visual FoxPro IDE with VFPX Tools
I knew this would be a good session. Rick’s passion for VFPx is contagious. This session was focused on VFPx tools for the IDE vs. things you would use in an application. He showed ClassBrowserX, PEM Editor, FoxTabs, Tabbing Navigation, Control Renamer, ProjectHookX, and probably a few others I missed. It is just insane how much Jim Nelson has done with the PEM Editor in a short time. Tamar’s Control Renamer does more than the name suggests, going through the source code and changing references to the old name, in effect becoming a refactoring tool. In case your wondering how it felt to see my contribution (FoxTabs) being featured in front of an audience, the answer is PRETTY DAMN GOOD! Get involved. You won’t regret it.
Top 10 (or more) Reasons to Use the VFP Toolbox
Tamar E Granor
I love Tamar’s teaching style. She has a way of making things so clear and easy to understand. I admit I rarely use the toolbox. I’ve been using the form controls toolbar for so long, it’s hard to break the habit. Besides, the toolbox is just a better controls toolbar made to look like the toolbox in Visual Studio, right? Wrong! There are so many cool features that help avoid all those little extra things you have to do and overall make your life easier, and you can use it right now. If you aren’t using the toolbox, take another look.
Simulating Multithreaded Processes in VFP
We have a project coming up where a dashboard type interface needs to update itself automatically in the background every few minutes without tying up the rest of the app, so this topic is definitely relevant. Steve showed a couple of different techniques for simulating multi-threaded behavior. The first involves using functionality already built into VFP: AutoYield, DoEvents, Sleep WinAPI, and Timers. These are all things I have used before, but looking at them from a multi-threaded point of view revealed a better understanding of how they work. The second technique uses a separate EXE for running the long process while the main UI is completely responsive. I heard Steve won the award for the longest white paper at 200 pages, so we have plenty of material to help us with the implementation.
Refactoring Legacy Code
Dealing with legacy code has been a common theme throughout the conference, evidence that both speakers and attendees are having to deal with projects written by someone else. I enjoyed Paul’s approach to the material, not academic at all, but he still got the concepts across. I also appreciated the idea of taking small, low-risk steps to refactor the code, but making steady progress. As with other discussions on refactoring, there was emphasis on testing. Apparently, there is a whole discussion on “Unit Testing” vs. “Integration Testing”. Paul’s response: “I don’t care. Just test it.” My favorite quote of the session.
Bonus Session: VFPX Users Meeting
This session was well attended by both VFPX project managers/coordinators and users. There were several topics, but the main discussion centered around better deployment of VFPX files, and getting the word out to more Fox developers. You can watch the meeting at http://www.ustream.tv/channel/swfoxtv.
Bonus Session: Stonefield Query Users Meeting
Doug Hennig puts together a meeting every year to show off new and upcoming features of Stonefield Query, as well as take requests. As an existing user, I like to go. This is awesome software, and the features coming in version 4.0 are going to make things SO much easier for our customers. If you have been considering a report writer, take a good look at Stonefield Query.
The party continued at the Feltman’s for the second night and there were even more people this time. It was good to see YAG there. I met a lot of cool people and had some good discussions.
7 Replies to “SW Fox 2009 Friday”
"Simulating Multithreaded Processes in VFP
Didn’t he hear that Calvin created a multi-threading class?? 🙁
I asked Steve about that. He did know about Calvin’s class but said he didn’t understand Calvin’s post for using it or he couldn’t get it to work.
That’s a real shame since it is indeed real multi-threading with vfp and not a "simulation". There’s an easier example of it at http://mtmyvfp.codeplex.com
Regarding Calvin’s Multithreading code…
Claude Fox of ActiveVFP fame has a project on codeplex itself where he has put together all the components from Calvin sample and his own code to come up with a solution that works very well. No simulation here. Steve should have researched this properly.
You should check this out:
Also I am surprised that you have not searched for "VFP" in codeplex. There are other vfp sites other than VFPX you know.
I knew about Claude’s project, and I think Steve knew about it as well, though he didn’t mention it by name. I was hoping to see it in action, which is why I asked him about it in the first place, but he chose not to feature it. That said, I still got value out of the session.
Glad you enjoyed the session Joel.
Yes, I was well aware of Calvin’s code (as well as the mtmyvfp project), when they first came out. I’ve played around with both and wasn’t crazy about it. I reviewed them again when putting the paper together but still wasn’t crazy about it. A number of people I spoke to echoed how I felt.
I like things that are super simple and easy to fully understand. I don’t *thoroughly* understand Calvin’s code especially the assembly code, although I understand the basics of what he’s doing. If I deploy an app using this technique and it stops working or has bugs, I won’t feel confident to be able to fix it. Thus, I did not feel it would be appropriate for me to demo this code which is why I did not include it, aside from the fact that it was unnecessary as my simulated approach works just as well.
I thought I had mentioned in the session that there were other ways to handle mt that I wasn’t covering, but perhaps not the one you were at Joel?
I think the best approach outside of what I showed is Christof’s method using .NET to create the thread (which he showed in his .NET interop session). While my approach has always suited me for all my needs, if I ever needed to do something else, I would use Christof’s method rather than Calvins. That’s just me. I totally respect the work done by Calvin and the mtmyvfp project.
In my session I discuss that there’s no tangible difference to using "real" mt, vs. the "simulated" model I used, so any argument that using the real method is better, in my view is academic, rather than practical. That’s just my opinion, everyone’s welcome to disagree.
Thanks for responding. I respectfully disagree on many counts. First, since Calvin was (is?) the lead developer for VFP, it’s incredibly important when he adds a new feature like multi-threading to VFP. Second, true multi-threading will be an order of magnitude more efficient (less memory used and all processors efficiently utilized) than the brute force method of starting a whole new process for each task you wish to complete.
It definitely would have been worth any extra effort to understand what Calvin did or how MtmyVFP works. Real VFP multi-threading is definitely a benefit for the VFP community. For the end-user, it just becomes a black box base-class that they just have to understand how to use, not how assembly code works.
disappointed in foxland