Web 2.0 Expo – Day 1 & 2

IBM gave out candy if you tweeted (or didn't) #sweettweet.  My tweet on top middle.

IBM gave out candy if you tweeted (or didn't) #sweettweet. My tweet on top middle.

Today, I attended day two of Web 2.0 Expo. See day. While I didn’t attend the main conference on day 1, there are a couple comments in here about it.  Many of the presentation files are available.

Day 2 Keynotes

They had a live tweet stream of all items tagged #w2e.  Apparently on Tuesday people posted some less than appropriate things.  Edited to add link. Today the tweet stream was curated (are we in a museum?) and only appropriate ones showed on screen.  Or as the speakers said, the stream was censored.

  1. There’s a #hashtag for that. – I had seen the swine flu part of The Onion speaker’s talk at a previous Ignite event.  It was still funny.  He gave many more examples.  Since this is a twitter topic, I’ll let you check out the speaker’s twitter page for more details.
  2. How we get past “free” and learn to exchange value again – Douglas Rushkoff talked about how money was created as a scarce and controllable resource in the Middle Ages.  It continued through the Industrial Age so the rich could stay rich without “doing anything.”  Corporations support this currency system by extracting value.  He also talked about how if something is free, you must leverage what isn’t.  (Write for free; get paid to talk.)  Looking to the future, Douglas speculated about power being won by companies that index content or control the index and that the next big thing is a non-cash electronic payment system.
  3. Making sense of Google Wave – After plugging her free preview PDF book The Complete Guide To Google Wave, Gina Trapani introduced Wave.  With that: she said, Wave:
    • is a protocol
    • is e-mail if e-mail were invented today (e-mail is a messaging paradigm based on postal mail)
    • does not strive to replace e-mail
    • is a collaboration tool
    • is meant for use in small groups of people you work with (public waves are overwhelming)
    • can have multiple clients like Twitter if someone writes them
    • does not support Internet Explorer – Google calls this “forward thinking” what’s forward about not supporting the most widely used browser?
    • targets power users, not “applications for dummies”
    • takes time to learn – like Photoshop
    • is too unstable to use for writing the PDF book not exactly a ringing endorsement
    • is good for threaded conversations
    • can show realtime movements on a map to others in your Wave
    • can easily start a group conference call when you need to go verbal
    • is currently in the invite only Beta.  Web 2.0 Expo attendees get an invite which comes with 10 invites. First 10 people to ask me for one get them.  I know I look forward to playing with it.
  4. Beyond Facebook and Twitter – Anil Dash described a few lessons learned of Web 2.0 that governments are applying: wisdom of crowds, cloudes, every problem is a scaling problem and there are more experts outside than inside.”
  5. Interview with John Barthwick from Betaworks – The classic O’Reilly style sit on the chairs interview.
  6. Confessions of a public speaker -Scott Berken author of a book by the same name said public speaking is the original social medium.  He pointed to three timeless technologies (at least in techie circles) – talking, writing and beer – all of which provided areas for communication.  Before ending by suggesting an exercise (he suggesting asking “what’s the best story about your product” rather than listening to a marketing pitch”, he made three interesting comments:
    • You can tell a good or bad story with any technology.
    • Failures to communicate cannot be resolved by technology.
    • Technology can only get you so far.  “The world is pretending the breakthrough is in technology; the bottleneck is really in art.” – Penn Jillette

Birds of a Feather

I liked the Wednesday Birds of a Feather much more than the Tuesday ones.  I attended two sessions on both days.  Each day, one had a decent number of people and the other was almost empty.  However, the Wednesday ones had more of what I call “prepared discussion” while the Tuesday ones were more presentation driven.  Since the spirit of Birds of a Feather is supposed to be about discussion, I was surprised by the amount of presentation involved.

Web 2.0 Open

Like Birds of a Feather, Web 2.0 Open also focuses on participation over presentation.  I only attended one of their sessions today, but they did a great job.  There were a lot of people in the room, they were engaged and there were references to discussions earlier in the day.

Other things I learned at assorted talks or things I think were especially clever

  • Open source is people getting together and doing something.  Crowdsourcing is a company trying to get people to do something for it.
  • We all write for a living – e-mails, tweets, etc
  • “Sending cat pictures to friends” is becoming a cliche.  I’ve been hearing about it for over a year now.  In case you haven’t heard about it – I can has cheezburger
  • UX stands for user experience
  • Sony Ericson has a phone/camera with facial recognition.
  • “Social Mining” and “Sentiment Monitoring” are terms.  They are what they sound like.
  • People may say bad things about your product whether you are on social networking sites or not.  The difference is you can respond/react properly
  • Social media isn’t free.  It still takes time to market.
  • Page views are an early matrix.  Financial metrics should be used for ROI which come after that.
  • Facebook is starting to become profitable from ads.  Twitter is still leaking money.
  • IBM talked about the “virtuous cycle or reuse” (aka positive feedback loop) – each mashup you create makes creating the next one faster due to more widgets in your catalog.  This seems like it applies to any type of common component.
  • IBM shows how they use social networking on their own internet with live examples.
  • Wolfram Alpha showed many interesting examples using their knowledge engine.
  • If everyone gets a phone, do you wait for someone to mail you a letter?
  • You can waste time with any technology – such as Minesweeper when PCs first had it.
  • On Twitter, your popularity increases your credibility which increases your status.
  • Four online behaviors are lurking (private), staying in touch (people you know), connecting (people you want to know) and brand building (very public)

Check back tomorrow for comments on the final day of Web 2.0 Expo.

why to turn down a paid job

More money is always better, right?  Not really.  Granted if you don’t have enough money to buy food and other necessities, this doesn’t apply to you.  However if you already have a full time job and enough money to live comfortably, is more money better?

Liking your full time job

One time in the Job Discussion forum of JavaRanch, someone asked about which of two completely disparate things paid better.  In a discussion about which he liked better, I asked a hypothetical question.  The gist of it was – if you got paid a lot of money to get poked with a hot/sharp stick 40 hours a week for the next 10-20 years, would you do it?”  While someone obligingly answered that it depends on how much you get paid, it shows the point.  Making you think about enjoying the large percentage of time you spend at work.

Similarly, a few participants in that forum have expressed a statement that they would rather stay technical even if becoming a manager paid more.  I certainly understand this sentiment.  It shows enjoying a job matters.

What about volunteering?

Some technical people do volunteer work on the side because they enjoy it.  This is a marked contrast to “I’m on a computer all day at work – why would I want to touch one at home.”  On the surface, it would seem like if you enjoy something enough to do it voluntarily, getting paid would be icing on the cake.  I’ve turned down a couple offers to do something on the side for money.  My reason is that I have a full time job and if I get paid to do X, it will be stressful.  Whereas while I’m a volunteer I don’t feel bad if I have to stop for a little while – as long as someone else is covering.

Then I read Ilja Preuss’ tweet about the article “How Rewards can Backfire and Reduce Motivation.”  The article points out rewards remind us of obligations and dull/tedious/painful tasks.  Very interesting and it really resonates with me and why I do things as a volunteer.

Assuming you can pay the bills, fun is a factor!

product review: infinitest

Want to run your JUnit tests as soon as you change the code?  That’s what infinitest strives to do.  The starting point is infinitetest.org which directs you to the corporate site.

What does it do?

Infinitest installs as a plugin to your IDE.  In Eclipse, it adds a bar to the bottom of your screen.  I’d say I lost about an inch of real estate.  Not much, but if you have a lot of other plugins, this could be a problem.

Every time you change Java code, it sees which unit tests should be re-run and changes the bar to the appropriate color:

  • black – waiting for changes – when open workspace and haven’t done anything yet
  • green – all is well
  • yellow – no tests were affected by this change
  • red – one or more tests are failing (could be from this change or a previous change)

The bar, also tells you how many “test cases” were run.  They mean the number of test classes rather than the actual number of tests so this number isn’t as useful as it sounds.

Does it require a lot of configuration?

No.  The entire user guide is two screens long.  Configuring it took me less than two minutes – which were spent looking up the name of my integration test runner and package so infinitest didn’t run them.   I also looked at the preferences and saw it had a default of half a second before giving up on a test.  That’s a good length.  No unit test should take that long.

What do I need to run/install it?

Infinitest runs as an Eclipse or IntelliJ plugin.  I tried it in Eclipse.  You install from an update site.  My only concern is they don’t provide a manual zip file style local update.  Now granted, neither do many other products, but they take the time to write:

If you are behind a firewall, you may have limited access to the Internet. This can cause problems accessing the update site. If you use a web proxy to connect to the Internet, make sure that you have correctly entered your proxy settings into Eclipse under Preferences->General->Network Connections.

If it’s enough of a problem to document, I think it’s enough of a problem to realize you have customers that aren’t allowed do download any plugins without having an approved body do it.

How much does it cost?

The initial install is for a 30 day trial.  After that, you have to decide if you are an “individual” or “corporate” user.  Once you decide you either fill out a form saying you are an individual or pay $150 per seat (perpetual license) and a license is e-mailed to you.  Just copy/paste the license into your IDE and you are done.

individual – you own the copyright.  In other words you aren’t selling what you write.  From talking to the vendor, it sounds like open source and code I write for JavaRanch fall into this category.

corporate – code you write for someone else to make money – also known as your job.

How well did it work?

I have three Java projects in the workspace I used to test:

  1. JForum – The JavaRanch fork of JForum.  About 200 classes and a bunch of unit tests.
  2. PickWinners – The program JavaRanch uses to pick winners in the book promotion.  About a dozen classes and about the same number of tests.  Both unit and integration tests.
  3. Play – this has one class and no unit tests.  I use it to test out “what does this code do”

My attempts:

  1. Edited a file in my Play project – it ran all the test cases in JForum and PickWinners.  At first, it looked like it wasn’t using dependencies, but I think this was because it was the first run and it though nothing had run yet.
  2. Edited the file in Play project again. This time it correctly realized no tests were affected.
  3. PickWinners now has 5 errors of type “Infinitest Test Failure” – All are errors accessing the database from my integration tests.
  4. After adding infinitest.filters, I had to clean the project to remove the failures.  (This was documented in the manual page.)  It does re-run tests that are still unfiltered.  It took me to passes to get the right filters.
  5. Made another change to PickWinners – it’s still running JForum tests
  6. Cooked and ate dinner (in other words, a bunch of time passed)
  7. Tried again – all of a sudden it  started picking up only the truely dependent tests.  Maybe there was a learning curve?  Cool.
  8. Almost everything I tried after dinner did pick up the correct tests based on dependencies.  It (usually) found tests that use the class indirectly.  It got faster and finding dependencies when I repeatedly edited the same class.  I assumed it cached the result.  Which is good because when doing real development, this is what happens.

What problems did I encounter?

  1. The JForum project doesn’t show the test failures as compiler errors.  The PickWinners project does.  The JForum project also complains sporadically about a class not being found that is in the same project.  Note: this problem temporarily went away after I restarted my workspace.  It came back after I introduced a failing test and corrected it.
  2. As I wrote above it usually finds the relevant tests.  For example, I changed the implementation of post.setText() to use the value “hi” instead of the passed in value.  I expected a whole gaggle of tests like the following to run and fail.  None of them did.

    @Test
    public void noCodeTags() {
    post.setText(“test”);
    PostCommon.processText(post);
    String actual = post.getText();
    assertEquals(“transformed post”, “test”, actual);
    }

  3. I have to assume this won’t work for reflection based code.  I don’t have any on hand.  While I could write some, it doesn’t sound like it work from the vendor’s description.  And if the vendor admits it won’t work, I’m inclined to believe them.

Final thoughts

I like the emphasis on “keeping the bar green.”  If you always see it on the screen, it reminds you it exists.  I haven’t had it installed for long, but I’m already used to it being there and relying on it.  Even if it isn’t perfect, it’s great to have present.

It worked well enough to be useful on my home projects.  I’m not sure how well it would function in my work environment where compiles involve a lot more code.  The “find the proper tests phase” was noticeable at home.  It could be better at work (faster machine) or worse (much bigger workspace.)

not sure how well it would work in my work environment where compiles involve a lot more code