Computers, Programming, Technology

LINQ is magical

The secretly named language learning app has been revamped to use LINQ for most of the XML handling. For those that don’t know, LINQ is a new technology that provides querying functionality in the .NET world.

In my case I’m using LINQ to XML and it has seriously cut down on the size of the heaviest methods. Also, the part of LINQ to XML that I found least interesting when I read about it is actually the part I’ve found the best – the new XDocument API.

Anyway, LINQ combined with a new USB headset that provides some actually quite good audio means that the important fundamental features have been implemented and work. At the moment it can:

  • Generate lessons based on vocabulary1 modules
  • Generate lessons containing past content with the correct repetition timing.
  • Actually play the lessons (but only on Windows2)

There are a few more things I want to add before I release any of it (like more audio for a start). But I thought I’d at least point out development is still happening :o)

1Instead of the Conversation > Phrase > Term style of Pimsleur I’ve decided to go for a more freeform approach to start with (inspired by me listening to Michel Thomas again). A vocabulary module just contains list of words and phrases that are processed in order.
2I still need a cross platform way to play audio. At the moment I use MCI which is part of winmm.dll which is obviously Windows only. Although Wine has apparently implemented it almost completely but I’m not sure how I’d go about making that help me.

Computers, Technology, Windows

Wine Is Not an Emulator

After my post about ReactOS I felt I should mention Wine.

Wine has similar goals to ReactOS, namely to give users the ability to run Windows applications without buying Windows, but goes about it in a different way. Wine is an implementation of the Windows API designed to run in Linux. This seems like a better approach since a lot of the features of an operating system which have to be implemented by ReactOS already exist in Linux. And of course it can run native Linux apps too.

Since it isn’t an emulator, applications theoretically run at the same speed, but the fact that all the library code has been written from scratch this is rarely the case. Contrary to popular belief regarding Microsoft’s ability to write “good code”, much of the stuff underlying Windows is quite well optimised and being so new, some of the stuff in Wine isn’t. Although in a random twist you can apparently get certain random apps to run faster because the Wine team happen to have written that bit of code better.

Even so, it’s still a viable alternative in some situations.

PS. One of the stranger ideas the have is running Wine under Cygwin (a compact implementation of many Linux APIs) on Windows.