Sunday, December 23, 2007

Howto make more space for applications on your iPhone

I have a 4gb hacked iPhone running 1.1.2 and I recently ran out of space on the root partition after having installed a bunch of nifty little applications.

So, to make more space on your iPhone for more applications, you need to do this:

#1. Edit /etc/fstab and remove the ",noexec" part. Reboot.
#2. mkdir /var/root/Applications
#3. ln -s /var/root/Applications /Widgets

Editing the fstab is the key here. Otherwise, applications won't be able to run off of the /var partition.

The /Widgets directory is a special directory that the iPhone can use to locate installed applications. Linking it to /var/root puts it on the larger disk partition and in your root home directory. Then to move an application from /Applications to /Widgets, just type:

mv /Applications/ /Widgets/

Now, restart Springboard or your phone and the application should run without problems.

I suspect you can also just symlink /Applications to /var/root/Applications, but I didn't feel like experimenting and I'd rather just manually move applications to /Widgets.

Friday, December 21, 2007

Java 6 dp8 finally available on OS X

Apple finally made Java 6 dp8 available on OSX 10.5.1 to ADC members (free account). It has been fairly inexcusable and just a huge bummer that it was not available earlier. I really wish Apple would take Java more seriously. Even Landon Fuller got it out before Apple did. Come on Steve, please allocate more resources to it.

Update: I just tried to install it and am getting the error message "Your computer does not need this update." Oh, I can't even begin to tell you how wrong that message is. Dear Matt Drance, please come back from vacation soon! =) I just filed radar bug #5663661

Update 2: It turns out that my Mac is a Core Duo and not a Core Duo 2 so the 64 bit version of Java won't work on my Mac. =( Bummer.

Sunday, December 16, 2007 Artist Statement, Support Wikipedia!

Google recently announced a new project called 'knol.' This is in direct competition to the efforts at Instead of donating money and resources to Wikipedia to improve their systems, Google has decided to make an alternative solution. I love Google, but what happened to "Do no evil"?

Therefore, I have created as a functional art piece that uses Google to make money from Google. You will help raise funds for Wikipedia because I will donate a portion of the proceeds back to Wikipedia. Feel free to please share this site with all of your friends.

Also, you can make your browser homepage and use it for all of your google searches! By default the cursor will appear in the search bar. So, when you open a web page, all you have to do is start typing.

Enjoy. =)

Saturday, December 15, 2007

MacBook Pro iSight stopped working

While trying to film a friends reaction to 2girls1cup I found out that my iSight camera on my laptop was not working. Google to the rescue. I found this and then this. Step 4 "Reset SMC or PMU" fixed the problems. I shut down my Mac, pulled the battery and power, held the power button down for 5-10 seconds and then started it up again. Now the camera works just fine.

Friday, December 14, 2007

Hacked iPhone 1.1.2 Crashing Solution

I've got a hacked iPhone. I love it. It is by far the best tech gadget I own. Problem is that when I moved to 1.1.2 the phone started crashing all the time after I installed SummerBoard and various other apps. I thought that I was just going to have to live with it. So, after about a month of frustration with using my phone and considering un-hacking it, I finally got it together enough to search the internets for a solution. It turns out that SummerBoard has an option to 'Dim Wallpaper' and that feature is buggy and is the cause of most crashes. I turned it off, rebooted and haven't had a crash again. Yea!

Update: SummerBoard 3.0 final was just released. I just tried turning on this feature again and my phone has been stable. They must have fixed the issue.

Thursday, December 13, 2007


"Duelity is a split-screen animation that tells both sides of the story of Earth's orgins in a dizzying and provocative journey through the history and language that marks human thought."

Wednesday, December 12, 2007

The anti-pedophile coloring book

SF Gate's Mark Morford has another funny article on the new coloring book from the Church. He got it from this newsweek article.

"Remember kids, when putting on (or taking off) your vestements with a priest in the room, always have a couple of perky angels hovering nearby. You know, just in case. "

There has been so much terror as a result of the abuse in the catholic church that it even gets its own website on the Boston Globe.

And then there was this last weeks shooting at a mega church in Colorado. "A gunman attacked worshippers at a Colorado Springs, Colorado, megachurch Sunday afternoon, killing one person and wounding four others before being killed by a security staff member, the city's police chief said."

Then you have to wonder... Who started giving guns to the mega church rent-a-cops? According to Rev. Brady Boyd, senior pastor of New Life Church, the church had a security plan in place.

"I'm proud of the way our team responded," he said. "Many, many lives were saved because of the quick action of some committed volunteers at our church."

Oh wait, they were not rent-a-cops, they were "committed volunteers"? Now I'm really confused. But even more confusing is this quote further down in the article on CNN:

"The church was founded by the Rev. Ted Haggard, an evangelical Christian leader who was ousted in 2006 after allegations that he had been a client of a male prostitute from whom he had purchased drugs. Haggard admitted to undisclosed "sexual immorality" and called himself "a deceiver and a liar" in a letter to the congregation."

Sweet. Now things have come full circle. What will the Church come up with next? A coloring book for how to purchase a gun?

Sunday, December 9, 2007

Paypal announces it is officially slower than before.

I recently purchased some very cool Takashi Murakami artwork from Ebay because I'm interested in collecting beautiful pieces of art. Then, it was time to pay for it. When I signed into my Paypal account for the first time in a long time, I was greeted with the message above. Apparently, they think that good customer service involves telling their users that "From now on, it may take extra time for your latest transactions to appear in your Recent Activity." This is the company with an endless supply of cash and they can't come up with a system that performs? Instead, they tell you how much they are going to suck in a nice popup when you sign in. For a company that originally reformed online payment systems, I'm so not impressed. What happened?

Geek: Flot

Wow, I just found out about Flot, a JQuery based Javascript graphing tool. It is so cool! I'm continually impressed with how JQuery has redefined client side development. Graphs have always been a pain to do because it is always related to creating an image on the server side and serving that up (like the new Google Graph API). I think Google missed the boat this time. Nobody wants to use an API with a 50k usage limitation. With Flot, all I need to do is write a little bit of JS and send it some data. I can't wait to find a use for this one.

Thursday, December 6, 2007


"I highly recommend this product to homeschooling parents. As
far as I'm concerned, nothing better explains the complexities
of the Cold War to children than unicorns. Nothing. I am
particularly impressed with the names of the two unicorns:
Commie and Freedom. U-S-A! U-S-A!" -- GeekDad

Thursday, November 29, 2007

Computer Randomly Plays Classical Music

During normal operation or in Safe mode, your computer may play "Fur Elise" or "It's a Small, Small World" seemingly at random. This is an indication sent to the PC speaker from the computer's BIOS that the CPU fan is failing or has failed, or that the power supply voltages have drifted out of tolerance. This is a design feature of a detection circuit and system BIOSes developed by Award/Unicore from 1997 on.

Monday, November 12, 2007

Subversion Config File

The Subversion documentation is not clear on the true format of the config file with respect to multiple properties for a single file pattern. The answer is simple, use a ';' to separate each property.
*.sh = svn:eol-style=native;svn:executable
That said, this begs a little rant about Subversion. There is no server based push of configuration data to the clients. Even worse is that this is far from a priority for the developers.

Thus, you have to send out an email to your entire development team and ask them to edit the file in .subversion/config. What a royal pain in the ass. I recently had to do this because in a mixed office of OSX and Windows users, we were ending up with files with both line endings in them! When we did a merge, we had all sorts of weird conflicts. The only real solution to this problem is to get everyone to add eol-style=native lines like the one above to all of the 'text' files referenced in their config file. No fun at all and it really makes the IT department look like a bunch of idiots with crappy tools.

San Francisco Oil Spill

Lynne and I went for a walk along sunset beach today. It was a gorgeous day out. Sunny and not windy at all. When we got to the beach, we noticed a bunch of signs saying the water wasn't safe, etc. We weren't even thinking about the big oil spill in the bay this last week. Having never been near an oil spill of this magnitude, I had no idea of what kind of damage it really does.

We started walking down the beach and noticed very few people with plastic bags digging little bits of sand up. We looked down as we walked and started noticing all the little black dots *everywhere*. Actually, they aren't that little. A lot of them are the size of quarters and you just can't miss them. After walking for a bit more, we decided to start to pick up a few small bits and it became infectious. We stayed for over an hour and filled up a plastic bag full of sandy oil that we got from one of the other 'cleaners'.

After over an hour of musing about how depressed we were that the beach has been mucked up, we dropped the plastic bag in a pile of about 50 other even larger plastic bags. The beach is such a mess! The oil is this nasty sticky smelly stuff. If you haven't been to the beach, you need to go as soon as possible to help clean up. I plan on trying to get down there a few more times this week before sunset.

The company behind this spill really isn't doing enough to clean up these beaches. There should be people being paid 24/7 to work on this. We didn't see a single person there that was clearly working to clean up the beach. It was all volunteers. Its really sad.

Saturday, November 10, 2007

Subversion Vendor Branches Howto

This little posting is going to explain something that I have recently learned about that I would like to share. As someone who maintains complex software systems, it is important for me to be able to easily do upgrades of our third party applications. So, what is the best way to do this?

I use Subversion and a concept called 'vendor branches.' Sadly, their documentation is confusing and not as easy as what I'm going to describe. Let us use an example to demonstrate.

At work we rely on JiveSoftware's JiveForums software to host our forums. Each time they come out with an upgrade, what is the easiest way to deploy that upgrade across our development, preview and production environments? The answer is to check a copy of their code into subversion. This is an example script of how I do an upgrade from version 5.5.0 to 5.5.7. This assums that 5.5.0 has already been added using steps similar to below.
  1. wget http://domain/
  2. unzip
  3. svn co -N http://svn/vendor/jivesoftware jivesoftware
  4. mv jive_software_5.5.7 jivesoftware
  5. cd jivesoftware
  6. svn add jive_software_5.5.7
  7. svn ci -m 'adding a clean download of 5.5.7'
Now, the whole concept of the upgrade can be imagined with this simple statement: "I would like to take the difference between version 5.5.0 and 5.5.7 and apply that to what is in my development environment". In order to accomplish this, I check out my development tree locally and then execute a merge of the diff of the two versions.
  1. svn co http://svn/dev/jive jive-dev
  2. cd jive-dev
  3. svn merge --ignore-ancestry http://svn/vendor/jivesoftware/jive_software_5.5.0/ http://svn/vendor/jivesoftware/jive_software_5.5.7/ .
  4. svn ci -m 'upgraded development environment to 5.5.7'
Note: if there are any conflicting files, you will need to resolve those conflicts before checking in. However, as you can see, you can locally modify any of the jive software files and the diff process will take care of doing the merges for you.

For deployment of code to our preview and production environments, we have just checked out the preview/prod trees from svn onto the individual servers. Upgrading preview/prod is the same steps as above. Upgrading the machines themselves means that we just need to do an 'svn up' or 'svn switch' if we decide to deploy based on tags. At some point we might use .deb's to do these deployments, but for now, subversion is a great solution. It is especially handy to be able to quickly see a nice diff if a file changes because someone logged in over the weekend and needed to quickly modify a file by hand.

Running JBoss through this system works exceptionally well because not only does each revision move files around significantly, but it is increasingly difficult to even remember all the modifications we make to various configuration files for our preview and production servers. This process gives us the nice ability to use diff's to easily find those changes.

As for gotchas, one major one that I've discovered during upgrades of JBoss is that they will frequently take a packaged set of files (ie: a .sar/.jar file) and explode them into a directory. Unfortunately, subversion doesn't deal with this problem very well. It gives an error about 'type of resource object has changed.' When this happens, what you need to do is delete the file from your local repository first (including committing this change) and then doing the merge. The other gotcha is to make sure that all your text files go in with 'svn:eol-style = native' line feeds set from your .subversion/config file. If you get files with mixed linefeeds, the merge process doesn't always work so well and generates a lot of conflicts.

Well, that's it. I hope that little howto has been helpful.

Monday, November 5, 2007

Fix for iPhone earphone issue

The speaker on my iPhone handset stopped working recently. I suspect it stopped working sometime after I plugged an audio cable into it so that I could listen to music in my car. After restoring my phone back to stock 1.1.1 (something I've been wanting to do anyway cause the phone was randomly crashing), it still wasn't working. Google to the rescue. I cut the top off a q-tip sprayed some glass cleaner on it and then gently put it into the headphone jack hole. When I pulled the q-tip back out, it had two massive lint balls on it. I then played my voicemail and it worked just fine again. Yea!

Saturday, November 3, 2007

Gap Feedback Coupons

I recently bought some clothes at The Gap. As part of your receipt, they give you a coupon for 20% off your next visit if you go to their feedback website and answer a few questions. The silly thing about this system is that if you say you are a 12 year old girl (or boy), then they don't ask you any questions. How pointless is that? Well, I'm sure that solicitation of young children has a law against it. Tell that to the priests. Heh.

If I was designing the system, I would print out a special code on the receipt that the receipt holder had to enter in. That way you have tracking from purchase to coupon. It sure would tell you a lot more about your customer base than just handing out 20% coupons does.

Thursday, November 1, 2007

Innovative Education

After more than 4 years in college and no where near getting a degree, I decided to drop out. The reality is that I had spent the those 4 years learning everything I could about software, hardware and networking. I was in a great environment. I had a boss who loved me and I worked for the only department in the entire school that had any money (and they had a boat load of it). In fact, they had so much money, I was tasked with figuring out how to spend it on cool computer systems across the entire department. Oh, did I mention my boss loved Apple computers? A dream job for me, except two things: #1. the rest of the school was jealous, so I was treated strangely. #2. the pay sucked ($5.40/hr), I could barely survive on what I was making.

The point of all of this? Well, basically what I was starting to say is that I was disillusioned by the fact that I was bored taking classes. Sure, I had really good professors, but I felt like I wasn't getting anything out of regurgitating what was in the books. It was frustrating that I was learning more information running the departments computers than I was attending classes. By my final year, I was taking a class in C programming and at the same time accomplishing something far more complex: porting X11R6 to A/UX (it took about 4-5 hours to compile it all). In class, things move a lot more slowly to keep up with the least common denominator.In the real world, the education I learned on my own by running these systems really made me feel a lot more useful; I was learning something that gave me the ability to make a real difference for my life and others. I like that concept a lot.

While reading my email just now, I saw this slashdot posting:
openfrog writes "An inspired professor at University of Washington-Bothell, Martha Groom, made an interesting pedagogical experiment. Instead of vilifying Wikipedia as some academics are prone to do, she assigned the students enrolled in her environmental history course to contribute articles. The result has proven "transformative" to her students. They were no longer spending their time writing for one reader, says Groom, but were doing work of consequence in a "peer
reviewed" environment, which enhanced the quality of their output."
And it dawned on me. This is a brilliant innovative education idea! If I had been tasked with helping others by improving wikipedia, then I would have been more interested in the subjects! Doing research for the purpose of sharing it with others is way more rewarding. I bet I would have learned even more by the fact that people would be editing my articles as well! How cool!

With that, I commend that Mrs. Groom for really thinking out of the box. You go girl.

Saturday, October 27, 2007

First Live Site

After more than a year of work this last friday, we turned the first paysite (Not safe for work) live on the new architecture. Of course we purposely choose the site that gets the least traffic so that we can make mistakes and not lose money. This is a huge milestone for us because it means that we can now quickly convert the other 13 higher traffic sites over to the new system and start adding new features.

I know what you are thinking... a year of work? It took you that long? Well, when we first started, we really walked into a big mess that needed to be cleaned up first. Nothing was documented so making changes almost always caused something to break, the network was a mess, we were only using the CDN to distribute our promo (free) content, our servers were getting hacked left and right, we needed to hire more people to help us get the work done, we replaced our entire affiliate system with an off the self product (twice... the first one didn't work out) and on and on.

It has been a long road, but I feel like there is some light at the end of the tunnel and I'm happy and proud to have contributed to it. The whole team worked really well together to accomplished quite a bit. I've also learned quite a bit about this industry as well as my own. I've gained a lot of experience with the latest Java technologies (JBoss4, EJB3, Hibernate), deploying secured content to CDN's, affiliate systems and single signon (SSO) systems across second level domains.

SubEtha SMTP 2.0 Released

Thanks to a contribution from Edouard De Oliveira, SubEtha SMTP now has support for new IO (NIO). This was done by redoing the networking layer to use Apache Mina. This makes SubEtha SMTP the easiest to use and fastest receptive SMTP components ever developed.

If you ever have a need to unit test the emails you send out from a web app or even have a web app receive emails, this is the right solution for you. I can also envision building a far better implementation of spamassassin on top of this product.

This is a proud day for me. This a really cool piece of software that I helped develop. In addition, it really shows that open source development models work. Receiving a wonderful contribution of code from someone I have never met is simply amazing. It is really neat that I can put something out for the world to enjoy and other people come and help improve it as a team effort.

Monday, October 22, 2007

BlogRush: stupid business model

I had been trying out the BlogRush widget on my blog until today when I got an email from them saying that my blog was not good enough for them and they made my account inactive.

What they do not realize is that the internet is not based on exclusivity. Sure, I can understand that they do not want their system used by spammers or porn pushers. But in my case, I'm just a regular blogger who talks about whatever is on my mind now. That should be the perfect blog for them which makes me think that their review process is severely broken. If their review process is broken, then their entire business model is broken.

That said, now you get a negative blog posting from me. Hopefully others will read this and decide that they should ignore BlogRush as well. It is not worth trying to fit into anyones popularity contest.

Update: No surprise here, a number of people have already written similar articles deploring the abysmal state of this service. #1. #2.
#3. #4.

Sunday, October 21, 2007

Google Notebook

Google recently released a new product called Google Notebook. The functionality is much like a personal wiki of things you find interesting on the net. You can easily put anything on a web page into one or more notebooks. This includes links, bits of text and even images!

For me, this is one of the more useful applications that Google has released because I'm constantly feeling a bit overloaded by information. It really has become too difficult (and unnecessary) to remember everything I come across on a daily basis. A native client for my iPhone would be great, but for now, I can get at the information in Safari.

iPhone 1.1.1: hacked again

I upgraded my previously hacked 1.0.2 iPhone to the latest 1.1.1 OS release... and hacked it again. Go hacker community. Thank you so much for making my phone useful.

The tools out there (iNdependence) are not perfect in that they are not easy for grandma to do it. I also had to manually clear out the settings because it still thought that I had apps installed when I didn't.

In the end, I was able to get everything up and running with minimal problems. Yea!

Sunday, October 14, 2007

Interesting Idea

Read the interview. Its hilarious.
Sept. 21, 2007 - After A. J. Jacobs spent a year reading the entire Encyclopaedia Britannica for his book “The Know-It-All,” he figured he had the yearlong experiment thing down. How much harder could it be to follow every rule in the Bible? Much, much harder, he soon discovered, as he found himself growing his beard, struggling not to curse and asking strangers for permission to stone them for adultery.

Wish I was there.

I used to own a night club that was at 11th and Folsom. The Folsom Street Fair was always a good time. One year, we had a giant 20 foot penis shaped out of balloons attached to the front of the club. Too bad the insanely boring and prudish people who wrote this article weren't there to see it. I wonder how many young boys Peter LaBarbera has slept with. You know there has to be a scandal there somewhere.
The following were witnessed and filmed by these Americans For Truth observers at the Folsom Street Fair yesterday — with no arrests or police action taken despite their occurrence on crowded public city streets:

* (Mostly older) men walking down the street completely naked, and posing for photos;
* Men masturbating themselves in public, sometimes with a crowd gathering to watch;
* Male group orgies in which men masturbated other men, or stimulated them orally (fellatio) on the streets as hundreds of people either watched or passed by;
* Men and women whipping and beating each other with floggers, causing red welts;
* “Master-slave” couples, both heterosexual and homosexual;
* Women walking with their breasts exposed;
* Fetishists such as “pony-play” (people dressed as horses) and “puppy play” (people dressed as dogs);
* People posing for pictures with public exhibitionists
Here is the other article the AFT published... with pictures!

Thursday, October 11, 2007

Kaptcha 2.0

I recently updated one of the Java open source projects that I started. Its called Kaptcha. This project is used to create those images that you have to type in the code in order to create accounts, post to blogs, and whatnot. Its a very useful bit of code and Kaptcha makes it easy to integrate into your web application. This update cleans up the code a bit and adds a bunch of documentation.

Wednesday, October 10, 2007

Dead Reverend's Rubber Fetish

Yea, it can't get better than this article from the smoking gun:

Autopsy: Pastor found in wet suits after autoerotic mishap
OCTOBER 8--An Alabama minister who died in June of "accidental mechanical asphyxia" was found hogtied and wearing two complete wet suits, including a face mask, diving gloves and slippers, rubberized underwear, and a head mask, according to an autopsy report. Investigators determined that Rev. Gary Aldridge's death was not caused by foul play and that the 51-year-old pastor of Montgomery's Thorington Road Baptist Church was alone in his home at the time he died (while apparently in the midst of some autoerotic undertaking). While the Montgomery Advertiser, which first obtained the autopsy records, reported on Aldridge's two wet suits, the family newspaper chose not to mention what police discovered inside the minister's rubber briefs. Aldridge served as the church's pastor for 16 years. Immediately following his death, church officials issued a press release asking community members to "please refrain from speculation" about what led to Aldridge's demise, adding that, "we will begin the healing process under the strong arm of our Savior, Jesus Christ."

With more in-depth details in the police report:
"The decedent is clothed in a diving wet suit, a face mask which has a single vent for breathing, a rubberized head mask having an opening for the mouth and eyes, a second rubberized suit with suspenders, rubberized male underwear, hands and feet have diving gloves and slippers. There are numerous straps and cords restraining the decedent. There is a leather belt around the midriff. There is a series of ligatures extending from the hands to the feet. The hands are bound behind the back. The feet are tied to the hands. There are nylon ligatures holding these in place with leather straps about the wrists and ankles. There are plastic cords also tied about the hands and feet with a single plastic cord extending up to the head and surrounding the lower neck. There is a dildo in the anus covered with a condom."

Monday, October 1, 2007

Gear Review: New England Glider Bi-Pattern 10.2mm x 60m Dry Rope

I recently purchased this New England Glider 10.2mm rope. It was purchased to replace my first rope that after about two years of climbing on it was starting to look a bit frayed. Over the last few years, I have developed a better sense for the type of rope I was looking for. After a lot of research, I had narrowed down my choices to this rope and another rope. I was looking for a rope which was lightweight (3.96 kilograms), decent number of UIAA falls (10), 60m, 10.2mm, dry treated and bi-color. This rope fit the match perfectly except that it has a higher impact force (9.8kN) than I thought I wanted. I generally like soft landings.

Now, after using the rope for about a month now, I realize that I really like having a low dynamic elongation. The rope almost feels like it is not very springy at all when belaying someone. However, taking falls on it are still comfortable and not jarring at all. The sheath is comfortable to use and lowering someone off belay does not result in quickly burnt hands.

I give this rope a two thumbs up recommendation.

Sunday, September 30, 2007

AT&T Sillyness

Its 10am on Sunday and I'm trying to move away from paper bills. I also want to combine both my home phone number (used only for my DSL line) and my cell phone bill into one bill that gets charged to my credit card (so that I can get credit towards my REI dividend).

How is it that a web service is not available during certain hours? As a software engineer, I can't imagine the meeting that went on to describe the need for that 'feature'. "Please make it so that this feature is disabled during certain hours because we are only able to employ the trained monkeys for 8 hours a day."

Saturday, September 29, 2007

Staggering Numbers

From this weeks Time magazine:

$500,000 Amount the Iraq war costs per minute, according to a joint analysis by a Nobel-prizewinning economist and a Harvard scholar, who noted that the amount spent on the war each day could pay for health care for 423,529 children.

$50 billion Amount the Bush Administration plans to increase its 2008 budget for military operations abroad.

Are you fucking kidding me? This war is so insanely absurd! I'd rather live with the fear of being attacked by terrorists than continue to see this much money being wasted on killing people and displacing them from their homes. Does it really help us to ruin an entire country, piss off all of our allies and make the people who hate us even more determined?

Come on. Give it up. Let us move on to more important problems!

Thursday, September 27, 2007

Sunday, September 23, 2007

Apache Software Foundation 1998-Current

I originally started work on the Java Apache JServ servlet engine back in 1998 because I was doing work for a Clear Ink client that wanted to use Java for their website backend. It was the first Open Source Java servlet engine available and it was a poorly written piece of software that needed a lot of help.

Eventually, I was joined by Pier and Stefano. The three of us really put a lot of effort into the code, packaging and distribution of JServ. It became a useful piece of software and the ASF gained recognition from Sun for its Java development efforts. For our contributions, we were given some of the first non-httpd memberships to the ASF.

These efforts were rewarded by Sun deciding to Open Source two pieces of code: Tomcat and Ant. Both of which are now some of the most widely distributed applications on the planet. Java Apache was renamed to the Jakarta Project and we continued to grow and expand over many more years into one of the largest open source repositories of Java code.

I am responsible for founding, co-founding (and contributing to) quite a number of Jakarta projects including Tomcat, Ant (I was the first person outside of Sun to use the original code and some of the first patches came from me), ECS, Turbine, Torque, Commons-Email, Velocity, Anakia and Regexp.

Today, I'm still an active Apache member but I do not spend as much time contributing to the ASF as I did in the past.

Clear Ink 1995-2000

I co-founded a small web development company called Clear Ink in 1995 with David Burk and Steve Nelson. I was in charge of system administration, networking and being webmaster/developer for our clients. I worked many hours for a dirt cheap salary and I learned a lot in exchange. Eventually, we merged with another company and at the end of the merge, I decided it was time to move on.

Ruby Rails advocate switches back to PHP after two years

I'm referencing this article on the O'ReillyNet website.

I've been watching the Ruby/Rails phenomenon for several years now. It has always reminded me of what Java Servlets were like about 8 years ago when I first started working with them. The only difference is that there is a nice framework to create CRUD applications. If I had no idea of how far the Java world had come in the last several years, I would still be using PHP as well. The reality is that Ruby isn't even a consideration for me. Its a no brainer because Java kicks both PHP and Ruby's ass.

With Java, I couldn't imagine living without features like method level security, annotations, generics, Hibernate and its second level distributed cache, proper 3-tier MVC object models, fully transactional EJB3 entities, EJB3 services and most importantly, the ability to re-factor code at will with Eclipse. I even question unit testing. How do you ever develop proper unit tests for PHP? What if you re-refactor some code by moving a method around? The only tools available to properly do that are grep and sed. With Eclipse its two keystrokes and you know it worked or not because you actually compile your codebase. I see this problem all the time with PHP.

At work, we have this 7+ year old legacy PHP codebase that is complete utter dog crap. While it has enabled the creation of a successful company, it has really come in the way of growing the company exponentially. The codebase has been worked on by several people over the years, has no standards and does crazy things like PHP generating PHP code which then generates HTML.

Thankfully, my job has been to replace the crap entirely with Java and things are progressing nicely. We have a great framework that is similar to what we did with the SubEtha Mail project. The code is well documented, each subversion commit is reviewed, built and unit tested with cruisecontrol. Javadoc is rebuilt nightly. We use Trac to provide ticketing and websvn. If we introduce a bug in the business logic, we know about it almost instantly. We even have unit tests for the more complex portions of the HTTP layer (Single Sign On, Login, Logout).

I guess the point of this posting is that I can't see how anyone thinks that they can develop a 'robust', 'scalable', 'enterprise' PHP/Ruby application without the tools that are available in the Java domain. Sure, it can be more complex and 'wordy' to develop in Java than PHP, but the features and end result (highly maintainable code that scales to virtually any size application with great reliability) far outweigh the additional learning or cost/time to develop.


TrailRunnerI just ran across this very cool app called TrailRunner. It lets you plan routes for any sort of outdoor activity. TrailRunner can even export directions onto your iPod. This is yet another reason why I love OS X.