====================================== FoxPro Developers Network of San Diego ====================================== FoxDev TipsLetter #04-05 July 1, 2004 Website: Editor: ---------------------------------------------------------------------- CONTENTS: * Calendar * From the Editor * Tech Tips: Generating PDF Files from ProFox * Other Stuff: Real Work, Necessary Friction, and Optional Chaos WhiteSpace - A Programming Language Recipe For Success Steven Black * Knowledge Base Updates New/Updated KB articles on VFP * Links: Where Can I Find...? * Administrivia ====================================================================== CALENDAR: All meetings are at Sizzler unless specified otherwise. Thu - July 15 - Art Bergquist ------------------------------ Short Program - Steve Settimi Topic: Best Practices for VFP Development "All sorts of tips and tricks I've gleaned over the years to simplify and generally facilitate VFP development" Thu - August 12 - Mike Stewart ---------------------------- Thu - Sept 9 - Barbara Peisch ------------------------------ Topic: Client Relationships 101 Regardless of how much programming experience you have, going independent is a whole new world. The first step is creating a standard contract (usually called a "Consulting Agreement") that's fair to both you and your future clients. This session will cover essential elements of a good contract, plus some negotiation strategies. We'll also cover the pros and cons of charging by time and materials versus fixed price, as well as what makes a good design specification. Finally, we'll get into how to establish and maintain a good working relationship, as well as when and how to terminate a relationship that's gone sour. Thu - October 14 - Steve Settimi -------------------------------- Topic: A Simple Way to Make Your Desktop Apps Web-Aware All meetings start at 6:30 pm. Back room of Murphy Canyon Sizzler: 3755 Murphy Canyon Rd Take I-15 to the Aero Dr exit (South of Balboa) Head west to first light west of freeway Turn right Sizzler is on the right almost immediately PLEASE TRY TO COME EARLY ENOUGH TO ORDER YOUR DINNER BEFORE 6:30! We'll have our Q&A session while we eat. ====================================================================== FROM THE EDITOR: A whole bunch of new KB articles this month. Several of them are "how-to" articles that just might relate to a problem you're having. Give it a look. For those located in San Diego, if you're not coming to the meetings, I have one question - why not? I also have three good reasons why you SHOULD come, 1) the presentations are interesting and useful, 2) the general discussion is interesting and useful, and 3) we could use more bodies buying dinner to justify our getting the meeting room for free! In the same vein, who do you know that works in FoxPro and isn't a member? Why should he/she be doomed to a career of perpetual ignorance? The simple act of joining FPDN would provide the gift of new and luminous knowledge, suffusing his/her entire life! Think of it as an act of human charity - your duty, so to speak. Dan Covill ====================================================================== TECH TIPS ====================================================================== GENERATING PDF FILES FROM VFP from ProFox [There is more and more interest in generating reports as PDF files from VFP. This reference popped up on the ProFox forum. DC] There have been articles in several of the magazines, including FoxTalk and FoxPro Advisor. Rick Schummer did a multi-part series in FoxTalk on PDF options, and enhanced and expanded that in the book "MegaFox" (http://www.hentzenwerke.com/catalog/megafox.htm) Download the zip from here and get chapter 6 and 8. (http://www.hentzenwerke.com/samplechapters/zsamplechapters.htm) Chapter 8 - Integrating PDF technology ====================================================================== OTHER STUFF ====================================================================== REAL WORK, NECESSARY FRICTION, AND OPTIONAL CHAOS A recent article by Phillip Armour in the Communications of the ACM discusses the "size" of software projects. It's not lines of code. He divides total project effort into three categories. "Real Work" is the effort necessary to translate knowledge into an executable form. This is relatively independent of the schedule. "Necessary Friction" is the work of discovering the required knowledge. Obviously, this is much greater for new projects. (Armour says, "It is almost never possible to 'do it right the first time' since if it really is the first time, we know neither what 'right' is nor how to do it.") "Optional Chaos" is the effort required by communication, miscommunication, and the resulting rework. This goes up dramatically as the schedule gets tighter or the staffing increases. So, how 'big' is a project? It's a combination of the Necessary Friction of finding out what we need to know, the Real Work of actually building the application, and the Optional Chaos induced by the team size, the management, and the development schedule. Dan Covill ---------------------------------------------------------------------- WHITESPACE - A NEW PROGRAMMING LANGUAGE [Although the following is funny, it is not entirely a joke. They have actually written a compiler and can run programs! DC] What is Whitespace? Most modern programming languages do not consider white space characters (spaces, tabs and newlines) syntax, ignoring them, as if they weren't there. We consider this to be a gross injustice to these perfectly friendly members of the character set. Should they be ignored, just because they are invisible? Whitespace is a language that seeks to redress the balance. Any non whitespace characters are ignored; only spaces, tabs and newlines are considered syntax. http://compsoc.dur.ac.uk/whitespace Whitespace tutorial (excerpts) The only lexical tokens in the whitespace language are Space (ASCII 32), Tab (ASCII 9) and Line Feed (ASCII 10). By only allowing line feed as a token, CR/LF problems are avoided across DOS/Unix file conversions. (Um, not sure. Maybe we'll sort this in a later version.). ..... Many commands require numbers or labels as parameters. Numbers can be any number of bits wide, and are simply represented as a series of [Space] and [Tab], terminated by a [LF]. [Space] represents the binary digit 0, [Tab] represents 1. The sign of a number is given by its first character, [Space] for positive and [Tab] for negative. Note that this is not twos complement, it just indicates a sign. Labels are simply [LF] terminated lists of spaces and tabs. There is only one global namespace so all labels must be unique. ...... ---------------------------------------------------------------------- RECIPE FOR SUCCESS by Steven Black [From a ProFox post on 5/29] "So the question is: do you start working with an OS with a future now, or do you milk your current OS for a few more years, knowing full well that it will be obsolete soon." [From Steven Black's reply:] "Without exception, all the shops I've seen that are runaway successes, measured either by the number of their customers, the number of their users, or the wealth of their owners, are milking it. To me the correlation is clearly evident: the older and more fundamental the system, platform, or development philosophy, the more profitable the shop tends to be. In other words, virtually nobody among the multi-millionaires to near millionaires I know is remotely concerned with LongHorn. They are concerned about their customers. None of them, to the extent that I know them, ever peddled technology. They leveraged their insight into applications and, in the process, generated superlative value for their customers, their people and, of course, themselves." Steven Black steveb@stevenblack.com ====================================================================== VFP KNOWLEDGE BASE UPDATES ====================================================================== Visual FoxPro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 119938 BUG: Menu appears behind Fox icon on menu bar 133451 How To Causing a Form or Formset to Time Out 135518 How To Copy Files from Cabinets on DMF-Formatted Disks 136846 Vfp30wiz.exe Updated VFP 3.0 for Windows Wizards 138560 How to Disable Combo and List Boxes in Wizard-Generated Forms 162300 How To Converting VFP3 Source Control Projects to VFP5 164870 How To Apply, Remove a Filter from Form's DataEnvironment 167192 How To Create a Progress Indicator Using Threed Panel Control 169500 How To Call Driver Specific Functions in a Remote View 170127 How To Add Tables in a Database to Source Control 170146 How To Access ImageList from TreeView & ListView Control 172079 How To Closing a Running Application from Visual FoxPro for Mac 174186 Files the Setup Wizard Installs 176655 How To Convert a Word Table to a FoxPro Table 184218 Formexit.exe EXIT Command May Leave Form Object Visible 185498 Vfphtml.exe Demonstrates HTML Help in VFP 3.0 and 5.0 186010 How To Calling the Splash Screen Foundation Class From Code 186094 How To Change the Data Series in MSGraph Using the PlotBy Prop 186913 How To Assign FoxPro Foundation Classes via Field Mapping 186920 How To Change the Report Designer Ruler Measurement 187982 How To Change Default Properties for Genhtml 190771 FILE: Vfp6rt.exe Distributing Run-Time Files w/ an Active Document 191174 How To Create a Custom HTML Help Viewer in Visual FoxPro 191629 How To Create an MTS Component that Works with FoxIsapi 191758 How To Convert FoxPro Cursor into XML Data Format 191953 HOWTO: Use Coverage Profiler to Optimize App Performance 192303 How To Convert Decimal Integers to Hexadecimal Strings 192304 How To Check for a Writeable Drive Under Windows NT 192343 How To Associating the Default ProjectHook Class to a Project 192766 SAMPLE: ADSIBrow.exe Browses Active Directory w/ Visual FoxPro 195613 How To Create a Simple Context-Sensitive HTML Help File 195620 How To Check for Component Gallery/Class Browser Version 195848 SAMPLE: ADSIPrnt.exe Demonstrates ADSI Print Job Control 247241 WhatsThisHelp.exe: Implement HTMLHelp and WhatsThisHelp Concurrently 254478 Use the ActiveX Progress Bar OCX Control 259962 Visual FoxPro 6.0 Sample: How to Create a Menu Object 265261 How To Improve Speed of Word Automation 265731 How To Automate Excel 2000 Subtotals Function in Visual FoxPro 289904 How To Create a CD-ROM Setup Disk with the VFP 6.0 Setup Wizard Visual FoxPro 6.0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 265261 How To Improve Speed of Word Automation 265731 How To Automate Excel 2000 Subtotals Function in Visual FoxPro 289904 How To Create a CD-ROM Setup Disk with the VFP 6.0 Setup Wizard How To Look Up These Articles: To get to a specific KB article: a. Go to support.microsoft.com. b. Click on "Knowledge Base Article ID Number Search" c. Enter the document number in the page that appears. d. Click on the green arrow. To Subscribe: Subscribe at . You can specify any MS product to receive alerts on. ====================================================================== LINKS ====================================================================== This is a (semi) permanent list of places to look for technical help when you get blind-sided by the latest urgent requirement. We don't give specific URLs for MSDN articles because (a) they're too long and (b) they change too often! ------------------------------- MSDN ON LINE: There's a ton of stuff here, look at the MSDN Magazine. Heavy on .NET, you'll have to dig to find the VFP stuff. ADO VFP and ADO - Part 1 of 2 FoxPro 2.6 procedure library: http://members.aol.com/FoxProResources/fpfp.htm ODBC: MSDN Library: "Using Visual FoxPro to Access Remote Data" ODBC drivers are part of MDAC - Microsoft Data Access Components - and are available for download at: "www.microsoft.com/data" VFP Publications: www.advisor.com FoxPro Advisor www.pinpub.com FoxTalk magazine www.hentzenwerke.com Hentzen Publishing (Books, discussion, and downloads) VFP Run-Times: FTP library with complete VFP run-times from 3 thru 8. VFP General: msdn.microsoft.com/vfoxpro Microsoft's official VFP home page www.foxcentral.net Joint effort by Microsoft, West-Wind, and the Universal Thread Lots of news and development info. The History of FoxPro (submitted by Steve Settimi) www.foxprohistory.org The Universal Thread http://www.universalthread.com The "Wiki" fox.wikis.com fox.wikis.com/wc.dll?Wiki~FoxForumWiki fox.wikis.com/wc.dll?Wiki~VisualFoxProLinks Here's another extensive set of FoxPro links: http://www.cetus-links.org/oo_visual_foxpro.html Private websites with useful free info and downloads: www.prolib.de/foxlinks.afp wOOdy Wondzinski www.gatwicksoftware.com Allen Pollard www.ukfug.org.uk British user group www.lafox.org LA user group www.pinter.com/ Les Pinter www.vfug.org/ Virtual Fox User Group www.leafe.com Ed Leafe, ProFox listserve www.jamesbooth.com white papers and tutorials www.foxforum.com www.foxite.com (registration required) A group of Dutch developers - refreshingly geeky. (Don't be put off by the registration - they're not selling anything.) www.stevenblack.com INTL Toolkit and lots more www.craigberntson.com the Crystal Reports guru WEB Development: These products all work well with VFP. AFP www.afpweb.com and www.afpages.com FoxWeb www.foxweb.com Web Connection www.west-wind.com X-WORKS www.x-works.com Windows General Win32 API (with VFP examples) [Contributions solicited. DC] --------------------------Administrivia------------------------------- This newsletter is a service to all FoxPro developers, provided without charge by the FoxPro Developers Network of San Diego (FPDN). Anyone may subscribe (or unsubscribe) at our web site . The link is on the home page. The Resources button on the website will take you to the back issues of the newsletter. The editor (Dan Covill) is solely responsible for the content. E-mail him with YOUR tips, comments, or complaints. Editor: Dan Covill 858-272-2448 dcovill@san.rr.com Board of Directors: Eric Lendvai - President 760-734-4929 eric@elsoftware.com Art Bergquist - Vice Pres 760-740-0428 abergquist@sbcglobal.net Thad V'Soske - Secretary 619-544-9900 tvsoske@yahoo.com Barbara Peisch - Treasurer 760-729-9607 barbara@peisch.com Dan Covill - Director 858-272-2448 dcovill@san.rr.com Claude Nikula - Director 619-615-6318 crndev@verizon.net ----------------------------------------------------------------------