Computers, Languages, Programming, Technology, XML

Handling regional variations in language learning

Warning, this post is long and rambling. You have been warned! 😛

Part of the design philosophy of my language learning app is to reuse as much as possible. This brings up an interesting issue regarding regional variations of languages (I’m talking mainly about somewhat standardised variations) and how much should be shared between them.

For example in Belgium, French is an official language. This is almost the same as French as spoken in France but with a few important differences. Firstly there are minor vocabulary variations (Belgian French has specific words for 70 and 90 for instance). There is also a lot of Flemish and Walloon vocabulary used in addition to the French vocabulary. Finally there are pronunciation differences but these seem no greater than differences in accent.

So, a course on Belgian French should be almost identical to a course on Standard French. The question is how to notate that in the script files the language app uses.

There are basically three ways I’ve come up with to cope with the situation, and I think I’ll support all of them since they have different advantages in different situations.

The first is to allow in line region specific phrases. So for the numbers in Belgian French, the standard French files would be used but any Belgian French sections would take priority.

The second is to have whole region specific files. Extra Belgian phrases not appearing in standard French would be in these and be loaded in addition to the standard French files. This is really an extension of the first.

The final case is no link at all. This would be needed for Chinese. The language code for Mandarin is “zh-guoyu” and the code for Cantonese “zh-yue”. In this case however there is no such spoken language with the code “zh” and therefore nothing to inherit from. This is an specific case of the first two where no parent language exists.

So far this has just been considering audio. The app already supports text and will eventually support text only lessons of some sort. The first method above could be using for spelling variations (when learning English “color” and “colour” could use the same audio while appearing differently on the screen). As more dramatic example Serbian could be taught using either the Cyrillic alphabet or the Latin alphabet with the codes “sr-cyrl” and “sr-latn” respectively. Or perhaps even both…

The final point I want to make regards the actual audio files themselves. Although it is true than most of spoken French is almost the same in Belgium and France, the accents are different and generally identifiable to French speakers. Therefore regional specific audio is desirable where possible. Since the script files and the audio are kept separate this is is possible with the language app. If the Belgian French audio exists that will be used, if not the standard French is used. That means that if a standard French course is created, an adequate Belgian French course can then be created with little effort but with the possibility of improving it later

Computers, Languages, Programming, Technology, XML

So much for Gtk#…

Well I’ve abandoned my plans to use Gtk# in the language app (which actually secretly has a name now).

The main reason for changing is simplicity. I had a look at the TreeView control in Gtk and decided it was too much work. Although the theory of good MVC separation is good, the user interface is such a small, simple part of my app it wasn’t worth it. The stuff I need from System.Windows.Forms should work in Mono (and .NET 1.1 and hopefully even the Compact Framework).

I still prefer the way Gtk handles layout of controls in general, but I console myself with the Windows form designer in Visual C# Express…

Computers, Languages, Macs, Programming, Technology

Language learning app is back on

The language learning app which I went on and on about a while ago is now under development again. When I say again I mean I started again in a completely different way (at least from a technical implementation point of view – the user experience is intended to be the same).

You see I recently started a large project in C# at work (a desktop app by the way, not ASP.NET) after saying I was somewhat familiar with it and it should be easy to learn. The good news is after two days I realise it actually is really easy to learn, providing you let it do the work for you. (To any programmers intending to learn it, you’ll spend most of your time at first not actually writing code but finding whereabouts in the huge class library the functionality already exists is. Once you get used to it and get the hang of how it works it is surprisingly relaxing.)

Despite all that I decided I still needed some practice in it so I came up with the idea of doing the language learning app as a fully fledged desktop application – although at work I’m using System.Windows.Forms I’m using Gtk# so it can hopefully run on Mono (and therefore Linux, Mac OS etc). The biggest problem I have is actually playing the audio. A quick search for “C# MP3” comes up with a solution based on MCI, some clever thing embedded in a Windows DLL that obviously won’t be cross platform. My workaround at the moment is just use an external program via the command line that I suppress the window of. If anybody knows of a better way that would work on .NET and Mono, let me know…

Mono, C#, .NET, language learning, Linux, Gtk, winforms, MP3, dot net

Computers, Technology

Brazilian PayPal Phishing

I recently got an PayPal phishing email. It looked like most of the others I get but I usually visit the page anyway just to see what’s there. This time I was surprised by the address:
paypal_account/limit-issues/index.htm A quick check on Wikipedia confirms that is reserved for Brazilian government entities and that is the official website of the state of Mato Grosso (site in in English).

Assuming that the phishing site isn’t actually authorised by someone in the Mato Grosso government I’d hoped they’d be more careful about what people with access to their system can put up…

phishing, PayPal, spoof, Brazil, Mato Grosso

Computers, Entertainment, Technology

Pluto Home

Pluto Home is the project that LinuxMCE is based on. They are essentially the same thing, the different is Pluto Home is supposed to be a black box application that takes over your computer (with the advantage of stability) whereas LinuxMCE is designed to coexist with everything else a little better. Pluto Home is also offered as a commercial solution preinstalled and configured (but the software itself is still open source).

To get more info on how it all worked I visited the Pluto Home forums.

It seems that MythTV isn’t as integrated into Pluto Home/LinuxMCE as I’d hoped, but it might not actually matter depending on how you use it. When you select TV, it just launches MythTV and puts it at the front. It then simulates key presses from whatever your current control method is (which could be a remote, a mouse or their Symbian software on a bluetooth mobile phone). If you can use MythWeb to set things to record (which is what I use with Myth most of the time) and then just use Pluto/LinuxMCE to view the recordings then minimal integration is not a problem since I’d never use MythFrontend…

Pluto Home, Linux, MythTV, LinuxMCE, MCE, media centre HTPC

Entertainment, Programming, Technology


Could this be the ultimate home entertainment system? There’s a video dotted around the Internet that firmly says yes but I strongly suggest that video is not your first source of information about LinuxMCE since its uber-fanboy nature will just annoy you.

It’s basically a wrapper for MythTV, Asterisk and a few other things brought together with a snazzy interface and user accounts. The third party reports I’ve read suggest it’s not as easy to setup as the website suggests, nor perfectly stable. But the list of features it claims to support (and hopefully will completely support soon) is quite amazing.

For more info, visit the LinuxMCE website.

LinuxMCE, PlutoHome, MythTV, Asterisk, HTPC, MCE, home entertainment, TV, DVR