On being uncultured

On the way from the hotel to the restaurant for supper tonight, Tim took Josh and I on a short walking tour of what I called “art bars” – two very cool bars/clubs that were one part bar, one part art gallery. Very interesting stuff.

artbar 2

Then, to Osha (a Thai restaurant, coincidentally themed inside with elephants everywhere) for supper with the Pachydermers. I’d been crashing since about 10am, after working with Josh to stem the flow of negative Whuffie created by some miscommunication. (we got the Pachyderm authoring app up and running after an intense round of forensic analysis to find out wtf happened – then got to deal with a different but recurring problem, as described in the previous post)

At this point, I was so tired that I don’t think I could have successfully rubbed two neurons together to save my life. And everyone begins animatedly talking about the latest books they’ve read (I haven’t had any time to read fiction – or non-fiction, for that matter), or books they read as kids (I can hardly remember anything that long ago, nevermind what books I read), etc… I slowly withdrew into the corner of the table, nodding and following maybe 10% of the conversations as they swirled around me. The few comments I’m able to make are totally superficial, or seem to disappear into the background noise of the restaurant. I’m not contributing at all to the conversation, and am having trouble keeping up as a simple lurker, feeling decidedly provincial. And extremely uncultured. Not quite bumpkinesque, but I can see it from here. Truly humbling.

The saving grace is that these are all Truly Nice People. It’s nothing they’re doing – I’m just coming up short today. The irony is that once I get back to my quiet room at the hotel, and sitting in front of a keyboard, I’m almost able to maintain a stream of thought, and to construct something that appears like a coherent sentence.

OK. Now to crash, and hopefully sleep. Perhaps I’ll feel less braindead after more than 3 hours of sleep…

Debugging WebObjects

I got the chance to play with debugging a running WebObjects app today, with the added fun of having a roomful of 20 users of the app taking turns to mention “did you know that [X|Y|Z] isn’t working?”

Long story short, if you need to get the status of threads of a running WebObjects app, jdb provides some great tools. I have only scratched the surface of it, thanks entirely to the great intro document by Andrew Lindesay. (Andrew recently moved his website to .Mac from some New Zealand host, so I’m linking to help throw some Google Juice his way so others can find his article)

I’ve put a wikified crib sheet together to make it easier to get set up.

Pachyderm Year 2 Wrapup Day 1

Update: I made a Flickr Album for photos from this trip.

Had a really good first day of meetings. We had a quick lunch on the 36th floor of the Grand Hyatt, overlooking the awesome skyline of San Francisco. Then we got into the recap of the last 2 years, and touched base.

Then, we packed into a bunch of cars, and headed over to the De Young Museum in Golden Gate Park. What a cool museum! We headed straight for the Education Tower, with a spectacular view of The City – from an angle I’d never seen before.

We then proceeded with a tour through the Education Tower offices, and got a brief introduction to their education resources collection. Wow. They’ve put together a series of excellent binders for K-12 (well, 4-9 now, K-12 in January) art education. And they’re providing it free to any teacher. This is some high end stuff, so if you are looking to integrate art into your classroom, give them a shout!

View from De Young Museum TowerDe Young Museum Tower Observation DeckDe Young Museum Tower ExteriorDe Young Museum Torsion

After the tour, we were unleashed into the galleries. We spent most of our time in The Jolika Collection of New Guinea Art – very interesting pieces. And the collection wasn’t just dropped into the gallery – it feels like the rooms were designed completely around and for the collection, providing an immersive and compelling experience.

De Young Museum gallery 2De Young Museum gallery 7

As we moved through to the next gallery, the fire alarm sounded. Emergency doors slid down over every doorway and window. Metal rollers. I was expecting Halon gas to fill the gallery to protect the art, but apparently it was a false alarm. Thankfully so, since the security staff simply herded us into a group on the second floor and left us there with no apparent way to get out. We eventually were led downstairs and out of the building…

We ended the evening at Maya (2nd and Harrison) with a private dining room for the rowdy pachyderms. Some really good food (of course), and fun conversation with the folks on the project. We were also introduced to the new Pachyderm mascots – the iPachyderm. It plugs into an audio source (iPod, computer, whatever) and bops along dancing and barking and blinking and sitting and beeping and wagging and… Pachydermers @ MayaiPachyderm

iPod Microphone

This morning before the meeting started, I took a quick sprinting shopping spree through Macy’s and then to the Apple Store. Played with the new video iPods. Oh my f#cking god. How can they make something so obviously incredible? I must have one. Oh, yeah. Cash…

Where was I going with this? Oh, yeah. I also picked up a Belkin TuneTalk microphone for my iPod. Maybe Evan will give it to me for Christmas. Plugged it into my iPod and it pops up immediately with the “Record Now” screen. Cool. So, I record some sample stuff, and it doesn’t sound like crap. Actually, it sounds completely decent. With some massaging in Audacity or GarageBand, it might even sound good. I can even leave the iPod on my belt, with the microphone in place, and record myself talking while standing and walking around. Kind of like I do when I present something to a group. Hmmmm… Might have to experiment with recording my next presentation… It also seems like a pretty handy podcasting recording setup as well.

I’ll likely be playing with the microphone while I’m here. I shouldn’t record myself at the moment, as I have a little too much wine in me to want my words recorded and published to the inkernets. Tomorrow :-)

Listening to a longish recording I made today during the “Welcome”meeting, and am noticing some, well, issues with loud speech while recording. It seems like when the audio being recorded maxes out, instead of just clipping the audio, it inserts static. Be careful not to max out audio levels. It’s also entertaining to hear the iPod hard drive spinning up in the recorded audio as the file is periodically spooled to disk.

Travel ranting

This is the one where I rant/vent about my flight down. I’m blogging this from 30,000′ for therapeutic reasons… It wasn’t a bad trip down at all, and I’m seriously not complaining about being sent to San Francisco for a couple of days of meetings, but man some people are just ignorant enough to deserve a full-fledged ranting…

OK. I wake up at 3:20am – alarm’s set for 4 – and realize with a shudder that it’s only 2:20am Pacific time, but I can’t sleep the morning I have to fly anywhere. Get ready, sneak into Evan’s room to say goodbye while he sleeps, and then head downstairs to catch the cab at 5am. I arrive at the airport at about 5:20. Through checkin in about 5 minutes, then into the lineup for US Customs. It’s moving smoothly, and I’m through in about 20 minutes. I head for the lineup for the security check, and notice people starting to shove. They’re trying to follow the flight crews through the expedited lines, and they’re trying to shove their way through the remaining lines.

One very sweaty nervous little man nudges his way behind me, and quietly asks “do you mind if I ask you when your flight is? mine’s at 6:30″. I tell him mine is at 7:something, and there’s lots of time to get through security, that it won’t take any more than 15 minutes (it’s 5:55 when he asks). I decide to be an asshole (it happens occasionally). He’s got lots of time, and he’ll be through with 15-20 minutes to catch his plane if he waits patiently with the rest of us, so there’s no real emergency – just his sense of sweaty panic because he’s a moron in a suit, who can’t tell time or refuses to plan ahead. He decides he doesn’t like waiting, so makes a fuss with the agents, and is promptly rushed through the line, ahead of people that got there early enough to wait in line. Other people in line chuckle that he must have a very important meeting to be so nervous about missing it. I’d be a bit more nervous if he was running a company I was involved with – pretty obvious lack of planning skills.

10 minutes later (say, 6:05), and I’m third in line, starting to prepare my stuff to go through the X-Ray screener. A big Texan in coveralls, carrying a big duffel bag, marches through the line, to the staff side of the security checkin counter. I half expect him to open up with a hearty “WaHOO!” and pull out his dual six-shooters, all Looney Toons style. Instead, he blurts out “My flight to Dallas is at 6:30. I can’t wait in line. I need to get to my flight now!” The agent calmly replies “Well, sir, it’s not up to me. You’ll have to ask the people in line [gestures to the ~150 people in the waiting area] – maybe they’ll let you move up.” Several people in line calmly mention they’re on the same flight, but they don’t rush to the front because they know there’s lots of time left.

Texas turns to the person who’s next in line, and asks if he can join him through the security checkin. And then proceeds to remove the rope barricade so he can muscle his way into line. He then turns to us and says “This is my first time doing this – I’ve never gone through it before” – uh, Texas? how the f#ck did you get here in the first place? You’re talking with a Texas drawl, wearing a hat that says “Freer Texas” and are pretty obviously Not From Here, but you somehow managed to get up here with all of your crap without traveling by plane? And didn’t bother to pay attention when you’re told to show up at the airport 2-3 hours ahead of boarding time to deal with your own country’s security protocols? And have no problem muscling your way into line, acting like an ignorant buffoon, and making ~150 people wait while you throw a little tantrum to get your way?

Obviously, rules and lineups are for suckers. Only losers wait in line, and plan ahead.

Finally, I’m through, and find my way to gate 31 – it’s hidden in the new area – and relax in the waiting area. Lots of time. They start boarding, asking us repeatedly to board by sections (I’m in section 4, the last to board). When they call my section, I happen to be the second person to come forward. I get through to my seat, and find a woman already sprawled out in the window seat next to mine. Her coat is draped over her, as well as my seat, and she’s pretending to sleep. She must be tired. Maybe she got up early this morning. That would be rough. Oh, wait. Every single person on this plane got up early. I initially attempt to find another seat so she can continue her sprawl undisturbed, but decide that I could really use the extra leg room the exit seat provides (not to mention dual seat trays – one in front, and one in the armrest).

We take off after a short delay, and I get to see an absolutely amazing sunrise a few minutes after takeoff, once we rise above the cloud cover. It’s overcast the whole way to California, but fluffy cloud-tops are cool, so that’s fine with me. There are some pretty spectacular cloud formations off in the distance for most of the flight, with funky shadows being cast all over by the rising sun.

Sprawling Neighbor Lady eventually falls asleep for real, and repeatedly pours her bulk over into my seat. It’s fun editing XML files with a 50lb arm pinning your left arm to the armrest. I subtly nudge her a couple of times. No movement. I softly tuck her coat sleeve back over her so it’s not flapping on my keyboard. I cough, hoping the slight jarring might send a hint that she’s not exactly confining herself within one seat, and she’s not alone on the plane. She eventually takes a hint, and if I lean a bit to the right, and fold my left arm thusly, I can sort of simulate having enough elbow room to edit the 1431 xml files for the Mavericks website that I need to FTP back ASAP after landing (it launches officially tomorrow, so they need time to put it on their server). Actually, I get the files edited in record time thanks to the Glorious Wonder of BBEdit. Love it.

I finally give up on getting comfortable, and fire up Team America: World Police in iTunes. Might as well relax a bit :-)

Pachyderm Year 2 Wrap-Up in San Francisco

I’m heading down to San Franshisky for a couple of days to take part in the Pachyderm Project Year 2 Wrap-Up meetings/training/gathering at SFMOMA. I’ll be sitting in meetings during the day, trying to take a photo or two of the area in between, and working on some projects with deadlines this week during the remaining hours. Should be interesting. I’ll likely be blogging during the event, and will post what I can to Flickr.

Also, since I’ll be working on projects at night, I’ll have to go for in-room internet, which means I’ll likely be checking blogs as well… Does that count as falling off the wagon? Dunno. I’ll be out of town, on business, doing work. Whatever.

Early thoughts on Joomla (nee Mambo)

I grabbed a copy of Joomla the other day, to play around with another option for a CMS to use for projects at the Learning Commons. Some early thoughts:

  • The admin UI seems very well done – but man, is there a lot of stuff in there. Not sure I’d want to unleash that interface on a novice user, or even a casual Office warrior. I’m sure it makes more sense as you get used to it, but it’s even more jarring than Drupal, and much more complicated than WordPress (likely necessarily so, since it does so much more than WordPress, but seems like it should be on par with Drupal).
  • Seems like a very odd definition of “Open Source” in the Joomla community. Likely some historical context to make it meaningful, but of the several Joomla community sites that I’ve visited for modules and templates, they all seem to require logins to download stuff, and several require paid subscriptions – some quite steep – just to get access to something that I thought was GPL. Bizarre…
  • The content publishing process seems much more complicated than Drupal or WordPress. How do you determine which chunks of content make it to the front page, in what location? The admin interface provides a lot of bells and doodads to control that, but it’s not immediately obvious how to control the flow of content.
  • It’s got a really nice level of granularity for permissions. Admins, publishers, editors, managers, writers, etc… All with their own sets of restrictions. People with access to the admin UI can publish content immediately, while “lesser” users need to have stuff approved before it shows up.
  • The URL structure is pretty much semantically meaningless. URLs take the form of /content/view/14/2/ – and that’s with the “search engine friendly” option turned on – it’s even worse without that. There’s a spot for a “Title Alias” – but it doesn’t seem to get used as the Post Slug does in WordPress, or the Path does in Drupal. Maybe there’s another bit to twiddle for that to kick in…
  • The pervasive rich text editor / WYSIWYG dealie is pretty nice.
  • Joomla feels like a robust, mature CMS. Things like content checkin/checkout, staledating, moderation, etc. appear to be done quite nicely.
  • What’s up with Joomla’s RSS Feeds feature? It’s borked. Right now, it just gives a list of feeds, and you have to click on each one to get a list of items. It should give a merged list of items, ala Drupal or FeedOnFeeds or SuprGlu or etc…
  • Installing templates and modules – hasn’t worked for me so far. Not sure what the exact process is. Doesn’t seem to work if you just drop files into the templates or modules directories. The provided Upload/Install feature fails for me, too. I’m sure it works, but I haven’t tripped over the piece of documentation describing the installation process.

I’ll have more thoughts over the next few days – I’m setting up an instance for a demo on Friday. Right now, Drupal feels more “fluid” but Joomla feels more “newspaper-ish”. If that makes sense.

Here’s a handful of screenshots of various stages of the content publishing process:

Joomla: Control PanelJoomla: Authoring content in admin uiJoomla: Content listJoomla: View content

Mambo installer bug

Just installing Mambo for a demo of various CMS options to the team tomorrow. The Mambo installer borked while creating a table, choking on a missing default value for “rating_sum”.

Easy fix. Line 221 of mambo/installation/sql/mambo.sql is dealing with setting up the content_rating table. Modify the sql thusly:

  rating_sum int(11) unsigned NOT NULL default '0',

Aside from that silly sql bug, the Mambo installer is pretty slick. I’ll likely blog my early thoughts of it as a CMS, after I’ve played with it for awhile…

Update: Well, looks like my Mambo installation is pretty much borked. I can’t edit content – keep getting MySQL errors on missing tables or fields. I’ll try nuking and reinstalling, but this was a fresh install from the latest build, so I’m not sure what could be wrong…

Update: Nope. It’s still borked. Install claims to have run successfully, but any attempt to edit content results in this:

DB function failed with error number 1054
Unknown column 'c.access' in 'on clause' SQL=SELECT c.*, g.name AS groupname, cc.name, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author
 FROM mos_content AS c, mos_categories AS cc, mos_sections AS s
 LEFT JOIN mos_groups AS g ON g.id = c.access
 LEFT JOIN mos_users AS u ON u.id = c.checked_out
 LEFT JOIN mos_users AS v ON v.id = c.created_by
 LEFT JOIN mos_content_frontpage AS f ON f.content_id = c.id
WHERE c.state >= 0 AND c.catid=cc.id AND cc.section=s.id AND s.scope='content' AND c.sectionid='1'
 ORDER BY cc.ordering, cc.title, c.ordering
 LIMIT 0,10

Update: Mambo was borked, but the Joomla fork of the project installed perfectly…

Ultimate Tag Warrior hack: counting tags and backing up

I wanted to update my Archives page to display the total tag count, but didn’t see a built-in method in Ultimate Tag Warrior to do that. So, here’s the recipe I followed – mimicking how the other methods are set up, in case the changes get rolled into the main distro…

In ultimate-tag-warrior.php:

 function UTW_ShowUniqueTagCount() {
        global $utw;

    echo $utw->GetUniqueTagCount();

In ultimate-tag-warrior-core.php:

 function GetUniqueTagCount() {
        global $wpdb, $tabletags;

    $sql = "select count(*) from $tabletags";
    return $wpdb->get_var($sql);

And, in K2's page-archives.php (or anywhere you want the count to show up):


I've also hacked my copy of wp-db-backup.php to automatically back up the UTW tables, thusly, starting at line 407:

$wp_backup_default_tables = array ($table_prefix . categories,
    $table_prefix . comments,
    $table_prefix . linkcategories,
    $table_prefix . links,
    $table_prefix . options,
    $table_prefix . post2cat,
    $table_prefix . postmeta,
    $table_prefix . posts,
    $table_prefix . users,
    $table_prefix . tags,
    $table_prefix . post2tag,
    $table_prefix . tag_synonyms);

Censorship considered harmful

This morning, I saw that James Farmers’ Edublogs service is being banned in Australia. Censored. Blocked. Verboten. It irked me, and has been bugging me all day. Now, Brian just posted about it, and I realize I need to publicly demonstrate some form of outrage at this. It’s not enough to quietly grumble, or to simply comment on James’ blog post.

Censorship is inherently evil. The goal of censorship, by definition, is to prevent access to, or dissemination of information. Some might say it is a necessary evil, but I’d respond that it’s a very slippery slope, and that it’s far too easy to slide down past a point of no return.

Freedom is indivisible, and when one man is enslaved, all are not free. – John F. Kennedy

Hearing about an educational system that imposes censorship on all of its students, teachers and staff (and yes, it is imposed, as the only internet access available in the schools is provided by The Man) scares the hell out of me. Schools are supposed to foster communication. Critical thinking. Rational thought and behaviour.

And yet it appears as though an entire school system – “powered” by the EduConnect filtering mechanism – has decided that Blogs Are Bad, and Should Be Banned. They didn’t act against a specific blog. They’re not preventing kiddie porn, or spam, or phishing (but this is what they’ll say they are doing). They are blocking open communication. And that is nothing less than evil.

“Swimming pools can be dangerous for children. To protect them, one can install locks, put up fences, and deploy pool alarms. All these measures are helpful, but by far the most important thing that one can do for one’s children is to teach them to swim.” – National Research Council, Youth, Pornography, and the Internet

In the absolute best case scenario, this is simply a side effect of a lazy, outdated, authoritarian system trying to maintain the status quo. Instead of trying to educate people about information literacy, they decide it’s easier to just block access to information Just In Case™. I’m hoping this is all there is to the story, and that a public outcry might actually affect some form of change.

But, in a worst case scenario, open communication is essentially being outlawed in favour of a government-mandated censorship and filtering system. That has no place in modern society, especially in institutions of learning.

Here’s hoping things get opened up again. If they’re blocking EduBlogs.org, there’s no telling what else may be blocked.