Wednesday, July 30, 2008

Loving My Eee 1000H

I was attracted to the "netbook" market with the release of the initial Eee PC from Asus.  The laptop was cheap and very small.  Unfortunately, it had a really small screen and an even smaller keyboard.  Then the next generation of netbooks was announced including the MSI Wind and the Eee 1000.  These are a bit pricier but still light.  They have bigger screens and keyboards and look quite usable.  I'm tired of carrying my 6 lb. laptop around on trips and so I decided I would take the plunge on one of these new devices.


At first I was attracted to the MSI Wind.  It is a little lighter than the 1000H and was supposed to be $150 cheaper.  When the Wind didn't ship, then shipped with only a 3-cell battery, then raised the price, I looked around and settled on the Eee 1000H.  What follows is my review of the 1000H.


The screen on the 1000H is gorgeous.  It's 1024x768 and is bright and clear.  It has a matte finish so it can be used with your back to a window or even outside.  It is bright enough that I usually run it on 1/2 brightness and it still works just fine.  The Eee has a really cool feature which allows you to change the screen resolution with the press of a button.  You can set it to 1024x600, 800x600, 1024x768 (which seems to cut off the bottom of the screen, and 1024x768 compressed.  This latter mode is very useful for programs that insist on a square aspect ratio.  One other nice feature is there is a button to turn off the screen.  This comes in handy for privacy or saving battery life.


The keyboard on the 1000H has received some criticism for being a little loose.  There is a little flex in the right-side of the keyboard.  It doesn't seem to be fully fastened to the tray beneath it.  It's not bad but does take some getting used to.  The keys are plenty big that I can easily touch-type on it.  The one downside is the right-shift key.  It is located to the right of the up arrow key.  There's no easy way to touch-type like that.  Luckily, there is a very cool utility called SharpKeys that allows you to swap the two.  After doing that, all is well.


The 1000H comes with a 1.6 GHz Atom processor.  This appears to be plenty fast enough for browsing the web, coding, writing documents, etc.  It's not going to set any land speed records but it works fine.  It does run quite cool though.  The Eee doesn't get hot even after hours of use.  I've tried a few older games on the system and it plays them fine.  Anything modern is probably too much for the Intel 945 graphics chip.


The 1000H ships with Windows XP SP3 Home.  I upgraded to Professional so I could join the domain at work.  I intend to try Mojave Vista on it which reportedly works, but I'll wait for my 2 GB memory to arrive first.  I must say that after using Vista for a few years, XP feels very antiquated.


The speakers have some sort of "Dolby Sound Room" thing on them.  I haven't looked into what that might actually be but I can say that the sound is much better than you would expect out of a laptop.


I find the size and weight to be just about right.  The Eee at 3.2 lbs is not quite as light as I expected, but it's pretty light.  The size is small.  It's literally 1/2 the size of my previous Dell Inspiron 6400.  The battery sticks out slightly which actually makes a great handgrip when carrying it.  The system is well balanced and feel very sturdy.  The case is a high-gloss black and does attract fingerprints. 


Finally, the battery life.  I took it to an all-day conference on Friday and it lasted all day without a recharge.  The battery is rated at 4.5-5 hours and that seems to correspond well with my experience so far.


So, am I glad I bought the Eee over the Wind?  Yes.  The Wind is lighter and the keyboard probably doesn't have the flex in it.  However, the Eee has many advantages.  It has 802.11n wireless networking.  The compressed screen resolution is nice.  The touchpad is a little bigger than the one on the Wind.  The Eee can be overclocked via software.  Another advantage is that the Eee can be upgraded (memory or hard drive) without voiding the warranty.


If you want more information, check out these great forums:


http://forums.msiwind.net/


http://forum.eeeuser.com/


 

Tuesday, July 15, 2008

10 Pitfalls of Using Scrum in Games Development

Interesting article about using scrum to manage game development.  Many of the pitfalls are true beyond games development.  The article is well balanced and has advice for how to overcome the pitfalls.  I don't agree with all of the advice, but it is thought provoking.  For example, the article makes a good point that daily standup meetings can be disruptive to the thought process.  It therefore recommends using an electronic means of tracking people that can be filled in at leisure.  I think it too quickly dismisses the collaborative effect of a standup meeting and overplays the disruptive nature.  Sure, it's a disruption, but so is lunch.  Schedule the two together.  :)  I've found that for many projects a daily meeting is unnecessary and instead meet only 2 or 3 times per week. Less disruption, same benefits.


 

Thursday, July 10, 2008

Becoming a Manager: Losing Direct Control

When my wife was expecting our daughter, someone gave me this advice, "When you have your first child, you lose all your free time.  When you have your second, you lose all the free time you didn't realize you still had."  Becoming a manager* can be a similar experience.  When you become a lead, you lose direct control.  Instead, you have to trust what others tell you.  Very recently we had a small re-org at work and I'm transitioning from a lead** to a manager and I'm quickly finding out that I have now lost all that control I didn't realize I had.

As an individual contributor, you have complete control.  Maybe someone tells you what to do, but when it comes to executing, everything that you do gets done exactly how you want it to be done.  As a result, you know first hand the status of your part of the project.  Becoming a lead results in a loss of this control. Instead of doing the work, you have to tell others to do the work.  This results in work being done in ways you may not have intended.  You no longer have direct knowledge of the state of the project, but rather have to rely on what your team is telling you.

Becoming a manager amplifies this state of no direct control much farther.  As a lead--it turns out--you still have a lot of control.  You get to tell your team what to do and (sometimes) how to do it.  You then get to directly monitor their work.  As a result, you have direct knowledge of what they are working on and how they are attempting to accomplish it.  If something isn't to your liking, you can request a change.  As a manager of leads, there is an extra level of indirection added to the mixture.  This extra level of indirection is known as a lead and all of your instructions will be filtered through this person.  They will be applying their ideas of how things should be done before passing on instructions to the individual contributors who will then apply their own opinion before anything is actually accomplished.  This adds a lot more variance to the outcome.

As a brand new manager I don't yet have any tried and true strategies for dealing with this loss of control.  I suspect it means being a lot more careful with what you measure.  At the lead level you are interacting with the individual contributors often enough (you are having 1:1s aren't you?  and scrum standup meetings?) that you have a good pulse of the project.  You don't need to be terribly precise in what you monitor because you can measure almost everything.  As a manager, your purview is too large to measure everything.  Instead, you'll only be getting a small amount of information from each individual contributor.  Thus, picking the right things to monitor becomes a critical factor in your success or failure.

As with the lead, there is a fine line to be walked between being aloof and micromanaging (or interfering as it might be known at the manager level).  When the work is being done by people who are not direct child nodes of yours, how do you interact enough to know what is going on but not so much that you disintermediate the relationship?  These are all interesting questions I'm now facing.  As I gain more experience, I'll try to revisit this topic with some advice on what does and doesn't work.

-----

* For the purpose of this post, a manager is someone who manages other managers or leads.  This position is sometimes referred to as an M2 or manager of managers.

** A lead in this context is someone who manages individual contributors but not other managers.

Monday, June 23, 2008

Get Out of E-mail and Walk Down the Hall

I was about to write this article anyway when XKCD posted this comic which reinforces my point.  People act differently in email than they do in person.  Everyone knows this to be the case, but they often don't act like it.  Usually when someone talks about how email is different it comes in the context, as in the comic, of a flame war.  It's very easy to misunderstand someone's e-mail and assume it is more aggressive than it really is.  However, the lack of subtle emotion isn't the only downside of email.  There are times to use email and times when it isn't the right tool.  Knowing the downsides of email can allow us to better understand when not to use it.  Sometimes it is better to put down the Outlook and walk down the hall.

Some people are addicted to email.  For them, it is the only communications medium.  However, just as email has its benefits--low-friction communication medium, low interruption value, near-instant transmission time--it also has its downsides.  An impersonal nature is one of them.  While not as often recognized, so is the infinite time and space allowed.  Too much space removes the forcing factor present in conversation to boil things down to key points.  E-mail is not a good decision-making tool for this very reason.  Think about it.  How many times have you seen a discussion in email about how to implement a feature or fix a bug get bogged down in tediously long message threads with loads of new text in each message?  It can be very hard to get resolution to a contentious issue in email because email doesn't make you focus.

When there are no size and time limitations, it is easy to (attempt to) refute every point in at argument with each message.  In a person to person conversion, people can't keep a dozen arguments in their mind at once.  They are forced to focus on only the most important points.  In email, each minute point can be a breeding ground for argument.  With this point-by-point refutation, it is also easy to get lost in the minutia.  Email doesn't solve the problem that people can't keep a dozen arguments in their mind at once and so by bullet point 8, what was stated in bullet point 1 is forgotten and often contradictory arguments are raised.  In the legal profession this is called arguing in the alternative and expected.  In the rest of the world, it just makes you look dumb.  It certainly doesn't help come to a consensus answer.

Something else happens in real conversation that is missing in email.  When two people are discussing something, one person will often stop the other and drill down on something that was just said.  In email, this opportunity is lost.  It's impossible to stop someone mid-mail and ask a clarifying question.  Instead, the question is asked after the fact.  This either just adds to the complexity of the thread or distorts it because the answer would have affected the rest of the message.

While trying to hammer out a decision in email is enticing, actually getting to a decision can be hard.  Instead of just bouncing mails back and forth, stop.  Think.  Is this something that would be better handled in person where emotions are visible, communication can be interrupt-driven, and time forces a focus on the most critical points?  If so, walk down the hall or schedule a meeting.  My rule of thumb is to try email first.  When it works it is very efficient.  However, if email fails to produce results in a few messages, I pick up the phone or find the person to talk.  If its a larger group, I schedule a meeting.  Try it.  Decisions will come much faster.

For some tips on keeping meetings running smoothly, check out my post on the subject.

Saturday, June 21, 2008

Vim Tip: My .vimrc File

.vimrc is the config file for Vim.  It can be stored in the Vim directory or in your user directory.  With greater protection of the Program Files directory on Vista, I've gotten into the habit of keeping it in my user directory (c:\users\steverowe on most systems).  here are most of the non-standard options I have in my .vimrc file.  Maybe you can pick up some pointers.


"set tabs to 4 spaces.
set tabstop=4
set expandtab
set shiftwidth=4

"automatically indent
set smartindent
set cindent

"case insensitive search
set ignorecase
set smartcase

"search the whole build tree for ctags
set tags=tags;/

"open the window larger than normal (100 wide by 40 tall)
win 100 40

set nocompatible
"allow for c,w to change part of a camel-cased word
source $HOME/camelcasemotion.vim

"make it so mouse and keyboard don't exit select mode."
"this makes it so we can select with the mouse and then act on that block."
set selectmode=""

"make long-line navigation work like other windows apps
map <DOWN> gj
map <UP> gk
imap <C-UP> gki
imap <C-DOWN> gji

"from here down is the default _vimrc
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin

set diffexpr=MyDiff()
function MyDiff()
  let opt = '-a --binary '
  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
  let arg1 = v:fname_in
  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
  let arg2 = v:fname_new
  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
  let arg3 = v:fname_out
  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
  let eq = ''
  if $VIMRUNTIME =~ ' '
    if &sh =~ '\<cmd'
      let cmd = '""' . $VIMRUNTIME . '\diff"'
      let eq = '"'
    else
      let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
    endif
  else
    let cmd = $VIMRUNTIME . '\diff'
  endif
  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction

Monday, June 16, 2008

June Netcast Update

By popular demand (seriously), here is an update of the netcasts I'm listening to on a regular basis.

 

Audio:

  • This Week In Tech - Round table discussion of technology topics.  Sometimes should be known as This Week in Twitter.
  • This Week In Media - Round table discussion of issues affecting media.  Everything from DRM to Red cameras.
  • Windows Weekly - Everything Microsoft.
  • Manager Tools - Great resource for both aspiring and current managers.  Practical advice.
  • Stack Overflow - Joel Spolsky (Joel on Software) and Jeff Atwood (Coding Horror) chatting and we get to listen in.  A bit rough, but fun and informative.
  • I, Cringely - Robert X. Cringley reading his weekly column.  Not always correct, but usually entertaining.
  • FLOSS Weekly - Interviews with the names behind common open source projects.

 

Video:

 

Suggestions for additional podcasts are welcome.

Wednesday, June 11, 2008

Windows Home Server Power Pack 1 Beta Is Available

At long last, there is a preliminary fix for the corruption issue that has dogged WHS since its release.  The WHS team released the fix with its Power Pack 1 beta.  See their blog post for details and a link to download it.  In addition to the corruption fix, many other bugs are fixed and it is now possible to back up your shared folders to an external drive.  The power pack also adds supports for connecting x64 machines.

I've been using Windows Home Server for several months now and find the ease of backup unparalleled.  Just connect your machines to the server and they will be backed up each night.  No need to fiddle with anything.  I've been using early versions of the power pack and have found it very stable.  It's still a beta so treat it as such, but in my experience it's solid.  If you are running WHS, consider trying out the beta.