Wednesday, December 31, 2008

Local San Francisco Politics

Monday, December 29, 2008

Warning Rock Climbing Makes Me Horny

I just made this shirt on CafePress. Go buy it.

If you don't like CafePress, you can also purchase it from Zazzle. There is options for Dark and Light shirts.


Tuesday, December 23, 2008

Eclipse Update Problem

For the last month or so, Eclipse has been bugging me to update. Like the fool that I am, every couple of weeks, I click the update icon and get this Available Updates window which seems full of all sorts of potential nifty bug fixes and feature additions.

After running for a few seconds, I'm unhelpfully presented with this dialog:

Clicking on the Details button, I get this dialog which does nothing to help me resolve the issue.

Dear Eclipse, why do you tease me so?

Monday, December 22, 2008

Poodle Grooming


Hypermotard 1100

My friend Jeff went to a motocycle show. I asked him to pick me up a Hypermotard 1100 (my current drool bike) and this is what he got me. Ha nice one jeff, I'm sure I won't have a problem flat footing this one.

Thursday, December 18, 2008

Academy of Science

At work, we had a field trip and went to the San Francisco Academy of Science today. I was really impressed, it was much larger than I expected and there were some really great exhibits.

Wednesday, December 17, 2008

Canon pixma ip4500 printer + linksys wpsm54g + Mac OSX

Just logging it here so I don't forget. If you want to setup printing with the above configuration, then install Gimp Print >= 5.2.2 and just follow these directions after you use Windows (running in vmware fusion) to initially configure the thing over ethernet. Not pretty, but it works.


Tuesday, December 16, 2008

Eclipse + Subversion

Dear Internets, why doesn't Eclipse include the Subversion plugin as part of the distribution?

Monday, December 15, 2008

Mike Huckabee

Dear Mike Huckabee, go crawl back from underneath the rock you came from. I seriously can't believe the words that come out of your mouth.

Yoga Toes

When the recession gets you down, is yours for the low low price of only $49.95.

Thursday, November 20, 2008

Subversion Inconsistent line ending style error message

While trying to do an import of jboss 4.2.3.GA tonight, I've come across this error about 4 times so far.
svn: File 'jboss-4.2.3.GA/server/default/deploy/jbossws.sar/jbossws-context.war/index.html' has inconsistent newlines
svn: Inconsistent line ending style
svn: Your commit message was left in a temporary file:
svn: 'svn-commit.tmp'
Seriously, what the hell? Don't kill the entire commit with fail. Just give me the option to either fix the problem myself, fix the problem for me (default option and pick unix linefeeds) or finally give up. Additionally, why can't the client just do this check before getting 100 files into the commit? Grumble, why do you software developers make my life so difficult sometimes?

Tonight's fix:
Install dos2unix since OSX doesn't come with it (assuming you have MacPorts installed): sudo port install dos2unix
Then run it against any suffixes that need to be converted: find . -name \*.html | xargs dos2unix

Tuesday, November 18, 2008

The Big Three (Losers)

I'm sorry for the people who will lose their jobs as a result of the total fuckups that have happened at the big three automotive companies. But, I do have to say that this is a long time coming and it is only going to get worse. I also have no desire to bail these companies out.

This CNN article asks some hard questions and instead of answering them truthfully with some semblance of humility, Ford Motor Company chief executive Alan Mulally defends his companies total disregard for the environment and the current economic situation that they helped create. To say that you have been concerned with fuel efficiency from day one is a total lie, otherwise you would have actually delivered on your words or even better, been in a position to not need to be bailed out with my hard earned tax dollars.

I say that it is time to fire this guy and put someone with some real concern for the environment (first) and economy (second) into his position.

Update: One down.

Saturday, November 15, 2008

Controlling Spam using Gmail

I had an idea for controlling spam that works really really well for me. I modified my email forwarding to look like this:

[email protected] -> [email protected] -> [email protected]

[email protected] is the only account that I actually read on a regular basis.

I just had a case where a spam message to [email protected] which can be viewed in my Inbox on [email protected] In other words, it wasn't auto filtered to ABC's Spam folder. Well, that message never got forwarded to [email protected] I can't explain why and so far, all of the valid email has gotten forwarded.

So, my Spam folder on [email protected] stays clean except for spam that was sent directly to [email protected] Thus, there is barely anything that I need to skim over when purging my Spam folder on XYZ. Very handy.

[email protected] has been around since 1996. It gets a lot of spam.

Thursday, November 13, 2008

Loader constraints violations

During development, on application redeploy, I was seeing an error like this:

15:27:34,647 WARN  [ServiceController] Problem starting service jboss.j2ee:service=EJB3,module=heart-biz.jar
java.lang.LinkageError: loader constraints violated when linking com/kink/heart/biz/admin/i/LiveShowData class

Java6 (it seems they tried to improve the error a bit):
15:15:46,205 WARN  [ServiceController] Problem starting service jboss.j2ee:service=EJB3,module=heart-biz.jar
java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method ";)Lcom/kink/heart/biz/admin/i/LiveShowData;" the class loader (instance of org/jboss/mx/loading/UnifiedClassLoader3) of the current class, com/kink/heart/biz/content/ContentMgrBean, and the class loader (instance of org/jboss/mx/loading/UnifiedClassLoader3) for interface com/kink/heart/biz/content/i/ContentMgr have different Class objects for the type com/kink/heart/biz/admin/i/LiveShowData used in the signature

Well, after finding this JBoss FAQ page, I followed the directions on it. They were really helpful!

Once I looked up the offending class (LiveShowData), it became instantly clear what the problem was:

### Instance0 found in UCL: [email protected]{ url=file:/Users/jonstevens/checkout/jboss-heart/server/default/tmp/deploy/tmp54117z-ads.ear ,addedOrder=40}

### Instance1 found in UCL: [email protected]{ url=file:/Users/jonstevens/checkout/jboss-heart/server/default/tmp/deploy/tmp54118heart.ear ,addedOrder=41}

Sync up the two jar's which contain my EJB3 interfaces and suddenly everything is working again.

Sunday, November 2, 2008

TimeMachine via AFP (netatalk) to a DroboShare

This rainy weekend, I turned the hardcore geek on so now I get to brag about it a little.

On my MacBook Pro, I used an Ubuntu vmware image to cross compile netatalk , dbus , avahi , openssl , expat , libdaemon and berkeley db to the embedded Marvell-Linux (arm-gnueabi) running on the DroboShare. Anyone who has experienced cross compiling knows it is an extremely complicated thing to do and not for the weak. Especially when dealing with so many different products which all have to integrate together. It is also amazing that I can use two different operating systems to compile code for a third operating system.

After getting all of those projects compiled, configured and started, I can now say that I'm the first person to successfully perform a Time Machine backup to the Drobo connected to the DroboShare over AFP. This is something that Apple has put a lot of effort into making very difficult to perform because they are trying to sell more of their proprietary and expensive TimeCapsule devices and now I've beaten them at their game. =)

Time to put this project down and next weekend I'll package things up and make it available to other owners of DroboShares.

Update: I've created a Google Code project called DroboCapsule and put up a binary package for you to download and install. Enjoy.

Gear's heart

Tuesday, October 28, 2008

I'm a dreamhost'er

In an effort to simplify my life, better the world and add some redundancy to my setup, I've recently done two things with regards to my usage of computers. First off, I got rid of my home backup server and purchased a Drobo. Not only does this give me a massive amount of mirrored storage, but I get to turn off an old G4 500mhz box that I was using strictly to backup the laptops and my private server at home.

Second, after a recommendation from a friend, I have bitten the bullet and signed up for a account. The part that pushed me over the edge is that they are having a special offer with lifetime unlimited diskspace and unlimited bandwidth. I purchased a year subscription to try it out and used the Promo50 $50 discount code. Total price for a year $69.40. The benefit here is that I will be able to migrate all of my email, websites and domain names off of my home server (an old G4 dual 500mhz) and be able to turn that off as well. I can then mirror the entire contents of my Drobo up to dreamhost as an additional offsite backup.

I estimate that the yearly power savings alone will pay for this service, but I will also be able to sell off the two servers and the money from that can go towards the hosting. I really welcome not having to manage these services any longer. It was fun for the last 15 years, but I'm over it now.

Monday, October 27, 2008


It seems the special people at Cynergy Systems decided to trademark the word "LookFirst" on their website. This word happens to be my domain name. Looking in the whois database to see when their domain was registered, I see it was in June 19th, 2000. My commercial domain name was registered in January 2nd, 1998. A full two years earlier. The funny thing about all of this is that they also need to compete against the actual company who has gone and paid the extortion money to actually register the trademark with the USPTO. Needless to say, that domain ( with a copyright that hasn't been updated since 2006) has only been around since April 19th, 2003. Given that I squatted over the domain shitter first, I think I win and all of you can stop using my word to advertise your lame ass products. Ha.

Do The Math

Obama's 'socialist' tax strategy has zero impact on me. How about you?

Sunday, October 26, 2008

4 year fix

A relatively simple bug that I found and reported in Mozilla almost four years ago, just got resolved. Woot.

Saturday, October 25, 2008

MacBook Pro Inconsistent Clicks

I just recently picked up one of the new MacBook Pro's. I absolutely love it. It is my first new laptop in about 4-5 years and the lack of Java6 for the original 32bit Core Duo chips was really starting to put a hamper on my development. I have also decided that I want to learn how to write iPhone apps, so my full hard disk just wasn't cutting it anymore.

That said, the new glass trackpad misses clicks. I click and it just doesn't register as a click. This is starting to drive me nuts. One blog posting suggests that it is a software issue. I'm going to use it for a little while longer, but I think this week I'm going to call Apple Support and see what the deal is. Anyone else having these same problems?

Update: Found some discussion in the Apple forums . Seems a lot of people are having these problems. Sigh.

Update2: This is definitely a software issue. All clicks get registered when I run Windows XP in vmware fusion for Mac.

Tuesday, October 21, 2008

I heart Google Code project hosting

Google just recently announced that you can now embed Gadgets in your Google Code wiki pages. This is a major feature for this service! The reason is simple. Before this feature was implemented, you couldn't embed anything other than wiki markup. Adding the ability to put Gadgets on the pages enables one to resolve a long standing issue which was that you couldn't embed Google Adsense in your project pages. So, I believe I can now claim that I'm the first person to do this. Woot!

Fun Little Math Problem

Thanks to Mr. Hellman (and Diffie and Merkle) we have public key cryptography. I was just browsing Mr. Hellman's website and came across this fun little math problem. I really appreciate how he took something complicated an explained it in simple clear terms.

Sunday, October 19, 2008

Lost in Translation

From the Quickly website:

Due to Yang's father is a medical doctor and her mother is extremely hygiene, she also followed this good practice. Yang is very strict on having her franchisees keeping their sores spic and span.

Saturday, October 18, 2008

SimCity for the Economy

I feel like someone is playing a game of SimCity with the economy and losing.

Somali Pirates

Looks like some Somali Pirates picked on the wrong Iranian ship and got more than they bargained for. There is some interesting analysis that suggested the ship was going to spread some radioactive powder all over Israel just in time for Yom Kippur. However, another analysis is that the ship was really only carrying fuel for rockets. Regardless, it sounds like an interesting story that only a few people will ever know what really happened and I'm glad that nobody (except the pirates) got hurt.

Thursday, October 16, 2008

The Real Joe

No wonder McCain mentioned his name so many times. It was a total staged event and he was cashing in on his investment! Fucking pathetic.


The forces on the vacuum barriers attached to the quadrupoles at the subsector ends were such that the cryostats housing these quadrupoles broke their anchors in the concrete floor of the tunnel and were moved away from their original positions, with the electric and fluid connections pulling the dipole cold masses in the subsector from the cold internal supports inside their undisplaced cryostats.
The paragraph above came from the CERN press release where they describe in fairly low level detail each event that caused the recent failure in the LHC. They do it in a way that makes you feel smart even if you have no clue what a quadrupole is. On top of it, look how eloquently they describe a massive event where an expensive technical piece of hardware just ripped itself out of some beefy anchors in the floor. I just love the geeky talk, what a turn on!

Sunday, October 12, 2008

Snowed Over

This is such a bad idea on so many different levels. It seems that unicode domain names are starting to appear that will snow us over...


Wednesday, October 8, 2008

The Dock

Eclipse just updated itself. Why is it that when applications update themselves, they put a new icon way down on the right side of the Dock and require me to remove the old icon. I've seen this happen many times. How come that can't just be automatic?

Tuesday, October 7, 2008

He's got a good point

Apple Doesn't Need a Public Succession Plan 
Mr. Jobs is only 53. One of our presidential candidates, hoping to be the most powerful man in the free world, just turned 73. I expect Mr. Jobs to remain at Apple for as long as it pleases him, many more years and to outlive John McCain.

Job's for president? =)

Monday, October 6, 2008

Web Inspector Redesign

Surfin' Safari has a recent blog posting about the latest Web Inspector redesign. As much as I like FireBug, this thing really leapfrogs it in functionality. I've pretty much stopped using Firefox as my primary browser. Even 3.0.x is slow, bloated and unstable. The only thing keeping me from killing Firefox entirely was the lack of good FireBug functionality. Those days are over, congrats to the Safari/Webkit teams, thank you so much for your hard work.

slashdot news in your inbox

For the last 8 years or so, I've been receiving slashdot's news articles directly in my inbox thanks to a little perl script that Brian Behlendorf wrote. The script is a kind of retro coolness. It grabs the /. rss feed, downloads each article and processes it with the lynx browser to produce nicely formatted output with clickable links.

This has the advantage over straight RSS in the following ways: a) I like the articles in my inbox. I've got a nice searchable archive of /. with tens of thousands of emails. b) The RSS feeds don't include the links that are in the articles so you have to go to the /. site to actually get to the referenced material. c) I dislike the formatting of the /. site.

So, recently, the script broke due to a parsing change on the /. site and Brian no longer wants to maintain the script and list of subscribers. Thus, I volunteered. It was a fairly simple fix and I setup a mailing list using nice open source SubEtha Mail mailing list server that I helped write. It is all hosted at a well connected colo on my friend Jeff 's box.

Anyway, I'm posting here cause I figure others might be interested in this script. If you would like to subscribe to get the emails, go here.

Monday, September 29, 2008


Edited from this article :

McCain spokesman Michael Goldfarb said Palin will do at least one news conference before election day.

The Democratic vice presidential nominee, Joe Biden, has given more than 89 national and local interviews over roughly the same period of time.

That could mean that the person who could potentially lead the free world will have done one national press conference before being sworn into office.

Eclipse 3.4.1 Poopy

I just auto-updated to Eclipse 3.4.1 and when I relaunched it, I immediately got this totally unhelpful dialog that says "The Eclipse executable launcher was unable to locate its companion shared library."

Google to the rescue, I found this article which pointed me in the right direction.

Solution: Edit the /Applications/eclipse/ file and change the path to the launcher to be: ../../../plugins/org.eclipse.equinox.launcher.carbon.macosx_1.0.101.R34x_v20080731

Then everything starts up normally again. Oh and if you did my previous hack to get Eclipse to run on OSX , you have to apply that again as well.

Friday, September 26, 2008

Please Vote This Time!

This posting (again from /.) shows exactly how important it will be for people to vote in this election!
Mike Sheppard writes "I'm a graduate student in Statistics at Michigan State University and spent some time analyzing past US presidential elections to determine how close they truly were. The mathematical procedures of Linear Programming and 0-1 Integer Programming were used to find the optimal solution to the question: 'What is the smallest number of total votes that need to be switched from one candidate to another, and from which states, to affect the outcome of the election?' Because of the way the popular and electoral votes interact, the outcome of the analysis had some surprising and intriguing results. For example, in 2004, 57,787 votes would have given us President Kerry; and in 2000, 269 votes would have given us President Gore. In all there have been 12 US Presidential elections that were decided by less than a 1% margin; meaning if less than 1% of the voters in certain states had changed their mind to the other candidate the outcome of the election would have been different."

Thursday, September 25, 2008

I'm not impressed

We are dealing with someone who is clearly in so far over her head, she can't even answer a question or finish a sentence in an interview.

[Couric] Well, explain to me why that enhances your foreign policy credentials.

[Palin] (with accent and pursed lips) Well .. it certainly does because ... our ... our next door neighbors are foreign countries. They're in the State that I am the executive of. And there is Russia ...

[Couric] Have you ever been involved in any negotiations for example with the Russians.

[Palin] (nodding yes) .. we have trade missions back and forth .. we... we do .. It's very important when .. when you consider even national security issues with Russia as .. Putin ... Where's his head? ... and ... and ... ahh ... comes into .. ah .. the airspace of the United States of America ... wh .. where do they go? It.. It's Alaska .. it's just right over the border. It is .. from Alaska that we send those out to make sure that an eye is being kept on this very powerful nation .. Russia .. because they are right there. That are right next to our state.

Wednesday, September 24, 2008

Diesel: SFW XXX

The rather entertaining Diesel SFW XXX campaign advertisement (strangely missing from their own website).

Giant Smiley Faces

From /.:

Citizens of the Russian town Chelyabinsk calculated when the satellite, QuickBird, which takes images for Google Earth and Google Maps, would cross above their city and used people to make a giant smiley face. A rock concert on the main square attracted many people and everyone got a yellow cape. It looks like someone at Google was quicker than usual to put up the new data. Maybe Google likes the idea of an entire town working hard to get its 15 minutes of fame. The article has a screenshot of Google Maps and images taken directly at the event.

Great article on

The SF Bay Guardian just published a great article on (where I work)...

Peter Acworth's fetish porn empire takes over the San Francisco Armory to create a new kind of dot-com

If you are on digg, please bump it.

Body Parts Made Of Bread

Gruesome body parts greet customers of a bakery in Ratchaburi, Thailand. Artist and baker Kittiwat Unarrom has sculpted life-like heads, feet and hands from dough in the bakery's kitchen and exhibits them in glass cabinets in the shop. He says his edible art lures one hundred visitors a day.

Friday, September 19, 2008

Stock Market

Haven't seen a day like this in a while...
That is a lot of green.

Thursday, September 18, 2008

Scalability problems

SFGate puts a link with the title of "Palin Cancels California Stop" on the front page of their website and they can't even handle the load? Lame. In this day and age, notices like this are pathetic. People have the (free!) tools to create websites which can scale to any load and they choose not to use them. I just don't get it.

[JOB] Customer Service Representative/QA is looking to fill a Customer Service Representative/QA position. We also really need a Java Software Engineer. Click the link above on how to submit your resume.

Wednesday, September 17, 2008

This article may require cleanup

Crazy Airport Landing

My friend Jeff is in Tegucigalpa, Honduras. Which of course got me looking into Wikipedia about it and I saw this paragraph:
Toncontin International Airport serves as the major airport in and out of Tegucigalpa. The origin of this name is unknown. This airport is frequently criticized for being one of the most dangerous in the world (due to its location next to a sierra, its short runway, and difficult approach, which requires large commercial jets to execute a tight hairpin leftward u-turn turn at very low altititude to land on a very short runway--American Airlines pilots, for example, receive additional, specific training for the Toncontin approach).
On May 30, 2008, there was a plane crash in the airport, in which TACA airline jet skidded off the runway, across a busy road and slammed into an embankment, crushing several cars. The crash killed five people and injured 65.
That got me digging further, because my gf, and her fear of flying, would require her to be knocked out cold to be on that flight. I found this video:

Tuesday, September 16, 2008

iPhone 2.1

I just upgraded my first gen iPhone to 2.1. Then, I promptly jailbroke it with the latest version of QuickPwn. I love how easy that process has become. Even the process of re-flashing the device now has a graphical UI on the phone itself. What will these hackers think of next? =) All-in-all, the new version seems like a lot of bugs were fixed and it is running much faster/smoother now. Thanks Apple.

Smug Politics

I don't really think that smug politics is going to get Obama anywhere with the conservative vote. This advertisement which talks about the fact that McCain is a technical dinosaur *, only appeals to people who (like myself) are going to vote for Obama anyway. Obama, please don't lower your campaign to these levels.

* My step-grandfather is 90 and can send emails just fine, so McCain has no excuse.

Update: Maybe it is a good idea McCain doesn't use email.


My friend Pearlyn is a super talented artist with a wide variety of designs. She recently released a few new works and I think that this piece is one of the best that I have seen her do. If you see it in person, you will really appreciate the amount of work it goes into hand screening 4 different colors. It is very clear that she puts a lot of hard work into her art and I really appreciate her skills. Now if only I could get her to make more guys clothes. =)

Thursday, September 11, 2008

Sun JDK + Linux = Timezone Issues

At work, we have three primary JBoss application servers. On two of them, Java was reporting the right timezone. However, one of them was not. Everything about the machines is nearly identical so I couldn't figure out why until I found this comment in a bug report which talks about an old issue with the JDK.

Here is the test we were using...
import org.joda.time.DateTime;
public class TestDate {
public static void main(String[] args) {
System.out.println("Current date is: " + new DateTime().toString());

and the results:
app2: Current date is: 2008-09-11T19:13:19.650Z
app3: Current date is: 2008-09-11T12:13:40.493-07:00

There are several solutions to the problem. Each one has drawbacks. I choose to go with forcing the TZ environment variable when starting up the JVM cause it was the easiest solution.

export TZ=`cat /etc/timezone`

LHC NerdHop

I'm actually pretty impressed by these nerds...

Tuesday, September 9, 2008

Shared Dictionary Compression over HTTP

Funny. I can only imagine's shared dictionary for compression over HTTP:

a - fetish
b - kink
c - sex
d - nose hooks
e - bondage
f - butt plugs

Monday, September 8, 2008

The Power of Conformity

Just like religion and politics... check out this old video from Candid Camera... The Power of Conformity...

Oh! Now *this* is interesting...

It is in the news just now that NASA Administrator Mike Griffin 'accidentally' leaked a very interesting emailed memo, that only eight people were on the list for, right before the presidential election. Not only does he talk about a 'jihad' of Shuttle program (notice that I do not qualify with a 'the'), but he also suggests that the new administration could reverse course and suddenly continue to fund Shuttle program as well as continue on schedule with Orion program. I wonder which new administration might do that? =) I also love the part where he declares short of war that we would never do anything to sabotage the ISS if the Russians did not allow us access to the ISS. That either just saved us from a nasty situation down the line, or hurt us if the Russians think we are bluffing by even mentioning it. Ouch!

I just watched the most excellent pilot of Fringe. I highly recommend. It is such a good combination of Silence of the Lambs + Twilight zone + X-Files + Altered States. So, maybe I'm being a bit more conspiracy theorist than normal.

Saturday, September 6, 2008

Converting Gays

More stupidity in the news. Not only is Palin anti-abortion (including opposing exceptions for rape and incest) which is absolute crazy talk (didn't we already agree about that?), but Palin's church promotes converting gays. Seriously, what year is it again? As much as I would love to see a female president, with Palin one heartbeat away from the presidency, she scares the daylights out of me. I don't care about what problems Obama has because it is a pretty simple decision: anyone who wants to destroy civil liberties and bring us back to the dark ages is not the right choice.


I just read this in the news:
Fannie Mae and Freddie Mac lost a combined $3.1 billion between April and June. Half of their credit losses came from these types of risky loans with ballooning monthly payments.
Goodbye american economy. I can't believe the government is going to have to take over Fannie Mae AND Freddie Mac. This economy is so fucked. Another choice quote:
A government takeover could cost taxpayers up to $25 billion, according to the Congressional Budget Office. 

Friday, September 5, 2008

Dear Internets

Please observe the two images below.

Notice how in the first window, I can't easily read all of the names of the files. In the second, the window is a bit wider so I can view all the names. What I would enjoy greatly is if the OS X Finder would always open the window to be the width of the longest filename in the window. I know that I can set a default width, but that isn't quite what I want. Anyone know the answer?

Monday, August 18, 2008

Y Combinator Startup Ideas

My comments on this list.
  1. I don't have a good answer.
  2. Flock , BlackTop
  3. NewsTrust
  4. IT won't ever go away.
  5. JBoss
  6. Will always be custom.
  7. An enterprise porn affiliate tracking system. The existing solutions suck.
  8. Very interesting to me.
  9. Flickr (the only 'web company' I give money to... happily.)
  10. Yawn
  11. Yawn
  12. We need more creative people.
  13. Interesting, but schools are difficult to work with.
  14. Interesting idea, but it is more about combating politics than measuring anything.
  15. Nice, but a huge initial investment.
  16. Google won, get over it.
  17. VERY interesting to me. I've got an idea in this area, but I don't know the solution for it yet. =(
  18. Yawn.
  19. Yawn.
  20. Yelp
  21. Mint
  22. Yawn, too specific.
  23. I agree, Wikipedia is almost impossible to put new content into.
  24. I hate extortionists, don't you?
  25. Yea, I've had no luck selling stuff on CL recently. It is full of too much crap.
  26. Too much competition.
  27. Huh?
  28. I like gmail, sure it has some warts, but it works well enough for me and I like the freedom it gives me.
  29. Yawn
  30. Sales pitch.

Saturday, August 16, 2008

Enterprise Java

Jim recently blogged about what Enterprise worthy means to him. I agree fully with what he says, if Ruby had the same level of infrastructure that Java does, it might be considered enterprise worthy, just like Java. This won't happen for a very long time though.

Why? Simply put, Java has a huge head start. There is also progressions in the use of the language that IDE's such as Eclipse have made writing code a no-brainer. Such as: instant code compiling (remember when javac was slow?), re-factoring, code-finishing and code-completion. I just don't see C or Ruby having IDE support at the same level as Java for a long long time, if ever.

What makes Java enterprise worthy?

EJB3/Hibernate (clustered second level and query caching)
IDE support (Eclipse - easy code re-factoring is HUGE)
JSP taglibs
GWT (google web toolkit)
Jakarta (and similar projects with large amounts of released libraries)

I mention the above tools because I successfully work with nearly all of those technologies on a daily basis. Once you see millions and millions of hits being reliably served off of servers that are literally sleeping, using those technologies, you become sold on the idea that it is possible to create truly scalable web applications with a relatively minimal amount of work. For the most part, EJB3 and the associated annotations is actually a pleasure to work with.

Sam Ruby had a posting recently about how he was struggling to make Ruby (the language) scale to serve a feed. He talks about page caching, etags, simpler get support, action caching, fragment caching and sweepers. Oh my god, 6 different caching layers? That sounds like a train wreck to maintain, debug and understand. I like to call that a brittle system and I try to avoid anything that complicated as much as possible. After all these years, doing all this weird caching just to make something scale seems so brain dead to me. These problems have been solved and transparently implemented in the Java world for ages now, so why not make life easy and just use what works? For my feed generation (I do a lot of it in my support for Piclens), I use simple Velocity templates and populate the context with data objects that I got from my EJB3 entities. Nowhere do I need to worry about caching because the JVM performs as expected and the rest of the database caching is all handled for me. The code is simple and it all just performs like magic.

Even if things did slow down (and we have meetings about this at work every once and while), it all becomes a matter of adding more hardware to the cluster and/or making sure the caches are being allocated properly. I'm serving 15+ heavily trafficked porn sites on 3 standard server configurations. We really only need one server for all of this but we have 3 just for redundancy. It is relatively simple and it just works. I like that and that is what makes Java Enterprise worthy to me.

How I read the website

I often get links to articles on the website. When I go to the website, I'm presented with a login/register page to create a free account. I then go to and I use one of their fake accounts to login to the NYTimes website. I'm then taken to some interstitial page where I have to either view an advertisement or click a continue link. I then read the article.

Some answers to questions you might have:

Q: Why is it that every time I visit the site, I have to go to bugmenot again?
A: Because NYTimes is playing a whack-a-mole game with Every time a new account gets created on bugmenot, they close it down within a day or two.

Q: Why don't I just create my own account?
A: Two reasons: First, I've tried creating my own accounts and they always seem to just stop working after a while. Second, I really don't see the point of forcing me to create an account to read a newspaper online. It should be a value add sort of deal. If I want to comment on a story, make me create an account.

I guess I just don't understand why the NYTimes runs its website like it does. It gives me a bad feeling every time I visit their website and I'm sure I'm not the only one. Why would you want to do that to people?

Friday, August 8, 2008

Download Managers

It has come to my attention that download managers suck. The reason is that they do not have an easy way (ie: API) that they all agree on that websites can implement in order to authenticate users to download content from a CDN in a secure way.

We use a CDN that allows us to create a token which we pass to the CDN in a cookie or url. The CDN authenticates that token and provides access to any request that contains that token. The token is simple, it is a md5 hash with a shared secret, future expiration time and a path to match against. It looks something like this: MD5(mySecret/content/protected.ext?e=1182665958). The url to download the content then looks like this: /content/protected.ext?e=1182665958&h=886dbef7390dfd70aea27fd41e459e7f. Everything after the ? can either be put into a cookie or passed on the query string as described above.

Now, the problem with download managers is that you can't easily script the generation of those tokens. So, anyone using a download manager has to hit the site, grab the cookie and then put the cookie into the download manager along with the urls. This is a royal pain in the ass.

If download managers supported a RESTful api such as:

Then, when I receive a request like the one above, all I would need to do is authenticate the user, check to make sure they are allowed access to that path and return a token. If the download manager gets back a 403 Forbidden, then the token probably expired and the download manager could then just request a new token.

I would be more than happy to implement something like that.

p.s. Kink has a system called Warden that implements a token based authentication scheme similar to the one above but works independent of a CDN that we will be making open source as soon as I have some free time to put it up online.

Thursday, July 31, 2008

Google Webmaster Tools Hint of the Day

Just ran into this (unlucky) error...

Paths don't match
We've detected that you submitted your Sitemap using a URL path that doesn't include the www prefix (for instance, However, the URLs listed inside your Sitemap do use the www prefix (for instance,

I had to go and create 14 more entries for my works domains cause once an entry is created, it can't be modified. Thank you Google webmaster tools, I'm sure that doing the right thing would have been such a chore to code up.

Friday, July 25, 2008

Review: Costa Rica Garmin GPS Map

For my recent trip to Costa Rica, I purchased the $19.95 map from a guy named Aaron who sells "the most comprehensive GPS map available at such an affordable price." Maybe I'm just expecting too much from a $20 map, but I really feel like I did not get my monies worth. First off, the map that I downloaded wasn't the 1.2 version which was promised on the website. It was the older 1.1 version. I emailed Aaron and he told me he would send me the updated map after I got back from my trip!? Second, once I was on my trip, the map was full of inaccurate data and a good portion of the places I went to were not even on the map! This included large chunks of the major highways which I would have at least expected to be on there. So, a day after I got back, Aaron kept his word and sent me the latest 1.2 version of the map. I responded with my disappointment and Aaron offered to refund 50% of the purchase price.

Update: Aaron has commented on this posting saying that he has updated the map significantly since my posting (he is at v1.7 now) and that it is much better now. I haven't tried it, but I'm sure it is better than other options out there.

Wednesday, July 16, 2008

El Salvador (SAL) airport

Congrats on being the first airport that I have been to that has free wifi and easy access to power. Given that I have a five hour layover it sure is making life more enjoyable to be able to play on my iPhone.

Update: The San Josa Costa Rica airport also has wifi!

Monday, July 14, 2008

Bummer about Google Maps

Google's Terms of Service for Google Maps don't allow 3rd parties to provide a simple way to transfer driving directions to GPS units. Therefore, I can't use TakItWithMe to easily transfer my Google Maps directions to my Garmin Zumo 550.

So, that begs the question... Why not? What is the big issue?

Also, the Garmin tools (Bobcat and Mapsource) for creating routes totally blows compared with Google Maps. So if those tools were better, this would be less of a concern.

Friday, July 11, 2008

iPhone 2.0 Software

I just installed the iPhone 2.0 software update. Now when iTunes is trying to activate my phone by connecting to the store, I get this nice error message after a several minute timeout. This means that until iTunes can do its work, my phone is a brick. Thanks Apple. I'm guessing they are having scalability and load issues, but in this day and age, properly designed systems shouldn't fail like this. Yes, I think I'm going to wait a bit on the new hardware. I just don't see a point in paying more money every month.

Update: It finally just started working after the 10th error message.

Wednesday, July 9, 2008

San Francisco Politics

a) a perfect way to feed the homeless.
b) i bet the farmers market across the street will protest the loss of sales.
c) what kind of scarecrow could you imagine there?

Sunday, July 6, 2008


(Borrowed from someone else.)

Garmin Zumo 550 GPS

Originally uploaded by sflatchkey
A couple months ago, I blogged about my new Garmin Zumo 550 GPS toy. I decided to wait until my new gel seat came in for my bike before installing the Zumo because I knew that it would be a bit of work to install it and I figured I only needed to undo the bolts once. =) To make a long story short, it is now installed on my bike and I love it. I use it both in the car and on the bike and it is a welcome addition to my geeky arsenal.

Wednesday, July 2, 2008

Code Reviews

A little while ago, I made a mention about a project called Rietveld (and this also applies to ReviewBoard). Today, I finally got a chance to dive a bit deeper into how these two tools work and sadly, it is the opposite of what I would like.

The issue with both of these tools for me is that they work on the concept of diffs. A developer writes some code, uploads a diff and then waits around for people to approve it. After it is approved, the developer then checks the code into the repository. This is a good model in open source projects where people are contributing patches and do not have access to check in code themselves. It is more like a patch management system. It is also a good model in larger corporate environments where controlling everything that goes into the code base is done with QA teams who test these patches before they go into the repository.

That is not how the company I work for works. We have a more agile development process where we are all expected to have at least a decent understanding of the entire codebase. Thus, we are checking in code all day long and diff are emailed to all of us. The expectation is that we read each others diffs and will comment on them appropriately. This is more of an after the fact type system. Sure, some bugs can (and do) creep in because they are missed in larger commits where we don't read the entire email, but I'm not worried because QA should catch those before they go to production, when they do testing in our preview environment.

What I would like is a system that has a log of all changes that go through the source repository. When you log into the system, you see a list of all the changes that have not been reviewed yet and a list of comments that have either been made about your code or you made about someone's code. This would be similar to the list of the diff emails sitting in a folder in my email account. I then have the option of just ignoring a commit or clicking through to see more details about the commit. The details page has a list of the files which were changed and a diff of any text based changes. I can click on any line and make a comment. That comment then becomes an issue for the developer who made the commit. The developer gets an email and has to respond. The only person who can close out the issue is the person who created it in the first place. Both people are bugged in various ways (emails and in the webui) until the issue is dealt with. The social politics around all of this is that these issues become highest priority above all else because code is already into the repository and a release can't be made until all of these issues are resolved.

Update: I posted to the ReviewBoard mailing list and got a very helpful response, but still isn't quite what I want to see (the UI isn't there to support it). Check out the comments on this posting. Crucible is very close to what I want, but costs $$$. Others are interested in starting an open source project.

Friday, June 27, 2008

New Project: svntask

I just created a new super simple project on the super nice project hosting called SvnTask in order to have a nice stable codebase that does what I need which is to get the Subversion revision number for a checked out working copy for a project. At work, we don't have release numbers because we aren't really shipping a product. Instead, we just use the Subversion revision number to track changes. Simple concept except...

SvnAnt seems to be unmaintained. There is some other problems like the requirement to pass in a password to do a checkin (ant doesn't have an easy non-cleartext way to do that) and I'd rather just have it use my saved password. It has also always bugged me that they got svn info and svn status reversed.

The recently released Eclipse 3.4 also uses the latest Subclipse plugin which upgrades your working copy to Subversion 1.5 and thus breaks the SvnAnt task with one of those nice classic subversion 'your working copy is too new' messages.

I also don't care about and don't want to mess with javahl. I just want a 100% java solution that uses the nice svnkit library.

Thursday, June 26, 2008

Eclipse 3.x and Java 1.6 on OSX

Eclipse 3.x can't run using Java 1.6 on OSX. It is a known issue and probably won't be resolved for a while thanks to the fact that Apple has only shipped a 64bit 1.6 JVM. Thus, in order to get Eclipse 3.x to run with Java 1.6 set as command line default on OSX, you need to do the following:
  1. In /System/Library/Frameworks/JavaVM.framework/Versions, symlink CurrentJDK -> 1.6. Leave Current -> A
  2. I also changed the location of the java binary to: /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Commands/java
  3. Right/Ctrl click on the Eclipse icon, Show Package Contents, edit the Info.plist file and uncomment the line that says: <string>-vm</string><string>/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Commands/java</string>
Now, you will have the best of both worlds as things stand today. Java 1.6 on the command line and Eclipse running under 1.5. Oh, by the way, if you haven't noticed yet, Eclipse 3.4 is out.

Bill Gates Usability Rant

Gizmodo has a funny email from Bill Gates about not being able to find a piece of software to download. A couple of the quotes from the story:
"So they told me that using the download page to download something was not something they anticipated.
They told me to go to the main page search button and type movie maker (not moviemaker!).

I tried that. The site was pathetically slow but after 6 seconds of waiting up it came."
So, for humors sake, I went to Microsoft's thorn, Google and did a search for "movie maker". The funny part is that the first link that came up is the Movie Maker 2.1 Download link:

It is a good thing that Microsoft didn't succeed in their hostile takeover of Yahoo because it is the third link on their search engine and took .29 seconds the first time I tried it.

Wednesday, June 25, 2008

Vuze Friend Sharing Feature

From the Vuze blog:
What is “Friends”?
In case you haven’t already discovered “Friends”, it is a new feature that makes it really easy to share your favorite torrents with friends. All you have to do is to become “Friends” on Vuze and then you can share any torrent with them, without ever leaving the application.
This is probably one of the most important features that has been added to Vuze. Add your friends and now you have your own private tracker without actually having to run a tracker. In addition, your friends automatically get higher priority over other people who are leeching off of you. I've wanted to see a feature like this for a while now because I generally trust my friends taste and the social networking aspects of a BT network is too hard to ignore. I'm 'lookfirst' if you would like to add me.

Corporate Responsibility

I recently complained back to the headquarters about their nasty ass Jason Sea Fresh Toothpaste and they sent me a nice letter and some coupons for more products. Their Sea Fresh mouthwash is excellent though. I applaud corporate responsibility.

Tuesday, June 24, 2008

Red Listing

At work we found that hackers were trying to brute force our login page. In other words, they were trying every combination of username/password that they could find to gain access to the site. You will often see lists of u&p's on random forums and they were using these lists to hit our login page many times a second. This creates an unnecessary load on the servers which can impact performance for our paying customers. Not a good position to be in.

There is several ways to defend against this attack and the most common one is to display a kaptcha for each login or registration. Sadly, this is a real pain for members because they have to try to type out the kaptcha and often end up failing. Why should paying customers suffer because of a few hackers? In the end, this causes more support requests or people just give up and go away. A far better solution is one that I just implemented that I'm proud of (so I'll talk about it here. heh). I'm sure I'm not not the first person to do this, but the implementation seems pretty rare because I haven't seen many websites doing it this way.

The solution involved creating a simple @Session bean to store state in memory on each of the servers in the cluster. I could use the clustered cache, but so far I haven't seen a need for the overhead of doing that. Using a ConcurrentHashMap, I store the zone the IP address was seen in (optional), IP address, first access time, last access time and a counter. Then, I apply some fairly simple logic to the stored information:
  • if someone fails more than 3 times, they are shown the kaptcha.
  • if someone fails for more than 1 minute, they are shown the kaptcha.
  • if someone fails because they aren't doing things correctly, they are shown the kaptcha.
The first two options have the benefit of allowing people to screw up a couple times before they are required to pay the kaptcha tax. The third option is more like an immediate red listing. I use that when someone tries to send clearly invalid data to our servers.

Right now, I'm watching the logs and things are pretty promising. I'm a bit surprised at how many IP addresses are being red listed, but I think it will decrease with time as the 'hackers' realize that their tricks won't work with us.

Wednesday, June 18, 2008

Congrats LinkedIn

LinkedIn plans to grow after $53 million deal. Congrats. Now, maybe you can convince someone up high to make the "Who’s Viewed My Profile" section report useful data with or without having to pay an absurd $20/month. Oh and your site is running pretty slowly these days, now maybe you can afford to buy a few more servers. =)

p.s. I still think your social site is one of the most useful on the net and pretty much the only one I use regularly other than yelp.

Monday, June 16, 2008

Rack and Bags

For my new bike, I just bought the Tour Master Cortech Saddlebag and the Turbo City Denali Rack. Those two links are the cheapest I could find on the net.

The racks came silver colored, so I spray painted them flat black in the basement of the armory. =)

The racks seem really sturdy and putting them on was pretty easy. Although, the instructions were pretty much worthless and I ended up with a bunch of extra bolts cause I was able to use some of the ones that were on the bike already. I think that if I did a really long trip, I'd need larger bags, but this will do just fine for around town. With the gf on the back and all our climbing gear on the rack and in the bags, I can finally flat foot the bike. =)

Wednesday, June 11, 2008

Tuesday, May 20, 2008

New Toy: Garmin zumo 550

Just picked up a new toy, a Garmin zumo 550. I can't wait to get lost with it. As with all new technology, it is always interesting to learn all the little hacks and extra features available on the internets. I'd love to hear any stories people have to offer.