Contrapunk est un générateur d'harmonie MIDI en temps réel et un convertisseur guitare vers MIDI, basé sur des règles strictes de contrepoint. Développé en Rust, il offre une latence inférieure à 10 ms, idéale pour les performances live, et fonctionne sur navigateur ou en application native. L'outil est gratuit, sans inscription, et compatible avec les contrôleurs MIDI sous Chrome.
Le projet met en avant huit modes d'harmonie (Palestrina, Bach, Jazz, etc.) et 28 modes d'échelle, avec une gestion avancée des voix pour éviter les parallèles ou les croisements. Il prend en charge l'entrée guitare via détection de hauteur et suivi d'attaque, avec une calibration automatique.
Disponible en open source (licence MIT), Contrapunk s'appuie sur Rust, SvelteKit et Tauri pour une exécution multiplateforme. Une version cloud est en développement, avec accès anticipé pour les intéressés.
L’article explore les défis méconnus des équipes d’ingénierie réparties à l’international. Basé sur son expérience chez Getaround, il révèle que les fuseaux horaires réduisent significativement la productivité, malgré les avantages théoriques (24/7 développement, accès à plus de talents). Les équipes locales restent plus efficaces, et les solutions comme les outils async ne compensent pas la perte de collaboration en temps réel. L’auteur, ayant géré des équipes acquises à l’étranger, prône des équipes regroupées géographiquement (3-5h max de décalage) pour faciliter l’intégration et les relations humaines, surtout après des fusions. Un constat sans appel : mieux vaut limiter les dégâts que prétendre à une performance optimale en global.
Ce billet explique la différence fondamentale entre les Message Queues (files d'attente de messages) et les systèmes Pub/Sub (publication/abonnement), souvent confondus. Les Message Queues, comme RabbitMQ ou SQS, utilisent une structure FIFO où les messages sont traités une fois et supprimés, idéales pour des tâches uniques comme l'envoi d'emails ou des jobs CI/CD. Les systèmes Pub/Sub, comme Kafka, utilisent un log append-only où les messages restent disponibles pour être relus, parfaits pour l'analytics en temps réel ou le traitement d'événements. Choisir le mauvais outil peut entraîner des problèmes techniques majeurs. L'auteur détaille les cas d'usage et les avantages de chaque système.
L'auteur fait un état de l'art des différentes solutions pour les modifications en temps réel de ressources web : Braid, PREP et Mercure
Il s'agit d'un cas concret d'utilisation de Mercure : lorsque 2 administrateurs éditent simultanément la même ressource, Mercure permet de notifier lorsque le premier des deux valide ses modifications.
Tout est dans le titre
Les web sockets sont utiles si l'on veut une communication bi directionnelle entre le client (navigateur) et le serveur... Dans le cas où l'on souhaite juste une communication serveur vers client, il vaut mieux utiliser les SSE. L'auteur montre comment faire en JavaScript (côté client et serveur)
Tout est dans le titre, un tuto pas mal fait :)