Category Archives: Web Dev

Ideas on Ideation

Ideation is a hot topic lately.

Wikipedia defines ideation as “the process of forming and relating ideas. It is a concept utilized in the study of New Product Development, creativity, innovation, design thinking and concept development.” The important part of the definition, however, is “As part of the move into Enterprise 2.0, usage of ideation in the product innovation process has become an integral element. In this context, employees or customers are invited to participate in the ideation process, via a web portal (open on the internet or intranet), where they can suggest new ideas, rate other ideas, and collaborate with the entire community in the process of ideation.”

Ideation can go too far, though. IBM has used the concept of ideation in an advertising campaign called “Stop Talking, Start Doing.” Two particular commercials stand out, one with ideators (is that a new word?) lying in a conference room, and one involving an ideation superhero.

The reason it is hot is because of a trend to enable those inside the company with a tool for collecting and implementing ideas. Dell’s IdeaStorm and Ubuntu’s Brainstorm are great examples of how a technology can enable ideation. So I decided to do a bit of Digging (just a little bit of foreshadowing there) on Google and found a number of Digg-like clones that are available. They are either open-source or hosted solutions.  Check them out:

My Most Useful Programming Development Tool Ever

The most useful development tool I use makes me more productive on lots of tasks all day long.  I can open just about anything I am working on, and get the job done fast.  It applies colors sparingly to my work, and helps me identify mistakes.  It helps me multitask, working on many things at once.  It understands dozens of different languages with ease, all at the same time, and you can add more very easily.  It has all the qualities of a developer who embraces open source solutions – it is fast, cheap easy to use, and available for download any time on SourceForge.  I have tried its competitors, but this one stands out among the crowd.  It was recommended to me by a colleague, and switching over was very easy.  My most useful programming development tool ever is Notepad++.  I have used the standard Microsoft Notepad, and I have used TypePad, but Notepad++ is head and shoulders above the rest.  Give it a try.  You will convert too. 

Disagree?  What is your most useful programming development tool ever? Leave a comment and be heard.

On The Road to Mix ’08

I consider myself blessed to work for a company I believe in, and in a field that I love.  Working in the field of web development is exciting.  The job is never the same.  The technology is always in flux.  Tomorrow will be different than today.  Bristol-Myers Squibb has treated me well.  And they are doing it again.  I am now scheduled to attend the Mix ’08 Conference at the Venetian Hotel in Las Vegas from March 5 through March 7. 

Mix 07 was a fantastic conference, and Mix 08 looks to be just as great.  Steve Ballmer and Scott Guthrie will be keynote speakers this year.  The sessions look really interesting.  I am hoping to attend the MVC session from Scott Hanselman, some of the Web 2.0 panels, some SharePoint sessions, .Net 3.5 demos, WPF and Silverlight sessions, and some of the UI discussions. 

Last year I documented my trip with blog posts after each one of the sessions.  I hope to do the same this year.  I was criticized by some of my peers last year that my blog posts from each session didn’t really count as individual posts (we have a performance objective to post a specific number of blog entries per year) but as one giant post.  We will see if my online trip report creates as much of a stir again. 

I am really looking forward to Mix again this year.  Take a look at the sessions, and let me know if there are any that interest you.  I can try to attend, attend, and bring back as much information for you as I can.

Techno-Christmas 2007

Christmas in 2007 was centered around electronics for the whole family. Invion 4″ GPS Navigation Systems were given and received for all of the cars. They were easy to set up, and work great… the only issue is that the SD card is the source of the maps. If you lose the card, or it breaks, or gets erased, the unit won’t work any more.

I bought my wife a Jawbone Bluetooth Headset. She is using that with her Palm Treo 700w, and is having some problems. The headset does not seem to reliably connect to the unit, we have not been able to transfer an existing phone call to the headset, and the voice dialing doesn’t seem to work. If I turn the headset on, make sure it connects to the Palm, and dial directly on the phone (or answer an incoming call), everything works great. The sound quality is really good, and the noise cancellation does a fantastic job. I think I wanna try the unit on another phone before I let my wife go to the Verizon Store for help.

Mary Ann bought me the Toshiba HD-A3 HD-DVD Player. The first thing I did after all the presents were unwrapped was hook this up to the television I have in the basement. The DVD player came with two movies, and I dropped one in and sat riveted to the screen. I bought my Panasonic 42″ Plasma TV about 4 years ago now. At the time 1080p was way too expensive, so I settled with 1080i. The DVD player is compatible with both 1080i and 1080p, and connected easily to my system. I even tried a standard DVD movie, and the DVD player up-scaled the picture pretty good, too. My complaints about the player are not really with the player itself, but with the format. News that Warner Brothers announced it would be aligning with Blu-Ray instead of HD-DVD rocked the CES Conference. The price of the player, less than 2 weeks after Christmas, has fallen from $299 to $129. Blu-Ray has now captured 93% of the Hi Def market share. now my player, and the movies I have received with it, are obsolete, and it is less than one month since they were purchased. I am now a victim of the BetaMax Syndrome.

With the television, audio receiver, cable receiver, DVD recorder, Playstation 2, and VCR to operate, and now adding the new HD-DVD player, I was lost in a sea of remote controls. I did a little research, and found the Logitech Harmony 550 looked to be a great fit. I found it on sale at a local electronics shop, and brought it home. There are a few simple steps to program the remote: 1) install the software on your PC, 2) plug in the remote to your PC via USB cable, 3) enter in each of your manufacturer and models, 4) you choose what activities you want to do (i.e. Watch TV, Watch DVD, Play Game, Play Radio, etc.), and 5) the software downloads all the profiles your remote and programs it. It was easy, and it works fantastic. It was worth every penny.

So, Santa was on top of all of our wish lists this year and delivered a 2007 Techno-Christmas under our tree.

Netscape is Dead, Long Live Netscape!

Well, it is official.  The once-popular browser, from Mosaic through Netscape Navigator and all of its Mozilla variants, fought in the Browser Wars from 1994 through 2008, and is now throwing in the towel.  My once-favorite browser has finally fallen under the weight of Internet Explorer (and Firefox, too, I suppose). 

AOL announced on December 28, 2007 that as of February 1, 2008 they will no longer be providing Netscape Navigator.  Oh, how the might have fallen.  I found out about this on Engadget – Netscape finally bows out, browsers no longer supported, but you can read about it on the Netscape Blog – End of Support for Netscape web browsers.  The Browser Wars will continue, but without one if its original participants. 

The Lost Art of Debugging – Part 3 – Things To Do

As I have said before, debugging is a complex and time consuming process. I have outlined 10 resources for debugging, and provided a primer for things not to do when debugging. Now, we get to the meat and potatoes of debugging. This is a guide of things to do when debugging. I have broken this guide into three sections – a description of the Scientific Method of Debugging, Tips for Hunting for Bugs, and Bug Prevention Methods.

Scientific Method of Debugging

This is a parallel to the Scientific Method that you learned in your grade school science class. The book Code Complete by Steve McDonnell outlines this methodology to debug your applications.

  • Stabilize the bug by identifying the simplest test case that reproduces the error
  • Locate the source of the bug
    • Gather data about the bug and its behavior
    • Analyze the data regarding the bug
    • Form an hypothesis about the bug
    • Write test cases that would prove or disprove your hypothesis
    • Run the tests and prove your hypothesis, or begin again with a new hypothesis
  • Fix the defect
  • Test the fix with all of the new unit tests you have written
  • Continue to look for similar, cascading, or peripheral errors

For a more detailed breakdown of the Scientific Method of Debugging, read Code Complete by Steve McDonnell.

Bug Hunting Tips

These tips for finding bugs, broken out into different areas, will help you narrow down where your bug is.

General Tips

  • Be sure to save the original source code
  • Be sure the fix the problem, not the symptom
  • Make one change at a time
  • Check and Double Check your fix
  • Consider the possibility that the bug is generated from multiple sources
  • Divide and Conquer
  • Check other places where bugs have existed
  • Check other places where code has changed recently
  • Compile the application again

Logging

  • Insert Trace, Print, or Alert Statements to help track the bug
  • Create a logging methodology to trace the application
  • Check the Log Files of the servers, etc.
  • Search the web for the stack trace

Unit Testing

  • Design By Contract
  • Write unit tests that cause the error
  • Try to reproduce the bug in different ways
  • Try boundary cases and special cases

More Complex Methods

  • Recompile with a different compiler
  • Create a mini version of the application
  • Sequentialize the Parallel to see if it is a timing or resource issue
  • Try the code in different environments (local, dev, test, prod, other developers’ machines, etc.)
  • Grab someone else to talk through the bug without looking at the code (explaining the problem may trigger some ideas)
  • Do a full, in-depth code review on the broken code

Last Resort

  • Rewrite the whole section of code that is causing the bug
  • Take a break for a few minutes, or an hour, or until the next day, to give your mind time to process the data

Bug Prevention Methods

These are things that you should be doing during the planning and development of your applications that will help you identify, fix, and test your bugs after you are done with development.

  • Identify and track consistent bug types within your own code
  • Introduce debugging methodologies early
  • Implement loose coupling techniques
  • Implement Information Hiding Techniques
  • Write a regression test that tests the bug you just fixed

So… these are some different ways to attack debugging. Are there methods that have proven themselves that you have used? Do you take a different, more unique approach to debugging? What have your experiences shown to be your best practices? Please leave your feedback and let me know what you think.

The Lost Art of Debugging – Part 2 – Things Not To Do

Debugging is a complex and time consuming process.  In my last post I listed 10 Resources for Debugging, both web sites and books, that every software developer should read to keep their debugging skills sharp.  Knowing what not to do is just as important as knowing what you should do.  Here is a list of things not to do when you are debugging your application

  • Don’t guess what the problem is
  • Don’t dive into making changes without a plan
  • Don’t code right away without a thorough analysis
  • Don’t fix the shell of the problem, not the problem itself
  • Don’t trust line numbers in compiler messages
  • In fact, don’t trust the compiler messages at all
  • Don’t ignore the value of automated unit testing
  • Don’t delete the original code
  • Don’t ignore recent changes to your application
  • Don’t ignore resources available to you, like the Internet or the Library

This post is a teaser for the one that is to come – what thins should I do when debugging?  Is there a more formal process for debugging?  What steps should I follow?  What things should I look for?  What place should I look?

The Lost Art of Debugging – 10 Resources

Debugging is as much of an art as it is a science. There are lots of great tools to help developers debug their code. I believe developers, including myself, have learned to depend too much on these tools instead of thinking through the problem. There is a common thread across all programming languages and development platforms. That thread is the way that you approach, identify, and tackle a bug. To help develop an environment of good debugging practices, I have decided to write a series of blogs on technology agnostic debugging techniques.

My first post about The Lost Art of Debugging is a blogroll of resources, both electronic and print, that developers should read to help develop good debugging techniques. Here are ten great resources on the methodology of debugging.

Web Sites & Blogs

Books

Do you have other debugging resources that you depend on? Have you seen a great article on debugging? Do you have a debugging horror story you would like to share? Leave me a comment with your book, web site, or tale of woe.

10 Must-Have Tools for Continuous Integration in .Net

Here is a quick blogroll of ten critical tools to build a continuous integration and continuous delivery pipeline for .Net applications.

Continuous Integration Process

Visual Studio Team System

CruiseControl.Net

nAnt

nUnit

WatiN

WatiN Test Recorder

nCover

nDoc

FXCop

TestDriven.Net

5 Benefits of Internal Corporate Blogs

Blogs are not new anymore.  They have been around for a few years, and have proliferated fairly deep into the technology culture.  If people are not writing one of their own, they are reading one, or a handful of them, or have an RSS aggregator where they are reading dozens or hundreds of blogs. 

Blogs have lots of uses.  They are great for viral advertising, news publication, syndication, and collection of public opinion about a topic.  You can have a personal blog to share photos of your vacations, a corporate blog for press releases, a news blog for niche news, and a host of other reasons to have a blog.  Blogs are an easy way for anyone to produce and consume any information about anything from anywhere. 

But blogs have taken off within corporations as well.  That is my interest here.  We have deployed a blogging pilot in the workplace, and I have become a big proponent.  At first it was part of my yearly objectives to help pilot and proliferate the use of blogs.  I have blocked time on my calendar twice a week for a half hour to post to my blog.  Now I am one of the most frequent bloggers in our pilot, and I blog both inside and outside the company.  I do this because I see such a value in the process.  Blogging is such an important tool in my manager arsenal, and I thought I would list the benefits of blogging from my experiences for the team and for the company.

Knowledge Sharing

Blogging inherently is a way to share information with its readers.    The writer composes the message, and it is consumed by many readers in the blogosphere.  These messages are (obviously) either bottom-up or top-down.  Bottom-up messages are written from the perspective of the line workers and low to mid level managers to express ideas or experiences they have had.  Top-down blogs are a way to deliver executive messages, such as strategic direction, corporate status, and announcements.  Blogs act as a written memory of events, lessons learned, experiences, successes, or announcements.  Blogs can also be a way to share expertise on a specific topic, such as data management, service oriented architecture, design patterns, or search engine optimization. 

Idea Solidification

The writer has to take the time to think about the message they want to deliver, collect their thoughts, organize them, and express them clearly.  That way the readers can read a focused message that delivers a clear and understandable message.  Blogs can also be a way to develop, solidify, and evolve an idea by posing a question, idea, or concept, and collect and narrow an idea through constructive comments. 

Project Management

Using a blog to document a project and its progress is a bit unorthodox.  Typically a wiki or another more collaborative environment is more appropriate.  But blogs are so easy to use, they make for a good medium to capture progress and communicate them easily.  Again, they act as a written memory of the project’s progress, successes, and lessons learned.

Cross Team Communication

Blogs are a great way to provide a medium for dynamic networks of conversations across teams.  These teams could be local or distributed, days, nights or weekends, and it will not matter.  A shared blog space will allow for ideas to be spread, information to be distributed, questions to be asked and answers to be shared.  Blogs crisscross people, departments, silos, grade levels, and experiences.

TeamBuilding

The simplest thing that blogs do is to bridge the boundaries of distance and culture by being always on, able to be shared and viewed at any time.  When launching a blog or posting a comment, a person takes themselves in written form and puts a bit of themselves out for everyone to look at, examine, scrutinize, comment on, and critique.  Successful corporate blogging creates an atmosphere of trust, so that people are not threatened, intimidated, or frightened to expose themselves.  Successfully sharing and collaborating this way fosters a spirit of participation that encourages people to continue to contribute their thoughts and ideas.  This leads to team learning and growth across the team, from within the team, and makes them stronger together. 

 

So what is your perspective on blogging within corporations, or blogging in general?  Is there value?  Is it a waste of time? Leave me feedback and let me know your thoughts.

 

Resources