Stack Overflow Launches: A Programmer’s Resource and Community

A new programming site,  Stack Overflow, officially launched (public beta) today. Started by Jeff Atwood and Joel Spoksky, the intent is to provide a forum for getting answers to your programming questions.

From the About:

Stack Overflow is by programmers, for programmers, with the ultimate intent of collectively increasing the sum total of programming knowledge in the world. No matter what programming language you use, or what operating system you call home -- better programming is our goal.

Stack Overflow is that tiny asterisk in the middle, there.

There's also a FAQ and a blog.

I've been taking part in the SO private beta testing for about a month. I've asked one question related to an issue I was working on and tried to answer a few questions. My reputation is probably a good reflection of my minimal activity level.  From that experience though, I can tell you that it takes a significant amount of effort to get your reputation even into the hundreds.

I'm a long time Code Project user so my initial impression of SO is greatly influenced by my on-going CP experience.  Because of that, and for better or worse, comparisons are unavoidable.

Sites like SO provide two basic services:

  1. Getting answers to technical questions.
  2. Providing a gathering place for like-minded individuals.

Getting Answers

Currently there's no comparison. SO is in it's infancy. I have yet to get a hit on a search term in SO that returns pages in CP. This is no surprise, as it will take a long time for SO to build a critical mass of technical content.

One concern about the SO question/answer-only format versus CP is that CP has both forums and an extensive article base.  For me anyway, the most useful CP search hits usually come from the code posted in the articles.

Forums might have relevant links, but are less likely to have code snippets that will end up with useful search results. I think SO needs to figure out a way to encourage the posting or downloading of searchable code. There's no substitute for the blood and guts of programming: code!

IMHO, the missing set in the venn diagram is an article submission component.

Community

There are hundreds of programming forums, link sites, and blogs.  What's unique about the contributions of these groups of individuals is their self-forming community -- they are the very definition of a social network.

A recent NYT op-ed article by David Brooks called The Social Animal discusses Republican Party doctrine development and how it:

... underestimates the importance of connections, relationships, institutions and social filaments that organize personal choices and make individuals what they are.

It struck me that these basic psychological and sociological tenants are exactly the same motivators that create and maintain on-line social networks. SO is no different.  Social status (reputation) is an important motivator, and how SO manages these interactions is a much discussed topic (e.g. see Fastest Gun in the West Problem).

CP has somehow been able to keep a loyal group of contributors over the years -- Article Competitions, Surveys, The Lounge, Hall Of Shame -- I'm not sure what keeps them coming back, but they do.

SO must continue to build and nurture that sense of community in order to ensure long term involvement of contributors and to attract new members.

Off and Running

SO is off to a fast start because of the popularity that Jeff and Joel have brought to the launch. The site is visually clean, efficient, and easy to use.  It appears that (early on anyway) a majority of the questions are Microsoft technology related.  A broader range of topics are sure to appear now that the site is opened to the public.

I'm looking forward to watching Stack Overflow evolve, and come up in my search results.

UPDATE (9/16/08):

Here's a sampling of other launch posts (all open in another window/tab):

Stack Overflow: Not Convinced
Stack Overflow Launches
Stack Overflow: Solutions for Coders
Stack Overflow
Stackoverflow.com
Bad First Impression
StackOverflow - CrackOverflow or StackOverblown?

Posted in Programming | Leave a comment

EMR at Kaiser Permanente

Yesterdays San Diego Union Tribune had an article entitled: Digital divide. The subtitle is: Some doctors and hospitals are embracing electronic records for patients, but most are not making the technological leap from paper due to the cost.

It discusses Kaiser Permanentes' $4 billion roll out of their custom EMR system, called KP HealthConnect (the primary vendor is Epic Systems), to 8.7 million members in 9 states.

It also talks about the difficulties of EMR adoption in general -- cost being a major barrier. An interesting read.

UPDATE (9/10/08): Todays HIStalk Readers Write has a very good writeup about the rollout of this system in Northern California:  A Physician’s Experience with Kaiser’s Epic/HealthConnect Rollout.

Posted in EMR | Leave a comment

CCHIT, The 800-Pound Gorilla

There's a lively discussion on HIStalk (Readers Write 8/27/08) regarding the merits of CCHIT.  The Jim Tate piece isn't long, or even that informative. It simply touts CCHIT as an

.. organization that is helping level the playing field and make it safer for clinicians to take the plunge into electronic records.

This seems innocuous enough.  Judging by the negative responses though, some people have real problems with CCHIT. In particular, the Al Borges, MD Response to "CCHIT: the 800-Pound Gorilla" is a detailed point-by-point rebuttal ("CCHIT is simply not necessary.").

I guess it's not surprising that the biggest issue seems to revolve around money. The cost of obtaining CCHIT certification has stratified EMR companies (big vs. small) and makes it even more difficult for practices to see a ROI.

Also, the discussion of interoperability standards (or lack thereof) is one of my hot buttons. As Mahoghany Rush (comment #9) says:

Anyone here who talks about being HL7 compliant - and thinks it really solves a problem - has never personally written an interface.

So true.

In this regard Inga asks (in News 8/29/08):

Are lab standards an issue one of the various work groups is addressing? Are the labs on board?

When you say "lab" what you're really talking about are the large number of medical devices commonly found in both hospitals and private practice offices. As you note, the need for interfaces to these devices is so the data they generate can be associated with the proper patient record in the EMR. This not only allows a physician to have a more complete picture of the patients' status, but the efficiency of the entire clinical staff is vastly improved when they don't have to gather all of this information from multiple sources.

The answer to your second question is yes, many "labs" -- medical device companies, are actively in involved in the development of interoperability standards.  The EMR companies are also major participants.

There are two fundamental problems with "standards" though:

  1. A standard is always a compromise.
  2. A standard is always evolving.

By their very design, the use of a standard will require the implementer to jump though at least a few hoops (some of which may be on fire).  Also, a device-to-EMR interface you complete today will probably not work for the same device and EMR in a year from now -- one or both will be implementing the next generation standard by then.

Nobody dislikes standards. Interoperability is usually good for business. There are two primary reasons why a company might not embrace communications standards:

  1. The compromise may be too costly, either from a performance or resources point of view, so a company will just do it their own way.
  2. You build a proprietary system in order to explicitly lock out other players. This is a tactic used by large companies that provide end-to-end systems.

The "standards" problem is not just a Healthcare interoperability issue. The IT within every industry struggles with this.  The complexity of Healthcare IT and its multi-faceted evolutionary path has just exacerbated the situation.

So, the answer is that everyone is working very hard to resolve these tough interoperability issues. Unfortunately, the nature of beast is such that it's going to take a long time for the solutions to become satisfactory.

UPDATE (9/3/08): The response to Inga was published here: Readers Write 9/3/08. Thanks Inga!

Posted in EMR, HL7, Interoperability | Tagged | Leave a comment

The Dirty Words of Software Development

A post today by Jeremy Miller has a (late) Tribute to George Carlin which lists words and phrases that should not be used when discussing software development. I don't think the list was meant to be comprehensive but it's a good read anyway.  One of them does a good job of backing up my contention that analogies are evil:

“Software as Construction” – ... I feel perfectly qualified to say that the “Software as Construction” analogy is an extremely poor fit.

It's good to see that Mort is also on the list, and the first one too! That one really struck a nerve for me when I first heard it last year, so it should be at the top.

I'm not so sure about the "refactoring" items.  Bad design and refactoring are two different things. Code duplication is bad design and should never be tolerated. But adding unneeded (and worse, untested) complexity for the sake of generality alone isn't a smart use of resources either. I think the term "refactoring" has essentially become synonymous with "rewriting" anyway -- nobody's fooled by that jargon any more.

Posted in Programming | Leave a comment

Visualizing Spaghetti Code

Is a picture of a computer program really worth a 1000 words? HP seems to think so.

Making Sense of Spaghetti Code
discusses the visual representation of source code as a marketing tool for their consulting services.  Being from California, the budget cutting complaint:

because there aren’t enough programmers who know the Cobol language used in the state’s payroll software

is pretty scary. The urban (programming) myth that there are still more lines of Cobol in use than any other language may actually be true. Scarier still!

HP's Legacy Application Transformation and Visual Intelligence Tools were reported in April: SOA picture worth 1,000 words for HP.

NDepend also has visual representations of code structure and dependencies that makes pretty pictures of .NET code:

Posted in .NET, Programming | Leave a comment

Medical Devices in Home Health Care


If a company like Intel gets involved you know that providing home health screening devices must be a big opportunity.

Intel Health Guide is designed to be a comprehensive home monitoring service.

  1. In-home patient device.
  2. An online interface allowing clinicians to monitor patients and remotely manage care.
  3. Interactive tools for personalized care management.
  4. Integrates vital sign collection.
  5. Patient reminders.
  6. Multimedia educational content and feedback.
  7. Communications tools such as video conferencing and e-mail.
  8. Can connect to specific models of wired and wireless medical devices:
  • blood pressure monitors
  • glucose meters
  • pulse oximeters
  • peak flow meters
  • weight scales

The Health Guide stores and displays the collected information on a touch screen and sends to a secure host server, where health care professionals can review the information. Patients using the Health Guide can monitor their health status, communicate with care teams and learn about their medical conditions.

Another recent announcement is by Freescale Semiconductor: Here comes an ECG-on-a-chip solution!. The Freescale Electrocardiogram (ECG) Hardware Solution along with Monebo ECG Monitoring Algorithms will allow for low-cost integration of ECG monitoring for remote monitoring and even in home-based devices.

There are many health conditions that would benefit from improved remote monitoring capabilities, but heart disease is certainly at the top of the list and has been shown to reduce hospital re-admissionsHolter monitoring has been around for a long time, but this type of embedded ECG hardware and software technology along with interactive devices like the Intel Health Guide, could significantly raise the bar for ambulatory patient heart monitoring.  Companies like CardioNet are already counting on this trend.

It's a good bet that PHR providers like Google Health and Microsoft HealthVault will start to incorporate similar interactive technologies into their offerings. Also, Microsoft offers a device certification program that will draw in more devices. Google has similar developer and branding policies in place (see here).

UPDATE (8/19/08): Tools Help Patients Interface With Doctors which also discusses the Zuri device.

UPDATE (11/10/08): Intel Health Guide Undergoing Trials

UPDATE (12/17/08): Intel Health Guide

Posted in Medical Devices, PHR, Technology | 4 Comments

Top 10 Concepts That Every Software Engineer Should Know

Check out Top 10 Concepts That Every Software Engineer Should Know. The key point here is concepts. These are (arguably) part of the foundation that all good software engineers should have:

  1. Interfaces
  2. Conventions and Templates
  3. Layering
  4. Algorithmic Complexity
  5. Hashing
  6. Caching
  7. Concurrency
  8. Cloud Computing
  9. Security
  10. Relational Databases

From a practical point of view, this still comes down to a Selecting Books About Programming issue. This list is just more focused on specific software technologies and techniques.

So many books, so little time...

UPDATE (7/30/08):

Here's a career related post with some good advice: Becoming a Better Developer.  Learn a New Technology Each Month (#5) seems like a little much. I guess it depends on what your definition of "learn" is.

Posted in Programming, Technology, Tools | 1 Comment

Digital Devices and EHRs: the ROI

Here's a piece that provides a quick analysis of the ROI of having vital signs and ECG devices connected to an EMR:

Digital Devices and EHRs -- Perfect Together

The right way to do it:

Electronic transfer of patient information

Electronic transfer of BP and heart rate

Electronic recording of test

MD views results from anywhere

DONE -- half the steps, half the time

Ah, if it were only that easy.

Posted in EMR, Medical Devices | 1 Comment

Upgrade to WordPress 2.6

It's been over a year since my original WordPress installation.  I started with 2.4, and ignored the 2.5 release.  Since 2.6 was recently released I thought it was time to take the leap.

I followed the upgrade instructions closely. Here's a summary of the experience:

  1. The backup and upgrade process was straight forward. The instructions on which files to delete and not delete could have been clearer.
  2. Huge gotcha: Lost category and link descriptions. The process for restoring these (WordPress 2.6 Upgrade - Fix Missing Categories) was awful, but at least it worked. If I had known about this before hand I would have waited to do the upgrade until this problem was fixed.
  3. All of the plugins I use were upgraded and re-installed without a problem. I like the new integrated upgrade capability.
  4. I don't use a custom theme so I did not have to deal with any display issues. The new wp-syntax plugin improved code formatting looks great.
  5. The only customization I had to do was add my LinkedIn link to SideBar.php and the Goggle Analytics script to Footer.php.
  6. For some reason the sub-domain link to the blog (http://blog.bobonmedicaldevicesoftware.com) goes directly to the main domain http://bobonmedicaldevicesoftware.com.  I'm sure that my root .htaccess file didn't change so I don't understand why this is now happening. I haven't been able to find a solution yet, so in the mean time I've just re-directed the main page back to the blog.

That's it. Hopefully the new 2.6 features will be worth the effort.

UPDATE (8/15/08):

Upgraded to WP 2.6.1 using WordPress Automatic Upgrade 1.2.1.   WPAU automates WP and database backup, puts the site into maintenance mode, disables all plugins, does the WP new version upload and unpacking, database upgrade, and re-enables plugins.  This update wasn't really necessary for me, but I wanted to walk through the automatic upgrade process just to see how it went.  Everything worked fine, which was expected for a minor release.

I don't know if problem #2 was resolved for 2.6.1 upgrades from older WP versions.  I did a quick read-through of the fixed bugs, but that one didn't jump out at me.

UPDATE (12/13/08):

Upgraded from WordPress 2.6.5 to 2.7 with WPAU. Worked great. The new 2.7 admin interface is nice and the built-in updates will hopefully work as well as WPAU.

I also just noticed that my problem #6 -- sub-domain link to the blog -- has been fixed in WordPress 2.7. WooHoo!

Posted in General | 4 Comments

Loading Individual Designer Default Values into Visual Studio .NET Settings

The VS.NET Settings designer creates an ApplicationSettingsBase Settings class in Settings.Designer.cs (and optionally Settings.cs).  The default values from the designer are saved in app.config and are loaded into the Settings.Default singleton at runtime.

So, now you have a button on a properties page that says 'Reset to Factory Defaults' where you want to reload the designer default values back into your properties.  If you want do this for all property values you can just use Settings.Default.Reset(). But what if you only want to reset a subset of your properties? 

There may be a better way to do this, but I couldn't find one.  The following code does the job and will hopefully save someone from having to reinvent this wheel.

The ResetToFactoryDefaults method takes a collection of SettingsPropertys and uses the DefaultValue string to reset the value. Most value types (string, int, bool, etc.) worked with the TypeConverter, but the StringCollection class is not supported so the XML string has to be deserialized manually.

These helper methods show how just selected (and all) properties can be reset.

This code was developed with VS 2005, but should also work in VS 2008.

Posted in .NET, Programming, Visual Studio | 1 Comment