Aline’s Tech Blog

All my geekness is here :-)

First steps with LINQ December 4, 2008

Last week, I had to think about LINQ for my project at work, and I discovered all the power of this framework. I didn’t go further than a very basic sample demo. Here are my first thoughts about this technology, after only a few hours surfing the net and trying a little things. (forgive me for my mistakes and lack of experience, though.)

A powerful Database-to-classes mapper

Several possibilities:

  1. You are using an existing database or you prefer designing your database before your object model: Create a new SQL connection in Visual Studio 2008 and drag-n-drop your database in a new DBML file… That’s all, everything is done and you can manipulate objects.
  2. You are starting a new project… you will work with only 1 model / diagram: the DBML file.

Something which could be useful if you want to create a database from the DBML : The db.CreateDatabase() feature. But be careful, as he says.

An easy and secure way to query data

Here you cannot forget a string query somewhere. You write your query using visual studio Intellisense, you cannot make mistakes…

Easy to use, fast, smart… magic!

In 5 minutes the mapping, the data abstraction is done. So easy. Nothing else to do. I think if I was designing a new project now, I would not hesitate.

LINQ allows anyone to have a good structure in his application by creating an adaptable data access layer.

Limits

Full-Microsoft… Again

What I only found about LINQ was LINQ to SQL (understand MS SQL SERVER) and LINQ to XML. Nothing for other database management systems for the moment.

Not serializable

This can look like a minor problem, but the LINQ tables and data is not serializable. And then, no .NET remoting with LINQ! But of course, the new .NET 3.5 WCF framework works with it.

I’d like to make further topics about LINQ. Probably 1 sample demo explained, and LINQ vs NHibernate.

 

Micro$oft Technet Days à Lyon November 7, 2008

Filed under: WPF, geek, job — Aline @ 12:05 am
Tags: , , , ,

Petit comMicrosoftpte-rendu de ce que j’ai vu d’intéressant aux microsoft Technet Days, qui avaient lieu à Lyon les 29 et 30 octobre.

Pour connaître toutes les nouveautés qui ont été annoncées (et donc qui nous ont été rapportées à Lyon) à la grande messe microsoftienne, la “PDC” de Los Angeles, c’est chez Jerem que ça se passe !

Pour ma part je parlerai de ce qui paraît bien fait dans l’environnement de développement Microsoft, là où ils ont une longueur d’avance (à mon avis). Voici, dans l’ordre, un tour d’horizon des conférences auxquelles j’ai eu la chance d’assister.

L’Accès aux données

Cette partie montrait des manières d’accéder à des sources de données “proprement” (mapping, librairie d’objets, abstraction de la base de données, couche d’accès aux données, tout ça).

Pour l’instant, j’utilise NHibernate, parce qu’en 2006 quelqu’un avait trouvé ça sympa.

Aujourd’hui, j’ai découvert la facilité d’accès de LINQ, la technologie de mapping de chez Microsoft. LINQ est totalement intégré à visual studio, et permet d’”oublier” complètement la source de données.. Tout en faisant des “requêtes”, ce qui permet une grande maniabilité. On oublie les “.hbm.xml”, fichiers “de mapping” de NHibernate qui permettent la correspondance objet/classe.

J’ai hâte de trouver quelques minutes pour essayer ça.

On a aussi entendu parler de Entity, un truc tout nouveau (j’ai pas compris grand chose, sujet classé dans ma “A Creuser”-list) plus proche de la base, qui semble être une alternative à LINQ.

Plénière Développeurs

  • “on a inventé un .NET Embarqué, si si ça va marcher on vous jure”
  • “Microsoft est un standard, on devient de + en + standards. Tenez, par exemple, la norme OOXML

No Comment…

Visual Studio Team System & Team Explorer

De nombreux outils permettent de gérer le projet de développement logiciel de A à Z, en intégrant au code des tests manuels, des tests de couverture, unitaire, la documentation associée, l’analyse du code, la liste des fonctionnalités, des métriques, des pages web, et tout ce dont on peut avoir besoin. En plus de ça, Team Enterprise permet de mettre en place l’intégration continue, et la gestion de la solution de manière bien meilleure que SourceSafe (en même temps y’a pas de mal).

Ici on a parlé d’agilité. L’outil visual studio 2008 semble contenir des outils très adaptés pour la gestion de tels projets.

Silverlight

Visual Studio 2010 permettra beaucoup plus de facilité dans le développement d’applications Silverlight et wpf.

Solutions Online/Offline avec SQL Server 2008

Un Microsoft geek (comprendre: un geek mais bien sapé et qui a une copine) complètement à fond nous a démontré qu’en 1h30 (1h45…) il était possible de créer très facilement une solution online/offline avec synchronisation des données grâce à SQL Server 2008 et son intégration avec Visual Studio.

Démo très intéressante avec un PDA et un PC. Ca aussi il va falloir le regarder de plus près.

Offre décisionnelle Microsoft

Plein d’outils pour faire des rapports et de l’analyse de données existent…

j’ai noté “Report Builder”

Après, la “BI” (Business Intelligence), c’est pas encore mon domaine.

En conclusion, ces 2 demi-journées ont été pleines d’informations concrètes, de qualité. Je ne m’attendais pas à aussi bien. J’ai plein d’informations à chercher pour essayer de faciliter les développements.

 

Notes Agile Tour Valence November 5, 2008

Filed under: Software — Aline @ 8:38 pm
Tags: , , , ,

Cet article n’est pas comme l’autre… Pas le temps en ce moment d’écrire une grosse réflexion sur tout ce que j’ai pu entendre à Valence. En plus, ça commence à faire longtemps !

D’une manière générale, on a encore appris plein de choses en ce jour du 23 octobre. Et surtout j’ai adoré l’organisation au top (avec un ManuChenu en pleine forme !) qui a rendu l’après midi très efficace, sans temps mort, et surtout sans un seul blabla inutile. (un prochain article parlera des Microsoft Days, c’était pas pareil)

Bon, voilà simplement ce qu’il y avait écrit sur mon petit bloc notes agiletour… A savoir : les trucs qui m’ont interpellée, les sujets à creuser, et les trucs qu’il faudrait qu’on fasse.

Spécifieurs et artistes

Je n’ai rien noté car c’était un atelier. Ce que j’en retiens c’est que la communication entre les spécifieurs et les développeurs (j’ai beaucoup aimé le parallèle avec “artistes” d’ailleurs) est très difficile dans la plupart des cas, et que la solution qui paraît la plus évidente c’est bien de la communication et de la collaboration fréquente et facile entre les 2 entités. (et donc on démontre que l’agilité c’est tout naturel. Ben oui…)

Retour d’expérience Yahoo! international

  • Avant d’essayer quoi que ce soit, il faut obtenir l’amont du management.
  • Aider l’équipe Produit à faire le backlog. Dans le cas du retour d’expérience de Monsieur Boutin, 3 jours de dialogue ensemble.
  • Les métriques… Je voulais chercher à quoi ça correspondait, il suffisait d’attendre un peu ;-)
  • Approche “framework” pour laisser la porte ouverte au choix de la “gestion de projet” / pratique. Standardiser les pratiques logicielles n’est pas incompatible avec les pratiques actuelles. –> c’est étonnant, mais quand je relis, j’ai du mal à comprendre =)
  • Petite pensée qui n’a rien à voir: penser à faire des “burndown charts”

Le Refactoring

*waouh, complètement bluffée par les outils de refactoring utilisés dans cette démo !*

  • C’est quoi ? du remaniement (ça fait plus classe que “nettoyage”, le terme qu’on utilise chez nous). Changer la structure du code pour en faire apparaître la conception, et donc pour qu’on soit capable de le partager ou de le faire lire à quelqu’un.
  • Un grand principe de XP qui rend le refactoring incontournable : “Chaque chose ne doit être exprimée qu’une fois”.
  • Refactoring vs documentation. Eh oui, je l’ai toujours soutenu et voici une preuve, Les commentaires qui redisent exactement ce que fait la fonction alors qu’elle est bien écrite et qu’elle utilise des identifiants explicites, ça sert à rien !!!
  • http://www.uispec4j.org (pas encore eu le temps d’aller voir).

Crystal – méthodologie du jeu coopératif

  • Contexte de ce retour d’expérience:
    • Beaucoup de facteurs de découverte
    • Industrie
  • Alistair Cockburn est à l’origine de Crystal
  • Idée générale: 1 projet = 1 méthode de dev différente. Même si toutes les méthodes ont le même “code génétique”:
    • théorie
    • propriétés
    • stratégies
    • techniques
  • 2 objectifs: 1) livrer, 2) être prêts pour après (doc…)
  • L’information est un parfum
  • Quitte à ne pas faire tout dans XP, autant savoir lesquels faire et pourquoi.
  • Miyamoto Musachi, Samurai

Voilà, un compte-rendu peu exhaustif, mais qui reflète ce que j’ai retenu.

Vivement l’édition 2009 !

 

Les sociétés de service et leurs techniques de séduction de recrutement October 18, 2008

Filed under: job — Aline @ 5:16 pm
Tags: , , ,

Voici une petite anecdote que m’a envoyée un copain de promo. Ayant aussi eu pas mal d’appels au moment où je cherchais un boulot (même si pour moi, bizarrement, c’était plutôt des charmants jeunes hommes au téléphone…), je pense que c’est très significatif de ce à quoi on est exposés en tant que jeunes diplômés !

J’ai enlevé les noms de ville et d’entreprise.

Merci beaucoup à lui pour ce témoignage !

Aujourd’hui et hier, j’ai rencontré 2 SSII, la SSII A et la SSII B, qui devaient me présenter toutes les deux à leur client. Le truc fort et que je ne savais pas, c’est qu’elles sont arrivées à me présenter toutes les deux au même mec. Je “double” mes chances pour le poste, mais eux et moi se retrouvent dans une situation assez bizarre.

TECHNIQUE SSII A

Le mec de la SSII A fait appel à mon éthique d’ingénieur comme quoi la SSII B avait pas été réglo, me dit que eux ils sont mieux positionnés dans le domaine système et m’annonce qu’il ne fera pas la course au salaire. Pour me convaincre, il me fait donc un petit tour avec sa grosse voiture 200ch : slaloms sur la rocade, accélération collage au fauteil.. Il me décroche un sourire puis m’annonce que ce sera 28k+4k de package qu’il n’a pas voulu me détailler.

TECHNIQUE SSII B

On me paie le train + un hôtel bien placé en centre ville pour m’incruster à l’entretien avec le client avant celui de la SSII A. On me coach assez rapidement pour faire un bon entretien avec le client, on me fait voir l’étage RH où je ne vois pas un mec à part celui qui me fait visiter et on finit par me présenter à la chargée de recrutement (qui a le physique 9/10 quoi). T’as envie de retourner dans la boîte juste pour revoir la chargée de recrutement qui se permet de me tutoyer sur la fin (genre on est amis :p).
Le lendemain, je retourne chez eux et je leur parle des “points forts” de la SSII A. Ils ne sont pas déstabilisés et me proposent 29+2,8k (les 2,8 en gros ca m’a fait penser à de l’argent dans une enveloppe non déclarée mais bon :p). J’ai pas encore eu à négocier le salaire, je sais pas si on a eu grosse marge de manœuvre mais je crois qu’il ne faut pas trop y compter. Je ne sais pas trop encore quels sont les salaires moyens avec/sans “package”.

Voilà pour le moment je n’ai eu des propositions que de ces 2 SSII (qui n’ont pas encore l’affaire d’ailleurs). J’ai aussi rencontré une autre qui se vantait d’avoir également des projets dans ses locaux alors que plein de SSII se sont mis à faire ça. Ils avaient une chargée de recrutement peut être encore mieux que chez la SSII B.

SSII Method :

1- Tu fais croire qu’il n’y a que des femmes dans la boîte (tu sais très bien que dans le technique il y a 95% de meufs) et tu fais passer le candidat dans le couloirs des RH uniquement et aux forums tu ne mets que des meufs.
2- Tu mets une mannequin en chargée de recrutement ou un autre truc si t’as pas (belle voiture par exemple).
3- Tu précises que ta boîte a des opportunités dans tous les domaines, dans tous les endroits avec des perspectives d’évolution et des formations.
4- Tu fais une offre.
5- Tu fais signer.

 

Pour être en forme, soyez agiles October 13, 2008

Filed under: Software — Aline @ 9:41 pm
Tags: , , , , ,

Voici un petit résumé de ce que j’ai retenu des 4 + 1 conférences auxquelles j’ai eu la chance d’assister Jeudi dernier : l’Agile Tour à Grenoble.

1. Le prof de management de l’école de Grenoble: Jérôme Barrand

Alors, en gros, l’entreprise et son système d’information, grâce aux informaticiens (je ne fais pas partie des coupables, je suis bien trop jeune ;) ), c’est devenu un gros truc innommable, avec tout le monde qui est en relation avec tout le monde, où tout va à fond la caisse et bouge tout le temps.

Et puis malgré ça, on reste (trop) souvent dans une structure d’entreprise hiérarchique, avec tout en haut le grand chef qui réfléchit et qui détient l’information et le pouvoir, et qui donne des choses à faire à des exécutants en bas. Et ça c’est historique, c’était comme ça au vieux temps…

C’est pour ça qu’il faut trouver un nouveau truc. Un nouveau mode de pensée et de management des entreprises. Eh oui, l’agilité ce n’est pas que des geeks dans un bureau qui ont une super machine de build qui s’allume en rose. C’est aussi tout un mode de “pensée au boulot”, admis et recommandé, et même par des gens qui en ont vu, des choses, dans leur vie.

Note pour plus tard : Waouh… j’aimerais bien être capable de faire un show comme le sien !

2. Introduction à Scrum

Résumé : Bon ben voilà, c’est bon, je n’ai plus peur. En fait, on peut se faire le truc à notre sauce ! Pas besoin d’en faire trop d’un coup.

J’ai surtout noté des infos concernant les pratiques d’équipe plutôt que les techniques de gestion de projet avec sprints, backlogs et compagnie (parce qu’on avait vu ça en cours).

L’agilité pour une équipe c’est Partage, Responsabilité, Confiance (etc). Effectivement, pour une équipe de basket ou d’impro, c’est une évidence. Mais pour du dev… On n’aurait pas imaginé… Ben si, en fait c’est pareil ! Et on verra aussi dans la conf suivante, que c’est aussi un peu le même fonctionnement qu’en famille…

  • Ce qui passe en premier c’est pas les outils et les procédures compliquées, c’est les gens. Le socle, c’est les individus et l’esprit d’équipe.
  • Avoir quelque chose qui marche, c’est mieux qu’une doc super compliquée avec des 1.1.2.a.iv.B) alinéa 3.
  • Le client c’est notre partenaire (parce qu’on est motivés en vrai pour lui, on cherche pas à l’avoir).
  • On est capable de s’adapter au changement.

Et en fait tout ça, ça existe depuis longtemps, et les premiers à avoir imaginé quelque chose qui s’appelait “Lean Thinking”, c’est des américains. Lean Thinking a été mis en place par Toyota en 1950 pour la première fois. Et en 1987, il a été inventé un processus de développement “en spirale”.

Dernière chose que j’ai notée, c’est que la réunion quotidienne préconisée par Scrum, c’est (< 15′) :

  • Qu’est ce qui s’est passé la veille ?
  • Qu’est ce qui va se passer aujourd’hui ?
  • Quelles sont mes difficultés ?

3. Aspects Psychologiques (Ψ) des méthodes Agiles

(oh mon Dieu, là on a peur d’être tombé dans une secte bizarre !)

(et on n’en est pas loin…)

Il y a des aspects psychologiques bien sûr, car les méthodes agiles, comme on l’a vu, sont tournées vers l’être humain. Et l’objectif, c’est notre bien-être à tous !

Test-Driven Development = l’Apprentissage

“Comme dans les réseaux Neuronaux”, dit-il.

(no comment)…

Effectivement, commencer par le test, et s’améliorer pour réussir le test, c’est un entraînement ou un apprentissage. Cela permet de reconnaître notre objectif et de ne pas le lâcher, ne pas partir dans une autre direction non plus. “Amélioration Continue”.

Binôme = Accepter de l’aide, échanger (commentaire personnel: = tous à poil !)

“Vérifier” devient “S’entraider”, “Concevoir” devient “Echanger avec l’autre”… Que de belles choses !

Une alternative (vient de la méthode “Crystal”): le “Side By Side”. On a chacun deux écrans, de manière à ce que le voisin puisse voir ce qui se passe chez l’autre et éventuellement intervenir.

Avantages du binôme :

  • Concentration soutenue (peut être aussi un inconvénient parce que ça fatigue)
  • Biorythmes psychologiques cumulés (en gros, si y’en a un qui est fatigué c’est l’autre qui gère. ça fait les vases communiquants, comme dans un couple !)
  • Transparence
  • Assurance avec la relecture
  • Consensus, capacité à trouver un terrain d’entente
  • Apprentissage, partage de connaissance, erreurs

La rétrospective (le meeting quotidien de Scrum) = S’améliorer ensemble

A faciliter par un coach.

Equivalent à un conseil de famille où on propose des exercices à faire en famille pour s’améliorer (comprendre : le daily meeting de Scrum c’est comme Super Nanny !!!)

Impose le respect entre les membres de l’équipe… Ce que chacun dit est personnel et à prendre en compte.

Les artefacts… La machine de build qui s’allume en rose et la peluche sur l’ordi de ManUChenu ont un rôle !

Moi qui croyais que c’était juste pour le fun

Nous les informaticiens on “fabrique” du vent (des opérations mathématiques basiques, finalement) Contrairement à un vendeur de légumes, un artisan ou un ouvrier. Les artefacts sont là pour matérialiser ce qu’on a fait (notamment les postit avec les fonctionnalités à réaliser). Ce sont des symboles qui améliorent notre perception… Et donc on se sent mieux.

Le reste que j’ai noté en vrac

  • Communiquer face à face, ça permet de se rendre compte que ce qu’on dit et qu’on fait, c’est pas rien, pas anodin, et ça a des conséquences et des répercussions. Bien plus difficile que de mettre quelqu’un en copie sur un email mal rédigé et le plus vague possible !
  • Agile ça rejoint la méthode de développement personnel “Getting Things Done”. J’ai noté ça mais j’ai rien compris, je trouve ça réducteur, parce que en gros Getting Things Done c’est un truc qui nous dicte comment réagir quand on a un truc à faire… On devrait être capable de s’en sortir seul à mon avis.
  • On stresse jamais parce qu’on a plein de trucs à faire, mais on stresse quand on ne sait pas ce qui va se passer (ah oui, et donc Getting Things Done ça permet d’éloigner le stress et de libérer *oh mon Dieu* la RAM Psychique [David Allen]). Je vais arrêter avec ce Getting Things Done c’est horrible.
  • Agile permet d’améliorer la confiance en soi. Jean Garneau dit que ce qui améliore la confiance en soi c’est:
    • Expérience
    • Risques
    • Résultats
    • Le fait de renouveler des expériences difficiles volontairement.
  • Les 5 dysfonctionnements d’une équipe:
    • Absence de confiance
    • Crainte du conflit
    • Manque d’engagement
    • Manque de responsabilisation
    • Manque d’attention aux résultats
  • Attention à la pensée dite “pensée de groupe” ou “pensée de masse” dans une équipe, qui a des effets néfastes tels que:
    • Illusion d’invulnérabilité
    • Unanimité
    • Favoritisme
    • Partage incomplet d’informations
    • Pression
  • Petit + perso : Les 10 principes du théâtre d’improvisation (par Christophe Tournier) :
    • Accepte !
    • Ecoute !
    • Percute !
    • Anime !
    • Construis !
    • Joue le jeu !
    • Prépare !
    • Innove !
    • Amuse-toi !
    • Ose !

4. Mise en place d’outils pour industrialiser le développement

Ah j’avais mal lu. Je croyais qu’on allait parler d’agile dans l’industrie… On arrive en retard… ça parle Java, Maven 2, ant, Eclipse et NetBeans. Sympa, mais on a pas vu l’objectif du début parce qu’on était à la bourre… En gros:

  • Ils ont une chouette infrastructure, avec une appli web, de la doc en ligne, tout ça.
  • 5% des bugs (ceux découverts post-release) représentent 95% des coûts de production. Ah ben oui, là, on a peur.
  • Les outils qu’ils ont mis en place permettent d’avoir des retours les plus rapides possibles, et c’est la fin du “ça marche chez moi ! Dommage pour toi !!”

5. Agilité et avionique

Ben moi, XP ou pas XP, j’ai peur dans l’avion. Mais oui, malgré toute la complexité des normes imposées quand on fabrique un drône, un missile, un système de navigation GPS, ou toute machine de guerre destinée à être vendue pour ensuite aller tuer des millions d’innocents (ah oui pardon, on parlait *juste* des beaux systèmes pour les avions de ligne 1ère classe), une équipe d’irréductibles a réussi à appliquer de l’agilité, et ça marche mieux.

Ce que j’en retiens en tout cas c’est encore une fois que ce qui est primordial c’est d’avoir une équipe ultra motivée, qui a envie de faire ça.

… Et vous savez quoi ? ça a plu à mon chef, et il est super partant pour mettre ça en place, tous ensemble. C’est trop beau pour être vrai. Je suis super motivée et enthousiaste pour la suite ! Reste à voir ce qu’on arrivera à faire !

 

Wake Up ! August 12, 2008

Filed under: geek — Aline @ 6:31 pm
Tags: , , ,

J’ai eu un petit problème hier soir… J’avais oublié mon téléphone portable chez des amis. Pas grave, sauf que c’était mon seul moyen pour me réveiller le matin !

Du coup, il a fallu penser à un autre stratagème… Ladies and gentlemen, voici le Réveil Script Shell ! C’est tout simple.

Tout d’abord, le .sh, qui permet d’ajouter d’autres lignes si nécessaire…

#! /bin/sh
/usr/bin/mpg123 /data/music/Ian_Carey_Best_Of_2007.mp3

Le tout appelé avec une commande “at” :

$ at -f ./reveil.sh 7:00 tomorrow

Et voilà… Il suffit de laisser l’ordi allumé, et le lendemain matin, que de douce musique dans tes oreilles…

Pour info, le mp3 utilisé est un podcast de Ian Carey (DJ), pioché sur son super siteweb : http://iancarey.podbean.com/

 

WPF Data Templates: Several views for 1 class July 28, 2008

Filed under: WPF — Aline @ 10:00 am
Tags: , , ,

Today i’m going to introduce you a WPF concept called Data Templating.

When I started WPF, i felt lost, and i didn’t know how to do. I wanted to use my scholar knowledge about object-oriented programming, make inheritance relationships between usercontrols, like in windows forms or Java.

My problem was that I had 1 user control (basically, a grid with several labels), which displays the contents of a collection in the labels. My graphic control had to be used in different configurations. Depending on the configuration, the data was not displayed in the same way, but the business code (data collection, grid) was the same.

The first idea i had, using my little UML model, was to make inheritance: a parent grid user control, with several children chosen depending on the configuration. In this way, with WPF, everything was coded into a .VB file. It was quite inappropriate. Moreover it was hard to realize this inheritance, because WPF didn’t allow me to display my parent Grid control into the designer…

And then, I posted on MSDN forums, WPF disciples, I started reading this book, and understood i wasn’t thinking the right way.

The right way, for this particular case, is to use Data Templates.

Data Templating allows you to have 1 class that contains all your business code (here, my data collection), and to consider your graphic interface as a template (here a grid template), that you define in a resource dictionary.
This is very easy to do this with Expression Blend. You can define several templates to apply them to the class.

After this you can define a Template Selector class to select your template programatically, or select it dynamically. The data template for a custom user control is defined by the ContentTemplate attribute. In my solution, i have bound this attribute to the selected item of a combobox.

The template elements (labels,…) can be bound (in xaml ResourceDictionary) to the collection items. And the graphics can be completely different.

To use data templates, here are some cool links which helped me a lot, including code samples and HowTos:

http://msdn2.microsoft.com/en-us/library/ms752339.aspx
http://www.contentpresenter.com/index.php
http://msdn.microsoft.com/en-us/library/ms742521.aspx

 

Custom persistence with custom tracking (vb.net source code) July 1, 2008

Filed under: WF — Aline @ 8:37 pm
Tags: , , ,

This first article aims at presenting a very simple solution for custom persistence and tracking services for windows workflow foundation.

The solution presented here has been designed to run with a long-running state machine workflow but could be adapted to any use case. It contains:

  • A persistence service that stores the serialized workflow into a binary file,
  • A tracking service that stores the state changes into a text file.

This article will only explain how to create and use persistence and tracking services. A more detailed explanation about a simple state machine workflow running with a host demo application will be done in a further article.

(more…)