Computers, Google, Languages, Programming, Technology

Google Docs rule – if you use them right

I’ve been vaguely using Google Docs (specifically Spreadsheets) since it came out but never to do anything actually important. Most of the time I just had a list I need sorting, or if I was feeling sophisticated I’d use it to decide on what was best value for money (how much £/GB a range of hard drives were for instance).

Recently I started using it to plan lessons for the language learning app. The ability to use it from work (or any other computer I might be on – including viewing it on my Nokia 770) was useful, but in the end I was only really writing a list with it. Until now.

I now have a nifty little C# app that generates modules directly from a Google Spreadsheet which is definitely a Good Thing. I’ve been thinking of writing an app for module editing for a while since writing them by hand is tiresome and error prone. Google Spreadsheets does half the work for me by providing the user interface for generating a table and then provides access as simple XML.

Which brings me to the matter of actually accessing the data. Google provide a client library in C# for accessing quite a lot of their API. I tried using it but found it a little confusing. Luckily since I was just wanting to query data, I discovered that raw access was actually easier. You simply make a GET request to
http://spreadsheets.google.com/feeds/worksheets/key/public/values (where key is provided to you when you “publish” a spreadsheet – access to unpublished spreadsheets requires authorization which is more complicated). This gives you an Atom feed of URLs to the individual worksheets which them contain Atom feeds of either rows or columns (your choice).

The query power of LINQ (along with XElement, XAttribute etc.) make transforming the feeds into modules really easy. In fact the code that does the hard work (takes a spreadsheet key and generates the XML) is only 102 lines long, and that’s including unnecessary spacing to make the LINQ more readable (the main LINQ query is 35 lines).

Computers, Languages, Programming, Technology

Rapid progress with language learning

Thought I’d offer a quick status update regarding the language learning app. After a short break I’m back at it. Appart from enough Finnish content to generate ten 15-minute lessons the biggest progress is outputting MP3 files. My original plan was just to output M3U playlists but it seems iTunes and therefore iPods don’t support M3U files (as far as I can tell iTunes can only create playlists of files in it’s library – who wants hundres of files in their library consisting of a few words each?).

The sample MP3s should be available “soon”…

Computers, Google, Languages, Technology

Google Custom Search – Language Learning

Google just launched a clever new custom search thing. The idea is for people to create their own “custom” search engines that automatically give weight to certain sites, restrict others and silently append search terms therefore improving accuracy for niche topics. For example imagine an ornithologist searching for “a pair of great tits”..

So, I’ve created an engine for finding language learning resources. And it’s surprisingly good.

Computers, Languages, PHP, Programming, Technology, Web Programming

How much fluff is needed?

I’ve been sorting out exactly what needs recording for the language app (which I finally have an idea for a name for) and I was trying to decide how much extra instructor speech is needed. Situations aren’t described for instance (no “Image an English man sitting next to a French woman”) and you aren’t asked to say things explicitly (“How do you ask someone if they speak English?”). Will this harm the process at all?

The best thing to do perhaps would be to avoid trying to be Pimsleur quite so exactly.