Displaying Events from Multiple Google Calendars in a Single Embedded Calendar View

Of all the things Google Calendar is good for, producing a single embedded calendar from a set of Google Calendars has not been one of them…

[Cue sideaways glance] Or so I thought…

In a flurry of activity earlier today, the Reverend posted this:

while I was admiring the new link to UMW Blogs on the UMW homepage, I clicked on the Events link, and to my surprise it was a Google calendar. Wow! Who knew? When looking at the source code, I released it was actually an aggregation of 10 different Google Calendars–all the more fascinating.

Jim went on: “I did a search for the term “UMW” through Google’s public calendars and found over 40” and the describes subscribing to the calendars, looking at them in the single aggregated view within Google Calendar itself, before hitting a problem: “Google won’t given me an embed code for the aggregation of all of the public calendars I subscribed to around UMW”

Err… rewind one moment… “When looking at the source code, I released it was actually an aggregation of 10 different Google Calendars“…?

This is what Jim saw but didn’t see:

Got it yet?

Take these two calendars, discovered by searching the Public Calendars in Google Calendar:
Snooker Championships Listing (some events are listed over the next four months or so).
Formula One Grand Prix listings for 2009 (the events start during March, 2009).

Now look through to March on this calendar: aggregated calendar view. It shows events from both calendars in the same view.

So what we have here is an aggregated calendar view that can be used to display several (that is, multiple) Google calendar feeds in a single view. To embed the calendar in your own page, just stick it in an iframe.

For each extra calendar feed, just add &src=CALENDAR_ID to the URL. The CALENDAR_ID will probably be of the form:
jabqnchvht5r2pjv0haqlg1j8s%40group.calendar.google.com

PS I did wonder whether I could add the aggregated calendar view as a single calendar to my Google Calendar. It seems not:

That is, it looks like each calendar feed will be added separately, rather than as a single, combined calendar.

But while that would have been a “nice to have”, the ability to display events from multiple Google calendars in a single calendar view in such a straightforward way is probably a big enough win anyway:-)

PPS aren’t comments wonderful (thanks Steve:-) – it seems thaqt you can generate the combined embed code within Google Calendar… Subscribe to the calenders you want to display, then go to the calendar settings:

Select the “Customise the color, size and other options” in the “Embed the Calendar” area:

And then select the calendars you want to include:

Simple:-)

Video, Video, Everywhere…

Now I know I live in the provinces, but I have to admit I had a huge dose of futureshock when I went up to London earlier this week: videos on the underground…

You know those big adverts on the wall opposite you on the tube, at the other side of the track – now they move, powered by magic lanterns in boxes suspended from the ceiling… (It’s called XTP, apparently: Cross-track projection.)

And that’s not all – how about the DEPs – Digital Escalator Panels?

There are also large LCD panels displaying video ads at other strategic locations, such as T-junctions, on various parts of the tube hall network…

The future – as portrayed in Blade Runner and Minority Report – is becoming a part of everyday life. The following movie, produced by CBS Outdoor, is called “Future of the Underground“. But what it describes appears to be the present…

Also on the video front, Google just got a little bit more aggressive in terms of grabbing video search traffic. Not content with already competing for second place behind Google web search itself in terms of search volume, embedded Youtube players now include a Youtube search box (you may have noticed…;-):

Youtube embedded player now with search box

If you paste the full Youtube embed code into your pages, then you can disable the display of the search box with the showsearch=0 embedded player parameter. (You can also disable the display of both related videos and the search bar by setting rel=0.)

However, if you are using WordPress, and embed movies using the construction, as I am, you’ll have to settle for whatever defaults WordPress chooses to embed…

I’m actually finding this so annoying that if the hosted WordPress folks don’t change the default embedded code to disable the search box, or they don’t provide me with the option to disable it, for example by using the construction [youtube=http://uk.youtube.com/watch?v=IrjsR6fdGxo&rel=0], I may well have to move blog again…

Visual Controls for Spreadsheets

Some time ago, Paul Walk remarked that “Yahoo Pipes [might] do for web development what the spreadsheet did for non-web development before it (Microsoft Excel has been described as the most widely used Integrated Development Environment)”. After seeing how Google spreadsheets could be used as part of quick online mashup at the recent Mashed Library, Paul revised this observation along the lines of “the online spreadsheet [might] do for web development what the spreadsheet did for non-web development before it”.

In An Ad Hoc Youtube Playlist Player Gadget, Via Google Spreadsheets, I showed how a Google gadget can be used as a container for arbitrary Javascript code that can be used to process the contents of one or more Google spreadsheet cells, which, combined with the ability to pull in XML content from a remote location into a spreadsheet in real time, suggests that there is a lot more life in the spreadsheet than one might previously have thought.

So in a spirit of “what if” I wonder whether there is an opportunity for spreadsheets to take the next step towards being a development platform for the web in the following ways:

  • by offering support for a visual controls API, (cf. the Google Visualization API) which would provide a set of visual controls – sliders, calendar widgets and so on – that could directly change the state of a spreadsheet cell. I don’t know if the Google spreadsheet gadgets have helper functions that already support the ability to write, or change, cell values, but the Google Gdata spreadsheet does support updates (e.g. updating cells and Updating rows). Just like the visualization API lets you visually chart the contents of a set of cells, a visual controls API could provide visual interfaces for writing and updating cell values. So if anyone from the Lazyweb is listening, any chance of a trivial demo showing how to use something like a YUI slider widget within a Google spreadsheet gadget to update a spreadsheet cell? Or maybe a video type, that would take the URL of a a media file, or the splash page URl for a video on something like Youtube, and automatically create a player/popup player for the video if you select it? Or similarly, an audio player for an MP3 file? Or a slideshow widget for a set of image file cells?
  • “Rich typed” cells; for example, Pamela Fox showed how to use a map gadget in Google spreadsheets to geocode some spreadsheet location cells (Geocoding with Google Spreadsheets (and Gadgets)), so how would it be if we could define a location type cell which actually had a couple of other cells associated with in “another dimension” that were automatically populated with latitude and longitude values, based on a geocoding of the location entered in to a “location type” cell?
  • “real cell relative” addressing; I don’t really know much about spreadsheets, so I don’t know whether such a facility already exists, but it is possible to “really relatively reference” one cell from another; for example, could I create a formula along the lines of ={-1,-1}*{-1,0} that would take a cell “left one and up one” ({-1, -1}) and multiply it by the contents of the cell “left one” {-1, 0})? So e.g. if i paste the formula into C3, it performs the calculation B2*B3?
  • Rich typed cells could go further, and automatically pop-up an appropriate visual control if the cell as typed that way? (e.g. as a “slider controlled value”, for example; and a date type cell might launch a calendar control when you try to edit it, for example?

PS for my thoughts on reinventing email, see Sending Wikimail Messages in Gmail ;-)

An Ad Hoc Youtube Playlist Player Gadget, Via Google Spreadsheets

A tweet from Keir Clarke from Google Maps Mania last week tipped me off to this post from maps evangelist Pamela Fox – Geocoding with Google Spreadsheets (and Gadgets) – in which she demonstrates how to improve the spreadsheets to maps workflow using a Google spreadsheet gadget.

I’d actually been thinking about using a mapplet in the maps environment, (rather than a gadget in the spreadsheets environment) to do something similar, so it was great to see how someone else had set about tackling the matter :-)

Anyway, a quick look through the spreadsheet gadgets tutorial convinced me it should be easy enough to create a gadget that could act as a video playlist player for a set of Youtube movie URLs listed in a spreadsheet. I already had some gadget code that I guessed may be reusable, and it turned out it was (Google Gadgets – RSS Feed Powered YouTube Playlist Player).

Here’s a demo:

Highlight the list of cells and include the custom gadget URL for the player: http://hosting.gmodules.com/ig/gadgets/file/100510412849522254945/videoPlaylistSpreadsheetNew.xml?nocache.

As to where the list of videos came from? I scraped them from a webpage that included lots of embedded videos (i.e. a webpage that was essentially an ad hoc video playlist). A quick peak at the source of a candidate page showed me where I could find the URLs:

If we now load this page in to a Google spreadsheet using the =importXML formula (not the =importHTML formula), we can use an XPATH expression to pull out all the movie URLs from the page.

Here’s the expression you need:
//object/param[@name=’movie’]/@value

For a couple of examples, see this how to scrape a list of Youtube movies from a webpage using Google spreadsheets and view them in a Google gadget.

Speedmash and Mashalong

Last week I attended the very enjoyable Mashed Library event, which was pulled together by Owen Stephens (review here).

My own contribution was in part a follow on to the APIs session I attended at CETIS08 – a quick demo of how to use Yahoo Pipes and Google spreadsheets as rapid mashing tools. I had intended to script what I was going to do quite carefully, but an extended dinner at Sagar (which I can heartily recommend:-) put paid to that, and the “script” I did put together just got left by the wayside…

However, I’ve started thinking that a proper demo session, lasting one to two hours, with 2-4 hrs playtime to follow, might be a Good Thing to do… (The timings would make for either a half day or full day session, with breaks etc.)

So just to scribble down a few thoughts and neologisms that cropped up last week, here’s what such an event might involve, drawing on cookery programmes to help guide the format:

Owen’s observation that the flavour of the Mashed Library hackathon was heavily influenced by the “presentations” was well made; and maybe why it’s worth trying to build a programme around pushing a certain small set of tools and APIs, effectively offering “micro-training” in them to start with, and then exploring their potential use in the hands-on sessions, makes sense? It might also mean we could get the tools’n’API providers to offer a bit of sponsorship, e.g. in terms of covering the catering costs?

So, whaddya think? Worth a try in the New Year? If you think it might work, prove your commitment by coming up with a T-shirt design for the event, were it to take place ;-)

PS hmm, all these cookery references remind me of the How Do I Cook? custom search engine. Have you tried searching it yet?

PPS I guess I should also point out the JISC Developer Happiness Days event that is booked for early next year. Have you signed up yet?;-)

So What Do You Think You’re Doing, Sonny?

A tweet from @benjamindyer alerted me to a trial being run in Portsmouth where “behavioural analytics” are being deployed on the city’s CCTV footage in order to “alert a CCTV operator to a potential crime in the making” (Portsmouth gets crime-predicting CCTV).

I have to say this reminded me a little, in equal measures, of Phillip Kerr’s A Philosophical Investigation, and the film Minority Report, both of which explore, in different ways, the idea of “precrime”, or at least, the likelihood of a crime occurring, although I suspect the behavioural video analysis still has some way to go before it is reliable…!

When I chased the “crime predicting CCTV” story a little, it took me to Smart CCTV, the company behind the system being used in Portsmouth.

And seeing those screenshots, I wondered – wouldn’t this make for a brilliant bit of digital storytelling, in which the story is a machine interpretation of life going on, presented via a series of automatically generated, behavioural analysis subtitles, as we follow an unlikely suspect via the CCTV network?

See also: CCTV hacked by video artists, Red Road, Video Number Plate Recognition (VNPR) systems, etc. etc.

PS if you live in Portsmouth, you might as well give up on the idea of privacy. For example, add in a bit of Path Intelligence, “the only automated measurement technology that can continuously monitor the path that your shoppers or passengers take” which is (or at least, was) running in Portsmouth’s Gunwharf Quays shopping area (Shops track customers via mobile phone), and, err, erm… who knows?!

PPS it’s just so easy to feed paranoia, isn’t it? Gullible Twitter users hand over their usernames and passwords – did you get your Twitterank yet?! ;-)

Steps Towards Making Augmented Reality a Reality?

I’ve been a fan of the potential of augmented reality for some time (see Introducing Augmented Reality – Blending Real and Digital Worlds for some examples why…) but there have so far always been a couple of major stumbling blocks in the way of actually playing with this stuff. One has been the need to download and install the AR application itself; the other has been to get a hard copy, or print out, of the registration images that are used as the base for the digital overlay.

So when I saw this demo of a browser based Flash Augmented Reality application (via TechCrunch), I realised that the application installation barrier could soon be about to crumble… (though there is still potentially a compute power issue – the image registration and tracking is computationally expensive, which means the Flash app is not yet as reliable as a compiled, downloaded application).

The issue of having to print out the registration image still remains, however.

[Cue sideways glance to camera, and TV presenter mode;-)] Or does it?

Because it struck me that I have a portable, programmable image service to hand – my iPod touch. So maybe I could just display the registration image on that, and show it to my laptop…

//interactive.digitalpictures.com.au/?p=392

(A copy of the registration image is at http://is.gd/9ABh if you want to give it a go. The application code itself can be found at FLARToolkit.)

It also strikes me that maybe training the AR package on an image shown in an actual iPhone would be another way to go – making use of the iPhone/iPod Touch itself to help frame the image? (My iPod touch has a well defined black border around the edge of the screen after all…)

So here then we have another way of using two media in sympathy with each other to enrich an act of communication (cf. Printing Out Online Course Materials With Embedded Movie Links and Dual View Media Channels).

Finally, browsing the comments in the TechCrunch post, I found this link demoing an ARToolkit app for the iPhone:

So it looks like a magic lens app for the iPhone might not be so far away?

And if you or a friend has a second large screen smartphone (or ebook reader) to hand, you can use it as “magic paper” to render any required registration image or set of images, as shown above!;-).

PS see also Wikitude (here), an Android app that will overlay a camera view with information about points of interest.

Are you keeping up with all this? I’m not…

PS see also AR virtual pet game for iPhone.