James Tauber

journeyman of some

blog > 2005 >

James Tauber's Blog 2005/12

XML Declaration Required for UTF-8 AJAX

Jenni was adding some non-ASCII cards to her local Quisition instance and it wasn't working. The browser, Safari, was getting the wrong encoding.

Strangely, manually telling Safari the encoding didn't help. I suspected culprit might be AJAX as the problem was with content loaded asynchronously.

Sure enough, after being thrown off by a couple of red herrings, I found that the response to XMLHttpRequest, at least on Safari, requires an XML Declaration with encoding="utf-8" even though, according to the XML TR, it shouldn't.

by James Tauber : Created on Dec. 30, 2005 : Last modified Dec. 30, 2005 : Categories quisition ajax : 2 comments (permalink)

Summer of Code T-Shirt

When I got back from Brunei, there was a notice from DHL saying a parcel delivery had been attempted but no one was home. I wasn't expecting a parcel while I was away.

The notice had a waybill number so I entered that in on the DHL website and, while it didn't give me the sender, it did give me the city of origin: Redwood City, CA.

I hadn't ordered anything from a company in Redwood City.

So I rang DHL. The package was from Google.

I went and picked it up from the depot and it was a Summer of Code t-shirt to thank me for my participation this year as a mentor.

Cool that it arrived in time for summer here :-)

by James Tauber : Created on Dec. 30, 2005 : Last modified Dec. 30, 2005 : 0 comments (permalink)

Contributing to Open Source Python Projects

Adudzik asks on 43things:

As a smart and enthusiastic beginner, where should I look for good open source projects, preferably in Python?

While it's possible to find open source projects being done in Python on SourceForge and listed on FreshMeat, what would benefit people like Adudzik, in my opinion, is being apprenticed to a willing project lead. Sort of like the Summer of Code but longer term and restricted to existing projects (and presumably with less chance of monetary payment). SourceForge and FreshMeat don't really indicate which projects would be willing to take on an apprentice.

So perhaps python.org could run a directory of open source python projects that would be willing to take on an apprentice.

I'd certainly be willing to take on an apprentice or two on a number of my projects such as Leonardo, pyso or Cleese.

As I've written elsewhere:

I believe writing software is a craft. I also believe that writing code is something well suited to an apprentice-journeyman-master model particularly when applied in an open source context.

So ultimately I'd love to see virtual schools under a master with a number of journeymen and apprentices. Apprentices work on projects mostly under the direction of the journeymen. The journeymen have more responsibility on projects and start their own projects under the direction of the master. Eventually, a journeyman presents a released piece of software as his or her "masterpiece" and is declared by some loose collection of masters (a guild) as a new master. This guild would also be responsible for the recruitment of new apprentices.

That's my larger vision but just having a directory of projects willing to take on an apprentice would be a good start.

Any other thoughts?

by James Tauber : Created on Dec. 26, 2005 : Last modified Dec. 26, 2005 : Categories python software_craftsmanship open_source : 2 comments (permalink)

Congratulations Bowstreet

Congratulations to the investors and employees of Bowstreet on the acquisition of their company by IBM.

Bowstreet, where I worked from mid 1999 to early 2002, was a wonderful experience for me. Without Bowstreet, there would be no mValent.

by James Tauber : Created on Dec. 24, 2005 : Last modified Dec. 24, 2005 : 2 comments (permalink)

Back After Vacation

If you're wondering why I haven't blogged for two weeks, it's because I've been on vacation.

My parents, sisters and HB went to Brunei, where my family lived from 1982-1986. Besides relaxing at the hotel and doing what little sight-seeing there is, we visited my old house, school, etc.

It's a strange experience going back to a place after 20 years; especially when the last time was as a child. Some scenes brought back memories; others I had to really struggle with to match up with my memories (because of changes; not faulty memory)

I'll probably post some photos soon - perhaps even some then and now photos.

by James Tauber : Created on Dec. 24, 2005 : Last modified Dec. 24, 2005 : 0 comments (permalink)

Short-Term Testing in Quisition

When using physical flash cards I use two distinct methods for determining which subset of cards to test myself on in a particular session and what happens when I get a card right or wrong. I'm implementing the same system online for Quisition.

The first is what I call short-term testing.

It applies only to the current pile being learnt (as opposed to older ones being reviewed) and I try to keep this to around 10 cards. I try to do this a couple of times a day and it usually only takes a few minutes.

I go through the pile testing myself on each one and putting them into a right pile or wrong pile. If there are no cards in the wrong pile, I'm done. However if there are, I go through the wrong pile again. If I get it right it goes in the right pile but if I get it wrong again it goes back in the wrong pile. I keep repeating this until the wrong pile is empty. Then I repeat the whole process again.

So there are, in effect, two while loops, the outer while loop testing (or retesting) all cards and the inner loop retesting the cards got wrong.

Note that the results of the short-term test don't need to be persisted. For this reason, I've implemented it entirely client-side in Javascript for Quisition.

I'll put up a demo short-term test in the next few weeks for people to try out. Subscribe to the announcement feed on the Quisition website to find out when it's available.

UPDATE (2006-01-21): Now see the demo.

by James Tauber : Created on Dec. 10, 2005 : Last modified Jan. 21, 2006 : Categories quisition : 4 comments (permalink)

Scalability and Uptime for Quisition

I've been thinking a lot about how to scale Quisition, the online flashcard site I'm working on in my "copious spare time".

Flashcard testing isn't a critical app but, given one of the features of Quisition will be its scheduling of what cards to review on which day, it's fairly important to users that the site is available daily.

Scaling I can mitigate somewhat by the number of users. I've been thinking my goal should be get 100 very happy users and then worry about the infrastructure to support 1000.

Given I'm thinking about these sorts of things, it was interesting to read Don't Scale: 99.999% uptime is for Wal-Mart at Signal vs Noise. In particular, this quote is a nice confirmation of my current attitude:

Before you have users, it’s a waste of time ensuring that they can always get to the service

Some interesting comments have been made on the Signal vs Noise post. Thoughts welcome here too.

by James Tauber : Created on Dec. 7, 2005 : Last modified Dec. 7, 2005 : Categories quisition : 1 comment (permalink)

Aperture Arrives, 50mm Prime On Its Way

Apple's Aperture arrived today, just two days after I read the damning review on ArsTechnica.

I have yet to try it out but I did notice that the box features a close up of a 50mm f/1.4 lens. Coincidently, I just ordered Canon's EF 50mm f/1.4 lens yesterday.

I've been eyeing the 50mm for a while as my first prime lens. I'll be using it on my 10D although I'd really like a 5D which has a full-size sensor.

by James Tauber : Created on Dec. 6, 2005 : Last modified Dec. 6, 2005 : Categories photography : 0 comments (permalink)

DPs Seeing Red

A company simply called RED is tantalising digital cinematographers with their promise on an otherwise information-scarce website of a 2540p camera based on a full frame 4K CMOS.

That's as much a resolution increase over 1080-line HD as 1080-line HD is over standard definition.

by James Tauber : Created on Dec. 6, 2005 : Last modified Dec. 6, 2005 : Categories filmmaking : 1 comment (permalink)

iMac Back Home

I got my iMac back today after three weeks.

I'm happy with the AppleCentre store that did the repairs but still very frustrated that Apple doesn't let them keep spare power supplies in stock (and then takes 2 weeks to ship them).

by James Tauber : Created on Dec. 6, 2005 : Last modified Dec. 6, 2005 : Categories mac : 0 comments (permalink)

Leonardo 0.7 beta 1 Released

The first beta of Leonardo 0.7 is now available at:

http://jtauber.com/2005/leonardo/leonardo-0.7b1.tgz

Leonardo is an extensible content management system written in Python and initially focused on providing for personal websites with a password-protected wiki and blog (including Atom feed).

Changes Since 0.6.x

  • support for Atom 1.0
  • pages now record their author which is displayed on the page, in blog lists and atom feeds
  • there is now a provider which lists blog months
  • it is now possible to update a page or its properties without the last modified changing
  • comments can be deleted if logged in
  • formatting of comments is improved by translating newlines to br
  • the main page template is now in LFS
  • home page link is now part of menu rather than template to give user more control
  • subtitle is now completely formatted in page template to give user more control
  • copyright_holder changed to general rights statement
  • switched from using shelve to pickle (shelve was causing problems for people moving between different systems with different anydbm implementations)
  • fixed bug where question mark in permalink wasn't getting escaped
  • removed stray ) in draft template causing malformed html
  • delete page no longer has duplicate headings
  • template files now have provider name in the filename
  • leonardo library now in Python package to avoid name clashes

by James Tauber : Created on Dec. 6, 2005 : Last modified Dec. 6, 2005 : Categories python announcements leonardo : (permalink)

IE6 Transparent PNG Bug

I was just showing a friend the Quisition website on their machine (Windows XP with IE6) and noticed the background is non-white.

I vaguely remember reading about IE6 having a problem with transparent PNGs but until now it hasn't been something I've needed to worry about.

I guess the solution is to go back to Illustrator CS2 and make a white background version.

by James Tauber : Created on Dec. 5, 2005 : Last modified Dec. 5, 2005 : Categories quisition web_design : 12 comments (permalink)

Quisition: An Online Flashcard System

I've previously mentioned that I'm working on a web-based flashcard system. Well I've decided I'm going to try to make a website out of it.

I've given it the name Quisition because it's all about acquisition through inquisition. I've registered the domain quisition.com.

Nothing to see there yet, but there is an atom feed you can subscribe to to get announcements.

Well, there's also a little logo I designed for the site :-)

Over the next month, I'll probably put up some info about how it all works along with some screen shots.

Then, some time in Q1, I'll launch a limited beta to get feedback and gauge interest.

by James Tauber : Created on Dec. 4, 2005 : Last modified Dec. 4, 2005 : Categories quisition : 3 comments (permalink)

Upgrading This Site to Leonardo 0.7 Beta Candidate

I'm about to upgrade this site to what will (assuming all goes well) then be released as Leonardo 0.7b1.

Apologies if anything breaks.

UPDATE: Looks like it worked!

by James Tauber : Created on Dec. 4, 2005 : Last modified Dec. 4, 2005 : (permalink)

Babylon 5 Scripts

JMS is releasing his Babylon 5 scripts with notes as a 14-volume series over the next year.

Besides being an absolutely thrill for someone like me who's a fan both of B5 and the making of films and episodic television in general, the project is interesting in some other ways too:

  • it's essentially a self-published print-on-demand effort via Cafe Press
  • they are being released a volume at a time and the first week a volume is out it's 25% off
  • there's a bonus 15th volume available only to people who buy all 14 previous volumes.

Amongst other things, the 15th volume will answer the decade-old question: "What would Babylon 5 have been like had Sinclair stayed?"

First two volumes are out. Discount on the second ends today.

And so it begins...

by James Tauber : Created on Dec. 2, 2005 : Last modified Dec. 2, 2005 : Categories filmmaking babylon_5 : (permalink)

Revisting Versioned Literate Programming

Greg Wilson asks about incremental display of source code.

His example shows somewhat the kind of thing I was thinking when I wrote about versioned literate aspect-oriented programming where I said that I'd like a literate programming tool for writing tutorials...

I could write a web and then tangle it to generate the [...] application and weave it to get the tutorial. But as features are incrementally added to the application over the course of the tutorial, conventional literate programming might not be enough. At the very least, some kind of versioning would need to be included.

Greg is talking more about animated display online using Javascript but from an authoring perspective, I think we're looking for a similar tool. Greg's example is really nice for demonstrating how code gets developed at certain insertion points. That starts to touch on the aspected-oriented element I was thinking of (although there are no cross-cutting concerns in his simple case)

Back in March 2004 when I wrote my original post, Dave Long commented:

Literate programming is composing a program source by pasting together a dag of (smaller) chunks.

Versioning, however, is composing a program source by pasting together a list of (sequential) edits.

The former is primarily spatial, and the latter primarily temporal, so it may not be too difficult to keep the two from interfering.

Heck; use the versioning capability to expand chunks in the appropriate environment of a configuration tree, and one would have self-documenting CM.

One thing that occurs to me is that the versioning in what I'm talking about isn't exactly the same kind of versioning you normally do with something like Subversion. It's not about keeping a history, it's about creating a history, so there'd be nothing wrong with going back and changing earlier versions.

I'm still wondering if anyone has built something like this. I haven't had the time :-)

by James Tauber : Created on Dec. 2, 2005 : Last modified Dec. 2, 2005 : Categories software_craftsmanship : 4 comments (permalink)

The Naming of Musical Notes, Part III

In the next few parts, I'll talk about things using a made-up naming system to make it clearer what's going on with note names.

Let's start off by naming the 12 ascending notes within the octave in 12-ET with numbers in angled brackets:

<1> <2> <3> <4> <5> <6> <7> <8> <9> <10> <11> <12>

We'll call these the absolute note names. Notice that this gets us around the problem of which enharmonic spelling to use when talking about a note in isolation.

Now a major scale starting on <1> would consist of the following notes:

<1> <3> <5> <6> <8> <10> <12>

A major scale starting on <3> would consist of the following notes:

<3> <5> <7> <8> <10> <12> <2'>

If we want to refer to individual notes within the major scale regardless of where we start, we can use a different naming. Let's use curly braces to distinguish that type of name:

{1} {2} {3} {4} {5} {6} {7}

Let's call these the relative note names.

The correspondences in our <1>-major scale would be:

<1> <2> <3> <4> <5> <6> <7> <8> <9> <10> <11> <12> {1} {2} {3} {4} {5} {6} {7}

The correspondences in our <3>-major scale would be:

<1> <2> <3> <4> <5> <6> <7> <8> <9> <10> <11> <12> <1'> <2'> ... {1} {2} {3} {4} {5} {6} {7}

Notice that the absolute meaning of {5} depends on the key. In a <1>-major key it's <8> and in a <3>-major key it's <10>.

Notice also that some absolute notes don't have relative note names (or have them in one key but not another. We can overcome this limitation in the relative note naming system by using + to mean one (absolute) note above and - to mean one (absolute) note below.

So <9> could be expressed as either {5+} or {6-} in a <1>-major key and as either {4+} or {5-} in a <3>-major key.

In the next part, we'll continue to use this notation to explain some of the subtleties of note naming in Western music, including what we observed in parts I and II.

by James Tauber : Created on Dec. 2, 2005 : Last modified Dec. 2, 2005 : Categories music_theory : 1 comment (permalink)