Mr. Zients Versus The Mythical Man Month

Last week I had to chuckle when Mr. Zients announced that "by the end of November, HealthCare.gov will work smoothly for the vast majority of users." I am one of the few long time www.healthcare.gov visitors and have been anxiously looking forward to improvements since 2010 when I first complained the insurance finder was useless. Although I admire his chutzpah the two things I can say for sure is that there will be a touchdown dance on November 30th and there will still be a lot of serious problems to fix. The touchdown dance is the easy part of his task. Unfortunately the American people are married to this software. Like a bad Las Vegas wedding in which we hate to admit our mistake, we will trudge onward for the sake of the children.

The first problem facing Mr. Zients is that he is up against the software engineering and project expertise of Fred Brooks, whose central theme in his book, “Mythical Man Month”, is that "adding manpower to a late software project makes it later" has been ignored by the administration. They have already announced their plan to hire QSSI to come in and fix the problems with the web site in 30 days. Adding more people and thinking this will fix the problem is a big problem. Saying that it has to be done in 30 days has me in alternating fits of laughing and crying. As a person who has made his living fixing “other people’s code” for thirty years, this solution is a recipe for disaster and no seems to be listening. So let me frame the problems facing this system with a diagram from the book, Mythical Man Month.

MythicalManMonth

Using the analogy from the book software products start out in the “Program” quadrant and are transformed via generalization, testing, documentation, maintenance, and system integration into a “Programming System Product”.  The “Programming System Product” in our case is www.healthcare.gov and the final acceptance test is whether the American people can use it to purchase subsidized insurance. In 1974 Mr. Brooks asserted that a “Programming System Product” costs nine times as much as the “Program” so the vast majority of the cost and effort is spent generalizing, testing, documenting, and integrating the interfaces. Unfortunately for Mr. Zients this part of software engineering has not changed over the years.

From the reports I have read there has been very little testing and the specifications for the programming interfaces did not go out until eight days before the launch. It looks like most of the money and effort was spent in the “Program” quadrant and very little was spent in the areas that would actually result in a successful “Program System Product”. This reeks of management failure. As part of the 1% who successfully got through the application process far enough to download a copy of my potential insurance plans I can say that the site has a lot of serious problems. It brings a whole new meaning to the term, “bad beta site”. Although I have no doubt that this new contractor, QSSI, can clean up the code discussed in this Reddit thread, the other problems that have been reported are more daunting and time consuming. Here is a short list of problems in no particular order.

  1. The usability problems pointed out by the NN group
  2. The back end problems pointed out by Dan on marginal revolution.
  3. The 834 problems pointed out by Sarah Kliff on the Wonkblog
  4. Identity theft  problems pointed out at MotherJones.

I think both the Affordable Care supporters and detractors agree that despite the fact that the web site is a clusterfark of monumental proportions, it will get fixed eventually. The question is whether it will be sufficiently complete and secure in time. Since they ignored my old web development adage, “copy the best and ignore the rest”, maybe they should start looking at an exit plan that involves joining forces with the “best in the business”. There is still time for letting www.eHealthinsurance.com and its six competitors finish a smaller, less politicized version of the  the job and minimize the impact of a failed www.healthcare.gov.

Cross posted at alazycowboy.com

CSVed 2.2.1

I was in need of a way to create a simple HTML table from an Excel spreadsheet. The “Save As” option in Excel created the standard Microsoft messy HTML. The Google Docs version was not much better. I finally ended up cleaning it up by hand. Then I tried CSVed. This is a good solution for this problem and other CSV problems. You can read the clipboard directly and export a fairly minimal HTML file.

My final solution was to write a PowerShell script that read the clipboard, transformed the data into a simple HTML table, and then sent the text back to the clipboard. A clipboard manager like Clipboard Manager is probably a necessity to manage the clips if you don’t get the correct results the first time.

CSVed is an easy and powerful CSV file editor, you can manipulate any CSV file, separated with any separator.

some features:
  • edit, add, insert and delete items;
  • import;
  • change separator;
  • add, delete columns;
  • rearrange column order;
  • save selection of rows and columns;
  • save filtered items;
  • save with double quotes;
  • search and replace;
  • filter items;
  • remove duplicates;
  • append and merge files;
  • install and uninstall
  • help in English
  • add prefix and suffix
  • split and join columns
  • export to HTML, Excel, Word, XML and more
  • proper words and strings
  • column search
  • column sort and global sort

The listview is running in virtual mode, that means the data is displayed on demand. (not the entire CSV file is loaded in the listview) so CSVed can handle big files and is very fast.
In other words, you can do everything with a CSV file you wanted. CSV is cardware.

Jeditable and Classic ASP

This week I implemented a grid style application using Classic ASP and Jeditable. The hardest part of implementing this application was trying to figure out what a save.asp version of save.php would look like. Here the template I created.

 
<% 
dim sID, sValue,errorcode dim field1,field2,field3,field4 
'The sID is a spreadsheet style ID 
'As an example B3 would be the second editable field 
'for DB ID field = 3
sID = request("id") 
sValue = request("value") 
sType = mid(sID,1,1) 
sDataID = mid(sID,2)  
'We have four editable fields 
'The changed field will not be null 
field1 = null 
field2 = null 
field3 = null 
field4 = null 
errorcode = 0  
select case sType 
case "A" 	
field1 = sValue 
case "B" 	
field2 = sValue 
case "C" 	
field3 = sValue 
case "D" 	
field4 = sValue 
case else 	
errorcode = 1 
end select 
if errorcode = 0 then 
'Validate and update the data base 
end if 
if errorcode = 0 then 
'Send back the value field 
Response.Write sValue 
else  
Response.Write "<b>!Error " & errorcode & "</b>" 
end if 
%> 

IE8 Compatibility Problem Solved!

I fixed the IE8 Compatibility Problem I talked about previously. The login screen was missing some of the most basic HTML tags. I have seen several early ASP files that ignored the basic HTML tags and page structure. Since the page worked with the current browsers there was no need to fix it even though it had HTML validation errors. I am not sure which missing tag caused the problem but adding the <html>, <head>, and <body> tags fixed the problem.  😉

IE8 Compatibility Problem

I have been pretty busy this year with a move to a new warehouse so I did not get around to checking IE8 out until last week. So I installed the released version of IE8 for a quick checkout. It is scheduled to go on automatic updates in late April. The first screen I tried failed. All I got was a blank screen. No error messages at all! We use this screen to login to the administrative side of our web site. It is a classic ASP page with HTML validation issues that was written long before I got here. I tried to quickly fix the HTML validation errors but ASP barfed up some cryptic error codes with the HTML fixes I tried. So I am leaving this nugget for next week while I work on the issues my boss is most concerned about. Since I am old, I have a few rules about computer programming maintenance that keeps management happy with me.

  • Rule #1 – Don’t fix things that are not broken.
  • Rule #2 – Don’t fix things that they do not ask you to fix.

Until last week both of these rules applied.

Christmas WordPress Theme For Free Download | Freebies | Smashing Magazine

A big thanks to the folks at Smashing Magazine and InstantShift for offering a free Christmas theme. The festive mood of the theme motivated me to embark on a web site conversion over the weekend.

 

We may be a little bit late to the Christmas party, but late is usually better than never. In this post we release a very compact, magazine-like theme designed especially for events such Christmas. We hope that the theme may be useful not only for this Christmas, but can also be used in general, for various purposes. This theme was designed by InstantShift as an exclusive Christmas gift for Smashing Magazine readers.

Christmas WordPress Theme For Free Download | Freebies | Smashing Magazine

A big thanks to the folks at Smashing Magazine and InstantShift for offering a free Christmas theme. The festive mood of the theme motivated me to embark on a web site conversion over the weekend. I had been meaning to switch our farm web site, www.legacyfarmltd.com, from phpWebsite to WordPress for several months but I always found a reason to not work on it. Installing WordPress 2.7 and the Christmas theme was almost effortless compared to the process of duplicating old posts and pages. It was nice that they included the PSD for the logo. I cranked up my portable copy of GIMP and after a few minutes of re-learning GIMP/PhotoShop I had a custom logo that fit the Christmas theme. Although I will have to change the theme in the next few weeks soon since Christmas is over, the theme layout and fonts look like a good base to work from.

Experimental Mail Server Analyzer Online

Dan Kaminsky wrote a post about an Experimental Mail Server Analyzer Online. This might have helped me with a problem I was dealing with earlier this month. I am not sure whether my problem is related to what he is trying to accomplish but here is my problem description and resolution.

At the place I am working our customer service representatives said they were getting a lot of customer complaints about order confirmation emails never arriving. I did a little pivot table analysis on the event log and found a lot of SMTP 4000 and 4006 warnings. The frequency of the errors started escalating on July 29th. The good news is that I had not applied any patches in that time frame. The 4006 warning message I was familiar with since I had fixed a naked line feed issue in June. The 4006 warning message also appears when a customer enters their email address incorrectly so I expect to see it in the event log but at low levels. The 4000 warning message was new and said “Unable to bind to the destination server in DNS”. The problem appeared to be intermittent since not all emails were failing. However when I ran NSLOOKUP on the web site for the mail server that appeared in the 4000 message, it failed. When I used NSLOOKUP on my workstation to look up that same server, it worked.  The DNS used by the web server was failing for a group of mail servers. The solution was very simple. Although both the ISP help desk and I thought the web site had local problems and needed a mid-day reboot, the help desk changed our domain name server. Based on their initial testing they did not think they had fixed the problem. I suspect they used ping to try and verify the mail server. Since a lot of people have turned off ping responses on their mail servers, I looked at the event log. I could see that the problem was probably fixed. The 4000 messages had disappeared completely and the mail queue was emptying. The 4006 messages went down to previous levels, too. In fact they are at a level slightly lower than I had noticed before the problem.

Quick Picks and Pans on my del.icio.us favorites for last week

  1. The Histogram Generator for SQL Server looks interesting but I think I will work on making pivot tables easier to use first.
  2. I tried JkDefrag last week. I like the look and feel of the Auslogics defrag tool. JkDefragGUI makes JkDefrag a little easier to use and adds a few features. Both tools are nice upgrades to the standard defrag tool.
  3. VirusTotal is a nice way to generate hashes for downloadable files.
  4. I need to check Ratproxy out. Ultimately I would like to compare this to WebScarab. I need to read this Google document again and play with to figure out why Google re-invented the wheel.
  5. Microsoft’s contribution to fight against SQL Injection would have been more appreciated if it worked for me. It did not generate a report for me. The program was more than willing to tell me that I did not have it configured properly. When I finally had it configured properly, the result is no report?!
  6. PCI 6.6 is a mess. I am suspicious that the firewall option will ever be a cost effective solution for retail web servers. My first run at automated code analysis was inconclusive. I believe that low cost automated and manual code analysis are probably the best cost to benefit options.

wehuberconsultingllc’s favorites on del.icio.us

Writer Zone: Technical Preview: Now Available for Download

One of my favorite tools has been updated. It alludes to the possibility of integrating Writer with a couple of services and technologies I have been looking at integrating, Flickr and Lightbox. I was almost motivated enough to try my hand at writing a plugin a while back. The most obvious change is that the interface has been revamped. I have looked but I cannot find how Lightbox gets integrated. The Insert Picture dialog has a web interface. I will check out the web interface to Flickr shortly.

Writer Zone: Technical Preview: Now Available for Download

WordPress › WordPress Automatic upgrade « WordPress Plugins

I have been using this plugin for almost a year. When it works it is great! When I upgraded to WordPress 2.5 I started having a problem with the final two steps, reactivating the plugins and going to the final page. Before I could activate the plugins I had to upgrade the data base. Then I had to log back in to the blog. At this point the automatic plugin was lost and gave me a screen with "Are you sure you want to do this?" All the plugin could do at this point was to clean up the installation. I had to manually activate my plugins.

Today I figured out that if I remove the wp_nonce stuff at the end of the line I could get the automatic upgrade plugin to continue. Wp_nonce is a security feature. I think it is primarily used with forms but it can be used with links. About the only source on this function is the Writing Secure WordPress Plugins post by David Kierznowski. I think when I have to log back into WordPress, wp_nonce thinks I am breaking in and slams the door shut. From a plugin design standpoint I am not sure there is a need for this type of security at this point since all I want to do is activate my plugins and get my log report. I guess I will comment out lines 392-394 so the plugin will work.

WordPress › WordPress Automatic upgrade « WordPress Plugins

Cutline 1.3 Released | Cutline Theme for WordPress

I upgraded to WordPress 2.5.1 today and my old theme broke. I have been looking at Cutline for some time but I have not been motivated enough to commit the time.  Today I had the motivation. I am really pleased that I had it ready to go in about thirty minutes.

Cutline 1.3 Released | Cutline Theme for WordPress

.htaccess changes can break LiveWriter

Recently I changed some of my sites to not use the "www" on the front of the URL. It was a little tricky but I got it working right. The first part is to change WordPress to use shorter URL. The second part of the change was to modify the .htaccess file. I found that  the post, Comprehensive URL Canonicalization via htaccess for WordPress-Powered Sites, helped me the most. I checked it in a browser and everything looked fine. Much later I tried to write a post in LiveWriter and it did not work. It gave me the following error message.

blogger.getUsersBlogs method received from the weblog server was invalid

After a little debugging I figured out I could get rid of the problem if I refreshed my account settings for the web sites with the new .htaccess file. I guess LiveWriter is picky about the web site URL.

WordPress 2.5

I installed WordPress 2.5 last Saturday on all of the blogs I support. It had passed some preliminary testing on my development blog so I installed it. It is supposed to have increased security, better administrative panels, and the ability to upgrade plugins automatically. They say there are very few changes that will affect the plugins. It sounded like a safe upgrade so I upgraded. After a little testing I found that ImageManager 2.4.1 did not work at all. I am not sure when it stopped working since I do not use it often and I have alternatives.

While I was at it I did a little spring cleaning. I changed the blog to not use the www subdomain, changed the .htaccess file, changed the blog to use a more descriptive permalink, removed the register feature from the meta widget, and got rid of several old inactive plugins.

Installing Subversion? Just follow this 7 Steps « Lijin’s Localhost

Great post Lijin! Sometime ago I struggled to figure out how to install subversion on my WinXP box. The biggest difficulty I had was to understand what the folder layout for Windows box should look like. I ended up using svn1clicksetup to get a standard layout. Due to issues between Subversion and Apache 2.2, I avoided using Apache for Subversion. SVNService worked just fine for me. Recently Subversion has been supporting Apache 2.2. With a slightly modified version of Lijin’s instructions I modified my XAMPP installation to support accessing my existing repositories via Apache. Here are my steps:

  1. Install Apache HTTP server if not already installed. I prefer installing Apache via XAMPP.
  2. Install Subversion and let it update your Apache configuration. In my case I was updating to the latest version. Here is my file layout:
    1. Install directory – c:\Program Files\Subversion
    2. Repositories – c:\svnrepos
    3. Apache conf file – c:\Program Files\xampp\apache\conf\httpd.conf
  3. Since my repositories are not accessible from the network, I did not create a Users authentication file or Acesss – rights file. I can do this later if I need it.
  4. In the directory, "c:\Program Files\Subversion", create a etc directory and place another file called subversion.conf with the following data.
     
    <location repos>
      DAV svn  
      SVNPath C:/svnrepos  
    </location>
    
  5. Add Include "C:/Program Files/Subversion/etc/subversion.conf" to the Apache conf file.
  6. Restart Apache and test the repository access.
    1. I cranked up my favorite browser and went to http://localhost/repos. I saw my project directories.
    2. I created a new directory in the My Documents folder and checked out one of my projects using TortoiseSVN and the http://localhost/repos/project1 URL. It worked.
    3. Next I created a test file and added it to repository. It worked, too.

Installing Subversion? Just follow this 7 Steps « Lijin’s Localhost

Opera@USB : EN & PortableApps

Okay, Markus said I shouldn’t do this but I installed Opera@USB on my USB drive and renamed a few files. I wanted Opera to appear as a menu item in the PortableApps Menu.  Here is how I did this.

  1. First I created a directory under the PortableApps directory called, OperaPortable. You can name it anything you like.
  2. Next I installed the USB version of Opera into this directory.
  3. Finally I changed the extensions for operausb.exe and gsr.exe to com and changed the extension for opera.com to exe. You should see the pretty opera icon now.

Next time I started the PortableApps menu I had a pretty little Opera icon next to a title that said "Opera Internet Browser". It could not been sweeter. I went to my web sites and they looked fine. The only way I have been able to crash Opera so far is to go to the acid3 test. 😉

DISCLAIMER: I do not use Opera on a regular basis. Your mileage may vary!!!

Opera@USB : EN : download your free version of mobile Opera:

Exceptional Performance

I ran across this page in one of the blogs I read but I do not remember which. I installed YSlow to check out my web sites. It was an easy check. The rules I consistently failed were rules 3 and 4. I came back here for the explanations. Implementing fixes for these rules can be complicated. I will look into them when I have both the curiosity bug and the spare time.

Rules for High Performance Web Sites

The Exceptional Performance team has identified 13 rules for making web pages fast. Each rule is discussed in the Developer Network Blog articles listed below.

  1. Make Fewer HTTP Requests
  2. Use a Content Delivery Network
  3. Add an Expires Header
  4. Gzip Components
  5. Put CSS at the Top
  6. Move Scripts to the Bottom
  7. Avoid CSS Expressions
  8. Make JavaScript and CSS External
  9. Reduce DNS Lookups
  10. Minify JavaScript
  11. Avoid Redirects
  12. Remove Duplicate Scripts
  13. Configure ETags
  14. Make Ajax Cacheable

Download YSlow for Firebug YSlow logo

Exceptional Performance

WPDesigner » WordPress Theme Checklist

Here is a handy checklist for people creating or modifying WordPress themes.

Note: The following checklist was based on WordPress 2.0. Since WordPress 2.1, WordPress has replaced and introduced new template tags.

Files, functions, and to-dos you need to check-off before using / publishing your own unique WordPress theme:

Files and Templates
  • 404.php
  • archive.php
  • category.php
  • comments.php
  • footer.php
  • functions.php (for widget-ready sidebar)
  • header.php
  • index.php
  • page.php
  • search.php
  • searchform.php
  • sidebar.php
  • single.php
  • screenshot.png / .jpg / .gif
  • style.css
  • readme.txt (optional)
Header.php
  • Blog’s Title
  • Blog’s Description
Footer.php
  • wp_footer()
  • Footer text and links (usually, copyright message)
Sidebar.php
  • Search form – Does the regular search form match the widget search form?
  • Pages / wp_list_pages() – Have you styled the second level links? Third level links?
  • Categories / wp_list_cats() – Sort by name or ID? In what order? Is hierarchical turned off or on?
  • Archives
  • Calendar – Does the regular calendar match the widget calendar?
  • Links / get_links_list()
  • Meta: wp_register(), wp_loginout(), wp_meta()
Index.php, Archive.php, Category.php, Search.php, Page.php, Single.php
  • the_ID()
  • Post title: the_permalink, the_title()
  • the_content
  • Postmetadata: edit_post_link(), comments_popup_link(), the_author(), the_category(), the_time(),
  • trackback_rdf() [hidden]
  • posts_nav_link() – Next/Previous page links
  • Else – What to display when there is no content.
Archive.php, Search.php
  • the_excerpt() replaces the_content()
Page.php
  • link_pages()
  • Remove Postmetadata
  • Keep edit_post_link()
  • Remove posts_nav_link()
  • comments_template()
Single.php
  • link_pages()
  • Remove comments_popup_link()
  • comments_template()
Comments.php
  • Comments list
  • Comment forms and textarea
  • ‘No comments’ message
  • ‘Comments awaiting moderation’ message
  • ‘Must login’ message
  • ‘Password protected’ message
  • Comments off message
Pages to Validate
  • Home page
  • Archive pages
  • Category pages (if you customize category pages)
  • Search result pages
  • Pages (i.e: About)
  • Single post view page
  • Single post with no comments
  • Single post with comments
  • Single post with must login message
  • Single post with no login required message
  • Password protected single post with comments

Note: This is not an end-all checklist. It covers just the basics. More items will be added.

WPDesigner » WordPress Theme Checklist

Options WordPress Theme: What WordPress themes should be like

A magazine theme with some interesting ideas. I do not know if I am going to use it but I may use an idea or two. Nice work Alessandro!

Options WordPress Theme: What WordPress themes should be like
alessssandro
Sun, 09 Mar 2008 09:30:00 GMT

Hacking Flickr Manager 1.5.1

I am looking at moving all of the photos on an existing site over to Flickr. The plan is to convert the site over to WordPress and use the images from Flickr so I wanted an easy way to insert photos. I was looking for something that would be as simple to use as ImageManager or WordPress’s existing interface. So I went over to WordPress.org/extend/plugins to see what everyone was using.

The most popular Flickr plugin was PhotoXhibit by Benjamin Sterling. It has a lot of appealing qualities. You could bring photos from Picasa, Flickr, and Smugmug. It has a lot of sophistication and it used jQuery for the heavy lifting. I just could not get it to work right. It was unbearably slow showing the pictures.

Then I tried Flickr Manager. This plugin worked despite the fact the ReadMe file says it needs PHP version 5 and my PHP version says it is 4.4.7. It looked really good. It used a very straightforward and intuitive way to insert photos. My only complaint was that it had this Lightbox thing going on. That meant that my web page was going to load the prototype JavaScript library and its friends(~100K). Recently I found a jQuery version of Lightbox that is a much lighter load so I really did not want to go back to loading prototype and his friends.

The next plugin I tried was WP-Flickr. This plugin worked but had less features than Flickr Manager. I thought about hacking this plugin to add support for jQuery Lightbox to show the larger picture when you clicked on it. Before I had gotten too far in my thinking I was struck with the thought that Flickr Manager has more desirable features. Maybe I should look at changing Flickr Manager to work without the prototype library. It was an easy change. All I had to do was comment out one line. I even found the lines to change to get the Lightbox feature to work with the jQuery version of Lightbox. Well it kind of works. I did not get it to work properly with single photos. It never finishes loading the larger photo from Flickr. The demo at Trent’s site shows the Lightbox feature working with photo sets. Lightbox is a “would be nice” feature for me. The way it works now is to take you to the Flickr page of the larger photo. That’s not that bad so I decided to stick with the slightly hacked version of Flickr Manager. Now I can start uploading pictures to Flickr.

Test your web design in different browsers – Browsershots

 

del.icio.us bookmark this on del.icio.us – first posted by lordpet to browser webdesign tools design testmore about this bookmark…

Test your web design in different browsers – Browsershots
lordpet
Fri, 22 Feb 2008 16:30:00 GMT

This is an interesting site but do not expect quick results from the web site. It creates screen shots using different browsers by using distributed computers that upload the screen shot. It created 29 of the 41 screen shots I requested. It took about thirty minutes for the 29 shots to appear and I did not find any web page design problems. I suspect that my testing with Firefox 2, IE 6 and IE 7 are adequate for catching most problems but this might be handy to show tor clients who are looking for maximum interoperability.