Towards Vendor Certification on the Open Web? Google Training Resources

Earlier this year, Google opened up a Google Apps Authorised Reseller programme (announcement) that encourages third parties to support, and sell, Google’s online applications.

For some time, I’ve been suggesting that there may be an opportunity for HE to start innovating in the area of open web and cloud app vendor certified training schemes (e.g. Google/Yahoo/Amazon Certified Professionals…) in the guise of IT professional development courses. (We already do something similar in the OU in the form of our “Cisco course”: T216 Cisco networking (CCNA), which wraps CIsco’s training materials with an additional layer of academic support and assessment; and the course TT381 Open Source Development Tools, which focusses on how to use CVS and LAMP stack. T320 Ebusiness technologies: foundations and practice looks at web services and APIs, I think, though I’m not sure of the extent to which it actually does (or should) provide ‘training’ in how to use actual third party APIs? )

So for example, I don’t find it too hard to imagine that we might rejig our web certificate courses to include an element of formal appraisal of how to use javascript frameworks such as JQuery, or YUI, or webservices from Amazon or PayPal, finessing the creation of vendor or foundation recognised ‘vendor qualifications’ along the way…

With Google just announcing that they are going to launch a “dedicated Google cloud for government customers in the US” (Google Apps and Government) I thought it might be timely to do a quick survey of the training materials that Google already provides, to see whether there was enough already in place for us to produce a quick wrapper and get a course launched.

Here’s what I found:

There are also various API libraries that don’t (yet) have training associated with them; e.g. Google visualisation API, (see a list of all the available Google Developer “products” here: Google Code: Site Directory), as well as things like the Google Code University.

For web-based, hands-on activities, these playgrounds could be really useful:

  • Google Code Playground – an interactive playspace for tinkering with Google APIs
  • KML Interactive Sampler – mess around with KML code and see how Google Earth treats it. (I notice that the Google Earth API is also available in the Google Code Playground… so maybe this sampler is deprecated?)

Google code playground http://code.google.com/apis/ajax/playground/

For more general user interface and javascript training, I’ve always found Yahoo to be pretty good… For example, there are plenty of resources on the Yahoo User Interface libraries site, and I’ve always thought that the Yahoo Design Patterns site would be a great resource for teaching web design. (There’s also the YUI Theater, which I’ve dipped in to from time to time…)

Just by the by, on the UI design front, the flickr Design Patterns collection is worth a look, as is UI Patterns; and Product Planner is a handy resource if you want to get into the right state of mind for thinking about user flows through a website.

PS as this post has largely turned into a round-up of Google stuff, it’s probably also worth adding these in: Google Research publications and Google Talks.

PPS if you like the interactive Google code editor, you might also like:

So My Boxee “Delicious TV” Hack Gets a Trademark Infringement Warning

So it seems that the naming of my delicious/Boxee TV hack infringes a Trademark…

All Art Media, Inc.
161 Fort Road
South Portland, ME 04106


7 September 2009

OUseful.info, The Blog
http://www.programmableweb.com/mashup/delicious-tv-for-boxee

Attention: Tony Hirst

RE:	Trademark Infringement

Dear Mr. Hirst:

[All Art Media, Inc. ] (the “Company”) owns and operates [Delicious TV].
The Company also owns trademarks associated with its business - find a
sample at DeliciousTV.com - [registered with the United States Patent and
Trademark Office with the registration number “U.S. Reg. No. 3,069,320,” 
(“Trademark”) registered on March 14, 2006.

It has come to our attention that your blog and websites, OUseful.info,
The Blog and Programmableweb.com, has been using our Trademark or a very
similar mark (“Infringing Trademark”) in association with the marketing,
sale, distribution or identification of its products and/or services, and
is thus trading on the name, goodwill and reputation earned by the
Company.  It is possible that you were unaware of this conflict and we
believe it is in our mutual interest to bring it to your attention and
resolve it.

Our Trademark provides us with certain proprietary rights, including the
right to monitor and restrict the unauthorized use of our Trademark, or
confusingly similar trademarks, in association with non-Company products
or services. We must exercise this right to protect the value of both our
Trademark and of our business. Our Trademark signifies the high quality of
products and services offered by the Company and indicates to our
customers and to the consuming public that all of our goods and/or
services come from a single source. As such, it contributes substantially
to the goodwill and value of the Company. Federal law supports our
position that confusingly similar trademarks may cause undesirable
confusion in the public. This confusion may in this instance cause
material and irreparable harm to our Trademark by eroding the distinct
association among our Trademark, our products and services, and the
Company. Your actions constitute trademark infringement and unfair
competition under both state and federal law, including the Lanham Act,
(15 U.S.C. §§ 1051-1127). Remedies for such infringement can include
payment of actual and treble damages, recovery of profits, reimbursement
of attorney’s fees, and may also include injunctions against your further
use of the Infringing Trademark and the seizure of infringing materials.

We respectfully request that you immediately discontinue any and all use
of the Infringing Trademark in association with the marketing, sale,
distribution, or identification of your products or services. Please
respond to us in writing by email within fourteen (14) calendar days
indicating that you will cease and desist from any and all further use of
our Trademark, the Infringing Trademark, or any confusingly similar
trademark. We hope this issue can be resolved civilly and that we can
avoid pursuing any further legal remedies.

This letter is not intended to be a full statement of the facts in this
matter, nor is it a waiver of our rights and remedies, whether at law or
equity, all of which are expressly reserved.

Sincerely,

Elizabeth Carson
President
161 Fort Road
South Portland, ME 04106
USA
207-871-8600
betsy@delicioustv.com


Executive Producer
Delicious TV's Totally Vegetarian
207-871-8600
www.delicioustv.com

Now, as far as the ProgrammablWeb goes, I don’t think I was registered/logged in when I submitted the hack, which means I can’t change any of the details there. But is it my responsiblity to now go round the web trying to clean up all mentions of Deli TV? If you have posted anything about, you know, that hack, please modify it along the lines of, I dunno, “Deli TV”.

Ho hum… Anyway – Deli TV, then? Or the “The DeliBox?”…? Which do you prefer?

Browser Use In Higher Education – A Brake on Innovation?

A couple of weeks ago, I set up a quick poll to try to get a feel for what sort of browsers were being used as the default browser on computers in UK universities. I provided a little bit of rationale in a post on the IWMW blog (What’s the default browser on your network?) but the main reason was to get a feel for what sorts of browser any #jiscri apps might have to contend with if we wanted our JISCRI project apps to ever get used in that default user context (which is the point, right?!;-)

Anyway, here are the results, such as they are:

Hmmm…. (See also this Quirks Mode post on why “IE6 will continue to exist when IE7 has all but disappeared”.)

After a bit of consultation with @josswinn, I’ve popped up a more elaborate questionnaire here: JISCRI “What do we have to cope with browser wise” survey, so if you’ve a couple of minutes to spare, we’d appreciate you filling it in… (or not – what do I care?!;-)

If you want to create your own reports of the data, feel free (for a quick how to on that, see: Creating Your Own Results Charts for Surveys Created with Google Forms)

PS note that this is not an ‘official’ JISCRI survey, nor is it posted as part of a JISCRI project. I just thought it might be useful, that’s all… ;-)

Pandering to the News Cycle, or Enriching It? (aka a roundabout palaver way of embedding OU podcasts in a WordPress blog)

Stephen Downes picked up on a recent post of mine (Guerrilla Education: Teaching and Learning at the Speed of News [OLDaily] with the response:

“[S]hould we as academics be engaging with the news cycle in order to deliver informal, opportunistic ‘teaching’ at the point of need?” My answer: no. Not when ‘need’ is defined as ‘powerful’ or ‘influential’. Because then it’s not teaching, it’s just lobbying, or worse, pandering.

Okay – so here’s slightly more worked out example of one of the approaches I have in mind. In the original post, I mentioned “[a] sleeper podcast from John Naughton [that] picked up significant amounts of traffic … from the 40th anniversary of the internet.”

Here’s what John wrote (The Internet at 40)

From ‘Hot News’ on the Apple site this morning:
The Internet turns 40, June 9, 2009
You’re so used to paying bills, getting your news and weather, and doing more and more of your purchasing online, you probably think the Internet has been around forever. But it hasn’t. As you’ll learn from this program on Open University, the Internet turns 40 this year. How did it get started? Where is it taking us next? Find out by listening to these Internet pioneers on iTunes U…
It seems that the recording of my interview is #4 in the top 100 downloads

(I would embed the podcast here – John links to the version of it on the OU podcast site – but the site doesn’t currently support embed codes. As this is a hosted WordPress blog, if it supportd custom OU flashplayer embed codes, that wouldn’t be much good either: WordPress is quite restricted in the embed codes it supports [that is: WordPress blogs hosted on WordPress.com are limited in what you can embed – self-hosted WordPress installations can be configured to let you embed what you like…]. (In a meeting last week, my question as to whether we should offer Youtube embed codes (which are accepted in WordPress) as well as OU podcast player codes was not met with much support… Which means if an OU player embed code had been available, I couldn’t have *easily* used it anyway…(The workaround would be to grab the OU embed code into Vodpod, which is accepted by WordPress…. which gives me an idea – I couldn’t get Vodpod to work with the OU podcast site, but it does work with the nascent UK HE Steeple Podcast Portal:-))

Vodpod videos no longer available.
So what I am suggesting, in part, is not that necessarily that we pander to the news cycle (what would that mean, anyway, pander to it?), but that we do make content available that allows news readers to learn more about a topic.

[Hmmm… it seems like this video has disappeared from the Steeple site… ho hum, must be a Steeple thing… will try to see if i can get Vodpod to embed directly from OU podcasts site if i get a chance, assuming the KMi folks don’t block it, of course….]

Another example might be come from the rise in interest in news media making raw data available. Surely there is an opportunity here for educational institutions to provide educational material that explains how news readers can engage with this data (and conversely, how educators might make use of such data)? (This is actually something I’ve been thinking about quite a lot lately…)

Argghhhh – time to go: day 2 of the Isle of Wight Festival beckons… I would have written more but got distracted by the embed sidetrack… ;-)

An Essential Part of My Workflow

A couple of days ago, on of those reminders about how reliant we are on various pieces of technology was forced upon me: Jing died on me….

For those of you who don’t know it, Jing is a screencapture/screencasting tool that is integrated with flickr (free version, for screenshots) and Youtube (pro version, for screencasts). It’s producd by Techsmith, who also publish the more comprehensive SnagIt and Camtasia tools, so the technical underpinnings of the app are excellent.

Anyway, I’ve been using the free version of Jing for what seems like forever, using it to grab screenshots at will and send them direct to flickr, then typically pasting the embed code that is magically popped into my clipboard directly into my WordPress editor. But I’ve decided that I really need to do more screencasts, and whilst Jing automates video uploads to screencast.com, I really wanted the ability to post screencasts direct to Youtube. So on Sunday I upgraded, and after a couple of battles getting the upgrade to take, uploaded a couple of test screencasts to Youtube, easy as anything.

And then, on Tuesday, late on Tuesday, at a time when Tuesday had bcome Wednesday and I really wanted to call an end to the day, save for finishijng off a post with a couple of screenshots, Jing died. Every time I restarted it, it claimed I was no longer a Pro user, and died.

So I reinstalled, and tried again. Same thing. Reboot my Mac, and try again. Still no joy, Crate a new, free account, and whenever I started Jing, it crashed.

Superstition kicked in and I blamed the upgrade, trying (maybe successfully, maybe not) to send a help request to Techsmith. (Finding the help was a nightmare, I think I had to create a new account on a help system somewhere along the way, and on posting a help email, I couldn’t tell whether it had been submitted or not.) The typical online help rigmarole, essentially. Even if you don’t start off angry, you’re likely to end up furious. (Plus I was really flagging by now and maybe not thinking as clearly as I might!)

A search on Twitter turned up a @techsmith account, and the contact details of someone at Camtasia, who I emailed. But it was passed days’ end, even in the US, so I went looking for an alternative. (I could of course have just used the Mac screengrab tools to do what I needed, and then uploaded the images to flickr using flock, but I was looking to punish to Camtasia by finding an alternative to Jing that worked just as well!)

In the end, I settled on Skitch, and it sort of worked okay, but it was nothing like as painless as Jing. For every screenshot I took, I just wanted Jing back…

…anyway, I picked up a friendly email from Techsmith yesterday saying there had been problems, and a tweeted prompt from Techsmith last night asking if Jing was now working for me again (it was/is). The problem, it seems, was at the Techsmith end, an issue that caused Jing on Mac Tiger to crash (I’m intrigued as to how a problem on the webservice end and kill an app running on the desktop? This is a harbinger of things to come more generally with web apps, maybe?)

So what do I take from this experience? Firstly, Jing is part of what I do, and it does just what it needs to for me. Secondly, without twitter I’d have had a really crap customer experience trying to understand what was going on (had something gone bad with my Pro upgrade? Was it a Jing problem or my problem? and so on..).

As it’s turned out, rather than writing a ranty post saying I’ve now changed my screencapture tool because of blah, blah, blah, if anyone asks what tool I use for screencaptures, I’d still say Jing. And from the ease of use in uploading screencaptured videos to Youtube, I’d also recommend the upgrade to Jing Pro if quick’n’easy raw screencasts are your thing.

A Glimpse of Work In Progress

Prompted by a couple of comments from @Josswinn to be more transparent (?!;-), here’s a glimpse into how I set about learning how to do something.

It potentially won’t make a lot of sense, but it’s typical of the sort of process I go through when I hack something together…

So, there’s usually an initiator:

Then there’s a look to see if there’s anything to play with that is on my current list of things I thing I’d like to, (or need to;-), know more about:

Hmm, ok… Google spreadsheets. I’ve just learned about how to write queries against Google spreadsheets using the visualisation API query language, so can I push that another step forward…? What don’t I know how to do that could be useful, and that I could try to demo in an app using this resource?

How about this: a web page that lets me pull the result out for a searched for by name university.

Hmm, what would that mean? A demo around a single subject, maybe, or should the user be able to specify the subject? The subject areas are listed, but how do get those in to a form? Copy the list of tab names from the spreadsheet? Hmm… Or how about entering the name of a single university and displaying the results for that HEI in each of the categories. That would also require me to find out how many sheets there were in the spreadsheet, and then interrogate each one…

Okay, so it’d be nice to be able to search for the results of a given university in a given subject area, or maybe even compare the results of two universities in a given subject area?

So to do that, do I need to learn how to do something new? If not, there’s no point, it’s just makework.

Well, I don’t know how to grab a list of worksheet names from a Google spreadsheet, so that’d be something I could learn… So how to do that?

Well, the query language only seems to work within a sheet, but there is a Google spreadsheets API I think? Let’s have a look: Google Spreadsheets APIs and Tools: Reference Guide. F**k it, why haven’t I looked at this before…?!

[Go there now – go on… have a look…]

Blah, blah, blah – ah: Spreadsheets query parameters reference. Quick scan… hmm, nothing obvious there about getting a list of worksheets. How about further up the page…?

Ah: “The worksheets metafeed lists all the worksheets within the spreadsheet identified by the specified key, along with the URIs for list and cells feeds for each worksheet”

I have no idea what the “list and cells feeds” means, but I’m not interested in that; “lists all the worksheets within the spreadsheet identified by the specified key” is what I want. Okay, so where’s a URL pattern I can crib?

http://spreadsheets.google.com/feeds/worksheets/key/visibility/projection

Scan down a bit looking for keywords “visibility” and “projection” (I’m guessing key is the spreadsheet key…). Okay, visibility public and projection basic just to check it works…

http://spreadsheets.google.com/feeds/worksheets/reBYenfrJHIRd4voZfiSmuw/public/basic

Okay, that works… No obvious way of getting the gid of the worksheet number though, unless maybe I count the items and number each one…? The order of worksheets in the feed looks to be the sheet order, so I just need to count them 0,1,2 etc from the top of the list to gd the worksheet gid. Ah, there could be an opportunity here to try out the YQL Execute in a pipe trick? After all, the demo for that was an indexer for feed items, and because the API is chucking out RSS I need to use something like a pipe anyway to get a JSON version I can pull into my web page.

Hmmm, what else is there on the docs page? “alt, start-index, max-results Supported in all feed types. ” I wonder? Does alt stand for alternative formats maybe? Let’s try adding ?&alt=json to the URL – it may work, or it may relate to something completely other…. [Success] heh heh :-) Okay, so that means I don’t need the pipe?

What else – anything that could be useful in the future? Hmm, seems like the Spreadsheets API actually supports queries too? So e.g. I can run a query to see if there is a sheet that contains “geo” maybe?

http://spreadsheets.google.com/feeds/worksheets/reBYenfrJHIRd4voZfiSmuw/public/basic?title=geo

Okay – lots of other query stuff there; remember that for another day…

So: to recap, the above process took maybe 10-15 mins and went from:

– initiator: see a tweet;
– follow-up: look at the resource;
– question: is there something I could do with that data that I don’t know how to do?
– question refined: how about I pull out a list of the worksheets from the spreadsheet, and use that in e.g. a drop down box so students can choose a subject area from a list, then search for one, or compare two, HEIs in that subject area. I don’t know how to get the list, and I’m not sure about the best way of comparing two items, so I’ll probably learn something useful.
– solution finding: check out the Google spreadsheets API documentation; (If that had failed, I’d have done a blogsearch along the lines of ‘feed list worksheets google spreadsheet’
– plan: err, okay, the plan is a form that pulls a list of worksheets from the HEI spreadsheet via JSON, indexes each one to give me the worksheet gid number (this is a possibly flakey step? Could I index the spreadsheet by name?) then builds a query on that worksheet using an input from one or more text boxes containing the name of HEIs (or maybe a single text box with comma separated HEI names?)

Normally I’d have then spent up to an hour messing around with this (it is (working) lunchtime i.e. playtime after all), but instead I spent forty five mins writing this blog post… which means there is no demo…:-(

Scripting Charts WIth GraphViz – Hierarchies; and a Question of Attitude

A couple of weeks ago, my other was finishing off corrections to her PhD thesis. The layout of one of the diagrams – a simple hierarchy written originally using the Draw tools in an old versioof MS-Word – had gone wrong, so in the final hours before the final printing session, I offered to recreate it.

Not being a draughtsman, of course I decided to script the diagram, using GraphVIz:

The labels are added to the nodes using the GraphViz label command, such as:

n7[label="Trait SE"];

The edges are defined in the normal way:

n4->n8;
n4->n9;

But there was a problem – in the above figure, two nodes are placed by the GraphvViz layout in the wrong place – the requirement was that the high and low nodes were ordered according to their parents, and as, indeed, they had been ordered in the GraphViz dot file.

A bit of digging turned up a fix, though:

graph [ ordering="out" ];

is a switch that forces GraphViz to place the nodes in a left-to-right fashion in the order in which they are declared.

During the digging, I also found the following type of construct

{rank=same;ordering=out;n8;n9;n10;n11;n12;n13;n14;n15

which will force a set of nodes to be positioned along the same horizontal row. Whilst I didn’t need it for the simple graph I was plotting, I can see this being a useful thing to know.

There are a few more things, though, that i want to point out about this whole exercise.

Firstly, I now tend to assume that I probably should be able to script a diagram, rather than have to draw it. (See also, for example, Writing Diagrams, RESTful Image Generation – When Text Just Won’t Do and Progressive Enhancement – Some Examples.)

Secondly, when the layout “went wrong”, I assumed there’d be a fix – and set about searching for it – and indeed found it, (along with another possibly useful trick along the way).

This second point is an attitudinal thing; knowing an amount of programming, I know that most of the things I want to do most of the time are probably possible because they the exactly the sorts of problems are likely to crop up again and again, and as such solutions are likely to have been coded in, or workarounds found. I assume my problem is nothing special, and I look for the answer; and often find it.

This whole attitude thing is getting to be a big bugbear of mine. Take a lot of the mashups that I post here on OUseful.info. They are generally intended not to be one off solutions. This blog is my notebook, so I use it to record “how to” stuff. And a lot of the posts are contrived to demonstrate minimally worked examples of how to do various things.

So for example, in a recent workshop I demonstrated the Last Week’s Football Reports from the Guardian Content Store API (with a little dash of SPARQL).

Now to me, this is a mashup that shows how to :

– construct a relative date limited query on the Guardian content API;
– create a media RSS feed from the result;
– identify a convention in the Guardian copy that essentially let me finesse metadata from a free text field;
– create a SPARQL query over dbpedia and use the result to annotate each result from the Guardian content API;
– create a geoRSS feed from the result that could be plotted directly on a map.

Now I appreciate that no-one in the (techie) workshop had brought a laptop, and so couldn’t really see inside the pipe (the room layout was poor, the projection screen small, my presentation completely unprepared etc etc), but even so, the discounting of the mashup as “but no-one would want to do anything with football match reviews” was…. typical.

So here’s an issue I’ve some to notice more and more. A lot of people see things literally. I look at the football match review pipe and I see it as giving me a worked example of how to create a SPARQL query in a Yahoo pipe, for example (as well as a whole load of other things, even down to how to construct a complex string, and a host of other tiny little building blocks, as well as how to string them together).

Take GraphViz as another example. I see a GraphViz file as a way of rapidly scripting and laying out diagrams using a representation that can accommodate change. It is possible to view source and correct a typo in a node label, whereas it might not be so easy to see how to do that in a jpg or gif.

“Yes but”, now comes the response, “yes, but: an average person won’t be able to use GraphViz to draw a [complicated] diagram”. Which is where my attitude problem comes in again:

1) most people don’t draw complicated diagrams anyway, ever. A hierarchical diagram with maybe 3 layers and 7 or 8 nodes would be as much as they’d ever draw; and if it was more complicated, most people wouldn’t be able to do it in Microsoft Word anyway… I.e. they wouldn’t be able to draw a presentable diagram anyway…

2) even if writing a simple script is too hard, there are already drag and drop drop interfaces that allow the construction of GraphViz drawings that can then be tidied up by the layout engine.

So where am I at? I’m going to have a a big rethink about presenting workshops (good job I got rejected from presenting at the OU’s internal conference, then…) to try to help people to see past the literal and to the deeper truth of mashup recipes, and try to find ways of helping others shift their attitude to see technology as an enabler.

And I also need a response to the retort that “it won’t work for complicated examples” along the lines of: a) you may be right; but b) most people don’t want to do the complicated things anyway…