Category Archives: Sumavi

New Adventures: Hello Cisco

I’ve left the startup world and gone back to the corporate world.  Tomorrow is my first day at Cisco where I will be a Consulting Systems Engineer! My role will be customer facing and speaking with customers in the state, local government, and higher education sectors and showing them the benefits of the Cisco Unified Computing System (UCS).

I’ve already met with many on the team and it turns out the Cisco office is walking distance from my house (about 2 football fields away!)  I had no idea it was even there and I’ve been in this house for 6 years!  I’m looking forward to less travel and becoming more acquainted with people in my own backyard.  In the last 5 years, none of my customers have been in the state, so meeting the good neighbors here in Oregon is definitely something I’m looking forward to.

As far as my old company Sumavi, I can’t express enough how great it was.  The business was going very well.  We were making money and we were providing good services for our customers.  The people I worked with were great too.  They were eager to grow and had good work ethic and I am thankful for the chance they took on me to start a new venture.  The company will still go on without me.  I’m not sure what the strategy is going forward, but I could certainly direct you to the right person if you are interested.

So why would I leave all that?  Well there are a few reasons:

1.  I was focusing too much of my efforts on services.  Perhaps we could have limited the scope of our support contracts and gone for something a little different, but it was good to provide services and I think we really helped our customers.  Writing software is more of a passion to me than doing services, even though I really do enjoy making things work for customers.  But spending so much time with customers gave me no time for development.

2.  I wasn’t focused enough.  Automated IT services has a ton of different fronts:  Image catalogue management, making a VMware plugin, making a Puppet like rules engine for xCAT? doing something with KVM, exploring integration of xCAT and OpenStack…  Our main objective was to create a usable GUI for xCAT.  That we accomplished.  But xCAT itself suffers from the same problem I had:  Lack of focus and being pulled in too many directions.  I don’t think most people know how great the xCAT VMware support is.  The xCAT KVM support is equally as awesome and Jarrod has done a ton of great work on it.  But anyway, focus is the key and I don’t think xCAT has that, nor did I.   We made VMware solutions, KVM solutions yet most of our customers wanted bare metal solutions…

3.  Cisco just made me a great offer and is a great opportunity.  The IDC data just came out and Cisco has 9.4% market share in Blade Servers and is only growing.  The people that I met who work at Cisco love it and have said all kinds of things as to why it is such a great company.  I didn’t really go looking for the opportunity, it just kind of happened and I’m thankful for it.  I’m also very excited to see how it goes!  Learning more about UCS and VMware solutions sounds pretty cool to me.

I feel very fortunate that I’ve been able to work at a startup and have the experience.  It was fantastic and I can’t help but think someday I’ll go back to it.  Here are two lessons from this startup to add to the millions of other startup advice:

1.  The team is the most important thing.  Know who you are going to work with and understand what everyone brings to the table.  Make sure you understand exactly what people will be doing and have it well defined at first.  In addition if something happens to the business and you don’t understand it, don’t brush it off, have straight talks and figure it out so that it doesn’t eat you up for months afterwards.  Better to get that stuff out ASAP!

2.  Conviction in your strategy, focus on the strategy and execution of the strategy.  Get the conviction first, then follow with everything else.  Even if you’re wrong it seems that conviction will get you farther than if you don’t stick with the plan.

As a kid I used to start up rock bands of all kinds of things:  Funk, Country, Alternative, etc.  As an adult, I can see myself doing the same thing:  Launching startups like they are rock bands.  Well, for now, I’m content with Cisco and maybe I will just launch another rock band.

Another Reason for xCAT

Another testament of the power of xCAT was shown to me today.  We had a machine with an amber light on it, meaning:  “Something is wrong with this server”.  The system engineer came out and reseated everything.  Then they went through and replaced the entire system board thinking that would help.  When that didn’t solve it, they replaced the power supplies.  When that didn’t solve it, I finally said:  Ok, let me take a look.  This grasping for straws in the dark is quite frustrating when managing hardware.

I ran the xCAT reventlog command and cleared the hardware log.  Then we ran it again after the amber light turned back on.  WeI then got the following:

# reventlog n316
n316: 04/11/2011 06:57:59 Event Logging Disabled, Log Area Reset/Cleared (SEL Fullness)
n316: 04/11/2011 06:58:05 System Firmware Progress, Unspecified (Progress)
n316: 04/11/2011 07:01:02 Fan, Lower Critical - going low (Fan 3B Tach reading 0 RPM with threshold 1872 RPM)

So I said:  Replace that fan.  They did.  Problem solved.  Then I looked at my syslog and found:

Apr 11 07:01:19 xcat1 xCATMon Event: SNMP CRITICAL received from hs316-imm(UDP: [172.20.3.16]:623). CRITICAL: Fan, Lower Critical - going low (Sensor 0x45)

In other words, xCAT already had notified us that the there was a problem!

Most system management tools focus on deploying hardware and ignore the very real problem of managing your hardware as well.  xCAT does this on multiple levels and is extremely helpful for debugging hardware errors.  That SNMP trap had come as an SEL.  xCAT has built in functionality to decode IPMI events into real meaningful messages.  Like:  There’s a problem with the fan.

Had we turned to xCAT before the system engineers got on site, we would have saved 1-2 man days.  In addition, we would have saved a perfectly good planar board.  Hardware vendors gain a lot by using xCAT.  Those savings alone, had I not been busy on other things, or had someone else known the power of xCAT could have saved about $5,000.  This is just one case and there are others as well.

Our job at Sumavi is to make it so the power of xCAT can be easily packaged, harnessed, and digested by everyone easier.  Its a difficult task and one that we’re constantly working on, but we’re getting much better at it.

css positioning: relative and absolute

We were working on our menu bar and the css was killing me.  So after finally reading some stuff on the web and some experimentation I figured it out. Basically, it came down to these two rules:

Rule #1:  Absolutely positioned elements use relatively positioned elements as anchors.  If no parent relatively positioned object exists, then the <html> tag is used.  (this means it will appear in the top left if you set left: 0px and top: 0px)

Rule #2:  Relative positioned objects show up where they would if they were the default “fixed” object.  However, in order to actually display them there, you need to set display: block.  (I think mine were inline or something)

Here’s a snippet of my css code that works:

ul.navbar
 display: block
 width: 100%
 height: 36px
 clear: both
 list-style-image: none
 list-style-position: outside
 list-style-type: none
 
 // nodelist dropdown is the only li in this menu that has a dropdown list.  Therefore, its the only one that is relative
 // the other li's are the default fixed.
 li#nodelistdropdown
   position: relative
   display: block
 li  
   text-align: center
   a   
 
     cursor: pointer
     float: left
     height: 36px
     width: 162.83px
     background: #ccc
     text-decoration: none
     
     span
       line-height: 36px
   a:hover
     background: #aaa
 li a.active 
   background: #aaa
 
 // this is the second dropdown within the menu list.
 // notice that since the width of the containing elements are 162.83px this
 // item is shifted left 162.83px so that it aligns with the 2nd tab.
 ul.menulist3 
   top: 36px
   left: 162.83px
   position: absolute
   z-index: 99

 ul.menulist3 li
 margin: 0
 padding: 0
 clear: both
 text-align: left

 ul.menulist3 li a 
 float: left
 text-decoration: none
 padding-left: 10px
 background: #fff
 border: none

User interface design

At Sumavi these last few weeks we’ve been waging war on our user interface design.  Its been great, and I think we’re winning but we’ll wait to hear more from our users.  We will never be satisfied and we’ll keep looking to improve it.  So as we continue to research human computer interface design there have been a few books, quotes, and lessons I’ve picked up that I wanted to write down in one place.  Here they are in no particular order:

1.  “Perfection is reached, not when there is no longer anything to add, but when there is no longer anything to take away.”
Antoine de Saint-Exupéry (Terre des hommes)

This has been a great guideline as we’ve been looking at the interface.  We have to balance out “does it really have to be there?” with “is it obvious?” or “are common actions difficult to get to?”  With the Sumavisor its all about provisioning.  So provisioning actions and the things we want users to do (like add their picture) need to be easy to see.

2.  “People perceive more aesthetic designs to be easier to user than less-aesthetic designs — whether they are easy or not (Kurosu and Kashimura 1995).    Additionally, good aesthetics have been found to create a positive attitude toward a design, to make people more tolerant of design problems, to aid creative thinking, and to aid in problem solving (Norman, 2002)”  — From The Essential Guide to User Interface Design by Wilbert O. Galitz.

We battle this one with where we should put our time.  For example, some of our problems have been:  Do we spend time adding more functionality or do we spend  time improving the design?  Do we spend time on art, or do we say: “Good enough” and spend more time making the Sumavisor more capable.  Unfortunately, you have to do both.  However, what this quote has shown us is that we need to give more priority than we have to the design.  After all, we want people to have a positive attitude towards us :-).

3.  People are very task oriented.  One book talked about how adults, when asked to go look for something in a drawer and bring it back will find the object bring it back, but will notice little else.  So if you ask them:  “Oh, did you notice if there were any scissors in the drawer while you were there?”  Most people won’t even notice.  (Kids however, the study showed, noticed a lot more).  This shows people’s tendencies to filter everything out and focus on the task at hand.  Good design makes it easy for them to do this. Bad design frustrates people when they can’t do it.

In that sense, we’ve been asking ourselves:  Is this obvious?  It gets really hard when you’ve been doing it everyday, cause you have to step back and think:  Hmm… what would I think about this if it were the first time I had seen this.  What would I say?  Could I perform the task easily?

4.  Testing on users

We have some people that knew all about what we were doing and had seen our stuff from the beginning and all the changes.  So we asked someone to provision 2 machines.  He did it easily, but it was surprising to us to see how he did it.  It made it more apparent to us that we needed to change the design and make things more obvious.  One thing about the user tests we learned validated this statement that we read:

“In the overwhelming majority of cases, words are more meaningful to users than icons.”

Its nice to have icons too, but its hard to introduce new icons to people who have never seen them.  For example, what is a good icon to deploy or provision a machine?  We’ve made a few of them, and once you’re used to them they’re fine.  However, there is still a learning curve with icons!  So perhaps putting words by them will make more sense.  In one case, we removed our icon bar and changed it to be words with icons.

5.  According to one book, there was an IBM study that concluded: for every $1 invested in user interface design the payoff was $10-$100.

That study gives quite a big range in payoff doesn’t it?  In fact, I’m sure if you looked at the curve they were using to do the study, you might find that some investment in user interface design has $0 payoff :-).  (Or negative if the design was wrong).  It was also funny to read how many books justify the need for better human interface design.  Mostly I think they were preaching to the choir, but on the other hand, maybe they’re just trying to give ammunition to the choir for when they go out and preach the gospel of user interface design to people they’ll be armed.

6.  Some user design parts are NP-complete problems.

When we did the header for the Sumavisor, it was totally easy.  Simple node range search bar with menus to let you find the places you want.  But other parts, like the information displayed on node ranges, or individual nodes still is a huge challenge for us.  We like what we’ve done now and had to abandon some things that we did.  But I still feel like we’re looking for the solution.  I am however satisfied (for now) with what we came up with, but there’s still some work on what we’ll have to do.

7.  Working in Groups

I’ve found through this that my ideas, as good as I think they are, are always made better, or changed by talking them out with people.  On the other hand you have to admit when other people’s ideas are better than yours you need to go with them.  One issue of course was the color.  I had come up with a rainy day Portland theme, which I liked but pretty much everyone shot down in favor of a happier more trustworthy blue theme.  Finally when my wife said that the rain color looked dead and depressing I had to admit that I was probably wrong with the Portland rainy day theme for the Sumavisor.  Oh well.

The other thing that we realized is that internally, we don’t like a “big unveiling”.  So from now on we decided to talk them out and decide on things before setting out to work.  This has involved sketching and powerpoint drawings.  This can be frustrating since we’re coders and its much easier to say: Sod it!  And just edit css files.  But using this approach gets the best ideas out and gets rid of the usual slew of crappy ideas that I’m apt to have.

What have you learned about user interface design?