• chevron_right

    Movim 0.19 - Ikeya is out!

    Miho · Wednesday, 17 February - 20:34 edit · 7 minutes

Movim 0.19 - Ikeya is out! This version is a major step for Movim with a lot of improvements on the performances and many (many!) small fixes and new features.

Chat and chatrooms

A critics that was coming once in a while is how difficult it was to join and/or create a chatroom in Movim. The 0.19 version follow the Modern XMPP Multi-user Chats recommendations that is already implemented in several other #XMPP clients. This standard is bringing a common naming convention and flow to create and configure chatrooms in XMPP.

Add Chatroom dialog

On top of that the the join/create #Chatroom flow was totally redesigned. The new one is inspired by the Telegram one, with one unique "+" button to start a new one-to-one or one-to-many conversation. The global chatroom search was also directly integrated in the flow to allow you to quickly search and join one of the few thousands already listed ones.

The one-to-one chat conversations views are now cached server side. This simple trick is saving some precious milliseconds during the page load. The performance boost allowed us to simply remove the chat list placeholder (you don't need a placeholder if the content is loading instantly).

Conversations improvements

The encrypted messages are now displayed in the bubbles.

An encrypted message

You can receive messages read confirmation in Group Chats and in small Channels (when there is less than 10 persons connected).

The XEP-0201: Best Practices for Message Threads has been implemented. Movim now handle Replies on the received messages. Useful to follow multiple topics during a conversation.

A replied message

Like images before, videos are now embedded in the conversations with the support of the WebM and H264 video files.

With this awesome feature, the Tenor API was also integrated. You can now search in millions of #GIF and publish them instantly in your conversations. The #Tenor API is disabled by default, the server administrator can enable it by adding its custom API key in the Movim admin panel.

The GIF picker

All the published message URLs are also now embedded in the discussions. You can also now easily browse the URL related pictures directly in the Movim picture preview gallery widget.

An embedded URL

The chatrooms with unread messages are now put on top of the chatrooms list.

A pack of ~1500 new emojis were added to the emoji picker.

A couple of new emojis

Communities and Blogs

The Explore page was reorganized with a few new features. You can now filter the Explore panel to return only the Communities or Blog articles (the same way you can filter the articles on the News page). A "More" button is also now allowing you to retrieve older articles.

The new discover page

The Communities in the servers are now ordered by last updated.

But also…

The preview Widget is now having a "copy to clipboard" button. Useful!

Preview and copy easily the picture link

There is a first integration of the #Firebase Push notifications in Movim. This is currently in test with the Android app and will require some more improvements and adjustments before being released as a stable feature.

You can now directly drag & drop files or copy paste pictures in Movim to trigger the upload dialog box.

The drag and drop box


Batch insertion

Lets now dive in the more technical aspects with the performances improvements.

Most of the performances bump in Ikeya are actually regarding how he database is requested. In the previous Movim version, a PresenceBuffer was introduced to save "batches" of incoming requests in one database query and not hundred of them.

The presence is a core concept of XMPP (eXtensible Messaging and Presence Protocol). During the connection, you will receive a presence from each online contact from your contact list, similarly, when you join a chatroom, you will as well receive a presence for each member connected to the room.

So now imagine that you have a big account, with hundred of contacts and a few dozen chatrooms with hundred of connected users in each of them. During the login, your XMPP client will then receive thousands of presences. The PresenceBuffer is there to "stack them" when they are received and save them in batches in the database and then notify only once the UI (your browser) that "all those presences were saved".

This PresenceBuffer element was greatly improved and will now not only save the Presences in batches, but also handle some related data like Capabilities Requests (those information are used to know what your contacts XMPP clients are capable of) as well as Vcard request (your contact personal information and avatars).

In a similar aspect, the retrieved Bookmarked Conferences and Community Subscriptions are also now saved in batches in the database, saving dozens of requests.


Another important optimization that can be done when dealing with databases is to preload some information when retrieving list of items. Lets imagine that you need to retrieve 50 messages from the database. Those messages might have related data, such as reactions, replies or attached files. It is often good to load in parallel all those data "in batches".

The wrong way
1. Get the messages A, B, E and F
2. Process the messages
  - Check if A has an attached file
  - Check if B has an attached file

The good way
1. Get the messages A, B, E and F
2. Try to get files for the A, B, E and F messages
3. Once the two lists are retrieved, see if some files matches the messages

This was already done in many places in Movim (hopefully), bu even after years we are still finding some small optimizations that were missing. All those small improvements is now allowing Movim to retrieve full conversations and scroll the history in a few hundred milliseconds, even if the database is filled with millions of messages.

You should know that each time you open a discussion in Movim, your browser is actually asking the server about all the messages that will be displayed, there is no local cache. If you have a backend that is fast enough, you don't need complex Javascript frontends to process and store things ;)

Database connection auto-close

Each connected user on a Movim instance is having it's own specific process launched on the server. This is bringing some nice isolation an performances distribution, especially if on servers with many parallel available threads (this also brings some memory consumption issues that will be improved in the upcoming versions).

For each of those launched "user-session-processes" a database connection was opened to allow them to perform database queries quickly.

The main issue there is that database servers (such as MySQL and PostGreSQL, the two supported servers for Movim) can only handle a certain limit of parallel connections. Movim is then now automatically closing unused connections after a few seconds and resume them once a new query is sent. This allow Movim to handle hundred of parallel sessions without overloading the database server anymore.

Translations cache

The languages translations are now cached when the daemon is launched once for all. This bring a few milliseconds gain during page load. It's not much but it's an easy win!

The translations can also be manually recompiled using the following command

php daemon.php compileLanguages

Picture proxyfying and caching

Most of the Movim pictures are now proxyfied by Movim. This way the Movim pod will hide its users personnal IPs and browser information when the pictures are retrieved. The proxy is also moving all the pictures URL under a specific picture/ directory. This simple trick can allow server admins to create a nice caching system directly on the web-server level.

For example, if a friend in a chatroom is sharing a nice picture that is a bit heavy. The first person that will receive the picture will ask Movim, through the Movim web-server to download it and return an optimized version of it. The web-server will then keep a copy of the optimized picture. All the other users will then ask the same resource, and the web-server will simply returned the cached version, without even asking anything to Movim anymore.

A specific section in the Movim setup tutorial was added to explain you how to setup and configure this cache system during the Movim deployment.

To conclude

This was quite a big version indeed, we hope that you will enjoy it. The upcoming one will be a special release and will focus on one specific feature, we will come back to it in the upcoming weeks, be patient.

A clue about the upcoming release?

As always, if you like Movim please share it around. You can always help us by directly contributing to the project and help funding us on our Patreon.

That's all folks!

  • Jo chevron_right

    La RATP lance sa chaîne de GIFs ! / JournalDuGeek · Saturday, 13 February - 08:00 · 1 minute

Image : RATPImage : RATP

La RATP a mis en ligne sur Giphy une collection de GIFs qui illustrent des situations bien connues des usagers des transports en commun en Ile-de-France : énervement devant la porte du métro qui vient de se fermer, mimiques de conducteurs, salut entre deux trottoirs… Il y a aussi des GIFs plus originaux avec des personnes qui dansent ou qui sont déguisées.

Des GIFs pour toutes les occasions

Et bien sûr, impossible de passer à côté des tickets qui mettent en scène Serge, le lapin de la RATP ! La chaîne contient 69 animations que l’on pourra partager sur les réseaux sociaux et dans ses discussions avec ses amis. Les community managers de la régie pourront également les utiliser dans leurs messages.

Les GIFs de la chaîne Giphy de la RATP ont déjà été vus plus de 2 millions de fois un peu partout sur internet. « Nous aussi, on vous mème », s’amuse l’exploitant parisien des transports en commun ! Ces images sont une nouvelle manière pour l’entreprise de désamorcer des situations parfois tendues sur Twitter et ailleurs : un bon GIF suffit souvent à relaxer une discussion qui aurait tourné au vinaigre.

La RATP n’en est pas à son coup d’essai pour se mettre les usagers dans sa poche. Pour les fêtes de fin d’année en 2017, le groupe mettait en ligne des « mixtapes » combinant rythmes électro-chill et des sons bien connus des usagers.

La RATP lance sa chaîne de GIFs !

  • Nu chevron_right

    Ce GIF résume 3 siècles de recherche de planètes en quelques secondes / Numerama · Tuesday, 24 November - 08:21

Depuis le 18e siècle, les astronomes ont fait la chasse aux planètes, puis aux exoplanètes. Un GIF résume en quelques secondes, à l'aide d'un graphique bien pensé, l'histoire de cette quête scientifique qui a connu un bond ces dernières années. [Lire la suite]

Voitures, vélos, scooters... : la mobilité de demain se lit sur Vroom !

L'article Ce GIF résume 3 siècles de recherche de planètes en quelques secondes est apparu en premier sur Numerama .

  • Ko chevron_right

    Comment prononcez-vous le mot GIF ? / Korben · Wednesday, 21 October - 09:16 · 1 minute

C’est un vieux débat et l’inventeur de ce format d’image a tranché il y a quelques années en disant que ça se prononçait « DJIF ».

OK. Mais ce n’est pas si simple si j’en crois le youtubeur Tom Scott qui décortique en anglais, cette prononciation et également le nombre de mots dans la langue anglaise qui s’écrivent GI… et qui se prononce GUI… ou DJI…

Techniquement on peut dire les deux d’après le dictionnaire Oxford, mais ce qui est intéressant dans sa vidéo, c’est qu’il souligne le fait que ce mot et d’autres sont des mots que nous avons découverts à l’écrit en premier. Donc que nous avons prononcé dans notre tête bien avant de l’entendre dans la bouche de quelqu’un d’autre. Peut-être disiez-vous JEEK en lisant GEEK ? Normal, puisqu’à l’époque, ce mot n’était jamais prononcé à la radio, ou la TV et il a fallu attendre que nos amis américains le prononcent dans leurs vidéos YouTube ou leurs podcasts pour qu’on percute enfin !

Maintenant sur le fond, on s’en fout un peu. Le seul truc que vous devez retenir (BORDEL), c’est qu’on dit et qu’on dira toujours LE WIFI (et pas LA…)

…et la Covid, mais ça c’est un autre débat.

A la recherche d’un job dans le numérique et envie de changer de région et de vie ?

Est-ce que je fais vraiment le boulot que j’aime ? Ma qualité de vie dans cette grosse ville bruyante, polluée, chère … est-elle vraiment la meilleure ? Est-ce que ce village de campagne est le lieu le plus propice pour préparer mes enfants au futur ? Nous sommes nombreux à nous être posé ce genre de questions à un moment ou un autre, moi le premier.

Et bien si vous êtes dans cette situation, que vous avez envie de changer d’air sans pour autant changer de travail, Laou vous accompagne dans toutes les étapes de ce nouveau voyage, pour que vous ayez l’esprit serein jusqu’au moment d’envoyer votre premier mail pro 😉

Découvrir leur service et lancez-vous

  • Ko chevron_right

    Asciicast2gif – Faites des GIFs animés à partir de vos sessions de terminal / Korben · Wednesday, 14 October - 07:00

Vous vous souvenez d’ AsciiCinema , l’outil qui permet d’enregistrer au format JSON vos sessions dans le terminal pour produire ensuite des « replays » en ligne visible dans les navigateurs ?

Et bien pour ceux qui voudraient produire des GIFs animés à partir de leurs séances d’AsciiCinema, il existe le logiciel AsciiCast2Gif (basé sur NodeJS) qui charge votre fichier AsciiCast et qui génère à partir du JSON, une série d’images PNG qui sont ensuite mises bout à bout pour produire un GIF animé à insérer dans vos sites web.

Il vous faudra les dépendances Gifsicle et ImageMagick ainsi que npm (NodeJS).

Voici une démonstration. Prenez l’URL de votre asciicinema, ajoutez-y « .cast » à la fin et utilisez ce lien dans la commande suivante :

asciicast2gif output.gif

Et ensuite, vous obtiendrez votre GIF animé :

Mignon, n’est-ce pas ?

  • Ar chevron_right

    Facebook spends $400M buy Giphy, plans to integrate it with Instagram / ArsTechnica · Friday, 15 May, 2020 - 21:05

Ironically, their logo is static, not animated.

Enlarge / Ironically, their logo is static, not animated. (credit: Giphy)

Seven years ago, Facebook claimed not to support the 21st century's new favorite communication tool, the animated GIF. Oh, how times have changed: Today, Facebook's newest acquisition is one of the Internet's most popular GIF hosting sites.

Facebook is making Giphy part of the Instagram team , the company said today. Axios, which was first to report the transaction, said the deal was valued at about $400 million.

According to Facebook, about half of Giphy's current traffic already comes from Facebook products, especially Instagram. That's perhaps unsurprising, given that Facebook's big three apps—WhatsApp, Instagram, and flagship Facebook—have literally billions of daily users among them.

Read 5 remaining paragraphs | Comments

  • Ca chevron_right

    Getting through the day one hop at a time. / CatsCafe · Friday, 10 April, 2020 - 21:50


Getting through the day one hop at a time.