MoinMoin considered harmful

THIS IS A PUBLIC SERVICE ANNOUNCEMENT: Please don’t use MoinMoin. Using MoinMoin is actually worse than not having a wiki at all.

Tl;dr summary

It sucks so hard and will mislead your visitors in so many ways that you’re better off having a straight HTML dump with an email contact than trying to fight the hopeless failure of MoinMoin.

Detailed explanation

I’ve been using various sites using MoinMoin to keep their content for a long time. I’ve never particularly liked that wiki engine, and found it confusing on numerous occasions, but the recent re-stumbling upon a particularly egregious case of Moin going out of its way to make sure your visitors aren’t getting what you wanted to give them was the final straw: I realised that it’s the C++ of wikis — not only will it not solve your problems, it will cause new ones that will make you long for your original ones.

First off, a couple of comparatively minor offences: its UI sucks and is confusing all around. The famous combined login/register widget is a paragon of UI anti-design, its version diff widget sucks, its history view is unwieldy and doesn’t actually link to the first revision (!!), I’ve long had experiences with its search being less than helpful, and of course it uses CamelCaseWikiLinks, which all sane people agree are stupid and harmful ([[explicit wiki links]] being the only sane syntax, obviously).

Now, a far more serious sin: it comes with its DB prepopulated with filler content concerning MoinMoin itself. This alone should be enough to disqualify any wiki from being seriously considered, as it means that:

  1. unless you take active steps to combat it, any actual content you have will be drowned by the completely irreleveant bullshit that makes your site look like a page about $wiki_engine (I’M LOOKING AT YOU, TRAC) instead of what you actually want to talk about
  2. the wiki help and your actual content have to compete for space, and as you add yours, you have to remove the (useful, after all) links to information about how to add and edit more
  3. odds are that the filler content is in the same namespace as your primary one, increasing the chances of accidental clashes between unrelated pages

Now, that doesn’t mean wikis shouldn’t come with docs, far from it. It just means they should be clearly marked as such, and available separately from any content. This way a wiki about guinea pig mating habits with no content added yet will look like an empty wiki, and not like a page about Trac (and if you think it’s not a problem, please consider that most experts on guinea pig mating habits will likely have no idea what Trac is and why it is here where they expected a place to share their knowledge about guinea pigs).

However, in case of MoinMoin, the above is not the worst it does. No, it takes the idea of filler content and does things with it that make Trac look like the well-behaved, helpful boy from the neighbourhood. But first, I need you to do the following:

  • pick a non-English language you understand
  • make sure it’s one of:
    • Danish (this one I’m using myself, as I’m learning it)
    • Russian
    • Japanese
    • Hebrew
    • Portugese
    • French
    • Spanish (different from others, but still confusing as hell)
  • the following will specifically not work for our demonstration (you will learn why in a moment):
    • Chinese [zh], German (these are almost enough, complete but not self-contained)
    • Swedish, Norwegian Bokmål [nb] (not self-contained and significantly shorter)
    • Finnish, Korean, Dutch, Slovenian (redirect to English)
    • Italian, Polish, Greek, Norwegian [no], Nynorsk [nn], Arabic, Farsi, Czech, Slovak, Sangro, Lithuanian, Latvian, Estonian, Icelandic, Serbian, Hindi, Punjabi (absent)
  • if you know none of the suitable languages, just pick one that looks the least strange to you
  • make sure that the language you picked is your preferred browsing language

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
(no, seriously, do it, I’ll wait)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Okay, now we have you browsing in $language, go to http://codeville.org/doc/. You’ll notice that:

1) It talks about wiki and MoinMoin and a couple of other wiki engines
2) It’s completely in $language
3) It doesn’t give you a slightest hint that it’s NOT WHAT CODEVILLE AUTHORS INTENDED. Not a language selector, not a link, not even a URL in the addressbar. NOTHING.
4) There’s not even a way to find the original English front page. Site map, title index, word index etc. are all buried deep under layers upon layers of irrelevant pages about MoinMoin and twenty translated copies thereof (that is, after you wait 2 minutes for them to load).

The only way to see the actual intended content if you happen to be using one of the unlucky languages is to guess that it’s not really right, then guess the content will be probably in English, then guess that you can go there by manually entering the English root’s name in the URL bar, then guess the name of it, backtrack a couple of times on misses (like MainPage, StartPage) until you get to the correct one (ie. FrontPage), then vow solemnly never ever to use the goddamn thing again.

It also means that the entire site can, silently and untraceably, transform completely depending on a hidden, essentially random variable the site admins will likely never discover and know to fix. It is also enabled by default (I have previously discovered and reported the exact same problem on Revctrl wiki, it has since been fixed).

Bottom line: in order to have MoinMoin even remotely resembling something useful, you have to essentially unbreak it on two separate levels, one of which is hidden so deeply that it can go undetected for years. Straight HTML, email, IRC, paper printouts, clay tablets, smoke signals, ANYTHING is better because at least what you see is what you get, unlike with MoinMoin.

Note also that the above is based solely on the problems I’ve been able to notice and track down based on my experiences with MoinMoin as a user. I have no idea what else you have to unbreak as an admin and what other problems might be lurking in other places, but I’d be very surprised if it turned out to be otherwise flawless.

PS. If you have read the entire post, you’re welcome and encouraged to go back and try with different languages and report the results back to me, so I can expand the known working / non-working list. In order for a language to be suitable for the demo purposes, the translation has to exist, and be self-contained (which is defined as “doesn’t immediately suggest that something is amiss and doesn’t link directly to the English version”). It doesn’t mean that non-self-contained translations are not an issue, but I want to make sure the first impression gives the proper idea of the magnitude of the problem.

Computing
FLOSS
Intarweb

Comments (13)

Permalink

Easter activities

Things I did this easter: go to church, drink, THROW SNOWBALLS.

General

Comments (0)

Permalink

What is love

Life is good.

General

Comments (0)

Permalink

CUA-mode and paredit.el, married happily

Just a quick drop: if you use paredit.el for editing in your Lisp buffers (as you should), and you happen to also use CUA-mode (which rocks, btw), you probably know that by default they don’t play together too well. Well, I’ve finally got fed up with that and wrote some glue to fix them up. Details and code can be had from this c.l.l post

Emacs
Lisp

Comments (0)

Permalink

I am not able to rightly comprehend the kind of confusion of ideas that could provoke such a claim

Update: For some reason WP disabled comments when I first posted this. Fixed now.

There’s a thread on c.l.l going, in which people try to find a reason macros haven’t caught on for the past 30 years, despite their immense usefulness. One of the cited arguments was this statement by one of the men in charge of Java process:

The advantages of Java is that it easily serves as a lingua franca - everyone can read a Java program and understand what is going on. User defined macros destroy that property. Every installation or project can (and will) define its own set of macros, that make their programs unreadable for everyone else. Programming languages are cultural artifacts, and their success (i.e., widespread adoption) is critically dependent on cultural factors as well as technical ones.

My claim is that this is about as true as C++’s approach to performance, in which people copy things all the time, because that’s what manual memory management makes them do. Just consider the “design patterns” omnipresent in Java. What is a macro, if not a structured transformation of source, following certain pattern? Of course, I’m saying nothing new here, but I just stumbled upon a particularly good demonstration of why “macros decrease legibility of code” is utter nonsense. Consider this snippet:

(restart-bind
    ((retry
      (lambda () (throw 'retry nil))
       :report-function
       (lambda (stream)
         (write "Retry reading the record." :stream stream))))
  (catch 'ok
    (loop do
         (catch 'retry
           (throw 'ok
             (unless (read-record)
               (error "Record not available.")))))))

Just try analysing it, how fast can you find out what exactly it does? Aren’t braided catch/throws fun? Now consider the same snippet using a macro:

(with-retry (:report "Retry reading the record.")
  (unless (read-record)
    (error "Record not available.")))

Not only is the code 4x shorter and uses idiomatic naming conventions and code structure, the macro also comes with a docstring and parameters to let you easily influence the working. And most importantly, you only have to understand it once. Whereas in Java every time you encounter a similar-looking snippet, you have to analyse it to see if it’s actually the same thing, or subtly different.

So, to sum up with a checklist, the macroless code is:

  • More verbose
  • Really complex and confusing
  • Hard to spot and identify reliably
  • Not documented
  • Must be re-invented each time you need it
  • Does not ultimately prevent convoluted code from coming up. If your code needs retry functionality, then so it does, and no amount of “ours is a simple language for the masses” can change it. Though if you make it sufficiently painful, people will probably find ways to dillute the apparent complexity amongst modules, only compounding the problems, and/or pretend they don’t really need their program correct, because it’s such a massive PITA to do it.

Now, to be fair, this is not to say that macros can’t be hard — very often they are, because you generally use macros to solve problems that would be even harder without them. You don’t deny surgeons access to endoscopy because they might not be skillfull enough to handle it — instead you make sure they are or have to find another trade. There’s no reason to treat programmers differently.

Saying “macros make code unreadable” is like saying “race bets can only be done on manure-covered floor, or else you won’t know you’re dealing with horses”.

Lisp

Comments (18)

Permalink

Chattr

Admit it, your Web 2.0 experience hasn’t been full up till now, has it? But now, with Chattr here, you can fix that and talk like a real Web 2.0 weenie with no effort. Its full glory can be had here.

Executive summary: yes, it’s an XChat plugin, no, it has no use.

General

Comments (0)

Permalink

;_;

(with-christmas-gifts
  (visit family))
(setf *money* 0)
(print ";_;")

General
Lisp

Comments (0)

Permalink

More useful bash prompt

Working on a project with a rather deep directory hierarchy, I finally got tired of my prompt overflowing the line and wrapping around. So, here’s a handy bash function to put in your $PS1. It should be noted that I did not write it, I only wrapped it up in a function and added some aesthetic options, but all the hard work and bash hackery was done by BearPerson from #bash.

# Produces the same effect as \w in $PS1, but makes sure that the
# result length doesn't exceed $1 chars. If any dirs are omitted, they
# are replaced with [...]. Optional $2 turns on ANSI VT100 escape
# sequences to dim the [...] part. Optional $3 specifies the colour
# code to dim to (otherwise 02, "dim")
bound_pwd ()
{
    limit=${1:-40}
    ansi=$2
    colour=${3:-2}

    regex="~$|~?/.{1,$limit}$|/[^/]*$"
    pre=$([ $ansi ] && echo -n "\[\033[${colour}m\]")
    suf=$([ $ansi ] && echo -n "\[\033[0m\]")

    CANDIDATE="${PWD/$HOME/~}"
    [[ $CANDIDATE =~ $regex ]]
    [[ $BASH_REMATCH != $CANDIDATE ]] && CANDIDATE="$pre[...]$suf$BASH_REMATCH"

    echo $CANDIDATE
}

To use it, either put it in your .bashrc, or in a file that is sourced by .bashrc, then replace \w in your $PS1 with $(bound_pwd). Personally I use $(bound_pwd 25 1) to get at most 25 chars, with VT100 colour codes.

Obligatory screenshot:

Bash prompt with the shortening

Update: If you use VT100 colours, remember to surround the bound_pwd invocation with \[ \], otherwise non-printing characters will confuse bash and make it wrap lines incorrectly

Update 2: The above update was wrong. It’s actually more complex than that, and due to the fact that bash doesn’t exactly have coherent escaping semantics, I had to rework the function. If you use VT100 colours and have downloaded an earlier version of bound_pwd, you have to download it again, it has changed. Additionally, to have it really work, you have to add this function:

set_ps1 ()
{
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:'"$(bound_pwd 25 1)"'$ '
}

And in .bashrc, add this:

# Yes, it's silly that ; alone is not valid syntax
PROMPT_COMMAND="${PROMPT_COMMAND:-true};set_ps1"

Make sure it’s the last line to set PROMPT_COMMAND. Especially if you’re on Debian/Ubuntu, as their default .bashrc sets it conditionally.

Linux
Programming

Comments (2)

Permalink

Routing complete Apache traffic to a CGI handler

Following up on my CGI-Lisp work, here’s a short recipe on how to route the entire Apache traffic to a CGI handler. This is not trivial because of a few problems that need solving:

  1. mod_actions will fall into infinite loop if you try to associate a handler with <Location /> (as will mod_rewrite if you attempt to rewrite /.*)
  2. mod_rewrite will not execute CGI scripts by default
  3. mod_rewrite only serves physical paths under DocumentRoot (and it’s good practice not to have /cgi-bin/ under DocumentRoot)

These can be all solved, but require some searching and reading into the meaning of various options, so I’m posting a ready solution here:

<VirtualHost *:80>
    ...
    DocumentRoot /var/www/
    ...

    RewriteEngine On
    # PT means "passthrough" and will allow mod_rewritten URLs to be matched by
    # virtual locations, not just physical paths
    # T= specifies mime-type to ensure the CGI handler will be executed
    # sock.cgi is the handler we want to handle the entire traffic
    RewriteRule ^/(.*) /cgi-bin/sock.cgi/$1 [PT,T=application/x-httpd-cgi]

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        #Add whatever options you normally use for your /cgi-bin/
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

As an added bonus, it seems that the REQUEST_URI sent is the URL before rewriting, so you don’t have to do anything special to filter out /cgi-bin/sock.cgi from it.

Intarweb
Lisp
CGI-Lisp

Comments (3)

Permalink

CGI-Lisp 0.5

Following the best agile methodologies, with rapid turnaround, short deliverables, tight customer feedback loop and probably something else involving “leveraging” and “assets”, I’m we’re proud to announce CGI-Lisp 0.5, the latest incarnation of the market-leading, award-winning product in the mod_lisp-compatible CGI-to-Lisp bridges space.

I call it 0.5 because I think it pretty much complete, but not enough to insist there are no bugs to be fixed or additions to be made.

Highlight of changes:

  • POST now considered working. I haven’t actually done anything to make it so, but I tested it and mapped enough variables to have it actually useful (and it turns out to be working out of the box otherwise).
  • Much more complete mappings. It should have most of the variables anyone cares about now.
  • Tested a bit more. And by tested I mean “played with several Hunchentoot applications and found them not breaking horribly”.

Lisp
CGI-Lisp

Comments (1)

Permalink

CGI-Lisp

I’m happy to announce the first release of CGI-Lisp. It’s a small hack that allows you to trampoline webserver requests into a long-running Lisp process, just like mod_lisp (and using the same protocol), except that it runs as a CGI handler. So you can run it on shared hosting.

The code was stolen from Rob Warnock, who hacked it years ago. I in turn hacked it into speaking unmodified mod_lisp, which allows it to be used as a drop-in replacement:

CGI-Lisp screenshot

It’s been extensively tested by running it on exactly one machine in exactly one scenario. That means it will quite possibly break for you. If you still ain’t scared, grab the tarball here.

Update: so yes, I realise you hate GLib and can’t install it on your server. Debugging it was sufficiently annoying, though, for me not to be willing to put up with the sorry excuse for string handling of plain C. And I don’t think it will be very useful without handling POST anyway. I will probably fix that later on, but I don’t have the time now.

Update 2: I rewrote it not to require GLib. It’s slightly slower than before, but not much, and it’s good enough for me. POST non-handling still needs fixing though. You can grab the updated version from the same place.

Intarweb
Lisp
CGI-Lisp

Comments (0)

Permalink

Everything you (never) wanted to know about C++

Ladies and gentlemen, the C++ FQA Lite!

If you hate C++, you’ll have a great time reading this brilliant and amusing rant that rings just so true. Occasionally you’ll weep when it rings a little bit too true, invoking painful memories.

If you love C++, it’s a big flaming rant, but written with technical competence that easily shadows everything else out there that’s been written on the subject. You can’t claim any knowledge of C++ without having read it. And chances are that it’ll make you not love that sin against all good and just before it’s too late. Just think about it, the author is still trapped inside the warped world of C++, dealing with errors that have defeated everyone else on his team. The FQA is really a desperate cry from inside the asylum for you to stop while you still can. Think about it, you’ll be endlessly happier if you do.

If you don’t care about C++… Well, lucky you. But if you know someone who likes C++ more than they should (that is to say, at all), consider doing them a favour and pointing them to the FQA. Friends don’t let friends use C++.

Programming

Comments (2)

Permalink

Common Lisp Tutorial

In case you don’t know it yet: Peter Seibel’s Practical Common Lisp is the best Common Lisp tutorial around. It’s also a great book on its own, and a recommended reading for anyone looking to pick up a new programming language (and Common Lisp is a recommended language for anyone, too :). Go read it.

My personal method of reading is, as it lack traditional textbook problem sections, to follow along with the problem specifications, but not with the code, and only compare the results once finished. This was the way for me to avoid lazily reading, but not actually comprehending, the code.

Also, if you choose to read the web version (there’s a dead tree edition to be picked up from Amazon, y’know), you will want to install the greasemonkey script for footnotes hyperlinkification. And be sure to read it to the end, including all the practicals. A fair body of the code from the book got packaged into separate libraries and is actually used by many projects, this way you will be gathering knowledge of some very useful and widely employed packages.

And one final tip for any would-be Common Lisper: CLHS is your friend. Learn to read it today.

Lisp

Comments (0)

Permalink

ccharset 1.2.1

A new ccharset version is out, courtesy of LaC.

The installation and everything stay the same.

日本 / Japan
XChat

Comments (0)

Permalink

ALL HAIL THE MIGHTY BZR

svn ==

svn + bzr-svn + merge-into == &&

bzr is SO the best damn Subversion client around. It’s also an awesomely shinytastic SCM in general. I now have two svn repositories, one imported into a subdirectory of the other, while still retaining the ability to intelligently pull in changes made in the upstream of the imported repo, all managed by bzr-svn. And it’s not just svn branches imported one time into bzr. Those are actual svn working trees still fully visible and valid to any old svn client. In other words, bzr is so fucking cool it actually fixes design flaws in subversion! Ain’t got nobody nothing on that level of integration, no sir.

Programming

Comments (0)

Permalink

Im in ur specs, synergistically leveragin ur award-winnin opportunities

Quiz time: Guess what it is about?

The Hardware Start Button, (…), is designed to be an attractive and discoverable actuator for launching the new Start menu and search experiences in the Windows Vista family of operating systems. The Hardware Start Button creates and deepens affinity between physical hardware and the Windows Vista user experience while complementing the brand platforms and product design languages of hardware manufacturers.

If you guessed "the Windows key" (found on just about every keyboard manufactured after 1996), then you're right. And this ridiculous paragraph is the intro to a spec detailing such exciting aspects as what paint to use, or how polished the key surface can be.

 More gems:

What’s new in Version 1.01?

Conventional Keycap Design Requirements (page 7)A matte finish with a consistent texture of MT11000 or equivalent may be used on the Hardware Start Button dome and chamfer instead of an SPI A2 gloss finish for an indefinite period of time, not until December 31, 2007 as the Version 1.0 specification stated.

The Hero Start Button functions as a Start Button just like the other implementations in this specification. It is not required and is provided as an option for keyboard manufactures that want to take advantage of its more dramatic look.

And what is this "more dramatic look"?

Larger size, clear dome, and full-color printing and placement on the keyboard. The Hero Start Button uses a lens insert and is placed directly below the space bar.

If you feel brave, read for yourself.

In other news, OpenOffice.org is a steaming pile of shit that leverages every fucking opportunity to fucking crash every fucking minute and present you with a completely useless and retarded recovery dialogue even though I never changed a single character in that document.

Computing

Comments (0)

Permalink

Doodles

 

 

Inkscape is nice. The above is a quick trace of a photo, because flexible image resolution adjustment was needed (and doesn't have anything to do with the Linux distro).

On the other hand, the original SVG (linked to if you click on the image) shows how little parity is there between freely available SVG implementations. Inkscape displays it correctly (obviously), librsvg does a rather nice job, but can't display masked objects at all (there is a slight gradient on the brim which is masked), and FF simply butchers the image, unable to display something as simple as a gradient correctly. 

As Ankh says, it's not good when the only widely-available, decent SVG viewer is Adobe plugin inside IE. 

General

Comments (6)

Permalink

<This title contains mature language. For your protection, it has been withheld>

"This address uses a network port which is normally used for purposes other than web browsing. Firefox has cancelled the request for your protection"

 Dear Mozilla,

 You guys are fucking idiots.

Love, 

 Update: okay, so I checked, and that's a legitimate security issue, known as cross-protocol attacks. Or rather it would be, if it wasn't for the fact that a user-entered URL cannot usefully be a source of such attack. And there's a bug dating back to 2001 stating "Add user UI for that". Still lame and just as enraging when I have to use another browser for one stupid address.

Intarweb

Comments (2)

Permalink

Snippet of the day

_('of')

DEAR. GOD.

Programming

Comments (2)

Permalink

New CCharset

Yep. It’s not my accomplishment, mind you, I was too lazy and just got used to the shortcomings. So the new version of ccharset comes courtesy of teh_LaC. Here you can get it. Readme stays the same as in the old version, but bear in mind the config file is no longer compatible, so you’ll have to set channel encodings again. Ah, and topic setting doesn’t, and isn’t going to work, yay XChat.

日本 / Japan
XChat

Comments (0)

Permalink

comfort and privacy buy zoloft zoloft valium interaction ocd in children and zoloft topamax with zoloft valtrex in pregnancy side effects ultram er zoloft online alcohol and zoloft xanax azure ray lyrics dosage of valtrex connecticut vioxx class action pink oval pill 17 xanax identification cheapest generic silagra viagra phentermine zoloft together onset of action zoloft buy zovirax concerta and zoloft interactions on line zyban prescription lose weight and zyprexa xr 5 xanax zoloft and afib zoloft liver safety xanax ordering forum best online purchase information on zoloft weight loss yasmin best price valtrex women does viagra work peak time for xanax to work buying valium black outs and zoloft lupron zoloft fiorcet zoloft zoloft dosages buy zyban prescriptions zoloft withdrawal newborns does zoloft interact with alcohol zoloft pharmacy valtrex verses acylovior flomax zoloft zoloft allergies xanax vs paxil zyban side generic zyban price pharmacy that ship cod for xanax zoloft and drowsy xanax on line prescription questionnaire prescribed wellbutrin sr and adderall zoloft not sleeping well zyban information xanax and texas drug schedules zithromax suspension no prescription overnight xanax on the airplane valtrex prescribing info on zoloft fiorcet generic drugs wellbutrin zyrtec rxpricebusterscom zoloft offficial site transition from wellbutrin to prozac perimenopause zoloft pain ultram quitting zoloft cold turkey viagra prevent premature ejaculation buying prescription valium without xanax taking zoloft and uses marijauana danger of zoloft get a doctors prescription of xanax drug category xanax valtrex walgreen suicide using xanax how much valtrex interactions commercial filming valtrex zoloft interaction alcohol adhd zoloft xanax prices in mexico advantage plan zyban buying xanax with out a prescription chemical name for xanax affects of zoloft in children xanax bars yellow zoloft users group xanax no prescription 24 overnight xanax or zoloft zyrtec clartin allegra is zoloft really cocaine venetian las vegas effects viagra zoloft and cortisol zoloft interaction loratadine pseudoephedrine zoloft prescribing zoloft men dxm zoloft interaction north carolina vioxx heart attack lawyer abd death zyban welbutrin zyban purchase online retin-a renova avita tazorac seroquel zoloft new jersey vioxx heart attack attorneys zoloft sexual buy phentermine or xenical without prescription pharmacuetical company that makes zoloft sertraline klonopin rating xanax zoloft synthroid menopause long term danger of ultram symptoms of zoloft zoloft average dosage fast weight loss with xenical mexico medication prescription zyban zoloft acetaminophen complications fascts about drug abuse xanax xanax anxiety relief global pharmacy come off zoloft california valtrex steve anderson libido zoloft xanax no perscription master card symptom zoloft canada pharmacy macrobid zestril international pharmacy weight gain or loss zyban zoloft and hepatic dysfunction zyrtec counter drug wellbutrin and hair loss and regrowth where to buy zovirax low cost zyban serotonin syndrome zoloft dosage valtrex discount xanax zoloft bupropion columbus ohio vioxx heart attack lawyer vardenafil medicine online difference between effexor xr zoloft ago cheapest xanax no prescription zoloft stereochemistry xanax and children zoloft decreasing dosage purchase xanax without a prescription dog allergies zyrtec zoloft and drinking xanax overnight reliable no prescription needed xenical discount pharmacy vicodin europe drug store zyban free prescription valtrex dizziness lipitor zocor weight loss after stopping zoloft side effercts of snorting xanax generic to zoloft zoloft withdrawal causing muscle twitches side effects of zyrtec allergy medicine zoloft and tamoxifen special master zyprexa buy cheap levitra xanax xenical effects xanax bars 2mg xanax bars no prescription overnight xanax without prescription 200mg of zoloft buy xenical from usa prescription inc valium xanax vs xanax order zoloft and bipolar facts about zoloft new song called viva viagra information on drug zoloft zoloft et boire xanax 5 milligram bars drugs that look like xanax switching from zyrtec to allegra zoloft and talking in your sleep ativan compared to xanax effectiveness of valtrex xanax drug info domperidone and zoloft where to buy zyban zyban prescription xanax alcohol combined zoloft and alcohol interactions valtrex costs taking zoloft with zyban pictures od xanax xr free zoloft wellbutrin mixed with prozac buying fake viagra cumulative effect of zoloft zoloft alcohol abuse prevention zyban and physician ultram prescriptions online buy canadian zyban generic zocor united states bupropion and zyban hair loss zyban zoloft success comments on xanax drug drug interactions xanax buy in uk xenical loss weight wellbutrin xl generic form of zoloft wellbutrin generic med cheap zyrtec zoloft is wonderful valium and medical malpractice generic wellbutrin test results forum bipolar and xanax liquid magnesium safe with zoloft forum nausea zoloft wellbutrin prozac weight gain or weight loss zyban xanax bars no liver xanax death europe zyban generic medications zoloft 199 90 2mg xanax generica zoloft ingrediants wellbutrin sr bupropion pennsylvania zyban or wellbutrn sr zyban drug insert purchase vardenafil valium replacement with xanax zoloft warning loss result weight xenical zoloft nerve zoloft uses mb12 valtrex valtrex yasmin sertraline hcl generic zoloft xanax nonprescription drugs xanax xl xanax pill with 249 on it difference between effexor xr zoloft xanax overnight delievry zoloft death can i drink alcohol with ultram song valtrex tylenol and xanax order xanax online us pharmacy zocor generic lawsuit zoloft and migraine sizes xanax colors xanax drug testing times muscle cramps from zoloft xanax no perscription master card paypal zoloft and paxil zoloft mylodysplastic syndrome zoloft tachycardia nevada vioxx heart attack lawyer california phentermine network dish viagra ultram used for depression overdose by celexa and zoloft transporting viagra by trucks xanax no prescription fast shipping generic zoloft differences zyban free medications online zyban sr ordering xanax online no priscription pay pal buy zyrtec buy xenical online generic xenical xenical zoloft and autism zyban sperm health no prescription wholesale xanax zoloft and suicide research children will viagra work for premature ejaculation abrupt cessation of zoloft therapy xanax and klonopin 2737 amerimedrx valtrex wetrack it zyrtec zoloft medication interactions lortab and xanax without a prescription xanax and valium zyban skutki uboczne zoloft arthritis xanax superior drugs welbutrin with zoloft zoloft discontinue titrate mail order zyban zyban 2bquit 2bsmoking does generic wellbutrin work wellbutrin generic same pennsylvania vioxx class action does sertraline hcl generic zoloft work zoloft sertraline hcl pfizer patent 2005 cheap zyban online generic zyrtec switching from paxil to zoloft gradually combining prozac wellbutrin zoloft comercial zoloft withdrawal in babies weightloss on yasmin birthcontrol buy zoloft online pharmacy what is the history of xanax combining zoloft and adderall generic zocor simvastatin jaw clenching with zoloft zoloft wih celexa loss weight wellbutrin viagra use oxycotton xanax bars zoloft children ocd zoloft and ecstacy working mechanism of zyban what is xanax xr buy prescription online zyban retin-a canada pharmacy valium valtrex varicela drink alcohol with viagra nasacort aq zyban nexium zoloft generic viagra rx filling in mexico prescription xanax zoloft allergic reaction zoloft ball site sr wellbutrin xanax 2 mg without prescription sniffing zoloft wellbutrin generic vs buy zyban where taking zoloft with zyrtec zyban sucess rates quit zoloft started buspar keyword order zoloft recreational use zoloft cheap online pharmacy denavir yasmin denavir pharmacy italy list valium zoloft marijuana zithromax antibiotics online insomnia and wellbutrin sr wellbutrin sr bupropion connecticut xanax cheap xanax online viagra other use cream valtrex prescription free xanax concerta zoloft interaction viagra and lung conditions in dogs buy canada zyban take zyban zoloft dosage amount zoloft first night sudden stopping of zoloft may cause xanax ratings lowest price generic viagra pfizer dropps zoloft viagra wallpaper cvs pharmacy valtrex zoloft ocd business business buying lead xenical seroquel zoloft combined benadryl and zoloft vardenafil patent zoloft and thyroid zoloft guy wellbutrin dose for weight loss taking zoloft with wellbutrin valium and xanax zithromax tablets no prescription zoloft kids bop dosing zoloft bupropion and zoloft zoloft liver zoloft 50 mg compare generic viagra price xanax online pharmacies that accept mastercard dextrine and zoloft can zoloft affect the liver methylphenidate zoloft valtrex overdose zoloft is making me sweat buspar and zoloft buy zoloft withour prescription north dakota vioxx heart attack lawyer wellbutrin for chronic fatigue zyban and cocaine zyprexa weight loss xanax and prozac death zoloft vs seroquel xanax dog zoloft use with diazepam zoloft manufacturers generic price zocor zyban xanax xanax drug detection 1000 mg valtrex zyban baikalguide order zocor online what kind of drug is xanax wellbutrin sr doses average dose zoloft effects of zoloft in pregnancy quail eggs better han viagra does xanax cause liver damage xanax no prescription affliated with pillbar understanding zoloft what company manufactures generic zoloft yasmin birth control for treating depression zoloft sideaffects search zyban online zoloft for headaches scottish civic trust viagra charles free zyban xanax and no prescription and hhv-6 valtrex what does zyban do zoloft is killing me xanax valium quick zyrtec pravachol foreign pharmacy worksite zyban zoloft com take zoloft before bed paxil zoloft and birth defects best xenical weight loss information search zoloft online pharmacy and xanax xanax maoi effexor xr buy b zyban b xanax us zyban death zoloft and gestational diabetes clarinex zyrtec allegra cheap viagra cialis xanax demerol morphine no prescription needed dosage of 1gram valtrex valium sale zoloft and joint pain zoloft and naseau zoloft safety breastfeeding info on xanax medication interactions for zoloft ortho-evra patch aldara cheap drugs zyrtec weight loss after yasmin mixing prozac wellbutrin taking chantix with zyban valacyclovir hcl online information on valtrex going off of valtrex benefits of valtrex zyban and melatonin zoloft verses lexapro valtrex shelf life effects of zoloft zoloft and hives chiropractic xanax dentists xenical dangerous healthy meridia pill zoloft product medical alternatives to zoloft zocor generic substitute zoloft benefit zoloft danger zoloft medicine brain inury zoloft welbutrinxl taken with zoloft zoloft and dhea different pill forms of zoloft 2006 buy comment post xenical wellbutrin sr and breastfeeding wellbutrin package insert zoloft ginseng ginkgo zoloft dose to high pittman zoloft trial buying xanax without a prescription online prescription for zyban xanax xr 3mg pictures mixing zoloft and wellbutrin zoloft stopping high from zoloft zoloft complications cheap viagra pill buy zyban online canada buy comment leave zoloft what is zyban used for med ultram side effects zyban buy vicodin online pharmacy online zyrtec allergy medication children pills yasmin ortho evra xanax dosage extreme anxiety zanaflex zyban stories simvastatin and generic zocor new hampshire vioxx heart attack lawyer valtrex ads zoloft with alcohol xanax and birth control pills zoloft shaky new jersey vioxx class action treatment of xanax withdrawal buy online valtrex zocor goes generic zyban discount zoloft and lorazepam dosage of zoloft for anxiety doxycycline erythromycin tetracycline generic zoloft does not work xanax xr carisoprodol zyban wellbutrin information wellbutrin medication for depression migraines from generic zoloft keyword snorting zoloft zestoretic warnings precautions pregnancy nursing abuse help with xanax withdrawal overnight delivery on xanax valtrex sun poisoning valtrex for cold sores buy zyrtec autism valtrex and zoloft dopamine dopaminergic viagra best way to use sam-e zoloft interaction zoloft cost zyban pharmacy 029 xanax pill id money order xenical prescription good zyban zyban deadly zoloft experiances xanax test positive in urine nbc5 zoloft downing forum zyban zoloft and ocd zoloft good results zoloft prozac vs buy wellbutrin 300 xl zoloft and juice viagra falls band in new jersey zyprexa settlement claims payout process zyban breggin buy online zyrtec zyban and overdose mexican xanax online no membership fee zyban order logo valtrex focus factor and zoloft zoloft liver problems zoloft and sleeplessness