Archive for February, 2007

Wednesday, February 28th, 2007

Action at the Edge

Umair Haque writes for an awesome blog called Bubblegeneration.   I am a huge believer in bottom-up thinking/acting and am in violent agreement with Umair’s line of reasoning.  In essence, he believes that in order to compete effectively in today’s markets, you need to capture and leverage all the activity that’s happening with your product/service out on the edges, in the field, where users really make it their own.  Top down approaches where the uber-corporation knows best are obsolete and suffer, as a result, from what he calls "strategy decay" and he lists many examples.  Here’s a quote from a recent post called "
Core vs Edge, Pt 18849" (no permalink available – come’on Umair!) that captures what I’m talking about.

What happens at the intersection of global hypercompetition, maturity, and shifting consumer needs?

If you’re pursuing a core strategy, you consolidate.

Of
course, this is a strategy which is utterly out of sync with exactly
the economic pressures listed above in the first place. It’s a strategy
which dominates the industrial economics of scale and scope in mass
production.

What Detroit needs are edge strategies, focused
around deconstructing value chains, achieving hyperefficiency (vs
simple cost-sharing), and shifting control to customers.

Think how the most simple shift to decentralization – kaizen – revolutionized autos in the 80s/90s.

Eric von Hippel also has a web site that provides great analysis on how individual consumers can (and do) radically change the basis of competition and turn upside down our normal thinking on how products can/should come to market.  You’ll never equate DIY with home improvement and handymen ever again.

I highly recommend reading everything these guys write if you’re at all interested in how and why market power is moving inexorably into the hands of the customer.

Tuesday, February 27th, 2007

Eclipse/OS X Rant

I recently had a little freakout in response to a blog entry by Wassim Melhem regarding Eclipse on the Mac.  At the time I was getting strange behavior with 3.2.0 on my Macbook Pro.  Eclipse would crash while running a PDE build, runtime workbenches would suddenly disappear, and several other one-time inconsistencies popped up.  Since then I started with a fresh 3.2.1 install and have had no issues.  Regardless, there are some things about Eclipse on the Mac that still bug me, but first, a few disclaimers:

Disclaimer #1
- I’m a big fan of Eclipse.  I am a committer.  I know of many people that work really hard on Eclipse to make it the best IDE it can be.  This post is an attempt on my part to describe exactly what troubles me about Eclipse on OS X, not to piss people off.

Disclaimer #2 -
These issues may have nothing to do with Eclipse at all.  Maybe it’s Carbon, maybe it’s OS X, or maybe it’s Apple’s Java.  Heck, it could be cosmic rays!  All I know is that Eclipse is the only app I use that feels better on Linux and Windows than on my Mac.

Disclaimer #3
- I’m crazy, I talk to myself, and am a hazard to those around me.

Ok, enough of these stupid disclaimers.  On to the rant:

1. Toolbar icons are too hard to click.  It seems on the Mac that the clickable region of a image button is the non-transparent region.  On Linux it’s the whole button, and I’m pretty sure it’s the same in Windows.  So this means my brain has to work that much harder to get to one of those little buttons (because each button has a different image).

2. Fonts are too big in the tree views.  Windows and Linux seem to be more concise and at the same time, just as easy to read.  I’ve played around with other fonts but I can’t seem to find anything that works well.  Also, the arrows used to expand and collapse nodes are too hard to click.  It seems the arrows suffer the same problem the toolbar icons have. Projectexplorer_1

3. Modal dialogs!  Where art thou hotkeys!  I’ve tried every key combination I can think of to try and trigger these dialogs to go away without wasting precious energy to move the mouse.  This is really annoying, mainly because it seems like such a no-brainer. Dialog_shortcuts
4. Layout bloopers.  I can’t say these are much of a problem really, but I’ve never seen anything like this on my Ubuntu box at home.  Notice how the tiny text at the bottom bleeds into the resize widget.  And what is that thing after the carrot!?  And notice on the preference page how the default layout doesn’t contain enough space for the default preference items. Context_menu

Preferences

5. Weird delays.  Saving a file sometimes takes 10 seconds.  Opening an editor sometimes takes 20.  The resource monitor doesn’t seem to show any extra load, but Eclipse seems to space-out once or twice a day.  I have 2 Gb of RAM and Eclipse rolls with 512Mb.

6. Speed.  Starting a runtime workbench on comparable hardware is noticeably slower on a Mac.  It just is.  I’m serious.  I’ve claimed this to people in the past and they blatanly told me I was mistaken.  Can someone make it go faster?

7. Overlapping text editor line decorations.  By default you can have a breakpoint set on a line with a warning and not see the breakpoint.  Those little breakpoints love to hide! 

8. Window painting inconsistencies.  Like a Sasquatch, window refresh problems can jump out of the bushes just long enough to scare you only to disappear before you can get the lens cap off.  Luckily I’ve captured one on film.  See the white horizontal line to the left?  No?  Look really hard.  And, no, I didn’t Photoshop this.    Window
9. Truncated Menus.  I like to scroll as much as the next guy.  But seriously, these menus don’t need to be truncated.  I shouldn’t have to scroll down manually just because I open a context menu close to the border of my screen. Menu

I imagine most if not all of these issues can be classified as "WONTFIX" because they are probably due to something that Eclipse relies on, such as the JVM or Carbon.  This sort of thing has come up before in bugzillas and the conclusion has always been "don’t blame us, go talk to Apple"…or something about the event loop inside of Cocoa.  I’m not a Mac GUI person.  I just want Eclipse to work better on my Mac.  Is that so wrong?

Monday, February 26th, 2007

ARRL – Power to the People

I got my
ham radio license a few years ago (KC2JZR) and was surprised to find
myself joining a network of over 3 million people worldwide (700,000 in
the U.S. alone). I got my license because I am a geek. But what really
piqued my interest was the organization that supported me – the ARRL.
The American Radio Relay League is the voice of Amateur Radio (or ham
radio operators, "hams"). This not-for-profit group represents a
fascinating hybrid of DIY energy and enthusiasm working effectively
with big government, in this case the FCC. Here’s a snip from their website:

Today ARRL, with approximately 152,000 members, is the largest
organization of radio amateurs in the United States. The ARRL is a
not-for-profit organization that:
• promotes interest in Amateur Radio communications and experimentation
• represents US radio amateurs in legislative matters, and
• maintains fraternalism and a high standard of conduct among Amateur Radio operators.

And this isn’t some little outfit running on a shoestring budget:

At ARRL headquarters in the Hartford suburb of Newington, a staff
of 120 helps serve the needs of members. ARRL is also International
Secretariat for the International Amateur Radio Union, which is made up
of similar societies in 150 countries around the world.

If you visit the FCC’s website and look up Amateur Radio you find a
whole section on it. The hams of the world get serious respect. This is
from the FCC web site regarding the role of Amateur Radio:

• Promotion and enhancement of the Amateur Radio Service as a voluntary noncommercial public communications service.
• Continual advancement of the art of radio communication.
• Expansion of the reservoir of trained radio operators and electronic experts.
• Enhancement of international goodwill at the grass roots level.

This is a stunning example of not just the power of these "amateurs"
but how the U.S. government has encouraged, accommodated and cooperated
with the public in ways that most people don’t appreciate or even know
about. But it’s easy to find out more. Just check this out.  I can’t think of any other national, volunteer organization that has such systematic impact on things so important.

There is a critical issue facing us today, especially in the wake of
the September 11 terrorist attacks and the Katrina disaster in NOLA.
How much are we going to rely on government to take care of us and how
much are we going to do ourselves? Thomas Paine said in "Common Sense"
that "Society is produced by our wants, and government by wickedness",
and all too often over the past few days I’ve been feeling that
distinction. My confidence in government to do the "right thing" is at
an all time low. I know I’m not alone. The digitally enabled masses are
speaking up via blogs, SMS, forums, etc. and big media is paying
attention, alerting the public at large of the discussion. All this is
a good start. But it’s only that.

One of my themes on this blog is the power of DIY, not just as a way
to build things, but as a way to view the world, as a way to live. In a
way, if you had to categorize it, it’s sort of libertarian. But it’s
really more about control – over your life, over your world. In ceding
all control over our safety to the government we are, in effect,
forfeiting a huge chunk of our freedom. We expose ourselves to all
sorts of potential problems – big ones. So what do we do? I find the
existence of the ARRL enormously encouraging. Clearly, the public at
large can not just shoulder the burden of public safety, but I do think
that technology, designed creatively, distributed economically, and
used cooperatively with government can, and absolutely should, play a
key role in helping all of us sleep better at night. The ARRL is a
perfect example of this. I anticipate much more discussion in the
coming months and years as we try to deconstruct what happened in NOLA.
I’m hoping the ARRL gets the credit they deserve but more importantly,
I hope that it inspires our leaders to issue a call to arms. All of us
need to take more responsibility for our own, as well as our
communities’ safety. And I strongly believe technology can play a
crucial role.

Thursday, February 22nd, 2007

Where’s the Humanity?

If you are a Windows user then you might not believe me, but I have found the human factor in software.  The first inkling of this discovery was when someone plainly said to me, "well, you work with people, don’t you?"  I had just said that I thought software development wasn’t human enough.  I don’t really even know what I meant by that.  It was a hard-to-describe feeling, but my friend saw right through it.  He reminded me that I do work with people, and it’s one of the best things about my job.

As soon as I saw one byte of humanity, I started seeing more.  It occurred to me that the purpose of most software is to interface humans with very powerful thinking machines.  The best software for humans is the kind where the interface is complimentary and not adversarial.  When it comes down to it, making machines more human is the end-game for software engineers. Then there is the communicative nature of the internet which has fed the social nature of the web.  When it comes to the web, it’s all about connecting humans–to their media, to the things they want to buy, and more and more, to each other.  Human software is social software.  It creates communities.

If we’re bound for the Age of Spiritual Machines, it seems that human software is the road that will get us there.  Recently my friend’s brother bought him a World of Warcraft character for about $100 on eBay.  My friend and his brother wanted to spend time together, and considering they live in different parts of the country, World of Warcraft was a great venue.  It also gave the brothers a chance to relive their childhood relationship as adults.  The big brother was happy for a new chance to show his little brother the ropes of this virtual world. Now, when my friend shares his online experiences with me, he often talks about the things he and his brother can do and not the things their characters do.  It’s almost like a new version of the Turing test: Can the virtual world fool you into thinking your avatar is you?

It’s impossible to talk about this without mentioning the Nintendo Wii.  The more social "party games" that have long been Nintendo’s focus plus the Wii’s brand new way of playing are an auspicious mix.  Accelerometers and motion sensors have been around for a while, but the real magic of the Wii is in the software.  How does some motion of your hand affect what happens in the game and does it make sense?  Thinking about World of Warcraft and the Wii, it is no surprise that games are leading the way in bringing the human factor into software.

Another development that has had a big impact on me as a software engineer is the popularity of Ruby.  Ruby claims to be the programmer’s programming language.  Like the Wii, it is fun and intuitive to use.  Its flexibility and elegant syntax is, well, very human.  If you agree with the viability of a bottom up approach, then you can argue that writing software in a more human language will lead to more human software.  I think, with the many new web applications written in Ruby on Rails sprouting up lately, Ruby has helped make software more human.

I can’t predict what comes after World of Warcraft, Ruby, and the Wii, but it will inevitably be more natural, more inuitive, and more human.

Tuesday, February 20th, 2007

Hyper-Awareness

How
do you experience the world? Through your senses. Your senses are your
interface, your inputs. From there your brain produces understanding
and response. But in a world that is increasingly connected,
quantitatively and qualitatively, via computer and Internet, are our
five senses enough? Our sphere of potential control has exploded. But
control requires i/o. In a world where inputs are local this is not an
issue, your senses work fine. However, when the inputs are remote what
do you do? Instant messaging is a remote sensor. It senses input
(presence) and delivers it to you over a network. Once received, your
brain then knows what to do with it and can consider an output. But
this is a rudimentary example. Think of your world, not locally, but
globally. What does it include? How much is out of your reach right
now. All of it, except what is directly around you…OR to which you
are remotely connected somehow. That is what’s new. Think about the
information that you could connect to if you could but extend your
senses. Maybe you could invent new ones to boot. Here’s an example.
You’re in a traffic jam on the highway. The other side is flying along.
You want to know if you should exit right away and try an alternate
route but not if the jam you’re in is short. But how can you tell? The
radio says nothing. You know of no online service that could tell you.
The answer is the drivers in the other lanes. They just drove past the
line of traffic you’re in and could easily tell you if it was a long
one. But how do you reach them? How do you leverage other people’s
senses?! Think of the collective power of that. Certainly work is being
done with cell phones and SMS. But it is still peer-to-peer. There are
other opportunities to leverage sensors that are not human but
"machine", placed by either you and/or others. The point is you start
to utilize and consume virtual "senses". Does that mean you can expand
YOU? If you embed these remote sensory organs into your perception,
your hyper-perception, does that create a virtual octopus out of you?
If you start to think/imagine that you can get answers to remote
sensory questions, the way you perceive, control and respond to your
world changes radically.

 
Monday, February 12th, 2007

Object Sentences

I love language and have always been fascinated by its mechanics – how
the assembly of words in a sequence can either convey meaning or sow
confusion. Given my interest in the value of splitting structure
(grammar/syntax) and content (words), language has been a potent
catalyst. When I was younger, one of the questions I turned over in my
head all the time was – why can’t there be a language in which it was
impossible to speak nonsense – meaning a language where ANY combination
of words made sense somehow. It’s a wacky question but points, I think,
to an important strength of every successful language – it’s incredible
flexibility. Without the ability to write nonsense, nothing new could
be done. Our idea of nonsense is subjective. The poetry of e.e.
cummings would have likely been viewed as complete garbage 200 years
ago. Or how about a computer program?? But the other thing that
fascinates (inspires) me is that even though the interface between
words is formally defined as grammar, it is also totally open, meaning
those rules are really only a guide. Poetry routinely flouts the rules
to great effect. If I know the words of more than one language the
options for sentence construction increase, as long as the reader
understands the languages used and doesn’t mind dealing with no formal
grammatical structure. Words, like atoms, seem capable of infinite
types of combinations, but gain particular value when used with a
logical grammar (e.g. Shakespeare or Hemingway). All of the above, by
the way, is equally true of music.

Lately I have
been puzzling over creating what in essence is a grammar for the
construction of not word sentences but "object sentences". Is there a
formal way to define how objects should/could go together to create a
useful thing or "sentence"? Sounds crazy because maybe it is. But
consider electronics, which for the purposes of this argument I will
equate to a language – meaning it is contained and its moving pieces
defined. At a very high level every device, gadget and gizmo is
identical – power supply, processor(s), i/o devices. Mix them up in
lots of different ways and you get everything from a digital watch, to
an iPod, to an IBM mainframe; like the words of a sentence. Take vehicles of any kind – the same high level analysis produces the
same result – all vehicles are identical. So what? My point is that, at
least in some cases, there is a starting baseline of components (words)
for the construction of certain categories of product. If you could
elegantly define the interfaces between these basic categories perhaps
you could start to generalize and identify an interface "grammar", at
least for that "language". Would love to see that someday.

Monday, February 12th, 2007

Become a Software Engineer

Last year, Money Magazine rated software engineer the best job in America.  When I read that, I was incredulous.  I’m a software engineer, I thought, and my job cannot be the best job in America.  My first question was, where do they come up with this crap? Luckily the information architects predicted that it would be my first question and left a link dangling right there in front of me.

It seems one of the most important factors for them is job growth.  This is why chief executive is further down the list than physician assistant.  They also don’t include very rare jobs, regardless of how sweet. Superhero and rock-god are nowhere on the list.  Compensation is important, but the human factor also plays prominently in their analysis.  They judged factors such as "stress levels, flexibility in hours and working environment, creativity, and how easy it is to enter and advance in the field."

When viewing the career of software engineering through this lens, it really does make sense.  I was happy to see that the number of software engineering jobs in America is predicted to increase almost 45% over the next 10 years.  Just 5 years ago, outsourcing was predicted to destroy my career.  I guess that was wrong, but those predictions came during a bit of a dark time.  Software engineers and just about everyone else in the industry were suffering from disillusionment after the dot-com crash.  Luckily, the industry and the career has matured since then.  A real understanding in the value of creativity is coming from engineers and their employers.  That brings us to the human factor.  We’re beyond the days of thinking that it’s all about lines of code.  Because of that, the work has gotten better and so has the job.

At the time I read the Money article, I was working for a company that didn’t understand the human factor.  I started working for them because they did travel and I love travelling (This is another point the Money article brings up, that as software engineers we can conflate other interests with out careers–travel, music, you name it, they need software).  But they viewed programming as lines of code that you could farm off to foreign lands for a fraction of the price.  For much of what they do, they can.  But because they treat all of their engineers as hot-swappable resources, they’re never going to get much more out of what they are, and what they are is dying.

Of course, if you’re in a situation that you think could be better, you should try to find the better, which is what I soon did.  Now I can talk about job growth and compensation in my estimation, but more importantly for me, there’s the human factor.  My job has to be creative and interesting and the environment I am in has to facilitate that.  On a good team working on an exciting project for a company that’s not trying to institutionalize the creative process, I start to think that Money magazine might just be right.