Monday, February 26, 2007

Curious as it sounds, Microsoft's open source lab has published an article on how to install and configure PostgreSQL on a Windows Server system.  This is very interesting, considering how PostgreSQL can be considered a competitor to Microsoft's own SQL Server 2005.

For those of you not familiar with PostgreSQL, it is an open-source, industrial-strength relational database with most of the features you'd find in a mature database server.  It has triggers, stored procedures and views, and can handle a variety of stored procedure languages, including Java, PHP and Ruby.  On the client side, PostgreSQL ships with both OLEDB and a .NET data providers.  One of the fascinating features of PostgreSQL is its ability to have inherited tables.  I can see where this could dovetail with OR mappings for subclasses.

posted on Monday, February 26, 2007 9:43:05 AM (Central Standard Time, UTC-06:00) by Christopher S. Velazquez
 Sunday, February 25, 2007

I did an overhaul on the look of my blog because I had an actual visitor from the outside world.  I feel like Sally Field winning the Oscar: "you like me, right now, you really like me!"  If figured I'd give it an extra touch of CSS geekiness.  I hope you like it.

Apparently, Internet Explorer doesn't like it very well.  If you scroll down the page, the size of the DIV elements changes for some entries when you use either the scroll bar or the mouse wheel.  This is just plain bad.  I know that MSIE 6.0 had this problem, but they still haven't fixed it yet?  What's up with that?

Here is what it is supposed to look like:

And when MSIE 7.0 messes up it looks like this:

Notice how the space is too wide and the subject title is stuck in the margin.  Scroll one more notch and it's OK again.  Send this one back!

BTW, the blog looks just fine in Firefox.

posted on Sunday, February 25, 2007 5:58:00 PM (Central Standard Time, UTC-06:00) by Christopher S. Velazquez
 Friday, February 23, 2007

I just came across an article from Jakob Nielson's UseIt.com web site concerning Weblog Usability.  I figure I should go ahead and take the test and see how my own blog stacks against the ideals of the guru.

Top Ten Design Mistakes in Weblogs:

1. No Author Biographies - Not guilty

I have my real name and some real info about myself in the "What's this?" box to the right.  If you visit my home page, you can even download my resume.

2. No Author Photo - Not guilty (anymore)

Yes, I have posted an unflattering, but honest picture of myself.  I do have a nice picture of myself that was taken at my wedding by a professional photographer almost 17 years ago.  I don't think I can really use that, though.

3. Nondescript Posting Titles - Not guilty

I just barely squeaked by on this.  I try to title each blurb accurately, and when I'm in a playful mood I may throw in a double entrendre, such as "Nutty Warnings".  Some titles are lame, I admit it.  I throw myself on the mercy of the court on this count.

4. Links Don't Say Where They Go - Not guilty

This is classic Web 101 fare.  Search engines look for this; SEO depends on it.

5. Classic Hits are Buried - Guilty

The dasBlog software doesn't lend itself to breadcrumb navigation, and I have been too busy/lazy/apathetic to do anything to about it.  I don't have any real "hits" because I have so few readers that it probably doesn't matter.  I'll get off with probation on this.

6. The Calendar is the Only Navigation - Not guilty

I do add categories to each blog entry, honest, officer!  Once again, I'm at the mercy of dasBlog on this one because it show categories in a linear fashion instead of a hit-based or frequency-based heuristic.

7. Irregular Publishing Frequency - Guilty

I have not made a serious attempt to publish regularly, even though I can write quickly.  As they say in the Holy Grail, "I'm getting better".

8. Mixing Topics - Guilty, Guilty, Guilty

The fertile crevices of my brain are aching to explode with information to tell the world.  While I do try to keep the topics programming-related, I suffer from ADD of the fingers.  What was I writing about, now?

9. Forgetting That You Write for Your Future Boss - Hung Jury

I have deliberately refrained from including profanity and NSFW content from my blog.  So I get a silver arrow point for that.  Some people might be offended by my cheeky humor and unabashed assessments.  If that's the case, then they have a problem with my personality.  One of my criteria for accepting a new position is that I can get at least a chuckle during the job interview.  If my boss has no sense of humor, chances are he will melt down or blow up during a difficult situation, which will make my own life miserable.  So I guess in a way you can say that I am writing proactively in self-defense.  Yeah, that's it.

10. Having a Domain Name Owned by a Weblog Service - Not guilty

Oh, c'mon!  You can't spring the $7 a year it costs to have your own domain name?  Personally, I'm helping fund Bob Parsons' kids' college education.  But let's not go there.

The Verdict

Cleared on six counts, found guilty of burying the evidence, negligent publishing, and crossing the center line of my weblog.  I am hereby put on probation and required to attend a defensive blogging class as well as blogger sensitivity training.

Now, how well will YOUR blog stand up?

 "I'm vahtching you"
posted on Friday, February 23, 2007 4:15:32 PM (Central Standard Time, UTC-06:00) by Christopher S. Velazquez

Last night, I was enjoying one of my favorite snacks, peanut butter on a spoon.  Not the salmonella-infested peanut-flavored Crisco that you buy at Wal-Mart, but the good stuff: organic natural creamy peanut butter with nothing but peanuts and salt.  And I looked at the label and saw the following warning: "This product was manufactured in a facility that processes nuts".  Now I know the placement of this absurd warning has something to do with legal liability, otherwise it would make sense.  This bears a certain similarity to the way we handle homeland security in 2007.

What would the world look like if we put these warnings on software?

  • Windows XP Installation disc: Warning: this disc contains an operating system that is capable of executing coded instructions and may be susceptible to malicious activity.
  • Microsoft Excel: Warning: Errors in formulas and macros may lead to incorrect results.
  • ActiveState ActivePerl: Warning: Improper use of the Perl programming language may result in incomprehensible gibberish.
  • World of Warcraft: Warning: using this software to excess may deteriorate your social life.

In a sense, I guess that's what the modal dialog box was created for.  Sometimes you actually do need a warning if there is a side effect to the desired action.  If I want drop a database table, I want to know before I clobber a bunch of related stored procedures and program code.  More often than not, though, it is for some patronizing reason that we "interrupt the proceedings with idiocy" (as Alan Cooper puts it).  "We can't just let the user do that", I've heard from marketing types.  I recently had the displeasure of executing an old VB app that someone had written.  It always prompts with a modal dialog whenever one decides to change MDI child windows.  Why?  The data had already been saved in the database - you could reboot the computer and the data would still be available.  These dialogs were totally unnecessary.

The key to avoiding dialog boxes ad nauseum is reversibility.  Any action needs to be undoable, or a group of actions taken as a whole need to be undoable as a group.  While at Conic Systems (now Tadpole Technologies) our software implemented an "Undo Stack".  This was a pretty sophisticated approach for the 1990's.  You can use a design pattern called "Command" to partially implement this.  Unlike the IDbCommand implementers in .NET, a good Command object has the ability to reverse itself.  You place all the Commands on the undo stack, so the user can undo anything.

Undo a database record - Make sure the command object has all the information it needs to perform the delete after add, the add after delete, and the data from changed field values.

Undo a file deletion - don't delete files!  Rename them and send them to the Recycle bin programmatically.  That way you can get them back upon undo.

Undo a graphical operation - use the State pattern to incrementally change the state of the drawing surface and roll back to the previous state.

OK, enough of my soapbox rant.  I don't care if people think I'm nuts.

posted on Friday, February 23, 2007 8:46:39 AM (Central Standard Time, UTC-06:00) by Christopher S. Velazquez
 Thursday, February 22, 2007

And sadly, that woman was not Grace Hopper.  The winner of the coveted 2006 Turing award is none other than Fran Allen.  No, I've never heard of her either.  Apparently, she has been a lifelong IBM software engineer, and her accomplishments include, uh, er, something to do with optimizing compilers.  She is apparently the head of many different computing organizations and has spent a great deal of time teaching classes as an adjunct professor.  This reminds me of the adage, "those who can, do, those who can't, teach".  I'm at a loss to explain why Ms. Allen was selected to win the Turing award, other than she is an aging female software engineer, and she is still alive to receive the award in person.  She didn't even have an entry in Wikipedia until a few days ago, what's with that?

It's my opinion that if the ACM wanted to give this award to a woman that badly, they should have honored Grace Hopper posthumously, with her family receiving the prize.  Hopper had a major impact on the world of computing, with the invention of the COBOL programming language, and this impact was felt most forcefully as we approached the year 1900.  COBOL has always been the de facto standard for big-iron mainframes that crunch data in back offices that are impervious to its stench.  And to prove the point that people will actually pay money to romance a pig wearing lipstick, Fujitsu is keeping the corpse alive with NetCOBOL for .Net.

So I give my personal award for best lifetime achievement to a woman in the IT industry to Grace Hopper.  If it weren't for her contributions, we may still be using a variant of RPG or PL/I.  Nuff said.

posted on Thursday, February 22, 2007 3:09:58 PM (Central Standard Time, UTC-06:00) by Christopher S. Velazquez
Evolution of the Programmer.  The evolution of the "Hello World" program from high school (in BASIC) to master programmer (as a C++ COM library) and then through management.

posted on Thursday, February 22, 2007 11:46:25 AM (Central Standard Time, UTC-06:00) by Christopher S. Velazquez
 Tuesday, February 20, 2007

You've seen Google spreadsheets and online word processing.  But how about Visio diagramming?  Introducing Gliffy, a free service for drawing diagrams reminiscent of Visio and sharing them online.

Here's one I tried.  It's not quite up to Visio standards, but not far behind either.

 

posted on Tuesday, February 20, 2007 5:27:28 PM (Central Standard Time, UTC-06:00) by Christopher S. Velazquez
 Friday, February 16, 2007

Well this has been a slow news week.  No astronauts went ballistic this week, and the hype over the death of what's-her-name is over.  The usual body count from Iraq and our casual acceptance of new encroachments by Big Brother just aren't news anymore.

Garfield, eat your heart out

So I guess I'll just introduce my beloved cat, Spot.  We have three cats, but Spot is decidedly "mine"; she often hangs out on the gate waiting for me to come home from work.  I picked her from the litter a month before she was ready to be adopted.  She is about 4 years old now.  When she was about a year old, she was exploring one of our neighbor's abandoned cabins and accidently fell down the chimney.  The fireplace had been boarded shut, so she was trapped in the chimney just above the flue.  I wondered what happened to her, and after about a day and a half of her missing, I heard a very faint meowing.  I found her and rescued her from the cabin, but she had blown out her vocal cords trying to get somebody's attention.  As a result, she barely meows any more.  Now she's kind of fat and indulgent, so I guess it's true that pets and their owners start to look alike.  I took this photo of her this morning; she has spent the night sleeping on some pizza boxes from the night before.

"It's not the fur that makes you look fat", quips my daughter Aria.

Something to think about

I think I've finally discovered the absolute worst programming language.  It's called "Whitespace", and it's even worse than brainf*ck.  All commands in the language are composed of whitespace.  This is not a joke.  I'm seriously considering porting this to Whitespace.NET.  Anyone want to join me?

posted on Friday, February 16, 2007 9:06:45 AM (Central Standard Time, UTC-06:00) by Christopher S. Velazquez