Tuesday, November 13, 2007

Importing old emails into Gmail via IMAP

So Gmail added IMAP support this month and the biggest benefit I got from the new addition was a simple way to import my pre-Gmail email. When I first got my account several years ago I looked into importing all of my old email messages into my Gmail account but found it would be tedious and fraught with problems. The biggest one being there seemed to be no way to import the emails and preserve their old header information such as who sent it, what address they sent it to, when they sent it and when I originally received it. All the import tools I found were nothing more than glorified resenders that simply emailed my old emails to my new account. But now with an IMAP link between Gmail and Apple Mail, my current email client, importing my old email is as easy as dragging and dropping them into my Gmail inbox. Unfortunately Apple Mail 3.0 is still flaky and trying to move too many emails at once causes it to crash. If I import them in about one-month batches it seems to handle it. With seven years of email to import, I'm about three-quarters of the way through the import after three nights of importing a month, waiting, moving the next month, etc. But it's going smoothly and all the original header information is preserved accurately as well as the attachments to the originals.

Friday, September 07, 2007

Identity Theft and You

I recently was forwarded an email about Google's "scary" (for some) feature of reverse phone searching. You can read more about the email at Snopes.com.

Anyway, I was bothered enough by the false sense of security a FUD email like this provides for those who aren't as wise to today's Internet issues that I was forced to write the following response for my family to read as a counterpoint.

I receive many forwarded emails, but I award few with more than a passing glance. This one is so misguided though, I felt it deserved a response at least to those I know and care about.

Phone numbers and addresses aren't private information and shouldn't be or they betray the very nature of what they are, location devices. Reverse searching for a person or address based on a phone number has been available for a very long time on many websites, the most well known, for me at least, being http://anywho.com.

The advice the original email provided will lead many who read it into a false sense of security while making things harder only for legitimate people looking to contact them. Removing yourself from Google's listing makes it not only harder for the "bad" people to find you but also your friends, family, and business associates. Someone looking to steal your identity or find out information about you has many resources beyond Google in this era of the Information Age.

If you are truly looking to protect yourself from identity theft there are more effective ways:

  1. Create a Google Search Alert for your social security number and/or credit card numbers. This will notify you via email if Google finds one of these numbers on the Internet. That way, if one of these important numbers have been stolen and appears online, you'll be one of the first to know.

  2. Check your credit report annually for free at http://www.annualcreditreport.com. Review it to make sure no one has stolen your identity

    • NOTE: Beware of freecreditreport.com. It is a well-advertised scam.

  3. Place a fraud alert or credit freeze on your credit report. Its an extreme measure, but it then allows only you can get credit in your name using a private PIN.

  4. NEVER use a debit card or personal checks. They are linked directly to your rightfully earned money with no safeguard and provide you no recourse if someone fraudulently takes money from your bank account. A credit card provides many protections a debit card does not.

  5. Ask your credit card company if they provide single-use credit card numbers. Many, such as Discover, provide an online utility to generate a new credit card number to use for each of your online purchases. This will protect you because if that single-use number is stolen it is worthless.

Find out even more ways to protect yourself: http://www.google.com/search?q=protect+identity+theft.

Now I, Brian Jackson, personally wrote every word of this email and I hope THIS is what you pass on to friends and family!

Friday, August 24, 2007

Maven Quirks: Parents of Dependencies

So try this in Maven. Create a project A and don't install it. Create two subprojects, B and C, that have A as their parent. Make B depend on C. Install C. Try to build B. You won't be able to as Maven claims it can't download A. Huh? Why did C build then?

The cause is that Maven can resolve a project's parent on the local drive using a relative path. But if a project has a dependency, it will only look up that dependency's parent through the repositories, even if that parent is available via a relative path.

The solution, install A into your local repository. If another developer gets B out of your SCM and tries to build they will fail with the same problem. So I've now learned. Deploy more snapshot builds of parent POMs to keep my fellow developers happy.

Friday, June 08, 2007

Maven for Ant Users

My coworker asked me to describe how Maven compares and differs to Ant. I realized how hard it was for me to describe what a developer gets for moving their build process from Ant scripts to Maven. I can't make the argument that you can do X with Maven but not with Ant because I don't really have a valid example. However, I am inclined to make the argument that you can do X with both but with Maven it's easier.

With Maven, you collect metadata about your project instead of writing scripts defining the steps your build will take. For example, if you look at an Ant script you'll immediately see that it is organized as targets which many developers use to define and group the steps of their build process. In a Maven POM file, you won't see similar build steps defined. This can be confusing for a new Maven user coming from the world of Ant. I know it was for me. Instead, you'll see lots of metadata about the project such as dependencies, Maven plugins to use, locations for the source control repository and project website, the working directory structure, contributors and more, but nothing that defines what should happen when you want to build the project's jar, or generate a documentation site for the project. These steps are defined by various Maven plugins.

Maven plugins are the most tangible thing you get from using Maven over Ant. What the plugins provide are nothing you can't do with Ant, but they encompass many of the tasks Ant users have written and rewritten time and time again. Goals like compiling your classes, running your unit tests, jaring your classes, generating javadoc, building a JAR of your source files, and on and on. So if you want to build your project with Generics support, you'll define in your Maven POM file that the compiler plugin should target JDK 5.0, but you won't have to define what Maven needs to do to complete the goal.

So when it comes time to build your project, you haven't spent anytime rewriting goals, instead you've only spent time describing how your project differs from other projects. So when you call "mvn jar:jar" instead of "ant jar", you won't have written any of the boilerplate script to tell Ant how to build a jar and which steps it depends on (compile, test), you'll just have reused the jar goal that a Maven developer wrote.

With Maven you get to focus on the high-level task of defining your project instead of the low-level task of defining your build.

Saturday, February 17, 2007

Jen on The Weather Channel

Jen, had a report on The Weather Channel! It's the first time I got to see her on TV. I took the time to grab it off my TiVo, decrypt the video, reencode it, trim out the leader and trailer and upload it to YouTube. Take a look!

Friday, January 12, 2007

Flocking Applet

So I was brushing up on my CS fundamentals recently and was reminded of the topic of Markov chains. In college, I created an applet that simulated flocking behavior in animals using a Markov chain and it turns out its still up on my college site.