Dwitter - collection de démos JavaScript en 140 caractères
(beta.dwitter.net)- Dwitter est une plateforme qui permet de créer et partager des démos visuelles avec du code JavaScript de 140 caractères maximum
- Chaque publication, appelée un « dweet », affiche avec le code une animation graphique exécutée instantanément
- Les utilisateurs interagissent via les commentaires, remixes et hashtags, et les variations ainsi que les recréations de code y sont très actives
- Il est possible d’explorer les contenus populaires selon divers critères de tri comme hot, new, top (semaine/mois/année/global)
- Un terrain d’expérimentation en programmation créative où des effets visuels complexes sont réalisés avec un code très court
Aperçu de Dwitter.net
- Dwitter.net est une plateforme web de création de démos visuelles avec du code JavaScript limité à 140 caractères
- Chaque démo, appelée « dweet », génère des graphismes animés exécutés instantanément dans le navigateur
- Après connexion, les utilisateurs peuvent publier un nouveau dweet ou remixer une création existante
- Le site permet de parcourir les contenus populaires selon différents tris comme hot, new, top (semaine/mois/année/global)
- Chaque dweet inclut des fonctions de partage, plein écran, signalement et commentaires
Exemples de dweets représentatifs
- “Bubble universe colour expansion” est salué pour ses couleurs variées et son effet visuel net
- Dans les commentaires, on trouve des réactions comme « A whole universe! »
- “Ants! 🐜” représente une colonie de fourmis avec un code très court, et a reçu des éloges comme « god level dweetage! »
- “Trees, shadows, hills.” est une animation décrivant des arbres, des ombres et des collines, qui a suscité des réactions comme « Amazing stuff! »
- “Flight Over Destroyed City ✈️” met en scène un vol au-dessus d’une ville détruite
- Les commentaires enchaînent les réactions humoristiques, comme « i love the smell of sulfur and uranium in the morning »
- “Solar Orbit ☀️🌘” reproduit une orbite planétaire en 140 octets, provoquant la surprise avec « How did you fit a whole planetary system in 140 BYTES OF JAVASCRIPT!?!? »
Activité de la communauté et culture du remix
- Chaque dweet peut être remixé à partir du code d’un autre utilisateur, avec un lien vers l’original clairement indiqué
- Les commentaires mêlent retours techniques, impressions et humour, créant une ambiance communautaire très vivante
- Le système de hashtags permet d’explorer les contenus par thème, comme #space, #galaxy, #lighting, #scene
Caractéristiques techniques
- La plupart des codes sont compressés sous une forme eval(unescape(escape
...)), afin de produire un maximum d’effets visuels dans la limite des 140 caractères - Le code s’appuie principalement sur l’API Canvas pour dessiner formes, couleurs et mouvements
- Chaque dweet affiche sa longueur de code (par ex. “// 136/140”), ce qui fait de l’optimisation et des techniques de compression des éléments essentiels
Un espace d’expérimentation en programmation créative
- Dwitter combine le code golf et l’art visuel, et stimule une compétition de créativité entre développeurs
- Le processus consistant à produire un résultat visuel complexe avec un code simple est perçu comme une forme d’esthétique de la programmation
- La plateforme sert d’espace d’expérimentation pour explorer la frontière entre expression artistique et compression technique
2 commentaires
C'est vraiment incroyable.
Avis sur Hacker News
Désolé d’avoir dû redémarrer brièvement le serveur. Grâce à la leçon tirée de la dernière fois où c’est arrivé, j’ai redimensionné le droplet DigitalOcean
Par exemple, une forme comme
eval(unescape(escape\<<97 wide characters>>`.replace(/u../g,'')))` permet de restaurer 194 caractères ASCII à partir de 97 caractères UnicodeJ’aimerais presque qu’on adopte une convention du genre de la conversation entre Ford Prefect et Mr Prosser : « considérons simplement que j’ai mis 194 caractères dans 140 et affichons-le comme ça »
C’est une logique assez proche des limites de 4096 octets en demoparty, où en pratique on compresse 12 à 20 Ko avec Crinkler pour rentrer dans la contrainte
J’ai retrouvé une ancienne interview, assez intéressante : interview Medium
La vraie magie, c’est la communauté : communauté Discord
GIF animé
Voir aussi ce post sur le forum AutoHotkey
Avec des contraintes, la diversité explose au contraire : illusions d’optique, phrases courtes, expérimentations dans des directions inattendues
Les contraintes favorisent la concentration et réduisent le coût de l’échec, ce qui encourage l’expérimentation
La plupart des plateformes essaient d’élargir la créativité en ajoutant des fonctionnalités, mais cela finit souvent par les rendre plus complexes
Je repense souvent à cette règle : les contraintes créent le plaisir
Je me demande dans quels cas les contraintes produisent de meilleurs résultats, et à partir de quand elles deviennent artificielles
Cette expérience a totalement changé ma façon de penser le code
Dans une petite communauté, on partageait des techniques d’économie d’octets tout en réalisant de tout, du rendu de Mandelbrot à des solveurs de Sudoku
Dix ans plus tard, j’ai eu un choc en retombant sur l’ancienne implémentation UUID que j’avais écrite dans le codebase de mon entreprise
Liens associés : vidéo YouTube, Byte-saving techniques, UUID gist
js_funcest appelé comme tagged template literalJe vais maintenant essayer des trucs comme
console.log\weeee``Exemples : htm, lit.dev
J’ai stocké de petites données SVG en code inline pour créer un sampler de 13 Ko
Lien d’exemple
Par exemple :
evalÀ la place, j’aimerais qu’ils ajoutent davantage de raccourcis. Par exemple,
ssignifieMath.sign, mais on pourrait aller plus loinSi on la modifie après coup, la cible fixe disparaît et une partie du charme s’en va
beta.dwitter.net améliore l’accessibilité de l’encodage tout en conservant cette cible fixe
Des exceptions comme Math.sin ou l’encodeur de couleurs CSS ont été ajoutées pour des raisons pratiques
Dans Dwitter 2, il a aussi été question d’inclure davantage de caractères prédéfinis pour que les utilisateurs puissent les étendre eux-mêmes
Au final, l’essentiel, c’est la créativité. Même tordre les règles est en soi un acte créatif
evalà la racineIl resterait possible de compresser des données dans des littéraux de chaîne, mais la compression du code dans son ensemble diminuerait
evalsoit autorisé me convient. Les règles sont les règles — ou leur absence