Migrating from Outlook to iCal

Part of my switch from Windows to OSX involved figuring out how to get my Outlook Calendar data from Windows/Outlook to MacOSX/iCal. I was really dreading having to manually reenter the whole thing.

Thanks to Norm Jones and Mike Baas who wrote the Outlook Calendar to iCal Macros the migration was a snap. I installed the macros in Outlook, exported to an iCal file, imported it into iCal and I was off and running. Everything came over including recurring meetings. The only thing that didn’t transfer was whether a reminder is supposed to go off before a meeting. In any case, it saved me a lot of time, thanks Norm and Mike!

Here’s the sourceforge page for the Outlook to iCal converter!

Posted in Desktop | 4 Comments

MacBook Pro first impressions and why I switched

I just received my MacBook Pro on Friday. For me this is an even bigger switch since I’m making the switch from Windows to OSX as my primary work desktop. Over the years I’ve alternated between Linux and Windows and as my current Windows laptop is a few years old and shows its age when running IDEA and doing Java compiles Continue reading

Posted in Desktop, Software Engineering | 48 Comments

Foxmarks Firefox bookmark synchronization

I use a slew of machines so keeping my bookmarks and files synchronized between them has always been a priority. I’ve had the file synchronization issue under control for a while now by putting my documents and such into subversion but only twice Continue reading

Posted in Desktop, Web | 2 Comments

Captcha, or is it capfcha, no maybe it’s Gopfcho, dammit!

You’re trying to post a comment on a blog or sign-up for an online service and you have to respond to a captcha (Completely Automated Public Turing test to tell Computers and Humans Apart) to authenticate that you are indeed a real person. You look at it and you start pondering if it’s a one or an l, a zero or an o Continue reading

Posted in Web | Comments Off on Captcha, or is it capfcha, no maybe it’s Gopfcho, dammit!

Deconstructing Earl and Yuri

Let’s start with the difference between URL, URI, and URN because there is a lot of confusion around these terms, and rightfully so. The W3C had to issue a recommendation after URI and URL started being used interchangeably in RFC’s.

  • URI: This is the umbrella or super-set that contains URLs and URNs. URN and URL are URI sub-types. Some mistakenly believe that a URI is a URL without request parameters and based on the getRequestURI method in the servlet API it’s easy to see why.
  • URL: a URI that specifies the network location of a resource such as http, mailto, and ftp.
  • URN: a URI that specifies a namespace and an identifier. For example an ISBN number such as urn:isbn:n-nn-nnnnnn-n is a unique identifier but it doesn’t tell you where to fetch the resource.

According to the W3C we shouldn’t use the term URL anymore Continue reading

Posted in Web | 1 Comment

Spellchecking belongs in the browser, not on the website

With all of the different sites, forums, blogs, etc… that use textareas for writing on the web, it’s unrealistic to expect them all to have a good spellchecker. Even sites that do have spellcheckers have very different levels of quality. I finally had the common sense to install a browser based spellchecker more recently and what a difference!

Spellchecking doesn’t belong on websites because it requires significant personalization to work well depending on the authors areas of interest or expertise. For example, I want to tell my spellchecker to ignore springmvc, webwork, mysql, postgres, etc… Given most people don’t run browser based spellcheckers at the moment it’s still a good idea Continue reading

Posted in Desktop, Web | 7 Comments

The top 5 most common XHTML mistakes

When I first started writing XHTML pages about a year ago I thought that all there was to it was closing every tag XML style. Oh how wrong I was! I’ve since learned to W3C validate as I go so I don’t dig myself into too much of a hole. If you want to see some really nicely written XHTML Continue reading

Posted in Software Engineering, Web | 8 Comments

Valentines day geek love song

My friend and copious blogger Ross pointed me to this hilarious geek love song. It will resonate with anyone who’s had trouble giving their significant other attention when they are too wrapped up in a coding session or video game. It starts off like a normal love song but give it a minute and if you’re not laughing I’ll give you your money back ;-). A must see!

Posted in Humor | 1 Comment

Nofollow hurts bloggers more than spammers

Nofollow really took off in the blogging community as a means to stop comment spammers and I think at this point it’s safe to say that it’s had absolutely no effect on that front. What’s worse is that it’s the wrong approach to prevent spam as it punishes readers who leave insightful comments or trackbacks by withholding the link value they get in exchange for participating. If someone is willing to take the time to leave a comment we should be more than happy to give them the link value. The only thing nofollow does effectively is hurt the pagerank of active blog participants which was never the desired effect! For comment spam we need to stick with less draconian approaches like Akismet and Captcha.

Posted in Search Engine Optimization, Web | 9 Comments

Load balancing across MySQL servers using JDBC

In our production environment at GreatSchools we have 3 production MySQL database servers: 1 read-write master and 2 read-only slaves. In moving our site from Perl to Java we need to load balance read-only connections across the read-only slave servers so that our read-write master doesn’t get overwhelmed under heavy load. As our systems administrators discovered there’s a solution to load balancing read-only connection in the MySQL JDBC driver!

For the JDBC driver you’ll need to use the

com.mysql.jdbc.ReplicationDriver

for the connection string, set a property

roundRobinLoadBalance

to true, and use

 jdbc:mysql://master,slave1,slave2/dbname

as the connection string. Once you have a connection that you’ll be using for read-only purposes do a

conn.setReadOnly(true)

and you’re off and running!

I’ve also started using this approach in conjunction with Spring/Hibernate and so far it looks like it will work fine. We’re going to be doing some more extensive testing and load testing of this feature before we put it into production though!

Posted in Database, Java | 9 Comments