Thursday, February 8, 2007

Gift Suggestions for Valentine's Day and Beyond

Although this is written a few days before Valentine's Day, this post can be referred to for any gift -giving event to provide gift suggestions for significant others or family or perhaps even yourself!  Of course I think the best expression that someone cares about you is not chocolates of Vermont Teddy Bears or flowers but rather books!  In particular books on computer science, human computer interaction, science fiction or history.  So here, in no particular order of preference, are gift suggestions.



My new favorite for software architecture in fact, besides Shaw and Garlan, the only one I would recommend is Rozanski, N. & Woods, E., Software Systems Architecture, Addison-Wesley, 2005, 0-321-11229-6.  I like it so much that it will be the first architecture book used in my software architecture and design class next time around.  Thanks Larry Bernstein for handing me a copy!



For those of you who like code and love C (very related), this book will have you appreciating it even more.  It stresses the joy of reading code for fun and education.  Spinellis, D. Code Reading, Addison Wesley, 2003, 0-201-79940-5.



(By the way the links are not necessarily the best price for these books, I just spread them around the various on line booksellers.)



These is never enough testing and sometimes the bureaucracy of the testing organizations defy common sense.   A book from Whittaker, encourages all of us to place more thought in testing and appreciate superb testers.  Whittaker, J.A. How to Break Software, Addison-Wesley, 2003, 0-201-79619-8.



As most of you who have recently taken my HCI course know, I am stressing distributed cognition and activity theory as the basis for HCI.  A great HCI primer on applying this theory to practical HCI, that just released a second edition is Sharp, H., Rogers, Y. & Preece, J. Interaction Design:  Beyond Human Computer Interaction, 2nd Edition, Wiley, 2006, 978-0-470-01866-8.



There are some books I run across that I just have to fit into a course.  This book, originated at MIT for a course on software engineering and internet applications, is a gem and it WILL be in some course I teach next year.  Andersson, E., Greenspun, P. & Grumet, A.  Software Engineering for Internet Application, MIT Press, 2006, 0-262-51191-6.



Finally for the science fiction fans in the audience three can't miss books from three superb authors.  In fact any book from these three are a superb read and I have read all of Gibson's books and most of Mieville and Stross (and intend to read the rest).  The first is from William Gibson, Neuromancer, the novel that started (or at least popularized it, there were precursors such as Philip K. Dick) the cyberpunk genre of science fiction and a superb read.  The second is from China Mieville, Perdido Street Station, a mix of science fiction and fantasy (this says a lot because I typically detest fantasy).   For really modern hard science fiction Charles Stross  and his novel Accelerando stands out in the pack. It is a mind opening (might I say from my generation, mind blowing read).   What makes them very special in the science fiction ranks is that they are all superb writers.



I hope this provides you with a great list that you can hand others or use yourself for gift giving to you on any special ordinary occassion.  I hopefully will be back soon with some  student blogs. Later!





 












 




Tuesday, December 26, 2006

IVR versus Person

A recurrent discussion in my HCI classes is relating numerous user experiences with horrid IVRs  (Interactive Voice Response) and sharing techniques for cutting through the menus to contact a real person. I always cringe when I hear the complaints, since I have managed folks creating IVRs and I appreciate all the work they do to try to make such systems accurate, navigable and palatable.  Unfortunately, in many instances, the lack of flexibility in the telephony interface makes this difficult  at best.  The goal of many users encountering IVR systems is getting to an actual person.   Admittedly that has generally been my goal too!



However late last week two encounters in one day convinced me that IVRs done right can actually avoid aggravation.  My first experience that day was with XM radio. <digression> XM radio is a fine product but lately I have found I was not using it -- part of it was that it was a portable version and with my portable GPS and my cell phone, there were just too many darn wires floating through the car.  My next car will have integrated GPS and  some brand of subscription radio but for now the cell phone and GPS are more important. </digression>  I wanted to cancel it.  So I cruised through the IVR response trees and was finally connected with a person.  The attendant asked for all the information  including my equipment's ID and my address and then asked how she could help.  I said I wanted to cancel the service, she asked why, I told her I did not use it. She said okay she would transfer me to the cancellation department.  After a short wait, another attendant answered, asked again for all the information, seemingly bit by bit (I did grumble), and then asked how she could help.  Frustrated beyond belief I said I thought this was the cancellation department and I wanted to cancel my service.   She said it is the cancellation department and you guessed it - she asked why I wanted to cancel. After a minute she returned and stated that the refund check will be mailed to me in 2 to 3 weeks.  Of course I had to ask her for the amount.  Needless to say this entire user experience was poorly done.   Lest you think it occurred because I was canceling, my other two experiences with XM Radio customer support were similarly bad and that was when I asked to renew my subscription, to give them money.



Several hours pass and I am home.  While cruising through channels, Kath found pillows on QVC that were a great price.  I said I would order them.  I dialed the 800 number from our home line and the IVR asked for our pin. (We were a repeat customer.)  Since pillows were on the screen at the time it asked it that is what we wanted to order.  I said yes, indicated color and size with two more menus and the IVR repeated the order (all canned, pleasant, non synthetic speech) and that was that.  It literally took less than 2 minutes!  In 5 minutes the order was confirmed on my email account.  (I never received a similar confirmation from XM.)



Compare the two experiences.  QVC was optimized to save me time and to insure that the order was accurate.  Since I dialed from my home phone ANI, Automatic Number Identification, suggested my potential identity and providing my pin confirmed it.  The IVR was linked to programming so it knew what was likely being ordered and had a crisp script to get the necessary information.  In contrast XM Radio designed their IVR so that it would accommodate their fragmented systems.  Information was not transferred from interaction with the IVR to attendant 1 and from interaction from attendant 1 to attendant 2.  It accommodated their needs, not their customer's needs.  Additionally there was no confirmation even though it would have been simple to launch an email and check for accuracy.



In my adventures last week with XM Radio and QVC, I feel a bit more enthusiastic that someday I will want to access the IVR instead of a fallible attendant and that the hard work and design of HCI specialists and IVR developers will pay off.  At least in the QVC instance, the user experience was superb.  Note that the QVC instance made use of one of my pet HCI principles, the best interface is the one that has been eliminated through automation.



Sorry for such a long post!  I hope to accelerate through my back log over the next few months and hope you all are enjoying the holiday break and wish you all the best in 2007!  Later!



Thursday, September 21, 2006

First One Web Day Tomorrow!

I have already provided an entry on One Web Day and for those of you that missed it please check back a few posts.  The first One Web Day is tomorrow, September 22nd, and I encourage folks to check on the One Web Day Site for activities in their area.  For folks in the New York City area, the festivities are at Battery Park in NYC. 



Some information on the NYC event:



Download sample_1.pdf

Download the_battery__map_of_the_battery_with_stage_and_truck.pdf



If there is no event in your area, consider starting one next year.   Contact me if you need suggestions.  We hope to enlarge the role of Universities next year.



The web is about community and this is one day out of the year when we recognize, celebrate and work to enhance and broaden that community.  The web is global and so are many of our problems.  If there is one thing I stress in all of my courses it is that communication is the key to successful products.  Communication also is an important factor globally for the same reasons, to understand each other and work  together to improve the process and the result!  Yes, I am showing my stripes as a child of the 60's!



So at the very least tomorrow, take a moment to reflect on how the web has affected you.  Later!



Wednesday, August 2, 2006

Patterns

As I say many times in my lectures Martin Fowler is an author that seems to write faster than I can read!  If you have taken my Software Architecture and Design class, his name is mentioned many times and he is a very influential methodologist/theorist/pragmatist in Object Oriented design. 



He has just re-released an article, Writing Software Patterns, that can be found on his web site.  It captures many of the things I discuss in class along with introducing you to other pattern mavens such as Jim Coplien.  (If you've ever met Cope, even that web site does not do him justice!)



Fowler also has a great emphasis on "tasks rather than tools."  Read it to discover more.



More soon.  I have an impressive student back log of entries, more on One Web Day, and more about other summer readings.  Later!



Friday, June 23, 2006

One Web Day!

OneWebDay

First, I am back!  Sorry for such a long hiatus but it has been an interesting year with one new course - Information Technology Security and Privacy at the University of Pennsylvania and a major redesign of the Software Architecture and Design course at Stevens.  If you are interested in either send me an email and I will send you the syllabi (I may even make them available at my web site.)


What I would like to discuss today, and will provide weekly updates on, is One Web Day.  One Web Day will occur on September 22nd of each year and 2006 is the first year.  Its purpose is to promote a global day to celebrate online life.  Susan Crawford, a woman of tremendous energy, conceived this idea and has been promoting it everywhere.
So please check out the web site and please get involved anyway you can.  I think it is a great concept providing us a day to reflect on our online community and  to give back to the community.   



Susan said  it well on the One Web Day site:

The goal of this activity is to create a global good news day for
the Web. We also want to encourage collaboration/participation in
online life that goes well beyond this one day in September. Adopt a
nursing home, connect another hotspot — whatever makes sense to you and
your friends — but help people all around the world mark the day as
part of a global celebration of collaboration and participation online.


OneWebDay:  Join Us.  Who’s us?  Everyone.

I feel so strongly about what a great idea One Web Day is that I am on the board.  I am encouraging all of my students and anyone else who visits here to get involved.  If you do get involved, let me know how you are involved.   If you want to help but do not know what to do, contact me. 



Visit again real soon.  I have a backlog and intend to have a busy, blogging summer.  Enjoy your summer!  Later!



Tuesday, March 28, 2006

Documentation IS Rocket Science

As some of you may know, I am an avid space fan.  Larry Klaes (candidate for GBU? - an inside HCI joke) in his mailing group has pointed to an article detailing the issues of reviving the Saturn 1 moon rocket to power the next stage of human space exploration.   Reading the entire article is highly recommended and it can be found here.  It basically details the issues involved when compilling documentation for the retirement of a project that at some future date may be reinitiated.  The problems of incomplete documentation, tacit knowledge in the scientists's heads (to be redundant) and lost documentation and tools for supporting manufacturing tasks parallel issues we have today for many of our large software technical artifacts. 



One advantage software engineers have is that we have very low manufacturing costs for multiple copies (clearly not the case for the Saturn 5 F1 engine).  This clearly helps in keeping old software running.



Some interesting discussion topics would be how do large software projects differ from large hardware projects, beyond the obvious manufacturing issues?  What can we do to better preserve documenation and the knowledge that swims in the heads of the designers?  Is there something beyond wikis?



I have been remiss lately in posting -- I need to catch up to meet my goals for an entry a week. Hopefully soon as the Spring semesters begin to wind down. Later!



Thursday, February 23, 2006

SAC!

Welcome to SAC, a personal initiative to quietly transform the way we build systems.  SAC stands for Simple Accessible Code and is based on the principle that developers of software systems should be able to understand the complete body of code in their systems.  Complete body of code includes the operating systems and the languages and tools used to construct the applications.  It stresses straightforward languages, tools and operating systems.  It stresses having source for each aspect of the system, applications, tools, languages and operating systems available to all developers -- true open source!  For a given project at least two of the developers should understand the entire system from operating system to language(s) to tools to applications.  Why two?  Redundancy.



This idea has been brewing in my mind for years.  I am increasingly appalled at the complexity of languages, operating systems and tools.  This has ostensibly been done in the name of productivity and capability, yet it has left us with unreliable, buggy, infiltration-prone,  inefficient and incomprehensible systems.  It is time for a sea change and I hope SAC contributes to this movement.



The final push to make these still formative ideas public was stumbling on C code for Rivest's RC4 stream cipher algorithm in Kaufman, Perlman and Speciner's, Network Security: Private communication in a public world, Prentice Hall, 2002, isbn=0-13-046019-2.  It was less than 30 lines of C code!



The magnitude of this task makes it aspirational for the moment, but I hope to push it as far as possible in the remaining (hopefully many) active years of my career.  My plan is to support it with a web site, a separate blog and publications.  I have some heuristics in the works and will keep you posted on their progress.  My notional schedule due to current obligations is to establish the web site by June.  I will provide you with monthly progress reports.



I know February has been a slow month for my posts, but I consider this to be a very significant one.  As always I would appreciate our thoughts on this new adventure.  Later!