This is a demonstration [en]

I’m now giving a talk at ISL, and this is a demonstration post for Year 10. See how easy it is!

Problèmes d'encodage MySQL [fr]

Un joli mélange de latin-1 et d’utf-8 dans ma base de données. Un script python pour nettoyer tout ça.

[en] I've been to MySQL encoding hell and back. The little question marks you may have seen in place of accented characters a few weeks back were caused by a lovely mix-up of utf-8 and latin-1 inside my databases. Dda_ from #joiito kindly helped me by writing a python script to identify fields with non-utf-8 characters in them, and convert them back.

Vous avez peut-être remarqué, il y a une semaine ou deux, que les accents de ce site avaient été remplacés subrepticement par de vilains points d’interrogation. Une fois de plus, je me trouvais dans la situation où je croyais avoir de l’utf-8 dans mes bases de données, pour réaliser ensuite qu’il s’agissait en fait de latin-1. Et cette fois, c’était encore bien pire qu’avant: j’avais un mélange d’utf-8 et de latin-1.

Dda_ a eu la grande gentillesse de passer plusieurs heures à  me pondre un script en python qui fait le tour de tous les champs de toutes les tables de toutes les bases de données, et les convertit en utf-8 s’il y détecte des caractères non-utf-8 (ce qui signifierait, dans mon cas, qu’on se trouve en présence de latin-1). Une fois que c’est fait, le script va changer l’encodage des tables pour que tout nouveau contenu y soit stocké en utf-8.

Bref, voici l’explication et le script.

Infimes précisions [fr]

Je n’ai pas écrit Blog Story. Remise en contexte d’une remarque que je commente dans Journal Infime. Allumez vos téléviseurs dimanche à  20h00, je serai l’invitée de Mise au Point sur la TSR1. Quelques commentaires sur mes aventures avec les médias.

[en] A clarification about something said in the second part of my radio interview. Aside from that, I'll be on TV Sunday evening. I'll try to find out if it can be viewed online.

Si vous avez écouté Journal Infime aujourd’hui, vous aurez sans doute noté que suite à  une petite maladresse de la présentatrice, je me suis retrouvée propulsée auteur de Blog Story. Je vous rassure, rien n’a changé, ce sont toujours bien Cyril et Emily qui en sont les auteurs.

Il y a un point dans l’interview d’aujourd’hui qui mérite un commentaire. Martine Galland m’invite à  parler d’une remarque que je fais dans mes réflexions blogosphériques:

N’allez pas chercher plus loin qu’une famille “à  secrets” pour saisir mes motivations profondes…

Revenons au contexte dans lequel je fais cette remarque. En fait, j’essaie d’expliquer d’où vient la tendance, parfois très marquée chez moi, à  décortiquer les discours, les événements ou les idées, à  vouloir traquer “l’erreur” et la désinformation, casser les mythes et les illusions.

La problématique du secret n’eclaire à  mon sens pas vraiment, comme la structure de l’interview le laisse entendre, mes motivations profondes à  vouloir partager ainsi [ma] vie avec des milliers de lecteurs. Ma remarque, remise dans son contexte, concernait mes motivations à  décortiquer (et critiquer) les articles parus sur les weblogs. Face à  ce qui me paraissait être une forme de désinformation, je montais sur mon cheval de bataille pour clâmer au monde que la vérité n’était pas celle qu’on leur avait servie, poussée par un élan qui pour moi prend clairement sa source dans ce que j’ai vécu, enfant, dans ma famille.

Ce qui me pousse à  partager mes idées et quelques morceaux de ma vie sur internet, c’est à  mon avis plus un besoin d’exister, d’être entendue, reconnue. Je n’y vois pas tant un besoin de mettre au grand jour ce qui est caché en moi qu’un besoin assez primordial d’expression. En écrivant ces lignes, toutefois, je me rends compte que ce besoin d’expression pourrait être interprété comme un refus de jouer le jeu du secret — du silence. Est-ce lié? Possible… mais pour moi le lien n’est pas clair, et je ne le faisais certainement pas lorsque j’écrivais mes Réflexions blogosphériques.

Vous venez en passant d’avoir une démonstration, en direct, du besoin impérieux qui m’habite de m’assurer que j’ai bien été entièrement comprise…

Je poursuis ce billet coloré “presse” en vous proposant de regarder Mise au Point dimanche à  20h00 sur la TSR1. (Je ne vous donne pas plus de détails, z’avez qu’à  regarder… ou lire la suite!)

Après le petit couac concernant Migros Magazin, j’ai été heureuse d’apprendre le fin mot de l’histoire au sujet de ma mésaventure avec Le Temps. En effet, j’avais été interviewée pour un article, que la (fort sympathique) journaliste m’avait ensuite soumis pour relecture et feedback (quelques échanges de mails). Quelle n’a pas été ma surprise, lorsque, lisant le dossier consacré aux blogs dans les pages 2 et 3 du Temps le 2 février dernier, j’ai pu constater la totale absence de cet article que j’avais pourtant vu à  plusieurs reprises!

La journaliste qui m’avait interviewée étant à  ce moment-là  en vacances à  l’autre bout du monde ou presque, elle n’a pas été en mesure d’éclairer ma lanterne quant à  la raison exacte de cette disparition. C’est maintenant chose faite, et c’était un peu ce que je soupçonnais: manque de place, on a sacrifié un article. La journaliste n’avait malheureusement pas les lignages exacts pour réduire ses articles avant de partir en vacances. Ce sont des choses qui arrivent.

Sur le moment, cela m’avait d’autant plus déçue que la parution de ce dossier dans Le Temps avait incité la production de Mise au Point à  changer l’angle du reportage sur les blogs, renonçant à  m’interviewer pour pouvoir aborder plus longuement la question des adolescents skyblogueurs. J’avais passé plus de 6 heures à  parler avec le réalisateur, on avait fixé un jour de tournage, il m’avait montré un premier jet de scénario… double déception. Mais, comme je vous l’ai dit, les choses finissent bien pour moi (enfin, je trouve!) puisque je serai l’invitée du plateau de fin d’émission.

J’avoue une certaine excitation à  l’idée de “passer à  la télé”, et j’ai réalisé en en parlant autour de moi que tout le monde ne réagirait pas ainsi. Et vous, chers lecteurs — ça vous plairait, une apparition télévisuelle, ou bien c’est plutôt le genre de chose que vous préféreriez éviter? Je suis curieuse de vous entendre à  ce sujet.

Mise à  jour 17.02.2005: extraits cités par Mireille Galland dans la troisième partie de l’interview:

Migros Magazine Photos on Flickr [en]

Four photographs of me, and one of my hands typing, taken by the photographer who came for Migros Magazine in December.

[fr] Cinq photos prises par la photographe qui a fait les images pour l'article dans Migros Magazine, sont maintenant sur Flickr. Photos mises en ligne avec son autorisation. Merci!

I’ve uploaded five photographs taken by the photographer for the interview I gave to Migros Magazine.

Photograph of Stephanie blogging.

The photographer, is a very nice person who kindly allowed me to put them online for you to see. I’d like to point out how extraordinarily patient she was during the whole three hours of the photo session — and she was using her sick collegue’s material, on top of that. I guess patience is a quality needed to do the job, but still, she really made the whole thing a pleasant experience, despite its length. Thanks!

Update 01.06.2005: photographer’s name removed at her request.

Article dans La Liberté [fr]

Un article dans La Liberté, pour lequel j’ai été interviewée, parle de la diversité de la blogosphère.

[en] A brief interview of me appeared today in La Liberté, on a page about the diversity of the blogosphere (PDF).

Un article dans La Liberté, Puissance et extension de la blogosphère (PDF), parle de la diversité de la blogosphère. Il y a aussi un petit interview “questions-réponses” de moi en encadré.

Article intéressant, à  mon avis, qui présente bien les différentes tendances existant parmi les blogs. Dommage simplement (pour un article sur les blogs!) qu’il n’indique pas une seule URL!

Fixing Newline Abuse in WordPress [en]

Newlines had crept into some of my old posts and corrupted the formatting. Quick and dirty script I used to solve the problem.

[fr] Des retours à  la ligne excédentaires se sont glissés dans mes anciens posts à  un moment donné, cassant des liens et le formattage en général. J'ai utilisé un petit script pour supprimer tous les retours à  la ligne de ces posts.

I only realised right now how badly broken about 500 of my old posts where. Somewhere in the process, newlines got added at the end of each line, and not just at the end of each paragraph. As WordPress kindly and intelligently adds the necessary HTML markup for paragraph and line breaks in posts, this meant that lots of my posts had broken links (when the newline occurred in the middle of a link) and uneven lines.

Victims: about 500 posts.

Solution: luckily, all the concerned posts had complete HTML formatting in them. Purely and simply removing all the newlines with a short PHP script was the way to go.

Thanks to all those who helped. You probably won’t be able to use the script as is, but if you have a similar problem at some point, it might help. The script pulls out the posts from the WordPress database, removes the newlines, and puts the post back into the table.

Ferme à  weblogs sous DotClear [fr]

Si vous voulez ouvrir un weblog en français, ne ratez pas Mon-Blog.org

[en] A really neat hosted blogging platform in French. Runs DotClear.

Si vous cherchez une plateforme “hébergée” pour ouvrir votre blog, allez jeter un oeil du côté de Mon-Blog.org.

C’est tout frais (un peu vert encore, mais l’aide sur les forums est réactive), c’est beau, c’est DotClear sans l’installation. J’y ai ouvert un weblog test, allez voir.

Merci Julien pour l’info — tu as su comment?

MagpieRSS Caching Problem [en]

I have a caching problem using the PHP MagpieRSS library to parse feeds. Any help welcome.

[fr] J'ai un problème de cache utilisant la librarie PHP MagpieRSS. Toute aide bienvenue!

I’ve been stuck on a problem with MagpieRSS for weeks. This is a desperate call for help.

At the top of my sidebar, I have two lists of links which are generated by parsing RSS feeds: Delicious Linkball and Recently Playing. They don’t update.

If I delete the cache files, the script creates them all right. If I keep an eye on the cache files, I see their timestamp is updated every hour, but not the contents. I’ve uploaded the PHP code which parses the feeds.

Any suggestions welcome. I’m not far from giving up and setting cron jobs to regularly delete the cache files. Thanks in advance.

Update 13:00: The Recently Playing list updates once an hour (when the cache is “force-refreshed”), it seems — but not the Delicious Links one.

14:00: Some progress: http://del.icio.us/rss/steph/ doesn’t seem to update unless I clear the cache on my machine. (Huh?) http://ws.audioscrobbler.com/rdf/history/Steph-Tara, on the other hand, is — but why does the cache update only once an hour, and not each time the feed is modified?

15:00: crschmidt just pointed out that the last-modified date on my del.icio.us RSS feed was horribly wrong. Might be something that was done at the time when my caching problems were causing me to nastily abuse the poor del.icio.us server. I’ve sent a mail to Joshua to see if indeed this could be the problem.

15:50: Still thanks to the excellent crschmidt, I’ve finally understood how this caching is supposed to work. (Yes, I know, we’re starting to have lots of edits on this post.) There is a setting which determines how old the cache must be to become “stale”. As long as the cache is not stale, any requests made will use the cache directly, without pulling the feed in question. If the cache is stale, a request is sent to the server hosting the feed to check if it has changed since it was last accessed. If it has changed (i.e., if Last-Modified is more recent than the cache), it gets a fresh version of the feed. Otherwise, nothing happens (the cache age is just “reset”).

Now, for a LinkLog service like del.icio.us, setting the cache age to a couple of hours is more than enough as far as I’m concerned. However, for a list of recently played songs, every few minutes should be better. MagpieRSS seems to allow this to be set on a per-call basis by defining MAGPIE_CACHE_AGE, but it doesn’t seem to be working for me. Another variable is set on a per-installation basis: var $MAX_AGE = 1800; — but changing that won’t really help, as I want different values for Recently Playing and Delicious Links. Suggestions on this secondary problem welcome too!

16:40: After exchanging a few e-mails with Joshua, it seems that there was indeed a problem with the Last-Modified date on my feed. Not quite sure how it came about (somebody requesting the feed when I hadn’t posted in some time?), but it should be fixed now. I’ve cleared my cache files to see if my 30-minute “stale time” is working or not.

17:30: (See how I’m updating every 50 minutes? Freaky.) So, the not-so-nice things about PHP constants is that they are constant and (?) local to the function in which they are defined. (Not sure I go that bit right, but.) Important thing here is to note that MAGPIE_CACHE_AGE can’t be used to set different “stale cache” ages for different feeds. The stale cache age needs to be set at the bottom of rss_fetch.inc (the only place I hadn’t touched) — so my cache is now refreshing every half-hour. (Which is a bit too often for del.icio.us, and not often enough for Audioscrobblers.) oqp says he can write a wrapper to get around this limitation — I’m waiting impatiently for him to do it!

Indulging in Memes [en]

Another meme test. I don’t usually go for memes, but I love the idea of tests and research. The Google-juice is nice, of course, but I find almost more exciting to be able to visualise the trail of weblogs as the meme spreads.

[fr] Encore un meme. D'habitude, je ne saute pas dans le train, mais celui-ci a l'intéret (a) d'être créé afin d'en tirer quelque enseignement et (b) de nous permettre de visualiser immédiatement le "chemin de blogs" parcouru.

Update 04.08.04 23:50: post text modified as requested by Nova. (It’s pretty different from the initial text, but the idea remains the same. Not that I’m obsessed by Google ranking, as I hope you’ll guess.)

Copy This GoMeme From This Line to The End of this article, and paste into your blog. Then follow the instructions below to fill it out for your site.

Steal This Post!!!! This is a GoMeme– a new way to spread an idea along social networks. This is the second generation meme in our experiment in spreading ideas. To find out what a GoMeme is, and how this experiment works, or just to see how this GoMeme is growing and discuss it with others, visit the Root Posting and FAQ for this GoMeme at www.mindingtheplanet.net .

By adding this GoMeme to your Weblog you can get higher Google rankings for your site, and help your friends get higher Google rankings too. Your blog will be linked from every other blog that discovers this GoMeme downstream from your blog (from your readers, their readers, and so on). And that will raise your Google rankings in proportion to the number of downstream bloggers that get this GoMeme from you and post it to their blogs. The more people who blog the GoMeme from your blog, the better your Google rankings will get.

By hosting this meme on your blog, you will also be participating in an experiment to generate a distributed Blog survey and test how memes spread through social networks. The dataset from this experiment is public, open and decentralized — every blog that participates hosts their own data about their own blog. Anyone can then get the whole dataset by just searching Google for this unique string: 98818912959q This code is the “global unique identifier,” or GUID for this GoMeme — it marks every web page that participates in this GoMeme so that it can later be found with all the others. (Note it may take a week or longer before Google indexes your blog, so be patient).

Disclaimer

This is purely an experiment and is just for fun. We are really just curious to see what will happen and this is not a commercial project. Participation is voluntary. We don’t mean to annoy anyone. However, if you don’t have much curiosity, or at least a sense of humor, you may find this experiment to be upsetting. In that case, you might try drinking a good strong cup of coffee. If after that you are still unhappy with us, just don’t read any further and have a great day! (If you don’t want your blog to get better Google rankings, that’s purely your choice!) On the other hand, if you are interested in exploring new technologies and pushing the envelope, then keep reading and we look forward to your participation in this experiment. We also request that participants in this experiment refrain from spamming anyone with this GoMeme. To spread it, just put it on your blog; that should be enough.

INSTRUCTIONS FOR ADDING THIS GOMEME TO YOUR OWN SITE

Step 1 First, to add your site to this experiment, copy the GoMeme to your site from the “Copy This GoMeme From Here” heading above to the End of this article. Please copy this whole article and try not to alter the text so that it is authentic for the people who get it from your blog. If you would like to come up with your own catchy headline, or anything else to help your GoMeme spread, feel free! Let’s see what works best.

Step 2: Now, fill in your answers to these Required Survey Fields (Note: Replace the answers below with your own answers). These will later be automatically data-mined by bots to compile the survey results.

(1) I found this GoMeme at URL: http://www.mindingtheplanet.com

(2) I found this GoMeme on date (day/month/year):04/08/04

(3) I found this GoMeme at time (in GMT format): 07:30:00

(4) I foundit via “Newsreader Software” or “Browsing the Web” or “Searching the Web” or “An E-Mail Message”: Browsing the Web

(5) I posted this GoMeme at my URL (use a hyperlink): Climb to the Stars

(6) I posted this on date (day/month/year): 04/08/04

(7) I posted this at time (in GMT format): 07:50:00

(8) My posting location is (city, state, country): Lausanne, Vaud, Switzerland

Step 3: If you’re feeling very altruistic today, also fill in these optional survery fields (Replace the answers below with your own answers):

(9) My Weblog is hosted by: Myself

(10) My age is: 30

(11) My gender is: Female

(12) My occupation is: Teacher

(13) I use the following RSS/Atom reader software: NetNewsWire Lite

(14) I use the following software to post to my blog: WordPress

(15) I have been blogging since (day, month, year): 13/07/00

(16) My web browser is: FireFox

(17) My operating system is: OSX

Step 4:Now add an entry for your site after the last entry in the PATH LIST below: Your entry should be of the form: line number, URL, hyperlink, optional personal GUID for your blog.

(Note: If you would like to track all postings of the Meme that result from your posting of it, once Google has indexed them, you may add your own optional GUID after your hyperlink on your line of the Path List — just make sure it is short, unique, and doesn’t return any results on Google — for example “mysitename137a2r28”. Also note, if the path list gets too long, you should still try to include the whole path in your blog — even if you have to put the list on a continuation page rather than the excerpt for your posting — and make sure others copy the whole GoMeme along with your Path List when they get the GoMeme from you — If they don’t copy it, your blog and your upstream blogs won’t be linked from their blogs).

PATH LIST

1. http://www.mindingtheplanet.net Minding The Planet, mindingtheplanet14798
2. https://climbtothestars.org Climb to the Stars, climbtothestars87432
3. (your Path List entry goes here in the form URL, hyperlink, GUID. Also, please add a new line after this one, for the next person.)

The End