PoCo::MessageQueue version 0.2.0 released!

We reached a huge milestone this week, with the release of PoCo::MessageQueue version 0.2.0.  It is primarily a refactor engineered by Paul Driver.  Here is the change log:

  • Massive refactor:
    • Built on Moose.
    • Any storage engine can be a front-store.
    • Callback passing (versus old static method).
  • Storage::Complex:
    • Treat the front store like a cache.
    • Separate 'granularity' parameter.
  • Storage::Throttled:
    • Can claim and retrieve messages for improved performance.
  • Comprehensive unit-test suite.

For the future, Paul's already working on some interesting things:

  • Remote storage engines.
  • CouchDB store.
  • Clustered MQs.

Rock!

Its all in the algorithm, baby.

Last Wednesday, I was discussing learning and spaced repetition with a co-worker. A couple good things came out of this conversation.

Firstly, that I should blog more. This inspired me to finish up an introductory article on spaced repetition that I had been working on for Memorati™. I also decided to try and make Tuesday be blog-day. Since I spend so much time writing each entry, Tuesday will really just be blog-publish-day, but thats fine, whatever gets me to post more.

We also discussed my experience using Memorati with its algorithms and some things that have been unsatisfying about them. Those things are:

  • The aggressiveness of the algorithm used should vary with the number of cards a user has decided to tackle. Aggressive algorithms work better for lots of cards but less aggressive is better for fewer cards.

Polish Update

I meant to write about this weeks ago! But it slipped my mind. Anyway, I finished reading the first Harry Potter book. I didn't reach my goal of pages to translate, but that never mattered anyway. I reached page 223 and I was shooting for page 250.

I've already started reading the 2nd book, but the audio book which I ordered from Empik hasn't arrived in the mail yet and I'm worried it may have gotten lost. Usually, I buy all my Polsh books/audio-books from one of the great Polish bookstores in Chicago (Polonia, Quo Vadis), which is how I got the paper book right away. Anyway, for some reason I can't find a local bookstore that has the audiobook for the 2nd one, even though they've got the 1st, 3rd, 4th, etc... So I had to order that from Poland.

Lately… Wikitools and URLs.

Lately I've been trying to get The Lingwo Project's website online.  Its been going good, but I've been churning on the wiki for awhile now.  I am using the wikitools and pearwiki_filter modules.  Mainly, I want each wiki page to only be referred to by a single URL but in my current scheme it gets numerous slight variations.  This morning I posted a "Feature Request" describing the problem in detail.

Why the web?

Developing for the web sucks.  Things that should be easy are very hard.  It is alot like developing embedded applications in a very restricted environment with random, non-sensical limitations, only worse!  Worse, because its really like developing for several such ever-changing environments at once.

So, why do it?  Why subject yourself to that torture?  On the desktop, you have basically limitless capabilities with relative ease.  Its not as much of a moving target.  The easy things (with the right tools) are damn easy.

Well, when I put on my user hat, I love web applications.  I know that opinion isn't universal.  A lot of people still prefer desktop applications.  But a truly well crafted web-application, is for me, a joy to use.  And I love the open web.  Its a hyperlinking, cross-platform, mash-up-able free-for-all.

To summarize, I want to build applications that I would want to use.

Favorite Mozilla Bug

While I have Mozilla bugs on the brain, I figured I'd post my current favorite.  I periodically browse over to it to check on its progress.  Its a patch to add support for the HTML5 <video> tag:

https://bugzilla.mozilla.org/show_bug.cgi?id=382267

According to the comments yesterday from the author, he's going to provide an updated version soon!

Firefox 3 beta 4

Firefox 3 beta 4 was just released!  I started testing beta 3 last month, but encountered what was a show-stopping bug for me:

https://bugzilla.mozilla.org/show_bug.cgi?id=417321

When I ran beta 4, it told me that I needed a greater-than 2.10 version of Gtk+.  My distro (Debian Etch) has only 2.8.20.  So, still wanting to take it out for a drive, I compiled and installed Gtk 2.12.6.  Et voila!  Beta 4 worked without my previous problem!

That got me thinking... Maybe the problem was that I had with beta 3 was just a result of a too low Gtk+.  So, I tried running Beta 3 against the newer libraries and ... the problem wasn't there!

Thats when I discovered this in Bugzilla:

https://bugzilla.mozilla.org/show_bug.cgi?id=418885

Audio recording on the web

One of the things I want to include in Memorati™, is the ability to record audio snippets to attach to flash cards. I've been thinking about this for a long time now. There are basically two parts to the problem:

  1. Getting permission to record from the clients microphone.
  2. Encoding the audio so it is small enough to send over the network.

Memorati revamp live! (and dijit.Dialog update)

Finally, the Memorati™ revamp is live! Now that the ground work is laid, expect lots of new community functionality! I'm also going to be begin setting up The Lingwo™ Project website so that I can begin separating the commercial and open source aspects of Memorati as I described earlier.

To follow-up on my dijit.Dialog comments (and here!), I ended-up abandoning my fork. I decided that the original positioning algorithm was acceptable, so my changes have simply boiled-down to:

// so I can use dialog.addChild(...)
dojo.extend(dijit.Dialog, dijit._Container.prototype);

// Called after first showing the dialog, to disable the ability to move it
dialog._moveable.destroy();

Stewardship and naming

So far, I haven't had much luck building a community around Memorati™. The Drupal make-over will help bring more community features to the site and this should help. Which also makes this an opportune time to make any big changes, while, essentially, no one cares...

Right now, Memorati attempts to be three things:

  • A free public website which hosts an online flash card program.
  • A piece of open source software implementing this online flash card program.
  • A community effort for maintaining the program.

But as I mentioned a few months ago, I also want to find a way to monetize Memorati this year. That means that it would be a commercial venture too. Now thats probably a few things to many.

So, sometime after the new Memorati site goes live, I'm going to be making some changes, which I will describe below. First, however, I would like to define some terms:

Syndicate content