jtauber is currently certified at Master level.

Name: James Tauber
Member since: 2001-02-13 06:58:32
Last Login: 2008-11-18 03:53:13

FOAF RDF Share This

Homepage: http://jtauber.com/


I'm CTO at mValent and an original participant in the XML activity at the W3C. I wrote the first open source implementation of XSL-FOs, FOP (which I donated to Apache); started the first open source implementation of UDDI, jUDDI; a Python implementation of the XML schema language TREX, PyTREX; and am co-developer of Redfoot, an RDF application framework.

Email: jtauber@jtauber.com


Articles Posted by jtauber

Recent blog entries by jtauber

Syndication: RSS 2.0

Fixing Relative Links In Entries

Occasionally I hear from someone who finds the links in my entries are broken in their feed reader, especially if they are reading a syndicated version of my entries.

The reason is that I have relative links which are not being made absolute by the reader (or syndication code).

Many readers (such as Google Reader) treat relative links as being relative to the feed itself, so /blog/ gets converted to http://jtauber.com/blog/. But even if the reader does, this, that doesn't help with syndicated entries unless the syndicator does some processing. Some do but others don't.

There's nothing wrong with relative links in Atom content, but if you use them you really should have an xml:base attribute to help a reader deal with them properly. I've now updated all my entries to include an xml:base. I'll see how many planets and other syndications pass that through when placed on the entry. I wonder if the content element would be better.

In the process of making the change, though, I noticed my entry/link[@rel="alternative"] were also relative which is, I suspect, a no no. So I've made them absolute as well.

I'm going to do a little bit more experimentation, but things should work now. I may still have goofed up somewhere but I'm fairly confident now that if links are broken then it's either a bad reader or bad syndication involved. Either way, please let me know in a comment below if you encounter any problems here on in.

UPDATE 1: The atom feed of the unofficial planet python doesn't pass through the xml:base but it doesn't need to as it has made all links relative (and was doing so before my change)

Syndicated 2008-11-17 19:14:28 (Updated 2008-11-17 19:41:54) from James Tauber's Blog

Context Hierarchies in OmniFocus

I'm giving OmniFocus another chance after I found it didn't stick after I was a beta tester. I actually switched to Things for a while but that didn't stick either. Anyway, that's not actually what I wanted to blog about.

I want to talk about the use of hierarchy in contexts because I've just been reminded of one confusion I had during the beta. I should point out up front, this isn't really intended as a dig at OmniFocus specifically, more a general reflection on the nature of hierarchy and containment versus subsumption. Still with me?

OmniFocus supports GTD-style contexts such as @Online and @Email and also lets you group those contexts into a hierarchy so @Online and @Email can both be under a parent context @Computer.

As one might expect, the parent context subsumes its children. If you are @Online then you must also be @Computer, but you may be @Computer but not @Online (say while on a plane).

In light of this, the behaviour of OmniFocus is odd and almost the complete opposite of what one might expect (or want).

If you put an action in @Online it will appear not only when you set your current context to be @Online but also when you set your context to the more general @Computer. And if you put an action in @Computer, it will only appear if you are @Computer and not if you select the more specific @Online.

To me, this is completely backward. If I am @Online (and, by implication, therefore @Computer) then really I should have available to me @Computer actions as well as @Online actions. Similarly, if I wish to state I am @Computer (and therefore am either not @Online or am leaving whether or not I am unspecified) then I would not want to see those actions that require me specifically to be @Online.

The only conclusion one can draw is that the hierarchy of context in OmniFocus (or other similarly behaving GTD apps) is not about subsumption at all. If you make @A a parent of @B you are not in fact saying that @B implies @A or that @B is a special case of @A. If you use the hierarchy with that implication, it won't work at all. Instead, I think all you are saying is that @A is just a grouping of @B and other contexts you might, from time to time, want to look at together, and not a real context in its own right.

Of course, if you really want to model subsumption, you need a lattice, not a tree.

Syndicated 2008-11-17 01:51:30 (Updated 2008-11-17 01:57:24) from James Tauber's Blog

Half Time Report

We're just over half way through the month so I'd thought I'd give a quick review of how blogging month is going.

First of all, I've successfully written every day and I think I've managed to stick to the sort of stuff I would have blogged about anyway—posts no shorter than normal and no longer.

I've actually written 25 posts (not counting this one) which is appropriate given that the NaNoWriMo folks should be at 25,000 words around now.

At some point, I'll actually do a word count which should be pretty easy in Django :-)

Syndicated 2008-11-16 21:45:37 (Updated 2008-11-16 21:46:02) from James Tauber's Blog

Song Project: Adding Bass and Drums

Let's take the piano riff I previously wrote and add a bass line. This was entirely improvised but you'll hear it's very rhythmically similar to the left-hand of the piano part, even down to the 3+3+2 accents except in the third bar of four where 3+2+3 is suggested.

download if embed doesn't work

And now let's add the drums. I took a standard kick, snare and high-hat pattern that comes with Logic Pro and modified it to give a machine-gun rhythmic interplay between both high-hat and kick drum.

download if embed doesn't work

While the interplay between kick and high-hat makes for an interesting rhythm, we'll eventually want to vary it subtly throughout the song to keep things more interesting. We'll worry about that later, though.

Here's a combined version with piano, bass and drums:

download if embed doesn't work

Note that all tracks had some compression and EQ. In a later post I'll talk a bit about that.

Then we'll add a few more tracks before moving on to composing the chorus, putting together the overall song structure and, of course, adding the vocals.

All material for this project is made available under a Creative Commons BY-NC-SA license so you are free to redistribute and remix with attribution but under the same license and not commercially.

Syndicated 2008-11-16 21:17:02 (Updated 2008-11-16 21:17:03) from James Tauber's Blog

Category Feeds Available

I finally got around to doing something I've wanted to do for ages, only to discover it could be done in all of fifteen minutes. I'm talking about per-category feeds on jtauber.com

For over a year, my django-atompub has supported the parameterized feeds that django's built-in syndication feeds do but I never made use of them myself.

Fifteen minutes and roughly 20 lines of code later, the site now has a separate feed for each category. If you go to a page that is also a category, such as python or django or music theory or filmmaking or poincare project there will both be an extra feed advertised in the html head and a link from the "feed icon" after the list of "Pages in this category". So if you are only interested in a particular topic you can just subscribe to that (although I hope you don't—I did this more for topical aggregators)

One thing I always struggled with when thinking about category feeds before was how to handle subsumption relationships. If I put something in django should it automatically go in python? If in python then in some broader software category? or computing category? I certainly want to avoid the assumption of hierarchy (see some previous posts on that topic).

So for now I've left categories with no additional structure.

Syndicated 2008-11-15 03:06:02 (Updated 2008-11-15 03:06:03) from James Tauber's Blog

211 older entries...


jtauber certified others as follows:

  • jtauber certified jtauber as Journeyer
  • jtauber certified eikeon as Journeyer
  • jtauber certified camk as Journeyer
  • jtauber certified aceponkus as Journeyer
  • jtauber certified Ankh as Master
  • jtauber certified RoUS as Master
  • jtauber certified connolly as Master
  • jtauber certified alan as Master
  • jtauber certified Ward as Master
  • jtauber certified fdrake as Master
  • jtauber certified edd as Journeyer
  • jtauber certified jenglish as Journeyer
  • jtauber certified fielding as Master
  • jtauber certified jeremie as Master
  • jtauber certified stefano as Journeyer
  • jtauber certified esr as Master
  • jtauber certified rubys as Master
  • jtauber certified merlyn as Master
  • jtauber certified rms as Master
  • jtauber certified gstein as Master
  • jtauber certified dirkx as Master
  • jtauber certified aaronsw as Master
  • jtauber certified jonb as Journeyer
  • jtauber certified sviens as Journeyer

Others have certified jtauber as follows:

  • jtauber certified jtauber as Journeyer
  • eikeon certified jtauber as Journeyer
  • camk certified jtauber as Journeyer
  • highgeek certified jtauber as Journeyer
  • mtearle certified jtauber as Journeyer
  • yakk certified jtauber as Master
  • aceponkus certified jtauber as Master
  • Ankh certified jtauber as Master
  • jhermann certified jtauber as Journeyer
  • khoerling certified jtauber as Master
  • adolar certified jtauber as Journeyer
  • jao certified jtauber as Master
  • tschwall certified jtauber as Master
  • aaronsw certified jtauber as Journeyer
  • ldodds certified jtauber as Journeyer
  • connolly certified jtauber as Journeyer
  • grant certified jtauber as Journeyer
  • ruaok certified jtauber as Master
  • adulau certified jtauber as Master
  • ks certified jtauber as Journeyer
  • fxn certified jtauber as Master
  • her certified jtauber as Master
  • TheCorruptor certified jtauber as Master
  • simonstl certified jtauber as Master
  • nixnut certified jtauber as Master
  • badvogato certified jtauber as Journeyer
  • xmldoc certified jtauber as Master
  • vdv certified jtauber as Master
  • Uche certified jtauber as Master
  • jonb certified jtauber as Master
  • bdelacretaz certified jtauber as Master
  • rillian certified jtauber as Journeyer
  • splork certified jtauber as Journeyer
  • AlanShutko certified jtauber as Journeyer
  • sviens certified jtauber as Journeyer
  • sdrees certified jtauber as Master
  • derupe certified jtauber as Master
  • sonacsocietenatio certified jtauber as Master
  • mnot certified jtauber as Master

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page