Makina Corpusdéveloppe des projets web ou mobiles d’envergure combinant notamment la cartographie, l’intelligence artificielle, le traitement et l’analyse de données, la dataviz. Nos applications phares sont au service de domaines tels que la randonnée et la gestion d’espaces naturels (Geotrek), l’aménagement et le développement économique de territoires (Actif), la prévention des risques naturels, la gestion de l’eau…
Notre organisation et nos prestations se construisent sur trois piliers : les logiciels libres, le respect de l’humain et l’engagement en faveur de l’environnement; trois valeurs fondamentales que nous développons et renforçons grâce à notre charte RSE.
Dans le cadre du remplacement d’un chef de projet vous intégrerez l’activité « éditeur logiciel » de Makina Corpus et aurez pour mission de piloter une suite applicative open-source dédiée au suivi de la biodiversité pour les collectivités.
Vos missions consisteront à :
Identifier et mettre en œuvre au sein des projets les besoins technico-fonctionnels des clients ;
Formaliser, organiser, planifier et contrôler les phases de réalisation ;
Piloter et coordonner l’équipe projet ;
Assurer le suivi du planning et le contrôle de la qualité ;
Gérer les engagements vis-à-vis du client et s’assurer de sa satisfaction ;
Fidéliser, entretenir et développer le portefeuille client existant ;
Participer aux phases d’avant-vente en relation avec le client et avec nos équipes, rédiger une proposition commerciale.
Vous devrez acquérir une connaissance fonctionnelle poussée sur l’outil pour conseiller et accompagner les clients, et travailler avec l’équipe technique.
Nous mettrons en place un accompagnement adapté et de courte durée pour vous permettre d’acquérir rapidement une très bonne connaissance de l’entreprise, son activité et son environnement.
Ce poste est basé à Toulouse et ouvert au télétravail partiel (jusqu’à 3 jours/semaine car il nécessite de venir en présentiel à l’agence au minimum 2j/semaine).
Profil
Vous maîtrisez les méthodes et outils de gestion de projets web complexes et techniques, et possédez une expérience récente de 5 ans minimum sur ce type de poste et ce périmètre de missions. Vous avez une appétence commerciale et idéalement une expérience dans la réponse à appels d’offres.
Vous aimez comprendre les besoins du client, s’approprier son métier et lui proposer des solutions adaptées ;
Vous êtes très à l’aise avec l’environnement du web et avec les aspects fonctionnels des applications web ;
Votre goût du travail en équipe, votre curiosité, vos excellentes qualités relationnelles seront des atouts indispensables. Apprendre toujours plus vous stimule !
Nous ne précisons pas de diplôme ou de niveau d’études minimumcar nous attachons avant tout de l’importance aux compétences et à la passion du métier.
Informations complémentaires
Dans la ruche collaborative Makina Corpus, on dit ce qu’on fait : les makiniens évoluent dans une ambiance motivante et stimulante (projets et contrib opensource, participations encouragées à des évènements/meetup, émulation entre experts passionnés, technos innovantes à tester, veille…) et contribuent aux valeurs humaines ancrées dans l’ADN de l’entreprise (environnement, équilibre vie pro/vie privée, collaboratif, télétravail…).
Mais surtout chez Makina on fait ce qu’on dit : vous avez besoin de le voir pour le croire ? Venez nous rencontrer, un.e makinien.ne pourra vous en parler ! Nos équipes sont mixtes, femmes et hommes du numérique nous vous attendons.
Écrivez-nous et racontez qui vous êtes et ce qui vous anime. Expliquez-nous en quoi vos motivations et vos compétences sont en adéquation avec nos valeurs et nos activités.
La conférence ConFoo est de retour pour sa 24 e édition, du 25 au 27 février 2026 à l’Hôtel Bonaventure de Montréal! Que vous soyez un développeur junior ou un CTO, venez découvrir pourquoi ConFoo est devenu l’un des événements phares pour les professionnels en hautes technologies.
Nous sommes présentement à la recherche d’experts d’expérience souhaitant joindre notre équipe de conférenciers pour l’édition 2026! De PHP à JavaScript, en passant par tous les enjeux liés à la sécurité et au développement de l’IA, ConFoo couvre chaque année l’ensemble des sujets qui font bouger l’industrie.
Offertes en français ou en anglais, nos présentations sont généralement d’un format de 45 minutes, incluant un 10 minutes de questions des participants. Nos conférenciers invités profitent aussi d’un traitement privilégié; comprenant la couverture de leurs frais de déplacement et d’hébergement, en plus de l’accès à l’expérience complète de l’événement (présentations, repas, etc.).
J’ai récemment essayé de me reconnecter au CFP de PyConFR pour vérifier l’état de ma proposition. Lorsque j’ai voulu utiliser le bouton « réinitialiser le mot de passe », je n’ai reçu aucun e-mail.
Il est possible que j’aie soumis ma proposition avec une adresse e-mail erronée, car je ne reçois pas de message de réinitialisation, ni sur mon adresse personnelle, ni sur mon adresse professionnelle.
Cet article explique comment Python, au-delà de ses qualités techniques, s’est construit autour d’une communauté mondiale active et solidaire. Il met en lumière l’importance des contributions open source, des événements comme les conférences Python, et des initiatives éducatives qui ont façonné l’écosystème Python actuel. De simple langage de programmation, Python est devenu une culture, un réseau d’échange et de soutien, permettant à chacun de contribuer, d’apprendre, et de collaborer à l’échelle mondiale.
Sur ma liste de choses à faire[1], j'avais marqué "apprendre dbus" il y a bien longtemps.
Sur mon PC, j'écoute de la musique via deezer, et parfois, c'est long quand je veux passer un morceau ou retourner sur le dernier --car j'aime écouter certains trucs en boucle, toi même tu sais-- :
il faut retrouver firefox,
il faut retrouver le bon onglet,
il faut cliquer au bon endroit dans la page.
Bref une perte de temps.
J'ai donc commencer à me demander comment piloter firefox autrement. L'idée, c'est de faire un programme qui va bien et de le lancer via une combinaison de touches (ou dans un bash, ou même un vim).
deezer-cli permet de piloter Safari sur un Mac. L'idée est bonne : exécuter une commande js dans l'ongle deezer.
Bon, c'est pas ce que je cherche, mais l'idée me plaît.
Et pourquoi pas lancer un serveur udp depuis un script greasemonkey pour faire la même chose ?
Je me voyais déjà ajouter la fonctionnalité manquante à firefox, devenir un nouveau gourou du logiciel libre, à moi la gloire, le succès et tout le reste.
Et pis, j'ai repensé à mon vieux casque bluetooth qui est capable de faire ça, ">*/×@)! Quelqu'un avait déjà eu l'idée. Il y avait même un touche sur mon clavier pour mettre le flux audio en pause…
Après quelque recherche[2], j'ai trouvé ce que je cherchais : Piloter une interface mediaplayer2 via dbus
Quoi
Vas plutôt lire wikipedia, mais en gros, DBUS est un bus qui permet aux applications de proposer leurs services à qui en veut.
Par exemple, on peut allumer ou éteindre le bluetooth, éteindre l'ordinateur, envoyer une notification…
Et donc, on peut piloter un lecteur multimédia, via l'interface MPRIS[3].
Comment
Un peu de lecture plus tard, je trouve ce qui m'intéresse : l'interface MediaPlayer2.Player qui implémente --entre autres-- les méthodes
Next,
Previous,
PlayPause.
Donc, c'est bon, j'ai ce qu'il faut maintenant ? Non, il manque l'objet à manipuler. Et cet objet n'a pas forcement un nom unique, il faudra donc le chercher…
Chaque objet dbus a un nom qu'il demande sur le bus, si un lecteur multimédia veut implémenter l'interface qui va bien doit avoir un nom qui commence par org.mpris.MediaPlayer2.
Il faut donc chercher les noms sur le bus qui commence par le motif indiqué.
Pour cela, on utilise l'interface org.freedesktop.DBus implémentée par l'objet org.freedesktop.DBus sur laquelle on doit appeler ListNames.
C'est bon on a tout pour commencer ??
Non, et le chemin alors ?
Le chemin (path dans la langue des Spices Girls) correspond plus au moins à la notion de classe. En simple, c'est comme l'interface, mais dont on replace . par des /, et que l'on fait commencer par /.
Donc, l'interface "org.freedesktop.DBus" sera associé au chemin "/org/freedesktop/DBus".
Là, on a tout.
On va donc commencer par chercher la liste des objets dont le nom suit un certain motif.
Si cet objet est unique, on peut appeler les fonctions qui nous intéressent, comme "Next" et les autres cités plus haut.
Implémentations
Il y a plein de binding de dbus. J'ai commencé avec un test en python, pour voir si ça marchait, puis en C par ce qu'on se refait pas et en bash, parce que je savais pas si c'était possible.
python
J'aime pas python --pas le langage en lui même, mais la gestion des versions et des dépendances-- mais il faut bien lui reconnaître qu'il est facile d'accès et que sa bibliothèque dbus est bien documentée.
C'est facile et rapide, tellement que je peux mettre ici (réduit au minimum, c'est :
#! /usr/bin/env python3importsysfromdbusimportSessionBus,Interface# On récupère le bus de sessionbus=SessionBus()# On récupère l'objet qui nom permet d'énumérer les objets sur le bus de sessionsession=bus.get_object("org.freedesktop.DBus","/org/freedesktop/DBus")# Et on appelle ListNames sur cet objetnames=session.ListNames()# Dont on récupère les objets dont le nom commence par ...players=[xforxinnamesif0==x.find('org.mpris.MediaPlayer2')]# On veut un seul objetif1!=len(players):if0==len(players):sys.stderr.write('No player found\n')else:sys.stderr.write('More than one player found\n')sys.exit()# On récupère l'objet associé au nomplayer=bus.get_object(players[0],'/org/mpris/MediaPlayer2')# Ainsi que l'interfaceinterface=Interface(player,dbus_interface='org.mpris.MediaPlayer2.Player')# Et on appelle la méthode qui va bien.interface.PlayPause()
C
En C, j'ai voulu utiliser la bibliothèque officielle (libdbus), mais j'ai lu :
If you use this low-level API directly, you're signing up for some pain. —official API documentation
Donc, je suis parti sur glib, parce que c'est rigolo de cherche de la doc sur la manipulation des GString sur internet.
C'est du même tonneau, mais avec des appels moins simples :
GVariant*result=g_dbus_connection_call_sync(con,// connexion au bus"org.freedesktop.DBus",// nom"/org/freedesktop/DBUS",// chemin"org.freedesktop.DBus",// interface"ListNames",// methode NULL,// parametreG_VARIANT_TYPE("(as)"),// sortie attendue: tableau de chainesG_DBUS_CALL_FLAGS_NONE,// pas de drapeau3000,// timeoutNULL,// cancellableNULL);// error
La partie pénible est de parcourir les résultats pour trouver l'objet qu'on veut car on doit faire attention à libérer explicitement la mémoire. Un fois l'objet voulu trouvé, on peut appeler la méthode voulue :
Le code était un peu plus touffu, il est lisible ici
Shell
Et pour bash, il existe dbus-send qui fait en gros ce que je veux en un seul appel (que j'aurais pu appeler en python ou en C si j'étais pervers)
#! /usr/bin/env bash# à la recherche du playerPLAYER=$(dbus-send --print-reply --session --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames | grep org.mpris.MediaPlayer2 | sed s'/.*"\([^"]*\)".*/\1/')# Meh, what if PLAYER is empty? wc -l will return 1# should also test for PLAYER emptynessCOUNT="$(wc -w <<<"$PLAYER")"if[0 -eq "$COUNT"];thenecho"no player found"exitelif[1 -ne "$COUNT"];thenecho"More than one player found"exitfi# appel de la méthode voulue1>&2 dbus-send --print-reply --session --dest="$PLAYER" /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
C'est moins lisible, mais ça fait le job.
Comparaison
Avec GNU time, je me suis amusé à comparer les trois implémentations (qui font la même chose, hein)
Sans surprise, python est plus lent et occupe plus en mémoire que l'implémentation en C, mais les ordres de grandeurs sont les mêmes et restent très raisonnables sur des architectures modernes (surtout comparé aux 3GB accaparés par firefox)
Je suis étonné le shell prenne si peu de RAM, faut peut être que je vérifie comment les pipes sont prises en compte par time…
La suite
Je suis content, après avoir copié les exécutables dans ~/.local/bin, je n'ai plus à utiliser la souris pour changer de piste, et j'ai un peu appris un truc. La suite serait d'ajouter un filtre pour ne piloter que certains logiciels, soigner le rangement des sources python… mais ça sera pour la prochaine fois.
[1]: Aussi appelée liste des trucs que je ferai jamais
[2]: Oui, au singulier, c'était pas vraiment caché
[3]: Media Player Remote Interfacing Specification
Chez Yaal Coop, nous proposons régulièrement des temps d'échange informel avec des gens qu'on ne connaît pas encore, mais avec qui on pense partager des centres d'intérêt ou des valeurs.
Souvent ce sont des contributeurs de logiciels libres ou bien d'autres coopératives dans l'informatique.
Parmi elles, le mois dernier nous rencontrions Hizkia une SCOP de Bayonne qui développe des outils industriels et de gestion,
Hashbang, une SCOP de Pythonistes à Lyon,
et nos voisins de Noesya à Bordeaux, qui se spécialisent dans l'éco-conception et la réalisation de sites légers et accessibles. De belles rencontres chacune.
Noesya développe le projet « Je code, je coop », qui recense des interviews de développeurs dans des coopératives.
Éloi a joué le jeu de l'interview, que vous pouvez consulter ici :
Et d'ailleurs en octobre 2024 on répondait à une interview écrite pour le site codecode.coop, qui est un projet similaire porté par Codeurs en liberté
Google dévoile LangExtract, une bibliothèque Python open source qui permet d’extraire des informations structurées à partir de textes bruts en utilisant les modèles de langage (LLMs). Cet outil se distingue par sa capacité de ‘source grounding’ précise et ses fonctionnalités de visualisation interactive, offrant aux développeur·se·s une solution robuste pour l’analyse et le traitement de données textuelles.
Il y a plusieurs décennies, un jeu a captivé des millions de joueurs et reste, à ce jour, considéré comme l’un des titres les plus originaux, addictifs et exigeants de l’histoire. Nous parlons de Lemmings, un jeu qui a connu d’innombrables adaptations et qui a indéniablement marqué son époque.
L’origine des Lemmings
Pour comprendre la genèse de Lemmings, il faut se tourner vers le studio de développement écossais DMA Design et son éditeur, Psygnosis. L’idée du jeu est née d’une simple animation de petits personnages de 8×8 pixels créée par Mike Dailly, l’un des programmeurs de DMA, alors qu’il expérimentait pour un autre projet. C’est en voyant cette animation que son collègue, Russell Kay, s’est exclamé : « Il y a un jeu là-dedans ! » et a suggéré de nommer ces créatures « Lemmings ». David Jones, le fondateur de DMA Design, a ensuite dirigé le projet pour en faire le jeu que nous connaissons.
Le jeu est sorti le 14 février 1991 sur l’ordinateur Amiga, un jour de Saint-Valentin. Le succès fut immédiat et phénoménal : le jour de sa sortie, il s’est vendu à 55 000 exemplaires, un record pour l’époque. Au total, on estime que la franchise a vendu entre 15 et 20 millions d’exemplaires sur toutes les plateformes confondues.
Comment y jouer ?
Le concept de Lemmings est simple en apparence : dans chaque niveau, des créatures aux cheveux verts apparaissent via une trappe et marchent inlassablement, se dirigeant vers une mort certaine si le joueur n’intervient pas. La mission est de leur assigner des compétences spécifiques pour modifier le décor et leur créer un passage sécurisé jusqu’à la sortie.
Pour cela, le joueur dispose d’un nombre limité de huit compétences, parmi lesquelles :
Grimpeur (Climber) : pour escalader les parois verticales.
Flotteur (Floater) : pour utiliser un parachute et survivre aux chutes mortelles.
Bloqueur (Blocker) : pour stopper les autres lemmings et les forcer à faire demi-tour.
Bombe (Bomber) : pour faire exploser un lemming après un compte à rebours de cinq secondes.
Constructeur (Builder) : pour bâtir des escaliers.
Creuseur (Digger/Miner/Basher) : pour percer des tunnels à la verticale, en diagonale ou à l’horizontale.
Le jeu original proposait 120 niveaux répartis en quatre niveaux de difficulté : « Fun » (Amusant), « Tricky » (Délicat), « Taxing » (Éprouvant) et « Mayhem » (Chaos). Pour chaque niveau, il fallait sauver un certain pourcentage de lemmings dans le temps imparti.
Qu’est-il arrivé aux Lemmings ?
L’immense succès du jeu a entraîné une vague de portages sur la quasi-totalité des systèmes de l’époque : PC (MS-DOS), Super Nintendo, Game Boy, Mega Drive et bien d’autres. Des suites et extensions ont rapidement vu le jour, comme Oh No! More Lemmings dès 1991, qui ajoutait 100 niveaux inédits.
Mais que sont devenus ses créateurs ? DMA Design a continué sur sa lancée pour créer une autre franchise légendaire : Grand Theft Auto (GTA). Le studio a finalement été racheté et est aujourd’hui connu sous le nom de Rockstar North, un pilier de l’industrie du jeu vidéo.
Et qu’en est-il de la propriété intellectuelle (IP) du jeu ? Contrairement à une idée répandue, les droits n’ont pas été conservés par DMA Design. C’est l’éditeur, Psygnosis, qui détenait l’IP. Psygnosis a ensuite été racheté par Sony en 1993. C’est la raison pour laquelle les remakes et nouvelles versions de Lemmings sont apparus sur les consoles PlayStation, notamment sur PSP en 2006, sur PS Vita et même sur mobile, assurant ainsi la pérennité de ces créatures attachantes.