May
13
I just loaded my feeds to Share Your OPML based on reading about it on YAG’s and Chris Prillo’s blog this week. I was shocked to learn I have 206 feeds set up in FeedDemon, and this is after I cleaned out several dozen when I upgraded to version 2.0 recently.
 
Now I do not read all of them all the time. There are several I use just to ping me on topics I am interested in. Some of them are stagnant. Some of them are research. Some of them are for future development. Some are for business ideas. Some of them are educational.  Some of them are to bring humor in my life. Some of them are must reads as soon as the post hits FeedDemon.
 
So I thought I had a lot, maybe even too many. Then I read the list of prolific subscribers who have submitted their subscriptions on the site and I figure I still have a life {g}. The top person on this list subscribes to more than 8000 feeds. All of the top 15 people subscribe to more than a thousand. Shoot, where do these people find the time?!
 
Anyway, I think this could be an interesting experiment.
May
13
This week I got a chance to do one of my White Light Computing Field Trips. This time I was invited to spend the day at Epiq Systems in Kansas City. I was in town to present a couple of sessions at the Midwest FoxPro Users Group, and Doug Carpenter was kind enough to share his office with me on Thursday.
 
Epiq is a company developing software solutions for the bankruptcy industry. They are using Visual FoxPro to develop both Web solutions and workstation solutions, and do some .NET too. I was interested in how a large team developing with Visual FoxPro successfully implements the Agile methodology for software development.
 
Each developer has their own office where they can isolate themselves. This initially looked contradictory to the typical agile environment where collaboration is so important. Each office is designed so developers can do pair programming. In fact, Doug showed me something I have never seen before on a desktop computer: two keyboards. This is very cool because both developers can be involved in the development. I am a fan of pair programming when working on difficult code, debugging a sticky problem, and doing design. One of the things I dislike about pair programming is one developer usually hangs out over the shoulder of the other developer. It is my experience that the developer on the keyboard is usually doing more work and the sidekick can lose interest. I think the dual keyboard forces both developers to remain engaged.
 
The team invited me to sit in on the “scrum” or “sprint”. This is a daily team meeting. I really like this concept. This meeting is very short, which is real different from the normal team meetings I have been in during my career. The team includes developers, program managers, and quality assurance. Each member reviews what they have done in the last day, noting accomplishments and road blocks. A spreadsheet with the tasks are updated live during the meeting to show completed tasks and remaining work. Program managers can determine where they are in the big picture, understand accomplishments to meet the next release, what remains, and can address the roadblocks after the meeting. The quality assurance team can bring up concerns with the latest build (done daily or more frequently as needed).
 
It reminded me of my days at EDS when I worked with a team focused on delivering products for GMAC. We did not use the Agile methodology at EDS, but we used many of the concepts now recognized as best practices in the Agile methodology. This meeting reminded me of the importance of teamwork and the fun one can have working on a team focused on the same goal.
 
The other observation I had is how well the team works together. The quality assurance folks help the developers, and the developers help the quality assurance team. Management works to make the team successful. The Visual FoxPro developers and the .NET developers respect each other.
 
Epiq Systems is run smart, at least from an outsiders perspective. I learned a couple of things I would like to implement at White Light Computing as it grows. It was another day well spent on the road.
 
It was a great day in the windy city (yeah, KC was windier than any day I have spent in Chicago). Thanks to Doug Carpenter for all the hospitality and for the team inviting me to lunch and to the “sprint”.
 
Also a special thanks to Lou Harris for loaning me his Staples Easy Button for my presentation at the user group that night. Lou attended one of my Help Made Easy sessions at Southwest Fox last year and was the recipient of one of the Easy Buttons I gave away. Little did I know I was planting one in KC so I could borrow it six months later {g}.
May
13

Debugging Tip

At GLGDW 2006 there was a panel session on Debugging Best Practices and Tips. I was on the schedule, but was preempted when Doug needed a machine to do his vertical market session and used mine. So I thought I would present it here instead, although I think Dan Freeman mentioned it breifly during the session.
 

A Visual FoxPro developer can go through a lot of work configuring the debugger with the settings for the watch window, developing the exact breakpoints needed for an application or module, and selecting certain events to be tracked. The settings can change depending on the application or a specific module in an application. We can delete expressions from the watch window and enter in new ones as we test various modules, we can toggle breakpoints in use and not in use, and we can move events that are tracked on and off the list. Another way is to save the exact configuration for the module and later load the configuration without the need to reenter the expressions or toggle the breakpoints.

This is accomplished via the Debug frame only. Using the menu, you can select the File | Save Configuration… to create a file. The file save dialog will default to the current Visual FoxPro directory. To restore a previous configuration you use the File | Load Configuration… menu option. The file contents are stored in an ASCII text file. Here is an example:

DBGCFGVERSION=4

WATCH=_screen

WATCH=set(“deleted”)

WATCH=set(“path”)

WATCH=thisform

WATCH=curdir()

WATCH=recno()

WATCH=eof()

WATCH=_vfp.ActiveProject

BPMESSAGE=OFF

BREAKPOINT BEGIN

TYPE=2

CLASS=    

LINE=0

EXPR=EOF(“curReport”)

DISABLED=0

EXACT=0

BREAKPOINT END

 

BREAKPOINT BEGIN

TYPE=3

CLASS=    

LINE=0

EXPR=”MAIN”$PROGRAM()

DISABLED=1

EXACT=0

BREAKPOINT END

 

EVENTWINDOW=ON

EVENTFILE=

EVENTLIST BEGIN

Activate, Deactivate

EVENTLIST END

 

You can manipulate the contents safely in a text editor and reload the configuration. Make backups of this file if you are worried of breaking the layout.

The really cool thing is these files can be created programmatically. Watch expressions are single line entries and can be in any location in the file. So you can easily add a watch with a simple line of code:

STRTOFILE(“WATCH=ALIAS()”, ;

          ”MyDebugSettings.DBG”, 1)

 

You also can sort the Watch expressions in the file. One of the things bugging me (no pun really intended) in the Watch window is new expressions are added at the bottom of the list. You can add them to the top of the expression list programmatically in the file using this code:

 

lcFileContents = FILETOSTR(“MyDebugSettings.DBG”)

STRTOFILE(“WATCH=ALIAS()” + CHR(13) + lcFileContents, ;

          ”MyDebugSettings.DBG”, 1)

 

Once you add it you have to reload the configuration file. One disadvantage to this approach is you lose the IntelliSense capability of the Watch window.

 

Each time I have talked to developers about this feature someone comments to me how they never knew it existed.

May
13

YAG’s New Job

I know I am late on news item and many of you already know about Alan Griver’s new job. I just want to say I believe this will impact the Fox Community positively in two ways. I know this because I talked to Alan and can tell you he is very excited by this opportunity.
First Alan requested VFP to be part of his job and he would not have taken the new position without it. It was very important to him. I think it is important to have someone who is as passionate about data to have VFP under their direction. He is really excited about delivering Sedna and will be hitting VFP conferences. He could have left the team and left VFP to be someone else’s “problem”. I think this is a big win.

Second, Alan is now an architect at Microsoft.com focusing on the community sites. One of these sites is GotDotNet.com, which is where the SednaX site is hosted. I can tell you there are lots of exciting things planned for Code Gallery for the near future. These changes are really going to enhance the project management of the SednaX projects. Knowing Alan’s experience in the Fox Community, how he leveraged this for the .NET community, how he understands how developers work and communicate, I know he will bring it to the table for the community sites. SednaX is just getting warmed up. We have several diverse projects already started and the momentum is just beginning. Having a friend on the inside should be a big win for the SednaX members.

If you want to read more on YAG’s move check out his posts here and here. and here.

Congratulations Alan!
May
07
(at the risk of a little self promotion, but definitely as a service to the Fox Community)

Have you read some of the blog or forum posts touting the sessions at GLGDW 2006, and kicked yourself for not attending? Wish you had a second chance? Well Whil is giving you a second chance by releasing the session whitepapers as a new e-book: Visual FoxPro Best Practices for the Next Ten Years

I just reviewed through the book (a whopping 415 pages) and personally feel it is worth twice what Whil is charging. Heck there are a few chapters in this book I would be willing to pay $75 by themselves. Go steal a copy for yourself at Hentzenwerke Publishing.
May
05

Computer Glitch?

A little humor for my day was provided in an email from Epson concerning a rebate they owe me. I got the email today, and here is the content:
 


Dear Richard Schummer,

Your Epson $20.00 rebate check has been sent via 1st class mail on 12/28/2006. Please allow adequate time for delivery.

Sincerely,

Epson Rebate Administrator

PLEASE NOTE: This is an automated email message. Please do not reply directly to this message.


Looks like they can predict the future or have released my notice too soon. I know rebates always seem to take their sweet time getting to me, but building in a 7 month delay is pretty ridiculous {g}. I also like how I cannot contact them with a reply to the email. Thanks Epson. I hope I get it sooner, and I hope their IT department realize the bug on their own since I have no way to tell them.
 
May
02
Or as I should really say: not support.
 
I know I am not your top of the line hardware dude, but even I have been known to change a toner cartridge in a laser printer. After all, it is not a fax machine so even I should be able to handle it. But this weekend it was proven that I am even less competent at hardware than I thought. It started Friday evening when I was printing out a recipe off the web. Simple enough, but the printer is screaming at me to feed it toner. Sunday I stop out at OfficeMax and pick up a cartridge.
 
I get home and open up the printer and try to pull the old toner assembly out of the printer and it is stuck. Stuck hard. So I call Brother’s tech support number and get a message: hours of support are from 6am to 9pm PST, except holidays. April 30th is not a holiday, but the recorded message tells me to call back during working hours despite it being in the alleged support time frame. Idiots. Tell me you are also closed on the weekend.
 
So I called back today and was routed fairly quickly to a support professional. It was a good experience to start as the wait time was less than a minute. All I had to do is provide them my phone number and they told me my printer model and asked how they can help. I explain my situation on how I am out of toner and replacing it for the first time and how it is jammed. The guy asked me to pull hard. I did not want to break the drum assembly so I pulled as hard as I could before I thought I would break something. He asked me to check to see if there was a foreign object in the assembly and I looked (again) to confirm nothing was in the way. He was kind enough to tell me I was the first person he heard of who could not pull the toner out of the printer. As if I don’t have enough esteem problems with hardware. He figures it will be better for me to embarrass myself in front of a human and gives me the phone number of a local tech.
 
I talked to the local tech and he asks me: do you see this white plastic connector on the left side of the door? Sure. Is it connected to a piece of black plastic? No. I connect it and bingo I hear the sound of a release and sure enough the toner slides right out. Simple as pie. This is the first thing they should of asked me. The local tech guy notes he would have made $50 if I had brought it in. I offer to do so, but he declines. First class help from someone knowledgeable.
 
Have I mentioned how much I hate hardware?
 
Powered By Qumana
Apr
27

Back from GLGDW

Yes, I am finally back from GLGDW (and vacation). I would like to tell you I walked back from Milwaukee and this is the reason I am blogging my recap three days after the closing session (and it was a fun closing session wasn’t it {bg}). The truth is I am extremely busy at the moment both professionally and personally. This is a good thing. The truth is, I spent the last couple of nights assembling some notes from the opening session to send to Whil with all the feedback and links from the Professional Developers Toolkit part. It was the fastest I ever assembled a session whitepaper, and I hope the attendees find it beneficial. All this and catching up with my client work after a 10 day vacation before the conference. You know how this goes. I figure it will be another week of catching up on all the work. All this and it is playoff season for the Red Wings and Pistons. Fortunately, I have patient clients and a patient family.

As others have blogged and posted on various forums and list servers, the conference was a smash hit. The format of the conference was very comfortable for me. In fact, the entire conference was patterned to draw out participation from everyone in the room. This is exactly how I like my sessions to flow – throw out some ideas and let the discussion flow from everyone in attendance. It has always been my contention we all benefit from the knowledge of many instead of the knowledge of one. As one developer told me Saturday, you could not risk falling asleep because you would miss too much. He told me even the most energetic speaker normally only keeps his attention for 30 minutes, but at GLGDW 2006 he stayed awake for the sessions.

So thanks to everyone who helped me present the Professional Developers Toolkit and Best Practices on Error Handling. It was a true pleasure to be a part of this event.

I attended every session. Normally I miss one or two slots because I have something pressing I need to take care of at the conference. I learned a lot from every presentation. This is not unusual, and is one of the big reasons I go to conferences. The inspiration factor is a big deal to me. GLGDW did not disappoint.

I pretty much agree with everything Doug Hennig blogged about (especially about the Thai food we ate Saturday night).

Each of the presenters (both those in the front of the room and the others sitting comfortably in the seats) challenged my thinking in some way:

  • Marcia and her “must/should/could” approach to determining where the code goes provides me with a different approach when I struggle deciding where in the class hierarchy the properties and methods need to go.
  • Tamar keyed in some ideas on how my user interfaces can be better, especially when messaging users when saving and deleting data, and accessibility. It was very apparent she is passionate about this topic.
  • Andy was the only speaker doing two sessions (local and remote data), and was the only speaker who made me open up my machine and test something I thought was incorrect (naturally I was wrong, but this was the idea – he challenged my thinking). I disagree with some of his best practices especially on remote view, but respect his ideas and thought it was an awesome three hours plus.

That was Saturday. Whew.

  • Nancy’s refactoring session kept bringing back memories of Steve Sawyer’s refactoring session several years ago in Milwaukee. Nancy shares Steve’s passion for this topic and did a great job. She brought out a number of “duh” moments and thanks to Doug, made me appreciate my development approach of not using WITH…ENDWITH.
  • Barbara tackled a reporting, which is a topic given much exposure over the last couple of years because of the new reporting engine in VFP 9. The great thing about this session is it was not a how-to use the Report Designer session, but how to generically approach reports and the query form in a generic sense.
  • Cathy may have had the most difficult topic to tackle with Project Management. This is a topic most developers either love or hate. There is no code, no jumping in to VFP to show off this technique or that idea. Cathy provided a number of ideas and concepts which reminded me of all the good reasons project managers make good money.
  • The debugging session was packed with lots of good ideas from everyone. I happen to consider debugging one of the most important aspects of development because all developers spend a lot of time debugging software. Picked up a couple of tips.
  • Doug presented a great session on vertical market apps. This was one session I was very interested in personally because I am involved in building a couple of vertical market applications. Doug did not disappoint, despite struggling with a hardware failure getting his machine to push video to the projector. Rock solid.

Fun way to spend a Sunday for sure.

  • The last day of the conference is always the hardest, but Craig started it out with lots of best practices with respect to the middle tier and COM+. I have not done a lot of work with COM objects and the middle tier (distributed model) apps. I found the session interesting and learned plenty.
  • Rick Borup covered Deployment like no one else can. Obviously this is a topic near and dear to my heart. His approach showed developers that deployment is not something you consider at the end of the development project, but is part of the entire development life cycle. He provided some great best practices in each of the five stages. Top-shelf presentation from a top gun presenter.

I left Milwaukee exhausted and energized at the same time. I cannot wait to download the session materials (Whil has already sent out the message they are ready).

I liked the single threaded format and the single theme, but I know I would not want every conference to follow this format. It would get boring. Sometimes choice is good, and sometimes choice is bad. I know a mixture of formats will serve the conference organizers well.

My only complaint is the hotel Internet access. I had trouble keeping the wireless connected in my room, and tried dial-up, but that was even worse. Fortunately it was the weekend and there was not too much email traffic. If the wireless was better I would have blogged live during the conference.

Thanks Whil and Alexis. You were great hosts and put on a terrific Fox event.

GLGDW was a great way to kick off the year of Fox conferences. If you missed this one there are several more coming up in the fall.

So what are you waiting for, go get registered and take part in the inspiration. I figure I should be coming down from the adrenaline rush just about the same time I get caught up on all this work.