Computers, Programming, Technology, Web Programming

Amazon Mechanical Turk

It’s so crazy it just might work.

I heard about AMT a while ago and thought it looked cool. But not much was happening with it. Well now it’s beginning to take off more and it might be usable in my language app.

It’s essentially a work marketplace wrapped in a web service API. Your application creates a job request (called a Human Intelligence Task) which someone then completes with the result being sent back to your application. So far it’s commonly used for processing lots of small tasks (for example there’s one about verifying info about some restaurants that only pays $0.03 but there are over two thousand individual tasks available), but it can be used for anything.

The relevance is that it might be possible to get people to record audio for the language app through it.

Amazon Mechanical Turk.

Amazon, web services, Amazon Mechanical Turk

Computers, Programming, Technology, Web Programming, XML

Using XHTML, XSLT and XForms for Xemplorary performance

Alliteration and bad pun. Good start 🙂

One of the features the language app will need is some sort of module editor. Although the XML format of the scripts is straightforward to anyone used to hand editing HTML, a lot of other people will not have a clue. Therefore a WYSIWIG would be a cool addition. And lots of X’s may be the way to go.

Although XForm support in browsers isn’t exactly stellar, the fact that only script editors will require means that needing a plug-in or extension isn’t such a big thing. And I get brownie points for being Web 2.0 as well.

I’m going to assume you know what XForms and XSLT are. If you don’t, then go find out. I’ll probably explain in a future post, but for now just accept them as “cool” 😛

Basically a module is included directly into the XHTML source of the page. The only change is the addition of a namespace declaration (which are normally absent from the modules). XSLT is then used to add some nice formatting to the conversation along with XForm stuff for editing (including adding/removing elements). This makes the server side code really easy since the whole XML of the module gets posted back to the server.

In theory the XSLT shouldn’t be needed since XForms can do repeating and stuff. The only problem is I don’t think it can handle recursion which is a bit of a limitation.

There is one bit of the XSL that I’m stuck on there. I have the XML fragment in the head of the XHTML document. I need to be able to transform a copy of it and place it in the document body, but keep the original intact in the head. Does anyone have an XSL snippet to do that?

XForms, XSL, XSLT, Web2, Web 2.0, AJAX, HTML, XHTML, CSS

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

Almost ready for a public viewing

The still unnamed language learning app is almost ready for a first public viewing. I’m just trying to get some audio of some other than myself. Firstly because I don’t like really hearing my own voice (and for this purpose my less than perfect pronunciation is too obvious) and secondly I need at least two people just for it not to be confusing.

In the meantime I thought I’d share an example of the script file I’m using:


It primarily contains English translations although one phrase is done in a few more languages.

It does highlight one possible issue. I had to change the German ß to ss. Although Windows seems perfectly fine with Unicode file names (internally it uses Unicode for storage (either UCS2 or UTF-16 – not sure which)) PHP refuses to open them (fopen, file and file_exists for instance just don’t work) and Apache 2 seems to have issues as well. For German there are workarounds but for other languages it will get fiddly. This might not even be a problem on Linux where it will ultimately reside and it only affects file names which only have to give you a rough idea of what’s inside. But still, it’s annoying…

Pimsleur, German, Windows, Apache, Unicode, UTF-16

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

Best bits of the language app are done

The most important bits of my cool language learning web app are done. Here’s quick overview of how it works.

Everything is split into modules which are XML script files and accompanying audio files.

Currently one type of script is supported, a “conversation”. This contains a short (less than 10 sentences) conversation with sub elements all marked up in XML. Sub elements are phrases, terms and notes. At the moment phrases and terms are handled almost identically. Notes are little explanations or possible stumbling points (for example the test script I have alerts the listener to the difference in the ending between “Ich verstehe” and “Sie verstehen” in German).

Any element of a conversation that is to be repeated is named (literally – the XML tag is given a name attribute). The system keeps track of the number of times a name phrase/term is played to the user and when it was last played so the automatic repetition system can work.

A lesson is currently very simple. A module is loaded and the conversation is played straight through. Then the named phrases/terms are played* with translations. Then any phrases/terms scheduled for repetition are played*. The repetitions are actually determined before the conversation is played however so that if too many are required then no new conversation is played.

* Played in this case means a specific format. First the native version is played, then a pause, then the translation is played twice.

Pimsleur, German

Blogging, Computers, Technology

Linux is neither popular nor valuable

Controversial statement? Well that’s the point. There is a hilarious article over at about the traffic advantages of controversy on blogs.

The funniest part of course is the number of comments from people who read the title of the post but not the content and just threw a normal anti-anti Linux rant.

Unfortunately these things only work if you have a fair amount of traffic in the first place and I probably don’t quite qualify 😛

Linux, traffic, Linux sucks

Computers, Javascript, Programming, Technology, Web Programming

Audio in Linux

I’ve started writing the page to actually play the audio clips in my language learning app. At the moment it loads the Windows Media Play plug in. This obviously won’t work on Linux so I have to ask, how do you play media files in a web browser when not on Windows?

Flash would be the obvious answer I suppose but I have an uncommon requirement – I need to be able to access the object via Javascript. Specifically, I need to know when a track is finished and the next one begins (from a play list) and none of the freely available Flash media players do that.

Any advice from anyone?

Linux, audio, media, music, Flash

Computers, Entertainment, EVE Online, Games, MPOGs, Technology

Being a scientist in EVE Online

A large part of EVE Online is the player driven economy. Nearly everything can be crafted by players and then sold. To create items all you need is the materials and a blueprint. The blueprints are where the scientists come in.

Just to clarify, when I say scientists I mean R&D people.

R&D involves “working” with an NPC agent to produce Tech-2 blueprints. The way it’s implemented isn’t ideal but it certainly makes the Tech-2 blueprints rare. Basically once you start R&D with an agent you accumulate research points. Blueprints are awarded to players randomly in a lottery based on the number of research points you have. The better the agent, the more research points you accumulate. This means that while you’re waiting to train the skills it’s a good idea to do normal agent missions to increase your standing with the NPC’s corp.

Unfortunately the requirements are quite high. You need Science level 5 as well as specific science skill for the agent you want to work with (Quantum Physics for instance). Unfortunately every scientific skill requires another skill at level 5 (Electronics, Engineering, Mechanics for instance). And if you want to operate more than one agent you need Research Project Management which of course has it’s own requirements.

You can make your life easier by training your relevant learning skills to level 5 first. These are Learning (+2% to all attributes per level), Analytical Mind (+1 Intelligence per level) and Instant Recall (+1 Memory per level). Higher attributes make skills train faster. If you really want to go all the way (and have the ISK spare) each attribute has a second learning skill that does exactly the same thing, but takes longer to train and requires the previous skill at level 5 first (Eidetic Memory for instance).

Since I don’t have all of these I cant’ give you any more info yet. But stay tuned 😛