Saturday, January 31, 2009

Loving my $199 Computer

I started this post last Sunday, when I bought this computer that I am using to blog from the airport as I am awaiting my flight to the sprint (see last post).

My First eee

In late 2007, I bought the first generation eeePC from new egg the week they came out, for $399. I tried out the Xandros based distro that came with it, but the repositories just really lacked software. For instance, I couldn't install mysql and Rails. Since I mostly wanted the thing for work on my website while on the bus to and from work, the installed distro just didn't cut it. Fortunately, I had a smart friend at work who was able to get Ubuntu running on it. So my old eee may be the first eee to run Ubuntu (of course some engineer at Canonical probably got it set up first, but still).

And use this thing I did. My first eee is definately my favorite computer ever. I could have it with me all the time, I got a ton for work done on it, and the thing "just worked" through several successive installs of vanilla gutsy to eeeXubutu, and back to vanilla Intrepid. The very small size was an asset to me, not a liability. It was a tad slow, especially Firefox tended to bog when there were a lot of tabs open, especially when the pages had embedded flash. However, this was a small price to pay for the pure utility of the thing.

New $199 eee

So the other week I am at BestBuy to pick up a big USB hard drive for doing backups, storing media, etc... and I see an eee for $199. It looks the same as my old one, but with a bigger screen. After a few days I decided that I had to have it, so I went back and picked it up. Serously, I bought a computer for $199. I also parted with $25 for an 8 gig compact flash drive.

You can read all about the eee family on wikipedia. This one is a 900A, US model.

Comparing the Computers

As you can see from the picture the new one (on the right) is slightly bigger. It also comes with a dual core running at 800 mghz instead of a single core running at 660mghz. It is reallynoticibly faster. It also has a bigger 1024 X 600 resolution screen and a gig of memory. On the down side, the new one lacks a web cam and has a smaller battery.l The powe supply is a little different, it's like a small traditional laptop power supply. The old one was a little simpler, but could be hard to find a plug that didn't take up the space of two plugs on a power strip.

Installing Ubuntu
Naturally, I didn't even consider using the distro that came installed on it. I already had a USB disc ready to install Intrepid, so I grabbed that. I plugged in the new machine, and attached it to ethernet.

After starting it up, it took some doing to bring up the boot device chooser. I had to hit ecs and then tab at just the right time or it would just dive into booting up from the "hard disc". I just immediately ran the installer, and Intrepid installed like a dream.

I followed the prompts to install all of the updates, which is somehting I always do after I install. I knew from experience that the vanilla kernal wouldn't have support for the wireless. I took a moment to confirm this, and in fact, the wireless was not detected.
To fix this, I simply installed the custom eee kernel availabel from array.org. The instructions are quite easy to follow. I rebooted, and sure enough, wireless worked.
While I was at it, I also went ahead and installed the driver for the touchpad. Otherwise the incredibly over-sensitive touchpad randomly inserts the cursor all over the place as my thumbs touch it while typing. Who uses tap to click, anyway?

Result?
So now I have what seems to be a very fast and very small computer, but with a slightly more workable screen size for things like using launchpad and such. I loaded a movie and some youtube clips on my sd card to watch on the plane.

I still have a soft spot in my heart for my first eee. In fact, I have it with me now, and plan to let the mobile team and the Dx team use it to test out there new stuff on it. After that I think I may give it to my son. The size, protability, and functionality may be just perfect for a 13 year old, and it would let me get rid of the beast of a laptop that I keep around for him and 0thers to use. On the other hand, I may just keep for myself, just cause it's still so cool. I could just plop down $199 for another 900A for the boy, after all.

Sprint

At least once during each release cycle the platform team convenes for a week for a "sprint". This is a time to meet and work face to face on things. It allows for high bandwidth collaboration, a chance to get you hands on different hardware, and also a chance to have a beer or two with teammates and reconnection on a social level.

The Jaunty sprint is in Berlin, and I am at the airport relaxing for a few hours before my flight (Seattle to Paris, and then Paris to Berlin). I left very early so that I could relax at the airport and not feel rushed and such. However, my trip started out with a bit of a jolt. After taking the bus to the airport, I was in front of the Delta ticket machine at 9:40am. But the machine couldn't find my flight info. In the past I have found that this is not a good sign. So I headed for the counter.

The Delta counter people are always super helpful, and this was no exception. I handed her my printout of my flight info. She punched the computer a few times, and then read out my itinerary (Seattle to Paris, Paris to Berlin, Berlin to London, London to Atlanta, Atlanta to Seattle). Yup that's me.

"That itinerary has been canceled."

So at this point, I believe I had a true cardiac event. I think my blood did literally run cold. As images of $10,000 flights and seriously pissed off bosses began to form, as well as blurry mental youtube videos of dope slapping the travel agent began to crystal and transform,

"It was then immediately rebooked under this other confirmation number, that's why the machine couldn't find it."

Ok, this was good to hear, but the damage was already done. I think about a year's worth of adrenal was already coursing through my veins, and of course I couldn't be 100% confident that all was ok until I actually had a boarding pass. I didn't feel like I was handling the stress very well, and told the Delta agent this. To reassure me, she printing out my full itinerary, and told me that I could check in with Air France when they opened, IN TWO HOURS.

This was not good, as I didn't feel that I could relax much with the stress of not having a boarding pass. Fortunately, it turned out that Air France opened at 10am, not noon, so I only had a short wait. Suffice to say, I'm chilling out (with a boarding pass) and I'm catching up on some blogging.

The team generated a list of goals for the sprint, but I have a few goals relative to ramping up as a Ubuntu contributor that I think I will make a lot more progress on with my team there to help. Before I leave, I would like to:
  1. Check out code from a launchpad project, make a change, and submit the change as a patch to the project owner.
  2. Create a project and package it in a PPA.
  3. Log some (quality) bugs to an upstream project.
These are basic workflow issues for my team that I haven't mastered yet. Some other things:
  1. Figure out how to get an overview of all the UI changes that will happen in Ubuntu, so I can ensure they are all good changes from the users' point of view.
  2. Set up a system so that it is easier for me to monitor my teams progress towards fixing milestoned bugs. I already have some liblaunchpad code to get a start on this.
I'm also looking forward to raising a glass with all these folks with whom I have spent so much time interaction virtually over the last 8 weeks.

Monday, January 26, 2009

Add and Remove Programs and Managers

Adding Programs in Ubuntu is Cool
One of the greatest things about Ubuntu is the repositories. In fact, last year when I got my first eee PC, I had to install Ubuntu on it, as the Xandros based repositories a) didn't work, and b) didn't have the software I needed, like Rails for instance.

This functionality is available from the Applications -> Add/Remove... menu item.
This brings up this huge list of literately thousands of applications that you can search for, install, and try out. Furthermore, there is essentially no risk to trying them out, as they can be un-installer as easily as they can be installed.
This functionality is often identified as a major cool think by those "I tried Ubuntu for a week" blogs. So we know that it's working somewhat.

Could Add/Remove... Be Cooler?
So the topic came up in email that:
  1. Given the app store in apple (or whatever it is called)
  2. and the app store in Android( whatever it is called)
  3. Perhaps the Add/Remove... functionality could be renamed to invite users who are familiar with these other app stores to give it a try
There was a quick email thread that discussed this. Thoughts were shared that included:
  1. Really, the whole system should be redesigned to be easier to use and cooler. See here.
  2. "Add/Remove..." already works, so there isn't a lot to be gained.
  3. Surely we can come up with something sexier than "Add/Remove..." for a name. It should be a "place" where people go to get apps, not just a task to do.
So I followed up this smaller email thread with a call for comments to the ubuntu-desktop mailing list. I followed that up with a discussion in our regular IRC team meeting. I won't bore you with the details, but the result was that the team was okay with changing the name under certain cirumstances. See our meeting minutes here.

So What's a Transitioning Manager to do?
So I took that decision and wrote back to the initiator of the thread that basically, we'll happily make the change if marketing or design comes up with a better name than Add/Remove...

She wrote back that it's my call, she was just making a suggestion.

So why is this interesting to me right now? Well, I've been managing software projects for a while. Many of them, like Ubuntu generally (obviously) and Jaunty specifically, I did not initiate, or was not present during the initiation.

Of course, managing is multifaceted, but part of it is managing the product and projects that comprise it. I find that I go through a set of phases when I start as a manager new to a product.

Phase 1: Monitoring - I understand the goals and status of the product, and I can report on them and keep everyone in sync.
Phase 2: Guiding - I can foresee problems for the team and help them avoid them. I can assist other teams. I can help resolve problems as they arise. I can facilitate discussions and team decision making. I can help the team achieve the goals it has set out for itself. I can continue to monitor.
Phase 3: Leading - I have independent thoughts about what the product should be, how it should be developed, and how the team should work. I can work with the team to integrate these ideas. I can integrated better ideas that come from the team or other sources into my ideas. I can continue to guide and monitor.

So clearly, what happened here was that I took a Phase 2 approach (which makes sense consider this was my seventh week in the job). However, the request bounced back for a Phase 3 approach.

So what to do? I do have some independent thoughts. Namely:
  1. I feel that Add/Remove... is working well enough. Existing users are irritated by changes that don't really change much.
  2. We could probably do a great job reinvesting in this feature area and making the Add/Remove... experience really great, and worthy of a name change.
  3. I haven't heard of a name to change it *to* that is cool enough to make it work it.
  4. The community of developers and contributors, and users have not had the chance to consider, respond, help, etc...
So, here's what I'm going to do:
  1. I'll let the desktop team know that I think we should invest in this area in Jaunty +1, and see what they think.
  2. Bring the designs, etc... to UDS in Madrid, and kick this off proper.
  3. If we come up with a good design given the normal Ubuntu processes, then let's do it.
I would love to see a really sweet experience that exceeds the Apple experience in terms of delighting users. So let's do this right.

Of course if I get feedback from the Desktop team that we should take another approach, I will incorporate that feedback, as that's a critical part of leading a software product team.

Friday, January 16, 2009

Ubuntu Rocks the Mobile Broadband

As a Canonical employee, I work at home most days. Generally, I consider this a feature, not a bug. However, I'm also a people person, so when I heard that the Portland area folks have a monthly meetup, I wanted to get down there and reconnect with everyone. Also, bryce, the incredibly productive X guy on the desktop team is planning to attend.

So this is about a 3.5 hour train ride. Seven hours on the train. Could be productive if:
1. I have power
2. I have Internet

The first one was easy, I bought a business class seat for $14 extra dollars. Gives me a more comfy seat, a $3 coupon at the snack bar (I got some juice with it), and power supply.

The second one finally motivated me to go down to the Verizon store and get set up with mobile broadband. So here I am, on the train, blogging about being onthe train blogging.

Really, I wanted to capture the experience of setting this up and using it with Ubuntu while it was still fresh in my mind.

Setting It Up
At asac's suggestion, I grabbed my eee, which is the main computer I plan to use it with, and took it with me to the store. Of course I am running Intrepid on it. The sales guy seemed pretty happy to have a motivated customer :)

Picking the Modem
So first, you have to pick a modem. They are priced ridiculously high, but you get a discount if you buy a plan, which I needed. There were two modems, the $30 one with a plan, and the $70 one with a plan. I went with the $70 one because it's articulated, and also has a secondary usb connection so you can give it an extra power boost if you are in an area with poor reception.

These modems are just simple looking USB devices. Kind of like slightly oversized USB thumb drives. Another advantage of the one that I picked is that it is white, so matches my eee nicely.

Trying it out
So I grabbed the display model, and plugged it into my eee to see what would happen. Nothing initially appears to happen, but when I dropped down the network manager applet, "Auto mobile broadband (CDMA) connection" was already there. I happened to be connected to the open wireless network from a nearby coffee shop at the time. On a lark, I tried connecting (remember, this is a totally uninitialized/activated modem). The result: a complete freeze of my screen! I had to hard reboot my poor little eee.

Activating It
So I decided to actually buy the thing and the plan, and then try again. After signing in a couple of places, I was on the hook for a data plan, and I had my device. It wasn't real clear how to activate the thing, and the Verizon sales guys were basically freaking out, because they didn't see how it could possibly work without their Verizon software, no matter how often I reassured them that Ubuntu would take care of us.

In any case, I tried connecting again, and Ubuntu froze again. Another hard reboot. After the reboot, I turned to Google. In the meantime, they looked it up on their internal support site, which claimed that there was a version of "VZAccess Manager" for Linux. However, there wasn't (at least not that I could find, or they could find). "Are you sure that these .exes won't work"?

I opened connection manager, went to the 3g tab, and saw my device there. I went to edit it, but it was not at all clear what info the thing needed. As far as the sales guy knew, there was no username or password.
Putting the phone number in for the username is not something I would have done had I not read to do it on the forums.
I tried the add button to add a new one. This implied that Verizon was not supported, which didn't seem right to me. Fortunately, I still had a connection to that open wireless access point.
No Verizon? Does this mean I'm sol?
The combination of Google plus the forums, however, did have an answer. I found a posting from Intrepid Beta days, which gave me four critical pieces of information:
1. Verizon worked
2. As usual, it's easier to set up on Ubuntu than Windows or Mac
3. You put the phone number for the modem in the username field
4. You need that figgin' vzaccess manager app to activate the model

Honestly, putting the phone number in the username field does not seem very intuitive to me. However, I did NOT want to deal with finding a Windows machine just to activate the thing, so I told the sales guy to do it for me. He took the thing back into their office. It took him a while to download the app and activate it, so better him than me.

Connecting

After that, I turned off the wireless connection in the NM applet because now I have a superstition that having them both active caused the freeze (though I haven't tested this out for sure). Also, I wanted to ensure that any internet connectivity I did get was through the 3g card and not the wireless. I plugged the thing back in, filled in the form in Network Manager, picked to connect from the applet, and it connected quite quickly. It also displayed a nice cell tower icon to show how I was connected. This is important, as these plans are pricey.

The sales guy was very happy that it worked. I told him to expect more and more computers running Ubuntu to start showing up in his store.

Summary of Activation Experience

This whole deal took me about 30 minutes. It's fortunate that I had an open access point to get the information that I needed. It wasn't the most intuitive process, but it wasn't really that complicated either. And this is pretty cutting edge stuff. It was hard to explain to my wife why having this thing was important to me, and how it was useful. So all in all, I'm not sure how many users would skate through the setup. Perhaps we need some kind of activation wizard?

Using it
Integration is complete and deep. The cell tower icon provides very strong feedback regarding the connection type.
So I've been using it all morning, for about 2 hours, and I am stoked. Besides being super useful, Ubuntu is handling it like a dream. Smooth as silk. Like butter.

I started with a bus ride this morning to get to the train station. First thing I did was disable my wireless, which I always do because there are so many open access points as the bus goes through the University District that I don't like to be asked if I want to connect every block or two (I know I can disable this, but normally I find this feature handy). I plugged the modem in, chose to connect from the NM applet, and within a few seconds I was connected, and my eee just acted normal. I got email, was on irc, got information from my wiki, etc...

The first thing I was interested in was what happened when I went through the bus tunnel, where there is not cell phone connection. Not surprisingly, my internet stopped working. I closed the lid, got off the bus, and jogged to the train station.

When I got on the train I plugged my eee into the power, and woke it up. When it woke up, the NM showed it was disconnected. I clicked to connect, and within seconds was online again.

While on the train, the connection has come and gone twice (I assume due to changing networks - I don't know too much about how cell networks work), but it always picked up seemlessly, like with a dodgey wireless connection. Also, while driving through the country, it dropped the connection altogether. About two minutes later I chose to connect from the applet, and it connected in about 15 seconds.

Speedwise, it doesn't feel quite as snappy as my wired DSL line, but it feels snappier than many wireless connection points. Since I am limited to something like 5gigs of data transfer per month with my plan, I haven't tested download speeds yet.

So far all I've uploaded are the images for this blog, and it seemed to take a while, but I was way out in the coutry at the time, so the cell connection may have been week.

Conclusion
Two big thumbs up for Ubuntu plus Verizon! Let's talk about making the activation experience smoother, but this rocks!

Thursday, January 15, 2009

Help on the command line

I'm starting the process of identify adoption blockers in Ubuntu. I've been surveying various blog postings and articles of the "Is Ubuntu Ready for Mainstream" genre. These seem like easy articles to write. They are typically in the form of a list of technical issues that need to be solved, a list of missing applications, and then some guidance regarding unquantifiable properties of a system, such as "be easier to use".

Here's an example:
http://jafferhaider.wordpress.com/2007/03/11/why-ubuntu-isnt-mainstream-yet/

Notice the first point of this blog, "The Ubiquitous Terminal". This is a common theme. Many articles and blog posts mention how terrifying the terminal is to mainstream users.

Now, as far as I can tell, the command line only comes into play for users when they are getting free help on forums or such. And it is very common to see help of the form:

[code]
sudo apt-get such-and-such
[/code]

What might be the cost and benefits of help being provided in this manner?

Benefits
  1. It is so much more efficient than trying to explain to someone how to someone how to use GUI applications for similar tasks. Many more people get help.
  2. Some tasks don't have a GUI equivalent (not that this is not limited to Linux distros).
  3. It's so much more likely that a user will accurately copy and paste in a command than follow instructions for operating a GUI.
  4. There is output that can be used to confirm that the operation was successful, and can be used to further diagnose and trouble shoot.
Costs
  1. Supposedly, users balk at this, and think that Linux is too "techy" or "advanced" for them.
  2. Users don't always learn from help provided in this manner.
Here's the thing. I'm not sure that this first cost here is a true cost to every user. I know that bloggers believe that the command line leaves a bad taste in people's mouth, but I haven't heard this from users. Note that I also haven't heard from users that it doesn't. I'm just saying that it's not clear to me that other OSs are seen as more comprehensible or simpler by users who are instructed to step through a complicated series of dialogs and user interfaces instead of instructed to paste in a few simple commands.

In terms of the second cost, this is something that my Mom told me always pissed her off when we were kids. We had a Commadore64, and sometimes (frequently) she would get stuck. She told me a couple of years ago that she would ask me for help, I would push her aside, type some (to her) cryptic commands into the keyboard, and leave. I couldn't be bothered to help her understand what to do and take care of the problem itself. She never learned.

Looking at the benefits, they pretty substantial, and I'm not sure that they don't outweigh the costs in a big way. I'm still open minded, but I don't want to jump to conclusions. Perhaps the terminal is an overall positive in terms of driving adoption and we should treat it as such. I think it does distinguish Linux distros, so some more research in this area is warranted.

Wednesday, January 14, 2009

Obligatory Introductory Posting

This is my third or fourth "job" blog that I've started. As is usual for a first blog post, I have some plans for how I will "use" the blog, but I have enough experience to know that either I will find writing it to be less satisfying than I thought, or that the purpose of the blog will mutate based on it's usage, especially if I end up with readers.

So, what is this so called "job" to which I am referring?

Well, here's what happened. I started using Ubuntu after the first release, I believe in 2004. I wasn't much of a Linux user then. I used Mac OS at home, and of course Windows at work. However, I had been using Fedora for about a year. I was mostly using it to get back into C++ programming, though I also started writing a web site using Fedora as my development platform. I gave up on the C++ programming after I started using Ruby on Rails.

Interestingly, I knew from using Fedora that I was infatuated with Linux. The GNOME experience just seemed better than both Windows and Mac. Better in different ways, but better. Like simpler, crisper, more transparent. Then I tried Warty, and my infatuation turned to love. I knew that at some point in the future my career was going to be based on Linux. But how?

But is was more than the quality of the technology that fascinated me. I was inspired by the "Open" in open source. The fact that all these people gave so freely to others, and that anybody could participate. I felt then, and still believe, that open source is going to provide economic opportunity to people across the world. Whatever their economic status, whatever devices or computers they have, they will be able to make Linux (and I use the term here in the widely inclusive sense) do the things they want and need, and no one can tell them not to. This strongly touched my dogooder nature.

This desire to work in open source combated my desire for security for my family for a couple of years, and then finally, in 2007, I simply quit my job so that I could figure out how to build my career around open source. I didn't have a good plan, but I had to start.

So I ended up with a great job working on a web site. The site was built on an open source stack, and Ubuntu was in heavy use by the tech team.

Again, this was a great job. However, I had applied for the job of "Engineering Manager, Desktop" for Ubuntu. This is a position managing the development of the one product that I used and loved the most. Plus, I would be joining a killer team. I mean getting to work seb, pitti, asac, etc... I'd be crazy to not at least apply, right?

Suffice to say, I got the job. Great job to dream job. So, I started last December 1st (2008). A week to get my sea legs, than off to UDS (talk about being shot out of a cannon). Now I'm almost six weeks into the experience, time to start keeping a diary.

What am I going to post about? I have few thoughts:
  1. Keeping a record of my acclimation to the job and working with the teams. I would like to be able to look back and see how I adapted (or didn't if that's how it turns out).
  2. Keeping a record of thoughts about how to guide the development of the desktop.
  3. Records of my experience as a Ubuntu user, informed by my position on the "inside" of Canonical.
  4. Rants and ravings, as usual.