Speech au prochain DDD Users’ Group Paris

23 avril 2013

LogoDDDFRGrâce à Tomasz Jaskula qui l’a repris en main, le Domain Driven Design Users’ Group Paris est enfin actif régulièrement.

J’ai l’honneur d’y présenter un speech lors de la prochaine session, mardi 30 avril 2013 : Il n’y a pas de Bon Modèle Métier. C’est pratiquement le même que celui que j’avais animé à Devoxx France  2012.

J’y démonte quelques idées reçues sur les Modèles Métiers et surtout, sur la façon de les construire. Le lien avec le DDD ? La notion centrale de « Bounded Context ».

Si vous n’étiez pas à Devoxx l’an dernier ou si vous y étiez et que vous n’avez pas tout compris, je serai ravi de vous y retrouver.

 

 

Développeur de demain

11 février 2013

TronUn logiciel constitué d’un corpus de plusieurs millions de lignes de code s’apparente à un système complexe (grand nombre de paramètres) : il devient difficile en particulier, de le faire évoluer de manière importante (refactoring massif, évolution de l’architecture) en garantissant sa stabilité. Les méthodes comme l’outillage à mettre en oeuvre pour ce genre de manipulation sont encore à découvrir.

Directement concernés par le sujet, nous travaillons, chez mon nouvel employeur (Kyriba) à l’élaboration d’un “outil de développement du futur” à travers le projet “Tron” (le nom étant déposé, il s’agit juste d’un nom de code interne).
Les travaux s’articulent autour de plusieurs axes :

  • représentations du code (mots clés : modélisation, rétro-modélisation, projection, invariants, métriques, code mining) ;
  • navigation dans le code (mots clés : interface homme-machine, réalité virtuelle, immersion, expérience utilisateur) ;
  • manipulations du code (mots clés : interface homme-machine, refactoring, automatisation, model driven engineering, synchronisation, transformation de code).

Il y a plein de questions extrêmement ouvertes à l’heure actuelle. La première est celle de la représentation “alternative” du code : comment dépasser la vision hiérarchique du code via le couple arborescence de fichiers/code source ?
Comment “voir” le code d’une application complexe ? Quelles sont les projections pertinentes ? Comment extraire l’information du code (i.e. quelles parties du code peuvent être abandonnées, ou mutualisées sans altérer ou en altérant faiblement sa sémantique) ? En d’autres termes comment obtenir une représentation visuelle “compressée sans perte” du code (ou en maîtrisant précisément le niveau de perte) ? Comment peut-on décorer le code avec de l’information calculée (métriques) et utiliser cette information comme support de la représentation ? Peut-on adapter la représentation à l’utilisateur, à son « modèle mental du code » ?
Un exemple intéressant de ce qui se fait dans certains labos ne peut dissimuler le fait que ce sont des sujets relativement balbutiants (pas de grosse bibliographie sur le sujet).

Je vous parlerai des questions liées à la navigation et à la manipulation dans le prochain post.

« Ouvert » n’est pas « Vrai »

5 mars 2012

J’ai assisté, il y a quelque jours, à une soirée organisée à la Cantine sur l’Open Data vu par les candidats à l’élection présidentielle. J’ai été agréablement surpris par le niveau de compétences sur le sujet des différents intervenants (chaque candidat déclaré, sauf le FN, avait dépêché un représentant qui parlait au nom de son champion).

La soirée était finalement relativement consensuelle : tout le monde trouve que l’Open Data, c’est bien ;-). Le seul point (un peu) clivant était en fait le type de licence que chacun recommandait de mettre en place pour protéger les contenus mis à disposition. Les uns (les plus à gauche) préconisent une licence très restrictive quant à l’utilisation commerciale des données (licence virale de type GPL dans le monde de l’Open Source). A l’autre bout, des licences plus « libérales » permettent toute utilisation même commerciale des données, à condition de citer la source (c’est le cas de la licence ouverte qui régit les données publiées par la mission etalab). Entre les deux, des licences permettent l’utilisation commerciale pour proposer des services à valeur ajoutée tout en imposant le « partage à l’identique » et la redistribution des données produites (c’est le type de licence ODbL utilisée par la Mairie de Paris pour ses publications).

Je ne suis pas un expert, mais il me semble que le problème de ce dernier type de licence (un peu chèvre et chou) est de fixer la limite entre Création Produite et simple Base de Données dérivée, la seconde obligeant un partage à l’identique, la première pouvant se limiter à la mention de la source. Qui décide et comment ?

En fait si je fais ce billet, c’est que j’ai été surpris que personne ne fasse mention d’un point qui me semble pourtant essentiel : comment garantir l’intégrité de l’information produite à partir des données ouvertes utilisées ?

Je m’explique. La donnée ouverte brute a une caractéristique intéressante : elle est mise à disposition par l’état ou un organisme public ou parapublic qui lui confère une certaine garantie de qualité liée à la confiance qu’on peut accorder à son producteur. C’est ce qui fait dire à beaucoup de gens que l’Open Data, en permettant à chaque citoyen d’accéder directement aux données « à la source » l’aidera à prendre des décisions éclairées et à savoir si les politiques lui mentent ou non (chacun pourra faire son « fact checking » personnel). L’Open Data serait donc un grand progrès pour la démocratie.

Je suis assez dubitatif : la donnée n’est pas l’information. Ne serait-ce que parce qu’elle est extrêmement volumineuse, la donnée ouverte n’est pas manipulable ni a fortiori directement interprétable par le citoyen. Pour faire un parallèle avec un monde que je connais mieux, on a besoin de requêter, manipuler, agréger, transformer la donnée pour créer l’information nécessaire à la prise de décision (c’est justement le propos de l’informatique décisionnelle).

Autrement dit, les citoyens devront passer par des intermédiaires qui proposeront cette information agrégée (et donc interprétée). Mais qui va contrôler cette interprétation ? Qui va garantir que sous couvert d’une donnée objective issue directement de l’INSEE par exemple, ne se cache pas une information biaisée ? On le sait, il est extrêmement facile de « faire dire ce qu’on veut aux chiffres ». Il n’y aura pas, ici, de règles déontologiques (celles qui encadrent les instituts de sondages) ou d’éthique professionnelle (celle des bons journalistes par exemple) pour freiner, ou au moins expliciter, les interprétations partisanes. Et l’intégrité ne va pas de soi.

J’applaudis des deux mains tout ce qui peut encourager l’état à nous restituer notre propriété (ces données dont nous payons la production avec nos impôts). Je suis persuadé que nous avons là une nouvelle source de création de valeur et donc de richesse. Mais je n’y vois, malheureusement pas, le grand pas en avant démocratique promis par tous les speakers de la soirée.

Software Craftsmanship, ou le marketing de l’échec

10 février 2011

Suite à un intéressant article de Nicolas Martignole, ça buzze beaucoup ces temps-ci autour du Software craftsmanship et ça me donne envie de réagir. En particulier quand je vois les tentatives de récupération (je n’ai pas mis de lien pour ne pas les encourager ;-).

Le mouvement du Software Craftsmanship constate que les bons logiciels sont faits par de bons programmeurs. Notre profession aura atteint la maturité lorsque les bons logiciels pourront être faits par de mauvais programmeurs ou même, sans programmeur du tout.

Le Software Craftsmanship : commercialement anxiogène

Comment terroriser nos clients : en leur expliquant que la seule manière de leur apporter de la valeur c’est de réunir des développeurs expérimentés, membres de la communauté des Software Craftsmen (sorte de compagnonnage). Pour que le projet fonctionne il leur faut l’élite : tous ont fait leur Tour de France et réalisé leur Chef d’Oeuvre. Sinon, c’est l’échec assuré.
En toute logique, le client part en courant acheter un ERP (au fait, qui met en place les ERP ? En tout état de cause pas des Software Craftsmen. Pourtant ça fonctionne plutôt pas mal, et ça crée de la valeur chez leurs utilisateurs).
Je pense qu’un client sera bien plus rassuré si on lui explique que le projet ne repose pas exclusivement sur des individualités, mais sur une entreprise qui, par les processus mis en place, par sa capacité à recruter, mais aussi, à former et à encadrer, par ses outils et ses infrastructures, lui garantit une qualité de service éprouvable et surtout, répétable.
C’est justement la différence entre une boîte qui « vend des CV » (donc des individus) même bons, et une boîte qui vend un savoir faire d’entreprise.
Si ma boîte n’apporte rien de plus à mon client que la somme des qualités individuelles de ses salariés, je passe freelance immédiatement.

Le Software craftsman et le Renard (Jean de la Fontaine)

L’idée d’une « Communauté de professionnels » est intéressante par son aspect « partage de bonnes pratiques » : c’est exactement ce que je recherche en participant à des conférences ou à des séminaires professionnels. Elle l’est beaucoup moins par son aspect ségrégationniste : il y aurait donc deux sortes de gens. Ceux qui en sont, et les autres.

Evidemment tout ce discours s’adresse aux premiers. Ceux qui adhèrent aux valeurs et qui ont signé le Manifeste. Ceux qui sont de « bons » artisans qui, jours après jour cisellent leur code pour en faire un chef d’oeuvre.
Les bons programmeurs seraient donc les gardiens des bonnes pratiques qui se transmettraient leur savoir faire « de bouche de druide à oreille de druide ».

Sauf qu’en fait, il n’y a pas de ségrégation : tout le monde se reconnait dans le manifeste. Tout le monde veut (ou croit) être un partenaire productif de son client, membre d’une communauté de professionnels qui apportent de la valeur en créant du bon logiciel (sic).

C’est en fait une grosse ficelle. Il s’agit simplement de développer l’esprit de corps.
Pour une SSII, faire l’apologie du Software Craftsmanship, c’est du clientélisme. C’est flatter la communauté dans le sens du poil en espérant ramasser des CV.
Et Uncle Bob, dans ses conférences comme dans ses posts est sur la même longueur d’onde. Il espère mettre dans sa poche son auditoire en lui jouant du violon : « comme vous ête forts, vous les programmeurs quand vous vous efforcez de faire de la belle oouvrage ».  Ca marche plutôt bien, il parait qu’il ya même des SSII qui l’écoutent… Cette leçon vaut bien un fromage sans doute.

Software Craftsmanship : un constat d’échec

Quelqu’un se souvient-il de ce que signifie le premier « I » de SSII ? « Ingénierie » ! Nous sommes censés être des ingénieurs. Pas des artisans.Et notre métier est considéré comme « industriel ».

Et bien en fait non. Nous sommes encore (malgré un demi siècle d’existence) un métier où le savoir faire individuel reste plus important que le processus et l’outillage.
L’existence même d’un mouvement comme le Software Craftsmanship est un aveu d’échec pour notre profession. Ca me désole mais, je dois bien l’admettre, on ne sait pas, aujourd’hui, fabriquer du logiciel comme on fabrique des voitures. D’ailleurs, si c’était le cas, il n’existerait pas de « petites SSII ». A-t-on déjà vu un « petit constructeur automobile » ? Oui, il y a un siècle, quand le métier balbutiait.

Le Software Craftsmanship est donc un pis aller pour pallier notre incapacité à industrialiser la production de logiciel. Et bien mon objectif personnel n’est pas de me complaire là dedans mais plutôt de tenter de faire changer les choses !

A contrario d’une réaction au post de Nicolas, j’ai l’impression que les initiatives de type Centres de Service vont plutôt dans le bon sens de ce point de vue. L’industrialisation d’un processus de production, la mutualisation des moyens ne sont pas antinomiques du développement du savoir faire individuel des programmeurs, au contraire. En créant un environnement communautaire et en lui donnant plus de confort, il favorise le partage des connaissances au quotidien, il permet la répétabilité et l’amélioration des processus, il autorise l’investissement dans l’outillage. Le seul inconvénient est le possible éloignement du client ou de l’utilisateur final qui peut être compensé par une organisation distribuée (par exemple des products owners délégués qui font la colle). Et évidemment, le MDA est un autre avatar de la même ambition industrielle.

Je voudrais tout de même terminer sur une note un peu plus positive par rapport au Software Craftsmanship. Ne vous méprenez pas, je reconnais bien volontiers (mieux, j’apprécie et surtout je revendique), le caractère créatif de notre métier. Je suis sensible à l’esthétique, voire à l’élégance d’un programme (ou à sa laideur). Et, pratiquant le coaching, je suis souvent amené à tenter de partager mon expérience avec de jeunes Padawan. Je suis juste un peu déçu, de voir que c’est ce genre de sujet plutôt passéiste, qui tient le haut du pavé dans notre profession. J’aimerais bien pouvoir m’enthousiasmer pour des idées vraiment nouvelles, des « changements de paradigmes » ou des « révolutions technologiques » plutôt que pour ce qui me semble fortement teinté d’un conservatisme confortable.

PS Les commentaires sont réactivés

QCon, Models and Integrism

30 mars 2010

Cet article est disponible en français sur le blog d’Objet Direct.

logo_qcon8I am just coming back from my three days of escape at QCon London. As always, an opportunity to step back, take a breath, open my eyes on what others do, how they work. I can there feel the trends and try and guess what my job will look like, next year and even after.

I promise, I will sum up the best moments and the keypoints of the conference. But before I go on, I would like to react off the cuff on something that seems important.

However, this year, I come back with a bad taste in my mouth (don’t misunderstand : as always, beer was great !). A taste of bitterness and anger.

Modeling is not only banned from QCon (as it has already been in the past two years), it has become a dirty word.

Code is the all-time star, which is fair, considering development is the conference main concern. Pointing at yesterdays mistakes seems to be quite healthy too (especially “overmodeling” syndrom which used to be an obvious sign of lack of confidence in the development process).

But I can’t stand to hear stars like Uncle Bob (writer of an UML for Java Programmers in 2003 !) saying that “as we all know, models are completely useless”, or Dan North (who gave an excellent talk besides) considering that the use of a modeler is a useless “complification”. It sounds to me like hypocrisy, demagoguery or fundamentalism (which is not far from stupidity).

The only talk I attended which was positive about modeling was Eric Evans’s speach about agile design. Nevertheless, he did not use the word Modeling but the more consensual Design. I think he had the right word: he said that developer community had “thrown away the baby with its bath water”.

I had the feeling of being in a religious circle attending professions of faith.

On one hand, the code fundamentalists, pure monotheists, nostalgic of a mythical golden age when the developper used to be the one and only master of its production, communicating directly with God (the Product Owner), custodian of a millenium knowledge (the Software Craftsmanship) taught by guru’s mouth.

And there are those UMLists, seen as dangerous unfaithful visionaries, whose delirium corrupted the perfect world of the above. These ones have to be exterminated by all means. I felt like being under a fatwa !

As always when there are problems, we need to find scapegoats. The models (and those who make them) seem to play this role today: symbols of the « Big Upfront Design », they are being the responsible for the failure of big projects. The models are seen as pure documentation artifacts: modeling would be a time consuming and unnecessary (or even perverse) activity, especially in an agile world.

In such a surrounding, I was really ashamed of showing my business card: besides my name you can read “MDA business line manager”. Like having an STD!

Yet it seems to me that modeling, instead of developping, allows to:

  • analyze a problem
  • compress its complexity
  • give a global view
  • abstract from technology
  • communicate

My brain is not big enough to do all this on its own. I need UML (or any other formalism) both as a crutch, a whiteboard, a memory expansion, a pair of glasses and a math formulary.

Modeling is not against developing (not to mention MDA that combines both). Modeling simply helps developing better.

Moreover, the code itself IS a model (“system of abstractions that describes selected aspects of a domain”) as an UML diagram is. Just a little more verbose (and a little more easy to execute).

Maybe this gap is only a symptom of various thinking modes: a French analytical thought (after all, Descartes and Merise are French creations!) vs. a pragmatic Anglo-Saxon thought.

I like to think there is good in both worlds and both complement each other nicely. By the way, it is what I think is the main interest of our job: to analyze a problem in order to be able to computerize its solving. This is what renews my daily motivation: how can I put the complexity of the world in a (good) program.

2011/02/15 Comments have been re-opened.

Réouverture

30 mars 2010

cadenas Le blog a été fermé pendant plusieurs mois à cause d’un débordement de quota de logs sur la base de WordPress qui a entrainé le blocage sans préavis de celle-ci par OVH que je ne remercie pas. J’ai aussi particulièrement apprécié d’être pris pour un imbécile par leur support technique.

A suivre : Google Wave

15 octobre 2009

google_wave_logo Pas de rapport direct avec le MD (sauf à l’utiliser comme “modeleur collaboratif”, ce que certains ont déjà réalisé) mais je publie sur le blog d’Objet Direct une série de posts sur le buzz du moment, Google Wave.

De retour !

5 octobre 2009

comeback J’ai un peu disparu de la circulation depuis quelques mois du fait d’un emploi du temps professionnel plutôt chargé.

J’ai quand même fait un peu de buzz depuis mon dernier post :-)

  • un séminaire à l’atelier BNP Paribas sur le MDA, support à l’agilité de la relation Maîtrise d’Oeuvre/Maîtrise d’Ouvrage. Ca explique comment l’approche MD rapproche les utilisateurs et les développeurs et pourquoi le MDA est bien une approche agile (au regard des critères du Manifeste Agile).
  • un article qui reprend quelques uns de mes thèmes favoris autour du MDA. J’essaie de faire un diagnostic sur le fait que le MDA mette du temps à s’imposer et je propose des solutions que j’ai personnellement éprouvées. Le contenu est assez proche de ce que j’avais présenté au Paris JUG l’année dernière.
  • et je retourne faire une présentation au MDDay 2009 (le 26 novembre dans les locaux flambant neufs de Microsoft à Issy-les-Moulineaux). Cette fois j’y parlerai de ce qui m’a occupé une bonne partie de cette année, à savoir la modernisation d’un parc applicatif client/serveur vers une architecture web en s’appuyant sur une plate-forme MDA. Venez-nombreux, c’est toujours gratuit et il y a de plus en plus d’orateurs (il y aura même Andrew Watson, VP et directeur technique de l’OMG et Jean Bézivin, le père spirituel d’une bonne partie de l’offre produit MDA en France !).

Après le MDDay 2008

28 novembre 2008

MD_Day_2008_Petit Affluence encore plus importante que l’an dernier (>200 personnes) : heureusement, les locaux étaient moins exigus.

Organisation et logistique top (à part plusieurs coupures de courant sur La Défense pendant la présentation d’Ed Merks ! Il a du penser que la France était un pays sous-développé).

J’ai eu la chance de commencer (auditoire et moi encore frais) : les retours étaient plutôt positifs (mais personne ne vient jamais te voir en te disant : « ta présentation était nulle » !). Les présentations se sont enchaînées sur un rythme assez dense.

J’ai bien aimé les deux présentations des guest stars (Didier Girard et Ed Merks).

J’ai apprécié la vision pragmatique de Didier sur le MD, et image particulièrement le passage sur l’ »espace de faisabilité » du MD, comparé à celui du code, et sa couverture du besoin.

Le débat autour du MD porte souvent sur les besoins non inclus dans cet espace de faisabilité (le jaune non couvert par le bleu) et le coût de leur couverture.

La présentation d’Ed Merks (« The Unbearable Stupidity of Modeling ») portait sur les critiques que supporte régulièrement la modélisation, et les réponses qu’il apporte en s’appuyant sur des arguments concrets (la plupart basés sur l’utilisation d’EMF). Son discours est convaincant (même si ses slides ne sont pas terribles !), mais si on creuse bien, on verra que la plupart des avantages de la modélisation (sous entendu « sur le codage sans modélisation ») qu’il cite, sont liés simplement à l’expressivité plus importante du modèle EMF par rapport au modèle java ! En particulier à la gestion des associations avec inverse.

J’ai beaucoup aimé la remarque suivante : « Ce que nous comprenons est simple, ce que nous ne comprenons pas encore est complexe ».

Les présentations seront bientôt disponibles sur le site du MDDay. En attendant voici la mienne en exclusivité :-)

Le retour du MDDay

3 novembre 2008

image Un an déjà ! Après le succès du MDDay 2007, les partenaires organisateurs ont décidé de remettre le couvert.

C’est toujours une journée dédiée au Model Driven (Development, Architecture, Engineering, Testing…) et c’est toujours gratuit. Même principe que ce qui a fait son succès l’an dernier : des présentations jumelées expert + client.

En plus des partenaires (Objet Direct, Objecteering, Jaxio, Lyria/W4, BlueXML, MIA, Obeo, Sodius, et Microsoft) deux guest stars (Didier Girard et Ed Merks, Mr EMF) donneront leur vision du sujet.

J’animerai la présentation pour Objet Direct, en collaboration avec un de mes clients, Eric Deriaz, de Merck Serono, Genève.

Ma présentation, sera en quelque sorte, la suite de celle que j’ai faite l’an dernier (j’avais parlé de l’intégration des règles de gestion dans les modèles destinés au MD). Mon sujet cette année : comment modéliser efficacement une application en approche MD. Je parle bien de modèle applicatif (le sujet n’est pas le modèle de domaine) et je montrerai comment éviter les syndromes classiques :

  • Le PIM anémique : pas de comportement, pas de modèle applicatif,
  • Le PIM obèse : un modèle fonctionnel ultra-détaillé, lourd et coûteux,
  • Le PIM « PSM » : un modèle technique ; de la génération de code pas agile, sans modèle fonctionnel.

Je présenterai des exemples concrets de « Patterns Applicatifs » qui permettent, avec très peu d’énergie, de produire beaucoup de code.

Eric parlera des raisons qui ont poussé Merck Serono à expérimenter l’approche MD à travers ces patterns sur une application pilote et les résultats de cette expérimentation.

Venez nombreux !

Buy viagra Rome
buy buy online viagra viagra
cialis black reviews
cialis brands
Buy viagra Philadelphia
voagra online without prescription
cialis brand verses generic cialis
cialis blindness
viagra calias
cialis britain
discount viagra prescription drug
buy cheap generic viagra
viagra buy do nu
buy cheap deal viagra viagra viagra
cheapest regalis viagra
order cialis on-line
buy cheap deal online viagra viagra
buy cialis wighout prescription
redtube viagra
buy discount generic viagra
buy levitra no prescription
redtube viagra
order cheap cialis
cialis 20 mg
buy cheap cheap kamagra uk viagra
cialis cialis genuinerx net viagra
cheep viagra from indea
viagra without prescription
cheapest price for generic viagra
levitra 25 mg
cialis canadian geneic
cialis by phone
cheapest cheap viagra
viagra buy now pay later
cheap viagra without a pr
Buy viagra Milwaukee
buy cheapest online viagra
viagra buy generic
cialis canadian
cheapest line viagra
Buy viagra Albuquerque
buy buy cheap viagra
Buy viagra El Paso
viagra buy australia
viagra buy in uk online
cialis 800mg
cialis calis
Buy viagra Kansas City
Buy viagra Houston
order cialis on line
buy cheapest viagra online
viagra 100mg price
viagra canada price
cialis canada pharmacy
discount viagra canada
Buy viagra Tulsa
cialis buy cialis generic cialis
Buy viagra Fresno
rx levitra 100mg
cheap viagra canada
buy buy medved viagra viagra
viagra online prescription
discount viagra
cialis cheap visa
viagra express
100mg levitra
Buy viagra Mesa
overnight express delivery generic cialis
cheapest price viagra us licensed pharmacies
buy cheap viagra online u
buy viagra 50mg
order 50mg cialis
cheapest viagra prices us licensed pharmacies
cheapest price for viagra
discount viagra 10 pack generic
cialis 5mg
cheapest viagra in uk cheap
buy cheap viagra online now uk
cheapest brand viagra
cialis cheap cialis online
cheapest viagra tablets
cheapest generic silagra viagra
buy cheap uk viagra
cheapest price for viagra
buy cheap viagra in uk
discount viagra uk
cialis britan

viagra by the pill
buy discounted viagra
buy cheap deal pill viagra
order generic cialis softtabs
cheapest site viagra
10 generic cialis for 19.95
cialis canada
buy deal online sale viagra viagra
viagra buy ionline
cialis brand cialis 100mg
cialis cheapest
buy cheap viagra
discount viagra sales
viagra buy general
order cialis uk
Buy viagra Seattle
viagra by overnight delivery
buy cheap viagra prescription online
generic levitra wholesale 100mg
overnight shipping cialis
buy levitra wighout prescription
levitra no prescription
buy viagra by pill
generic levitra 20mg pills erections
viagra canada pharmacy
100 mg levitra us pharmacy
order 50mg viagra
buy australian viagra
discount drugs levitra 100mg
buy viagra caverta
buy buy discount viagra viagra viagra
buy cheap viagra cheap viagra online
viagra canada price
check generic order pay viagra
cheapest viagra generic substitute
viagra canadaian prices
buy cheap viagra uk
cheapest viagra
buy buying sale viagra
cialis bph
viagra canadian price shipped
buy cialis online 50mg
cheapest viagra online plus zenegra
over the counter viice for generic viagra
buy buy sale viagra viagra
cialis no prescription
discount viagra overseas
buy discount online viagra
discount viagra furthermore cheap adipex reviews
order cialis
order generic cialis c o d
buy buy cheap medved viagra
discount viagra pills
cheapest generic substitute viagra
levitra 100mg
rx cialis 100mg
cialis 800mg
10mg levitra
buy cheap viagra viagra
order cialis online from dreampharmaceuticals
buy cheap online prescription viagra
discount viagra order viagra discount viagra
20 mg cialis
cialis black 800mg
buy buy cheap medved viagra
36 hour levitra
discount viagra or xanax
cheapest generic viagra and xanax pills
overnight delivery cheap cialis
viagra canada
Buy viagra Memphis
buy cialis no prescription
levitra 125 mg
viagra buy viagra
cheapest prices on generic viagra
buy deal viagra
cialis without prescription
viagra by mail
10 generic viagra for 19.95
cialis br
cheapest prices for viagra online
viagra buying
cheapest viagra overnight
buy cheap viagra
buy viagra wighout prescription
cheep viagra from india
cialis buzzmachine by jeff jarvis
viagra buy
cialis canada prescription
Buy viagra Long Beach
Buy viagra New Orleans
buy deal deal price viagra
cialis best effect
cheap viagra without a prescription
buy viagra 100mg
order cialis online
cheapest price on viagra
buy viagra cialis levitra online prescription
Buy viagra Phoenix
cheapsest viagra online
viagra canadian
buy viagra cheap
buy discount viagra
cheapest generic viagra caverta veega
buy viagra cheap online
overnight delivery cialis
cialis best price
paypal cialis
cialis black
cheep viagra 600mg uk
discount viagra brand drug
buy viagra cheapest best prices online
buy cost low viagra
over the counter viagra substitute
cialis by fedex
cheapest generic viagra and canada
cialis canada rx
buy canada viagra
cialis dosage 20mg
cialis 20mg reviews
generic cialis wholesale 100mg
discount drugs cialis 100mg
cialis reviews
cialis cialis forum pharmacy
over the counter viagra london
Buy viagra Indianapolis
cialis black reviews
cheapest viagra anywhere
cheapest viagra uk
cialis 10 mg
cialis cheap online pharmacy
cialis cialis
cheapest viagra anywhere
buy discount viagra online
voagra online without prescription
cialis cialis genuinerx net
viagra canadian
buy viagra alternative
Buy viagra Charlotte
viagra canada prescription
cialis 50mg
100 mg cialis us pharmacy
voagra online without prescription
cheapest viagra prices uk
cialis cialis cialis genuinerx net viagra
buy viagra cheaply
buy cheap xanax generic flomax viagra
viagra cailis
cialis 50mg online
cheapest viagra price
cialis causes high blood pressure
cialis canadian epharmacy
cialis cialis generic viagra
Buy viagra Columbus
50 mg viagra
cialis certified online pharmacy
overnight generic cialis
100mg cialis
cialis 20mg
buy generic online viagra
peak level of cialis in blood
30mg cialis
Buy viagra Tucson
cheapest viagra on line
buy discount levitra
100mg viagra
buy cialis 50mg
viagra buy oonline
cheapest price on viagra
cialis cialis information
cialis best cialis price
Buy viagra Baltimore
viagra no prescription
viagra canada generic
Buy viagra Pittsburgh
cialis cialis tadalafil
buy cheap cialis
50 mg cialis
viagra buying online
buy buy medved viagra viagra
buy cheap viagra online uk
cialis buy cheap cialis online index
generic cialis 20mg pills erections
buy discount cialis
cialis canadian pharmacy
levitra brand levitra 100mg
cheapest place to buy viagra
discount viagra sale
buy viagra cheapest
viagra calgary
viagra canada
buy viagra cheap india pharmacy
cheapest uk viagra
cialis canada generic
viagra brand viagra 100mg
cialis buy generic
buy levitra 50mg
viagra and eye sight
discount viagra offers
cheapest viagra world
10mg cialis
viagra 100mg
viagra 50mg online
cheapest prescription viagra
cialis cheapest lowest price
cialis 36 hours
buy cheap deal viagra viagra viagra
buy cheap generic online viagra
buy cheap viagra on the net
viagra by mail canada
cialis cialis drug generic flomax
buy cheap deal online viagra viagra
cialis 2.5
Buy viagra Fort Worth
discount viagra viagra
levitra 50 mg
buy buy free viagra viagra viagra
buy buy free viagra viagra viagra
cialis cheapest online prices
40 grams of cialis
discount viagra drug
cialis brand name
buy discount viagra online a href
cialis cheap online direct
paypal cialis po box
buy viagra no prescription
buy cheao cgeap kamagra uk viagra
buy levitra online 50mg
cialis buy cialis online
buy female viagra
Buy viagra San Antonio
buy buying sale viagra
cheapest generic viagra 99 cents
levitra 50mg
Buy viagra Las Vegas
cialis buy generic ed
buy canada in viagra
cialis cardiac risks
buy 10 mg cialis
cialis bestellen
canada pharmacy discounted levitra 100
Buy viagra Omaha
viagra buy viagra online
buy viagra and cilas
50mg cialis
buy canada viagra
cheapest generic viagra
cialis online prescription
cheapest place buy viagra online
buy deal herbal viagra viagra
cheap cialis canada
order cialis and viagra
viagra canada online pharmacy
Buy viagra Oakland
order cialis 399
order cialis online dream pharmaceutical
Buy viagra Denver
cialis cheapest price
cheapest viagra in uk che
cialis best price buy online
overnight delivery of cialis
Buy viagra Washington
buy cheao cgeap kamagra uk viagra
viagra by phone
levitra 20 mg
50 mg viagra retail price
Buy viagra Modesto
Buy viagra San Francisco
cialis 125 mg
250 mg levitra
cheapest viagra on the net
10 generic levitra for 19.95
cheapest prices for viagra online
order 50mg levitra
cheapest uk supplier viagra
Buy viagra Newark
cheap 25mg viagra
discount viagra pharmacy online
viagra and eye damage
Buy viagra Nashville
cialis buy
cheep generic viagra
cialis buy cialis online order cialis
generic viagra 20mg pills erections
cheapest generic viagra 99 cents each
cialis buy online cheap tadalafil
viagra by mail order
cheapest price viagra
viagra canada pharmacy
buy cialis now
buy cheap site viagra
levitra 25 mg order
cheap cialis canada
viagra canada online
cialis 100mg
buy cheap viagra on
buy cheap viagra online
levitra without prescription
discount viagra perscription drug
cheapest viagra online pharmacy
cheap websites for viagra
cheapest in uk viagra
cialis cialis cialis viagra
levitra 10mg 20mg
Buy viagra Austin
cheap cialis canada
cialis cheap no prescription
50 mg cialis retail price
cheapest viagra in uk che
generic levitra 100mg
buy free viagra viagra
cialis cialis viagra viagra
Buy viagra Louisville
order generic cialis softtabs online
ordering generic cialis from india
cialis cialis online online
buy viagra
cialis black
viagra 50mg
perscription cialis
cialis buy generic flomax
Buy viagra Portland
viagra canadian price shipped
buy viagra ebay
cialis bestseller
buy cheap online viagra
5mg cialis generic
buy buy discount viagra viagra viagra
over the counter drug to viagra
buy viagra 1
viagra calias
Buy viagra Richmond
cialis cialis genuinerx net viagra viagra
buy cheap online viagra viagra
viagra by money order
viagra canadian prescriptions
discount viagra sale online
discount viagra wholesale stores discount pharmacy
cheapest online viagra
viagra buy it
cheapest regalis viagra
cheapest cialis
cheapest place to buy viagra online
buy buy online sale viagra viagra
cheapest generic viagra sent overnight
buy cheap generic viagra online
discount viagra canada
cheapest generic price viagra
cheapest uk supplier viagra
buy cheap purchase uk viagra