Thursday, December 28, 2006

Desktop Alerts now in VFPX!

This is great news! Kevin Ragsdale's Desktop Alerts, which he has showcased in various meetings, is now part of the VFPX project.

If you haven't seen it - basically imagine having the Outlook 2003 Desktop alerts within your own FoxPro application.

Very cool and an awesome addition!

Monday, December 18, 2006

Microsoft Vista - Impressions after Week 1

Even though I tried an early beta, I have tried very hard to keep a more "consumer" eye towards Vista as it reaches release. I installed Vista Ultimate on my wife's computer (after upgrading the memory, of course) so I could perhaps get some reaction from someone who is not knee deep in tech talk. Perhaps I was inspired from Robert's comment about the Twit podcast where Paul Thurrott said Vista was changing the way he uses his computer. (maybe he's changed his opinion) I've read some good (but hey integrating everything you've offered separately can't count as a meaningful upgrade, can it?)

But I've also read Chris's posts from back in May about Vista Mistakes and then more.

Trish was not impressed with the staid looking task bar (first question: "how do I change the color?" Answer: you really can't)
And her overall impression after one week (granted it's early) was: "It's really not that different"

(I know there are LOTS of changes under the hood but that's not something everyone (ie non-techies) will see at first glance - and when you're trying to get people to upgrade, it can be a major point.

Myself - no, I'm not impressed with the new "Explorer" look" - it reminds me of getting onto someone's computer who has an Explorer replacement. Yes, it's cool - but when I have to support multiple machines, it's just plain annoying! (and why would you change the Start button with a stupid logo? Start made sense especially for new users - it's kind of like the new icon menu in Office 2007 - it DOESN'T make it easier - and does it really save real estate?)

But more to the point:
Last week, I tried installing NovaPDF. No biggie there except that Vista CRASHED (or rather the Subspooler and something else) both times I tried. And while I like that I can hover my mouse over a window and it will appear, it was hiding the fact that the installer broke something in the OS. Strike one.

So this morning, I was moving files from my digital camera over onto the machine. I had lots of images but also some movies. So the new Windows Photo gallery comes up - nice, very handy but when I try to take a look at the video, IT crashes. Now, I know maybe I shouldn't be viewing an AVI file in a Photo Gallery but shouldn't the photo gallery say "Stop!"?

Maybe there will be more posts about Vista and end-user impressions (I still love Rick Strahl's great developer look here and here ) in the future - but taking a page from Robert when he said "when I want to find out about something, I look for 'xxxx sucks' in Google"

Vista Sucks - Google Search

I really do want to like Vista. I'm excited by so many aspects of it but I'm also dreading customers using it and asking how to do things. After running it for a week, I can't help but feel disappointed by its lack of real innovation in the interface.

I hope this is a passing disappointment but I'm not sure. When we stopped at the Chicago Apple store in early November, Trish's two immediate comments were "this is so cool" and "when I want a laptop, I want a MacBook". A little different from her review of Vista - not that much different.

Thursday, December 14, 2006

Still Looking for a PDF Writer?

Check it out today - it's only available for 11 more hours but Giveaway of the Day is promoting
novaPDF Printer Lite.

One thing you need to remember about Giveaway of the Day - you have to install it as soon as you download it. If you wait too long, the activation code can't be used.

Update: This tool doesn't appear to work with Vista. I installed it three times and it crashed the subspooler. It did install great over XP though.

Friday, December 08, 2006

Rick reveals more on the Sedna Data Explorer

Rick Schummer has a great post in which he discusses some of the new features in the Sedna Data Explorer.

I've played just a little with the FoxPro Data Explorer but was always put off by its lack of direct integration features so hearing some of the new features and bug fixes (especially the call to the Upsizing wizard) have intrigued me to take another look.

Great stuff!

Thursday, December 07, 2006

OzFox 2007 extended registration deadline

Boy I wish I could get to this.

But even if you can't, it's refreshing to hear a conference organizer comment on why they're extending the deadline and thanking those who did register early.



Hmmm...wonder if VFP Solution Explorer will be making an appearance?

Craig Bailey's thoughts on life and Visual FoxPro: VFP: New OzFox 2007 site + extended special price

Saturday, December 02, 2006

New to Design Patterns? Check out Andy's intro

Andy Kramek has a brief but good introduction to why you shouhld consider Design Patterns, not as a bunch of gobbley-gook but as a useful way of dealing with challenges.

I'm looking forward to the series...

Expression vs. Office 2007

Why wouldn't MS do an update to the Expression Beta before releasing Office 2007?

"EW uses components from Office 2007. As a result the Beta version of EW cannot be installed with the RTM version of Office 2007. It can be installed with Office 2007 Beta 1 TR "

That's no answer. But hey, at least an MVP responded (Ron Symonds) - MS didn't. Maybe they'll fix it soon.

I have to say - I do like Expression Web Designer - although maybe it's more because my FrontPage was bother me so I thought I would try something for a change.

But now it really bothers me because I want to use it but I also want to use Office 2007!

Argh! Why bother installing beta software?

Install of Expression Web Designer Beta 1 w/ Office 2007 F..

Thursday, November 30, 2006

Need to Diagram your FoxPro programs?

I just got a news release from a company in Finland touting the latest version of Visustin, a flowcharting program that reported to work with Visual FoxPro, among other languages. I was definitely curious and for good reason - one thing I always used to love about FoxDoc, that old venerable project documenting tool, was its flow diagram. (granted it was in ASCII but it was still useful)

Here's a screen shot of Visustin with a sample VFP program:


It's very cool and I can definitely see where it would be useful in figuring out new pieces or "inherited" pieces of code. The fact that it also helps diagram VB, C#, Java, T-SQL and other code as well, definitely should make it invaluable to anyone.

You can open a program or simply cut and paste code in the screen and hit Diagram and away it goes.

It even lets you export out to Visio, Word and Powerpoint - great for code reviews! A bulk flowchart program (disabled in the demo) looks like it would let you chart out a set of files and create images based on the charts.

In my few tests, it looked like it supported the standard VFP constructs including newer ones such as TRY...CATCH, etc.

But then there are the things that caught me up:

1. While it was able to scope out a 2800 line program, it took several minutes to do so. If you were working

2. I wish it had support for other VFP components such as VCX and SCX files or perhaps more importantly, project and menu files.

3. I wish it had an open API so I could write an Addin for it - that said, it does have a command line syntax so you could do one if you needed to.

There's a free demo that you can try. It's limited but does give you a good idea on how to use it.

Press release: Visustin v4 Automates Flowcharting and UML Diagramming


Add to my del.icio.us

Monday, November 27, 2006

Too bad, so zune

While there has been lots of criticism of the Zune in the past, at least some people have come out with positive remarks.

And then there's
Andy Ihnatko who notes "Avoid the loony Zune"

His prediction? dead and gone within six months! (ouch!)

His article sounds like a typical anti-drm rant except it's about a tool that was supposed to become a new level of fun.

Great article - too bad about the player.

While I don't have an iPod, I'll stick with my Windows Pocket PC. Now, I just need an 8GB SD card to hold all my music and podcasts!

Cool Way to experience different tools

I've subscribed to RSS feed for the
Giveaway of the Day site and while it doesn't happen every day, I am finding some great tools that I can use right away.

Today was one of those days. I don't have the full version of Adobe Acrobat on my systems but every now and then I want to create a PDF version of a TIF or JPG document so I can ensure people can view it. Today's giveaway was a tool called Total Image Converter. It attaches itself to the right-click menu in Windows and wow! convert any graphical image to just about any other format instantly.

Giveaway is an interesting site - every day, there's a new tool. After the 24 hours has passed, it's gone. They mention it but you can't download it again. If you download it during the 24 hours and install it, you can activate it and now you have a full functioning version of the software.

If you don't, you'll still get the unregistered version (and will then have to pay to get it upgraded) - but it's a great way to try out the full software.

Regarding the image conversion, if you have SnagIt, you can do the image to PDF conversion as well.

Friday, November 24, 2006

Office 2007 Setup Woes

So I was all set to install Office 2007 a few days ago, fresh from the MSDN download but when I first tried it , I got the "This setup is for a different language" message.

Hmph - have to redownload.

So today I finally got around to it.

Step 1 - You have to uninstall the previous beta version. (maybe MS shouldn't release real public betas anymore - I can only imagine regular users getting that message and becoming frustrated. (yes - I KNOW that regular users shouldn't be using the beta but when the habit "du jour" is to promote betas instead of releasing new products, it shouldn't be a big surprise))

Step 2 - During the uninstall, you should stop this program. Only problem? They didn't tell me what program so I had to arbitrarily decide which applications to stop. I think it may have been Google Desktop but I could be wrong.

Step 3 - Into the Install. Five minutes in - Office Setup couldn't find one of the files. Huh? I'm installing this from a FOLDER on the computer itself. And then it tells me to look in Office 10's help file. But the best part? After saying it was rolling back the changes, it then said I had to reboot. Reboot what? It didn't DO anything. I'm with Craig on this one - APPLICATION INSTALLS SHOULD NEVER, EVER REQUIRE A REBOOT. But even more so, APPLICATION FAILED INSTALLS SHOULD NEVER, EVER REQUIRE A REBOOT.

Step 4 - Restarted the machine. The Start menu said "New programs installed." Looked in the start menu and wow! There is Office 2007.

Go figure. Guess I did need to restart after all.

Maybe this is something that can be fixed BEFORE Office 2007 is available for the general public.

Add to my del.icio.us

Relationship Diagram Poll

Who said user feedback isn't easy to get?

One of the products I'm working on has a design choice to be made. It's about the types of lines that should be used to represent an inner join vs. an outer join.

Please



Take My Poll

and let me know what you think.


Thanks!

Update: Some respondees asked about other options (other than thick or thin). While I'm trying to keep it to those two, but I've updated the poll to allow you to enter your own suggestions as well.

Thursday, November 23, 2006

Hey! Estonia!

I mention this story for no other reason than it lists the country of my wife's (for whom I am absolutely unequivocally thankful) father's family - Estonia!

But hey! If they can make electronic voting work - then there's another feather in their cap (along with Nokia manufacturing, Skype and more)

Wired News: Speaking of 24-Pound Turkeys ...

Happy Turkey Day

OK , Craig called it first but to all of my American friends and family, hope you are all having a wonderful Thanksgiving.

Monday, November 20, 2006

FoxPro DevCons Around the World

First, Rick and Boudewijn (not Bernard) commented on the German devcon and then Cesar comments on the
BRAZILIAN VFP CONFERENCE - PART 1

Good to see FoxPro all over the world - now where's that Canadian one?

Friday, November 17, 2006

Remi Responds

Remi, I'm really glad you responded to my post Did Remi get it even further wrong? and helped better define what you said in your session about Visual FoxPro and the future of the product line.

I'm not going to re-iterate everything because everyone can read it and I really do appreciate it.

And I agree, MS could still do so much more with VFP if they wanted to put in all the functionality that was missing but they obviously aren't. Now it's up to us to do it.

I don't agree that everything about VFP was dreamed up over 20 decades ago, though.

But thank you for responding. Much appreciated.

Tuesday, November 14, 2006

8 Simple Rules For Developing More Secure Code

Michael Howard's piece in the online MSDN magazine is really good.

Writing secure code is one of those things that, I believe at least, very few FoxPro developers think of. In our quest for the ever extensible application framework and product tool set, the more flexible a solution the better it is.

For example, I created a feature in an application called Form Validation - basically it was custom business rules. It could be called at a variety of hooks and "someone", typically the developer or a power user, could write their own rules. Yes, we provided several templates but if there's one thing I've learned, it's that no template ever covers the real world properly. (ok, maybe not the most important thing I've learned, but it's still true).

Now some developers may be cringing right here, thinking "you let people write their own validation code". Well, yes - because this way, we can have a nice custom solution on each customer's end that is specific to their business needs. But back to security....

How secure is that approach? Where do you put your validation code? In a DBF table! Which means that if someone really wanted to screw up your system, and knew their way around a DBF file, they could do it. Here's a validation script: ERASE *.*

or better yet
DELETE FROM CUSTOMERS

Ouch! Now you could get hurt big time!

So you put in protection. Check for any strange calls, any code like ERASE or DELETE or ZAP and more.

Of course, the downside of this is that your protection may actually slow down the operation of the code. So do you disable this feature?

I don't have the perfect answer (does anyone ever?) but I do see a lot of FoxPro developers who turn a semi-blind eye to writing secure code. Sure, they put security into their application - but that is NOT the same thing.

Michael's article is a great way of just keeping things in mind as you write code.

Friday, November 10, 2006

Did Remi get it even further wrong?

I don't know why Kevin is going on about Tech-Ed Barcelona except to boil VFP developers' blood but his post referring back to Tim Anderson's post about new projects illustrates some fairly interesting points.

Remi Caron's point about FoxPro forms never looking quite right on Vista is the equivalent of saying a VB 6 form won't look quite right on Vista but then, my thought on the whole matter is that a Javascript application also won't look right on Vista.

And my own attempts at building desktop applications in Visual Studio all suffer from the same "god, it looks awful" approach as well until I go through and design around various UI guidelines. If you want to design for the new interface, you'll want to use the new tools. So do you use WinForms or WPF? The argument goes around and around. When MS comes out with Vienna or whatever is next and introduces a whole new round of UX (user experience) changes, their toolset will have to be revamped again too.

Maybe the real rule of thumb should be : don't expect any application tool to give you a Microsoft designed user interface (a la Office) without some severe tweaking.

At least, Tim was bang on with "so I am not sure that the arguments were fully persuasive. FoxPro applications will trundle on for a while yet. It is also interesting that C# 3.0 is only now getting integrated database query, which has been a feature of xBase from its earliest days"

His last comment about "FoxPro coming to the end of its life as a product under active development" has to be taken in context. "as a product under active Microsoft development" would likely be more accurate.

But wait, there's something else to be said here. For years now, Microsoft has promoted n-tier design as the ideal way of building applications. There was DNA, COM, COM+, Web Services, and on it goes. And as Toni Feltman pointed out in her Infopath article in Advisor and at Southwest, if you have built your FoxPro application with "redesign" in mind, you are also not likely to be using FoxPro as your user interface (experience) tool - but as your business layer and possibly your data layer.

If the future of user interface design is in tools like Sparkle and WPF (which is XML based), then quite honestly, I would want the best string manipulation tool around to really create awesome interfaces. And Ken Levy showed how you can use VFP to do this back as early as 2005 Devcon.

This isn't to say that if someone said "I want to build a next generation product", the first choice would be Visual FoxPro but it also wouldn't necessarily be Visual Studio, which is what gets touted at these conferences. Remember - Vista isn't built exclusively on DotNet nor is Office. The first response should be "to do what?" and then you take it from there. In many cases, developers may recommend other tools to get the job done.

For years, the FoxPro community used to complain that Microsoft was not doing enough to promote it from within. Ken, Yag and others tried their best - but as this session shows, the issue may not simply have been within Microsoft (although they are always the easiest target to point to). It's the spreading of misinformation from whoever decides to spread it.

It's hard to really say if Remi's intention was to spread mis-information. It's hard because Tim's comments may have been from his own realizations or they may have been from what Remi was saying.

And if you read the comments on Tim's post, they all bear this out. From Snorkel's comment
"Win32 applications are going to be viable for a long long time no matter what MS says. Hell, .net is just a layer on top of win32."
to Dave Crozier's note "Please don’t knock the product without being aware of its capabilities and knowing what you are talking about."

Don't shoot the messenger, in this case, Tim - and I'm sure Remi has some great skills in building database desktop applications, much gleaned from his experience in FoxPro back from 2000 - but today's Visual FoxPro is much different than that from 2-3 years ago.

Monday, November 06, 2006

Wake up call to the Fox community.

Looks like the VFP community needs to give some Microsoft PMs a good shake or at least remind others that when speakers write an abstract, they are told to try and "spice it up" and thus say as many inflamatory things as possible. Sound familiar?

Not necessarily Milind, mind you - but when they give conference sessions that have blatant inaccuracies like this "VFP suffers shortcomings in the modern business environment in areas such as disconnected data, security, mobile devices, and more" - then someone should be doing better proof reading over at the MS Teched site.

1. Vista doesn't use DotNet - not as much as everyone was led to believe.

2. VFP (FoxPro) supports Vista - perhaps even moreso than Microsoft would want, if you look at the stuff that Craig et al are doing it.

3. DotNet STILL ISN'T the best solution for everything that developers need. Don't get me wrong - it does some really cool things - but the more MS keeps on pushing, the more push-back they will get.

4. VFP can do security, disconnected data and more. (I believe this article and this article talks about) Yes - it does require some work but no more work than trying to get people to call 5 lines of code instead of 1 to do the same thing.

No - Microsoft doesn't get the extra cash they would get if people were using SQL Server all the time - but hey, you'll get more cash than if you were pushing people to Ruby or another environment.

I know this is only one speaker's session but still, it's this kind of crap that hurts Microsoft's credibility, especially in the FoxPro community.

Where is the session on converting from VB 6 to Dot Net?
Oh I forgot - Remi Caron (the speaker in question) started in Fox but then moved to VB 6 only to jump over to DotNet.

Is there a session on strongly recommending VB 6 developers to move to DotNet because VB 6 is NOT a good platform? Somehow, I don't think so but if there is, please correct me.

At least the session does note that you can stay in VFP - but "...in Vista, .NET is a pragmatic necessity for VFP developers" - that's just not true. At least the Delphi session states it more obviously - "Staying with Win32 may be viable in the short term, but not the long term."

But hey , by that time, I'm sure we'll be up to DotNet 5.0 and a whole new RNWPF (Really New Windows Presentation Foundation). Fact is - most offices still run on machines that can fly by with Windows 98 and survive on Windows XP. I really don't see Vista being that huge an impact for at least another 2 years. And yes, there will be interoperability with DotNet and Visual FoxPro - like there is today. Scare mongering from former VB developers is just a way to try and attract people to their session.

Kevin Ragsdale : Microsoft Urges FoxPro, Delphi Developers to Move to .NET

Friday, November 03, 2006

VFPX continues to impress!

While I will readily admit to being a little disheartened when I read that since the VFPY (not VFPX) uses a GPL license, I can't use any of its pieces in commercial software (since it requires that I be able to give away the source code), the original VFPX project is barrelling right along and I'm loving it.

I've already gushed about the ctl32_statusbar control, and Carlos will be working on a scrollable container but my new favorite one is the Outlook2003bar. It works like a pageframe and is very flexible. I subclassed it and pulled it into my own application in just a few minutes. (I'm going to do a screen cam of it this weekend so you can see how to get into it)

Think your VFP application can't look like other apps on the market today? Think again. The VFPX project is making things that developers used to think were difficult without ActiveX, super easy to do.

Kudos to Emerson Reed for leading up this project.

VFPX

Monday, October 30, 2006

Do you eat your own dog food or someone else's?

Adam Barr does it again with another great post, this time about the tendency to use your company's own tools instead of your competitor's, even in everyday life.

The sum up? "That's an honestly-earned win for IE. And that's the kind of win we should be targeting, not a forced switch just because." - great post.

Reading/Writing Data from a Text File: VFP and DotNet

(note: the title of this post is based on what I started to write about which is comparing functions between VFP and DotNet but then went off onto a tangent about code readability)

While I do work in Visual Studio and DotNet a fair bit, my main development environment is Visual FoxPro. One of the things that I always remember from past Devcons was when Microsoft was really trying hard to rally the FoxPro-faithful to use DotNet and ADO.Net, and even at the first DevTeach when there were a fair number of FoxPro developers, (before it turned into a Fox-less event), was the justification for the way most things were objects in DotNet and how that made it better than the single function approach in VFP.

It always struck me as a "this is the right way to do it - so switch to using this approach, regardless of ease of use" type of argument. I know it wasn't intended that way - but that's the impression I always got. And I got it again recently.

Rhonda Tipton explains here how to use the StreamReader class in .Net to read in a simple text file. Just in case there may have been an easier way, a similar approach was noted here and here.

Since I've been doing work on the Code Analyst, I'm always trying to find ways of reducing the number of lines of code in my programs and it just strikes me as crazy that the latest version of a tool actually makes your code longer than it needs to be.

For example, to write to a file using C#, the code displayed was:

StreamWriter sw = new StreamWriter("
C:/NewCompanySecret.txt");
string line = "Don't tell anyone!!!";
sw.WriteLine(line);
sw.Close();

(and this is without the various Implement statements)

compared with:

STRTOFILE("Don't tell anyone!!!","C:\NewCompanySecret.txt")

in Visual FoxPro.

Reading code:
StreamReader sr = new StreamReader("
C:/CompanySecret.txt");
string line = sr.ReadLine();
while (line != null)
{
System.Console.WriteLine(line);
line = sr.ReadLine();
}

sr.Close();


Compared with:

lc = FILETOSTR("C:\companysecret.txt")

or better yet, my favorite:

lnLines=ALINES(la,FILETOSTR("C:\companysecret.txt"))

(which makes it easier to find specific lines and make changes)

I do like the idea of having a string and doing SUBSTRINGs in them:
line.Substring(0, 21).Trim()

But it kind of reminds me of Word automation (which I also had to do recently), where you have to deal with Selection.Range.text instead of just saying ActiveDocument.text, etc.

I'm not saying it's harder or VFP is better as the functions do the same thing but it reminds me of someone who purposely talks in a strange dialect just to make it seem like they are superior, or maybe just of the Emperor's new clothes.

There are many cases (especially in frameworks) where you have to make things more complex. For example, you create a data manager class to open up files and handle it with error handling:

myData.Open("CUSTOMERS")

as opposed to simply saying

USE CUSTOMERS

So it certainly is a learning curve thing.

But I also think it's useful to look at your tools and code based on a few basic goals (not necessarily in this order):

a) readability
b) maintainability
c) functionality

Readability can be, in my mind, very subjective. ToString() certainly seems far more readable than CStr() (VB) or STR( )(VFP). Likewise a user-defined method named GetAccess() seems more usable than p0acc().

But if you have to read 25 lines of code to understand a procedure or if you have to read 5 lines, which would you prefer?

And I also would say that maintainability also comes from a code's readability factor.

As part of the Code Analyst VFPX project, I'm really interested in finding ways of making suggestions to other developers on how to make their code more readable and more maintainable. Some of the default rules can be seen here.

So join the discussion (or take the poll) and let me know - how maintainable is your code?

Monday, October 23, 2006

Is there a good reason to mark a class public?

Scott Hanselman has a great post from a presentation at TechEd2006 on building frameworks, comparing the theory behind good framework design and the reality.

What's great is he includes slides with the points on them.

My favorite? If they extend it, they will break it.

Saturday, October 21, 2006

Friday, October 20, 2006

Rick and others at Southwest

Sigh! Another missed conference - another plea for conference blogger!

And this one will be hot too - not just with the weather - but with all the cool stuff found in Visual FoxPro 9's preview of Sedna and SP2.

Looking forward to those reports guys!

Southwest Fox Starts

Monday, October 16, 2006

I was bit by a 2.6 year old Fox(Pro)

Talk about old ghosts coming back to haunt you.

I was upgrading a customer's old Foxfire! installation from version 3.0 to 8.0. They were running Foxfire! 3.0 under FoxPro 2.6/Windows.

But they had this one report that kept on crashing under the 8.0 version that would run fine under their old version.

I tried to run Foxfire! 3.0 under a copy of Visual FoxPro and it crashed there as well.

Hmmm...what could it be? I looked at the SQL generated.

There was the problem that was causing the crash: one of the relationships was referring to a field that didn't even exist.

The field in the SQL referred to a field named PART_SEC_ID_I but the real field was called PART_SEC_I.

But why didn't it crash under the older version?

The reason? FoxPro 2.6 ignored the extra fields.

I opened up the table in FoxPro 2.6.

? part_sec_i
** returned a value
? part_sec_id_i
** returned the same value.

Sheesh...I can't believe we were actually able to build quality applications back then but then again, when our tool wouldn't even tell us we were wrong in our field names - who needed field validation?

Now the fun part - how to tell someone that even though their old application worked great, it was actually not reporting a problem it should have been.

Why You Can't Close On PocketPCs

Mike has an excellent post on why Microsoft did what they did with the Pocket PC regarding managing memory. I love posts that help explain why decisions were made in software, even if you don't agree with them. And the comments bear it out.

Check it out here: Windows Mobile Team Blog : The Emperor Has No Close

Wednesday, October 11, 2006

The death of habeas corpus

I typically stay out of political matters on this blog but this article isn't a very good sign about the state of the world.

True, Olbermann typically has a razor-sharp tongue on many points but this one is further backed up by this Wikipedia article.

Considering what Canada just went through with the Arar report, it doesn't look good for basic justice anymore.

The death of habeas corpus - Countdown with Keith Olbermann

Monday, October 09, 2006

Creating Passionate Users

This post has gotten a lot attention and for all the right reasons so I wanted to re-iterate it here.

"If you knock out exuberance, you knock out curiosity, and curiosity is the single most important attribute in a world that requires continuous learning and unlearning just to keep up."

I have to say the list of traits as to why Robots make the best employees sounds scarily familiar to me. Do you know companies or developers who fit into that category?

This is why developers have to fight burn-out.
Creating Passionate Users: Knocking the exuberance out of employees

Be careful of TreeView.Nodes.Clear

As you may have surmised from my last post, we were dealing with some performance issues in a treeview when it was repopulating nodes. This is an older tip but it's certainly something to consider if you are using TreeViews. I got the tip here and it's a good one.

When the Nodes.Clear method is called, it refreshes the treeview for each node it removes.

If your treeview is small, you won't really notice it but if you have a lot of entries on it, it's really noticeable.

Here's a quick test to try
1. Build a form with a treeview on it.
2. Add 200 nodes to it:
WITH THISFORM.TreeView
FOR lni = 1 TO 200
.Nodes.Add(,"_"+LTRIM(STR(lni)),"Item "+LTRIM(STR(lni)))
ENDFOR
ENDWITH

3. Just issue a _SCREEN.Activeform.treeview.nodes.clear() in the Command window and see how long it takes for control to come back. It can be a while. (my test showed 14 seconds - YIKES!!!)

Instead, remove each node individually:

FOR lni = 1 TO THISFORM.Treeview.nodes.Count to 1 STEP -1
THISFORM.TreeView.Nodes.Remove(lni)
ENDFOR

The result? The list goes away in under a second.

Sounds like if you have a tree view in your application, you should subclass it and create a clearNodes method to get rid of it.

The other approach?

THISFORM.treeview.visible = false
THISFORM.treeview.nodes.clear
THISFORM.treeview.visible = true

Another instant result.

Writing better code in action...

Early this year, Andy Kramek wrote about Writing better code (Part 1).

I just saw an example that I thought would be worth sharing.

This system was using a treeview with two different "purposes". One was to show a list of about 10 nodes and the other showed a list with about 200 nodes on it.

When the system ran, it just seemed super slow. The first list would appear fairly quickly but then when it switched between the two, it would reduce to a crawl, even just to show 10 nodes.

Why?

The loop looked like this:
SCAN
lnRec = RECNO()/RECCOUNT()*100
Treeview.Nodes.Add(xxx,xxx,xxx)
DOEVENTS
ShowProgress(lnRec)
ENDSCAN

DOEVENTS is useful for allowing any Windows activity to refresh - so it's useful to call it - but calling it within the SCAN means it will take a hit on performance as well as the ShowProgress for every record.

As Andy notes: "Inform your users, but don’t compromise performance to do so"

With a few minor tweaks, the code now runs incredibly fast and I was able to point the programmer in question to Andy's great post about it.

As I noted last week, these are the types of things that the development environment need to be catching to make us all better developers.

Kind of like having a Peer Review happening in real time.

Thanks Andy - once again for having great tips easily available!

Wednesday, October 04, 2006

Luis makes a FoxPro Outlook Popup!

Luis Dangel shows off a great Visual FoxPro Popup Class that looks and works similar to Outlook's pop-up menu.

Yes, you can create a shortcut menu in FoxPro but this one LOOKS like Outlook's which is great.

Looks like Luis is looking for a builder to create it - myself? I think a GenMenuX Driver is called for.

Let me see what I can do on this...

Tuesday, October 03, 2006

Kevin Ragsdale's Desktop Alerts Rock

So if you have ever wanted to have alerts pop-up like they do in Outlook, Kevin's got a great screen cast that walks through how he did this in Excel. He also had his intro one back from Sept 25 - here's the link so you know what he's referring to.

Warning: the screencast takes some time to popup but it's a very effective way of showing how this tool works, including from other applications such as within Excel.

I just added some basic toolbar Alerts to my application and now I'm totally jealous. I have to redesign it as Kevin's implementation totally rocks!

Now the question is: where's the code?

Kevin Ragsdale : Screencast: Desktop Alert Callbacks

Monday, October 02, 2006

What will you do with VFPCompression ?

Craig Boyd has posted about his Visual FoxPro VFPCompression library, a tool that lets developers programmatically zip and unzip files.

While many may immediately see the benefit of using this approach for aiding in backing up files, there's another use that may not be immediately obvious.

Zipped documents for backup are nothing new but file formats that are actually zip files with multiple documents are becoming more popular. MindJet's MindManager has used a Zipped file format since 2005 (maybe even earlier) and Office 2007 will also be using this approach.

Essentially what it means is that a Word Document (.docx extension) can be renamed to ZIP and decompressed. Inside the zip file are all of the pieces required to define the Word document. You can also use Word to open other file formats as well. Read the walkthrough to get a better understanding.

But how can you use this new approach in your FoxPro development? Well, thanks to the VFPCompression FLL, dealing with the individual zip portion becomes a lot easier so now we can think of uses in applications:

1) static lists or rarely updated files can now be stored in zip files, only being compressed or decompressed on application startup.
2) memo field usage can be reduced by storing the values in a stream that is then compressed (thus, avoiding memo field bloat)
3) application core data can be backed up on startup and shutdown, ensuring reliable backups stored elsewhere
4) updates can be packaged or sent to users and automatically unbundled
5) error logs can be compressed
6) application data can be stored in a single "file format" making it easier for applications to copy data around

Do you plan on taking advantage of this method of storing data? If so, how?

Where Development Dollars Could be Spent

Markus notes that
Error Messages Drive Me Crazy and he's right. One can simply read various posts on the issues with Visual Studio to get a feel for it. Yes, it's hard to catch every bug - and fixes come along every while that help things out and the knowledge you gain on debugging certainly helps but if you're looking for things to concentrate on, as Markus notes "Giving me better error messages would remove my main productivity hurdle..."

Great post.

Rick and others are MVP'd again!

With all respect to John's list, Microsoft also does a good job of recognizing those individuals who do a lot for FoxPro, even if some of it is on the financial side of things. Just as John's list came out, the October round of FoxPro MVPs was announced and what a great list:

Rick Schummer
Alex Feldstein
Eric Den Doop

Ted's got a good list here!

Shedding Some Light: MVP'd again!

Do your bugs lurk?

Adam Barr has a great post about debugging: Software Engineering Goal: Expose Bugs Faster in which he suggests that the critical task in improving software engineering is decreasing, not the bug count, but the lurkability of bugs.

FoxPro is terrible for lurking bugs. Think of C5 errors. If you have a missing object pointer somewhere, it will generate a C5 error. but not immediately - just later on at some point in time.

Yes, we know about some resolutions to this (Don't Return Inside With), but it's a great example of a lurker.

Which is one of the reasons why tools such as Coverage Profiler and FoxUnit exist - (read Eric Sink's great post about Code Coverage). It's also one of the reasons behind my earlier work on the Code Analyst, as part of VFPX.

I'm getting ready to get started on building further betas on this (Randy Jean had asked me about it at the beginning of last month and I have been too buried to get into it). We've already got a list of some of the more basic checks to find lurking bugs (such as looking for RETURNS inside ENDWITH) as well as more cosmetic ones.

If you haven't seen the earlier versions of it, you can see a little of it in action here.

What tips do you use to catch your lurking bugs?

Friday, September 29, 2006

Usability Testing with UserVue: A mixed bag

Every developer loves to test, right? Well, ok, maybe some more than others. But when you're introducing a new product or trying out a new user interface, it's always valuable to get user feedback and see how it all works out.

Now, Microsoft and other larger companies have "usability labs", big rooms with two-way mirrors and video recorders, but this is usually out of the realm of possibility for most companies. TechSmith, makers of Camtasia, Snagit had introduced Morae a few years back which was a desktop-tool that made it easy. They now have introduced a new tool named UserVue, that offers remote user testing.

I did up a quick screencast on how it works. It's very cool, intuitive and very non-intrusive.

There's no question it's a valuable tool - but I do have some issues with it:

1. Markers are for Morae use only. I've told Techsmith about this and I will continue to harp on it. Without making markers available to the user directly from the web interface without having to use Morae, UserVue ends up being a very useful and usable but very expensive screen recorder.

2. The price. $149/month prices UserVue out of the market for many smaller companies to use it on a regular basis.

How often should you test your application's usability? Well, some would say do it during the design or testing phase and then close it off. If that's your approach then the $149 is definitely well worth it - but it does mean that you have to plan on when you do your testing. At that price, you might be better off considering free recording tools such as GoToMeeting which lets you record your sessions, albeit without the "usability testing" feel to it. But GoTo is only about $49/month.

I've used both - UserVue will get better, of that I'm sure but I also know that right now, a company needs to invest in Morae to get the full value out of it. If you aren't doing usability testing, and are building applications, it's something you need to consider. If you are, and need to find a tool that makes it easy to record "test" sessions remotely, UserVue is great - a bit expensive, but very useful.

My suggestion to TechSmith is to offer a hosted version of Morae with the $149/month or build a series of reports based on the output markers from each session. Then the $149/month UserVue becomes an even more indispensable tool for usability testing.

Without it, you're not really offering anything that's not already available for less than $149/month.

This post may sound negative but it's not - I really like UserVue and it's got huge potential. I just want to make sure that potential gets realized!

If you are doing usability testing with your applications, what tools are you using?

Thursday, September 28, 2006

Kevin is Certifiably certified!

Great idea, Kevin - Kevin Ragsdale : Get Certified... Today!

And No - it's not a misleading headline (headlines should be provocative but shouldn't be misleading)

Especially seeing as how Microsoft has stopped running certification exams for Visual FoxPro, the CVFPE is a great new program to run with.

So that would make people a PHD,MVP,MCP,MCSD,CVFPE.

Love the idea and as Kevin notes, the requirement is that you talk about FoxPro. "Recognize the fact that every development tool/language has it's pros and cons (including our beloved FoxPro)"

Wallflower, indeed.

Wednesday, September 27, 2006

Misleading Headlines Sink Reviews

OK - it may be early in the morning and maybe I'm just peeved but I'm getting tired of poor headlines. Maybe it's because you see headlines more now than ever, thanks to RSS feeds - or maybe it's Gmail's use of putting "web clips" on the top of the Inbox but I think anyone who makes a post owes it to their readers to make the headline reflect the story. Take, for example, the latest Wired News story:
Software Sinks Sansa

Then read the review. "And while my initial impression of SanDisk's Sansa e280 was cheap and nasty, it's grown on me, "

"SanDisk is the only company to present Apple with any real competition."

"But Rhapsody's interface is clean and well laid out."

"then it got ugly" - really?

The complaint? The player wouldn't play Unbox videos or anything with DRM. Hello? Most people who have tried Amazon unBox have already said "Stay away". And DRM? Well, that's not Sansa's fault - that's not even software, persay.

The final statement "I like the e280 a lot, but it's the software it connects to that lets it down."

But to read the headline, you would think that the Sansa software is what's poor. Instead, it's really the fact that DRM cripples what could be a great player.

Now, I'm all for artistic license and I appreciate the "punny" headline as much as anyone - but ...at least try to make the headline and the story match.

I'm likely being too sensitive on this issue. But it's a symptom that we see everywhere - (and I'm likely guilty of it as well with some of my headlines) - but when it's coming from a major site like Wired, it's enough to say "I just won't bother reading your posts anymore".

Monday, September 25, 2006

Craig Bailey's thoughts on life and Visual FoxPro: O07: Office 2007 Technical Refresh Thoughts

Craig Bailey gives a great rundown of features to be found in the latest Office 2007 Technical Refresh.

I'm glad he did this because while he identifies the good, he also identifies the bad (Project 2007 being hosed, among others), the ugly (Visio Startup) and the just plain "huh".

I had the beta on my laptop and unfortunately, that box lives on gmail and the web mostly so I've only had to use it a few times. One thing I hope they have fixed is their backward compatibility with Word 2003. I'm still out as to whether I'll do a full upgrade or even recommend it. As Craig notes, when some features aren't "backwards compatible so you are limited in who you can send it to" - this will really limit to how much it gets used. Microsoft should spend the resources and put together a web-based or free download tool to allow viewing of these files as they used to do. (if one already exists, then I've missed it)

Thanks Craig!

Thursday, September 21, 2006

Unblocking Outlook

Ever had one of those days when you receive email from another programmer who didn't zip his files and as a result, you get left with Outlook saying:
"Outlook blocked access following potentially unsafe attachments ..."

There's a registry hack to get around this but why bother playing with the registry when someone or something else can do it for you?

It's free and it works really well. Even shows you a list of what those extensions are listed as to make it easier.

And it automatically restarts Outlook so your changes will take effect. (this was always a pain for me because even if you exit Outlook, if you use ActiveSync, it keeps running)

Wednesday, September 20, 2006

Go NewsGator Go

NewsGator Go goes live any day now thanks to all the great work by Kevin Cawley and the other NG team.

I've been using the beta for the past few months and I love it.

No - it doesn't do everything (auto sync and podcast support) but it is an awesome way to read my posts - so much easier than viewing it on the web. I now just sync and take my posts with me and then when I get back, re-sync on my Ipaq and all the posts I read are updated.

The Clipping feature is also totally awesome.

Newsgator has been doing a lot more "business" announcements recently (their link to NBC and Newsweek is is great news for RSS) so I am very happy to see new products coming from them as well.

The downside? It's not being put into the regular Newsgator offerings. I wish it was like the NewsGator email and other items but the $30 is definitely money well spent if you have a PocketPC device and read feeds.

Now I just want to see the podcasting support that Kevin had been working on earlier. Way to go, guys!

Monday, September 18, 2006

Would you pay to see something you've already read?

Rick notes that Conference blogging catching on - which is good and then he raises good points - some of which I struggle with every time a conference comes up - mainly why not stream or record these sessions?

Conferences want to be held and have attendees. Yet, as many developers note, getting to the conference isn't always possible. As Rick notes "But if the material is accessible about half the incentive to attend will be removed and conference will completely evaporate."

This brings us to the economics of conferences. While we all like the idea of spectacles, the main reason for an attendee to be at a conference is to learn.

Does a conference have to be at a resort? No - but without one, as John Koziol pointed out, "there's no natural watering hole to gather to at night;". Also, while there are a number of speakers who are true "road warriors" during conference season, not everyone , wants to travel and live in a hotel - thus a resort makes the "pain" of travel more enjoyable.

So it's a tough call. Hold it at a resort and you have to charge a premium. Hold it at a smaller hotel and everyone fends for themselves. Many attendees I've spoken to in the past talk about wanting to hold a conference at the "nearest and cheapest hotel to the airport" - but that's usually the hotel without the necessary facilities. Rainer always does a class job with the German conference and it's usually fairly close to the airport too.

And how do you get all those speakers to a location? Advisor (and many others) pay for their speakers' travel - if the conference doesn't get a lot of attendees, the host is out of pocket. And the FoxPro community strength is in its wide breadth of speakers, who aren't just from one area but all over the world. I loved the idea that FoxForward included many speakers who have not been heard from before. Every time I speak with a FoxPro developer for the first time, I usually learn something new, be it about design, coding or even how they deal with their users. It's valuable information.

Not everyone attended the Great Lakes conference this year, so Whil offered the materials through Hentzenwerke. The issue with these materials is that it's pure reading - and there are many developers who can't get it, unless they see it.

"How can I build the great application for the web when I'm still building applications that have to run with Windows 95?"

Most educators will admit that getting someone "offsite" is a good way to learn. They can focus on the new material - although the danger is that they suffer overload (seems I heard that comment a lot from FoxForward).

The other downside is that you see so much at a conference and get inspired, that when you return, it's almost like being taken into the 25th century and then thrown back into the 3rd. And for some developers, who only get to attend ONE conference a year, they need something for those 350 days that they aren't excited about the conference. You need a way of being able to "go back to the future" every now and then.

A year ago, I got into the habit of attending lunch seminars online. It was wonderful and the attendance was fairly good. One speaker , one hour - and usually about 200 attendees. Now, there are hosting costs - but that could be a way - and then the materials were available afterwards - no white paper though. For that, the speaker actually had an "overview" paper but if you wanted more, then you could purchase an e-book. You got to "hear" and "see" the session - but you had to pay for the final piece.

So what's the takeaway here? More regional conferences? Hey, if MS can help out with OzFox Lite, could others be done the same way? (granted, MS North America typically only sponsors DotNet related developer events - something I wish they would change)

More online sessions? They can't hurt - in fact, they could help everyone get the word out on some of the best sessions. Rick alluded to the point that part of the benefit of conferences is the networking and you won't get that online - so the conference value is still there - in fact, it would almost force organizers to make the networking part even MORE part of the conference, like an Unconference - hmm...but how?

More materials? I think the age of "pure" white papers is almost gone - they need to be expanded with more useful content. I always think of this when writing an article - code is good but if I put too much code in the article, who is really going to transpose it? I want the download - but better yet, I want to see it before I use it. Yes, a lot of this material is available online - and we still need to make it easier to access. Are you paying for the written content or the visual content?

More speakers? Everyone has something to contribute - even a wallflower like Kevin. (I was one as well at the first DevCon I attended in 1991 - two years later, I was singing karaoke with Menachem).

I'm not saying I have all the answers on this - nor am I slamming existing conferences, where the organizers do an absolutely amazing job. I agree with Rick and others who say - if you don't go these these conferences, they will eventually fold. But there needs to be a way to get a similar message out to those who can't get there.

(read the comments on Rick's post to get a feel for some of the issues there)

What do you think?

Would you pay to see something you've already read?

Rick notes that Conference blogging catching on - which is good and then he raises good points - some of which I struggle with every time a conference comes up - mainly why not stream or record these sessions?

Conferences want to be held and have attendees. Yet, as many developers note, getting to the conference isn't always possible. As Rick notes "But if the material is accessible about half the incentive to attend will be removed and conference will completely evaporate."

This brings us to the economics of conferences. While we all like the idea of spectacles, the main reason for an attendee to be at a conference is to learn.

Does a conference have to be at a resort? No - but without one, as John Koziol pointed out, "there's no natural watering hole to gather to at night;". Also, while there are a number of speakers who are true "road warriors" during conference season, not everyone (ok, just me
So it's a tough call. Hold it at a resort and you have to charge a premium. Hold it at a smaller hotel and everyone fends for themselves. Many attendees I've spoken to in the past talk about wanting to hold a conference at the "nearest and cheapest hotel to the airport" - but that's usually the hotel without the necessary facilities. Rainer always does a class job with the German conference and it's usually fairly close to the airport too.

And how do you get all those speakers to a location? Advisor (and many others) pay for their speakers' travel - if the conference doesn't get a lot of attendees, the host is out of pocket. And the FoxPro community strength is in its wide breadth of speakers, who aren't just from one area but all over the world. I loved the idea that FoxForward included many speakers who have not been heard from before. Every time I speak with a FoxPro developer for the first time, I usually learn something new, be it about design, coding or even how they deal with their users. It's valuable information.

Not everyone attended the Great Lakes conference this year, so Whil offered the materials through Hentzenwerke. The issue with these materials is that it's pure reading - and there are many developers who can't get it, unless they see it.

"How can I build the great application for the web when I'm still building applications that have to run with Windows 95?"

Most educators will admit that getting someone "offsite" is a good way to learn. They can focus on the new material - although the danger is that they suffer overload (seems I heard that comment a lot from FoxForward).

The other downside is that you see so much at a conference and get inspired, that when you return, it's almost like being taken into the 25th century and then thrown back into the 3rd. And for some developers, who only get to attend ONE conference a year, they need something for those 350 days that they aren't excited about the conference. You need a way of being able to "go back to the future" every now and then.

A year ago, I got into the habit of attending lunch seminars online. It was wonderful and the attendance was fairly good. One speaker , one hour - and usually about 200 attendees. Now, there are hosting costs - but that could be a way - and then the materials were available afterwards - no white paper though. For that, the speaker actually had an "overview" paper but if you wanted more, then you could purchase an e-book. You got to "hear" and "see" the session - but you had to pay for the final piece.

So what's the takeaway here? More regional conferences? Hey, if MS can help out with OzFox Lite, could others be done the same way? (granted, MS North America typically only sponsors DotNet related developer events - something I wish they would change)

More online sessions? They can't hurt - in fact, they could help everyone get the word out on some of the best sessions. Rick alluded to the point that part of the benefit of conferences is the networking and you won't get that online - so the conference value is still there - in fact, it would almost force organizers to make the networking part even MORE part of the conference, like an Unconference - hmm...but how?

More materials? I think the age of "pure" white papers is almost gone - they need to be expanded with more useful content. I always think of this when writing an article - code is good but if I put too much code in the article, who is really going to transpose it? I want the download - but better yet, I want to see it before I use it. Yes, a lot of this material is available online - and we still need to make it easier to access. Are you paying for the written content or the visual content?

More speakers? Everyone has something to contribute - even a wallflower like Kevin. (I was one as well at the first DevCon I attended in 1991 - two years later, I was singing karaoke with Menachem).

I'm not saying I have all the answers on this - nor am I slamming existing conferences, where the organizers do an absolutely amazing job. I agree with Rick and others who say - if you don't go these these conferences, they will eventually fold. But there needs to be a way to get a similar message out to those who can't get there.

(read the comments on Rick's post to get a feel for some of the issues there)

What do you think?

Sunday, September 17, 2006

Every programmer shall have two monitors - I disagree

While I love the concept of Alex Feldstein: The Programmer's Bill of Rights, I disagree with the first point.

Two monitors? How many USERS/CLIENTS do you know that have two monitors? I deal with a partner who uses two monitors regularly. The result? A bloody pain in the butt every time I try to support them.

I agree - it's cool, it's geeky but it's NOT THE NORMAL ENVIRONMENT THAT USERS SUFFER WITH.

Yes, I said it - SUFFER - users SUFFER with their hardware. Fast - developers need it, comfortable - absolutely - but at least deal with reality.

I remember when Calvin spoke about his notebook in fairly "obvious" terms (not a slight against Calvin, more against the norm) - 4 GB RAM, this was back at the 2002-03 Devcon. Hello? His comment, I remember, ("not that much improved" - or something similar) drew groans from the crowd.

I agree - spoil your developers - but they still need to sit in the world of user reality.

Great things accomplished with Microsoft VFP

I found this from Kevin and thank you!

Here's a direct link to the success blog. If you are a FoxPro developer, you should be here!


FoxPro Successes: The great things accomplished with Microsoft VFP

Why FoxPro Survives...

Quote from John Koziol: "I also wanted to get across how seriously we took customer wish lists and bug reports. For practical reasons, we had to say "no" to 10 suggestions for every one we took. Some people over time saw this as favoritism and I always felt bad about that and wanted to set that record straight.

Finally, at the Q&A, I wanted to stress that VFP survives and thrives not because of the amount of marketing that MS does for it, but on the sheer ingenuity and professionalism of VFP developers. And that's going to always be that way. The community does not give itself enough credit, IMHO."

John - great post (hidden among other comments) - hopefully that makes a lot of things more understandable.

I remember a Devcon when one dev said "that's my ER!" - and it was a true sentiment - yes, many others may have had a similar ER - but it is truly an awesome feeling when you see your input received.

This is why VFPX exists (and VFPY for that matter) ...to ensure every VFP developer who has an idea, contributes it and works to make it real.

(reminds me...where is that Code Analyst anyways?)

John, you may feel the need to get sign-off from Milind (thank you and welcome), Calvin (thank you), Richard (thank you), Ken and Yag and everyone on the FoxTeam, but we don't - thank you for your valuable posts.

gonzomaximus: FoxForward - Day 2

Ok Markus! I get it - I have to unsubscribe

Damn it, Markus! I hate to say it but I'm loving your travel
blog.

I only hate to say it because Trish and I are locked in a home with animals that require our constant attention - but I do love your very amazing descriptions of the places you and Ellen are visiting.

I saw Pompeii's aftermath when it visited our own Museum of Civilization but I am so glad I subscribed - and those who love to hear about different places should as well (despite the title of this post).

THANK YOU.

MarkusEgger.com - Travel and International Living Blog

Friday, September 15, 2006

FoxForward Starts...

Hey there Kevin , I hope the FoxForward FoxPro conference goes well. I'm looking forward to as many live blogs from the show as possible.

Oh yeah, and everyone should take the opportunity to say Hi to Kevin and congratulate him on those awesome VFP videos! What videos? These videos.

And hey wow! There's a video as well for Southwest - wish I had seen that earlier.

Thursday, September 14, 2006

Eric Sink on Code Coverage

Another must read by Eric Sink - this time explaining the hows and why of code coverage

Makes me really wish for a good automated testing tool for FoxPro. Yes, there's FoxRunner but the UI still isn't clean enough (at least for me or my application is just too funky for it). It always seems that good automated tools like that work great for "well-architected" applications but they don't do a good job on older applications that are the ones that really need the coverage.

Wednesday, September 13, 2006

Stuart has a good Tone

Stuart's post about Tone is a great read.

After reading it, I found myself thinking of one older application I have where, indeed, it says "Your record has been saved." when the user clicks Save.

New UI design isn't just happening in Vista - it's something we can (and should) practice every day. It's not just about making the application look good, but also making it friendlier for end-users.

Tuesday, September 12, 2006

Prague Devcon 2006 Day 1 - OutFox the World!

Dave Crozier has a full report on Prague Devcon 2006 Day 1 - OutFox the World!

Thanks to David for noting this to me.

As well, you can also read Doug's posts on it.

Thanks guys - not as good as being there - but it helps.

Monday, September 11, 2006

Olaf vs. Joe

Bug Bash and Olaf

Oh I get it now.

You see - Joe's team is the regular Microsoft patch group who releases the Tuesday pathes and Olaf's team is the one who decided that when DRM was broken, Microsoft could bypass their own rules and fix it immediately.

This explains who won!


I'm just surprised that Ted hadn't reported on this yet - he's usually really quick on this.

The Tao Of Backup

Found this from Guy - after he failed to backup his MacBook - it's a great read.

The Tao Of Backup

Fox Sighting: What Next?

So now that you've spotted the Fox and downloaded FoxPro, where do you go?

I remember seeing this on a lot of different newsgroups as well when you get new MSDN subscribers or when Visual Studio.Net came out - where do I learn about FoxPro?

There are a number of places. Craig did a great set of videos about learning Visual FoxPro, Andy Kramek has a set of wonderful articles about best practices. I've put them all together on Learning Visual FoxPro.

Do you have others? Let me know and we can ensure the links get added there.

Of course, another great resource is the Wiki.

More Tips for Kevin

Rick put up some good pointers for Kevin but didn't answer one of his nightmares : speaking to an empty room.

While I can't say what it means to speak to a completely empty room, I do know that some of the BEST sessions I've attended have been sparsely attended. Why? Because the speaker said "Forget about the big screen, let's sit around and watch it on the laptop" - and between three people, went through the real content, got valuable information and the speaker got new ideas about how to make the session even better.

Yes - well attended sessions always feel good and provide lots of opportunity for feedback - but sparsely attended sessions can also be very valuable.

And of course, you can run through the material and THEN check out the other session

This is the first though that I heard about John Koziol's session - wow - that would be a must-see.

Kevin Ragsdale : FoxForward is One Week Away

Remembering 9/11

A t-shirt , a word, a picture, a memory - everyone has their own personal memory of this day, five years ago.

Preparing for my morning DevCon session in San Diego, I had decided to be up early and was working in the session room when the first plane hit.

Trish has commented on how she felt fortunate not to have seen it all happen in real time (PDT vs. EDT). I went up to our room before my session began and told her to turn on the TV. Everything was over by then - and the rest was just beginning. I would agree except that I was there in "real time", receiving instant messages from a North Carolina office and attempting to view the front page on MSNBC. I wasn't watching television so I had no view on watching the destruction until later but giving the 8am session and coming out to a hallway filled with tears, TV monitors and more was an experience I will never forget.

That Devcon was incredibly surreal - I imagine, for everyone there. Dinner in the Gaslight District a few days later, walking on the pier between the airport (where no planes were taking off) and the base where jet fighters flew by. A colleague left the hotel, not wanting to wait for a flight, and took a bus from San Diego back to Ottawa (viewing a great deal of the entire American country along the way). We waited it out and finally got home only a few days later than when we were supposed to.

Removed, yet not removed. Anyone who had been to New York before 9/11 likely felt they were there on that day. We had our honeymoon in New York years before and still have pictures showing the towers silhouetted behind us.

Lives are lost every day, many times without reason or a meaning as to why. There are those who love and those who hate. Those lives who were lost that day across the United States - and anyone whose lives have been touched by those who hate - were lost needlessly and should never be forgotten.

I've never been back to New York and who knows if I ever will be. But it is a day (as are the days after) etched into my memory forever.

Friday, September 08, 2006

Apple's design kills my own "multi-functional hand-held"

As I look over at these drawings, I went over to my filing cabinet and pulled out a rendition I had done up over 15 years ago (maybe even longer - it was before I was doing Fox stuff) of what I thought should be Apple's first "mobile" device. ( I was going to scan it but then thought better of it since Apple's lawyers would probably be all over the "Apple" logo I thought looked cool on it).

Keyboard? Who needs one. From my spec: "A speech digitizer and microphone would record users' comments for layer playback or communications with other users via modem. Microphone would be activated by pressing either of the side buttoms making it easy for both left and right handed people. Speech would be sampled allowing for clear but not stereo quality...compression similar to MACE...one pressed, a control on the screen would relay the digitized message back through the headset or a small speaker"

Oh yeah - but a hand drawn note then said "Extra jack can be used for additional keyboard"

All touch screen and the only buttons on the device would switch you into different "modes" such as modem, day timer or phone numbers.

The neat part was the three jacks : headphone, one for a radio (cellular) antenna and another for direct modem communications.

My vision was that I could record my comments, send them and then software on the receiving end would either a) convert them into text or b) just let them be played.

Total size? 6 inches by 3inches.

Wow - how the world has changed - or has it? Granted, I didn't originally think about video (which is part of what Apple is apparently revealing on Tuesday for their iPods) - and who needs a direct modem jack in this world. But everytime I hear about new patent drawings, I'm always drawn back to this old document.

The saddest thing? I have no DATE on this document. Nada - nothing - so unless I want to hire Dan Rather to do some print and paper dating, I would never be able to prove I had the idea of an "Apple handheld" first.

Ah - what the heck! Here is a quick capture of it:


I always think of all these great ideas that have come up in the past (Markus and I worked on an interactive Form Builder for within an application back in 1995) - things that were ideas that now slowly become reality. Go figure.

» Apple files patent for "multi-functional hand-held" | The Apple Core | ZDNet.com

Developer Night in Canada

Cue the tunes... The Microsoft Developer group in Canada is touring the country, mainly touting Atlas and AJAX.

Yes, the Atlas stuff may not be directly for FoxPro developers but the AJAX stuff definitely can be. I've been doing a bunch of stuff with AJAX and some COM components and it totally rocks. If you are building web-based applications, then it might be a good idea to try and attend.

The original note said they weren't hitting a lot of cities but the list currently hits 17 cities (it hits Toronto three times).

John Bristowe's Weblog : [Events] Developer Night in Canada (DNIC) User Group Tour

Thursday, September 07, 2006

Craig Asks for another call to action

Craig,

Of course with conference season upon us, one would think that the blogosphere would be PACKED with posts but sadly, Rick was one of the only ones who jumped on it.

But part of the issue I find with Tiobe is: which counts more? VFP, FoxPro, Fox, etc? As well, other tracking sites just don't do some of us justice. Don't try looking for FoxPro in technorati - it never shows recent posts from me , as well as others - despite my being one of the first FoxPro people to sign up.

Check out the posts regarding the great XFRX tool.

But on a more serious front, what can one do?

1. Add your posts and links of interest to del.icio.us. It's a free tagging service and it does increase buzz (which is really what TIOBE is all about)

2. Post any and all of your thoughts on the matter. I will bet that 90% of FoxPro developers are a lot like J Osborn who may feel a bit guilty, but has the right idea about posting about what they're doing.

3. User group members : BLOG about your meetings. It's not enough just to put it onto FoxCentral - tell us what happened (even if it was Vista blowing up). UGs do a great job of advertising their meetings but not enough about what went on. I can appreciate it's part of the reason for the memberships but there's a lot to show and talk about these days.

4. Podcasters: Where are your podcasts? Oh, yeah, that's me. Sorry - been really busy - no excuse for sure but it's the truth...

5. What? You aren't blogging? But you have time to tell "real" people about the joys of working in FoxPro? Tell it aloud. There is not a single developer

6. So now, I have to say : Bob Kocher and Kevin Cully - your conferences are right around the corner. I hope the WiFi is blasting and the laptops are out, blogging away.

What else can be done?

Tiobe Again

Facebook Revolt - imeem alternatives?

When Scoble noted how Facebook under major revolt , I immediately thought of a site I found yesterday. The value offered by Facebook's feeds however do seem very cool - if only they had been smart and made them opt-in, instead of opt-out.

I have been impressed though with Facebook's opening of their API's - they certainly get it that they need to open it up to developers.

I haven't really explored this other site, beyond my first look. In some ways, I think the whole social networking site thing is just silly , but this site (imeem) definitely showed some value.

I could find music (as posted by the artist), it worked in Firefox and it allowed people to rank, add to delicious and more. And when I'm looking at someone, I can see what they're up to (or rather what they allow us to see).

Anyways, you may want to check it out.

Wednesday, September 06, 2006

Using BINDEVENT to ease FoxPro Grid issues

BINDEVENT is one of those great FoxPro commands that you never think of until you need it but when you do, you really appreciate it and you'll want to immediately refactor your code (hmmm- this sounds like a good Refactoring rule for the Code Analyst).

I was updating a client's older VFP system that used a lot of grids with RightClick methods. Lots of older programs do the same thing: putting code directly into the rightclick method of each columns' Text1 control. It's a real pain later on - especially if you ever reset the recordsource (which rebuilds the columns from scratch). In addition, if you use Page Up and Page Down to scroll through the various pieces of code, you get to see each individual column's method, which can get very tedious if you have a lot of grids.

Now, when you use BINDEVENT, it's a lot less code and a lot easier to manage. I put the actual rightclick code into a method either on the form or grid and then just do:

FOR EACH loColumn IN THIS.Grid.Columns
BINDEVENT(loColumn.text1,"Rightclick",;
THIS,"ColRightClick")
ENDFOR

When the user right-clicks in the grid, it calls the ColRightClick method.

Is this easier than putting THIS.ColRightClick() in each Text1 object? Maybe not if you only have two or three columns; but most of the grids I work with have lots of columns. Using this approach means I can keep my code OUT of the grid's columns and accomplish this in only three lines of code.

Friday, September 01, 2006

Thank you Rick

Rick Schummer did a great job covering the FoxPro DevCon and you can see all of his results here.

Shedding Some Light: Advisor DevCon - Wrap up

Day 3

Day 2

Day 1

Hope you have an awesome Labor day and thanks again!

Short of streaming or podcasting the event, this was great.

On a DevCon note, I was kind of sad about the turnout - I heard from an attendee that he felt it was kind of depressing because in the past, DevCons were where you could see all the new cool stuff. Now with VFPX and Sedna being "transparent", many developers had already seen it.

I'm of mixed thoughts on this - I would hope that MS pulled out a little bit more "cool stuff" but then after reading Craig's thoughts on TechEd, maybe not. I always look at Devcons as being about the enthusiasm and from the sounds of it from Rick's posts, many of those FoxPro sessions had it.


Thanks again, Rick!

Tuesday, August 29, 2006

Rick Sheds light on the Advisor Summit

Thank you Rick for listening to my call (and others) and being the first blogger up talking about the FoxPro conference.

Wow! only about 120 developers there - too bad, it sounds like the content is A1.

Must have something to do with the cost ($2,000) - there's always Southwest ($595) or FoxForward ($500)!

Shedding Some Light: Advisor DevCon - Day 1



Add to my del.icio.us

Friday, August 18, 2006

iPhoto vs. Movie Maker?

I read this post on PresentationZen and was left wondering after viewing the output (very nice slideshow by the way), what does this have that Movie Maker doesn't?

I have been doing identical types of movies with Windows Movie Maker for the past two years. But now the real differences start coming out. It should be easy but Anil hits it on the head. Microsoft seems to enjoy making things difficult. I had to install SQL Express for a client. Was that an experience. Thankfully, Rick noted that you have to turn ON Remote connections and even then, it was a mess of too many clicks. At least I didn't have to restart it.

But also the name makes all the difference. Microsoft's naming conventions kill me. I can never find Internet Explorer 7 Beta in my Add Programs control panel. Why not? Is it called Microsoft Internet Explorer 7? How about just Internet Explorer 7 - no it's called Windows Internet Explorer 7. Which is weird - because when I run it - it says Internet Explorer.

I could go on and on.

So what tool would you rather use? One called iPhoto or one called Windows Movie Maker. I use Windows - I get the fact that a program I'm using is going to work under Windows - why put it into the title?

I guess it fits with the "Live" option as well. Everything from Microsoft used to say Microsoft, then Windows, then MSN and now Live.

Apple on the other hand just puts an "i" in front of everything. Maybe MS should just put a "w" instead - although trying to explain how to pronounce wMovie might be tricky!

Go figure.

Buzz on a Plane - very funny

Ok - if you haven't checked out CNET TV yet, check it out today because the Buzz Out Loud crew went to an AMC theatre late last night to check out the opening of SOAP . And to make it even better, they even finished off their Video cast with the same fun stuff they do at the end of their podcast. Although nothing was funnier than the take-off of "How the Gromey stole Spectaclefest"

CNET TV

Thursday, August 17, 2006

PowerPoint vs White Papers

Rick noted that he had to get his materials ready (right after announcing the winner of the Southwest Fox Scholarship winner - congratulations Dan Taylor!) and it reminded me of this post on Presentation Zen.

Now I will be the first to say that I often use PowerPoint too much and I have tried incredibly hard in the past few years to only use it as an enhancement for presentations, rather than the main focus - (thanks to Beyond Bullets).

However, if you are one of the great speakers getting ready for your sessions at any of the upcoming conferences, read this post. In the tech world, we tend to take for granted that Powerpoint can be useful way of getting across a point and then throw up some code to show "how to get it done" - but would you want your military doing the same?

This is a great read - I almost hate to quote an entire paragraph but it gives you an idea of what's in the post.

Bad presentations are one thing. They are certainly a waste of time (that's perhaps the least harm they do). But even in the worst of presentations, if we really need to know the answer to something we could interrupt or ask the question during the Q&A. With documents and handouts, of course, we have no such luxury. If a document is poorly designed and poorly written, where do we go to get a clarification? And if the document is crucial — even a matter of life and death — is it not paramount that the document be easily searchable with the appropriate depth of data and information? At no time should the reader be saying to themselves: "WTF!— what does this %#@*! mean?!!!"


Presentation Zen: PowerPoint printouts used for communicating battle plans?

Wednesday, August 16, 2006

Bernard Bout : VFP is very very cool

Although I HATE the fact that his site is using only partial text feeds (which almost makes me want to unsubscribe), Bernard does it again with his "Smoke and Mirrors" post in which he shows how to achieve a very cool transparent user interface all done within FoxPro.

Bernard Bout : VFP is very very cool

Another reason to go to FoxForward?

Kevin just announced that Darrell Gardner will be presenting at FoxForward, discussing project management for developers.

Thursday, August 10, 2006

EULA trumps fair use

This doesn't bode well for Circuit City's new initiative.

Apparently, backing up software isn't allowed if the EULA prevents it. At least in Califoria. Well - that explains that. Nothing is allowed in California.

Can a EULA trump fair use?

Gia tells everyone to take a walk!

Sunshine is one of my favorite blogs. It was started for a new sci-fi movie coming out called Sunshine and as a result, is all about the sun and the solar system.

From asking people about what "sun" songs they liked, to interesting trivia, it's never short on great posts but this one *almost* made me get out of the office.

To quote: Doing a Solar System walk is a seriously, seriously cool thing to do, especially with kids… but whenever I’ve done it with adults they’ve all been completely blown away by it, even more than the kids. Unless you do something like this you have no concept of just how huge the solar system really is.

PC Guy tells Mac Developers "Take the year off"

Ted pointed to the WWDC Keynote but he didn't mention this absolutely hilarious "intro" by "PC".

What's particularly nice about this little clip is how good it looks when you have a video clip of a speaker in a pure white room. No - it's not an "on the street" type video - but it's a good way to keep the focus on the main message. Check it out:

WWDC Intro Video

Fight, Never Surrender or Fight Never, Surrender

Years ago, a teacher told our class how Caesar could have lost a battle because of the placement of a comma. (of course, they neglected to tell us it would have been in Latin which means the point would have been lost but that's up to teachers and badly educating people) - but the point was never lost on me.

I'm a stickler for good punctuation (errors in blog posts aside, of course ) but I saw this story on RocketBoom and wanted to follow it up. Burt Rosen would likely find the humour in this, since I was beating him up on some comma issues in some user docs recently.

The statement?
The agreement “shall continue in force for a period of five years from the date it is made, and thereafter for successive five year terms, unless and until terminated by one year prior notice in writing by either party.”

I read this - and I agree with the CRTC - I can cancel this agreement with written notice by one year. But Rogers wanted to ensure they couldn't cancel in the first five years.

Poor Rogers - this little gaffe will cost them over 2 million dollars. A few years ago, that would only be 1.5 million US - nowadays, it's getting pretty close to the same amount in US as it is in Canada.

globeandmail.com : Comma quirk irks Rogers