Contact us
Here.
Been a low-key week here at WGBH Online World Headquarters, or as we call it WOW HQ.
The big event of the week: I got a haircut. All that goofy hair on my head was making it hard to think properly, so I had quite a bit of it lopped off. Things should really start picking up now.
Pete and I have been finishing up our first pass at the TV schedule pages (a multi-channel grid, full day schedules by channel, and a Programs A-Z list). Doesn’t sound like much, just three pages (basically), but there’s quite a bit involved, as you might imagine.
The plan is to get these pages in shape and then post to our test suite for a preliminary round of testing. This testing will be done by people other than Pete and I and the purpose is really just to evaluate how well the data is being imported from PBS. We haven’t worked up a formal test plan yet, but it will most likely involve comparing the WGBH schedules on PBS.org (which use the exact same TV Guide data) to the schedules we’re producing with the new code. We won’t yet be testing the ability to modify this information locally.
Needless to say, testing is just an annoying formality. The odds of there being any bugs in our code are minimal.
I’ve also been working with our new project manager Louise (Hi, Louise! I know you’re reading this…) to help fully flesh out the project tasks and schedule. That’s been a long process but I think we finally have all of the pieces laid out and scheduled.
In addition to the schedule page testing, we’ve also blocked out a longer period of time for full functional testing after we complete all of the development for this module (i.e. schedule pages and program and episode pages), as you would expect. Again, that’s testing outside to be done by others distinct from the unit testing that Pete and I do during coding. We thought about trying to break out functional testing into a more discreet chunks, but given the relatively small size of this project, it didn’t seem to make sense.
OK, I gotta go wrap up these schedule pages. Don’t forget to call mom on Sunday! I mean your mom, not mine. I’ll handle her.
So my friend Cory Ondrejka (co-creator of Second Life) started an interesting thread last week that I didn’t see covered as widely as it should. Here are his slides — alas I didn’t get to hear the narration that went with it, but I can guess.
| View | Upload your ownWhat he seems to be describing is apparently not too far from what I’ve been writing about for a while. The part I’m still skeptical about is the life-logging, and probably because of my own preference for privacy. You’ll notice I don’t twitter. I have a hard time believing anyone would even care to follow what I do from moment to moment. And I think careful editing is the secret to any compelling narrative. I just don’t want to put gigabytes of sub-standard, often mundane, prose out there into the digital firmament.
But putting that aside, the germ (and/or gem) of what he’s saying, and the part I totally agree with, is this notion of a pervasive synthesis of augmented, mirror, and alternate realities — no need to distinguish between those arbitrary categories. Turns out, there’s an old word for this which I think we can now safely revive to summarize the intent:
magic
Apparently Python only recognizes a doc string a litteral string placed after a function definition, meaning it won't accept an interpolated string, or even 'a'+'b', for whatever reason. For example:
>>> def doc(): ... '''Useful info. Note: %s''' % 'You'll never see this.' ... print doc.__doc__ >>> doc() NoneTo work around this you must explicitly set __doc__. Example:
>>> def doc(): ... doc.__doc__ = '''Useful info. Note: %s''' % 'Bacon is yummy!' ... print doc.__doc__ >>> doc() Useful info. Note: Bacon is yummy!If you intend to use passwords for local database authentication, you'll need to make an adjustment to the pg_hba.conf file:
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD #local all all ident sameuser local all all passwordFor example, to display the 20 largest files owned by joe:
find / -printf "%k\t%p\n" -user joe | sort -n | tail -20display the route from your server to any email address:
exim -bt email@domain.comsend an email using exim:
exim -v email@domain.comshow the number of emails in the queue:
exim -bpcdisplay the mail queue:
exim -bpflush queue:
exim -qff &view a particular mail in the queue:
exim -Mvh msgid (for headers) exim -Mvb msgid (for body)On a new windows install I'll always drop in these entries for startup configuration:
" general settings set sw=4 set ts=4 set et set nohls " lhs comments map ,# :s/^/#/<CR> map ,/ :s/^/\/\//<CR> map ,> :s/^/> /<CR> map ," :s/^/\"/<CR> map ,% :s/^/%/<CR> map ,! :s/^/!/<CR> map ,; :s/^/;/<CR> map ,- :s/^/--/<CR> map ,c :s/^\/\/\\|^--\\|^> \\|^[#"%!;]//<CR> " wrapping comments map ,* :s/^\(.*\)$/\/\* \1 \*\//<CR> map ,( :s/^\(.*\)$/\(\* \1 \*\)/<CR> map ,< :s/^\(.*\)$/<!-- \1 -->/<CR> map ,d :s/^#//<CR> " screen location & dimensions winpos 50 50 set lines=30 set columns=120 " squirrel away backup files set bdir=c:/backups set directory=c:/backupsNote: You'll need to create the backup folder before you can use it.
When you're choosing a file to open in vi(m), you can limit your search to a mask:
:e *.pl[tab]At this point you're only tab'ing through the .pl files.