Sunday, May 31, 2009

Sunday Night Video: Halcyon

I have a strange mental connection to this song. A lot of people associate this song with the movie Hackers, and while it is true, I could make that connection, but the same year that film came out, this Orbital tune also appeared at the very end of the Mortal Kombat movie. At the time, I thought it was a song by Stabbing Westward, and it wasn't until I caught the below video on a show called R U Receiving that my confusion finally came to an end.



Now what I discovered just today is the vocal sample in the above song was from It's a Fine Day by Opus III... and I tracked down a performance video from Top of the Pops II, which I think is a little bit weirder than the above video. I just sounds weird to me, and Kirsty Hawkshaw's hairdo is odd to say the least. I would consider it a minor transmundane event.

Saturday, May 30, 2009

Clouds on the coast and chaff


Last night a weak disturbance passed by us to the north. As a result the pressure trough over western Washington shifted eastward and the onshore pressure difference increased to near 2 millibars. The result...a weak influx of marine air that brought clouds to the coast, the Strait, and SW Washington. Thus, today will be a few degrees cooler than yesterday, although the clouds will burn back this morning.

A few weeks ago I talked about birds in the weather radar. Yesterday there was something else. Take a look at the weather radar from late yesterday afternoon...looks like showers near the Olympics and over parts of SW Washington. But it was clear. This is good example of chaff from military aircraft. Once in a while the miltary has some kind of exercise off the Oregon coast and release chaff..which blows inland during the next few hours. The radar really picks this up...making it appear that heavy or extensive showers are approaching the region. Why they release this chaff? I can't answer that.

For those of you that are interested, I will be doing 1.5hr show and call in on KCTS9 this Tuesday at 7 PM. They will offering my book and a DVD of the program as part of their pledge drive.

And check out the op-ed section of the Seattle Times tomorrow (Sunday)...there is a piece on the disastrous math decision of Seattle Public Schools. And Issaquah and some other local school district are considering the Discovering Math series. Hope they will think it though first.

Friday, May 29, 2009

Week 3: Pageant of the Transmundane

Officials in Vietnam are trying to ban dancing in karaoke clubs. I guess the movie Footloose was just released there this year.... or at least that is as plausible an explanation as I can fathom.

Now, I had a tough choice this week as there were two entries which were similar, but both were equally strange celebrity related images. But in the end, both the improbability of the three celebs involved in one plus the wardrobe made one of the two entries in question stand above.

This week's winning entry arrives from...

...drum roll please...

Funktards.

I am not going to reveal the three people involved, or the circumstances... you just have to look on your own.

And after you see the entry in question, well, this picture I've chosen this week makes a lot more sense. I think you can find a Simpsons picture for anything now. I found this screengrab at simpsoncrazy.com, which joins Last Exit to Springfield in serving my transmundanity image needs.



Congrats Dalton for once again finding something so weird it could not be denied a prize.



The rules of this little contest: Every week I will be selecting one blog post that I have seen from the vast reaches of the blogosphere to bestow with the Homer Simpson Transmundanity Award for being one of the freakiest(in a funny way) things I've seen or read during a 7 day period. It doesn't necessarily have to have been written during the week, I just had to have encountered it. That means that if you find something interesting and repost it like a movie or whatever, if I saw it at your blog first, you get the prize. Of course, creating your own content is also a very good way to win.

Now, if you see a post that you think is worthy of this illustrious prize, just drop me a line at campybeaver@gmail.com and we'll see if we can't get your suggestion up and award-ready while giving you some credit and a link to your own blog.

Friday Favorite: The Wicker Man: Why I hate Hollywood

Today, Aaron from Electronic Cerebrectomy made some observations on two lists of remakes James Gunn had blogged about, and one of those remakes just happened to be The Wicker Man, and it made me remember a post I had made right after I found out about that particular remake. For something I just started riffing on, I think I ended up being frighteningly accurate in my assessment.

--

I know, I know I'm not the first blogger(or professional journalist for that matter) to write disparagingly about the glut of remakes that have been coming out the last few years, but you know, it still needs to be said.

The basic jist of most of those articles is that in general remakes suck.... and they are right.

With that in mind, I want to just mention that I hate the fact that not one but TWO remakes of the Wicker Man are being made.

If you haven't seen The Wicker Man, it is a cool, atmospheric and on some level, utterly believable horror movie that had an ending which still chills me to this day. And after seeing what modern Hollywood did to Assault on Precinct 13, I am scared... no very, very scared of what is going to become of The Wicker Man in their *ahem* capable hands.

Edward Woodward was perfect for the lead in the original... I mean, this is the man who became the the Equalizer for the love of...-- does that mean nothing?!? I know that Nick Cage has... what's it called... oh yeah, "star power", but that isn't an excuse. Neil LaBute, what are you doing to us?

Some of you may be saying, well, MC, Neil Labute's made some decent movies in the past, so it won't be so bad. Well, the fact that the director of the original, when he heard about some of the changes being made to the original plot and structure of the movie for the remake, asked that his name be removed from all the promotional materials for the new film says a lot. And then he went further.

Robin Hardy decided he was going to reimagine The Wicker Man, using the same setting but creating a new story around it. Cowboys For Christ isn't really a sequel so much as it is a re-examination of the same themes. Of course, the way I see it is CoC is basically Hardy flipping off the whole remake.

You know something is off when many of the figures from the original movie start working on a competing project. I mean, how bad is the Labute version really going to be? I think one only has to look at the two competing Exorcist prequels to answer that question.

Thursday, May 28, 2009

Google I/O 2009 - Day 2 Recap

Despite a late night letting loose at the After Hours party, developers managed to wake up in time for the early morning Day 2 keynote (after having been promised yet another exciting surprise). This morning, we unveiled an early look at Google Wave, a new collaboration and communication product. Lars and Jens Rasmussen and Stephanie Hannon presented the vision behind Google Wave and a live demo of it in action. All Google I/O attendees will receive developer sandbox accounts to test out and build on the Google Wave APIs.

To see Google Wave for yourself, check out the video of this morning's keynote:



We'll leave you with a few more I/O photos, starting off with last night's After Hours party:


Yesterday evening after I/O, developers let loose and relaxed at the After Hours party. Food, drinks, music, and games were enjoyed by all.


One of the attractions at the Developer Playground area of the party. The Playground featured individuals & organizations doing creative projects with technology, art, games, music.


Enjoying one of the arcade games at After Hours.


Mike Relm performed during the evening, as well as DJ Scotty Boy.


Day 2's keynote opened with Steven Canvin from LEGO® talking about the evolution of MINDSTORMS to an open source approach.


Google Wave co-founder Lars Rasmussen talks about the vision behind the product.


Brothers Lars and Jens Rasmussen co-founded Where 2 Technologies, which was acquired by Google and eventually became Google Maps.


Stephanie Hannon, Google Wave's lead product manager, wows the audience with a live product demo.


The Google Wave team watches the keynote from the front row. The team is based in Sydney.


A view from the video crew desk. Videos and presentations from I/O sessions will be published on code.google.com/io in the coming days - stay tuned.


A developer picks up his Android phone.


The Sandbox interview room. The Google developer relations team conducted interviews with 3rd Party Sandbox exhibitors and will be posting them on the Google Code YouTube Channel in the coming days.


A happy Aussie fish and kangaroo greet developers dropping by Office Hours for Google Wave.


We hope to see you next year!

Big Day for the Coastal Radar and our fine weather continues

It was an extraordinary day today. At a community forum in Seattle organized by Senator Maria Cantwell, the coastal radar issue was discussed in depth. The full cost of the radar is in the proposed budget...and if passed by Congress...the radar will happen. This is getting close to a sure thing. The National Weather Service was there in force, including their Director Jack Hayes and head of Science and Technology, Don Berchoff. The NWS is now an enthusiastic supporter of the acquistion and they have hired a team to do site surveys on the coast this week. By January or February a decison on siting should be done...AFTER community input and reaction. Talking about community, there was lots of radar supporters from the coast in attendance. This has been a community project from the beginning...and I think the NWS brass were impressed by the depth and variety of the radar advocates. Having Senator Cantwell on our side has been crucial, particularly since she chairs the subcommittee overseeing NOAA. And her staff have been terrific. Finally, the radar got a big play in the press..including the cover of the Seattle Times and all the major news programs.
There are a few battles left now. Many of us at the UW think the radar should be set up to scan as low as possible to get the most range...but the NWS has some rule of never going above .5 degrees above the horizon. We need to convince them. And we would like our radar to scan the skies in the most optimal way for our community, which includes both horizontal sweeps (call PPI in the business) AND up and down at at a constant azimuth (called RHI). The latter scans gives a detailed vertical cross section that really helps see the structure of weather systems and assists in determining precipitation over the mountains. But perhaps I am getting too technical here. But this is a revolution in the making.
The situation the next 4-5 days is nearly optimal for outdoor activities...temps in the 70s over the lowlands (near 80F tomorrow) with lots of sun and no lowland rain. No June gloom--at least for a while. Of course, there will be great temperature contrasts near shorelines, since the Sound and the Pacific are both around 50F

Chrome Experiments at Google I/O

Google I/O is well underway, and we're excited that we've been able to highlight some Chrome Experiments at the event. During the keynote on Wednesday, we opened with the following video. Matt Waddell from our Developer team composed the music playing in the background. We're posting a subtitled version of the video, so you can enjoy the song in all it's HTML5 glory.



We've loved the experiments we've received so far and encourage you to check out the ones listed below:
We're continually updating Chrome Experiments to feature new and crazy JavaScript experiments, so keep submitting!

NBC's ratings - Bad, Bad, Bad

I was struck by a particular headline this afternoon:

NBC's Ratings -- Lowest Since Early TV

I mean, I know that the market is segmenting with all the cable and satellite channels that are now currently available, along with the ever increasing pressure for entertainment hours from both the internet and video games, but this seems like a simply stunning turn of events. I remember even a short time ago NBC was one of the ratings leaders with everyone following, and now just a few years later... well... I think that headline says everything.

What the numbers indicate is that both Fox and CBS have twice as many viewers than NBC, which means that while NBC isn't in the network ghetto occupied by the CW and My Network TV, it isn't really an address outside of the Nightly News that is increasing in value. Additionally, the most successful Spanish language channel was only about a million viewers back from NBC, meaning other competitors are catching up as well.

And from that standpoint, I guess I can see why NBC is trying to keep Jay Leno and foregoing the expenses of having a scripted schedule after 10PM. Limiting their programming to before 10 certainly hasn't hurt Fox, and at this stage, having a consistent set of programming day after day to build on and to perhaps generate some additional advertising revenue.

Not to mention the fact that replacing their scripted and reality show offerings at 10 with Leno means that from an accounting standpoint, they know how much that hour of television is going to cost week in and week out. I might not like the idea of being burdened with 5 hours of Jay Leno a week instead of almost any other kind of traditional programming, but if it is profitable and it helps to keep the other 17 hours of prime time programming afloat, then I would grudgingly accept that.

I guess time will tell if this is brilliance or sheer folly on the part of the NBC executives, but it is clear that something has to be done to stave the bleeding.


Mercurial Now Available to All Open Source Projects

About a month ago we announced Mercurial support for early testers. Today, we are happy to announce that all Project Hosting users can create a new Mercurial project and convert their existing projects from Subversion to Mercurial

We also want to thank the projects that helped us test support for Mercurial. Projects like Clojure-Dev and Spice of Creation helped us discover new usage patterns and fix several unforeseen issues. Unlike our mature Subversion implementation, there are still a few issues/features that we are working on. 

We therefore encourage everyone to be familiar with what is supported before picking Mercurial.

Please let us know if you have any feedback or find any issues. If you're coming to Google I/O, be sure to come meet us in person and hear our talk about Mercurial on Bigtable this Thursday at 3:45pm-4:45pm in Moscone West - Room 5. We have Mercurial SWAG!

Hello World, Meet Google Wave

This morning at Google I/O we are unveiling a developer preview of Google Wave, a new collaboration and communication product. Google Wave introduces a new platform built around hosted conversations called waves--this model enables people to communicate and work together in new and more effective ways. On top of that, with the Google Wave APIs, developers can take advantage of this collaborative system by building on the Google Wave platform. We want to expand upon that platform, which is why we've put together the initial draft of the Google Wave Federation Protocol, the underlying network protocol for sharing waves between wave providers.

Yes, that's between wave providers: anyone can build a wave server and interoperate, much like anyone can run their own SMTP server. The wave protocol is open to contributions by the broader community with the goal to continue to improve how we share information, together. If you're interested in getting involved, here are a few things you should check out on www.waveprotocol.org:
This is just the beginning. To help potential wave providers get started, our plan is to release an open source, production-quality, reference implementation of the Google Wave client and server, as well as provide an open federation endpoint by the time users start getting access.

We're eager to hear your feedback, so please tell us about your interest, and drop a note on the technical engineering forum with your feedback.

Beyond the federation protocol, you may also be interested in learning more about the Google Wave APIs, as described on the new Google Wave Developers blog.

Wednesday, May 27, 2009

Google I/O 2009 - Day 1 Recap

Day 1 of Google I/O was an action-packed endeavor, shared with an excited community of developers on the ground learning about developing web applications with Google and open technologies, and showcasing some of their best apps.

Here are a few highlights from our keynote speech:
  • Google Web Elements is launched: Adding Google products to your website or blog has never been easier.
  • App Engine for Java is now out of preview and open for signups
  • Google Web Toolkit 2.0 previewed upcoming new features, including in-browser debugging and developer-guided code splitting (also known as runAsync())
  • Android Developer Challenge 2 launched: Win awards for building great apps on Android
  • Google Latitude on iPhone 3.0 was previewed
Check out a video playlist of this morning's keynote:


Since a picture is worth a thousand words, we thought we'd recap the 1st day of I/O with photos captured throughout the day:


In case attendees had trouble finding Moscone West, they were directed to look for the life-sized Google Maps pin placed right in front of the entrance.


I/O 2009 had higher attendance, but registration went much more smoothly this year.


An attendee checks out the I/O agenda board. Product stickers were distributed to attendees to stick on their conferences badges to identify fellow attendees with similar product interests.


Eric Schmidt greeted developers and kicked off the keynote


Vic Gundotra takes the stage to talk about "a more powerful web, made easier."


Vic welcomes Jay Sullivan, VP of Mozilla, while also thanking Mozilla and the larger developer community for tireless efforts towards new web standards. Jay gave a glimpse of Firefox 3.5 features.


Michael Abbott, SVP of Palm, talks about why the web is the platform and Palm webOS.


A view from the audience.


We gave all Google I/O attendees a limited edition Android-powered device in order to encourage and facilitate further application development on the Android platform, and provided a preview of Donut features.


Office Hours are a new addition to I/O, where attendees can drop in and bring questions for Google engineers. View Office Hours schedule.


Alon Levi speaks on his App Engine session, From Spark Plug to Drive Train: Life of an App Engine Request.


At the Google Web Toolkit Fireside Chat - members of the GWT team listen to audience question.


Anybot struck up conversation and hung out with developers.


View of the Developer Sandbox from the escalator.


Enjoying a complimentary chair massage.


Developers crashed on bean bags, taking a break to check email and get some work done.


The Street View trike roamed the halls.


A developer pondering what to grab from the drink coolers, available throughout Level 2 for attendees to quench their thirst.


Developers enjoyed bins of chocolate covered raisins, M&Ms, pretzels, trail mix, and other goodies throughout the day.

To follow the latest at Google I/O, check out twitter and twazzup. Stay tuned for Day 2!

Bringing Visualizations One Step Closer to Developers

At Google, many teams use the Visualization API to create charts and visualizations of their data - both for external and internal products.

The Visualization API wire protocol has been made available publicly so that anyone can connect their data on the web to the list of powerful visualizations available (from Google and third parties) since late last year.

However, internal developers at Google had access to our complete code base for implementing data sources with full query capabilities and more. We felt that the whole web community should also enjoy the same benefit, so yesterday we released a full open source Java library that lets developers expose their data (publicly or to select users) for visualizations, charts and dashboards with a fraction of the effort required previously. This is the first complete free Java package for implementing a Visualization API data source - complete with a full implementation of the API's query language - and it joins our growing list of other tools and data source implementations by third parties and Google.

While we were at it, we also took the opportunity to bring our developer community many more goodies. Most notably:
  • We're launching new versions of the wire protocol and query language, including improved security features for sensitive data.
  • We're launching a generic image chart that provides access to all our popular Chart API's charts and their options through the simple but robust Visualization API JS interface (without the limitation on data quantity imposed on the Chart API URL length limitation).
Check out the full list of new stuff on our What's New page.

We will be reviewing the Java library and many of the new features in our sessions at Google I/O. If you can't make it be sure to check out our full documentation, where we will also post the videos from the sessions.

Introducing Google Web Elements

Inspired by the convenience of embeddable YouTube videos, Google Web Elements build on favorite products like Google Custom Search (a Google-powered search engine that automatically tailors itself to your site), Google Docs, and Google News to easily add richness and interactivity to your website with the simplicity of copy and paste. Each element is designed to help you get started quickly without spending time on the deep technical details. Yet behind it all, Google Web Elements are powered by Google's scalable and flexible developer APIs, offering a world of customization just beneath the surface, keeping up with your site as it grows.

Adding Google Web Elements to your website is as easy as visiting the homepage, choosing the ones you like, and customizing them to fit your page. For example, the News element adds headline news about the topics you choose to any page. Just go to the News element page and use the wizard to update the live preview as you change the topics and pick the best size for your site. When you like what you see, simply copy the short embed code and paste it into the HTML of your page.



The Conversation element, powered by Google Friend Connect, makes it easy to start a discussion about nearly any topic. Without writing a single line of code, you can add the Conversation element and visitors to your site can share comments and videos with each other. You can also choose to open the conversation up to the whole world, where every page discussing the same topic will participate in a truly global conversation.



The Conversation and News elements are just two of the Google Web Elements available today. Also available are Google Web Elements for Google Calendar, Google Custom Search, YouTube Video News, Google Maps, and more. To get started, visit the Google Web Elements homepage. and please be sure to let us know what you'd like to see us work on next.

Spreading the Word for a Fellow Blogger

Generally, I don't write posts like this, but this is one of those rare occasions where my own selfish need for self-aggrandizement feels less important.

You see, fellow blogger and multiple Transmundanity Award winner Becca from No Smoking in the Skullcave is having a little bit of difficulty getting the scratch together to get a booth at the Wizard World convention because of the current economic situation, and this convention is where she gets the greatest exposure for her artwork.

As someone who has creative ambitions as well, I can totally empathize with the bind she is in, and I want to do everything within my modest power to help.

Recently, she has started a commission drive to raise the funds necessary to attend the event, and I think this is a very good cause.

She has comics, she has prints and she is taking commissions for original artwork at very reasonable prices, and she does quality work. Just take a look at her color art portfolio site and see.

Now, I am not getting anything out of writing this post... I just know that as a fellow traveler in the pop culture blogging village, she needs a little help reaching this goal, which is why I am trying to spread the word.

Tuesday, May 26, 2009

Visualizing Your Cloud’s Data

This post is part of the Who's @ Google I/O, a series of blog posts that give a closer look at developers who'll be speaking or demoing at Google I/O. Today's post is a guest post written by Jesse Lorenz from Salesforce.com.

Many companies are storing their data in the cloud, and they are looking for ways to gain insight to this data. The Google Visualization API is a great way to do just that, which is why salesforce.com has built a set of Google Visualization components for Force.com. These components enable Force.com customers and partners to quickly embed sophisticated reporting and analysis functionality in to their Force.com applications. You can even use the Annotated Time Line visualization to visualize your sales progress:


The Google Visualization component project is one of the most popular projects on developer.force.com/codeshare. Force.com partners have already begun to leverage the components to build new business intelligence apps so that Force.com users can quickly generate reports and dashboards that provide them with new insight to their data.

If you’d like to learn more about embedding Google Visualizations into your Force.com applications, this tutorial is the best place to start. It contains a walk-through of how to get started as well as links to sample code for all of the supported components. The project is open source and everyone is encouraged to contribute!

Salesforce.com will be co-presenting a session at Google I/O that will discuss how to embed the power of the Google Visualization API in Force.com business applications, and how to turn a Force.com application in to a Google Visualization data source. We hope to see you there! To learn more about developing applications on Force.com, go to developer.force.com.

My Gaming Personality

Warning: This is a VERY geeky post.

Due to the fact that I have many, many games, there seems to be an assumption that I am a stellar player as well, when in fact, nothing could be further from the truth.

I am more of a clever player and not a particularly dexterous or coordinated one.... I admit it, and my record in online fragfests like Unreal Tournament proves that. I mean, when I played online, I tallied two wins out of hundreds of games, but I was a good team player in Capture the Flag and Assault-type maps, and I made things interesting in Last Man Standing games, so while I was never totally incompetent, I was never dominant either.

The thing that helped me realize this was a few of the thoughts that occurred to me before my copy of Guitar Hero II had arrived. The thing that I had noticed from all the videos of people playing the game was they are playing the notes with the left hand and strumming with their right, which seemed so ass-backwards to me. I mean, think of it this way... when you are playing a game with a normal PS2 controller, which hand is generally moving a little stick up and down and which hand is mostly concerned with pressing a series of colored buttons.



Exactly. And compare it to the GH controller.



I know that in real life, most people hold the guitar with their right hand strumming and left hand on the neck, but it is a game and not a real guitar... so I just said screw it, and went lefty flip from day one. I mean, logically, it makes sense, does it not? Why wouldn't you use your dominant hand to play the notes... and with that setting, the notes on screen correspond to the way you are holding the guitar, so, at least to me, it seemed like a winning concept.

And the idea of playing any particular mission/song/game to perfection is laughable to me. I am occasionally anal retentive about things, but in games, I am all about getting to the end. I might stop to pick up a few extra things along the way, but if I think the effort to get a particular item is too much, or the benefit really isn't worth it, I will skip it.

This also means that if it is between trying to do one of those specialized tasks in a game (like finishing missions without getting hit/100% shot accuracy etc), and just finishing the game, well, finishing is more important in most cases than those criteria to me. If I can perhaps go back and do those tasks on individual levels, then I might do it, but I am not the person you want advice from when it comes to that.

And with that in mind, I also tend to build/create characters that can take (and usually dish out) a lot of damage... whether it is Mechs (especially this), boxers or various other kinds of characters where you can make that kind of a decision, I've always went for heavier ordinance. I remember back in the PSX days when I built a boxer in Knockout Kings 2000 that was pure strength and I put all of that strength on his right side so when I fought, my lefts were like getting hit by a heavy pillow and my right uppercut was hilariously effective, with the thought being, I might not hit you every time, but when I did, whoever was on the receiving end of that shot would certainly feel it. And when I play Mech-based games, I always use the name Tanker, because really treads, lots of armor and some substantial firepower do sort of make me think of that kind of vehicle.

But I have noticed that I have let go of a lot of the stubbornness I had when I was a younger player. One particular instance stands out in my mind. I was playing Final Fantasy III (which was technically VI, but that is semantics really), and there is a certain location filled with Cultists which featured a boss that would cast a powerful magic spell and basically kill your entire party. Now there was an easy and clever way of avoiding that, but at the time, it didn't even occur to me... like equip ing an item or cast a spell that would auto-revive members of my party after that spell was cast.

So instead, I just grinded until my party had enough hit points to endure that spell and get through the battle largely intact. Which took a lot of work. Much more than it was worth really... but I did surmount that challenge in the most linear and some would say boring way... by sheer overpowering. And the upshot of that mistake in judgment was the rest of the game was a lot easier.

So, really I am not great, but I am not pitiable (at least in terms of my gaming skills). I am just sort of an average player really.

Transforming Your Calendar with LuckyCal and Google's APIs

This post is part of the Who's @ Google I/O, a series of blog posts that give a closer look at developers who'll be speaking or demoing at Google I/O. Today's post is a guest post written by Sanjay Vakil, founder of LuckyCal.

1.0 Introduction
LuckyCal is a new sort of calendar service that takes advantage of the web -- and about a dozen Google APIs. LuckyCal reinvents calendaring software by transforming calendars from staid repositories of information into a dynamic, anticipatory, interactive tools, making each appointment a search query and in the process changing your calendar into a concierge.

Ok, enough marketing speak! The real problem is that like anything really new and shiny, LuckyCal can can be a bit tricky to explain. The best we've been able to do is this video:



From a technical standpoint, LuckyCal subscribes to the calendars owned and published by its users and analyzes those calendars for time/date/interest information. LuckyCal uses the inferred location of the user to find events, friends, bands, and teams that are near where the user will be and which the user will find interesting. With this, LuckyCal publishes a new personalized calendar to which the user can subscribe which is full of "Lucky Events" based on the locations of the original events.

2.0 Google Calendar Data
Early iterations of LuckyCal used iCal and retrieved calendars from Google Calendar's "magic URLs". However, after some fits and starts, the team at LuckyCal switched over to using the Google Calendar Data APIs instead. We got several benefits from this: security, granularity, access to multiple calendars, repeating events and more.

Luckily, Google Calendar allows access to more of the "raw data" of the calendar. Each calendar has its own meta data and a collection of events. The calendars are represented via XML with a well-defined schema. Each individual event is also represented via XML. Using a secure mechanism (discussed later), LuckyCal can retrieve calendar and event data from the correct "feed", manipulate it, mine it, and then generate new events.

2.1 Recurring Event Feed
One of the most useful elements of using the Google Data APIs is the ability to access the same information through multiple feeds. Each feed provides a different view of the same data. While it is possible to get the native form of each event, it turns out to be much more useful allow the team at Google to do the heavy lifting to avoid some of the sharp edges of the calendars' API. In particular, one of the most useful capabilities is to avoid dealing with recurring events.

Recurring events are stored as a starting event with an "RRULE" which specifies when they are to be repeated. Unfortunately, the language that defines this repetition is baroque and difficult to understand. This is partly because it has to deal with many edge conditions: if the Geek Dad Dinner fell on Christmas, we'd probably cancel it. That exception -- that a specific instance was cancelled -- needs to captured as part of the recurring event.

Thankfully, the Google Calendar Data API "unrolls" repeating events, completely with exceptional and edge cases and then gives a view into this events for a given calendar based solely on a time range. The complex mess of recurring events is effectively hidden from the developer and we simply get a list of events that we know are occurring.

2.2 Creating new Events
As discussed earlier, LuckyCal creates new events for its users. These events are grouped together into a single new calendar so that they can easily be accessed and hidden and so that they do not detract from the primary calendar usage.

Creating new events is a good deal more difficult than reading a feed of existing events. Constructing a POST request that is correctly formatted and authenticated is tricky primarily because of escaping issues. Between the various escape characters that live in HTML, XML and the authentication encodings, it can be difficult to cleanly create an event which works.

Our advice is to start off with a simple, working example of simple text and slowly add complexity one step at a time: add a link, then an HREF, then a quotation, then an apostrophe and so forth. The reality is that there are many characters that end up having to be escaped and the majority of them will end up in the body of your events -- especially if those events are generated by your users.

3.0 Security
Calendar data is sensitive. Where/when people are going to be is intensively personal information. The body of events -- what you're doing there -- may be even more so. Google recognizes this and provides secure means to retrieve data and allows the user to maintain control over services that have access to their data.

Early on, LuckyCal used AuthSub to retrieve data. We've since superceded AuthSub with OAuth. The latter has the advantage of being more widely supported and of being the future of Google third-party authentication strategy.

Perhaps the most valuable characteristic of OAuth is that LuckyCal does not have to ask for -- or retain -- our users' Google Account passwords. Instead, we retain a LuckyCal-specific token which provides us access. Enabling developers to interact with Google Account information without having to convince users to trust us with their passwords is a huge advantage.

While there are a number of libraries available that implement OAuth for various languages, we ended up building our own version in Ruby. If you decide to attempt this, a useful tool to be aware of is the Google OAuth Playground which has recently been open-sourced.

4.0 Geocoding
LuckyCal works at the intersection of a Calendar -- time -- and the implied location of its users -- space. In order to find location information, LuckyCal uses Google's Geocoding facilities.

LuckyCal hands a textual description -- as found in the "where" fields in a calendar entry -- to the service and gets back a canonical name and latitude/longitude information. We also get back a measure of how accurate the information is: street, city, state, or country. This is critical to LuckyCal as it gives us a sense of whether the location is accurate enough to warrant trying to find nearby events for.

Another thing we've learned is that the Geocoder can easily get confused by extraneous information. As an example this address works perfectly:

"1600 Amphitheatre Parkway, Mountain View, CA"

But this one fails:

"Google at 1600 Amphitheatre Parkway, Mountain View, CA"

The latter is a completely reasonable example of what a user might enter in the "where" field, and it would be a shame not to be able to find that location. At LuckyCal we use some very simple algorithms to find addresses which are not canonical enough for the geocoder to recognize: we tokenize the address by spaces and commas and construct a set of new addresses that remove tokens from the front of the description until we have a match.

In this example, when "Google at 1600 Amphitheatre Parkway, Mountain View, CA" failed, we'd drop back to "at 1600 Amphitheatre Parkway, Mountain View, CA" which also fails, and then to "1600 Amphitheatre Parkway, Mountain View, CA" which succeeds.

This can lead to problems: removing the earlier section of an address can reduce its accuracy. We're lucky: LuckyCal only needs city-level accuracy.

5.0 Maps API
LuckyCal uses the Maps API to build the centerpiece of our web page showing our users what to do while they're on a trip.



Using a web-native client to view this information is wonderful -- we can render HTML directly in the info bubbles and allow users to interact exactly as they'd expect.

6.0 Conclusion
LuckyCal uses Google's APIs in a number of different ways to provide the best possible experience for our users. Given that our service pushes the envelope of what people expect calendars to do, it is gratifying to have access to a range of tools that streamline some portion of our efforts.

Monday, May 25, 2009

Sound Breeze!

During the warm season, the subtleties of local weather are to be savored, and none is more frequent than the Sound Breeze.

Official definition: the Sound Breeze is the northerly wind that develops during the midafternoon over the northern half of Puget Sound and which maintains itself until approximately 8-9PM. Over the central Sound the breeze can blow 15-20 knots, with less winds over land.

The sound breeze is important for everyone like to sail, fly kites, or bike home after work. Many an afternoon I have to bike right into it...slowing me down considerably. And it makes kite flying wonderful during the late afternoon at kites hills at Magnusson or Gas Work parks. And it is heaven for early evening sailors.

The Sound Breeze is really a big sea breeze circulation. Remember the sea breeze? Cool, ocean air moving towards the heated land during the day? In this case, we have the Strait of Juan de Fuca and Georgia Strait full of water and the Puget Sound basin mainly land. As the PS basin heats, the pressure falls and the northerly sea breezes pushes in.

Above are two maps of surface winds on May 23...one early in the day and the other at 4 PM. You can see a real strengthening of the northerly flow in time..the Sound Breeze in action.

Sunday, May 24, 2009

Sunday Video: The Beastles

Last week, I promised you another wonderful Beastie Boys related musical mashup, and this is it... a sublime combination of some beats and incidental lyrics from the Beastie Boys combined with A Day in the Life by the Beatles.



It is trippy and a little psychedelic, but I think it works just fine, don't you?

Saturday, May 23, 2009

No Weather



This is going to be an extraordinary weekend...dry, generally sunny, with temps in the lowlands around 70F. The satellite picture this morning showed some low clouds on the coast that pushed into the SW interior...but that will rapidly burn back (see image). Just to remind you of the rain, I have attached a plot of the average May rainfall (blue) and observed this month (red). Roughly double normal at Sea Tac.


A weak front will approach very late Monday..but that will not mess up the holiday weekend.

Watch for the Sound Breeze developing during the late afternoons...this is the northerly wind that blows southward into Puget Sound between 3 and 8 PM on warm summer afternoons. It is essentially a giant sea breeze between the interior of western WA (mostly land) and the waters of the Strait of Juan de Fuca and Georgia.