Synchronize iCal (or Sunbird) with Google Calendar Bidirectionally!
WOW! I never thought I'd find a way to do this elegantly, but after much searching, here it is! I found a way to synchronize my Sunbird client (yes, I'm a die-hard linux user) to my Google Calendar. In principle, this shouldn't be difficult - Google publishes a Java API for working with the Calendar, and iCal is a pretty well-established standard, after all - but somehow it just didn't seem to exist. Also, though it's a subject that intrigued me, I didn't have the spare cycles to get into that sort of implementation, particularly with my Maven commitments. But enough of the suspense, let me tell you how my setup looks. The key component of this system is the GCALDaemon (@SourceForge), which is a Java Servlet (I assume, I haven't looked yet) that can run in either standalone mode, or inside of an existing application server like Tomcat. This servlet can handle HTTP- or file-based ics data, and act as a two-way proxy for shuttling it back and forth to Google Calendar. It also seems to have functions for ...
Planning Your Build with Maven 2.1-SNAPSHOT
I just completed a major overhaul[1] of the Maven lifecycle-execution code, and I wanted to take a few minutes to share some of the high-geek-factor features of the new architecture. First of all, the new architecture builds up a complete list of all the mojos that will fire during your build, along with their configurations...all before it executes the first mojo. This means all plugins in the build will be verified as present and accounted-for right up front. Lifecycle phase bindings are resolved from the POM's packaging, the POM's build section, and the command line itself. Then, all of these lifecycle bindings are merged together and injected with their appropriate configurations from the POM and various other places (like lifecycle overlays brought in during forked execution by plugins) to form a BuildPlan instance. Then, the LifecycleExecutor (no, I didn't completely remove this) extracts a List of bindings from the plan, and iterates over each one, executing as it goes. While just-in-time processes ...
The Year of the Build Chimp
I'm posting code-related entries under this account now, so I can separate my personal blog entries more cleanly from the rest.
