Sunday, March 7, 2010

Apple vs the world

Apples lawsuit against HTC / Android is old (well, a week old) news, but this may be the only good part of it:
not everyone is convinced that Apple's strategy is a wise one, and many are concerned this battle is another example that the US patent system—especially where software patents are concerned—is fundamentally broken.
One can only hope that the visibility of this fight will lead to change.  Maybe Apple wins points on legal basis, but the whole point of patents was to encourage innovation -- the idea that someone won't invest in something unless they get some benefit out of it.  There is some truth to that, which is why Thomas Jefferson eventually established the patent system, but he would be deeply opposed to this lawsuit.

So, perhaps this fight will lead to a rallying cry, much like Amazon's 1-click patent eventually slowed down the silliness going on in e-commerce.

Unfortunately, Apple has always been short-sighted in its understanding of its market.  Today we don't have any Mac clones because Apple wanted 100% of that pie.  Despite having a product out years earlier, it was dominated by IBM's open architecture system.
It is not always appreciated just how fast the rise of the IBM clone market was, and the degree to which it took the industry by surprise. 
Think about how much smaller the PC market would be if we had continued down a path of only proprietary systems.  Meanwhile, IBM has built entirely new businesses around the exponentially larger computer market of today.

Android parallels IBM in that it invites the entire industry to participate.  Apple parallels, well, Apple, in that they seek to own all the revenues in a market where they own all the vertical businesses. 

As usual, I'm pulling for the network, the open market, the combined power of the entire industry, not just the geniuses at one, focusing on turning a small market into a gigantic one.  The end of Apple's reign is inevitable, though the lawsuits may make that painful for the rest of us. 

Wednesday, February 24, 2010

Apolo Ohno

Check out this workout schedule.
Ohno hired John Schaeffer, a kick boxer turned trainer, in 2002. Schaeffer’s résumé included work with swimmers, boxers, weight lifters, mixed martial artists and N.F.L. players, but never before had he encountered someone with Ohno’s intensity, recovery ability and capacity to endure pain.

“I don’t know anybody, honestly, who could train with Apolo,” Schaeffer said.

He traveled with Ohno to Italy for the Olympics and to Los Angeles for “Dancing With the Stars.” He once ran Ohno up the mountains near Reading, Pa., three times each day for three days, “like a goat.” ...

A typical workout: eight sets of two repetitions at 1,000 pounds on the leg press, one leg at a time, holding the weight between each set. Then bench hops. Then one-legged hops. Then, in the afternoon, treadmill training, alternating each minute between 12 and 15 miles an hour for 20 rotations.
It's often easy to see the greatness and forget about the hard work. And we sometimes dismiss it as genetics -- he's great because it's in his blood.  But there's always unbelievable levels of hard work and practice behind it. 

In our jobs, we're not really trying for Olympic-level extreme greatness.  But imagine what you could accomplish if you really pushed yourself.  Not up a mountain three times, but at least hard enough so that it hurt. 

Tuesday, February 23, 2010

*Uncommon* by Tony Dungy

Tony Dungy is one of those guys you can't help but root for.  First, he had he a Super Bowl taken away from on the verge of winning it at Tampa Bay, so you had to pull for him to win it at Indianapolis.  Then, a year after his son died, you had to pull for him to win it the next year when his team made it.

The underlying reason shines through in Uncommon.  NFL teams test and time potential draft picks, and then record codes about whether to draft each one.  A guy might be too slow or unskilled to get drafted.  Dungy may be the only one with a code DNDC -- "do not draft due to character".  This extends beyond trouble with the law or recklessness.  It includes work ethic and team orientation.  As Dungy mentions, they have lost out on some major talent due to this provision, but he firmly believes it was worth it. 

Uncommon is a motivational book, well-suited for sports team building at the high school or college level. 

Thursday, February 18, 2010

There's no incentive in bonus

I've been blessed enough to see a big bonus and cursed enough to see the smallest.  The problem is, neither of them affected my motivation -- and not because I'm such a dedicated worker.

When I got a big bonus, I felt good of course.  The next day, the same problems confronted me, and I didn't work any less or more hard to solve them.  You can't make your brain pump out more than what it does, or come up with more innovative solutions suddenly.  The best I could have done was maybe type a little faster.

When I got a small (ahem, zero) bonus, I was very unhappy of course.  But a guy that I enjoyed working with expected me to deliver some code by the end of the week, and I spent the rest of the day dedicated to fulfilling my commitment.  That guy didn't affect my bonus one way or the other, so why should he suffer?  (Another demonstration that friends at work contribute significantly to your job enjoyment.)

The kicker is that my own productivity was one of the smallest factors.  Much bigger: profitability of the company, industry trends, macro-economic conditions.

In good years, a few people felt good, but most had mixed feelings.  After all, most people view themselves as above average, but most will receive an average bonus.

In bad years, everyone felt bad: people that had worked hard felt cheated, and those who didn't were upset just out of disappointment.

So, on net, bonus day as practiced on Wall Street is typically a mixed to negative experience.  It's supposed to reward and thereby encourage performance, but it's so weakly related to performance that it's more like a lottery.  This is the mechanism setting the culture at all these financial institutions that are too big to fail?

Tuesday, February 16, 2010

*The 7 Habits of Highly Effective People*

This is an old book that everyone knows.  I was drawn to it by the title.  Effectiveness continues to be a top priority.  Habits indicates hard work, no shortcuts; I'm a believer in practice making perfect.  Highly, as opposed to Super or Awesomely, is understated and again indicates realistic goals.

Also, the title is much better than How to Win Friends and Influence People.  Apparently, we've learned to be slightly less obvious in our ambitions.

I particularly liked the section on being more proactive.  I mentioned in an earlier post that he has the best definition of proactive, one that actually means something.  I don't know if he coined "proactive" or "win-win", but he might have been the one to popularize them.  Now, those words have been so overused that they barely resonate.

Covey also has a strong smell of authenticity.  You really get the sense that he lives what he's preaching, that he would be living that way even if he knew he couldn't package it up and sell it, and gives the whole thing credence.

This book is particularly good for someone who is in a funk, or maybe between jobs, and needs some direction.  He offers practical ways to implement what he's saying, though I found the "private" / personal changes to be more interesting than the "public" / interpersonal one, perhaps because the interpersonal ones have been re-done and re-stated so many times since then.

Monday, February 15, 2010

Two ways to know you are good

1. when you announce you are leaving, management makes an effort to retain you.  This could come as a salary match, or as a pitch with new title / authority.  It certainly includes sincere regret and the belief that your departure leaves a big hole in the group.

2. as others leave, you find new responsibilities being driven to you.  I'm not talking about being required to take on more repetitive crapwork, but exerting more responsibility and decision making.  As you become the "veteran" of the group, your expertise become more recognized, and you are increasingly viewed as the expert.

As always, these aren't definitive, but you might recognize these patterns as the job market thaws and people leave.

Monday, February 8, 2010

What is enthusiasm worth?

Consider Dan Quayle.  The former vice-president said many ridiculous things that made him seem foolish.
Contributing greatly to the perception of Quayle's incompetence was his tendency to make public statements which were either self-contradictory ("The holocaust was an obscene period in our nation's history.… No, not our nation's, but in World War II. I mean, we all lived in this century. I didn't live in this century, but in this century's history."), impossible ("I have made good judgments in the past. I have made good judgments in the future") or confused and inappropriate, as when he addressed the United Negro College Fund, whose slogan is "A mind is a terrible thing to waste," and said, "You take the UNCF model that what a waste it is to lose one's mind or not to have a mind is being very wasteful. How true that is."
In his run for the presidency in 2000, he limped in the back of the pack because "his campaign was hampered by the legacy of his vice-presidency." 

Consider Sarah Palin.  Her crazy comments during the 2008 campaign piled up cars in a traffic accident.  Her legendarily bad interview with Katy Couric required its own Wikipedia page.

Yet, Sarah is still going strong.  She unofficially reigns as the leader of a dynamic, headline-making political movement. 

And the only real difference I can see between Dan Quayle and Sarah Palin is that Palin is Quayle with spunk.  She's got undeniable enthusiasm.  Her overabundant enthusiasm may be one reason for some people not to like her, but it generates far more good will.

You definitely get the feeling she's going to be around for a long time, regardless of how many mistakes or enemies she makes.  Like her or not, you have to admire her willingness to stay in the line of fire, probably knowing that she is outgunned in every way except her personal enthusiasm.

What would happen if you brought more enthusiasm to your work?  Maybe you'll make mistakes, but you'll likely rebound more quickly from them and go higher.  Maybe some people will be annoyed by you, but you'll likely find more people wanting to be part of what you're doing.  Maybe you'll make more enemies, but more people will seek you out.

Perhaps you're not a people person like Sarah -- lots of introverted programmers, after all.  Maybe you can be enthusiastic about your programming language, or your willingness to constantly refactor, or your openness to helping out when someone else is struggling, or your efforts to make the team more unified.

Enthusiasm doesn't come from emotional bubbliness.  It ultimately comes from conviction: believing in what you do and your own team.  If you can't be excited about that, then something is seriously wrong. 

Think about an important aspect of your job.  How can you make it even better?  How can you convince others?  How can help your team do it more effectively and/or efficiently?

Monday, February 1, 2010

Too much of a good thing

This description blew up all the ways I usually think about team culture:
Despite his forty-year police carer, [John Guido] was never part of the NYPD culture...  "The Irish thought the job was a calling," Guido liked to say to me.  "To me, it was just a job." ... the consummate outsider, he did not mingle with colleagues.  He refused to attend formal police functions like retirement dinners or testimonials staged by wealthy police buffs."
Sounds a someone you don't want on the team.  Not a team player!

But the reason he kept his distance was to avoid the sleazy side of the job.  By keeping himself clean, he eventually became Chief of Internal Affairs, and earned high distinction.

"There are many cultures in the New York City Police Department, but corruption is the strongest one," he said.
A group like the NYPD has the opposite problem of most organizations: too much sense of team and identity.  Corporations would kill for that kind of loyalty.  We usually think of a strong culture as being good, but in this case, Guido points out that it can easily work the other way.  They're so loyal to each other, even the clean ones won't report the dirty ones, sometimes known as the Blue Wall.  As a result, many of them succumb to the temptation of power.

In a job like the police, with its danger and also the dual role the "policed" play as both customer and problem, the cultural problem isn't generating camaraderie and team pride, but doing the opposite -- without killing the pride that you still want good police officers to have in their job.  After reading NYPD Confidential, it clearly isn't easy to do.

 

Monday, January 25, 2010

Proactive people care


"Proactive" is one of those over-used words that you come to hate, even at the same time feeling that it has a rightful spot in the language.  The 7 Habits of Highly Effective People provides a nice definition for "proactive", one that I felt captured what it should mean, elegantly and directly.  (For all I know, maybe the author coined the word himself.) 

In the world of things that you care about, you can only affect some percent of that.  Having a proactive mindset means working to expand your influence over as many areas of concern as possible.

A side aspect of this definition: if someone you work with isn't proactive enough, maybe they haven't figured out why they should care?  (And if that's something that concerns you, maybe you need to try to influence them.)

Thursday, January 21, 2010

Would you be happy to skip your review?

At my friend's company, no one had mentioned anything about having a review this year.  Finally, my friend asked his boss, "Are we having reviews?"  The response: "Well, last year, we did all the reviews, and HR was supposed to signoff on them all so we could pass them out, but they never even returned them.  So I figure, why bother?"

See anything wrong here?

If the manager values the review only for the HR documentation, then the manager's response was perfectly rational.  But, the only value of an HR signoff on a review is for disciplinary purposes.  99% of your reviews, therefore, won't really need an HR signoff.

The real value of a review is feedback, thereby helping people grow their skills.  One of the most productive review comments follows the lines of "you are good at X, and are ready for the next step, X+1 or Y".  A good review enlightens and energizes the recipient at best, and focuses them at the least.

Of course, we don't always have managers who are good at giving reviews.

Learning to do that is a critical skill that a manager should develop, and that takes practice.  (Hopefully, the manager gets that feedback in their review!) 

You could also argue that you don't need an official review, that you could and should provide feedback everyday.  Which is true.  But 1) what are the odds that someone who doesn't give a productive annual review is going to be good at giving regular, on-the-spot feedback?  And 2) just as people go to church / mosque / etc to pray (they could be equally spiritual in their own home anytime), blocking out time away from the daily fire-fighting and distractions helps you focus on the subject at hand.


I thought about telling my friend that he should say to his boss, "Even though we're not having reviews, could you give me some feedback on how I'm doing, what I did well, and what I could do better?"  Better still, he could write up his own thoughts, give them to his boss, and ask for comments.  But given his boss's view of what a review is, why bother?

Wednesday, January 20, 2010

Interesting thoughts

It's so easy to have interesting thoughts these days: the thoughts of the greatest and most interesting minds on the planet are, for the first time in history, available to us in near real-time.  To read them is to have them.

The richest man on the planet tackling the world's biggest problems.
Nobel prize winners on the economy, incentives, environment.
The top experts in any field you care about.

In the past, we'd have to pay thousands of dollars or buy a book of dated thoughts or know someone who knew someone.  Today, you can get the vast majority of it for free.

In a sense, expertise is becoming rampant.  How are you going to compete in such a world? 

The good news for you is that you only need one job.  Expertise in the current job will lead to the next opportunity.  Repeat.

Tailor your solutions to the situation.  In that domain, however narrowly defined, you can be the expert.  It will still require a great deal of knowledge, diplomacy, effort, risk-taking, commitment, and discipline... among other things. 

At the same time that it's never been easier to have access to expertise, it's never been easier to be your own expert.  Think about your unique domain, your unique job situation, and come up with your own interesting thoughts.

Tuesday, January 19, 2010

Portable dev env, cont'd

So far, the portability has been very useful.  I dropped the whole thing onto my work computer in a couple mins.  On the whole, saved me a lot of hassle.

The main tweaks I've made so far:

1. Environment variables.  For Java you need JAVA_HOME, etc.  Typically, the installer creates system vars, so you could manually do this, but I do something even better: create small shell files that sets it as a temporary user var.  Then you add a call to this file anywhere you need it.  For example, instead of executing Eclipse directly, create a shell file that first calls the file to set the vars, then executes Eclipse.  The beauty is that you can run multiple environments at the same time.  For example, because you're using user vars and not using system vars, you can run your app with JAVA_HOME pointed to 1.5 version, and then run it again with JAVA_HOME pointed to 1.6.

You need versions for each OS you run on, but that is pretty basic shell writing. 

2. Registration settings.  The installer typically sets the extension to automatically invoke the executable; i.e., .rb files can be run directly, without pre-pending with "ruby".  Minor issue to me, though you could easily write a script to registers the association wherever you are, but you might compromise your ability to run multiple environments.

A bigger deal is that in Windows, you lose right-click shortcuts.  In some cases, like 7zip and Vim, it's an inconvenience, but some others, like gitTortoise, you're out of luck.  No gitTortoise for you, just the git command line or built-in UI.  I do like Tortoise from my SVN days, so you could go with a mixed strategy: install locally where you can, but keep the portable version as part of the env in case you find yourself in a situation where you can't install an app.

3. gVim settings.  One of the pleasant surprises with Vim is that everything seems to be configurable, and thus it supports every feature I've thrown at it.  Here's the ones I've added to my default settings, critical to me for usability:
colorscheme murphy " you can get very granular, but I just chose one of the included themes
set number " turn on line numbers for all doc types
set expandtab " convert tabs into spaces
set tabstop=2 " set tab width
set shiftwidth=2 " indentation
set lines=60 " width of Vim window
set columns=80 " height of Vim window
set directory=..\..\temp " location of backup files
set backupdir=..\..\temp " location of temporary files
vnoremap < " de-indentation of highlighted text block using <
vnoremap > >gv " indentation of highlighted text block using >

4. network drives.  If you keep the portable env on a local drive, you won't have the problem discussed here.  Because you don't ever know whether you'll be dropping the env on the C: or the J:, on the root or in "/dev/my env/dir/subdir", you have to use relative paths and directory variables when.  So far, this has never been insurmountable, but the most difficult challenge was when I dropped the env on a Windows network directory. 

If you run a .bat file on a network drive, it can't change directory to there, so it defaults to the local Windows system directory, and all your relative paths are messed up.  Here's some good documentation on it, but the quick answer was using pushd "%~dp0" at the beginning of the batch file.  This creates a drive letter and points to the dir that you're executing the batch file in.  Now all your relatives paths are intact. 

-----
It might seem that getting the portable environment right sucks up a bunch of time.  That's true, but actually whenever you want a good personalized environment, you spend quite a bit of time installing and configuring your tools.  The great part about a portable environment is that you won't have to do it again!

Monday, January 18, 2010

Killer handheld tools

The Palm was almost the first killer handheld tool.  As a glorified datebook / contact manager, it ran out of steam fairly quickly.

Blackberry was the first real killer handheld.  It married the power of email (the first killer network app) with a phone, and did it so well that you bought the thing just for that.  As a professional tool, it still has legs, though its reached the end of its consumer market.

iPod was the next.  It married your Walkman / mp3 player with access to online music.  No more disks.  It did it so well, you bought it just for that.

iPhone was an easy next step.  It married your iPod to your phone to a bunch of mini-apps.  Truly revolutionary.  It was also brilliant as a build-on strategy for iPod: even if you don't want the phone, you might still want some of the apps.

The Kindle is a hot tool right now, but you wonder whether reading books will be a narrow market like contact management.  Amazon (the book web site) with Kindle is functionally the same as iTunes with iPod.  The question is whether Amazon has an iPhone up its sleeve, which would bring the hammer down on all the wannabes.  Amazon's iPhone might not necessarily be a product; it could also be a service.  I just don't see what that is, though I suppose if I did, I would have a much different position in life.

A lot of phones are trying to marry themselves to online apps, again looking for that iPod + iTunes magic combo.  That was a big selling point of the Palm Pre, with its Facebook connection.  Dave Winer suggests a Twitter camera.  These are all well and good, but in the age of mini-apps, it's hard for a single company to defeat the rest of the market.  As long as Facebook and Twitter remain independent, a single vendor will have difficulty obtaining an advantage.  Apple owned iTunes.

Google has the best shot.  They have a very hot set of online applications -- email, docs.  They have the hottest OS, which means more features and more mini-apps.  And they have their own phones, which will work seamlessly with their products.  So, they own the whole chain, which they can turn into a great user experience.

Squeezing into this mix is the upcoming Apple Tablet.  I suspect this will mostly be an iMac tablet notebook with lots of multi-touch.  Is that enough to make it a winner?  As a build-on strategy to iPhone, it's a good chance to take, and this is the time to do it.  But with Android coming on strong, iPhone may not have the coattails.

Wednesday, January 13, 2010

50% tax on bankers, US

I didn't think we'd see it, but someone will actually propose a 50% tax on banker bonuses. 
Rep. Peter Welch (D., Vt.) introduced legislation Tuesday to slap a 50% tax on bonuses in excess of $50,000 paid to employees of any bank that received bailout money. The proceeds would be lent to small businesses struggling to find loans from commercial banks.

I give this no chance of passing, if for no other reason than it's too late in the cycle.  The bonuses are practically out the door.  You don't want a situation where you have to clawback the money, or if it's the banks that would pay, they have a big unexpected bill suddenly due. 

But, I'm still surprised to see it raised as a possibility. 

Tuesday, January 12, 2010

Out of business

I passed by an empty store front that used to be a restaurant.  Above the front door and window, they had a big awning with the word "RESTARANT".

Maybe they had the best food in the world there.  Maybe the nicest wait staff, and the most organized owners.  Maybe.

But I'd be willing to bet no.  Even if they hadn't been out of business, I would hesitate to go there just based on the sign.  Can one typo really mean that much?  Well, if they can't bother to spell correctly a few words that they're paying thousands of dollars for, what are the odds they're going to do the $10 dinner really well?  Sure, if all my friends ate there and assured me it was delicious, I'd give it a shot.  But chances are they won't get that shot from my friends either.

One reason I like to give code exercises on job interviews is to see the coding grammar of the applicant.  Basically, I want to know how easy to read their code is.  So I also look to see if they've modularized, or they just have one big function.

I also want to see how complete it is.  What kinds of errors did they anticipate?  How robust is the solution?  Is it extensible? 

What I don't do is give knowledge tests.  In fact, I like to sit someone at a computer, and they can have all the time they want to google up however much help they need to finish the code.  Because, frankly, if you can walk in not knowing the language and write me a very small mini-app in a few hours, well, you're probably the right kind of person we want to hire anyway.

But, more importantly, even with the time constraint removed, and knowing that this work will be reviewed, it is surprising how many people will sloppily have typos and lazy naming.  All single-letter variables.  No naming convention.  Very basic words misspelled.  No indenting.

Does this stuff matter?  Some might say no, but I think if you can't bother to get this right when you have no time constraint, and your own money and career are on the line, what are the odds you'll do it under pressure and it's someone else's (the company's) money at risk?

Thursday, January 7, 2010

40 things all working together

A friend of mine is a high school inner city principal.  Inner city meaning Newark, NJ, a pretty tough area.

We were discussing what works at his school, and I asked him whether uniforms had an effect, given the studies that showed that they didn't.  He replied, "Uniforms by themselves don't do anything, but as part of the overall picture, they're vital.  They're one of 40 things that you have to do right.  Working together, they make all the difference."

That reminded me of Agile practices.  I've known several teams where a decision was made to hold a daily scrum.  Didn't do a lot.  People grumbled about the pointlessness and hype.

Like many big institutions, my bank is not Agile, and so I introduced pieces of it slowly.  I found weak to no benefit until I had a decent list in place:

* daily scrum
* strictly focused discussion during scrum
* burndown charts
* self-organized teams of 3 to 4 developers
* 2- to 3-week sprints
* automated daily builds and at check-in
* product backlog
* iteration planning with the product manager
* team iteration reviews
* product demos with the product manager and users
* decision to have release or another sprint after each iteration
* cross-functional skills

Once I had these things in place, I really noticed clear improvement.

But if you had added any one or two of them to our previous team and structure, no, it wouldn't have made any difference.

Tuesday, January 5, 2010

The Year in Ideas

Toward the end of every year, the New York Times publishes a magazine dedicated to interesting ideas of the past 12 months.  It's a wide-ranging list, with lots of things you'd never think about.  Here were my favorites from this year:

* Randomly promoting people gives better results than the system you have.
* Printable batteries.  And you thought e-ink was pretty impressive.
* Older workers are just as productive.  Equally important: age-mixed workforces outperform homogeneous ones.  So don't staff that start-up with just college kids!
* What Google search teaches us about species preservation.
* Your yearbook photo predicts your likelihood of divorce.
* "I will regard the experiment as a success," he wrote, "if [comments on my blog] leads to anything that could count as genuine progress toward an understanding of the problem." Six weeks later, the theorem was proved.

Sunday, January 3, 2010

Building a portable dev environment

I started a little coding side-project, and came to the idea of putting the whole dev environment on a usb drive.  That way, I could plug it in wherever I am, on any computer, and have all the tools I needed without any additional setup.

An additional benefit: to bring another developer onto the project, I could just drop the contents of the drive on their computer.  They'd be instantly ready to roll, with close to zero start-up effort.

I have a 8GB drive, but so far the environment uses only about 500MB.  Here's what I installed:

* JRuby.  The project calls for Ruby, and I went with JRuby because it's extremely portable: just extract the binary zip to wherever you need it.  You might be able to setup Ruby on a flash drive, but the options sounded more experimental. 

* Java SDK.  Turns out you can direct the java installer to point right at your USB drive.  Here's more detailed instructions.  Very easy, ran across only one bug -- closed by Sun though not fixed -- that didn't have any effect on performance / function.

* Eventually, I'll need a j2ee container, but I feel pretty confident I could get resin or tomcat or glassfish working on a drive.  Installing webapps on a j2ee container involve nothing more than just a .war file drop, of course, so dropping in Rails should be a snap.  I don't need Rails just yet, but I'll post an update when I try that.

* Git.  Git offers a portable version, and is more appropriate for distributed source control than something like subversion.  If I used subversion, that would mess up the whole goal of keeping it on a flash drive.  I wouldn't be able to drop the env to a friend at a moment's notice, and then we'd need a central server stored somewhere.  Git might need some additional config if others join, but for now it's just me.

Of course, using Git might seem like overkill to some.  I like to save versions frequently, and I quickly get tired of and confused by all the .old and .dated files and directories lying around.  Git will eliminate all that clutter.

* Firefox.  While coding, you always end up with a ton of reference and investigation links.  I thought taking my browser with me would be better than storing links on a 3rd party site, which I've never really liked.  IE is not a possibility, and I prefer Firefox for the add-ins anyway.  This ended up working very well (as long as you bump up the cache, which defaults at 0), except for one problem, which might be considered serious.  If you run the portable version, with all your dev-related links, and then you try to run your local version, Firefox just runs another instance of the portable version.  So, you can't get to any locally-installed links without closing the portable version.  One workaround would be to store all links on all your Firefox installations, but I wasn't really looking to store, for example, my company's HR website on my dev env, especially if I want to drop the whole thing to another developer at some point.  Will have to think about this one a bit more.

* gVim.  I want to use the same code / text editor on any computer; your productivity increases as your expertise increases.  Yes, going to gVim feels a little like using WordPerfect on the dawn of Word's impending domination, but gVim is much more robust than Notepad++, which might be the only other possible contender meeting these two criteria: free and portable.  Frankly, I found very few features that gVim didn't have or couldn't be added to the default configuration.  A robust text editor decreases the likelihood of needing to fall back to a full-blown IDE, which I'm not sure would run well on a flash drive (though some say it works).

That's where I am so far.  Other than the remaining Firefox issue, the results have exceeded what I thought was possible.  I'll provide updates as my env requirements grow or unexpected issues pop up.

Wednesday, December 16, 2009

*Nudge* by Thaler and Sunstein

Without being aware of it, I seem to be very concerned about my or (maybe others's?) decision making skills.  Several books I've read lately deal with improving decisions.

Nudge takes an interesting approach.  Instead of questioning how people decide, it asks how decisions can be organized in a way that helps people make a wise decision.  Some might debate what makes one decision wise compared to another, but the authors point out that often people would make a choice except that they are forgetful or find the options too complex.

A simple example: defaulting 401k enrollment instead of forcing people to opt-in.  People can opt out if they so desire, but usually don't. 

The areas they discuss relate to government and institutional programs -- health insurance, charitable donations, marriage.

The theory applies very directly to software and software management.  Much of good management involves getting people to do the right thing -- and in this case, the "right thing" is more easily defined -- without using a heavy hand.  Sometimes micromanagement is required, but it should be a last resort.

Test driven development strikes me as a good way to encourage good practices.  You encourage testing and more up-front analysis by making the former easier and the latter part of the process.  Domain driven design provides tools to express the business more accurately.  You also encourage developer involvement in the business by easing the barriers to understanding.  Just working to get the developers in front of the users goes along way to this goal, as well.

Many other agile practices are less about software development per se, and more about putting people in the right spot and frame of mind to make the right decisions.

It's great to hire people who self-start and need no guidance.  Most of us, however, need a little nudge.

Tuesday, December 15, 2009

Lawsuits to rein in bonuses

You know things are a little whacked when your own shareholders sue you over bonuses.
Goldman Sachs Group Inc is being sued by an institutional investor who claims the firm is preparing to pay out improper bonuses.
Naturally, shareholders want more, but in this case, they believe they deserve it.  According to an article last month:

Despite record net income and compensation at Goldman as markets rebound and the firm outmuscles weakened rivals for business, analysts expect its 2009 earnings per share to be 22% lower than in 2007 and roughly equal to its 2006 earnings...  The decline is caused by issuing more than 100 million shares in the past year to bolster Goldman's financial position and capital.
The article raises the question about whether Goldman changed the way it accounts for consultants in order to make the average bonus look lower.  The conclusion seems to be that no change occurred, but questions like these will continue when 1) you faced death and survived due to help from the government, wealthy friends, and shareholders, who allowed getting diluted due to the circumstances, and 2) you played accounting games before.

In fact, given the disappearance of the worst month in its history (thanks to the accounting games), these bonuses may indeed be improper.  Including December, this is most definitely not a record year and therefore not deserving of record bonuses.

Bonus culture has ended its usefulness.

Monday, December 14, 2009

50% tax on bankers

A short interruption as we barrel toward bonus season here in the financial industry.

A fifty percent tax on bonuses over ~$40k would certainly get bankers' attention.  Britain and France both signed up, but other countries, including the U.S., have backed away.

At first, I doubted the wisdom of it, but after some thought, I find myself agreeing with it more.  (Needless to say, my banker friends would kill me.)

 The common arguments against aren't that strong, frankly:
1. it's politically motivated?  Uh, every law that gets passed fails that test.
2. it will drive people to work in other cities?  One time events don't have a big impact on behavior.
3. it will drive people to work for other companies?  See #2.  A couple years from now, this will have zero impact on people's work decisions. 

The bottom line is, we can dismiss this one-time tax as an extraordinary event, just as we justified bailing out the events because of the singular nature of the bubble collapse.

The strongest argument against it is that it can be circumvented, through delays or payments of other forms.  Very difficult to enforce.  But most people aren't making that argument.

As an issue of fairness, I see nothing wrong with it.

Wednesday, December 9, 2009

Better living through software

f.lux dims your monitor brightness during the evening and night.  Just like your dashboard lights dim when you turn your headlights on.  I would feel blinded when I'd come home and log in, and this really helped.  It might help you sleep better, too.  (Via Seth Roberts.)


Dropbox automatically syncs files between multiple computers.  It also keeps a copy of everything in online storage.  So, it solves the problem of storing to an always accessible location, while also keeping a second local copy in case the cloud goes down.  While also creating a copy in a different location in case you have a fire.  While also eliminating the need to email and thumb drive copies around to yourself.  This is a freemium service.  (Via Dave Winer.)

Bloomberg embraces baseball via new baseball stats analysis.  Seems a little like swatting flies with a brick, but as a baseball fan working in the financial industry, I have to like it.  As a side-benefit, it keeps the financial modelers busy and not creating fancy new financial products that no one understands and threaten our economy.  Then again, at the end of the article, one man claims that the Bloomberg product will destroy baseball.

Indie software games

Indie games are to the game industry what the indie movies are to the movie industry.  According to one leading indie game developer:
“A realization is dawning that games can be much more than what they are now... They even have the potential to be meaningful in deep, fundamental ways.”
You can try some of them for free, so you owe it to yourself to give them a shot.  Like indie movies, they tend to have more ambiguity in purpose and focus on aesthetics.

I hope these guys succeed, because we can only play so many versions of Halo / C&C / AoE / Warhammer / Warcraft.  Change way the people look, turn the castle into a spaceship, improve the design, but it's still the same game. 

Yet, I'm not convinced that games will join books, movies, and music as high art.  (Many argue that mass-appeal movies like The Transformers are no less an art form than other movies anyway.)

First, story lines and characters tend to be very shallow.  The old dude in Up had more depth than any video game character I've seen.  I'm not saying that, even when you're building your Civilization, there isn't a story being told. There is, and that history creates part of the fun of the game; it's just not a very complex story.

The bigger question is whether games should try to create meaning.  They should definitely try to force people to imagine new things.  Indie games do a good job of that.  Whether or not that's meaningful from an emotional sense may be irrelevant.

In addition to imagination, games should try to involve more of our senses.  The breakthrough of the Wii centers on the fact that it brought new senses into the experience.  Dance Dance Revolution is really a game revolution that we should appreciate in awe.

Ultimately, the division between games and tools will increasingly blur.  While "games" will continue to be a way to pass time, "tools" can make people's lives better, more efficient.  What more meaning could there possibly be? 

Monday, December 7, 2009

Happy holidays coding

Every year, I pull out the holiday lights and always (so far) receive a pleasant surprise.  "Wow, look how organized these lines of lights are!"  Bundled, neatly folded up, tied in key points. 

And that's when I remember that the year before, when I put them away, I took extra time to do it right.  Undoubtedly, other needs pressed -- lots of cleanup, snow to be shoveled, an urgent need for more exercise -- which is why, honestly, it never fails to surprise me when I take them out again.

Why don't we treat our code equally well?  People shove code in, sometimes with little regard to ever using it again.  Bad names, broken formatting, long run-on functions, no design considerations, etc.  It's a giant knot of holiday lights the next time someone opens the box.

There are 3 main reasons.  The reason you might hear most often -- "I was in a hurry" -- doesn't hold up.  Time pressures rarely put a gun to our head.  When NYSE goes down -- now those coders have an excuse!

The rest fall into these buckets:

1.  Tragedy of the commons.  Whether you do your part or not doesn't affect you that much.  Rather, it contributes or detracts from the group good.  So, you prefer to spend your time on things that will benefit you more directly.  In other words, your box of lights goes into a community pile, from which you'll pick a random one next year.  The best way to combat this is by cultivating a group culture that values well-written code.

2.  Discipline is difficult.  The temptation to slide by, just this once, draws you in.  You worked hard at it every day this month, you've earned the right to just shove something together and go home early this time.  If you're feeling this way, you're probably a bit burned out.  Take a break.  Take a day off if possible.

3.  I just don't care.  Often because the gain is too far away.  In other words, anyone who shoves their lights in the box without any effort to be organized, knowing they'll be the one pulling it out in a year.  This is the hardest one to overcome; the guy is crapping in his own yard, what can you do?  Sometimes, appealing to professionalism can help.

Of course, it goes almost without saying that the extra time I spent putting the lights in carefully was easily repaid by the short time it took to get them strung up again this year.  And now I can relax.

Thursday, December 3, 2009

Phone industry: the third phase

The remarkable story about Android phones is not the phones.

True, Motorola's Droid is selling well, proving the platform presents a real challenge to iPhone.  Not this year, and not by itself, but I'll stand by my earlier prediction that this is the last year iPhone will dominate.  Next year, we'll have more new, hot Android phones, and the snowball will continue to roll and grow.

What I find fascinating is how software is revolutionizing phones.  Software used to be a few buttons you pressed to find the right contact.  Phone hardware concerns dominated: how usable are the buttons (blackberry), how big is the screen, how many megapixels does the camera have, etc.

It seems obviously now, but if you had asked someone a few years ago, "How do you take on the iPhone," they would have replied, "You need better hardware."  Remember when everyone speculated that Google would get into the hardware business in order to build a beach head on the phone platform?  But Google saw right away that the hardware had developed to the point where it didn't matter as much as the software on the phone.

Think about this: an entire category of phone hardware has been marginalized -- the clam shell phone -- because that form factor can't really run the software.  Did "candy bar" vs "flip" used to be a preference decision for you?  It was only a couple years ago!  Then iPhone's large screen and keyboard phones killed flip.

And then think about this: Google, which doesn't even make phones, is now arguably the second most important company in mobile phone production.

The phone industry has entered a new phase.  Software issues will dominate, and that change will be as disruptive as the transition from landlines to mobile phones.

Update: just noticed that Google will in fact have their own phone.  So, Google will play both ends, presumably aiming for a completely seamless experience like iPhone. 

Monday, November 30, 2009

Bonus season begins

I'll be following how the bonus season plays out this year.  Most banks will apparently have huge bonus seasons.

Goldman, doing the best, will pay the biggest bonuses.  Back in August, the CEO told staff to refrain from ostentation. Didn't really work: bankers and traders are making giant purchases, just with lowered voices.

I'm reminded of the movie Goodfellas.  The guys pull off the biggest heist in history, and DeNiro (Jimmy Conway) tells everyone not to spend the money until the police heat turns down.  Instead, the next day, one guy shows up in a new pink Cadillac, the next guy's wife has a new mink coat. 

The most interesting aspect will be how the public responds.  Some predict public outrage, but I think it will brief and muted.  The Wall Street show will roll on.  Only strict regulatory overhaul has a chance to change things.

In Goodfellas, recall, the only thing that stopped the lavish spending was Jimmy Conway killing everyone off.

Thursday, November 26, 2009

Facebook is hell

Jean-Paul Sartre wrote (taking lots of liberties in my summarization here) that having all your thoughts and actions observed by someone else would create a hell of shame and fear. 

Welcome to our always-on, interconnected digital world!

Facebook is quickly becoming the grand marshall of this world.  I'm not saying Facebook is evil or bad, I'm just saying its tools -- easy updates and posting, photos and videos tagging you, a feeling of privacy in a public space -- work well, and as a result, create a perfect situation for unintended bad results.  It's the metaphorical equivalent of someone picking their nose in their car (false feeling of privacy in public), but instead of just a few fellow drivers seeing it, it's posted on the web.

Canadian woman loses benefits over Facebook photo
Bank intern busted by Facebook
Facebook postings closing doors for job candidates

For years, we "adults" have been tut-tutting the kids with party pictures posted with comments like "Stupid kids, you'll regret it later when you try to get a job."

But this is the world that kids grow up in today.  I met some recent college grads on a Facebook alumni page, and they all had between 500 and 5000 friends.  Every one of them.  That seemed weird -- most people I know, older of course, have between 30 and 300 -- but then I realized they'd been adding friends from every school, every club, every summer camp they'd ever been to, all their lives.  From that perspective, 500 is probably the number of an introvert.

If you got very drunk at a party, you used to just reminisce about it with your friends.  Getting drunk or doing stupid things together and then reminiscing about it was one of the things that bonded you. 

Now, the reminiscing happens on-line.  That's just the way it is today; it's designed that way.  Even against your will, someone else might take photos (Michael Phelps), and often those end up in their Facebook album, with you tagged.  And then, lots of people you barely know -- that guy you took driver's ed with and your sister's friend's boyfriend's karate coach -- are all reminiscing with you.  Without the bonding effects, of course.

Privacy options help a little bit, but that's a finger in a leaky dam.  Our groups of friends and family and business associates overlap and intertwine.  These days, I share jokes and beers more often with co-workers than with "friends".

The only safe option is to never do anything stupid that might be embarrassing if someone took a picture and posted it online.  You never know who's looking, so assume that someone always is.  That sounds like Hell.

Tuesday, November 24, 2009

Microsoft paying for search content is unbelievable stupidity

Microsoft's impending deal to allow Bing to be the exclusive search engine for The Wall Street Journal and other Murdoch sites can only be described as stupid. 

Forget about whether the price is too high (reports peg it at $50mm), if it includes Fox News and MySpace, or if gating news can every work as a long-term strategy.

The real question is: what's in it for Microsoft?  Absolutely no one is going to use Bing more often because the results will include those sites, or a different search engine because they won't.

The die-hard WSJ and Fox readership will simply go straight to the source.  No one else will notice.  Maybe you could argue that the search quality will be infinitesimally lower quality on Google.  It's a weak argument, but still no one will notice.  Tomorrow there will be more free sources of news than there were yesterday.

By the way, I tried to use Bing exclusively when it came out, just to encourage industry diversity.  But after about a month I gave up. 

I liked the pop-up extra text when you hover.  Unfortunately, it takes a second to load, which doesn't sound like a lot, but every extra second or step is a disincentive, especially when you might have to scan through dozens of entries to find the one you want.  I frequently forgot to use it.  Then, the hover text usually didn't have enough info.  Finally, the little bar that prompts the extra text to pop-out is too small.  Again, another second wasted finding just the right spot.  Why not start caching all the hover text as soon as the page loads and then show the text automatically when you mouse over any part of the result?

The killer, though, was that I found I had to go through more entries to find "good" results.  I found myself paging to additional sets of results more often.

If Microsoft has $50mm to spend to improve their search position, how about improving the hover usability?  Or implementing some other innovations?  Or improving their algorithms?  These ideas are too crazy?

If this deal goes down, it will be clear sign that Microsoft simply has too much cash that it doesn't know what to do with, and they should pay it out as a one-time dividend to shareholders.

Thursday, November 19, 2009

Long-term gains

After I work out / swim, I feel great.  Yet, before I work out, I have difficulty starting and think of dozens of reasons why I can't.  Why is that?

Sleeping feels great also.  So great that, like lots of people, it's not easy to drag myself out of bed in the morning.  Yet, at night, when I should go to bed, other things that I could or should do seem to proliferate, and I constantly go to bed late.  Why is that?

I believe the answer also explains why bonuses fail as an incentive practice.

All the satisfaction from the workout and the sleeping come at the end.  Meanwhile, there are other activities that offer more immediate rewards.  Sometimes, as in the case of working out, the activity itself requires exertion, and just sitting and doing nothing can feel more satisfying, in the very short run.

Frequently, the only thing that gets you to do the "right" thing is discipline.  Tricks can help, too, like telling yourself, "If you work out, you can have dessert."  But that's discipline in another form, because you can obviously do what you want.  Automatic withdrawals from your paycheck into your 401k is another form of discipline -- actually, another example of a very beneficial long-term goal that we wouldn't have a chance of fulfilling due to so many short-term alternatives, without the aid of another trick: "out of sight, out of mind".

Similarly, if you work hard over the course of the year, you increase your chance of getting a good bonus.

Of course, that assumes that you work in meritocratic organization, one which has strong capabilities in tracking productivity and achievement, and finely calibrating bonuses accordingly.  It further assumes that you can ignore the fact that the company's performance, which you have little effect on, overwhelmingly impacts your bonus more than any of your personal accomplishments.  If any of this was not true, then clearly the possibility of the bonus would have little part in your decision to do a good job.

But, even assuming all that, how likely is it that your decision in April to put in extra effort, give up your weekend, risk making a fool of yourself, and wear yourself out, will be affected at all by some additional dollars later that year?  It's a struggle just to stay focused on the positive incentive of a work out an hour from now!  The benefit of a full night's rest just a few hours away, all of which accrues to you, is too far off to affect your decisions now!

The bonus is classic example of a long-term gain.  I might further contend it does more damage than good, but at the very least, it clearly has no impact on productivity and personal incentives.

Tuesday, November 17, 2009

Free software: IntelliJ

In case you missed it, IntelliJ is now free.  JetBrains has adopted the freemium strategy: a free version and a paid enhanced version.

At one level, the strategy responds to the fact that the arguably best two IDEs are already free.  So, the free version helps get their foot in the door, and maybe you'll get hooked.

JetBrains's free version is offered under an open source license, a critical factor.  Clearly, this is actually all about a user-developed add-ons strategy.  It's called "the community version" after all.

So, this isn't quite freemium, it's actually open core licensing.

The unanswered question about open core licensing is whether the original developer (JetBrains in this case) can offer enough additional bang to encourage users to pay.  At the same time, they want their users to donate valuable features for free. 

Open core licensing is a fairly new free strategy, and it involves walking a real tightrope.  On the one hand, a strong user community means a strong platform, but less likelihood that the the proprietary version stands above far enough to elicit upgrades.  Meanwhile, the core version looks better if the community doesn't add as much, but then the platform doesn't add up to much.

Firefox and iPhone has taught us that add-ons make the platform far more valuable than the platform by itself.  Chrome and Android will emerge as serious competitors, in large part because they will have serious add-ons as well.

Similarly, IntelliJ has to compete with Eclipse.  Trying to spark a community as robust as Eclipse's presents a major challenge by itself.  Unlike Eclipse, they also have to simultaneously try to keep ahead of it.  It will be interesting to watch how IntelliJ, and open core licensing, evolves.