Wednesday, 06 December 2006

UML Sucks (Really!)

I recently received a comment on my blog about a comment I made on another blog.  Ain't the Internet great?

Here's the response I sent:

Hello Nick,

Thanks for alerting me to the need for a contact link on my blog. :-)

While I don't use UML, and neither do any of my coworkers, I have mixed feelings about the need for it.  It seems perfectly reasonable that we should agree as an industry on a common set of symbols to represent OOP concepts, but UML has a typical "design by committee" feel. 

In his comments to the "5 Books" post, Jonathan Allen brought up something that I was aware of,  but never expressed precisely.  He said that the object model is the most malleable part of the design.  This is absolutely true.  This is actually the conceptual basis for iterative, agile practices.  The most critical aspect of the initial design, in my experience, is the interface between the UI and the object model.

While changing the UI is frustrating for users, it is not a technical challenge.  Refactoring the middle tier requires discipline to avoid introducing errors, but should not affect other parts of the system.  It is a well designed interface contract that makes for an extensible system.  This is why SOA with its service contracts is appealing.

Unfortunately, UML doesn't address interfaces (or at least poorly addresses them).  It seems obsessed with minutiae in a parody of academic distraction.  The only time I see UML in my daily development is in technical books and articles, and even then a Visio diagram would usually work better.

With regards to your objective of developing "ways to improve UML interaction to be more practical," I encourage you to ignore UML initially and define your problem clearly.  It seems to me that the problem does not involve UML, but the need for communication between developers, sometimes from different cultures, and on separate continents.  You are most likely interested in the visual display of information as it pertains to object oriented analysis.

If I am correct in my assumptions, then I do have some resources to recommend.  As I mentioned in the blog comment that you referenced, Peopleware is essential reading for understanding the human interactions surrounding software development.  For understanding objects, and by understanding I mean grok in fullness, I have found nothing better than The Object Primer.  Finally, when it comes to the visual representation of information, there is only one person you need to study, and that person is Edward Tufte.  Tufte makes mincemeat of systems such as UML.

If you are looking for a software solution to capture design ideas, then you should be familiar with mindmapping applications such as Mindjet or FreeMind.  I also have begun using Microsoft OneNote and have found it useful.



 Tuesday, 07 November 2006

Please Don't Name a File Setup.exe

After doing all the downloading from my previous post I have one big request from the software development community.  Please don't name your install file Setup.exe.  Try instead Setup<Application Name><Version Number>.exe or some varient of that.

I just downloaded the Windows SDK and the file was named setup.exe.  I download all files to the same directory, and decide what to do with them from there.  I don't want to have to rename your file in order to prevent it from overwriting another file with the same name.

While I'm on this little rant, I'm tired of iTunes always downloading with the name iTunesSetup.exe with no version number.  It seems rude to me for Apple to assume users want to overwrite the previous version they downloaded, and thus lose the ability to roll back to a previous version if they don't like the upgraded "features."

Thanks, and have a nice day.


Free Directory Sync Software

A co-worker asked me yesterday if there is a way to use Kdiff3 to synchronize directories similar to BeyondCompare.  I briefly attempted this task in the recent past without success.  It turns out that it can be done, but I went on to look for dedicated file sync/backup software.  Here is a list of what I found:

Whew!  This is obviously a common user need.  I wonder why it isn't baked into the operating system, or if it is, why it isn't more easily discoverable.  I have not evaluated all of these (I've wasted enough time finding the links and making this post :-)), but I have launched all of them that do not require an install.

I'm currently using SyncBack to back up files between an external drive and my local disks.  It is polished, and meets my needs.  Feel free to try the others and post your experiences in the comments.


 Monday, 02 October 2006

Oh, so that's what it takes...

For the past six years, I've been watching the national political debate with fascination and disgust.  I find the "Cult 'o W" stickers especially fascinating.  I wonder how far some of these folks, my friends and neighbors, will go in support of authority and conformity.

This past Thursday I was truly and honestly depressed.  I am a student of history and a patriot.  I love this country and its founding principles.  I have never found evidence of a society with more freedoms and opportunities for a population as large and diverse as the United States of America.

Last Thursday, the Senate voted to dispense with protection of our freedoms guaranteed by the constitution in preference for a more monarchial concentration of power.  I was disgusted.  I wondered if there were any patriots left in Washington D.C.  I again wondered how far people would go to maintain membership in the cult.

Friday, we got the answer to my query.  People are naturally parents first, and Republicans (and Democrats) second.  The cover-up of the sick, predatorial behavior of one congressman has shown the threshold for blind conformity and rationalization.

Michele Malkin is just to the left of Anne Coulter, who in turn is just to the left of Attila the Hun.  Ms.  Malkin is in my estimation a crackpot.  Even she had this to say about the Foley scandal:

There is a time and place for attacking the Dems and the MSM. Now is not that time. Parents need assurance that their kids are safe on Capitol Hill. If Beltway GOP elites can't understand this, they are beyond hope.

I couldn't agree more.

Lest I think that humanity has triumphed, Matt Drudge is around to remind me that some people have no integrity, but only want to be liked by whomever they consider to be the "cool kids."  Here are his truly disgusting remarks on the Foley matter:

And if anything, these kids are less innocent — these 16 and 17 year-old beasts…and I've seen what they're doing on YouTube and I've seen what they're doing all over the internet — oh yeah — you just have to tune into any part of their pop culture.  You're not going to tell me these are innocent babies.  Have you read the transcripts that ABC posted going into the weekend of these instant messages, back and forth?  The kids are egging the Congressman on!  The kids are trying to get this out of him.  We haven't got the whole story on this. 

There you have it, these teenagers were asking for it.  It's their own fault.

To the rest of my countrymen who are as genuinely appalled by the cover-up of this horrible man's actions as me, let's work together to make this a country our children can be safe in.  While we're at it, let's make it a country they can be proud of too.  I would be proud to work with any other American to make that happen.



 Thursday, 21 September 2006

Next time, tell me something I don't know!

Pure Nerd
78 % Nerd, 34% Geek, 26% Dork

For The Record:

A Nerd is someone who is passionate about learning/being smart/academia.
A Geek is someone who is passionate about some particular area or subject, often an obscure or difficult one.
A Dork is someone who has difficulty with common social expectations/interactions.
You scored better than half in Nerd, earning you the title of: Pure Nerd.

The times, they are a-changing. It used to be that being exceptionally smart led to being unpopular, which would ultimately lead to picking up all of the traits and tendences associated with the "dork." No-longer. Being smart isn't as socially crippling as it once was, and even more so as you get older: eventually being a Pure Nerd will likely be replaced with the following label: Purely Successful.

Now it's your turn. :-)



[UPDATE]  I found this test, and only scored 72.

I am nerdier than 72% of all people. Are you nerdier? Click here to find out!
 Wednesday, 20 September 2006

FoxForward Conclusion

I skipped morning sessions on Saturday so that I could prepare some changes for my demo that my coworkers recommended.  I did make it to lunch, however.  <S>

In the afternoon, I saw David Stevenson's sessions on the CursorAdaptor and XMLAdaptor respectively.  David showed some interesting functionality he had implemented in his CursorAdaptor subclasses.  I'll need to wade through the code to fully absorb what he showed.

David's session on the XMLAdapter started as I would have expected, comparing XMLAdapter functionality with CursorToXML() and XMLToCursor().  Things got more interesting when he began working with the XMLTables and XMLFields collections directly.  By the end, he was loading schema-less XML with embedded elements and showing us how to use Xpath statements to map this format to related cursors.  This tip alone is worth the price of admission to this conference for any developer who has spent his time trying to solve the conundrum of emended elements without foreign keys.

Saturday evening at the Ale House I tried a delicious local brew called a Sweetwater420.  I also had a great time talking with other attendees.  I especially enjoyed meeting Ed Leafe.  Ed is the author of the Business Object base class in CodeBook.  I have spent many hours studying that code and learning from it.  It is satisfying to have the opportunity to thank someone in person for helping me along my way.

While we were talking at dinner, I was reminded that Ed is the source of one of my standard practices.  It was in Ed's code that I first saw the GarbageCollect() method which NULLs out any properties with values of VarType = "O".  These days I use Bindevent() to bind destroy to my CollectGarbage() (renamed to fit the coding standard :-) ) method in my base classes.  orphaned object references are one of the most frustrating problems to debug in FoxPro, and this simple fix removes them forever.

Next I moved to Craig Boyd's booth, because I hadn't had the opportunity to do more than introduce myself to him.  Craig is a passionate guy, and we got into a discussion of the FUD (fear uncertainty and doubt) being spread by some parties regarding Visual FoxPro and .NET.  I love these type of discussion.

Sunday morning was showtime for me.  I spent the morning testing my demos one more time.  Saturday night, I discovered a bug involving spaces in a file path, so I felt it was prudent to test everything one more time.  Although my session was sparsely attended, the audience seemed truly interested, and actively engaged.  I enjoyed this session, even though I was the presenter.

After my session was lunch, where I won a VFP hat!  I spent some time on the back patio listening to Ed Leafe and John Koziol swap stories about conferences past, and ask each other "where are they now" about members of the VFP developer community.  This was a nice bonus.

The last two sessions, for me at least, where Craig Boyd's discussion of cryptography, and Bo Durban's discussion of the new GDI+ classes from the VFPx project.  These were both awesome sessions.  I already use Craig's vfpencryption.fll in my work, and he showed me many new uses for it.

I've been working with GDI+ lately using both the flat API, and the VFP foundation class.  Bo's session showed me that I need to stop wasting my time and focus on the VFPx class library.  There is more in there than I can possibly relay.  Bo had a nice interface to launch samples and then show the code.  When I got home, I downloaded that library and found that the form Bo used is included in the .zip file.  In fact, there is a .APP file you can run and see most of what I saw without driving to Atlanta.

The biggest surprise to me was that the library included a class for accessing resources in uxtheme.dll.  I have seen several attempts by VFP developers to produce custom controls that reproduce the visual style of Windows XP.  The problem with every implementation I had seen before, was that they mimicked the default blue theme.  If the user ran a different theme, the Visual FoxPro control would not display the new visual style.

By documenting the API to uxtheme.dll for VFP developers, the VFPx developers have made this issue a thing of the past.  I have already begun implementing a Theme Explorer UI in the style of the VB app that pointed the way for the VFPx team.

Speaking of VFPx, an audience member offered to help work on one of my proposed Team Foundation Server tools after my session.  I told him I would speak to Craig about putting it in VFPx.  Craig told me where to find the application form.  I've since submitted my application, and I hope to be contributing to VFPx soon.

In summary, I think Kevin Culley did an outstanding job of putting this conference together.  I predict that in the coming years there will only be two VFP conferences worth attending.  Southwest Fox in the West, and Fox Forward in the East.  I know I'll be back next year.


 Saturday, 16 September 2006

Fox Forward Day 1

Fox Forward 2006 - Alpharetta, GA USA - September 15th-17th

A coworker and I drove down to Alpharetta, GA Friday afternoon.  We arrived only 20 minutes late for the reception, despite the best attempts of Atlanta traffic to make us later. :-)

The hotel is comfortable, with large rooms; no complaints.  At registration, I met Kevin Cully who organized the event.  He reported that he had 55 attendees registered.   That was good news to me.  For a first time conference on a niche topic such as Visual FoxPro has become, that is a respectable level of interest.

After my first beer... er, I mean after the reception, I attended Bo Durban's session on Creating custom report controls and customizing the report designer.  This was an eye-opening session for me.  I have not touched a VFP report since VFP 9 was released, so I hadn't seen the COOL new features available from the report listener class.

Bo showed us how to hook into the report rendering to draw directly on the report with GDI+.  Next, he showed us how to use GDI+ to completely replace a shape on a form with whatever we want.  Bo demoed replacing with Rich Text, and an ActiveX control.  I told Bo he got me excited about reporting, which I never expected.

The keynote was given by Craig Boyd.  I've read Craig's blog for over a year, and knew to expect an enthusiastic advocate for VFP development.  Craig delivered in spades!  VFP World Domination was a 75 minute cheerleading session about the power and potential of the Fox.  I left the session very fired up about what is possible with this tool. 

Craig showed off several of the tools and examples he has created.  He is a terrific resource to our community.  One of his examples gave me a possible solution to a tool I have been contemplating.

Following Craig's keynote, several of us went to Taco Macs for "refreshments".  I am thrilled about this conference, and very honored to be allowed to speak on Sunday morning.


 Thursday, 14 September 2006

Cool new TFS Extension

Bernardo Heynemann has put together the beginnings of what I'm  sure will turn into a popular extension to Team Foundation Server.

Project BHAL merges Windows Workflow Foundation with TFS work item tracking to allow an organization to define a custom workflow tuned to their particular environment.

I have had requests for similar functionality, and I have written custom webservices to fire on certain WIT events.  This approach is very attractive, because it allows for much more flexible configuration.

In a recent DotNetRocks episode, Joel Semeniuk was bemoaning the lack of exactly this sort of feature in the current version of TFS. 

Good on ya', Bernardo!  I hope I can contribute once I get my production process template deployed, and all the users happy. :-)


 Friday, 08 September 2006

It's Official, Scott Hanselman Rocks!

Yes, I love his tools list.  Yes he solves problems so fast it impresses people smarter than me.  But today, I learned that Scott is a really nice guy.

This morning I noticed that he had truncated his posts in his RSS feeds.  I posted a whiney comment on his blog, and I just received this email:

Thanks for the post! I turned it off. I am just struggling with folks mirroring my entire site. Sigh.

Scott, you are an asset to our community man.  Rock on!


 Thursday, 07 September 2006

More TFS Power Toys

On yesterday's chat with the TFS team, I asked for details about the upcoming new TFS Power Toys.  The answer was that details would come out soon.  Soon in this case meant 24 hours!

Brian Harry has the details.  Let the downloads begin.