Moviz – Visualisation de données de films

La prémisse

J’ai toujours tendance à faire des références à des films dans mes conversations. Des films comme WarGames, Real Genius, Quiet Earth, Blade Runner, Brazil, toute la cinématographie de Quentin Tarantino, des frères Cohen ou de Cronenberg font le palmarès de mes citations. Je fais des liens qui, dans ma tête sont pourtant très clairs, se retrouvent souvent à être communiquésmaladroitement ainsi à mon entourage: « Tsé? Le film avec chose, tsé? Lui qui a joué dans l’autre film avec, tsé? La fille qui a joué dans l’autre film, tsé? Du même réalisateur que tel autre film? ». Il semble que mon esprit soit très bon pour faire des liens, mais bien moins bon à citer de mémoire des noms ou des titres exacts, pis ça, c’est quand je ne me trompe pas carrément dans mes liens, comme quand je confonds Vanilla Sky et Magnolia!

La solution

Il m’est venu l’idée d’une application conviviale et dynamique qui pourrait venir en aide dans ce genre de situation où on cherche à communiquer précisément les liens qu’on est en train de faire quand on a ce genre de conversation. À partir d’un premier sujet, un titre de film, un acteur, un réalisateur, qu’on puisse parcourir rapidement visuellement ensuite les liens entre d’autres sujets.

Pistes pour la réalisation

Données

The Internet Movie Database (IMDb)

IMDb s’est imposé comme LA référence sur le web pour les cinéphiles. Au 14 août 2012, IMDb comptait 2 280 254 films et 4 780 553 individus répertoriés et, surtout, interreliés. Ce projet a débuté sur USENET en 1987 où des fans s’amusaient à créer des listes d’acteurs et en particulier d’actrices aux jolis yeux. En 1990, un logiciel est proposé sur rec.arts.movies pour aider à créer de nouvelles entrées et de faire des recherches dans la liste existante. En 1993, les données sont accessibles via une interface Web et IMDb tel qu’on le connaît est né. Les internautes étaient alors invités à contribuer sur une base volontaire pour enrichir son contenu. En 1998, Amazon.com fait l’acquisition d’IMDb. En 2002, un produit payant IMDbPro est proposé permettant d’accéder à un maximum d’information. En 2006, un service annuel payant est proposé à l’industrie leur permettant de gérer eux-mêmes leur curriculum vitae et leurs photos. À la différence de Wikipedia, aucun internaute ne peut ajouter, effacer ou modifier les données directement. Les données sont contrôlées par IMDb et seuls les employés d’IMDb sont authorisés à manipuler les données. Aucune interface de programmation via le Web n’est proposée. Les données sont par contre disponibles via FTP pour usage personnel et non commercial. Pour les usages commerciaux, des licences sont octroyées à un coût minimum de 15 000 $ par année.

The Movie Database (TMDd)

TMDb a vu le jour en 2008 pour permettre la distribution d’affiches de films à haute définition pour le projet XBMC. Ce qui a vu le jour comme une simple page Web unique avec des liens sur les fichiers zip s’est transformé en une des bases de données alimentées par la communauté les plus actives de l’Internet. En 2009, une première version d’API est proposée. Les interfaces version 2.1 (XML, YAML) et version 3 (REST, JSONP) sont présentent disponibles. Il est permet d’utiliser l’API et les données de TMDb pour des fins commerciales, mais les tarifs ne sont pas affichés et sont négociés à la pièce. Il est à noter que l’usage des données provenant de TMDb peut être considéré comme une utilisation qui ne respecte pas les droits d’auteur des créateurs. À titre d’exemple, il semblerait qu’une application sur vingt qui utilise les données de TMDb, en particulier les images, est rejetée par Apple pour cette raison.

IMDbPY

IMDbPY est un logiciel libre en Python permettant d’importer les données d’IMDb disponibles via FTP gratuitement pour usage personnel ou non commercial des fichiers dans une BD relationnelle (MySQL, PostgreSQL, SQLite, Firebird, MAX DB, Sybase, DB2/Informix IDS).

IMDG et Solyaris

Quand j’ai eu cette idée, je pensais qu’elle était originale. Mais non, quelqu’un y avait déjà pensé en proposant une preuve de concept IMDG (Internet Movie Database Graph) dès 2008 (bâtie avec Processing et utilisant les données d’IMDb) et ensuite une application iOS payante (1.99$) Solyaris proposée en 2011 (bâtie avec Cinder et utilisant les données de TMDb).

Mais bon, il y a bien eu Pepsi après Coke…

Serveur de backup et multimédia maison

Pour mes besoins de backup pour données personnelles ( photos, musique et vidéos), j’utilise un appareil Iomega StorCenter ix2-200 avec deux disques de 1 TB montés en RAID 1, où les données sont inscrites sur les deux disques, ce qui est une approche recommandée principalement pour accélérer les temps d’accès, mais qui fonctionne aussi comme backup, puisqu’en tout temps j’ai toujours deux copies de toutes les informations qui y sont stockées. Aussi, je peux en tout temps retirer un disque (malheureusement, pas à chaud ou « hot swap », mais bon…) et le remplacer par un autre disque. La copie RAID se reconstruit alors automatiquement. Je peux sortir un disque physiquement de la maison et ainsi être moins sensible aux risques potentiels d’incendie, et je  faire une rotation régulièrement à trois disques pour un maximum de sûreté.  Cet appareil comporte aussi trois prises USB. J’ utilise les deux à l’arrière pour des imprimantes (une laser et une couleur à jet d’encre). Une troisième prise à l’avant permet de facilement transférer des fichiers avec une clé USB. Outre ces fonctionnalités, cet appareil offre un client bit torrent et un serveur média DLNA, le tout accessible via une interface Web conviviale. Malheureusement, je n’ai jamais réussi à faire fonctionner le serveur DLNA inclus avec l’appareil avec mon Xbox. Heureusement, l’accès à l’interface console et aux entrailles Linux de la machine via le compte root est bien documenté! J’ai pu, en à peine une seule nuit blanche, installer les outils de développement GNU sur cette machine et compiler le projet libre minidnla qui lui fonctionne à merveille!

Skype sur ma TV?

J’ai une Smart TV de Samsung qui permet l’ajout d’applications via un « magasin »  à la Apple Store et Google Play. Une des applications proposée est Skype. Je pourrais donc faire de la teléconférence depuis le confort de mon salon? Super… Par contre, premier hic: il faut brancher une caméra USB. À première vue, pas de problème. Je tente d’en brancher une qui traîne dans mes affaires, mais sans succès. Ben non, ça prend un modèle particulier, j’ai envie de dire, évidemment! Je vois là un complot de marketing pour me faire consommer davantage. Mais bon, ça s’explique, principalement par le fait que 1) il ne soit pas possible d’ajouter des pilotes pour le matériel (des « drivers » en bon français); et 2) les coûts de licence pour les codecs  H.264 (la technologie derrière la  haute définition Blu-ray). Je suis d’ailleurs à même de constater l’absence de codec H.264 sur ma TV quand je tente d’y faire jouer un film HD maison. Par contre, si je passe par mon lecteur Blu-ray pour accéder au même fichier, alors là, pas de problème. Bref,  j’abandonne cette idée de penser utiliser Skype sur ma TV. Je me tourne alors vers ma Xbox et son Kinect. Avec l’aquisition de Skype par Microsoft, à quand la possibilité de faire de la téléconférence via Skype dans mon salon en utilisant cet équipement déjà en place? Pas de date encore, mais Microsoft y travaille

Retour vers le futur… du passé!

Pour l’an 2000, PLAN, la revue de l’Ordre des ingénieurs du Québec (OIQ), avait sorti un numéro spécial pour souligner le passage au 21e siècle. Des ingénieurs avaient été interviewés pour tenter de prédire l’évolution de la technologie dans plusieurs domaines, tels l’informatique, les télécommunications, l’espace, les transports, etc. J’avais eu le plaisir à l’époque, alors que je travaillais chez Domosys comme ingénieur stagiaire, d’être interviewé pour le volet « Habitat » pour un article titré « Foyer hyperbranché ». Je trouve intéressant de revisiter cet article 12 ans plus tard, question d’évaluer ma clairvoyance…

Domosys était une entreprise de R&D en technologie de pointe qui avait créé sa propre puce de communication sur courant porteur, utilisant l’onde électromagnétique de 120 VAC 60 Hz du filage électrique existant d’un bâtiment comme onde porteuse. Je disais à l’époque: « La domotique de demain prendra la forme du contrôle et la consultation à distance de l’état de tous les appareils électriques de la maison par l’entremise d’une interface Web intuitive. Mais, pour assurer la diffusion auprès du grand public, il reste des étapes à franchir. Actuellement, la domotique est surtout l’affaire de techno-hobbyistes. Par contre, le marché de la domotique commence de plus en plus à intéresser les grands noms de l’informatique, ce qui rendra cette technologie plus disponible et accessible. La domotique permet une multitude d’applications commerciales qui pourraient intéresser notamment les fournisseurs de services publics. Les entreprises intéressées par la connectivité locale sont en train de concevoir une plateforme qui fera sortir  la domotique du royaume des initiés. Il s’agit du projet OSGi (Open Services Gateway Initiative), un projet mis de l’avant par un consortium réunissant une trentaine de grands noms de l’industrie, comme IBM, Motorola, Nokia, Nortel Networks (!), Oracle, Philips, Siemens, Sony, Sun et… Domosys! Ce consortium a le mandat d’établir une norme pour une passerelle résidentielle qui jouera le rôle de point d’entrée du réseau Internet et de centre d’aiguillage pour la création d’un réseau local. D’ici cinq ans, ce produit apparaîtra sur le marché. Des systèmes de réseautique clé en main seront offerts par les fournisseurs de services traditionnels. Ce type de passerelle sera aussi un point d’ancrage pour tout autre système de réseautique locale. Entre 2005 et 2010, je m’attends à un accroissement important du nombre de services offerts grâce à cette connectivité globale. Je pense, d’abord, à des applications comme des systèmes de sécurité plus intelligents ou des systèmes de diagnostic à distance. Il n’est pas nécessaire d’avoir une grande largeur de bande pour établir un réseau de contrôle efficace. La technologie de courant porteur, plus économique, est tout indiquée. »

Douze ans plus tard, qu’en est-il? Premièrement, la communication sur le courant porteur n’a toujours pas atteint le marché de masse. Ensuite, pouvoir allumer et éteindre ses lumières à distance, ce n’est pas l’application la plus attrayante pour le consommateur. Avec le recul, c’est évident: l’application de l’avenir, c’était la vidéo sur demande et cette application à elle seule allait mettre suffisamment de pression sur la nécessité de déployer une capacité accrue en largeur de bande plus rapidement jusqu’aux maisons. Mais qui aurait cru à l’époque que déjà en 2012 on voit déjà le déploiement de la fibre optique par Bell jusqu’à nos maisons!? Ensuite, alors qu’on imaginait n’avoir une seule « passerelle résidentielle » faire le pont entre Internet et le réseau local d’une maison, on se retrouve non pas avec une seule passerelle normalisée sur laquelle plusieurs fournisseurs offrent leurs services, mais en fait, avec une multiplication de « passerelles résidentielles » offrants toutes leurs propres mécanismes de développement et de déploiement de services. Malheureusement, le rêve d’OSGi d’avoir une norme unique pour le déploiement de services sur ces passerelles résidentielles ne s’est pas concrétisé, même si la communauté OSGi Alliance, qui a dû par contre se repositionner, est toujours bien vivante dans le monde Java. On retrouve maintenant dans les foyers hyperbranchés, derrière le modem de notre fournisseur Internet et notre routeur/pare-feu, une multitude d’appareils interconnectés. Dans mon salon à la maison, par exemple, je retrouve pas moins de 4 « passerelles résidentielles » branchées sur Internet: TV, DVD, XBox, et décodeur Vidéotron. Toutes offrent une connectivité globale et offrent des services, et beaucoup des mêmes services: vidéo sur demande, jeux, météo, Skype, Facebook.  Ma TV et mon DVD sont tous les deux de marque Samsung pour lesquels il est possible de développer des applications. Même chose pour le XBox, évidemment, pour développer des jeux. Même Vidéotron se lance dans le développement d’applications pour Illico. Pour un développeur paresseux qui aime bien l’idée de développer une application une fois seule fois en la faisant rouler partout sur toutes les machines, cette explosion de plateformes est un cauchemar. On s’ennuie du temps des deux camps PC vs. Mac. Maintenant, c’est PC, Mac, Linux, iOS, Android, Windows Phone, Bada, webOS, Samsung Smart TV, XBox, PlayStation, WII, PSP, DS… arrggg!!!

Heureusement, grâce aux efforts de normalisation des technologies du Web, il y a tout de même une part de compétences transversales qui peuvent être réutilisées à plusieurs sauces!

HTML5, you’re our only hope !

Quelles singeries!?

Dans une réunion, une collègue a fait référence à un singe hier en disant : « si vous ne voulez pas vous retrouver avec le singe ». Mais, de quel singe parlait-elle au juste ?

C’est une référence au film 12 singes avec Brad Pitt?

Ou au théorème selon lequel un nombre infini de singes installés à des machines à écrire pourraient éventuellement aléatoirement finir par écrire du Shakespeare  (qui, soit dit en passant, peut d’ailleurs se simuler en utilisant un alogorithme génétique)?

Non, en fait, c’est une référence à un l’excellent article « Management Time : Who’s Got the Monkey ? »  paru la première fois en 1974 dans le prestigieux Harvard Business Review, où il apparaît à nouveau en 1999 en réédition classique. Ça traite de l’art de déléguer et le singe représente un fardeau qu’on porte sur nos épaules. En tant que gestionnaire, on ne doit pas prendre tout le fardeau, tous les singes sur nos épaules. Il faut apprendre à déléguer, à se débarrasser de nos singes.

Je vous recommande fortement cette lecture fort intéressante, ludique et utile !

L’extinction de la souris et l’évolution de l’interface usager

Mes petits enfants auront sûrement la même réaction face à une souris que mes enfants ont face à une disquette 3 1/4″ aujourd’hui: « C’est quoi ça Papa?! ». En effet, la souris suivra très certainement le même chemin que la disquette: l’extinction !

En 2007, on parlait de la remplacer par une interface visuelle — visuelle dans le sens de suivre le mouvement des yeux! Cool! Mais, attention de ne pas trop gligner des yeux! Il me semble que ça doit donner des migraines ce truc-là! On parlait alors de GUIDe (Gaze-Enhanced User Interface Design).

Plus tard, en 2009, on parlait de Microsoft qui travaillait toujours sur l’évolution de la souris, pour le temps qui lui reste. Oui, en effet, il y aura sûrement encore quelques itérations de la souris avant sont extinction…

Avec l’évolution des écrans tactils multi-touch de nos appareils mobiles et tablettes et de l’apparition de Kinect dans nos salons, et avec des technologies comme GUIDe, Microsoft Surface, et la technologie derrière le film Rapport Minoritaire, et celle où on fait usage des ondes cérébrales qui sortent tranquillement des laboratoires, il me semble qu’on est dû pour une petite révolution de l’interface usager dans nos stations de travail. Et, avec toutes ses interfaces basées sur la gestuelle, l’intérêt pour les postes de travail en position debout et plus ergonomique gagnera peut-être en popularité. Ou, encore mieux, la position couchée! Disons que c’est pas gênant de se faire prendre les deux pieds sur le bureau dans ce genre de setup!

Mais bon, pour revenir sur la souris… Je suis tout pour l’extinction de la souris, une technologie dépassée s’il en est une (tout comme le fax d’ailleurs… à quand l’extinction du fax!?). Oui, SVP débarassez-moi de la souris, et vite, mais de grâce, ne touchez pas à mes pitons! Et surtout, évitez de changer le positionnement et la tailles des touches, ou pire, d’enlever des touches sur les claviers, comme sur les récents laptop Dell XPS Studio 15/17: pas de touche Pause/Break !?! Quossé ça?!

Celà dit, quand il est question d’ergonomie, je suis prêt à essayer de changer. D’un point de vue ergonomique, voici la meilleure combinaison de clavier et de souris que j’aie jamais utilisée, Microsoft Natural Keyboard et cette souris-joystick de 3M:

Pas sûr par contre que j’oserais aller jusqu’à celui-ci de Maltron:

040109_rg_ergonomickeyboards_03.jpg

Pitonneux à 2 doigts s’abstenir…

Suppression récursive sous MS SQL Server

Supposons que vous ayez une table définie comme ceci:

CREATE TABLE MyTable (
OID INT, --clé primaire
OID_Parent INT, --récursion, clé étrangère
--... autre colonnes
)

Bien qu’il soit possible de définir une clé étrangère avec l’attribut DELETE CASCADE, à la différence d’autres SGBD, les suppressions en cascade récursives sur la même table ne sont pas prises en charge sous MS SQL Server. Avec une telle relation récursive, tenter de supprimer un enregistrement duquel un autre enregistrement dépend n’est pas permis. Si pour contourner le problème vous tentez de créer un déclencheur INSTEAD OF DELETE, celui-ci ne se déclenche uniquement pour le premier DELETE. Il ne se déclenche pas récursivement pour supprimer tous les enregistrements. Ce comportement est attendu et documenté sur MSDN : “Si un déclencheur INSTEAD OF défini sur une table exécute une instruction portant sur cette table et qui est susceptible de l’activer de nouveau, il n’est pas appelé de façon récurrente.” La solution est donc de créer un déclencheur de suppression récursif comme celui-ci:

CREATE TRIGGER del_MyTable
ON MyTable
INSTEAD OF DELETE AS CREATE TABLE #Table(OID INT)
INSERT INTO #Table (OID) SELECT OID FROM deleted
DECLARE @c INT
SET @c = 0
WHILE @c <> @@ROWCOUNT
BEGIN
SELECT @c = @@ROWCOUNT
INSERT INTO #Table (OID)
SELECT MyTable.OID FROM MyTable
LEFT OUTER JOIN #Table ON MyTable.OID = #Table.OID
WHERE MyTable.OID_Parent IN (SELECT OID FROM #Table)
AND #Table.OID IS NULL
END
DELETE MyTable FROM MyTable
INNER JOIN #Table ON MyTable.OID = #Table.OID
END

Ce déclencheur insère tous les enregistrements de la pseudo table deleted dans une table temporaire #Table. Ensuite, il rassemble tous les enregistrements qui ne sont pas déjà dans la table temporaire (LEFT OUTER JOIN … WHERE IS NULL). La boucle s’arrête si aucun nouvel enregistrement n’est trouvé. Finalement, tous les enregistrements recueillis sont supprimés.

(Adapté de devioblog)

Boucler sur tous les enregistrements d’une table

Voici une façon simple et élégante (mais pas très rapide!) de boucler en SQL sur tous les enregistrements d’une table qui comporte une clé primaire unique:

-- changer type, id et table selon le type et le nom de la clé primaire et la table à manipuler
declare @id type
select @id = min(id) from table
while @id is not null
begin
-- modifier cette ligne selon l'opération à faire sur chaque enregistrement
select * from table where id = @id
select @id = min(id) from table where id > @id
end

Pour boucler sur tous les enregistrements d’une table qui ne comporte pas de clé primaire, la méthode est plus complexe et moins élégante; elle implique l’utilisation d’une table temporaire. Voirhttp://support.microsoft.com/kb/111401 pour plus de détails.

WikiPlus de KWizCom

C’est connu, les fonctionalités de base de SharePoint côté Wiki sont faibles comparativement à d’autres offres sur le marché. La référence dans ce segment est sans contredit MediaWiki, l’engin derrière Wikipedia. Tout autre technologie sera nécessairement comparée à MediaWiki. Et, dans une telle comparaison, SharePoint ne fait généralement pas très bonne figure. En fait, c’était surtout vrai avant SharePoint Server 2010 qui offre maintenant des fonctionalités Enterprise Wiki qui commandent plus de respect! Par contre, si vous êtes toujours sur MOSS ou WSS 2007 ou si votre plateforme de prédilection gratuite reste SharePoint Foundation 2010, le produit WikiPlus de KWizCom, une compagnie canadienne (Markham, Ontario) soit dit en passant, pourrait sans doute vous intéresser!

Connexion SP2010 BCS à BD MySQL WikiMedia

SharePoint 2010 propose une technologie nommée BCS (Business Connectivity Services) permettant d’intégrer des données provenant de sources de données externes à SharePoint. Comme premier essai avec cette technologie, je tente de créer un lien vers une base de données MySQL WikiMedia. Pour se faire, j’utilise ma machine virtuelle de développement Information Worker sur VirtualBox (voir billet précédent) pour créer un projet BCS sous Visual Studio 2010.