Friday, March 28, 2008

I miss working closely with other developers; that's part of why I'm blogging right now.
Python exacerbates that, because there's so many ways to do things, particularly the kinds of things I'm doing right now, like parsing text files with tables in human-readable but not-particularly-computer-readable formats.

Here's a tiny example: I needed to remove commas from strings like "1,207" before converting them to integers to graph them. I thought of using slicing, which is a powerful Python feature on lists, strings and more:
>>> string="1,207"
>>> string[:string.find(',')] + string [string.find(',')+1:]
'1207'
It got ugly fast so I looked for something else:
>>> string="1,207"
>>> string.replace(',','')
'1207'
Splits are also powerful:
>>> string = "1,207"
>>> ''.join(string.split(','))
'1207'
Of course I could also define a simple "removefrom(char, string)" function:
>>> string="1,207"
>>> def removefrom(char, string):
... return string.replace(',','')
...
>>> removefrom(',', string)
'1207'



To find good ways of doing things, I end up browsing a lot of Python code online. That's frustrating because some sites have started hosting "sample code" mostly as a way to put advertisements on-screen and in pop-ups. And I'm sure the most trivial code review would identify plenty of areas my code could be much more Python-clever.

Thursday, March 20, 2008

Internships for CommerceNet this summer: I'll be the one hiring and managing. If we get a great proposal for a project from the right intern candidate, CommerceNet might simply hire that intern to work on that project. Otherwise, here's what I have in mind.

CommerceNet is an entrepreneurial research institute, dedicated to fulfill the promise of the Internet. We are currently seeking Software Engineer interns to implement a data visualization Web application for public health information. Involves JavaScript and Python, both data access and graphics. CommerceNet may also accept proposals for internships to work on well-specified projects of the intern's own design.

What you'll do
  • Develop open source libraries or widgets for graphing and data visualization
  • Build public service, community oriented Web site
  • Be part of a small team or work nearly independently
  • Develop with minimal guidance, using rapid iteration and feedback loop and with leeway in choices of tools.
  • Borrow, create or collaborate on visual design and visual elements
Required Skills:
  • Web Applications development, including CSS and JavaScript
  • Python or demonstrated ability to pick up languages
  • MySQL or similar data management experience
  • Great ability to extrapolate from raw ideas to realistic implementations.
  • Demonstrated initiative pulling a project forward
  • Some experience using graphics libraries
  • Familiarity with Cleveland or Tufte principles would be a bonus
Email ldusseault@commerce.net with questions or cover letter and resume.

Tuesday, March 18, 2008

There is so much IETF work on email these days. There are five separate WGs (one in the Security area), a Research Group and a couple informal efforts. I tend to have to summarize the work to pull it together in my head. Here's the post-71st-IETF sitrep. Also see Barry's post for more detail on SIEVE, DKIM, LEMONADE and ASRG. Document links collected at bottom.
  • The IMAPEXT WG is so close to shutting down, it did not meet last week. One of its work items was to internationalize parts of IMAP (including mailbox names, and how to sorting strings like subjects) and those documents were delayed but finally got approved.
  • The LEMONADE WG met, and seems to be winding down. Although its extensions are all linked by being useful to mobile email clients, there are some extensions there of general interest.
  • The SIEVE WG just finished publishing a whack of documents around its new core spec, RFC5228. At its meeting, the group discussed whether to recharter to do another round on the core SIEVE documents and standardize some more filtering extensions.
  • EAI WG has requested publication for most of its documents. These are Experimental Standards for using non-ASCII characters in email addresses, which affects IMAP, POP3, SMTP in interconnected and complicated ways.
  • A design team is nearly done updating SMTP (RFC2821) and the Internet Message Format standard (RFC2822). They're handling "last call" issues on the list.
  • DKIM -- having previously published its core signatures doc (RFC4871) and requirements for signing practices (RFC5016) -- is now working on the signing practices standard itself.
  • ASRG, the Anti-Spam Research Group, is documenting various anti-spam techniques.
  • In informal discussions, several of us keep talking about rearchitecting email access. However, nobody's ready to predict, let alone commit, that their company will implement something new. Does that mean that there's not really enough pain around using IMAP? Or that the pain is the user's and not the software vendor's?
Documents:

Monday, March 17, 2008

One of my favourite tools for keeping on track is doing a regular report to my management.
Ever since Max Dunn, a former co-worker, told me about the "four P's" (progress, plans, problems, personnel) mnemonic, that's been a useful concept. Writing down some notes in each of those categories makes me remember stuff better, catch up, and plan better. I get almost all the value even without sending the report.

Right now I send a somewhat different monthly activity report to the Apps Area Discuss mailing list and to the Working Group chairs of the WG's I advise. It serves some of the same purpose to me, and other people have found it useful. I indicate what I think is the status of each document I'm sponsoring to become an RFC, and if the authors think the status is different (e.g. one of those common "I was waiting for you while you were waiting for me" traps) they tell me. I mention a couple notable things at the top of the report, and try to summarize what state each WG I advise is in.

I try to send these in the first week of the month, which means I'm two weeks late for March due to being sick and having the IETF meet last week. Maybe later today??

Tuesday, March 11, 2008

Although I'm mostly doing IETF stuff at IETF this week, I took advantage of Andrew's expertise while he's here too, to help me get a Python library running and working. I had gotten blocked last week and we worked through several more problems this afternoon. Some notes follow for the record, to add to the couple blog posts out there that help one out on these problems.

I was trying to install pycha and play with its simple charting. To do this, I needed to have py-cairo and cairo version 1.4.12 installed on python 2.5.

The easiest way to get cairo installed is using MacPorts. This is fine, although it installs cairo into the MacPorts version of Python, not the Mac OS X version of Python. The Mac OS X version of Python already has cairo installed, but it's apparently an older version. I didn't know how to upgrade the system cairo library so I focused on doing this with the Python installed by MacPorts. This led to later complication.

After apparently successfully installing cairo version 1.4.14, attempts to install py-cairo failed. It kept on insisting that only cairo 1.4.10 was available. Andrew tracked this down, and we're pretty conviced that the information that the MacPorts cairo package applies to pkg-config is false: it says version 1.4.10 right inside the 1.4.14 cairo.pc file. We edited this file directly and went on.

Next we tried to install py-cairo using the regular "python setup.py install", but that failed -- it is not set up to work on Mac OS/X and there were numerous errors. MacPorts rescued me again, thanks to a hint we ran across from KenKeiter -- this port package has a bunch of hacks (string replacements in directory paths it looks like) to make py-cairo work on Mac.

Finally, back to installing pycha itself. This has a nice handy Python Egg available, so I installed "easy_install" to install that. I goofed and installed that in the default System version of Python, so while installing easy_install worked, installing the pycha egg failed. It turns out there is a MacPorts port of the same thing, called py-setuptools. Only you don't want that one, you want py25-setuptools if you have Python 2.5. I installed that.

OK, back to installing pycha for real again and it finally worked. One gotcha in following the main documentation page example, which is otherwise very nice -- I needed to "import pycha.bar" for the sample code to work (Update: Lorenzo Gil Sànchez fixed this already). And it did work.

Proof:

Tuesday, March 04, 2008

Mike from work pointed me to EpiSpider, which does dynamic graphs and uses in part an in-browser library for faceted browsing called Exhibit, from the SIMILE project. This project also has a beautiful Timeplot library, again in-browser.

The basic approach here is minimalist: all a site developer needs is a place to host Web pages, some of which are data files. No database, no content management system. Still, those have their places too, and I can already see how to make great use of Django features as well as Exhibit and Timeplot features, and I know databases. To tie these together, one just needs a bit of AJAX code to call a server-side process to pull the appropriate subset of data from the database in JSON or other simple format, and I know that exists too.

I had been ready to try generation of static chart images in order to save time -- that was why I was trying to use R (also the data import, manipulation, analysis and export features could be useful). But ultimately good online charts need features like mousing over to see point values, scrolling, and zooming; static charts can't provide that but in-browser canvas code like that used in Timeplot can.

Sample here.

Update: removed annoying iframe

Friday, February 29, 2008

Nearly two years ago, I made a prediction that Atom would replace WebDAV. At the time I was even working on revising WebDAV and just beginning my involvement with Atom standardization. I told this prediction to Cullen Jennings and documented it in a note dated 5/9/06. "Replace" is a fuzzy term, because they're not equivalents, but here's what I see today.
  • Google turns Atom, RSS and AtomPub into GData and uses that for blogs, calendars and task lists for starters. Google does not use WebDAV as far as I know.
  • Microsoft is unifying its developer platform protocols on Atom and AtomPub, and using those protocols for unstructured application storage, e.g. photo albums to blogs. (h/t James Snell. Hey, I used to work with David Treadwell, haven't talked to him in years.) WebDAV support in projects like Exchange is downplayed.
  • IBM has a bunch of projects using Atom but it has a bunch of projects period and I haven't seen strategy announcements about either standard.
  • Apple uses Atom and RSS in quite a few applications, although it's also using WebDAV and CalDAV on .mac and in its calendar server.
  • Blog service sites are ubiquitous and all use Atom or at least RSS. File sharing sites or other WebDAV public services are rare. Photo sharing sites are more likely to use Atom than WebDAV by a long shot.
Were I to propose CalDAV today it would probably be CalAtom -- some things would be easier, some harder, but it would catch a wave instead of drifting in the tail of something that was never much of a popular wave. Oh well, we needed something then, and WebDAV gave the most leverage at the time.
The Django stuff was going so well, I switched over to learning R a couple days ago just to depress myself. It's tricky to get into. The documentation is very scattered (kudos to those who are improving it at the wiki but that's a work in progress). I haven't yet found a way to get documentation for arbitrary libaries. The cute name 'R' makes it very hard to Google for R libraries. E.g. I haven't yet found a core graph or a library function that creates horizontal bar graphs (though maybe somebody will tell me to do vertical bar graphs with all the labels turned, then turn the whole image).

One headache in particular was trying to work with display strings that needed to be converted to numbers. I had a table containing this tiny fraction of data (out of 8 columns and 15000 rows):

ICD.Chapter    Crude.Rate
A00-B99 22.0
C00-D48 193.2
D50-D89 3.2 (Unreliable)
E00-E88 33.7
F01-F99 21.0
...

To graph the Crude Rate without the occasional "Unreliable" strings, I needed to break the information about which measurements were unreliable into a separate column (not losing the information), reduce the Crude Rate to be a number and convert it into an R 'numeric' type. I spent about 8 hours. The first four I managed to solve the first problem: I looked for a "contains(string, substring)" style function but there was none; "grep" produced errors that were really hanging me up whenever the input cell did not have the string I was looking for. Finally I wrote my own little contains function using regexpr:

contains <- function(pattern, string) { 
regexpr(pattern, string) != -1
}

It looks simple now, but it was tricky to get a function that worked properly when converting 15000 cells to 15000 new cells.

The next four hours were spent trying to remove the "(Unreliable)" string from the cells that had it. Again poring through documentation, I tried various approaches and got the closest with this one:

first.word <- function(x) { 
substr(x, 0, regexpr(" ", x)[1]-1)
}

The problem was that although this one worked fine on single strings when I tested it, it didn't work on turning a whole column into a whole new column.

Today at 11:00 am I turned to Excel to see how quickly I could do it in Excel. It's been a long time since I've used Excel formulas, but I knew this kind of thing could be done. In many ways the Excel formula documentation is worse, but it's a smaller set of controls (or at least a clear subset) and it was comprehensive and organized.

In Excel the two new columns are created like this from the H column:

=NOT(ISERROR(SEARCH("Unreliable", H2)))
=IF(ISTEXT(H2), VALUE(REPLACE(H2, SEARCH(" ",H2), 13, "")), H2)

I'm sure this could still be done in R but making those two formulas work for this particular table took me 20 min in Excel instead of four hours.

Tuesday, February 26, 2008

Development work went much smoother today. I set aside installation of Apache and MovableType and decided I could do something easier at least for now. Believe it or not it was easier -- for me at least -- to implement a minimalist blog in Django, from the database on up to the display pages, than it was to install and hook together software.

I also wrote some of the core data model for the site using Django's standard model tools. It's a site that will improve the accessibility of health-related statistics (costs, health surveys, incidence registries and other epidemiological data) by offering good search and lookup and simple clean visualizations. So I started by creating data models for data sources, report names and conditions that are tracked, and hooking those data models primitively into the Web pages where I want them to show up.

Of course development involves writing new code, but that's not nearly all of it. Even when writing new code, part of development is debugging: when you know what you want to do and have chosen a way to do it, but it's not working. Another chunk of new development time is decision-making, e.g. deciding how objects will relate or how interfaces will look. It's interesting how fast this style of development goes from decision-making to debugging and back, without a lot of time spent writing new code.

Any quick pointers on
- unittesting Django sites?
- Integrating C libraries into Django projects?
- Departing from Django DB models -- when to create one's own tables and how?

Monday, February 25, 2008

Since Ravelry ate my blog, I'm going to see if I can't restart this with a different idea. I originally started a blog to try to say clever (and subtly snarky) things about news, particularly science news. Then this turned into a lame knitting blog. Now I feel like I don't know what to post here. So how about I post what I like, eh?

I am trying to learn how to use a camera and a flash better. I bought a Canon Speedlite 480ex so that I could point my flash in different directions, dial up or down the light intensity, and use a diffuser. I also tried to buy a hot shoe adapter and cord so that I can use the flash at a distance from the camera, but it looks like I might have bought the wrong model of something. The cord has a little plug just like a single earphone plug, and there's a dock space on the Speedlite, but it's empty. Behind the hole there's no socket, just plastic.

Still, the Speedlite is better than nothing. I used the diffuser for some of the shots taken of people in a big, poorly lit conference room at the Ravelry meetup.


I think it turned out better than with a standard Rebel built-in flash. I had fun anyway.

At work, I'm immersing myself in Django and oh-my-god real setup of Web, database and other server software. This intimidates me. When I get something working (like an index.html page with working stylesheet and logo links in Django) I take a little "success" break to let the feeling last.

I hate how easily this kind of work can go wrong. There have got to be common ways of doing things that just work. But I don't know what those are, and software for developers errs on the side of flexibility and power, rather than on the side of making choices for you so that it just works. And some choices work but are awkward. Where do I install Apache? Where do I locate the static files served by Apache? Where do I install MySql so that it can be used by MovableType as well as Django? Do I upgrade to Python 2.5 inplace or have it co-exist with Python 2.3? Invariably on the Mac there are permissions issues: do I change the permission of the file so I can do what I'm trying to do with my login account or do I switch to 'sudo' the command? I normally get things working eventually but it's sooo slow.

Sunday, January 27, 2008


What pictures of curious and fast-crawling babies often look like.

Thursday, January 24, 2008

Clearly my lack of posting is explained by the fact that I have died in a knitting accident. It was the size 1 lace Addi turbos I've been knitting the cellular automaton shawl with, those are some sharp needles.

Maybe it's just a metaphor for this blog: I haven't been posting much since I joined Ravelry, so the blog was what died in the knitting accident.

Have I anything else to say? I've been thinking about email software, and I concluded that a really great email-focused program would include GUI design contributions from a game designer. Email management needs to have the same smoothness and responsiveness that a good console game does. I deal with hundreds of emails a day; dealing with them should be so smoothly software-assisted that I'm eager to click to kill the next one. I mean file it. Instead my flow gets interrupted constantly by tasks that draw me away from getting through my email.

Sunday, November 25, 2007

I've been pretty busy but just had time to learn a bit of JavaScript and the canvas element. Since I'd been playing with cellular automata ideas in knitting, I put together one of those. Pretty!

Tuesday, October 02, 2007

Blogging here is going to continue to be light for the foreseeable future. I am now a member of Ravelry, so that's a more obvious place for me to post knitted projects -- the whole point of doing that was so that other knitters could find my projects as they research what project to do next, as I do. Ravelry was built for that purpose and makes it easier for knitters to post their own projects, and to find other projects done with a certain yarn, or with a certan pattern, etc.

But I did want to post a link to this Telegraph article by Liz Hunt, and that doesn't fit naturally either on Ravelry or on the CommerceNet blog. The article bitterly critiques a book called The Gentle Art of Domesticity (not available in US yet), by Jane Brocket. I wish I could figure out what has Liz Hunt so bitter, because I can't see anything intrinsic in the work of this enthusiastic cook and craftster to inspire the tone. The comments on the Telegraph article vary from wondering how Jane Brocket could be so "perfect" to angry reactions to the article's tone and criticism of a domestic lifestyle.

I've been following Jane's blog since she started it in early 2005, staying as she progressed her writing style and particularly her photographic abilities (from this to this, for example) even as her posts on knitting became more and more infrequent. Most of what she documents and extols I have no desire to imitate. I'd rather bake oatmeal squares and butter tarts than elaborately decorated cakes and "fairy buns". I hate gardening and do not want to live in a remote town or in the country. I do knit and sew but I've been knitting for five times as long as her blog has been up so I already have my own style and inspirations. But it's a gentle, beautiful picture she paints, and it's like visiting an English village house and garden for a quiet moment when I read a new post on Jane's blog.

The only way I can reconcile this with the Telegraph article is the tension over feminism vs. domesticity again. Liz Hunt brings up careers and Shirley Conran in opposition to the domestic values. I haven't got a copy of Jane's book yet but I suppose Jane even started the argument by extolling domesticity as an antidote to ambition and stress. But I'm pretty sure that if a woman wrote a book extolling jogging, swimming, line dancing, playing cello, online gaming, sculpture, reading, bird-watching, photography or dirt-biking as an antidote to ambition or stress, it would be seen as trite at worst rather than threatening.

Tuesday, August 07, 2007

I frequently try Web applications out just for the sake of seeing what they can do, and usually abandon using them. But I like keeping up with the field, particularly for email, calendaring and task-related applications.

Today I tried one that does all three, that I heard about originally from Rael Dornfest (back when I worked at OSAF; it wasn't available then and it is now). I might abandon this online app too because I like to manage my time offline better than online, but there was one point when testing the application sent a frisson of pleasure down my spine. Usually that reaction is reserved for either more private pleasures, or when fondling yarn.

The site is stikkit.com, launched last year. The site is very smart at telling what kind of note you're creating, detecting todos and events from linguistic cues. For example, it detects Quiltathon on September 30 as an event and puts it on the correct date on the calendar.

The 'frisson' moment was when I created a task to email somebody. It was recognized as a task by the phrase do send mail to So Andso. Then I noticed that the new task had a linked stikkit for a person: "So Andso". When I clicked on that, the automatically-created stikkit had a line reading name: So Andso. I intuited that if I added another line to the stikkit with email: soandso@example.com would make the new stikkit into a contact, and voilà, it did!

It was a little disappointing to find that while Quiltathon on September 30 was detected seamlessly as an event, September 30: Quiltathon was not. Also when I had a space between the "name: ..." and the "email: ...." lines in my second attempt at creating a contact stikkit, it didn't work until I removed the empty line.

Oh, and I love, love love applications with hotkeys so that I don't have to mouse around. Even better when they can be discovered.

Sunday, July 08, 2007


These cute kid items were knit by Uta Hayward for her son. I'm completely tickled to see the blanket because it's the pattern I published on For the Love of Yarn. It looks very different in the multicoloured yarn chosen by Uta's son, but it looks terrific. I like the way the colour pooling forms little arcs because of the decreases, and that the little arcs are separated by the yarn-over columns. Maybe I'll knit the pattern again myself in multicoloured yarn!

Wednesday, July 04, 2007

Happy Independence day. Then again, I'm working today -- I've got IETF stuff scheduled tomorrow with people who aren't in the US and they'll be prepared.

I would have said Happy Canada Day three days ago, but I was travelling home from Canada on that day. There were nice people on the plane with maple leaf body paint or temporary tattoos or something. Even nicer, the man who switched seats to give me more room for the baby, and his wife who held the baby while we switched.

I am having fun despite the work (hey, work's fun too). I just discovered the FireFox plugin Tab Mix PLus, which I have used to set it up so that each new tab opens to my local home page which has quick links to stuff I use a lot. Yay smoother work processes!

I was also sucked into Facebook last week by my cousins and siblings. I initially felt too old but then a bunch of people in my class in grade school and high school contacted me immediately so I already feel like I belong a little. We were making fun of Facebook at work recently. One jibe was that it's a classic force multiplier: it allows you to form cliques and shun people at great efficiency! Before you could only shun people in sight, while out socially -- but now you can shun people anywhere, anytime!

Tuesday, June 12, 2007

Reading Tukey's Exploratory Data Analysis:

If we want to see what our plots ought to tell us, there is no substitute for the use of tracing paper (or acetate). If we slip a well-printed sheet of graph paper just below the top sheet of a pad of tracing paper, we can plot on the top sheet of tracing paper almost as easily as if it were itself ruled. Then, when we have the points plotted, some boundary or reference lines drawn, and a few scale points ticked, we can take away the graph sheet and look at the points undisturbed by a grid. We often gain noticeably in insight by doing this. (And we have had to pay for a sheet of tracing paper rather than for a sheet of graph paper.) [...]

An alternative that:
  • can be even mre effective,

  • is no more expensive,

  • takes a little more trouble to prepare for,

replaces the tracing paper by the thin sheets of transparent plastic (acetate) made for use in overhead projectors. Two cautions are important:
  1. You can only use markers specially made for the purpose. [...]

  2. It is important to keep one's fingers off the plastic until the picture is completed. (A piece of thin graph paper, placed upside down, works very well as a hand shield.)


Much of this classic textbook is obsolete tips and tricks -- e.g. for collecting data on paper and checking that you've copied it accurately to another piece of paper. The notes on cost of tracing paper vs. graph paper vs. acetate strikes me as quite funny now!

I think I learned to graph by hand in school but never had to except as an academic exercise -- I was using graphing software before entering University (summer job in a water testing lab). I wonder what kids today do in school, if they even bother with the academic exercise. I hope so, because it was kind of fun playing with numbers on paper. For some values of fun :)

Thursday, May 31, 2007

Random Stuff

If you know me, you know I've been pretty busy and no surprise that I've been neglecting my blog! Rather than let the blog languish for even longer waiting for the perfect post, I'll just be random today.

1. The Atom Publishing Protocol (APP) is up for approval by the IESG this week and I'm the sponsoring Area Director. I'm excited about APP because it will serve as a model or basis for much future work in accessing and editing structured content on the Web. (Will the IETF APP area one day be assumed to stand for Atom Publishing Protocol rather than APPlications?) I observed some of the Atom Interop event last month (summarized by Tim Bray here) and it was great.

2. I am apparently a sucker for some kinds of advertising copy, not necessarily what one would call good copy. Witness: here is the entire Product Description for the ice cube trays I bought online when my freezer was mysteriously not making ice cubes automatically, before it mysteriously started to again.

Ice Cold Fun! These wild and wacky Flexible Ice Trays are just plain crazy. The flexible designs allow ice to just pop out! Its quick and easy. And fun! Better still are the nutty shapes the ice forms into Stars or Hearts! Wild! Fun! Each tray container contains twelve individual molds perfect for all the fun ice youll be making. Blue star tray and pink heart tray. Made of high quality rubber.

Nutty shapes! Wild and wacky! Oh the fun we'll have with ice cubes!

3. I continue to knit stuff. I just don't have time to post about it any more. Here's a shot of me with other knitters at a meetup at Nine Rubies, and the project at my feet is now a completed scarf (with an estimated 40,000 stitches, which is why I normally don't calculate stitch counts).

4. I also made a mei-tai baby carrier. Again, this photo is obviously not taken by me, otherwise I probably wouldn't have a photo of the carrier at all. I don't even have photos of the sweater or bag I finished a while back.

5. Looks like IETF Chicago will be exciting: the Apps area will have BOF meetings on HTTP, notifications from email stores, and personal address book access.

Wednesday, April 11, 2007

"For the Love of Yarn", an online knitting magazine, has now published my Cielo baby blanket pattern in their spring '07 issue. Oh the fame!

Seriously I did get a query already about yarn substitutions. I knit this with Elann.com "Den-m-nit" but that appears to be discontinued. There are two special effects inherent in this yarn: one is that it will fade like blue jeans over time as it's washed and used, and another is that it will shrink %10 to %20 the first time it's washed. Rowan Denim yarn behaves the same way and is widely available, thus it's a perfect substitution -- but expensive. Another less-well-known option is Twilleys Freedom Denim Yarn. I found a couple online vendors for this:

  • Texere in the UK
    sells this for 2£/50g, which is currently about $3 US. Even with the shipping, for 13 balls (what the pattern suggests) this is cheaper than US sources.

  • Erica's Yarn sells and ships in the US for $5/50g.

It should be easy to substitute other worsted weight yarns to get other colours besides indigo, although of course the faded jeans effect won't happen. Note that there are two main kinds of 100% cotton yarns, mercerized and unmercerized. Mercerized cotton yarns do not shrink, therefore behave differently than the denim yarns. Still, some of these can be wonderfully cheap and colourful, like Elann.com Sonata, which has great stitch definition and sheen and is $1.98/50g. It's also possible to use cotton blend or non-cotton worsted weight yarn for another kind of look. To substitute a yarn that doesn't shrink, the knitter just has to stop knitting the main body when the blanket is big enough, and knit the edging on as written.

Some unmercerized cotton yarns do shrink and others don't. Worse, unmercerized cotton yarn isn't always advertised as such. For example, I've used Mission Falls 1824 cotton and Blue Sky Organic cotton without any noticeable shrinking (and they're both great yarns though with the Blue Sky you have to live with some pilling and fuzzing). Knitter's Review confirms that Mission Falls 1824 cotton is unmercerized and various blogs say that the Blue Sky cotton is unmercerized. So just getting an unmercerized yarn doesn't guarantee that it will or won't shrink.

Tuesday, April 10, 2007

I hadn't yet seen the talk by Hans Rosling, last year at Ted 2006. It's fascinating from a technology perspective but even more so from a political or social welfare perspective.

I browsed a little further into other Gapminder presentations, including one given by Ola Rosling at Google a year ago, where he talks about the significant differences made by left vs. right politics in achieving health advances vs. wealth advances -- a point which didn't appear in Hans' talk.

What is news is that Google bought the Trendanalyser software and hired its team from Gapminder, announced last month. The Gapminder foundation continues its mission separately although I'm not entirely clear what that is now.

Wednesday, April 04, 2007

Needed: Web 2.0 Hackers

CommerceNet (my employer) would like to start a bunch of Web 2.0 projects in the areas of calendaring, security, schemas/standards and health information. We're looking for some hot Web 2.0 developers to help us prototype some of these sites. The job descriptions and address to apply to are here but you can ask me directly for information if you'd like -- I'm a hiring manager.

Saturday, March 03, 2007

I am part of a panel hosted and organized by Scott Rosenberg on why Software is Hard at the Hillside Club tomorrow evening. Scott's got more exposure to this than any other journalist I can think of, perhaps you've seen his book Dreaming in Code. Eric Allman and Chad Dickerson will be part of the panel too.

Friday, February 23, 2007

How to shop at Ikea with a Prius:

Prius packed with Ikea purchases

This is packed with $860 worth of furniture and storage boxes from Ikea. The big-ticket items were a full height and width Bonde shelf unit with doors, and a four-unit-tall Effectiv unit with doors. Even bulkier, however, were the two storage baskets and various plastic bins. The amazing thing was that we still fit two adults and a baby in his carseat in the car, too. The adult passenger had to hold plastic boxes on her lap for that to work.

Other pictures: another view of the packed car, and the purchases spread out on the driveway.

Monday, February 19, 2007


Just posted pictures from yet another baby project -- a lace angora/silk handspun baby hat -- to my current knitting page.

Tuesday, January 16, 2007

Perogies from Lisa's Test Kitchen!

I was inspired by the America's Test Kitchen approach from the Cook's Illustrated folks, which results in the full-disclosure style of "The New Best Recipe", and from there, my newly-reliable baking skills. So for my yearly Ukrainian 12-meatless-dishes feast, since I scaled down to making only perogies and kutya this year and my lovely friends brought the rest of the food, I decided to do some testing. Like Cook's Illustrated, I began by collecting a range of perogy dough recipes that differed significantly, and tried three of them. Here are the results of testing three different base recipes, with the main criteria being handling (rolling out dough and sealing the filling in side is hard to do properly with my mom's recipe) and tenderness.

1. Growing Alberta's recipe: in one of the many, MANY ways of combining just oil, flour, water, salt and eggs, this recipe is very simple and similar to many pasta recipes (e.g. ravioli dough). Most other perogy dough recipes I found online had the same basic ingredients in only slightly different quantities. Results: the dough itself is easy to make up, and then sufficiently easy to work. However, when boiled, this ended up making mutant-looking perogies: oddly lumpy, with a surface texture that looked a little more shiny and bubbly. The texture, more importantly, was a little more rubbery than ideal, and was not anybody's favourite in taste-testing.

2. Epicurean's recipe: this had a cup of sour cream instead of any water, and it also adds some baking soda (the rest is flour, egg, salt). This seemed sufficiently different to be worth trying. Result: this made a fine dough that rolled out reasonably well and sealed well. This was the most robust and even dough: every single perogy made using this dough looked like a perfect, even, golden half-moon, even after boiling and frying. At least one person decided this also produced the best texture or tooth.

3. My usual recipe, from my mom, given to her by a Polish friend in Edmonton who was a fabulous cook. This dough is my standard to compare to because I've made it before: it's very tender and everybody loves it, but it's a pain to roll out and use for perogies as it's so fragile. There are usually a few casualties during boiling, where the dough opens and water gets inside the perogy even if the filling doesn't spill out. It's also unreliable: it uses 1/2 cup of mashed potatos, which is hard to standardize (varies by type of potato, size, how long boiled, how carefully mashed, and how long left to stand to accumulate or release moisture after boiling/mashing). I couldn't find any recipes on the Web that had mashed potato in the dough, so it appears to be a unique recipe. Taste-testing results: most people found this was the best texture.

Here's that "heirloom" recipe for comparison:

1 and 3/4 cup flour2 egg yolks
1/2 cup mashed potatos2 tablespoons shortening
1 teaspoon cream of tartar1/2 cup warm water
1 teaspoon salt

Mix flour, cream of tartar and salt together. In separate bowl, mix mashed potatoes, egg yolks, shortening and water together. Now mix wet and dry ingredients together, adding flour as necessary for a workable dough [this always comes up too wet, I need to adjust that]. Let sit 10 minutes before rolling dough. Roll a portion of the dough to a couple millimeters thick. Cut circles [I use a water glass inverted]. Put a spoonful of filling on each circle. Fold over circle and seal with water.
The next step in this testing process appears to be to start varying the best recipe found so far, to see if its most important advantages can be improved, its drawbacks minimized, or its technique simplified. This is helped along by hypotheses about what makes this the best (or by what makes it difficult). These are the variations on my usual recipe that I've tried so far.

  • Try omitting the cream of tartar as its role is not apparent in the absence of egg whites. Result: the exact same dough made with and without cream of tartar had apparently the same texture, but turned quite grey while standing, as the potato starch interacted with air. The grey blotchy dough was so unappealing that I threw it out without attempting to roll it out, cook it, etc. Conclusion: keep using cream of tartar as long as the recipe contains potato.

  • Try using a beater on wet ingredients, both to save labour and to improve consistency and robustness of dough by making sure the potatos are well-mashed. My regular dough always has a few visible bits of potato once I roll it thin, and sometimes this creates a weak spot as I form or cook a perogy. Results: using the beater made the dough turn out too gluey and it stuck to everything, making the rolling/folding even harder than normal and without making the dough any more robust. This result could have been guessed if you knew not to over-mash potatoes.

  • If letting it sit 10 minutes is good, is letting it sit longer even better? I tried a couple variations here. Results: Overnight wasn't good (though the results may be conflated with having used a beater on that batch). I also didn't see any difference waiting 10 minutes or an hour when the recipe was otherwise done the same way.


That was enough experimenting for one person for one year. What are the promising avenues for testing next year?

  • Sometimes the Cook's Illustrated people form a hypothesis about what makes a recipe good, and try to achieve the same goodness with a different approach. My hypothesis here is that the point of adding mashed potato to the dough is probably to increase the amount of starch relative to the amount of gluten. This should make the dough a little less rubbery or more tender. This hypothesis suggests there might be a more reliable way of reducing gluten ratios than using mashed potatos -- for example, using more cake flour and less all-purpose flour. Thus, I should look into how to reduce gluten ratio without using mashed potatoes (or using less of them). How much all-purpose flour should be replaced with cake flour?

  • Try to simplify technique and increase reliability by using instant mashed potatos. This approach would not suffer from variability in the starch content or waxiness of the potatoes, or from changes in the details of cooking and mashing.

  • Try the sour cream dough again. It was definitely easier to work with and people were not unhappy with the result. I want a bit more direct comparison (with the exact same filling, side by side) and evaluation to be confident that this is as tender, or just about as tender, to see if it's worthwhile switching from my traditional recipe.

  • Combine the two most successful recipes: what about using the mashed potato recipe with sour cream instead of water?


Also, next year I need to take pictures. As I write this blog post two days later, it's too late: they're all gone. Very popular, I tell you. My guests take home leftovers if there are any (last year there weren't) although I insist they leave leftovers for me too.

Wednesday, January 10, 2007

I guess the new year is a good time for me to finish projects. I finished a sweater that I've had on the needles for months, as well as a period baby hat (a rare non-knitting project). I'm almost done a Noro Kureyon felted purse, too.

Sunday, December 31, 2006

A few pairs of socks posted on my Knitting gallery for completeness. Thus ends 2006. Happy New Year!

Saturday, December 23, 2006


A new "Objet tricoté" on my gallery, complete with pattern.

This happens to be for me, but if you knit, you *could* still make this in time for a Christmas gift. Jo-ann is open until 9pm on Saturdays and may even be open tomorrow.
I just found the KnitWiki. I'd been thinking for a while about creating a Wiki for knitting, because I frequently look through the Web for advice or ideas on how to use a particular yarn that I bought because it felt so great in the store. Of course, most of the search hits you get are yarn stores selling the yarn, not knitters telling you how it worked up and what problems they encountered. So I didn't learn until too late that Karabella Aurora widens dramatically when it's first washed, or that using a silk (drapey, less elastic) yarn in a side-to-side pattern would pull a neckline competely out of shape. I don't know if knitters are sufficiently interested in contributing their experience but judging by the number of knitting blogs that exist and are being created every day, they might.

Tuesday, December 19, 2006

Just how predictable am I? I've been enjoying the first season of Boston Legal on DVD, and particularly the James Spader character, Allan Shore. On thinking why, I realize he's a Bad Boy who's really a Good Guy (just like Dr. House). He's petty, grand, nasty, gentle, happy to help a colleague and has an enormous ego. As a TV series must, the show keeps his character's tension going, episode after episode -- no easy redemption or complete conversion as one can find in movies sometimes.

Here's some classics of the archetype, whether charming or aloof. See if you can figure out which movie BBwraGG I'm thinking of, described from the point of view of the heroine.
  • He's cynical, brusque and appears selfish, claiming to be helping you only for the money. Yet he turns out to be idealistic too, and shows up in the final battle to save the young hero just in time for the defeat of the bad guys.

  • He gambles and womanizes and definitely runs with the wrong crowd. Yet he knows how to be charming and gentlemanly and certainly how to have fun. When he helps recruit for your holy cause, is it just because he wants to win a bet, or does he really care?

  • He's haughty, aloof and seems conceited and cold. He appears to have hurt people just to maintain social class distinction. Happily it turns out the full story was secret to preserve a lady's reputation, and his actions really were quite correct. Plus, he has a really great house.

  • He's a low-class rebel, part of the summer staff. He's dreamy but when you get closer, he's also hot-tempered, impatient and people believe him to have abandoned his lover and illegitimate unborn child. He didn't though, he was really just helping her.

  • He's a beast, literally. But he can turn back into a man if only you truly love him...

In the tragic romances, the bad boy doesn't quite make it either to conversion or to redemption. Rhett Butler continues to mix bad behavior in even after the appearance of good behavior, and ultimately rejects Scarlet due to her own flaws. Rick Blaine is a charming egotist who proves himself not entirely selfish by saving Ilsa and Laszlo, whereas Laszlo is a dull idealist whom Ilsa ultimately chooses.

Saturday, December 09, 2006

It was at an OSAF picnic more than a year ago that somebody (not from OSAF) asserted baldly that Open Source and Open Standards were entirely complementary. I must have been in a perverse mood or found him disagreeable, because I immediately looked for reasons to disagree with him. It's taken me a while to work them into a blog post but it's interesting that I remember the exact moment this theme began.

Tuesday, December 05, 2006

Scott Mace is so right:

With a standard, one can have a standard server running independent of the Internet that one can test against.

Scott was inspired by Spanning Synch:

Building an application on top of Google Calendar (which is itself still in beta) [...] "building a house during an earthquake".

I'd broaden Scott's stability principle to any well-defined, stable API. It's easier to build an application on top of a stable (public, or standard, or external) database API than one you're developing as you go. I'm not sure whether it's better or worse when the developer making the API churn is on the same team or a different team as the developers using the churning API but it's bad either way. There are lots of techniques to try to enforce stability so that you're not building your application on quicksand and one of them is certainly to use a standard for an important interface -- it's a way of enforcing discipline one might not otherwise have.

Friday, December 01, 2006

If cheesy alternative lyrics turn you off, stop now. I deeply regret it if the season inspires excess cheese chez moi, but I cannot help it.

To be sung to the obvious seasonal tune...
On the first day of Christmas, I caught my cat as she...
Was eating needles off of the tree.

On the second day of Christmas, I caught my cat as she...
Was barfing on the floor,
And eating needles off of the tree.

On the third day of Christmas, I caught my cat as she...
Was peeing on the bed,
Barfing on the floor,
And eating needles off of the tree.
[skipping ahead]
On the twelfth day of Christmas, I caught my cat as she...
Was climbing on the curtains,
Chewing power cables,
Scratching up the sofa,
Coughing up a hairball,
Jumping on the counter,
Pushing things off tables,
Drinking from the toilet,
Meowing at my door! ...
Tangling my yarn,
Peeing on the bed,
Barfing on the floor,
And eating needles off of the tree.

Now I just need these guys to perform this for me!

Thursday, November 30, 2006

Today my post on CommerceNet's blog: email standards waves. A capsule summary:
  • Internet-scale delivery, addressing and use of domains.

  • Standards to access email on the server, and to use multimedia and non-ASCII characters within the body of the email.

  • Security

  • Internationalization, mobile access, and more security.

Monday, November 27, 2006

New on my knitting page today, a poncho designed by a 7-year-old girl, which I knit (and crocheted) out of the yarns she and her mom provided. It was fun filling in the necessary details within the strict design parameters she provided.
Peacock kid's poncho.
So much fun knitting for girls -- frills and waves and sparkles and fuzzy fringes!

Friday, November 17, 2006

Yesterday on the CommerceNet blog I ranted about the concept of "HTTP compliance", one way in which that's a very weak concept, and how worrying too much about compliance can limit a protocol design team from making needing improvements.

Tuesday, November 14, 2006


I finished another baby blanket a couple months ago, but I didn't want to post it until I'd given it away. It's my own simple lace design and was fun to make -- much of it got done during a long-weekend visit to my parents'.

Next up on the needles: lace socks, lace poncho commissioned by young friend, and lace reproduction 1920s baby bonnet. So much lace!

Monday, November 13, 2006

A while back I posted about whether "feminist" was a dirty word, asking who considered themselves not to be a feminist because of the connotations of the word. I was sort of thinking at the time that surely most people I knew approved of the advances made so far under the name of feminism so why reject the label? Since then, I polled a few friends and colleagues informally (not as many as I intended; I've been busy).

I didn't ask men this question directly -- I don't think there's much downside when a man to call himself a feminist. Nonetheless I appreciate the input I got, and that all the men who commented here or in-person describe themselves as feminists. Thanks guys! Of course this isn't a universal, but probably an artifact of who volunteered this opinion. I didn't mention it in my original post but it was a male family member who (despite having very liberal, equality-oriented views himself) strongly objected when I said my views might be feminist! He likes me personally and was distressed when I labelled my views -- which he agreed with -- with this nasty word.

Of the women I polled, several said they do indeed consider themselves feminist (I can't remember them telling me this before though I've known many of them for years), and a couple said so quite strongly. Perhaps defensively re-appropriating the label? It's hard to tell. Of course they had good reasons for calling themselves feminist and some interesting discussions ensued.

Finally, three female friends did *not* call themselves feminists. I found their answers the most interesting.

M: "I don't know. I never really thought about it."

L: "I don't think it describes my positions well. I think of myself as somebody who believes all people should be treated equally, rather than that women in particular need different treatment."

S: "The people I know who call themselves feminist talk about issues all the time, and are obsessed with little things like who cooks dinner each night."


All these women have active tech careers, I think they're all pro-choice, and I think maybe S. does cook dinner each night. Anyway, I appreciated their answers and didn't have anything to particularly convince them of but it sure led to a few interesting conversations around the water cooler and in friends' living rooms.

Sunday, November 12, 2006

How do you wash grapes?

I got food poisoning a couple weeks ago, during an otherwise lovely trip to Portugal. While it's probably pointless to try to figure out how, I do wonder about a bunch of things.
  • Generally, how long before food poisoning takes effect? Must the cause have been the same day I got sick? The day before? Within a couple hours? The meal I was eating when I started feeling sick was a hotel buffet. Nobody else got sick.
  • I drank local water, because locals do; I drink a lot of water and it's not always easy to buy a new bottle while it is often easy to refill. How likely is it that local water is fine for locals but not for visitors who may not be adapted to the local endemic bacteria? Is it possible that the rainstorms and small floods during my week in Portugal (apparently the only week of rain the whole year) may have worsened the water supply during my visit? I had been drinking local water for a week before I got sick.
  • I shared from a plate of steamed clams a day or two before getting sick, and the first one I bit into clearly had ice crystals. How did one "steamed" clam stay half frozen? Did they toss it on at the end? Nobody else who shared the clams got sick.
  • I bought some grapes from a small fruit stand. I washed them all and kept them in my hotel room for a few days. I certainly didn't get sick on the first bunch of grapes I ate. Is it possible that I didn't wash them well enough and the bacteria grew over time? How do you wash grapes?
Somehow it's that last question which bugs me, seeming so simple. How do you wash grapes? They're fragile and nearly impossible to scrub or even rub individually. Should one soak them? Spray them from several angles with a decent pressure spray? Put them in a colander and allow water to run over for a longish period of time? Most search hits for "how to wash grapes" say simply to "wash carefully" just before eating (rather than before storing), but a few food sites mention "cold running water" or "gentle spray". Is this any good at all besides rinsing out a bit of grit?

Tuesday, October 17, 2006

Today's post on the CommerceNet blog is a brief overview of my ApacheCon talk last week: "Beyond Passwords", promises and policies of Identity 2.0. Although it was the very last talk of the last day of ApacheCon, I enjoyed that venue as I always do, and appreciated every one of the dozen people in the audience who hadn't yet flown home :)

Monday, October 09, 2006

Since CalDAV was approved last week and will become an RFC in the fulness of time, I thought I'd post a bit of the history of CalDAV (so far!) over on the CommerceNet blog.

Tuesday, October 03, 2006

I've started a new job recently, as a Fellow at Commerce Net, continuing my IETF Area Director work with their support. I wrote an introduction to my self and my work, as my first post on the Commerce Net blog. I'll try to remember to post a pointer here when I blog there.

Best part of new job (well, other than getting paid to do absolutely cool stuff): biking to work! I'm not much of a biker so I toodle off on my ten-year-old squeaky fifteen-speed, leisurely pedalling down Channing and Bryant to the office on University Ave. Most often I'll bike in whatever I happen to be wearing to work that day, whether it be a skirt or work pants, blazer or sweater. I do wear a helmet. I don't stop for most stop signs -- cars should stop for me!

Wednesday, September 06, 2006

Am I a feminist? Are you? I've been reading about Mary Wollstonecraft, who wrote A Vindication of the Rights of Women, and it's obvious that if one of us were to time-travel to visit the other, and she were to question me about what I felt women were fit to do, she would consider me a radical feminist. Probably you, too, if you believe that:
  • Women ought to be able to own property, instead of having a man (husband, father, brother, son) own and dispose of all property.

  • Women can decently write books and be paid for it.

  • Girls should go to school, not just to learn to sew but also to think and reason.

  • Girls should be allowed some modest exercise to keep their bodies healthy.

  • A grown woman is responsible for her own moral behavior.
Ok, maybe 1792 is too easy to compare to. Do you believe women should vote? Then according to the mores of UK, US and Canada in 1906, just a hundred years ago, you're a suffragist and feminist.

How about comparing to a time less than 50 years ago, then. In 1963, the Kennedy administration published the findings of a moderate commission on the status of women, and in 1964 came the Civil Rights Act which covered sex as well as race discrimination. Do you agree that:
  • It's unfair discrimination if a qualified woman is turned down for a job, and a less-qualified man hired instead, particularly in government and government-funded jobs.

  • Women should be allowed to use contraceptives.
Even though I know nobody, personally, who strongly disagrees with any of these points, I also know nobody who calls themselves a feminist, and thinking back 25 years can't remember knowing any self-declared feminists. Yet of course I know many women who wear pants (heh) and have technically-demanding careers, some of them also raising children. I also know many husbands and boyfriends who support demanding careers, help with housework, and have spoken in favour of equal pay and equal access to promotions and high-status jobs. There's some social differentiation around sexual acts -- it's better for your reputation to be sexually promiscuous if you're male than if you're female -- but I still have trouble of thinking of many people who would seriously discriminate on that basis (e.g. refusing to associate with an adulteress or reproving her while approving the company and behavior of adulterers).

What turned "feminist" into a nasty epithet? Was it the introduction of issues around sexual promiscuity and pornography? Was it the opposition of domesticity to feminist belief, making a woman who enjoyed cooking, sewing or having a clean house feel like she couldn't be a legitimate feminist? Was it fictional portrayals of feminists?

I can't decide if it's a good thing that we don't have as deep a need to be feminists any more, or a bad thing that the word is still so tarred after 30 years. I'd be interested in hearing opinions on that and whether you, male or female, consider yourself a feminist.

Thursday, August 24, 2006

We just got the second season of House, MD on DVD, and I'm enjoying it although it may be slightly darker than the first season, so far. The show continues to focus on ethics with a great twist: most episodes seems to demonstrate, one way or another, that nice isn't always ethical, and ethical isn't always nice. Or as the creator David Shore puts it, "What's more important --Kindness or Truth?"

The show is entirely driven by the acerbic, blunt character of Dr. House, played masterfully by Hugh Laurie. He's one of my favourite actors with a huge range of talent (including humour: notably Blackadder and Jeeves and Wooster where he plays an utter fop ) and the ability to melt into a role like this. IMDB says:
During Hugh Laurie's audition, David Shore says that Bryan Singer, one of the executive producers, said, "See, this is what I want: an American guy." Singer was completely unaware of the fact that Laurie is English.
Also, Robert Sean Leonard is still cute. Awww, those puppy-dog eyes.

Image from 'http://www.housemd-guide.com/'

Wednesday, August 23, 2006

I have another finished, knitted item to show off. It's from a shawl pattern called "Frost Flowers" in A Gathering of Lace. The goal of the project was a baby blanket, not a shawl, so I used superwash wool in fingering weight instead of laceweight. That choice would probably have worked out perfectly if I'd used slightly larger needles, but since I didn't, the square is more than a square -- the stitches were not quite as long as they needed to be for the overall blanket to come out flat, so instead it's got wavy edges. I blocked it by stretching it out very big on the spare bed, which definitely helped.

Frost flowers lace baby blanket

I love it anyway. I love the colour, which is called "Celadon", custom-dyed by Lisa Souza using her wonderful, soft superfine Merino superwash sock yarn. Celadon isn't shown as a standard colour but if you compare, it's a lighter shade of sage. Mmm.

A few more pics of the objet: center detail, edge detail, and Ophelia modeling it as a shawl at Knitter's Studio.

Thursday, July 06, 2006

A new finished knitting project is up on top at my knitting page. It's a pair of crazy, wavy lacy socks for a friend. Yay gift-making and gift-giving! Especially as a total suprise.

Friday, June 23, 2006




I am giving a talk on Cosmo and CalDAV at ApacheCon next week. There'll also be a BoF (which at ApacheCon is a very informal thing) on HTTP Authentication and other standards work. It's my first trip to Dublin so I expect to enjoy the week quite a bit.

Friday, May 26, 2006

I borrowed my neighbour's pressure washer today, and it was fun! First, it's a water toy. Second, it's a power tool. These are two great things that go great together. It's a gas engine, thus loudish, and the spray nozzle is long so both hands have to hold on (one holding down the handle the whole time, which can get fatiguing but that's the worst thing about the job).

My red patio paving tiles were covered in scum prior to this afternoon. Scum came particularly from the eaves of our house, which drain dirty rainwater right on to the patio and then across the tiles to the azaleas. But even away from the path of the scummy rainwater, it was still dirty and black because the drainage is terrible and it rains a fair bit here in winter. I curse the previous owner of the house who designed the eaves and patio this way -- it looks good but isn't as functional as you'd think.

Using the power washer on this blackened, scummy patio is like spray-painting in reverse. With each stroke of the DirtBlaster® rotating nozzle it was as if I painted the tile its original colour. I discovered if I moved the spray nozzle quickly enough over scummy tiles I could see a spiral pattern, proving to myself that this nozzle indeed rotated somehow, although it circled so fast that the water output looked like the surface of a cone. It was like having in my hands a magical staff that fires a cone of cleaning.

After the red tiles, I moved on to the blacktop driveway, the concrete front sidewalk walk, and the back walk. Things got a little messy there, in the tight corner between two sturdy wooden fences, the ground was dirty and the power washer sprayed mud right back out of this corner and onto me. As I finished up I considered turning the power washer on myself, but concluded that a real shower would probably be more satisfying. I looked around for other things to clean, considered whether bushes and trees and wooden sidings needed power washing, and regretfully turned it off and returned it to the neighbour. Until next time.

Saturday, May 20, 2006

You won't find me talking about cooking or touting cookbooks much, so pay attention. Cook's Illustrated The New Best Recipe is a different kind of cookbook. You think you know how to make basic french toast? I thought I did. As it turns out, I had only a dim clue, and I needed to use less eggs, much more milk, some flour, vanilla and sugar. I haven't had this book for very long, I don't cook often, and I only cook for myself, as the man around the house prefers not to eat my cooking (probably for justifiable historical reasons). But every few weeks since getting this cookbook I've tried a simple recipe. Here are my results so far:

  • The french toast: amazing. Getting the inside custardy, and the outside not to taste like fried eggs, is a total win. Their way is not noticeably harder than doing it my old way. I even cheated by using the wrong bread (nowhere in the recipe did they even admit to the possibility of using wheat-and-7-grain bread) and it was still terrific.

  • Pasta tossed with oil (and a little garlic, parsley, etc): Very good and relatively easy, a solid recipe though perhaps not mind-blowing. I don't have much to compare to because I wasn't in the habit of making pasta without a sauce before.

  • Chicken cutlets: amazing. Brining chicken naturally takes longer, as does preparing the liquid, flour mix and bread crumbs to dip in. But holy fowl, does this make the most tender piece of chicken I have ever eaten, inside or out of a restaurant. Ever. I was worried because the breast meat seemed too moist when I started to eat, but the liquid was clear and the meat was cooked -- it was just that juicy. Again, I got this result even with a little cheating: I used frozen meat, mostly thawed by the time I turned it into cutlets. I only ate one piece fresh out of the frying pan and that was the one that caused the religious experience, but the cold or reheated leftover cutlets were also highly worth eating.



I guess the deal is that this cookbook explains so much -- not just explaining exactly what to do but why, for example what effect omitting some ingredient or step had in their tests -- makes up for me being the kind of cook who may sometimes take a few shortcuts. I have better guidance about what kind of shortcut really matters.

Monday, May 15, 2006

Colby Cosh points to this article on making more roads in Dhaka off-limits to rickshaws. Opponents of the proposal point out that rickshaws carry 54% of the city traffic using less space than private transport does, and that when more roads are put off-limits to rickshaws, their drivers' incomes dip significantly downwards. Overall, I have to say that it's nice to see reasoned debate on the topic of public transport including not only government-managed public transport but also privately-organized public transport. In most North American cities, it's easy to forget that there are many other kinds of public transport beyond the city buses and subway systems.

For a few years I worked downtown, on the close edge of the shopping and financial districts and right near a subway stop. But for various reasons the subway didn't work for me and I took the train. The problem with the train was that the train terminus was a long walk from the office (25 or 30 minutes) and I didn't like biking downtown. City buses were slower than walking! Sometimes I'd wait for a city bus for twice as long as the supposed period between buses, and then of course the next thing I'd see would be a packed full city bus with one or two empty buses stuck behind it (quite stuck, as these buses used overhead wires for power, and couldn't pass one another). Even after catching a bus on-time it was a toss-up whether it would actually move faster than a pedestrian. One day I noticed the jitney.

The jitney is easy miss despite the fact that it's an unusual vehicle, an ancient royal blue shuttle bus with big white amateur lettering. It goes from the train to various points downtown and back to the train. It only operates during prime commute hours and its schedule is carefully tailored to the train schedule. And it goes fast, taking alternate routes when necessary, changing lanes and sometimers letting passengers off on the left of a one-way street if the right side is too clogged. It took 5-10 minutes to take the jitney from the train to the office, was never late, and it cost the same as the city bus.

The problem? It was illegal. It's illegal to offer a jitney service to multiple passengers in most North American cities. That system allows public buses/subways and taxis to monopolize in-city public transport under limiting rules. It would also be illegal for somebody to run a private commuter bus service up and down the major highway here, and the public systems haven't integrated their services enough to do so (or perhaps have decided not to offer a more attractive option, so as to push people towards public commuter trains). It would be hard to change the status quo although some people are thinking about it.

I hope countries that still have creativity and open competition in public transport are wiser than North Americans. Keep those rickshaws on the road!

Thursday, May 11, 2006

Finally I can prove that this is still a knitting blog, too. I lost a hard drive and I lost the data cord to my camera (separate events). These together made me have to do a bit more work than usual to post pictures and edit pages. But finally I've posted a couple pictures of stuff finished in March on my knitting page.

Also in my Flickr set, there's a related picture of my cat. Related to knitting. Well, she always helps me when I take photos of my knitting. This time I helped her take an even closer role, that's all.

Tuesday, May 09, 2006

Jackrabbit is now a full Apache project, and Jackrabbit 1.0 is released. Jackrabbit is a reference implementation of Java API called the Java Content Repository (JCR). A repository that stores JCR can be used to store arbitrary data, just like a database can, but it's more flexible. Instead of storing data in tables, a JCR repository stores data in a hierarchy of nodes and properties. JCR can replace JDBC in many applications that require a structured repository.

Cosmo uses JCR to store shares, calendars, events and other resources. The reason we use JCR instead of a database is because JCR has a more flexible data model, and because a hiearchical data model is closer to the data models of iCalendar and the Web. There are lots of applications today that use databases when hierarchical storage would be a more appropriate model, but databases are so standard that it's still going to take a while for this alternative to gain ground. It's important to have a standard API for accessing this new kind of repository, so that a server implementation doesn't get locked into one back-end.

As with all new technologies, the reality still falls slightly short of the promise.
  • Cosmo has had to compensate for performance issues, particularly if a node has many child nodes. Flexibility has a cost, though I expect this will be improved over time.

  • JCR implementations are still rather new and I'm not aware of much interoperability testing, so we don't expect we would actually be easy to replace Jackrabbit with another JCR implementation and just have Cosmo work. Still, it wouldn't be terrible either.

  • According to BCM, both the XPath and the SQL query syntaxes that JCR provides didn't quite suffice for doing the kind of date queries we do, so BCM had to work around JCR to do time-range queries for calendaring. This kind of trick, bypassing the standard API to use the repository's own non-standard API, obviously makes the replacement issue more difficult.

Monday, April 24, 2006

I've been looking for a better understanding of what a trade deficit is, and why it's supposed to be bad, and whether it really is bad. The conventional wisdom as I've always heard it, is that the US has a large ongoing trade deficit causing job loss, debt servicing costs, and possibly currency instabilities if the foreign owners of American dollars suddenly get uneasy. Wikipedia has a discussion of the points of view of those who believe it's harmful, those who believe it's not, and those who believe it's meaningless. Whether the Wikipedia article is balanced, I can't tell. But clearly, just because a "skyrocketing trade deficit" is a great scare news article headline, and fun to accuse Republicans of, or perversely blame China for, doesn't naturally make it a bad thing. .

I can see two possible sources of gut-level unease, the kind of feelings which make people assume a trade deficit must be bad, bad, bad: fear of debt (guilt over not saving), and guilt over consumerism. The debt question comes up if the trade deficit consists of goods for debt: foreign countries exchange their goods for a promise to pay later, including interest. A trade deficit is associated with low rates of saving, again obviously bad. The consumerism guilt comes up because it makes Americans seem greedy that they import so much oil from the Middle East and so many consumer goods from Asia: it's probably felt to be evidence that Americans must be greedier than others if Americans consume so much that they have this nasty trade deficit as a result. Take these bad feelings together, and you have the question of whether it's wise to be going into so much debt just to consume more than anybody else does. When you put it that way most people are going to think it's a bad idea of course.

But it's not that simple. Japan was troubled for years by maintaining a trade surplus, where it sold desirable goods to the US but had little to use those US dollars for. The dollars fueled some purchasing of US investment properties (companies and real estate) at excessive prices. It may also be possible to maintain a trade deficit without going into debt but it's not clear to me whether a debt-free trade deficit would really make people who oppose trade deficits that much happier.

Today Colby Cosh pointed to an article in which, ironically, a Chinese economist may explain why the US trade deficit, in particular, may be calculated as much larger than it actually is. Products that are less than tangible are the problem when tallying up the numbers, of course. It makes me start to fall on the side of those who think it's meaningless. Maybe it's mostly a fictional problem, an arbitrary equation wherein we put one kind of desirable things on the left side of the equation, and another kind of desirable things on the right side, but leave a few terms out because they're too hard to add up, and finish by trying to make the numbers come out even so that it seems tidier.

Friday, March 10, 2006

Getting Things Done

Almost a year ago, I read David Allen's book Getting Things Done (GTD), and decided to apply a couple principles. I already tried to review incoming email once only, but that just wasn't quite working consistently for me, and I regularly had from 40 to 80 emails sitting in my Inbox, unfiled, because I hadn't dealt with them or decided whether or how to deal with them. At 100 emails I would usually feel overwhelmed and go back to some earlier emails and just decide, finally, not to do anything with them, and clear back out down to 40 or so.

I had also tried keeping track of tasks in a separate list from my Inbox but that also hadn't worked for me. One problem was that the list grew too big, easily to 60 items or so within a couple weeks of starting it. I needed to break it down somewhat. Breaking it down by project seemed obvious but then I had several lists and no way to see what was most important. And still there were tasks that I just didn't tackle.

The biggest value trick I got from GTD, above all the other good advice, was to organize my task list by context, rather than by project. My contexts have been:
  • At the computer (offline)
  • Online
  • At home
  • At work
  • Agendas
  • Errands
  • Phone calls
  • Waiting
  • Later/maybe
  • Done
The 'agendas' list made me look particularly organized because as soon as I had a chance to talk to somebody like my manager or somebody else I work with a lot, I could look really smart and prepared even if I hadn't actually prepared for that specific meeting. I made meetings more productive and didn't forget to cover issues that I'd previously noted I needed to cover. Naturally, the "at home" and "at work" categories kept me from sifting through tasks at an inappropriate moment, so at any moment there seems to be less pressure, less possible things to do, easier to focus. All good stuff.

But there's even more to the system than that, and I believe it's hooked into another classic piece of advice, also covered in GTD: that of identifying the next action.

It's actually very hard to identify the next action in many projects. Back when one of my projects was to get my eyes fixed up, I futzed around for maybe a year before actually setting up an eye doctor. Aside from indecision and being busy, part of the reason was because I hadn't correctly identified the first step -- without thinking too hard about it, I had only the fuzzy idea that I needed to setup an appointment with an eye surgeon. But before I could actually do that step I needed the phone number of an eye surgeon. Before that, I needed to know which eye surgeon. Before that, I needed to get some kind of recommendation. And before that, I needed to know who to ask for a recommendation. Finally, I asked a cataract eye surgeon for a recommendation, and the rest followed more easily (for the record, it was Dr. Volpicelli at Peninsula Laser Eye Medical Group).

So how does organizing tasks by context help? Because in order to decide whether the next task is one I can do at work, at home or on the phone, I need to have a concrete idea what the next task is. It makes me break down each project earlier.

Following this discipline, together with weekly reviews to see which tasks are stale and which projects don't have tasks currently in the active list, may have made me up to 20% more productive at times. It's hard to say. I don't always follow the discipline but I'm getting better.

The tool I use for the lists of tasks is called iOrganize. It's not optimized for this task, but it's sufficient. It's good at taking quick notes, giving them titles, and moving them from one category to another. I wish it could assign reminders to tasks, or optional due dates, but that's OK, it's not actually required for the way I work. I put a ** in front of the title of important tasks, trying to have from two to five tasks with "**" at any time. This allows me to search for important tasks very quickly and sort them to the top of each context list. There's a priority field too, but that doesn't allow me to search, and it didn't exist in the previous version of iOrganize so I'm already used to having "**".



I know there's many ways people follow GTD, there are blogs and near-cults out there and I'm certain there are more specialized tools, maybe I'll use one of them someday. This is just what works for me.

Monday, February 27, 2006

RFC 4331 is now up: Quota and Size Properties for Distributed Authoring and Versioning (DAV) Collections. It's my first RFC as author.

Tuesday, February 21, 2006

Scott Mace interviewed me for IT Conversations, and the podcast is now available, on the topic of calendars and calendar interoperability standards. Is it wierd listening to yourself or what?

Wednesday, February 01, 2006

You know you're working on standards too much when...

I saw a traffic sign today on University Ave. that said "Bicycles may use sidewalk". My very first reaction was that the text should be "Bicycles MAY use sidewalk"[1]. It was followed by the thought that it should also read "... thus, pedestrians MUST be prepared to encounter bicycles on the sidewalk."

[1] IETF standards have to use capitalized MAY, MUST and SHOULD to be absolutely clear when the specification is prescriptive, i.e. making a requirement, and not just being descriptive.

Monday, January 09, 2006

Ukrainian Christmas may be a Canadian prairie province tradition, according to Colby Cosh. I'm from the prairie provinces myself and love the tradition. My mother grew up in Manitoba and we celebrated Ukrainian Christmas each year in January. Often we opened Christmas presents that day, too. We'd usually travel two days to our grandparents' house for Dec 25 Christmas, with four kids, two parents, winter gear and all the presents we had to give away to aunts, uncles, cousins and grandparents, stuffed to within a foot of the ceiling of our full-sized van. After that, there just wasn't room for the stack of presents my parents bought for us kids, or that we'd bought for each other. So we'd leave those presents at home and delay gratification until early January with Ukrainian Christmas.

Of course the day also provided an opportunity for my mother to become a Ukrainian babushka, to cook the dishes she'd had as a child and serve them as a special treat for her own children: lovely yummy perogies, delicious sweet kutia, hearty holubtsi and the rest of the traditional twelve meatless dishes. The odd thing? We're not Ukrainian. Not at all. On my mother's side, English and Scottish Canadians. Nor did she take this tradition on for my father's family, who are almost all French-Canadian with a couple Scots and possibly Indian ancestors thrown in. No, she just picked up this Ukrainian tradition from proximity in rural Manitoba.

One year, living in Ontario when I was fifteen or sixteen, we nearly missed Ukrainian Christmas. My mom was travelling home the day before, but her trip was delayed somehow. When she called, my father and sister and I looked at each other in dismay, unable to imagine missing the traditional feast. No pyrogies? No kutia? How would we survive winter without? We talked each other into doing this ourselves even though my father's better with ad-hoc cooking than with established recipes, and my sister (younger) and I hadn't had much experience. But we dove in, hunting down Mom's recipes written on stained index cards, and even making stuff up when we got stuck. The kutia was great (almost impossible to mess up), I seem to recall the holubtsi was tricky to roll up in neat bundles but it was quite edible as messy piles of flavored rice somewhat contained in cabbage wrappings. The pyrogies were the toughest and many fell apart during boiling (later we discovered that they weren't supposed to have butter in the dough). But it all tasted OK, and we tallied up twelve dishes by liberally counting bread and buns and different kinds of pickles (including the necessary beet pickles) each as separate dishes. I felt so grown-up when my mother came home just in time for dinner and we enjoyed our feast.

Today I still do this, even now that I'm in California with no family nearby. For one, it gives me the chance to serve a distinctive meal for some vegetarian/kosher friends. It's also, naturally, a chance to reminisce as I cook and taste the flavours. In those years when I travel back to Canada during Christmas and Hannukah, it's my one chance to do a family holiday evening with my closest California friends. When I'm lucky, some years I manage to have a Christmas, a Hannukah and a Ukrainian Christmas dinner too. Each year I remember that one year I asked my mother why we do Ukrainian Christmas when we aren't Ukrainian. She answered that it was her belief that everybody should be able to adopt the culture of their choice, without limitations due to actual genetic descent. Three mid-winter feasts a year? That's my kind of multi-culturalism.

Blog Archive

Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 Unported License.