Coach Thrasher

Wednesday Feb 03, 2010

faceless, replaceable cog

Quote of the day: "The world wants you to be a faceless, replaceable cog in the vast machinery of production--but if you choose, and you work at it, you can become the sort of person we really need, an indispensable linchpin, a person who matters." -Seth Godin

Sunday Jan 10, 2010

Noah's Tree Frog

I'm posting this Google Web Element for Noah, how likes to watch the frog chase and eat the flies. To feed the frog, click on the image to release new flies, and the frog will chase them.

Tuesday Dec 29, 2009

New Year's Row

With work-mates still on vacation this week, and high tides from mid-morning to noon, I'm thinking of taking a few long rows. Maybe Corkscrew + Westpoint in one day? Bridge to Bridge?

Here's a Bigger Map, if needed.


View Bair Island Rowing in a larger map

Thursday Dec 10, 2009

Don't update OSX: Java For MacOSX 10.5 Update 6 breaks WSS4J

After letting Apple's software update run, I'm no longer able to get WSS4J to read my PKCS12 or JKS key stores to allow for SSL calls using CXF. Crap!

There aren't any other reports of this out there yet (the update went live Dec 3, 2009), that I can find, so I'm posting in the hope that anyone else is having this issue will provide details of the problem, or resolution. Their official documentation for reversion of the Java Update 6 is to reinstall the OS.

Java for Mac OS X 10.5 Update 6
Security update details

I found the problem because my CXF stack is being used to talk to Amazon Web Wervices, using WSS4J. Here's the error I'm seeing after applying Apple's Java Update (below). Note that the "Keystore was tampered with, or password was incorrect" message is misleading as I've just create the keystore, and verified that it's valid with the right password. The problem seems to be that "java.security.KeyStore" isn't seeing the credentials that the Apache WSS4J package is passing in. Since WSS4J hasn't changed, and it worked before the VM update, it looks like a VM bug.



WARN [main] PhaseInterceptorChain.doLog(361) | Interceptor has thrown exception, unwinding now
java.lang.RuntimeException: org.apache.ws.security.components.crypto.Merlin cannot create instance
at org.apache.ws.security.components.crypto.CryptoFactory.loadClass(CryptoFactory.java:225)
at org.apache.ws.security.components.crypto.CryptoFactory.loadClass(CryptoFactory.java:180)
at org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFactory.java:73)
at org.apache.cxf.ws.security.wss4j.AbstractWSS4JInterceptor.loadSignatureCrypto(AbstractWSS4JInterceptor.java:195)

[SNIP]

Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:501)
at org.apache.ws.security.components.crypto.CryptoFactory.loadClass(CryptoFactory.java:211)
... 38 more
Caused by: org.apache.ws.security.components.crypto.CredentialException: Failed to load credentials.
at org.apache.ws.security.components.crypto.AbstractCrypto.load(AbstractCrypto.java:174)
at org.apache.ws.security.components.crypto.AbstractCrypto.(AbstractCrypto.java:135)
at org.apache.ws.security.components.crypto.Merlin.(Merlin.java:71)
... 43 more
Caused by: java.io.IOException: Keystore was tampered with, or password was incorrect
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:768)
at java.security.KeyStore.load(KeyStore.java:1150)
at org.apache.ws.security.components.crypto.AbstractCrypto.load(AbstractCrypto.java:168)
... 45 more


Update: I've resolved it by using my Time Machine backup to revert the entire subdirectory of: /System/Library/Frameworks/JavaVM.framework" and it has fixed the problem. Though Apple's official line is that an entire OSX reinstall is needed to revert, this has indeed reverted both JDK 1.6 and 1.5 correctly. The Software Update app doesn't think that Java Update 6 has been applied.

Thursday Oct 22, 2009

Auto-generating Maven Exclusions

Identifying maven exclusions for project dependencies can be a tedious pain in the neck of hand coding XML in the pom. My philosophy on XML is that it was not designed for hand editing: so be lazy and don't do it!... or at least try not to.

Here's my little grep/sed recipe to generate exclude statements for all top-tier dependencies of a module. I take its output and paste it into my own modules pom.xml to remove everything, except exactly what I need.


mvn dependency\:tree \
| grep "\] +- .*compile$" \
| sed "s/^\[INFO\] +- \([a-zA-Z0-9\._-]*\):\([a-zA-Z0-9\._-]*\):.*$/<exclusion><groupId>\1<\/groupId><artifactId>\2<\/artifactId><\/exclusion>/g" \
| sort

And here's what it spit out for something including the kitchen sink of dependencies:

<exclusion><groupId>com.adobe.acrobat</groupId><artifactId>acrobat</artifactId></exclusion>
<exclusion><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId></exclusion>
<exclusion><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId></exclusion>
<exclusion><groupId>javax.jcr</groupId><artifactId>jcr</artifactId></exclusion>
<exclusion><groupId>javax.mail</groupId><artifactId>mail</artifactId></exclusion>
<exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion>
<exclusion><groupId>org.apache.jackrabbit</groupId><artifactId>jackrabbit-core</artifactId></exclusion>
<exclusion><groupId>org.apache.jackrabbit</groupId><artifactId>jackrabbit-ocm</artifactId></exclusion>
<exclusion><groupId>org.apache.lucene</groupId><artifactId>lucene-core</artifactId></exclusion>
<exclusion><groupId>org.apache.ws.security</groupId><artifactId>wss4j</artifactId></exclusion>
<exclusion><groupId>org.hibernate</groupId><artifactId>hibernate</artifactId></exclusion>
<exclusion><groupId>org.springframework</groupId><artifactId>spring-core</artifactId></exclusion>
<exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion>
<exclusion><groupId>org.springmodules.jcr</groupId><artifactId>springmodules-jcr</artifactId></exclusion>
<exclusion><groupId>rome</groupId><artifactId>itunes-com-podcast</artifactId></exclusion>
<exclusion><groupId>rome</groupId><artifactId>rome</artifactId></exclusion>
<exclusion><groupId>xalan</groupId><artifactId>xalan</artifactId></exclusion>

How do you do the same thing?

Friday Sep 25, 2009

37signals Valuation Tops $100 Billion

Here Joel Spolsky's "Duct Tape Programmer," piece, re-written by Jason Fried of 37signals:

37SIGNALS VALUATION TOPS $100 BILLION AFTER BOLD VC INVESTMENT.

The next time I hear about someone seriously pitch me on creating a world-changing app in 30 minutes using GUI tools, I'm going to vomit.

Thursday Sep 24, 2009

Feeling like MacGyver

This had me feeling like MacGyver:

The Duct Tape Programmer

When the shit hits the fan, don't get sprayed by a complex system. But sometimes it's unavoidable, damn.

Tuesday Jun 09, 2009

The bike has been returned!

The SF Police were able to recover it for me from someone trying to sell it, and Craigslist played a pivotal role. There were a total of 9 days from "theft day" to "reunion day". The bike was mostly unharmed save about $100 worth of parts that had been removed, all of which are replaceable. The cool stuff like my Paul's brakes, old-school XT pedals, and 36-spoke wheels, were still attached.

It was a pretty amazing turn of events from my perspective, as I'd never had a bike stolen before. The SFPD were very professional, and knew exactly what to do. I don't want to give nitty gritty details to protect the innocent, and officers involved, but my first and only interaction with the SFPD was great.

The key elements to my recovery were 1) filed a police report online, 2) call the station and get an officer on the case, 3) post a "STOLEN: " report on Craigslist under "bikes".

Noah, my 2-yr old son, and I, celebrated the return with a trailer ride to see "ducks and airplanes" at the Palo Alto airport.

Sunday May 31, 2009

STOLEN Bike: custom fast-touring bike w/o stickers

It is quite ironic that, as I planned my trip to the Google's I/O conference by bike, I could not find any information about a bike valet, or inside bike parking, on any of Google's pages about the conference. Of course, I searched using Google.

This is the first time in my life I've had a bike stolen from me. The experience has left a very sour taste in my mouth.

As seen on Craigslist:

I'm posting as maybe, just maybe, someone has seen my bike. It was last seen the Wednesday morning at 9:45am, locked to the bike parking rail, on the corner of 4th and Howard. It was parked at the bike rack in the little courtyard next to the Metrion on the north corner of the intersection.

I left it there while attending a conference at Moscone. I'd thought taking the train, and biking, would keep a car off the road. I guess I'm totally naive about locking bikes in SF, as I figured the parking area's high pedestrian traffic would deter any would-be thief. I was wrong.

If you have any information about the bike, please let me know! I'd love to have it back. There's a picture of it below. Here are the details of the components:

- Shimano 105 hubs on 36 spoke wheels
- tires are Panaracer T-Serve (700x28c)
- rear brake is a Paul's CNC machined brakeset from the mid 1990's
- front brake is a cheap Shimano V-brake
- cranks are Shimano LX
- pedals are 1st generation Shimano XT dual-sided SPD
- rear rack (I think it's a Blackburn) (it did not have a pannier bag on it when stolen)
- rear derailleur is Shimano Deore
- front derailleur is Shimano, custom modified for the bike
- brake/shift levers are Shimano 105
- Blackburn mini-pump
- three bottle cages
- old Ritchey seatpost
- WTB seat
- Weyless stem
- Ritchey Pro 44cm handlebars
- fenders
- additional cross-style brakes
- V-Brake Travel Agent on the front
- SRAM-70 chain
- Shimano XT 12-28 cassette
- 3 bottle cages
- brown cork handlebar tape
- right handle bar end had a LED light with dead coin-cell batteries
- left handle bar end had a mirror

thanks!
JT

Monday May 25, 2009

rtmpdump

Wow, Luke Kenneth Casson Leighton is pissed at Adobe for DMCAing RTMPdump. I believe in free software, and not breaking copyrights, so I side with him on those points. However, when he brings his 7-week old daughter into the argument with an f-u sign, that crosses the line. Bad form Luke, baaaaaaad.

Tuesday Mar 31, 2009

GMail via Spring JavaMailSenderImpl

Sometimes I hate Google. It can give too many wrong answers. Yet, they look so enticing, like I'm a little kitten playing for hours with a ball of yarn. It gets me nothing.

None the less, here's how to properly configure Spring's JavaMailSenderImpl to -properly- send mail through Google Mail using your gmail account.


<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="defaultEncoding" value="UTF-8"/>
<property name="host" value="smtp.gmail.com"/>
<property name="port" value="465"/>
<property name="username" value="${mail.username}"/>
<property name="password" value="${mail.password}"/>
<property name="javaMailProperties">
<value>
mail.debug=true
mail.smtp.auth=true
mail.smtp.socketFactory.class=java.net.SocketFactory
mail.smtp.socketFactory.fallback=false
</value>
</property>
</bean>

Thursday Feb 12, 2009

Barriers to Innovation

This brings back the memories:

It's also why Silicon Valley hasn't been successfully replicated elsewhere.

Saturday Dec 13, 2008

Silicon Valley Social Valuation

Wow, here's a juicy Silicon Valley bit: Michael Arrington is smacked down by Loic Le Meur at LeWeb for being American. This is really representative of my own experience here in SV as well. We take ourselves too seriously, as though nothing else matters besides work and our role therein. We don't develop the deep relationships that people do in other parts of the United States. When opportunities arise that require those deep relationships, we fail to identify them, or take positive action.

This concerns me, more now than ever. The world economy is down, and I strongly believe accelerating downward. Things (products) are getting devalued, yet economies like the United States have made strategic assumptions about consumerism, and are relying on people to buy more things to get us out of the mess. But that doesn't look likely to happen. We seem to have created a negative feedback loop: the less we buy to protect ourselves from the bad economic times, the worse the economic conditions get.

How is this related to Michael Arrington's smackdown? Well, I believe things that aren't material will have more value as the economy declines. One of those things is personal relationships. As such, I assume people that are morally or socially bankrupt will have a harder time than others, despite their absolute financial position. Unfortunately, the US, and particularly Silicon Valley culture, doesn't seem well positioned to take advantage of that value. We're not all bankrupt, but the perspective that Le Meur's post highlights is a point on the social gradient allowing a deeper evaluation, or valuation, of personal value than other neighbors in Silicon Valley allow.

Sunday Oct 26, 2008

It's Time For Some Campaign'

JibJab rocks:

Try JibJab Sendables® eCards today!

Friday Oct 10, 2008

What will Baby T. Look Like?

Here's a very cool online app that lets you find out what kind of person your child might look like given a picture of the mom and dad:

Face Research Demo

Very cool! They should have a kiosk version of this at bars.

Calendar

Feeds

Search

Links

Navigation

Referrers

Loading