Project announcement: Vocabulary trainer

This year I followed a course in Spanish. Ever since I was a kid, when I had to study, I invented ways to not have to study. When learning a new language, what better excuse could I find than to develop a vocabulary trainer? 🙂
This is how the voctrainer project got started on the eve of the first semestrial exams. It was very basic and non-functional for other people, but at least I felt I didn’t entirely waste my study time. 😉 After the exams, development stalled but at the end of the year, once again, I managed to program instead of study. I believe it is now in a usable state, at least, when you know how to use it. 😉

Let me explain the purpose of this program and why I couldn’t just use existing soft.

First of all, it doesn’t replace existing soft (in my world: Parley and KWordQuiz) but rather supplements it. Parley is my preferred vocabulary trainer so I use it to enter my words and train in dedicated mode. Dedicated training takes time and requires you to focus and not do anything else. Wouldn’t it be cool if you could train your vocabulary during the day while working or eating or on your cell phone while watching tv? It’s what I like to call “passive learning”. =)

This is where voctrainer comes in. It is a small light-weight tool dedicated to training (no entry/grading) without requiring your dedicated time. 😉
Currently, its main features are:

  • Kvtml format: use the vocabularies you created in Parley/KWordquiz. Only the enabled (with a checkbox) ones are trained.
  • Automatic mode: cycles through your word list using configurable time delays, no interaction needed. Put it in a corner of your screen.
  • Popup option: useful when you want to be welcomed by a new word every hour/day, for example. Good to keep you in the game during holidays.
  • Manual mode: go through your word list at your own pace using mouse/keyboard, optionally skipping solutions.
  • Auto font size: useful when you put it full screen so you can still read it from a large distance while cooking/eating/doing the dishes..
  • Written in Qt: runs on all platforms without loads of dependencies (like KDE)
  • Lean and mean: you should be able to run it off your smartphone (didn’t try this scenario, since I don’t own a smartphone yet 😉 ) Uses QXmlStreamReader for fast yet memory conservative parsing.

Currently, configuration is done through the config file (located in $HOME/.config/Mattiesworld) but a gui dialog is coming. I also plan on supporting 2 configurable profiles: normal and fullscreen.

VocTrainer is open source and still fully in development over at gitorious.

VocTrainer

more wii plots

So after all today’s hard work, still some time for a bit wiimote fiddling 😉
I extended my test app to show the raw accelerometer data.


wiimote accelerometer data

A few words about what is which graph and the color coding:
The left graph shows the same as 2 days ago, except, I switched the colors to remember the meaning more easily. 😉 Red is for Roll =) and blue is the pitch. These data are calculated by the wiiuse library.
The right graph shows the raw accelerometer data. It is simply showing the x (red), y (green) and z (blue) component of the acceleration vector.

The experiment here shows 2 rolls to the left (and return), followed by 2 translations to the left. One could argue that a translation to the left, from the accelerometer’s viewpoint, is just the same as a roll, since both are changing the gravitation vector temporarily in a similar way. I’d say there still seems to be a difference.. 🙂

Paul, I’m open for discussion 😉

Wiimote experiment

Okay, so I finally got to it. A few months ago I bought a wiimote to play a bit with the api’s floating on the net. It was until yesterday that I actually tried a driver, and since that seemed to work okay, I decided to give it a try myself. My simple goal, being an app plotting the raw inputs. However, it took me a 2 hours more than expected (1 =)) and also a lot more blood, sweat and tears. 😉 particularly because I made a lot of mistakes due to me being too tired 😉 So I will keep it short for now as I want to go to sleep.

I choose the wiiuse library as it seemed adequate for the job and still active (and even cross platform!). I started from the included example and tried to wrap it into a Qt app (hence I named it example-qt ;)). The obvious choice for drawing is using QGraphicsView. However, for once ;), I took the effort to see if there are no existing Qt graph plotting libraries. And this just happens to be the case. 🙂 Meet the excellent QWT lib. It couldn’t be more fit for the job. The site is (almost) nothing but the api docs, but that seemed sufficient. One second I thought this lib would not be qt4 ready, but it has been ported!

Quite a few seconds and segfaults later 😉 I got this:
wii experiment

Nothing fancy, but it does show the roll and pitch!! =)

Note: the wiimote survived the experiment 😉

KTvTune 0.2

This version fixes an important crash bug when trying to make multiple recordings in the same session. I never do that, that’s why it was still in there for the 0.1 release 😉

New addition is the ability for timed recordings which you can specify either by duration or by end time (see screenshot). Next logical step is to be able to schedule a timed recording.

KTvTune 0.2

Download at kde-apps.org

KTvTune v0.1

Yes, the versioning has begun 🙂 This week I realised it’s silly to put programs like this one online, but it’s also silly to keep it for myself while maybe some other poor pvr150 soul could be blessed by it. =) So, in finding a way to put it online, I thought I’d put it on kde-apps.org. Great site. But it also comes with some “discipline”. I have to state what it already does (aka keep a changelog) and what it doesn’t (oops, where’s the consistency?), give it a version, make at least some source distribution and in return I’ll probably get dumped a sh_tload of crap on my head for producing such a silly program. But in any case, I’ll have a free hosting and advertising for it. =) 😉

So in preparation, I’m making this post to wrap up a 0.1 release.

What’s changed?
I don’t remember actually =) 29 nov has been some time.. mm, let’s browse some cvs logs

  • configurable player startup delay on record to allow some buffering on disk, otherwise the player bails out on an empty file
  • debug flag so that people are not disturbed by testing UI elements 😉
  • add / delete channels (besides editing ;))
  • put everything in a kdevelop project (proj started using eclipse, but after all the crashes I simply used a console, until now)

some screenshots to close:


KTvTune channel edit mode
channel editing mode

ktvtune icon
my magnificent svg skillz in action for ktvtune icon 😉

Channel list reordering

Finally implemented this one (got tired of having to scroll/search every time I want to switch between Kanaal2 and VT4 😉 ). Instead of providing a separate setup dialog for rearranging channels I just added an editing mode to the default gui. I also got rid of my sorting proxy model which makes the model more simple yet less flexible. I think it is still flexible enough and that the previous level of flexibility was overkill. 😉 The screenshot is on windows with fake data. 🙂 Somehow my application icon got lost in the conversion. It’s crappy (programmer’s art) anyway. 😉

KTvTune channel list editing mode

Roadmap / planned features

I wrote a few points down as a way to structure my thoughts. It was never really intended to publish as a road map, but publishing gives everyone an idea where this project is heading. 🙂

This is a list of things I see being implemented by version 1.0. The order in the list also approximately reflects the order of implementation as basic features seem to correspond to easy implementation. 🙂 (aside from the fact that almost everything in this app is quite trivial ;))

  1. channel setup
    • import from xawtv
    • start from europe-west defaults
    • reordering
  2. simple tuning
    • sequential tuning with mouse wheel
    • direct select with keypad, visually and physically
    • direct select with list; this is channel editor without editing func 🙂
  3. configurable commands
    • for viewing, recording, playing..
  4. recording
    • configurable rec path
    • scheduled recording with at
    • on the fly recording by streaming the video to file and starting a player on the output file
    • time shifting: same as above, but start paused player 🙂
    • somehow use vlc’s save stream option somewhere..?
  5. playback of recorded movies
    • show list using the configurable rec path
  6. transcoding
    • show list of all recordings using the the configurable rec path
    • save long lasting recordings as mpeg4 to conserve space
    • use transcode 😉

tuning trouble

I used to borrow a friend’s Hauppauge WinTV card (bt878 chipset) for tv viewing until I finally bought my own Hauppauge WinTV PVR 150 . I went for the PVR series as I figured recording would be much more convient (pvr series comes with a hardware MPEG2 encoder).

In the past I had used the brooktree wintv card under linux which was really a joy since it worked out of the box along with all available soft (after trying xawtv, motv, (whatever-)tv, tvtime, etc.. I settled with KdeTV (formerly kwintv)). It even seemed the card was better supported under linux than under windows. I figured the pvr series would be supported as well as it seemed to be a fairly popular card for HTPCs. Which turned out to be slightly nuanced. 🙂
Continue reading tuning trouble