Wednesday, August 29, 2007

eBay Loosing $1 Billion Because of Skype Outage?

TechCrunch is reporting that eBay market cap lost $1 billion dollar on August 16 because of Skype outage. The outage started the 16th and lasted for approximately 2 days. The chart shown by TechCrunch looks convincing enough, but let's zoom out for a second (see the chart on the right; click for a larger view). First, eBay stock started going down a few days before the 16th. Second, it went up on the 17th, while the outage was on its second day. So just looking at those charts, it doesn't seen that eBay's stock has been impacted in any significant way because of this issue.

Tuesday, August 28, 2007

GTD: Keep Track of your Next Actions in Google Calendar

What about using Google Calendar to store your GTD next actions? David Allen makes a strong distinction between next action lists and events your calendar. This makes sense: you want to capture in your calendar events that must happen on a fixed date or hour. For next actions you can use pretty much any system... including your calendar, of course as long as you can keep events and next actions clearly separate in your calendar.

I have been experimenting with the idea for a few weeks now and here is one way to do it with Google Calendar:

  • Create 4 new calendars: one for your professional next actions, one for your personal next actions, one for completed/done actions, and finally one for "waiting for" items.
  • When you create a next action, roughly choose when you will do it. Is this something you'll shoot for doing today, later this week, next week, next month? Also choose how long it should last (1/2 hour, 1 hour, 2 hours...). Roughly place the next action at an appropriate time during the day. Is this an errand you will do coming back from work? Or something you'll want to do in the evening at home? Something for the weekend? Or just any time during the day will be fine?
  • When you have done a next action item, or got what you expected for a "waiting for", move it to the "done" calendar.
  • Choose appropriate colors: for instance show the "done" calendar in gray, next actions (professional and personal) in different shades of green, purple for "waiting for", and events in different shades of orange.
  • Regularly review your calendar and make sure that you don't have any greens (next actions) or purple (waiting for) left in the past. Everything in the past must be gray. If anything green or purple is still there in the past, don't panic: just pick a reasonable date in the future and move it there.
This works great with Google Calendar, because Google Calendar lets you:
  • Create tasks at a given time and for a given duration with just one mouse movement.
  • Move tasks around with a simple drag and drop (which you will be doing a lot).
  • Assign colors to different calendars and choose which calendars are displayed, you won't miss regular events, which would otherwise be lost amongst all your other next actions, done actions, and "waiting for". Maybe you will even be less likely to "forget" about an upcoming event because you will be looking much more frequently at your calendar.
Of course, any calendar software that has the provides those same benefits will work just as well as Google Calendar.

If you give this a try, or have and any suggestion on how to improve this, I would really like to read your comments. Make sure to post them below!

Monday, August 27, 2007

Tomcat: Don't Remove That webapps Directory!

Tomcat comes with a few example applications in the webapps directory. You don't use any of them, and don't even use that directory for your own applications. So you are about to remove the whole directory to save yourself some time when Tomcat starts.

Do that, and and you will be in for some trouble. Tomcat will fail with an error that looks like:

INFO: Marking servlet ops-xforms-server-servlet as unavailable
Aug 20, 2007 6:42:17 PM org.apache.catalina.core.ApplicationContext log
SEVERE: Error loading WebappClassLoader
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@6a4aef
org.orbeon.oxf.servlet.OPSServlet
java.lang.ClassNotFoundException: org.orbeon.oxf.servlet.OPSServlet

Instead of removing the webapps directory, just remove its content. That leaves you with an empty webapps directory, and your applications will run just fine.

Why does removing the webapps directory create this issue? And what exactly is the meaning of the above message? Is Tomcat just looking for class files in the classes directory, ignoring the content of the lib directory?

Thursday, August 23, 2007

Skype for the iPhone

SHAPE Services, a German company that creates IM clients for cell phones, has released a nice web site that enables you to use Skype from your iPhone. And if you don't own an iPhone yet, you can try it from Safari: skypeforiphone.com.

Skype for iPhone lets you chat with other Skype users, but also call people on Skype or on landlines. They achieve this by calling your phone and the other party through Skype, using your Skype credits.

Assuming you don't have a unlimited plan and are in the US, you will pay 2.1 USD cents/minutes to call another Skype user, and 4.2 USD cents/minute to call a land line in the US, China, and most European countries. Since you are paying airtime anyway, for US calls you'd better call the person directly with your phone. For international calls, unless you have a Skype unlimited plan, Jajah will give you better rates (with many countries in the 3-3.5 USD cents/minute). Watch the competition, do the math, and pick what's best for you!

Seen this first on Download Squad.

Wednesday, August 22, 2007

Recursively Excluding Directories with Info-ZIP

You want to compress the content of a directory, ignoring all the .svn files created by Subversion (or the .cvs files from CVS). Info-ZIP unfortunately doesn't have a simple options to do that. So instead, here is what you can do:

find . -name .svn -exec echo {}/* \; > /tmp/exclude.txt; zip -q9r archive.zip * -x@/tmp/exclude.txt

With find, you first output the path to all the .svn directories into a temporary file, adding "/*" at the end of the path. Then you pass that file to zip with the -x@ option.

This works just fine, but is there a better way, maybe without using a temporary file, with everything in one line?

Update November 1, 2007 - The following, suggested by Gavin in the comments of this post, works like a charm and fits on one line. Here we are compressing the content of a WEB-INF directory to create a WAR file:

find WEB-INF -path "*/.svn" -prune -o -print | xargs zip myapp.war

Update February 16, 2009 - Tastenmetzger suggested in the comment an even simpler way of achieving the same result, using just the zip command:

zip -r myzip.zip * -x *.DS_Store *.svn*

Isn't that beautiful?

Tuesday, August 21, 2007

iTerm and CPU Usage

You are running a tail -f in an iTerm tab for a busy log file. Did you know that this could use quite a bit of CPU? In one case I had today, iTerm was using more than 30% of the CPU. This looks like a bug. Luckily, there is an easy workaround: minimize the iTerm window by clicking on the orange "-" button and iTerm's CPU usage will drop down to no more than couple of percents.

Monday, August 20, 2007

Tomcat and Symbolic Links

I didn't expect Tomcat would really care about symbolic links. Say you put together a web application in a directory and want to use a web.xml you have elsewhere. Instead of copying web.xml to the WEB-INF directory, you create a symbolic link.

You would expect this work out of the box, wouldn't you? Well, no. For security reasons Tomcat won't follow your symbolic links, unless you specify on the Context of your web application allowLinking="true", as in:

<context path="/my-app" docBase="/Users/avernet/my-app"
allowLinking="true"/>