James Tauber's Blog 2007/02
Median Age of the World's Population
The other day I was wondering if I'd hit the age where there were as many people younger than me in the world as older than me.
In other words, I wondered what the median age of the world's population is. Yesterday, I was talking to our Chief Marketing Officer about it and we decided to look it up.
Turns out I passed it five years ago. The median age is 28.
The source is the United Nations Department of Economic and Social Affairs/Population Division in their World Population Prospects.
by James Tauber : Created on Feb. 28, 2007 : Last modified Feb. 28, 2007 : Categories human_development : 2 comments (permalink)
My Next Camera?
The Canon EOS-1D Mk III (via) is due out in a couple of months. I'm very tempted to start saving for it.
I confess I was a little disappointed it's not full-frame but the other specs are amazing.
by James Tauber : Created on Feb. 25, 2007 : Last modified Feb. 25, 2007 : Categories photography : 2 comments (permalink)
PyCon Web Panel
The web panel went well. Rather than me trying to remember what I, or anyone else said, I direct you to James Bennett's excellent notes.
by James Tauber : Created on Feb. 23, 2007 : Last modified Feb. 23, 2007 : Categories python pycon : 0 comments (permalink)
One Laptop Per Child, Python (and Cleese)
I'm sitting in the plenary at PyCon where Ivan Krstic is giving an amazing talk about the One Laptop Per Child project.
Even though the laptops run Linux, most of the "operating system", including things like the filesystem, are written in Python. In fact, the goal is to write absolutely as much as possible of the operating system in Python.
Sounds like the Cleese vision has been fulfilled in a way I never could have imagined!
by James Tauber : Created on Feb. 23, 2007 : Last modified Feb. 23, 2007 : Categories python pycon olpc cleese : 2 comments (permalink)
Off to PyCon
In just over an hour I'll be heading off to Logan airport to catch a flight to Dallas for PyCon.
I'm staying at the Courtyard Dallas Addison/Quorum Drive. I won't be arriving there until after 11pm but, if you're around, email me.
by James Tauber : Created on Feb. 22, 2007 : Last modified Feb. 22, 2007 : Categories python pycon : 0 comments (permalink)
Economics, Computational Neuroscience and Differential Geometry
What do economics, computational neuroscience and differential geometry have in common?
Well, besides all being interests of mine, they also all happen to be the three topics in the PyCon session on science applications I just volunteered to chair. When I saw the topics and that they didn't have a chair, how could I resist?!
It will be on next Saturday afternoon and I'm looking forward to it a lot!
by James Tauber : Created on Feb. 17, 2007 : Last modified Feb. 17, 2007 : Categories python pycon : 0 comments (permalink)
Cats or Dogs After One Week
- 89,584 hits
- 2,495 unique IPs
- 2,533 sessions
- 40,470 questions asked
- 648 questions submitted
- 116 visible at the moment
- 6,696 different pairings of questions
- 32 del.icio.us bookmarks
Random interesting computer-related result:
People who prefer reddit to digg are 2.4 times more likely to prefer PostgreSQL to MySQL but people who prefer digg to reddit are 2.2 times more likely to prefer MySQL to PostgreSQL.
Random interesting non-computer-related result:
People who prefer Obama to Hillary are 6.0 times more likely to prefer letterbox to full screen but people who prefer Hillary to Obama are 50% more likely to prefer full screen to letterbox.
by James Tauber : Created on Feb. 16, 2007 : Last modified Feb. 16, 2007 : Categories cats_or_dogs : 1 comment (permalink)
Google Code Project Hosting
I've been playing around with Google Code Project Hosting for one of my smaller projects and it's pretty impressive. Project Hosting basically provides file downloads, a wiki, issue tracking and subversion.
The issue tracking is tag-based but with a little bit of structure to the tag to allow the tags to act like values of arbitrary fields. So far, this works well—probably the simplest way to get extensibility I've seen in an issue tracking system.
It does miss some features that I really like from Trac. There isn't an equivalent to the timeline to see project activity. There's no way to browse different versions of files or do diffs. Hopefully these features will be added in the future.
I'm not necessarily ready to move all my self-hosted projects there, but I'd certainly chose Google Code Project Hosting over SourceForge in an instant.
However, there is one major annoyance. Project Hosting requires you to have a GMail account, not just any old Google Account. This by itself would not be a problem, but it uses the Google Account system for authentication. So to use Project Hosting, you have to log into Google Accounts with your GMail address. This is very annoying if you use other Google services under a non-GMail Google Account. I find myself constantly having to sign out and sign in again, sometimes even just switching between browser tabs that are open on different services provided by Google.
by James Tauber : Created on Feb. 15, 2007 : Last modified Feb. 15, 2007 : Categories software_craftsmanship : 0 comments (permalink)
Added Chi-Squared to Cats or Dogs
I added a calculation of chi-squared to Cats or Dogs. This gives it a certain statistical honesty at the expense of some of the fun (because most of the funny results the site generates are not statistically significant and you are now told that). Nevertheless, some of the results are still surprising.
by James Tauber : Created on Feb. 10, 2007 : Last modified Feb. 10, 2007 : Categories cats_or_dogs : 2 comments (permalink)
Introducing Cats or Dogs
Okay, just under four hours later, here it is...
Have fun! I look forward to the results.
by James Tauber : Created on Feb. 9, 2007 : Last modified Feb. 11, 2007 : Categories cats_or_dogs : 12 comments (permalink)
New Little Site Coming Soon
A few years ago, I read about a phenomenon that I always wanted to test for myself, but I could never work out how.
Well, tonight, over dinner, I came up with an idea for a fun little website that would test for said phenomenon and also a bunch of other interesting stuff.
So armed with half a bottle of Coke Zero and a can of Red Bull, I'm going to spend this evening coding it up.
What is it? Well, you'll just have to wait a few hours and see :-)
by James Tauber : Created on Feb. 9, 2007 : Last modified Feb. 9, 2007 : Categories cats_or_dogs : 2 comments (permalink)
Yahoo Pipes and Reading Plans
Congratulations to the team behind Yahoo Pipes. As I've said to a lot of people recently, I still think Yahoo is a very exciting company to watch.
One thing I'd like to see possible with Pipes, which I couldn't work out how to do in the 10 minutes I played with it, is reading plans of the sort I described back in a post in 2004.
I've thought about reading plans like this for the Poincare Project. Basically, each reader gets a feed specific to their start date which, starting from the beginning, just adds a new item at some set interval, either daily or weekly.
Recently it occurred to me that this would also work for things like running plans as well (the "5K in 5 weeks" sort of thing).
So the pipe would take as an input a feed, a start date and an interval and introduce the nth oldest item in the feed on day = start date + (n -1) * interval. The input feed would have to be a complete feed, not a sliding window.
But I couldn't see quite how to do this in Pipes as it currently stands.
Of course, one could whip up a quick website that did the same thing too. Hmm, maybe someone already offers this service.
by James Tauber : Created on Feb. 9, 2007 : Last modified Feb. 9, 2007 : 1 comment (permalink)
Quisition Launched
My flashcard site, Quisition, has now been launched. Actually, it's been available for the last week but I wanted to test things out a little before announcing anything publicly.
You can sign up at:
http://www.quisition.com/
As of a couple of days ago, support exists for user-contributed cards, although no bulk import yet. That will come shortly.
Implementing this with Django has been a delight. Like Python in general, using it a combination of productive and fun that makes you just want to come up with more ideas you can develop with it.
by James Tauber : Created on Feb. 5, 2007 : Last modified Feb. 5, 2007 : Categories python django quisition : 0 comments (permalink)
Going to PyCon
I'd been putting off booking PyCon because I wasn't sure which of three continents I was going to be on that particular weekend.
But now that I'm fairly confident I'll be in the US, I've registered for PyCon, booked my flight and hotel.
See you there!
by James Tauber : Created on Feb. 3, 2007 : Last modified Feb. 3, 2007 : Categories python pycon : 0 comments (permalink)
Reverse Templates
I've been using Django's templating language a lot recently and it pretty much hits the right 80-20 point for me. In general, a templating language with basic conditionals and for-loops is a great way of specifying how a complex data structure is to be serialized as a string. It certainly beats writing generation code.
But that got me thinking—if a template can take the place of generation code to go from abstract data structure to surface syntax string, can it also take the place of parsing code to go from surface syntax string to abstract data structure?
Obviously some templates are irreversible but a good number of them should be usable to driving parsing.
So imagine you have a data structure which is a list of people with a first name and last name and you have a template like this (in Django's templating language):
<people>
{% for person in person_list %}
<person><first>{{ person.first_name }}</first><last>{{ person.last_name }}</last></person>
{% endfor %}
</people>
Note that I've deliberately chosen element names which differ from the names used in the data structure.
It would be relatively straightforward to create a person_list data structure from an XML instance using this template in reverse.
One challenge is that there's no indication of whether the person variable is a dictionary or an instance of, say, a Person class with attributes first_name and last_name.
Has anyone done this sort of thing? I can't imagine it's anything new.
Note that, despite the example, it's not restricted to XML, so this isn't just an XML data binding. It could be used for many appropriate file formats. vCard comes to mind, for example.
by James Tauber : Created on Feb. 3, 2007 : Last modified Feb. 3, 2007 : 5 comments (permalink)