May 11th, 2008

How I have fit IronPython, Ruby, JRuby and IronRuby into my existing .net projects0

Ruby and Python are great languages. I have spent several years now with ruby and I am just getting into python in the past year or so. I will still admit that I prefer ruby in every way, but I have come to like and appreciate python as well.

I have been working on building some very interesting global derivative trading applications - so how do python and ruby factor in?? Well - I could have ‘just used them’ in several places. That of course is not valuable, but I have found a few ways to use these tools to really add value to my projects.

Scripting for your existing .net application

I have been making an effort to make our plugin application suite scriptable. I have been able to get IronPython 2 running along with a syntax hi-lighting code editor. It has proved extremely useful. I have also tried to do the same for IronRuby, but with less useful success. Why you may ask - predominantly for 2 reasons:

IronPython vs IronRuby for scripting your existing applications

Basically, IronRuby does not let you do some things that are a must! You CANNOT unsub from events yet :( . The other big issue is calling existing .net APIs that need generic args. You can see Jon Lam’s response to my queries here. Jon also said:

Our .NET interop is fairly weak today. Because of our current push to get the language running in time for RailsConf, all .NET interop work is being pushed back into June on our schedule.

I understand, but this does make it virtually unusable for using as an existing scripting engine against my current .net applications.

IronPython 2 does a MUCH better job of .net interop. It basically just works as expected in 99% of the cases I have needed it for. This is just a joy I must say. Especially trying to use the early cuts of IronRuby on the DLR, it was painful to get anything interop based between existing .net and IronRuby really working.

Another thing I have done with IronPython is to support ‘calculated formula columns’ in a UI Grid control. We basically implemented this and it is currently ‘not supported’ in production, but in a future iteration we have planned (and requested from users), excel like formula summaries/ aggregations. We will continue this work with IronPython.

So - as you can see - IronPython made itself able to add value.

So how have I fit in Ruby in a meaningful way?

Essentially, we have a plugin framework so that several teams can concurrently develop ‘independent’ applications that can integrate. This means that there are several global teams developing plugins (think eclipse) that can integrate, use and extend one another. This is great, but it means there are all kinds of build, assembly versioning and other application packaging, deployment issues.

In any big bank, or other corporation I expect, there will be different ways of doing things. The continuous builds for differing teams may be different. Some are nant based, some are simple, some are complex, some are msbuild, some do a better job of CruiseControl setup than others, etc, etc. Now if you want to take the work from several teams like this, and build, package, test, deploy in a sane way, there is some orchestration needed. This is where I have used ruby to add real value.

Ruby, Rake/ Python, BuildBot

Rake (and plain old ruby, not j, iron, or another variety) have enabled me to have a single homogenous view of the otherwise complex world. It is basically my tool for integrating multiple teams that are doing things as is appropriate in their own area, but not necessarily what is the ‘best’ for use by everyone else in the world. Ruby has REALLY shined here. In stead of having dozens of XML, Nant, MSBuild scripts, MSBuild extensions, Nant extensions, cruisecontrol configs, bat files, etc - I have ‘owned’ them all with some rake build scripts. I have managed to do this with some ~200 lines of terse, easy to read ruby.

Interestingly, a smart colleague of mine has done something very similar with plain-old-python (and BuildBot). He has managed to take some 50 projects that can be put together in varying ways, built, deployed, etc. He has taken a very difficult problem (managing a large enterprise suite of .net of branched, versioned and VERY WIDELY UTILIZED software) and owned it with some 400-500 lines of python.

What did we get for our efforts with python and ruby?

Number one is just the joy of really getting into daily use of other languages. I have programmed several languages over the years from C/C++, to Java, to SQL, Javascript, Tradestation EL, to Python and Ruby. Working with new languages is a good experience - bottom line. I have had a lot more time with ruby than python. I always love ruby, and I have really enjoyed more real time with python in the past year. I think these languages have each made me a better programmer.

With regards to scripting applications, these languages, in particular IronPython have just made it too easy to add value fast. I have done the work with ANTLR, regex garbage languages, compiling C#, etc. These approaches ALL take much more effort to get similar rewards. I can see myself working in a mode of ‘core plumbing’ in C# and/ java and the higher level stuff in IronRuby JRuby.

That reminds me, a small note. Since we are java server/ .net client apps, I have used JRuby on several occasions to quickly do some send messages around the network, and otherwise mimic stuff coming from the server. I have had more effort on the client/ .net side of things, but I am sure if I was doing more server work, I would be using JRuby all the time.

Regarding build and integration - the big thing that we got IMO was a homogenous solution. Whereas before, there were the xml files, bat files, etc. - we each now have small bits of easy to manage code that does all we need. This is coupled to a small degree of ‘convention over configuration’, but essentially, we have gotten a lot of value for a little code and effort. We have also gotten easy to maintain solutions going forward.

Downsides??

The only real downside here is ‘adding more tools’. There is always resistance (appropriate more or less) to adding to the enterprise overhead of ‘more tech’. Developers also need to learn more to work in more ‘polygot programmer’ environment. So the ‘more tech is bad’ and ‘devs need to learn more’ arguments are valid arguments. That being said, I think the benefits are outweighing the downsides so far.

The future?

I see more coming in the same spaces. I will be working more on ‘higher level scripting’ of existing .net apps, and build/ integration etc. At some point, I can see doing ‘it all’ with these languages perhaps - but I think the current sweet spot in the stack is adding value at certain points of the abstraction. The right tools for the right job and all that.

RabbitMQ0

I just had to mention this one- Rabbit MQ:

Built on the Erlang OTP
Implementation of AMQP
Java and .Net implementations
Open Source (similar to qpid)

Locking and signaling0

I have had several chats with software developers lately that were working hard to use locking to perform some task. In each of these conversations, the simple solution was to use signaling, not just locking semantics.

I have found over time that for some reason, software developers all know about lock semantics. This has many varieties, lock keyword in C# (really a Monitor usage), Monitor.Enter, java synchronized, java ReentrantLock, etc, Mutexes, etc. The point of locking semantics is to mark a bit of code as a ‘critical section’ or a section that requires exclusive access to it - 1 thread or process at a time. There are varieties like Read/ Write locks, etc - but it is all essentially the same for lock semantics.

Lock/ synchronized/ critical section behavior is certainly mandatory, however as they say “when all you have is a hammer, everything is a nail”. Locks are not THE ONLY tool you can use to accomplish more complex multi-threaded goals. Signaling is another KEY set of abstractions that exists in java, .net, pthreads, Win32, etc, etc.

In java, all objects have signal and wait, in .net there are several choices, Monitor.Wait/ Monitor.Pulse, AutoResetEvents, ManualResetEvents, etc. Signals are used to communicate between concurrently executing threads.

I often ask developers in interviews to implement a blocking queue. Basically - what I am looking for is to see if they understand signaling. A simple blocking queue allows 1 thread to enqueue freely, and another thread to dequeue as long as there is at least 1 object to dequeue. If there is NO object to deque - the caller should be blocked. Signalling is the correct solution. People try to do Thread.Sleep, or say something like while ( _queue.Count > o) - both of which generally are not the best solution. There are plenty of more elaborate solutions - but here is a simple example.

class BlockingQueue< T >
{
Queue< T > _queue = new Queue< T >();
object _queueSync = new object();

void Enqueue(T value)
{
lock(_queueSync)
{
_queue.Enqueue(value);
Monitor.Pulse(_queueSync);
}
}

T Dequeue()
{
lock(_queueSync)
{
if( _queue.Count < 1)
Monitor.Wiat(_queueSync);

return _queue.Dequeue()
}
}
}

(PS Blog software killed some >’s and <'s in the code -sorry I am too lazy to fiddle)

This is a very simple signaling example. WaitHandles, Auto/Manual Reset Events are related - and allow you to accomplish all the more complex inter-thread communication. There are still other ‘higher level’ abstractions like Condition Variables, Latches and the like. I encourage EVERY developer to absolutely get more intimate with these constructs. It is SO common to have poor threading code because developers do not know the tools provided, and when to apply them. It is MUCH easier to use a countdown latch construct than to jury rig some interweaving of thread joins or locks etc. The 1.5 JDK now incorporates some of the very best constructs - read into them -use them if you are writing java. .Net also has lots of excellent constructs. Get beyond locks and your code will get simpler and it will actually work !

-Chris

Cross Language Validation - Ruby?? Python??0

For a current project - we have .net clients and java servers - seems to be the wall street standard - at least for my past several clients/ employers. That said - another common scenario is to standardize message formats via XSDs. If we standardize XSDs we now have a contract for message formats. This is the way it is usually - nothing new here. That said - XSDs are not so great at extended validation. You can do some amount of simple validation at the element level (regex, must exist, enumerations, etc) but to do more complex validations between elements of more complex types - it gets increasingly expressive and unwieldy to do in XSD.

Another complicated scenario is partial validation. UIs that have pages of forms to fill out are one example of where partial and/ or contextual validation must be considered. You cannot simply consider the whole thing valid or invalid - you must consider where in the scheme of things you are - and given that context -are you OK.

I am considering as an alternative using a dynamic shareable language like Ruby or Python. I would prefer Ruby - mostly because I think it is a nicer language. That said - JRuby and Ruby CLR could certainly do the trick on either side of the fence. If we were to have object schemas defined as XSDs and defer the complete validation to another set of constructs - we might be in business.

Say for example we have a ‘person’ defined in our message XSDs. We could then have java and .net objects that are ‘person’ class instances. We could then have a ruby routine that validates a person. This Ruby code could run in java and .net and thus - to a large extend be shared. The only tricky bit that comes in is the ‘includes’ or ‘imports’ into the Ruby in it’s respective runtime. In other words - if we have JRuby as the runtime - we would need to let JRuby load in the package for the correct java class ‘person’ in this example. Similarly - the .net runtime would need to reference the correct assembly for the .net object equivlent of ‘person’. Aside from that - it seems that Ruby should work to lay out the validation with arbitrary complexity.

I will soon see if I can get some buy on to try out this idea and I will let the blog world know how goes it.

-Chris

ESP/ CEP query languages1

Recently - my current employer has been looking for a solution for what it has been calling ‘continuous queries’. The CEP groups @ Yahoo have been debating about the most appropriate language for processing real time events. It winds up being quite an interesting topic. Depending on what your ‘query-able’ target is - you may want different semantics.

If you pre-suppose that you have an ‘in memory database’ with real time events when an insert, update or delete happens, the SQL-like languages seem to make sense. Since classic sql is bad at the temporal -  these SQL like languages basically add temporal functionality.

What if you want to mostly query XML messages passing in the wind?? Then some sort of XPath predicate query semantics seem most desirable.

What if you want to query state changes of in memory java or .net objects?? Do you use an OGNL like query language? JXPath?? Some db4o like Soda query, query by example or native query?? What makes most sense for registering interest in real time distributed events for object based updates? How does a delta update work in this world? Do I REALLY have to turn my nice objects into a relational database-like structure to use real time eventing???

These are just a few of the questions running through my heads and the heads of several others in my area. I can never say that I do not get to play with interesting problems :)

-Chris

Test Driven Development and Mock Objects Developer Session Slides0

Here are some items from the Test Driven Development and Mocks developer session I did a few weeks ago in NYC. I excerpeted lots of people -see the refs at the end of the slide deck. The main things I wanted to hilight were #1 - how important unit tests are. How much better they work when they are done with other core development practices (IoC, etc), How useful mocks are - and a core mock pattern to use.
BigFatGuyTests.cs
TickTests.java
TDD Dev Session.ppt

Enjoy;
Chris

Apache ActiveMQ0

Apache ActiveMQ is a fast open source JMS 1.1 Message Fabric which supports clustering, peer networks, discovery, TCP, SSL, multicast, persistence, XA and integrates seamlessly into J2EE 1.4 containers, light weight containers and any Java Virtual Machine together with having a host of Cross Language Clients. ActiveMQ is released under the Apache 2.0 License 

I have been playing on and off with Apache’s ActiveMQ open source message queue project. It was really easy to get the server configured and running. I am impressed by the cross language access - as a ‘real’ message queue  product should/ would support. So far - the java connections were easy as pie. I have been able to download and build the C#/ .net client implementation of their ‘open wire’ format. My 1st crack at getting the unit tests running were unsuccesful so far, but I believe this is because I am running the server instance on a linux machine and the C# stuff is running on a windows box. I have been unsuccesful in reconfiguring their test suite it would seem… so far :) We shall see how this progresses -  another hour or so and I bet it will work nicely. Hopefully I will be able to get a server instance up and running, send messages to and from using C++, C# and Java. Then I will have met my goal with this project.

You can see examples of connecting with C++ here

C# here

Java here

Theoretically in Ruby via Stomp , Python via stomp

I say that is not too bad - providing it works nicely :)

-Chris

Test Drive Development Developer Session - Unit Testing and Mock Objects in .Net and Java2

It is time for the next ‘Developer Session’ in my series … The last one that we did - Spring Framework Developer Session (code, power point) was a hit - with maybe ~40 people who came out to hear about Spring. I am happy to report the next dev session is:

Test Drive Development Developer Session
NUnit, JUnit; Rhino Mocks in .net and Easy Mock in Java

Tuesday July 25th 6 - 8 PM

228 East 45th Street
6th Floor
New York, NY 10017

These sessions ARE OPEN TO THE PUBLIC - There is a snack before we get into it - then a presentation, demos and questions.

The sessions I have planned remaining are :

The Peer Frameworks Series - .Net and Java

3) Db4o Developer Session - Open Source Object Database in .net and Java
4) ORM Developer Session - Hibernate, NHibernate / IBatis

I will update the agenda as we finish planning it in the next week or so. I hope to have dial in access for people that want to dial in - and ideally a ‘webex’ type access as well. Feel free to contact me with any comments or questions. Also please message me to let me know if you want to attend - here test-driven-dev-session@chrisdonnan.com. This will help us plan food, chairs - etc.

I will be focusing on:

NUnit
Rhino Mocks
Junit
Easy Mock

My Best;
Chris

Google Web Toolkit0

Go google. Google released an AJAX/ Java framework to beta today. Nice work. The demos look pretty cool. There are lots of these AJAX frameworks popping up these days.

Check out this demo - prettry nice ‘desktop clone’.

On a related note; a few weeks ago a google recruiter called me and said that they were looking for Java people experienced with Spring, Hibernate and other open source tools. Great - any of you Java folks lookin’ for work - comment to this post with some contact info and I will get you the google person’s email to talk to him. ( I will also edit your post not to include your contact info :) )
Google Web Toolkit - Build AJAX apps in the Java language

-Chris

Spring Framework Developer Session4

It seems we have the ‘go ahead’ from Finetix management to have our 1st Developer Session at the new Finetix office space. Solomon has kindly volunteered to do the Java portion of our session. I am sure he will have lots good to say as he has been an avid SpringFramework user.

These sessions ARE OPEN TO THE PUBLIC

Spring Framework Developer Session
Lightweight container for .Net and Java

May 31st 6 - 8 PM

228 East 45th Street
6th Floor
New York, NY 10017

I have a few of these things in the planning - here are my current thoughts:

The Peer Frameworks Series - .Net and Java

1) Spring Framework Developer Session - SpringFramework.net, SpringFramework.org
2) Test Drive Development Developer Session - NUnit, JUnit; Rhino Mocks in .net and Easy Mock in Java
3) Db4o Developer Session - Open Source Object Database in .net and Java
4) ORM Developer Session - Hibernate, NHibernate / IBatis

I will update the agenda as we finish planning it in the next few weeks. Mark from the SpringFramework.net team happens to be here in NYC also so I will be picking his brain a bit and planning the session with Solomon in the coming week or so

.If there are any requests - let me know.

-Chris

To help us estimate food etc - please email me at Spring-dev-session@chrisdonnan.com

Outline for Spring Framework presentation0

I am planning to do a Spring Framework (.net, java)seminar at the new Finetix office. The general gist is that I would like to cover the .net and java implmentations and I would like this to be open to the public. I already spoke to the Spring.net folks and they will make a post when I have a date sorted out. I imagine I can get the original java based Spring folks to post as well. Anyhow - I was asked to put together a general overview - this post will cover my initial thoughts. I hope that I can comple one of the folks in the Finetix office (perhaps a particular collegue that spent the past serveral years @ sun) to do the Java portion of the chat - while I will do the .Net portion. Below are the .net relevant thoughts I have so far. If one of the other guys will not do the Java chat - I surely will do it.

  1. Intro to Inversion of Control
    1. compare and contrast vs service locator
    2. The importance of seperating interface from implementation
    3. Eliminating the need to pass references through classes that should not need to depend on them
  2. Defering singleton-ness decisions from implementation - when you can - INTERFACE BASED SINGLETONS
  3. How IoC relates to testability
    1. Unit test framework (NUnit)
    2. Mock framework (Rhino Mocks)
  4. Spring general components overview
    1. Core Container
      1. object factory
      2. initialization method
      3. getting properties off of objects in spring
      4. prototype vs singleton
    2. AOP - basic intro
  5. Setter vs Construction Injection
  6. A demo of Spring for implementing a large strategy pattern implementation (.net based)
  7. The need for service locator in UI applications, Windows Forms, Swing UIs
  8. Touch on Copeland Ruby example IoC container, PicoContainer, MicroKernel/ Windsor, etc.

That is about it - anyone with thoughts - put em out there.

-Chris

Bijection and “Subversion of Control”0

So

Been using SpringFramework.net on my current project for ~5 months now. All in all - it has been very helpful in a few ways. One of the things that I have needed in the past was to associate objects created dynamically with stuff IN the spring context.

For example: I need to take some logon information at some point - with this logon information - I need to pass it to legacy objects that NEED to use constructor injection - else the throw exceptions etc. So - I want to push dynamically created content.

Enter Seam…

Interesting…. As usual - the folks at JBoss are doing interesting stuff. One of thier many sub-projects; Seam - “Contextual Components” is one of the more interesting things they have going on IMHO. Seam does lots of stuff - but this I found most interesting:
excerpt: (wouldn’t xlink/ xpointer be handy for things like this excerpt)

The notion of inversion of control or dependency injection is an elegant means for a container to assemble stateless components or services. But for stateful components it is insufficient. Subversion of control (or bijection) is a unique feature of Seam that allows auto-assembly of stateful components.

WOW. Isn’t that just fantastic! Bijection, Subversion of Control. Anyhow - I will be posting more about Seam as there are several truly noteworthy things that they are doing over there with Seam. This is essentially where a variable can be annotated with an “In” and/ or an “Out” marker. Then the container can get data off of and/ or inject data into, thus providing ‘bijection’ for objects created at runtime - with state.
(** this is NOT the same as this reference to ‘Subversion of control’ where a container ref is passed to the object.)
I will also mention - as I have in the past - that another alternative to Spring on .net (2.0 only) is the Object Builder in CAB is one of them. I would love to work on a ‘bijection’ update to spring.net, objectbuilder - or something new :)

Excited about technology as always.
-Chris

Imhotep theme designed by Chris Lin. Proudly powered by Wordpress.
XHTML | CSS | RSS | Comments RSS

ambien generic drug generic viagra online generic viagra online viagra with health men amazing blonde fucked cialis high off tramadol hcl dosage hazards of mixing xanax and valium hypnotics ambien valium photo phentermine deals 2 comparison levitra viagra cost of viagra covered by insurance cialis use with alcohol phentermine no prescrip non perscription viagra viagra bph about valium for anxiety add depression actos phentermine cvs pharmacy career get phentermine online phentermine no prescription required online consultation ending ativan using valium what if cialis does not work can you mix tramadol and benedryl viagra oral sex difference between tramadol and ultracet generic viagra cialis photo of ambien cheap cheap drug propecia tramadol weight loss clinic phentermine redondo beach acupuncture oct ivf women viagra phentermine lysergic acid diethylamide ranitidine order ambien with a prescription commview ambien ambien generic pills order free phentermine 37.5 mg 90 tablets ambien imitrex order viagra air travel viagra and alcohol buying valium online pharmacy online caverta vs viagra soma tramadol fioricet phentermine 37.5 no prossesing fee order phentermine cheap online buy viagra onli dogs tramadol artritus no doc phentermine viagra boys clips difference between meridia and phentermine beta blockers and cialis dose valium viagra 3 phentermine 37.5 diet pills 5 sildenafil viagra overnight generic viagra buy viagra online web meds viagra party drug online pharmacy with phentermine phentermine cheap script uk viagra supplier cardizem cd aciphex actos phentermine imitrex phentermine pill achat valium valium for colonoscopy compare levitra viagra cialis u 15640 cialis phentermine usa grapefruit and cialis order valium on line ambien xanax viagra aids male fertility viagra generico barato panic disorder after phentermine phentermine discussion forums purchase viagra on line take viagra who woman cheapest phentermine no presc phentermine and heart valium on line with prescription real phentermine diet pills viagra c-ring benefits of valium mixing valium with xanax discover viagra buy phentermine fedex no prescription tramadol free overnight shipping phentermine overnight delivery pharmacy online viagra overseas chep valium erections using cialis viagra best price sildenafil to buy valium cheapest generic substitute viagra when does viagra patent expire presidents in viagra commercial viagra for women cuba gooding jr cialis spoof cialis alchohol phentermine but no prescription viagra and generic drug tramadol online om cheap cialis pillstore ambien brazil miss viagra phone order ambien oklahoma phentermine sale 30mg cheap phentermine 3 cialis generic viagra mexico phentermine brand name viagra by mail viagra drug info cheap drug prescription prilosec tramadol zyrtec buy cost low viagra viagra mc mimo na jem mp3 generic valium and alert vet valium compare lunesta with ambien cr phentermine free doctor consultation no prescription 4 blue 30mg phentermine buying cheap discount sale viagra viagra priapism viagra c o d phentermine buy on-line online pharmacy phentermine free consultation cialis and suboxone trial generic viagra cheapest brand cialis ultram ultracet tramadol little helper valium 2nd day fedex phentermine phentermine online prescriptions brand generic online viagra depression phentermine cheap phentermine without prescription phentermine cheapest fioricet carisoprodol hydrocodone tramadol phentermine consultation free what nascar driver has viagra viagra soft tab 12.5 ambien cr band mitra viagra falls crushing tramadol for quick release viagra flowlan phentermine no rx overnight cheap career in pharmacy tramadol manufactures of viagra cialis levitra online contact forum buy cheap phentermine cialis discussion group phentermine without doctors script needed mixing vicodin viagra dosage for tramadol er viagra cocaine died ambien blood problems cialis comparison diflucan viagra buy medication phentermine detection drug in phentermine screen urine doesnt viagra work discount pill viagra viagra generic viagra from canada uprima viagra cialis can you take viagra with lexapro tramadol hydrochloride acetaminophen cheap price on phentermine phentermine no prescription phentramine valium point acupuncture phentermine 37 5mg online california pharmacy phentermine online diet pill tramadol without perscription cialis sale viagra for heart attack appetite suppressants and phentermine cialis cialis generic viagra generic medication cialis cheap phentermine net phentermine quick site order tramadol online express delivery cialis viagra comparisons life cialis phone free ambien online order generic ambien ambien and muscle pain diet free phentermine pill shipping generic fror ambien compare cialis viagra levitra free trial cialis drug approved buy phentermine on line doctors prescribing phentermine online cheaper viagra levitra cialis order viagra online a href tramadol drug medication phentermine with online docter consultation phentermine gained weight back herbal phentermine ingredient view more info generic viagra review vardenafil vs viagra phentermine overnight fedex no prescription 37.5 cialis qu es cheap phentermine cod pharmacy online perscription drug stores ultram tramadol online rx phentermine phentermine mastercard accepted phentermine price comparisons manufacturer of viagra tramadol hcl chemical supplier white soluble generic online pharmacy viagra risks of taking ambien and alcohol buy deal deal price viagra 180 tramadol cod valium for sale cheap valium fast buy cialis soft tabs viagra best used buy ambien buy cheap ambien online viagra triangle chicago adipex side effects phentermine hydrochloride adipex online sales phentermine order viagra prescription online adipex meridia phentermine prescription viagra get a free viagra pen drug interaction sibutramine and phentermine tramadol ultram 300ct phentermine mg index viagra portland oregon vancouver washington cheap cialis generic tramadol ultram ultram ambien and xanax together purchase tramadol with online prescription online pharmecies that sell phentermine funny picture viagra valium percoset drug generic generic viagra ambien 3 14 2007 tramadol online img available cheap cod phentermine viagra cialis heart problems cheap valium online phentermine irvington 85746 keyword phentermine online order shop baikalguide site ebaycouk kamagra viagra sildenafil ambien insert information sj lvmord tramadol the city that viagra built brand drug generic name viagra description of tramadol hcl-acetaminophen par ambien and celexa hydrocodone tramadol pain purchase viagra buy phentermine w out a prescription keyword valium buying online 150 generic cialis softtabs describe ambien cialis sublingual advantage with viagra overnight shipping ambien consultation is zora ambien ambien and expire online weight loss clinic phentermine viagra online order guide tramadol tenuate buy siesta ambien online phentermine on line pharmacy you tramdol tramadol 180 pills weightloss and phentermine compare fastin phentermine adipex phentermine and heart valve problems tramadol lethal od ambien alcohol effects thai valium viagra headaches ball forging bed buy cialis monster drinks and cialis genic viagra does public aid pay for viagra phentermine warnings ambien sleeping pills side effects cheap phentermine cheap phentermine online here phentermine buying valium united states pharmacy no prescription cod phentermine phentermine pharmacy discount phentermine tramadol is prescribed for aciphex aciphex phentermine discount pharmacy ambien zolpidem show available update lawsuit on viagra 2007 buy viagra in new zealand no rx valium cialis and levitra viagra medications internet ambien laws information on abuse of valium canada generic viagra keywords viagra mp3 liability prescription drug vioxx viagra viagra cheap online phentermine diet pills cod 30 generic cialis softtabs buy cheap phentermine onli ne ambien 7day free trial phentermine 2037.5 valium toxic dose 37.5mg phentermine no perscription tramadol seizure price of viagra compared to cialis 1cialis comparison levitra viagra order phentermine online cheap canada no prescription viagra which is best viagra livetra cialis cheap 30mg phentermine without prescription zoloft and viagra buy online viagra where valium at american pharmacy valium us brand name online does herbal phentermine work viagara and cialis cialis liver problems phentermine no scripts getting a valium enema investment returns for viagra tramadol hcl 200mg 6 free viagra cialis addiction buy online phentermine xenical ambien on line consulatation overnight cialis tadalafil php cheapest online tramadol buy in uk valium buy viagra online 35008 buy side effects of ambien sun sensitivity zolpidem vs ambien phentermine without dr ssri and phentermine drugs you shouldn't take with viagra buy phentermine no prescription required viagra makes you last longer cheap phentermine no prescription photos of viagra effect cialis and viagra together phentermine cod next day delivery what brand phentermine is the best tadalafil vs generic viagra phentermine onlien viagra cialis phentermine soma picture of phentermine capsule phentermine online overnight cardizem cd actos phentermine norvasc phentermine serotonin buying tramadol with paypal generic cialis uk online pharmacy pill price viagra viagra drug store best buys viagra drink affect side valium generic review viagra mg phentermine without prescription viagra cod phentermine delivered cod no prescription get viagra dont visit a doctor viagra for paxil side effects cialis und viagra forum cialis sex tramadol best buy 120 tramadol and free shipping ambien and manufacturer cialis viagra joint corporate renewal orn viagra phentermine xenical diet pill buying cialis generic mt viagra side effects dangers online ambien prescription ambien works tramadol maximum dosage cialis tablet which is better meridia or phentermine ambien interaction average price of phentermine florida online phentermine resident sold tucson cialis viagra from uk buy phentermine 37.5 tennessee overnight ship viagra selges phentermine no shipping to kentucky valium type drugs taking phentermine and chantrex together least expensive phentermine online name brand viagra viagra stafford po box viagra comics phentermine is it safe to intra nasal viagra cialis genuinerx net viagra viagra viagra online valium prescriptions cialis viagra propecia levitra erectile dysfunction flonase nasonex aldara tramadol ambien solubility am buy looking overseas phentermine tramadol online cod phentermine $99 no script celexa phentermine online pills huge discounts insta phentermine valium for cats cialis side affect phentermine erection libido cardizem cd phentermine actos phentermine imitrex mixing cocaine and viagra addiction plan self tramadol treatment cialis viagra combination viagra free sites find search pages generic viagra 24 hours delivery viagra cialis generic can woman take viagra viagra phone prescription tramadol experience discount online phentermine without doctor ambien sleep walk drive sex viagra casino poker blackjack tip to purchase phentermine online cheap retin tramadol generic cialis pills best price viagra buy oonline eon labs phentermine without a script tramadol wikipedia the free encyclopedia viagra penis pump next day shipping phentermine water phentermine slow release tramadol loratadine ambien buy phentermine or adipex discount phentermine discount phentermine phentermine viagra uden recept buy phentermine online no prescription required side effects viagra tramadol line canada viagra cialis on line purchase valium quickly buy xanax valium ambien zolpidem what drug category is ambien cr pill purchase online offers diet phentermine phentermine blue no prescription needed check phentermine and wellbutrin order tramadol order lipitor doctor specialist phentermine with out a prescription cheap 30mg yellow phentermines no membership 1cialis levitra viagra vs vs cialis texas auto insurance order phentermine without calling doctor cirrhosis frequency viagra overseas mail order valium is viagra effective for hypertension bush buy porn viagra buy phentermine levitra cialis pills discussion tramadol s tramadol and phlebitis viagra dizziness phentermine aciphex aciphex phentermine actos risperdal phentermine on line consultation cialis causes high blood pressure viagra party brans of phentermine ambien correct dosage valium lorazepam 37.5mg cause hair loss phentermine will pakistan generic ambien canada buy viagra online viagra vs phentermine diet pill overview 2005 ambien mt november tbcgi phentermine phentremine viagra invention valium and wellbutrin phentermine photo pill cialis drug description tadalafil healthscout valium dosage amount ambien cr coupons online pharmacy for ambien effects of lexapro and phentermine ambien overnight prescription online pharmacy pill viagra zoloft phentermine adipex viagra tramadol withot prescriptions picture of generic phentermine no prescription cheap tramadol overnight fedex ambien prescription buying prescription phentermine ambien cr no prescription cr natural viagra vitamin world weight loss forums phentermine pcp specialist forced ejaculation male viagra buy cheap online phentermine cialis tadalafil american express phentermine ups shipping acyclovir famvir tramadol clarinex ambien questions cheap tramadol free shipping cheapest phentermine 30 mg colorado phentermine real valium cheapest place to buy viagra online nrop iop forum phentermine tadalafil cialis vs viagra buy diet phentermine pill site free trail viagra ambien sirius commercial is there any legitimate viagra detox diet buy tramadol ambien 5mg price valium phentermine no prescription fed-ex day viagra cialis levitra dose comparison phentermine suspended phentermine 37 5mg shipped to kentucky addictive phentermine ambien sleepsex viagra taken ranitidine phentermine overnight to california tramadol airmail buy cialis softtabs referers top viagra phentermine 37.5 overnight phentramine hoodia cheapest viagra tramadol hydrocodone addiction viagra free sites computer find online valium effective pain relief medical uses of a valium splitting cialis generic lunesta myonlinemedsbiz propecia viagra viagra chat physican's desk reference phentermine what does phentermine look like can ambien cause a stroke lowest phentermine 37 5 prices viagra t shirt 1buy generic cialis tramadol and gallbladder ambien hep c cheapest get phentermine combining orlistat and phentermine drug tramadol ultram cialis price uk viagra discount sale buy cialis tadalafil at horizon drugs effexor and tramadol contradictions order phentermine at rassellueban org guaranteed overnight phentermine online pharmacy viagra cialis levitra manufactures addicted ambien cialis soft tab description phen phen phentermine budget rx phentermine viagra cortisone cream and valium together phentermine and leg cramps viagra cialis levitra href page 60 10mg ambien overnight celexa and valium action ambien class lawsuit phentermine side effects menstruation phentermine online cheap money order can ambien cause priapism over night phentermine enhancing the viagra review cheap discount viagra viagra out of control price on phentermine cialis cost low tramadol apap tb can women take men's viagra adipex cheap phentermine lowest price adipex viagra new zealand free sample florida phentermine online viagra and zyban canada generic cialis buy ambien cr no rx buy phentermine 37 5mg cialis and adverse effects tramadol and flushed feeling oral phentermine hydrochloride buy card debit online phentermine comparison viagra levitra cialis valium injectable addictive drugstore ambien cheap overnight phentermine phentermine and soma online pharmacy geberic viagra 50mg n phentermine best online pharmacy add buy comment line phentermine combined phentermine sibutramine 1cheapest cialis viagra for geritol song ambien baikalguide buy keyword phentermine interaction tramadol hcl-acetaminophen par weight viagra rx phentermine or meridia viagra shorts best buy tramadol cheap phentermine without a presription pfizer viagra and its cautions tramadol dog pain search results generic online viagra tramadol ultracet online accept paypal phentermine and meridia gambling tramadol phentermine carisoprodol casino valium alcohol one glass wine phentermine alternatives us licensed pharmacies tramadol ultram opiate drug testing no perscrirtion diet pills phentermine buy phentermine online overnight shipping cheap phentermine hci buy tramadol without prescription viagra can cause reduced eye pressure phentermine information mexican name disebsin college pharmacy pre tramadol buy phentermine now carisoprodol phenthermine yellow buy xanax valium online discount viagra offers is ambien safe cheap online prescription phentermine viagra lanuage cheap phentermine saturday delivery ups chep tramadol and codeine allergy list generic brands of valium where is phentermine pump up the valium lyrics cold water pill extraction tramadol phentermine us pharm no rx needed