Friday, March 02, 2007

News from people with similar DNA

Tracy VelazquezThe week after next I'm going to have a visit with my sister, Tracy Velazquez.  She's coming to Houston for some conference and of course will spend some time in Boerne with us.  Yes, this is the Tracy Velazquez that ran for Congress in 2004.  I was the one to blame for her campaign web site, including the blogging software.  So I must confess that I'm not the first person in the family to have started blogging.  If you visit the archive of her site, you'll see that her sense of humor is similar to mine, once again proving indisputably that we have similar DNA.  Alas, she lost that election, even though she's "hot".

My son, Tony (11), recently advanced from Cub Scouts to Boy Scouts at the Blue and Gold banquet held at the Boerne Convention Center.  I was unable to get any decent photos with my cheesy cell phone camera.  I did, however, get a picture of the most beautiful, talented, creative and intelligent girl in the world.  That would be my own daughter, of course, Aria (7).  She is pictured here demonstrating the effect of static electricity from balloons on one's hair.

The static electricity  in the balloons attracts her hair

No respect

Last night, Tony told me he had found the perfect song for me.  It's called "Code Monkey" by Jonathan Coulton, and you can listen online or buy the MP3.  I tell you, I get no respect.

My swag's in the mail

Erin from ActiveState referenced my blog earlier this week, and she got a creative marketing idea from my Nutty Warnings blog entry. I pinged her back, teased her a little, and got a free T-shirt!  I love geek swag.  The last time I was this happy was when I won the puzzler from SoftArtisans (using a Perl script, heh heh) and received a free SoftArtisans T-shirt and a license for ExcelWriter, which I am still using in production today!  Actually I was more excited about the T-shirt, because for a few hundred dollars anyone can license their software!

posted on Friday, March 02, 2007 9:38:16 AM (Central Standard Time, UTC-06:00) by Christopher S. Velazquez
 Thursday, March 01, 2007

You've Got SpamI've raised the white flag.  I've had it with hosting e-mail.  I just purchased an e-mail hosting plan from GoDaddy, and I'm in the process of moving all the e-mail accounts.  And instructing customers on how to change their Outlook settings for the new system.  Hopefully, I can get everyone moved over in the next couple of weeks.

The sordid tale of the tar-baby from hell begins about four years ago, when I was having problems with the ISP that was hosting my e-mail service.  As things happened, I came upon an open-source mail server called Lumisoft that was written in C# and was able to handle SMTP relays, POP3 inboxes, and had a cute WinForms UI for administration.  It must have been the macho call of the wild - I can do this!  I grabbed an old computer, wiped it clean, installed Windows 2000 Pro on it and set up the mail server.  I had initially intended to use it for just my own purposes, and my wife and I used it for our e-mail.  But as things progressed, I started getting calls from customers who were getting angry that their ISPs weren't filtering their spam and letting e-mail viruses get through.  So I picked up SpamAssassin, and wrote a couple Perl scripts (shoutout: using ActiveState ActivePerl) that would comb the mail looking for spam to tag and also tossing out anything executable.  These Perl scripts were fired off by a little C# Windows Service I wrote in a half-hour.  And I'm happy to say I haven't had a single e-mail virus in Outlook in four years.  But things quickly deteorated.  To summarize:

  • Network downtime - my ISP doesn't answer the phone on Sundays, so when do you think it goes down?
  • Security Breach - a slacker at my ISP had a null VPN password, allowing a Japanese spammer to hijack my mail server as his own personal SMTP relay.
  • Spam - causing an increasing burden on the old 450 MHz Pentium II.
  • Abandoned E-mail Accounts - piling up the spam and filling up the disk
  • Disgruntled Customers - I always know when the mail goes down, oh, I hear about it!
  • Clueless Customers - who sign up for all sorts of online crap and wonder why they have so much spam!
  • Hardware Issues - Ugh

I've had it up to here, and now I'm putting POSTAL to pasture. (Yes, I named the computer "POSTAL" as a joke.  Ha ha, just serious.)  I can get 100 POP3 e-mail accounts from GoDaddy for just $30 a year, and it comes with a webmail interface.  The admin interface is a pain in the rear, but I'm sure they can do a better job with uptime than I can.  I will miss having a bottomless e-mail account that users could send 100 MB files to, but the need for that has decreased as well.  At least I won't be wasting any more time on this.

This is better than going postal.  Don't you think?

posted on Thursday, March 01, 2007 2:11:44 PM (Central Standard Time, UTC-06:00) by Christopher S. Velazquez
 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