Airport Extreme on Telus DSL?

I’ve been struggling with this all day. Haven’t found much help on the Telus website, and their tech agents haven’t had much in the way of helpful suggestions.

I use Telus DSL at home, recently switching to the TelusTV service (which apparently also affects the internet service, as the internet guys keep forwarding me to the TV department for support. wtf?)

My old Linksys 802.11a router has been acting up, so I splurged on a new Apple Airport Extreme 802.11n base station. I have it hooked up to the ethernet switch installed by the TelusTV guy the other day.

DSL Modem –> ethernet switch –> Airport Extreme –> Computer

If I run the AE in “Bridge” mode, with no DHCP service (so it’s essentially a hub, not a router), I can get an IP address if connecting via ethernet to the AE. If I try wireless, there’s no joy. If I try to “share a single IP address” – turn on DHCP and routing – the AE complains about pulling an invalid IP address (even though it’s the same one that was pulled by the computer when running the AE in Bridge Mode). No joy in connecting to the Internet via ethernet or wireless in that mode.

I’ve registered the MAC address for the AE via Telus’ registry app at – no joy.

Lazyweb request: has anyone configured an Airport Extreme to run over Telus DSL via TelusTV? This really shouldn’t be an all-day ordeal. Any tips? Is there a magic phone number or email address to contact to make things work the way they’re supposed to?

I’ve been seriously considering ditching Telus for internet to get it via Shaw, where this balogna apparently doesn’t happen. But that would likely mess up the whole TelusTV thing…

Update: here’s a kicker – I’ve entered both the AE ethernet and wireless MAC addresses into the 2 slots provided on to register my computers. My laptop’s MAC address is not registered. But, if I set the AE to “Bridge Mode”, the laptop can surf the web happily while connected to the AE via ethernet. If I set the AE to “Share a single IP address” mode, so that its MAC addresses are visible, then I can’t get off the LAN. WTF? There’s got to be a secret handshake somewhere… Haven’t been able to connect to the internet via wireless at all, no matter what mode the AE runs in.

Update: a handy dandy OmniGraffle diagram of the network topology:

Telus TV Network Topology

Update, the third: Finally got it working, with “share a single public IP address” running. Looks like the AirportExpress wasn’t reading the DNS values provided by DHCP, so nothing was resolvable. And Telus doesn’t appear to like off-Telus DNS servers, so I couldn’t just manually add others. Seems to be working now, after setting the AE internet panel to use “manual” and providing the info.

For future googlers: the DNS servers I use from Telus are


Drupal Debugging – Fun with CCK, Links and Token.module

I had to debug our TLC website this morning, as it was pointed out to me that parts were misbehaving, and that some content hadn’t survived the upgrade from Drupal 4.7 to Drupal 5.2. The missing content was easy, for the most part. It’s just a matter of renaming the tables to use the content_TABLE format expected by the current CCK module. The exact table names that are expected are listed in the node_type table, under the “orig_type” field – just prepend “content_” to the “orig_type” value for the table name, and CCK should find everything just fine.

One of the CCK content types used the weburl field type under Drupal 4.7, but this has apparently been replaced by “link” in Drupal 5′s version of CCK. That’s fine, I’ll just swap out the data. Shouldn’t be too bad.

What got puzzling, though, was that after switching to link, I was getting segmentation faults on the webserver every time I tried to view, save, or template a CCK content type containing a link. WTF? At first, I didn’t make the connection that it was link that was causing problems. Eventually, I created a “test” CCK content type, containing the same fields as the offending content type (every time I tried to view anything in our “Simple Resource” content type, hell was unleashed). I reproduced the same set of fields, and BOOM, Simple Resource was also bringing down the server. So, I started removing fields. Didn’t take long, since the content type had a total of 2 fields. I started with the Link field. And the content saved, viewed, and templated just fine.

AHAH! It’s something wrong with Link! Maybe it’s trying to validate the URL? Maybe it’s trying to download the content at the other end of the URL to do some processing?

Nope. Turns out, Link may use the token.module to parse out bits of the URL. But token.module was getting caught in a recursive loop. I had to install token.module to support the current version of pathauto.module – I need that, so I can’t disable token.module. Turns out, there’s an easy way to avoid this recursion-killing-the-webserver segmentation fault problem. In the CCK definition for the link field, just uncheck the “Allow Tokens” option. Yeah. It’s that easy. But it took me all frigging morning to figure out what the problem was, and about 5 seconds to fix it once it was identified.

Links that were useful in diagnosing and solving this:

My GTD Apps

I’ve been trying a workflow to stick to a GTD plan. Now that I’ve got my email inbox mostly wrestled under control, I’m working more with 2 other apps that have really helped me keep on top of things. Is the plan perfect? Well… I’m writing a blog post instead of Getting Things Done, so I appear to be the weak link in the chain, but at least it’s not a software problem.

GTD Apps

iGTD has been a really great app for tracking tasks. Not just a simple to-do list, but a more GTD-aware, context-oriented task tracker/manager. Very handy. It also integrates with iCal, and from there onto my iPod. I’ve got contexts for “In the Office”, “At Home”, “On the Road” and “Anywhere” – so I can pull up a list based on context to see what needs to be done. I also have Projects set up, including real TLC projects and various other groupings of stuff I need to do. I’m really digging the “Priority” and “Effort” controls – making it easy to find the most “important” task to do at any given time. Combined with start/end dates, I think I’m doing better at prioritizing what I’m doing. When I’m not stepping back to write a blog post, that is.

The other app I’m using more now is Journler. It’s a great outboard brain app, able to store info and organize it by categories and/or tags. It integrates with any app via Services, and is becoming my go-to app to find important info. I’ve used it for simply storing account info since January, but it’s growing pretty quickly to include anything I need to remember – stuff that doesn’t need to get published/shared to my blog.

The problem I’m having is in keeping things in sync between the 2 computers I use. I’m using the desktop as the “master” and periodically grabbing the iGTD and Journler data files/directories to copy onto my MBP, but what if I make an edit on the road, or at home? I might have to look into re-upping for .Mac after all, just to get iSync. Why on earth isn’t iSync Server bundled into MacOSX Server, so we can run our own iSync Server?

Before this, my strategy was to Use Lots of Big Whiteboards, but I’ve lost the real estate to do that effectively, having only one smallish whiteboard now. sniff  I do miss the everything-at-a-glance power that strategy gives, but I think the new GTD trio of tools might work out to be more scalable.

OK. Enough blogging. Now to GTD…

Agents Provocateurs

This week, at the North American Leaders Summit in Montebello, Quebec, 3 undercover police officers pretended to be protesters in an attempt to provoke violent incidents. The entire series of events was captured on video, and shared via YouTube. The cops are the three goons with bandanas over their faces. None of the real protesters wore disguises. One of the cops is carrying a rock.

Agents Provocateurs with a rock

Agent provocateur with a rock in his right hand.

The real protesters intervene, trying to prevent violence. Somehow, they realize that the agents provocateurs are cops, and accuse them of that. The fake protesters stop dead in their tracks, and one of them can be seen leaning over and talking with one of the uniformed riot police – over the riot shield – and shortly afterward, the three “protesters” are yanked out, “arrested” and carried to the safety of the police side of the line.

The Quebec Provincial Police have admitted that the 3 “protesters” were cops in disguise.

Elizabeth May, leader of the Green Party of Canada (and, one can only hope, future Prime Minister of Canada) wrote a description of the event on her blog (the Green website is Drupal, by the way…) Similar events allegedly happened in Seattle and Quebec City. Police either staging or allowing violence in order to justify cracking down on protesters.

This is unacceptable. I expect all police officers involved in this action to be summarily fired. And the entire chain of command, up to whoever ordered this. We can’t stand for our police forces to be instigating violence. Thankfully this didn’t happen this time. But it was damned close.

As a Canadian citizen, I demand an inquiry. I demand it to be public and open. And I expect for this to never, ever happen again. We are above this.

What scares me is this – what would have happened without YouTube to get the video out? There was video taken at Seattle and Quebec City, but it stayed on analog tape and didn’t get as widely circulated. This is why “Web 2.0″ is important. Never mind personal publishing for cat blogging, and ego surfing and identity management. The reason Web 2.0 is changing the world is by putting the power back into the hands of individuals. Democracy is mass media, in action.

Inbox Zero

Watching Merlin Mann‘s “Inbox Zero” presentation at Google. I got inspired to stop saving emails for CYA purposes. I just deleted over 1600 messages that were accumulating in my inbox. I saved less than 100, into a “Deadmail” archive folder.

This is the cleanest my inbox has looked since I got the account in 1987. Yes. The account is now 20 years old. Actually, this is probably even cleaner than that, since it came with a “Welcome” message, IIRC.

I’m going to try REALLY hard to stick to the “actions” philosophy – delete, delegate, archive, respond, do something.

Inbox Zero

BikeCam, the other way

This BikeCam slideshow is the other way, both in direction and technique. I stuck the camera on the handlebars for the ride home, and used QuickTime Pro’s “Open Image Sequence…” feature to build a movie at 2fps automagically. That took maybe 5 minutes, including the resized export of all images from Aperture. That was muuuuch easier/quicker than the way I built the last one (using iMovie – that was pretty easy, but this was just pointing QuickTime at a directory and exporting the result). Easy peasy.

[flv: 480 360]

Update: made a new version of the video, with a soundtrack. Rise and Fall, by Sylvie (couldn’t find a link!)

Updating a Large Scale Drupal Multisite Installation?

In the Teaching & Learning Centre, we run a couple of servers, each with a dozen or so Drupal sites installed in a multisite configuration (one copy of Drupal, using the sites directory to respond to various URLs). With every update to core or modules, the update.php file needs to be called for each site. That’s not too onerous, but is a bit of a PITA.

Our central IT shop at the University of Calgary has a whole ‘nother problem. Their Drupal server is currently running well over 400 sites. So, calling update.php on each one effectively means having a bunch of folks (students? interns?) clicking through the update.php screens for each site. Say it takes maybe 5 minutes per site, that’s over 30 hours of labour to update all sites. And new sites are added every day.

There has to be a better way. I was hoping Sympal Scripts had some magic fu, but came up empty. Are there any secret tricks to calling update.php on each site quasi-automatically for a large-scale Drupal multisite installation?

Flickr Faves – 2007/08/15

It’s been awhile since I’ve posted one of these. My head is pretty obviously still on Maui. If only there was a demand for lowly edtech geeks on Maui…

All but 3 of these shots are from Hawaii, and most of them are from Maui. 10 points to the first person to identify all 3 non-Hawaii photos in this set of Faves…