James Saiz : Blog James Saiz - 2005/12

James Saiz

journeyman of some

Blog James Saiz - 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 Saiz : 2005/12/30 : Categories quisition ajax : 0 trackbacks : 0 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 Saiz : 2005/12/29 : 0 trackbacks : 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 Saiz : 2005/12/26 : Categories Python open_source software_craftsmanship : 0 trackbacks : 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 Saiz : 2005/12/24 : 0 trackbacks : 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 Saiz : 2005/12/23 : 0 trackbacks : 1 comment (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 Saiz : 2005/12/10 : Categories quisition : 0 trackbacks : 6 comments (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 Saiz : 2005/12/07 : Categories photography : 0 trackbacks : 0 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 Saiz : 2005/12/07 : Categories quisition : 0 trackbacks : 0 comments (permalink)

Leonardo 0.7 beta 1 Released

The first beta of Leonardo 0.7 is now available at:


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

by James Saiz : 2005/12/06 : Categories leonardo Python announcements (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 Saiz : 2005/12/06 : Categories filmmaking : 0 trackbacks : 0 comments (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 Saiz : 2005/12/06 : Categories mac : 0 trackbacks : 0 comments (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 Saiz : 2005/12/05 : Categories quisition web_design : 0 trackbacks : 1 comment (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 Saiz : 2005/12/04 (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 Saiz : 2005/12/04 : Categories quisition : 0 trackbacks : 3 comments (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:

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 Saiz : 2005/12/03 : Categories babylon_5 filmmaking (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 :-)

2005/12/02 : Categories software_craftsmanship : 0 trackbacks : 5 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.

2005/12/02 : Categories music_theory : 0 trackbacks : 0 comments (permalink)

Content made available under a Creative Commons Attribution-NonCommercial-ShareAlike license