Apr 10 2009

The DiggBar Uprising

Back in May 2007, Digg users revolted against the popular social bookmarking web service over Digg’s overzealous removal of articles that mentioned the AACS key. The first Digg Rebellion was resolved with Digg caving in their users’ wisdom of crowds. The Second Digg Intifada began when Digg launched their now infamous DiggBar, aka DoucheBar. The DiggBar iframe carjacks your content. Since the launch of the DiggBar, all the links on Digg’s front page that used to refer to third party and often independent content producers not refers back to Digg. When you link on a Digg link, they load your content in an iframe below their DiggBar. The DiggBar allows ‘digg users’ to find similar articles, vote up and down, and click on Digg ads.

We have seen similar polemic behavior from you upstart entrepreneurs before, not to long ago Facebook faced a similar uprising over their Terms of Service. Facebook reversed their Terms of Service, I wonder how Digg will save face if not their good will.

Here are some choice reactions to the DiggBar.


Apr 8 2009

Google App Engine for Java

Google App Engine was originally released, in Google beta, a year ago. Google App Engine originally had programming support for the Python programming language, but today, on the one year anniversary of its beta release Google has added Java support. Building Java support into Google App Engine means that they have built it for JRuby, Groovy, JavaScript, and all those languages that run on the JVM.

You can request access to Google App Engine for Java via this sign up. I am sure there will be a more news, documentation, and tutorials at Google I/O Developer Conference in May. In the mean time here are plenty of resources to get you started.

Google App Engine for Java


Apr 7 2009

Java Nested Inner Class This

Here is a Java certification sort of question. Inside a nested inner class, how do you refer to the containing outer class?

public class MyClass {
  private String outerClassField = "some value";

  public void outerClassMethod() {
    someObject.addMyListener(new MyListener() {
      public void processEvent(MyEvent e) {
        // How do you access the variable outerClassField?
      }
    });
  }
}

You can’t use the this keyword because that will reference the inner class! The only way I know about, and that I have used before, is to use the class name. Such as the following example.

public class MyClass {
  private String outerClassField = "some value";

  public void outerClassMethod() {
    someObject.addMyListener(new MyListener() {
      public void processEvent(MyEvent e) {
        MyClass.this.outherClassField;
      }
    });
  }
}

Apr 7 2009

Java Web Service with HTTPS

I recently had to write a small Java client that calls out to a Java Web Service that was sitting behind HTTP over SSL (HTTPS). From what I could tell, they had an expired or self signed certificate because calling the Web Service would throw an nested SSLHandshakeException, ValidatorException, and SunCertPathBuilderException that read something like the following

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

After searching around I found a 2006 article from Andreas Sterbenz describing the solution to the unable to find valid certification problem I was encountering. The article went into to much detail as far as I am concern but it did provide the right solution.

The gist of the solution is to download and compile this Java class that saves the certificates from a particular domain to a file. This program will save a keystore with the certificates called jssecacerts in the local directory where you run the Java class.

This keystore needs to be used from the client application that is connecting to a SSL service. You can start the client Java process with the following Java system property: -Djavax.net.ssl.trustStore=<PATH TO KEYSTORE> … or you can replace the the cacerts file under jre\lib\security for the JVM you are using with the jssecacerts keystore file created from the aforementioned Java program.

Using the keystore file correctly should fix the unable to find valid certifiction exception.


Apr 4 2009

The Rubyist: March 2009 Edition

Here is a recap of the top Ruby-related links for the month of March 2009. Links for The Rubyist are provided by A Rubyist Railstastic Adventure, a tumblelog.

Ruby

Rails


Apr 3 2009

Retweets March 2009

From time to time I just blast tweets about software development, project planning, team dynamics, or whatever else comes to mind. Here is a synopsis of recent tweets and rants. You can follow my tweets at techknow, say hello and I’ll be sure to friend back!

Programming

  • Don’t be a one track mind, and don’t be a one stack developer!
  • If a picture is worth one thousand words, a running and working application is worth one thousand specifications!
  • In software development there are more people issues than there are issues with specifications or features or code.
  • Can we use the internal defect tracking software to enter a bug issue on people that bug you?
  • Sophisticated does not need to be complicated.
  • Nerds don’t dance, they programmatically move their limbs in unison.
  • Writing blocks of code and upgrading your whole library dependency is rarely a practical solution that clients are willing to pay for.
  • Will Code for Happiness!
  • I don’t make itineraries, I use public map APIs and RSS feeds and make apps that make travel itineraries for me!
  • Throwing money at a problem only cause other type of problems.
  • Instead of counting backwards, a good sobriety test for a nerd is to recite the Fibonacci sequence or prime numbers or powers of two.
  • Numbers don’t lie, but they omit how they where gathered, analyzed, and crunched.
  • There is no better code than the one I am currently working on, and their is no worst code than the one I wrote a year++ ago.
  • Can’t sleep so I’m hacking memories into dreams, counting tweets instead of sheeps, drinking tequila instead of warm milk.
  • Do you think in a procedural, object oriented, tail recursive, domain specific, prototype, meta, functional or parallel quicksort of way?
  • There is no I in TEAM especially when there is blame to pass around. Sometimes blame get passed around more than the ball.
  • In problem solving some people also prematurely optimize and over think the problem at hand by introducing another problem.
  • Some people have Personal Assistant, I need a Personal Programmer.
  • Some drop bombs, others drop beats, some drop bunker buster knowledge, many more drop opinions, I drop bytecode!
  • In temperate and sunny days like these I develop an allergic reaction to my cube.
  • Textbook answers alone are not solutions. Chanting ‘Interface Singleton Builder pattern’ in meetings does not fix all your design issues.
  • Booksmart peeps give you text book answers, but I’ve never needed to know when two trains arrive in Toledo if the leave opposite directions.
  • Writing a twitter client is the new hello, world!

Business

  • Google New Customer Service Motto: Don’t Be Evil and Don’t Be Available!
  • Google has mapped the streets, oceans, earth, heavens. What will Google map next, the brain, underworld, middle earth?
  • Why doesn’t the iPhone have a good way to delete multiple pictures at once? Am I to wait two years for this just like cut and paste!
  • Can I put a restraining order out on Adobe Acrobat, it always pops up and asked if I want to upgrade! NO LEAVE ME ALONE!
  • Wowza, still downloading more Kindle books on my iPhone. This makes my digital library even more accessible.
  • I should pitch a nre series to ABC, Dancing with the Nerds.
  • Odwalla’s Superfood is the veggie version of the hot dog in a green liquid form, it is mechanically separated and blended roots and fruits.
  • What? Mark Zuckerborg is on Twitter? Is that like eating your own dog food and your competitor’s dog food too? Say hello to Mark: @finkd
  • How do you politely handle a coworker coming to your office and talking about his cat? I rather be clawed to death than hear about it again.
  • Customers want answers not theories.
  • Show more interest in your customers than their money.
  • You can’t win every argument just by being right, just as you can’t win market dominance just by having the superior product.
  • It took years, well over a decade, since it’s invention for slice bread to become the greatest thing since.
  • Eventually everyone sells out, if not to the establishment then to the anti-establishment.
  • It is okay to wear multi hats as long as you wear your kick ass army boots.
  • Save or create jobs? I just saved a job by going to work! I need a tax break and a coffee break.
  • Before you can build a better mouse trap, fix your toaster.
  • I’m going to make a Ol’ McDonald style burger and on this burger I’ll have beef, bacon, turkey… EI EI O
  • Best Job Tittle: Aggression Researcher You Stupid Bastard!
  • Just received an email from the recruiting agency my company uses, the had to layoff some staff.
  • Some people hustle for money, I hustle for deals.
  • There are three forms of questioning: conversation, interview, interrogation.
  • My 401K looks like it did during Y2K
  • Blogging is not a business plan.
  • Which do you prefer first, action or planning?
  • Between action or planning I prefer active planning!
  • Don’t let a show stopper actually stop the show! The show must go on! Break an audience member’s leg if you have to!
  • Rules and regulations should not replace common sense.
  • Talking is not communicating, an idea is not a vision, and an opinion is not a sound argument.
  • Don’t compete with those that are trying to help you.

Twitter

  • Twitter fail whale is over weight and over capacity!
  • Twitter is too big to fail! Twitter’s business model should be asking the Obama administration for a bailout?
  • If you don’t have anything nice to say, retweet.
  • There is famous, 15 minute famous, and then there is Twitter famous.
  • If Twitter is poor man’s email, who is the slum dog millionaire’s email?
  • Can’t hardly tell the diff between a twitter and a tweaker.
  • Twitter should allow you to customize the question ‘What re you doing?’ to anything else like ‘Talk to me.’