Please Make Holes in My Buckets! [en]

[fr] Tour d'horizon de mes différents "profils" à droite et a gauche dans le paysage des outils sociaux (social tools). Il manque de la communication entre ces différents services, et mon identité en ligne s'en trouve fragmentée et lourde à gérer. Ajouter des contacts en se basant sur mon carnet d'adresses Gmail est un bon début, mais on peut aller plus loin. Importer ses livres préférés ou des éléments de CV d'un profil à l'autre, par exemple.

[Facebook](http://www.facebook.com/profile.php?id=503315010) is [Stowe](http://stoweboyd.com/message)’s fault. [Twitter](http://twitter.com/stephtara) was because of [Euan](http://theobvious.typepad.com/). [Anne Dominique](http://annedominique.wordpress.com/) is guilty of getting me on [Xing/OpenBC](https://www.xing.com/profile/Stephanie_Booth). I can’t remember precisely for [Flickr](http://flickr.com/photos/bunny) or [LinkedIn](http://www.linkedin.com/in/sbooth) or — OMG! — [orkut](http://www.orkut.com/Profile.aspx?uid=7955153206158244373), but it was certainly somebody from [#joiito](http://joiwiki.ito.com/joiwiki/index.cgi?IrcChannel). The culprits for [Last.fm](http://www.last.fm/user/steph-tara), [DailyMotion](http://dailymotion.com/Steph) and [YouTube](http://youtube.com/profile?user=Steph “Even got there early enough to grab ‘steph’ — now I get password reminders almost everyday, great…”) have disappeared into the limbo of lost memories. [Kevin](http://epeus.blogspot.com) encouraged me to [sign up for a good dozen of blogging platforms](http://climbtothestars.org/archives/2004/12/11/hosted-blog-platform-test-write-up/), open a [MySpace account](http://myspace.com/stephtara), and he’s probably to blame for me being on [Upcoming](http://upcoming.org/user/94465/). As for [wordpress.com](http://steph.wordpress.com), I’ll blame [Matt](http://photomatt.net) because he’s behind all that.

Granted, I’m probably the only one responsible for having [gotten into blogging](http://climbtothestars.org/about/ “Story here, abbreviated version.”) in the first place.

Let’s get back on track. My aim here is not primarily to point an accusing finger to all my devious friends who introduced me to these fun, [addictive](http://climbtothestars.org/archives/2007/02/12/addicted-to-technology/), time-consuming tools (though it’s interesting to note how one forgets those things, in passing). It’s more a sort of round-up of a bunch of my “online selves”. I feel a little scattered, my friends. Here are all these buckets in which I place stuff, but there aren’t enough holes in them.

Feeds are good. Feeds allow me to have Twitter, [del.icio.us](http://del.icio.us/steph), Flickr, and even Last.fm stuff in my blog sidebar. It also allows me to connect my blogs to one another, and into Facebook. Here, though, we’re talking “content” much more than “self”.

One example I’ve already certainly talked about (but no courage to dig it out, my blog is starting to be a huge thing in which I can’t find stuff I know it contains) is contacts or buddies — the “Mine” in [Stowe’s analysis of social applications](http://climbtothestars.org/archives/2007/02/07/stowe-boyd-building-social-applications/). I have buddy lists on IM and Skype, contacts on Flickr and just about every service I mentioned in this post. Of *course*, I don’t want to necessarily have the same contacts everywhere. I might love your photos on Flickr and add you as a contact, but not see any interest in adding you to my business network on LinkedIn. Some people, though — my **friends** — I’ll want to have more or less everywhere.

So, here’s a hole in the buckets that I really like: I’ve seen this in many services, but the first time I saw it was on Myspace. “Let us peek in your GMail contacts, and we’ll tell you who already has an account — and let you invite the others.” When I saw that, it scared me (“OMG! Myspace sticking its nose in my e-mail!”) but I also found it really exciting. Now, it would be even better if I could say “import friends and family from Flickr” or “let me choose amongst my IM buddies”, but it’s a good start. Yes, there’s a danger: no, I don’t want to spam invitations to your service to the 450 unknown adresses you found in my contacts, thankyouverymuch. [Plaxo](http://www.plaxo.com/) is a way to do this (I’ve seen it criticised but I can’t precisely remember why). Facebook does it, which means that within 2 minutes you can already have friends in the network. Twitter doesn’t, which means you have to painstakingly go through your friends of friends lists to get started. I think [coComment](http://cocomment.com) and any “friend-powered” service should allow us to import contacts like that by now. And yes, sure, privacy issues.

But what about all my **profile information**? I don’t want to have to dig out my favourite movies each time I sign up to a new service. Or my favourite books. Or the schools I went to. I mean, some things are reasonably stable. Why couldn’t I have all that in a central repository, once and for all, and just have all these neat social tools import the information from there? Earlier today, [David](http://galipeau.blogspot.com/) was telling me over IM that he’d like to have a central service to bring all our Facebook, LinkedIn, OpenBC/Xing, and MySpace stuff together. Or a way to publish his CV/résumé online and allow Facebook to access it to grab data from it. Good ideas, in my opinion.

I’ll mention [OpenID](http://openid.net/) here, but just in passing, because although in my dreams in used to hold the promise of this centralised repository of “all things me”, I don’t think that it’s what it has been designed for (if I get it correctly, it is identity **verification** and doesn’t have much to do with the **contents** of this identity). [Microformats](http://microformats.org) could on the other hand certainly come in handy here.

So, please, make more holes in my buckets. Importing Gmail contacts in sticking feeds here and there is nice, but not sufficient. For the moment, Facebook seems promising. But let me use Twitter for my statuses, for example, or at least include the feed somewhere (I can only include one feed, so I’ve included my [suprglu one](http://steph.suprglu.com/), but it has a huge lag and is not very satisfying). Let me put photographs in my albums directly from Flickr. Talk with the profiles I made with other similar services. Grab my school and work info from LinkedIn and OpenBC. Then make all this information you have about me available to republish how I want it (feeds, feeds, feeds! widgets! buttons! badges!) where I want it.

Also, [more granularity](http://climbtothestars.org/archives/2006/12/12/you-should-twitter/). Facebook has a good helping of it: I can choose which type of information I want to see from my contacts. I can restrict certain contacts from seeing certain parts of my profile. I’d like fine control on who can see what, also by sorting my people into “buddy groups”. “Friends” and “Family” as on Flickr is just not enough. And maybe Facebook could come and present me with [Stowe-groupings](http://climbtothestars.org/archives/2007/02/07/stowe-boyd-building-social-applications/) of my contacts, based on the interactions I have with them.

Share your wild ideas here if you have any.

Similar Posts:

Life and Trials of a Multilingual Weblog [en]

Here is an explanation of how I set up WordPress to manage my bilingual weblog. I give all the code I used to do it, and announce some of the things I’d like to implement. A “Multilingual blogging” TopicExchange channel is now open.

[fr] J'explique ici quelles sont les modifications que j'ai faites à WordPress pour gérer le bilinguisme de mon weblog -- code php et css à l'appui. Je mentionne également quelques innovations que j'ai en tête pour rendre ce weblog plus sympathique à mes lecteurs monolingues (ce résumé en est une!) Un canal pour le weblogging multilingue a été ouvert sur TopicExchange, et vous y trouverez peut-être d'autres écrits sur le même sujet. Utilisez-le (en envoyant un trackback) si vous écrivez des billets sur le multinguisme dans les weblogs!

My weblog is bilingual, and has been since November 2000. Already then, I knew that I wouldn’t be capable of producing a site which duplicates every entry in two languages.

I think this would defeat the whole idea of weblogging: lowering the “publication barrier”. I feel like writing something, I quickly type it out, press “Publish”, and there we are. Imposing upon myself to translate everything just pushes it back up again. I have seen people try this, but I have never seen somebody keep it up for anything nearing four years (this weblog is turning four on July 13).

This weblog is therefore happily bilingual, as I am — sometimes in English, sometimes in French. This post is about how I have adapted the blogging tools I use to my bilingualism, and more importantly, how I can accommodate my monolingual readers so that they also feel comfortable here.

First thing to note: although weblogging tools are now ready to be used by people speaking a variety of languages (thanks to a process named “localization”), they remain monolingual. Language is determined at weblog-level.

With Movable Type, I used categories to emulate post-level language awareness. This wasn’t satisfying at all: I ended up with to monstrous categories, Français and English, which didn’t help keep rebuild times down.

With WordPress, the solution is far more satisfying: I store the language information as Post Meta, or “custom field”. No more category exploitation for something they shouldn’t be used for.

Before I really got started doing the exciting stuff, I made a quick change to the WordPress admin interface. If I was going to be adding a “language” custom field to each and every post of mine, I didn’t want to be doing it with the (imho) rather clumsy “Custom Fields” form.

In edit.php, just after the categorydiv fieldset, I inserted the following:

<fieldset id="languagediv">
      <legend>< ?php _e('Language') ?></legend>
	  <div><input type="text" name="language" size="7"
                     tabindex="2" value="en" id="language" /></div>
</fieldset>

(You’ll probably have to move around your tabindex values so that the tabbing order makes sense to you.)

I also tweaked the wp-admin.css file a bit to keep it looking reasonably pretty, adding the rule below:

#languagediv {
	height: 3.5em;
	width: 5em;
}

and adding #languagediv everywhere I could see #poststatusdiv, so that they obeyed the same rules.

In this way, I have a small text field to edit to set the language. I pre-set it to “en”, and have just to change it to “fr” if I am writing in French.

We just need to add a little piece of code in the form processing script, post.php, just after the line that says add_meta($post_ID):

 // add language
	if(isset($_POST['language']))
	{
	$_POST['metakeyselect'] = 'language';
        $_POST['metavalue'] = $_POST['language'];
        add_meta($post_ID);
        }

The first thing I do with this language information is styling posts differently depending on the language. I do this by adding a lang attribute to my post <div>:

<div class="post" lang="<?php $post_language=get_post_custom_values("language"); $the_language=$post_language['0']; print($the_language); ?>">

In the CSS, I add these rules:

div.post:lang(fr) h2.post-title:before {
  content: " [fr] ";
  font-weight: normal;
}
div.post:lang(en) h2.post-title:before {
  content: " [en] ";
  font-weight: normal;
}
div.post:lang(fr)
{
background-color: #FAECE7;
}

I also make sure the language of the date matches the language of the post. For this, I added a new function, the_time_lg(), to my-hacks.php. I then use the following code to print the date: <?php the_time_lg($the_language); ?>.

Can more be done? Yes! I know I have readers who are not bilingual in the two languages I use. I know that at times I write a lot in one language and less in another, and my “monolingual” readers can get frustrated about this. During a between-session conversation at BlogTalk, I suddenly had an idea: I would provide an “other language” excerpt for each of my posts.

I’ve been writing excerpts for each of my posts for the last six months now, and it’s not something that raises the publishing barrier for me. Quickly writing a sentence or two about my post in the “other language” is something I can easily do, and it will at least give my readers an indication about what is said in the posts they can’t understand. This is the first post I’m trying this with.

So, as I did for language above, I added another “custom field” to my admin interface (in edit-form.php). Actually, I didn’t stop there. I also added the field for the excerpt to the “simple controls” posting page that I use (set that in Options > Writing), and another field for keywords, which I also store for each post as meta data. Use at your convenience:

<!-- BEGIN BUNNY HACK -->
<fieldset style="clear:both">
<legend><a href="http://wordpress.org/docs/reference/post/#excerpt"
title="<?php _e('Help with excerpts') ?>"><?php _e('Excerpt') ?></a></legend>
<div><textarea rows="1" cols="40" name="excerpt" tabindex="5" id="excerpt">
<?php echo $excerpt ?></textarea></div>
</fieldset>
<fieldset style="clear:both">
<legend><?php _e('Other Language Excerpt') ?></legend>
<div><textarea rows="1" cols="40" name="other-excerpt"
tabindex="6" id="other-excerpt"></textarea></div>
</fieldset>
<fieldset style="clear:both">
<legend><?php _e('Keywords') ?></legend>
<div><textarea rows="1" cols="40" name="keywords" tabindex="7" id="keywords">
<?php echo $keywords ?></textarea></div>
</fieldset>
<!-- I moved around some tabindex values too -->
<!-- END BUNNY HACK -->

I inserted these fields just below the “content” fieldset, and styled the #keywords and #other-excerpt textarea fields in exactly the same way as #excerpt. Practical translation: open wp-admin.css, search for “excerpt”, and modify the rules so that they look like this:

#excerpt, #keywords, #other-excerpt {
	height: 1.8em;
	width: 98%;
}

instead of simply this:

#excerpt {
	height: 1.8em;
	width: 98%;
}

I’m sure by now you’re curious about what my posting screen looks like!

To make sure the data in these fields is processed, we need to add the following code to post.php (as we did for the “language” field above):

// add keywords
	if(isset($_POST['keywords']))
	{
	$_POST['metakeyselect'] = 'keywords';
        $_POST['metavalue'] = $_POST['keywords'];
        add_meta($post_ID);
        }
   // add other excerpt
	if(isset($_POST['other-excerpt']))
	{
	$_POST['metakeyselect'] = 'other-excerpt';
        $_POST['metavalue'] = $_POST['other-excerpt'];
        add_meta($post_ID);
        }

Displaying the “other language excerpt” is done in this simple-but-not-too-elegant way:

<?php
$post_other_excerpt=get_post_custom_values("other-excerpt");
$the_other_excerpt=$post_other_excerpt['0'];
if($the_other_excerpt!="")
{
	if($the_language=="fr")
	{
	$the_other_language="en";
	}

	if($the_language=="en")
	{
	$the_other_language="fr";
	}
?>
    <div class="other-excerpt" lang="<?php print($the_other_language); ?>">
    <?php print($the_other_excerpt); ?>
    </div>
  <?php
  }
  ?>

accompanied by the following CSS:

div.other-excerpt:lang(fr)
{
background-color: #FAECE7;
}
div.other-excerpt:lang(en)
{
background-color: #FFF;
}
div.other-excerpt:before {
  content: " [" attr(lang) "] ";
  font-weight: normal;
}

Now that we’ve got the basics covered, what else can be done? Well, I’ve got some ideas. Mainly, I’d like visitors to be able to add “en” or “fr” at the end of any url to my weblog, and that would automatically filter out all the content which is not in that language — maybe using the trick Daniel describes? In addition to that, it would also change the language of what I call the “page furniture” — titles, footer, and even (let’s by ambitious) category names. Adding language sensitivity to trackbacks and comments could also be interesting.

A last thing I’ll mention in the multilingual department for this weblog is my styling of outgoing links if they are written in a language which is not my post language, using the hreflang attribute. It’s easy, and you should do it too!

Suw (who has just resumed blogging in Welsh) and I have just set up a “Multilingual blogging” channel on TopicExchange — please trackback it if you write about blogging in more than one language!

Similar Posts: