twitter
email
github

 

Articles about:
#music
#photo
#opensource
#all

Don't read #tech articles except you really want to.

Some of my projects:
BigPicture
SamplerBox
Ojourdui

A few thingz


Joseph Basquin


17/01/2021

Pour en finir avec les préfaces (postfaçons-les!)

Figure 1: Version DIY-postfacée des Confessions de Rousseau.

 

Par quelle prétention, oui prétention, l'éditeur ou le "préfaceur" peut-il placer ses propres mots – une vingtaine de pages explicatives, souvent utiles a posteriori après lecture du texte principal, mais peu éclairantes avant la lecture du texte – en début de livre, avant même les mots de l'auteur ?

Par quel mystère est-il devenu la norme pour les livres de poche de devoir feuilleter jusqu'à la page 35 pour enfin pouvoir lire les premières lignes du texte original de l'auteur ?

Pour illustrer mon propos, je ne vois pas en quoi les premières lignes des Confessions de Rousseau:

Voici le seul portrait d'homme, peint exactement d'après nature et dans toute sa vérité, qui existe et qui probablement existera jamais.
[...]
Je forme une entreprise qui n'eut jamais d'exemple et dont l'exécution n'aura point d'imitateur. Je veux montrer à mes semblables un homme dans toute la vérité de la nature ; et cet homme ce sera moi.

ne se suffiraient pas à elles-mêmes et nécessiteraient d'être précédées par cette préface:

Ce livre, pour son auteur comme pour nous, est d'abord un acte: confessions, non mémoires, même si la scansion du récit s'appuie sur une trame chronologique; appel à l'autre, appel séducteur et pathétique, qui suscite en alternance chez le lecteur intimité complice et mise à distance irritée, non recherche du temps perdu ; apologie et non bilan ; ...

et une vingtaine de pages du même acabit ?

Hormis rares cas (notamment préface choisie en accord avec l'auteur au moment de l'édition, ce qui n'est clairement pas le cas ici pour Rousseau), je pense n'avoir jamais lu une préface d'une œuvre classique qui fasse réellement sens avant d'avoir lu le texte de l'auteur. La quasi-totalité des préfaces de textes classiques apportent un éclairage supplémentaire, historique, des éléments de contexte qui sont intéressants après lecture du corps du texte, mais pourquoi placer ces informations avant ? Dans le cas illustré précédemment, cette préface de J. B. Pontalis aurait certainement toute sa place dans cet ouvrage, mais en tant que postface.

Si on pousse le raisonnement plus loin, on pourrait presque arriver à la conclusion que l'éditeur estime que l'auteur n'a pas suffisament donné d'éléments de contexte pour que le texte puisse se suffire à lui-même et donc qu'il faudrait "corriger" cela grâce des explications préalables pour pouvoir appréhender le texte. C'est pourtant le choix de l'auteur de débuter son texte comme il l'a fait, pourquoi estimer qu'il faut l'expliquer au prélalble comme si ses mots étaient insuffisants ?

Les préfaces sont aussi une aberration d'un point de vue pédagogique : on a tous croisé au lycée des personnes (pas si rares) qui se targuaient de ne pas avoir lu le livre sur lequel on était censé travailler:

— Tu l'as lu toi?
— Non j'l'ai pas lu!

Pour quelqu'un pas franchement branché lecture, réussir à trouver le début du texte original de l'auteur n'est pas une mince affaire. Je suis prêt à parier que bon nombre de collégiens sont passés à côté d'une pièce de Molière parce qu'ils se sont perdus ou endormis dans les quinze premières pages d'élucubrations d'un quelconque inspecteur général (sans savoir qu'ils ne lisaient en fait pas du Molière). Je suis prêt à parier aussi que le taux de lecture, dans une classe de 3ème, d'une pièce de Molière serait bien supérieur si la pièce démarrait en page 3 et non pas en page 33 !

Quel meilleur moyen de donner éclat à un texte d'auteur si ce n'est de lui permettre d'apparaître noir sur blanc dès la première ou deuxième page après avoir ouvert l'ouvrage ?

De grâce, chers éditeurs, postfacez vos préfaces.

Un Canapé à Orléans – Expérience photographique aléatoire

Un jour de 2013, je passe à côté d'un vieux canapé, abandonné, au coin de la rue d'Alibert. J'étais dans une période résolument "photographique" : en tant que nouvel orléanais, quoi de mieux que la Street Photography pour découvrir une ville et ses habitants ? Je décide donc de chercher mon appareil, et dix minutes plus tard, me voilà installé à attendre les passants et leur suggérer de prendre la pose (pause ?) sur ce canapé.

A ma grande surprise, les personnes étaient majoritairement volontaires pour se préter au jeu. La question "Mais dans quel but ?" avait pour réponse "Simplement pour une photo, et éventuellement pour une expo", chose qui fut réalisée au festival Les Ingrédients (Ingré) l'année suivante et au bar L'Escargot (Place de Loire, Orléans).

Au fil des jours, je déposais donc les nouveaux clichés sur la page Un Canapé A Orléans, et de nouvelles personnes arrivaient – soit de simples passants ou des gens qui avaient vu la page sur internet.

Merci aux personnes du service voirie de la ville qui ont accepté de retarder l'enlèvement du-dit canapé de quelques jours, à la République du Centre pour leurs articles, à la parution Publicités sur canapé du magazine Arrêt sur Images, et bien sûr, à toutes les personnes photographiées!

“Marianna & Joseph - Run, Hayley, Run”

Voici une chanson écrite avec Marianna Kosch, enregistrée à Paris en 2017. Ambiance 80s synthpop!

Many thanks to Hayley Connaughton for the artwork.

Working with audio files in Python, advanced use cases (24-bit, 32-bit, cue and loop markers, etc.)

Python comes with the built-in wave module and for most use cases, it's enough to read and write .wav audio files.

But in some cases, you need to be able to work with 24 or 32-bit audio files, to read cue markers, loop markers or other metadata (required for example when designing a sampler software). As I needed this for various projects such as SamplerBox, here are some contributions I made:

  1. The Python standard library's wave module doesn't read cue markers and doesn't support 24-bit files. Here is an updated module:

    wave.py (enhanced)

    that adds some little useful things. (See Revision #1 to see diff with the original stdlib code).

    Usage example:

    from wave import open
    f = open('Take1.wav')
    print(f.getmarkers())

    If you're familiar with main Python repositery contributions (I'm not), feel free to include these additions there.

  2. The module scipy.io.wavfile is very useful too. So here is an enhanced version:

    wavfile.py (enhanced)

    Among other things, it adds 24-bit and 32-bit IEEE support, cue marker & cue marker labels support, pitch metadata, etc.

    Usage example:

    from wavfile import read, write
    sr, samples, br, cue, cuelabels, cuelist, loops, f0 = read('Take1.wav', readmarkers=True, 
        readmarkerlabels=True, readmarkerslist=True, readpitch=True, readloops=True)
    write('Take2.wav', sr, samples, bitrate=br, markers=cue, loops=loops, pitch=130.82)

    Here is a Github post and pull-request about a hypothetical merge to Scipy.

Here is how loop markers look like in the good old (non open-source but soooo useful) SoundForge:


Lastly, this is how to convert a WAV to MP3 with pydub, for future reference. As usual, do pip install pydub and make sure ffmpeg is in the system path. Then:

from pydub import AudioSegment
song = AudioSegment.from_wav("test.wav")
song.export("test.mp3", format="mp3", bitrate="256k")

will convert a WAV file to MP3.


Interested for future evolutions and other audio programming tools?

Make a zooming + panning user interface work on mobile devices (in progress)

What's cool with Zooming User Interfaces is that you have always free space available anywhere (either by zooming or panning) to write new ideas.

That was the key idea in 2014 when creating BigPicture (ready-to-use infinite notepad in-the-cloud) and the open-source JavaScript library bigpicture.js powering it:

It works as expected on desktop browsers. Now, the next big challenge is: how to make it work on mobile devices?

It's funny to even have to ask this question, since touch devices are natively made to do panning (slide finger on screen) and zooming (pinch with 2 fingers). So it should be straightforward to adapt BigPicture to mobile devices.

However here are the difficulties:

  1. The transform/scale from CSS has limitations (probably max 10x or 100x factor when I started this project a few years ago), so we can't only use this to do a (nearly) infinite zooming user interface

  2. It requires to be able to zoom on a particular part of the viewport and not zoom the other parts of the HTML document (e.g. a top navigation header). Here are many potential solutions:

  3. Possible useful tools for this:

    • Zoomooz (however, I read in comments: Zoomooz does not support multi-touch pinching events. Its only a library for zooming into elements on a page, but has no support for pinching behavior, so far as I can see in the documentation.)

    • Hammer.js

    • ZUI53

    • TouchSwipe, a jQuery plugin for touch devices

Work in progress!

By the way, here is how to simulate touch events on Chrome for desktop computer: open the Developer console (F12), then there's a top-left button "Toggle device toolbar" (CTRL+SHIFT+M), here you go! For pinch-zoom events, use SHIFT + click + mouse up.

Your tests / pull requests / help to build a mobile version are welcome on this branch!

If you really like that open-source project, you can donate here: 1NkhiexP8NgKadN7yPrKg26Y4DN4hTsXbz.

Writing, a text-editor in the browser

Since I've started using StackOverflow, I've always loved their text editor (the one you use when writing a question/answer), because it supports Markdown syntax (a very elegant markup language to add bold, italic, titles, links, itemization, etc.), and even MathJax (which is more or less LaTeX syntax in the browser). I've always wanted to use such an editor for my own documents.

After some research, I found a few existing tools, but:

Let's go and actual build one! Here is the result, Writing:

Here's the source: https://github.com/josephernest/writing

For sure you'll like it!

If you really like that, you can donate here: 1NkhiexP8NgKadN7yPrKg26Y4DN4hTsXbz

Yopp — an easy way to send a file from phone to computer

Have you ever spent more than 1 second wondering:

"How do I get on my computer this photo I just made with my phone?"

or

"How do I get this PDF from my computer to my phone?"

Then you probably thought "Let's use Dropbox! ... oh no I'm not logged in on my phone, but what is my password again? Well, let's send the file to myself via email! Maybe I should just use a USB cable... but where is my USB cable again?"

Yopp is a solution for this problem, that you can easily install on your web server.

Thoughts about user experience & user interface design

This tool - Yopp - requires a total number of 7 actions to get the work done:

Open browser on phone [1 tap], Open Yopp page [1 tap if it's in the bookmarks], UPLOAD [1 tap], Choose file [1 action]

Open browser on computer [1 double click], Open Yopp page [1 click if in bookmarks], DOWNLOAD [1 click]

I'll be happy to switch to another tool if one requiring less actions exists.

I noticed that my likelihood/probability to use any tool (all other things being equal) is more or less proportional to P = 1 / a^2 (*) where a is the number of required actions/user inputs. If the number of required actions is doubled, the likelihood to use the tool is divided by 4.

Thus, even if it might sound obvious, one key element for a good user interface is to minimize the number of user actions to get a task done. If not, the user might unconsciously remember that the interface is unnecessarily complicated to use. He will then forget about the product, and look for another solution. (OK this is probably what will happen for you with Yopp if you don't have a web server already!)

As an example, I'm sure I'd use my city's bicycle sharing system Velo+ much more if I could take a bike by just swiping my card on the bike station's card reader (this is technically possible). Instead we have to: Tap on a screen (1), Choose "Subscribed user" (2), Swipe the card (3), Choose "Rent a bike" (4) (this one is particularly unuseful), Accept conditions already accepted many times before (5), etc. at the end it requires at least 12 actions! Any user who has done it at least once will process this data (required amount of inputs) and will probably make the choice of not using it for short distance trips.

It would be interesting to get more statistical data about the empirical result (*), this will be discussed in a future post.

“Ocean Souvenir”

I made this song in collaboration with the American singer Faint Peter. I came up with the synth riff and drummachine, as he made the vocals. From Seattle to Orleans or vice-versa.

One day, one photo

A few years ago I started the photography project PeopleOfMyLife and published one photo per day during around six months.

Every single day I meet people that I probably won't see again. Here they are.

 

See the BigPicture — a zooming user interface

This topic has been present in my thoughts for a long time, probably years:

“How to be able to think/write about lots of unrelated various topics, and still have a way to look at the big picture of what you’re doing?”

Here is my contribution about this:

  1. bigpictu.re, a ready-to-use infinite notepad (infinite zooming and panning)
  2. bigpicture.js, a JavaScript open-source library that you can use in various projects
  3. A standalone version of 1. (so you can take notes offline) is also available here: bigpicture-editor
  4. AReallyBigPage, an infinite collaborative notepad. It has been a real chaos once hundreds of people joined in. Probably internet’s deepest page ;)

 

Such an interface is called a Zooming User Interface (interesting reading: The humane interface by Jef Raskin, one of the creators of the Apple Macintosh), and strangely, ZUI has been very few used in modern interfaces.

As of 2017, nearly every software interface uses a 2D, or even a 1D navigation process: a web page only offers two scrolling directions: north and south. Even nowadays's apps famous for their "new kind of interface" still use a 1-axis navigation: "Swipe left or right".

Is there a future made of new interfaces?

Newer articles Older articles