Wednesday, August 1, 2007 148 Comments

What's wrong with CS research

The other day I was glaring obsessively at my sad, dwindling traffic numbers, and I noticed that a couple of weeks ago someone seems to have sent my post on the decline and fall of the American university system to reddit.programming, where it got - I thought quite amusingly - 46 "upvotes" and 36 "downvotes."

Obviously, UR is not a programming blog. And in a post that warms up with a 75-mile-long blockquote about Hegel, I didn't really think of myself as writing for a technical audience. Technical audiences are not to be underrated, however, and I've noticed that a lot of UR readers are in this category. So I thought I'd say a few more words about CS research.

This is not a subject that interests all. And if it doesn't interest you, no one can conceivably require you to read about it. And I recommend you just skip this post.

First, the Reddit comment thread raised various criticisms which I didn't see in time to refute. Let me start by answering two of these points, and sneakily segue into what I think is wrong with CS research.

One: Guy Steele is a system software designer, not a PL researcher. In other words, he is in a class with Dennis Ritchie, Alan Kay, Brendan Eich, John McCarthy, John Warnock, John Ousterhout, Bjarne Stroustrup, Rob Pike, Larry Wall, Ted Codd, Tim Berners-Lee, Leslie Lamport, Ken Thompson, Dave Cutler, Sergey Brin, Luis von Ahn, Guido van Rossum, Linus Torvalds, and anyone else who has designed fundamental architectural components of code which everyone on earth points their CPU at a zillion times a day. Frankly, these men are heroes. They are literally warriors of God. And anyone who insults them is an asshole.

I'm sure some of the above individuals - perhaps even most - were, at some time in their long and productive careers, funded by various grants or other sweetheart deals with the State. For that matter, I'm sure few if any of them would endorse the extreme opinions I express below. But if anyone with a forehead steeper than a halfpipe has ever described their work as, for example, "grant-savvy," I am a Cape buffalo.

So here's the first thing that's wrong with CS research: there's no such thing as CS research. First, there is no such thing as "computer science." Except for a few performance tests and the occasional usability study, nothing any CS researcher does has anything to do with the Scientific Method. Second, there is no such thing as "research." Any activity which is not obviously productive can be described as "research." The word is entirely meaningless. All just semantics, of course, but it's hardly a good sign that even the name is fraudulent.

When we look at what "CS researchers" actually do, we see three kinds of people. We can describe them roughly as creative programmers, mathematicians, and bureaucrats.

Creative programmers write interesting, cool, and relevant software. The only workable system for generating interesting, cool, and relevant software is well-known. Find a bunch of really smart programmers and point them at a large problem space for which there are actual users, and for which new solutions are unconstrained by old designs. Give them a manager who's just as smart and knows how and when to stay out of their way, and turn them loose.

Depending on the people and the problem, this approach may or may not produce results. But certainly nothing else will. More or less the above strategy was followed at the MIT AI Lab, at Bell Labs in the early Unix days, at Engelbart's lab, at Xerox PARC, at Berkeley CSRG, etc. It produced most of the aforementioned pioneers of system software.

And it is the farthest possible thing from academic CS research as practiced today, which I think is the main reason why we see so little good come out of the field.

Of course, creative programmers can be hard to inhibit. Academic CS programs do bring together a lot of very smart people, and sometimes they still get out of control and actually build something useful. Thus, for example, Google. Note that the idea that became Google was not a part of anyone's research project, it was not assigned by Page and Brin's advisors, it had no Principal Investigator, it was just interesting, cool and relevant software.

As a general rule, this sort of thing can only happen in the first couple years of grad school, in which your basic purpose in life is to learn all the things they forgot to teach you as an undergrad. After that you are sucked into the apparat, and unless you are very good at working the system, your power to work on random cool stuff disappears. If you are extremely lucky and successful, it may reappear in fifteen years, when you have your own empire. But most creative people don't have the patience to play this game.

The problem is the funding. The reason why CS research produces so little that can be called creative programming these days is that the modern process of grant-funded research is fundamentally incompatible with the task of writing interesting, cool and relevant software. Rather, its goal is to produce publications and careers, and it's very good at that. As we'll see when we get to the bureaucrats.

But because of this problem, most creative programming these days comes from free-software programmers working in their spare time. For example, the most interesting new software projects I know of are revision control systems, such as darcs, Monotone, Mercurial, etc. As far as Washington knows, this problem doesn't even exist. And yet the field has developed wonderfully.

It's very difficult for creative programmers in the academic CS world to compete with those in the free-software world. Academics have one advantage: money. Free-software programmers have another: freedom. Ideally one would have both, but if you have to pick, pick freedom. If you look at the salary of a grad student or a postdoc, it's not that hard to support yourself at the same standard of living by working intermittently in the corporate salt mines. Besides, you might actually learn something.

Next we have the mathematicians, who prove interesting, cool, and relevant propositions. Unfortunately, most of the really interesting, cool, and relevant propositions in computational mathematics were proved before 1960, but there is still some fun stuff left. Genuine computational mathematics typically goes under the name "algorithms" in CS, although cryptography is also of course math.

Obviously, computational mathematics and creative programming are only barely related. In my humble opinion, if something is math, it should be in the math department. As we'll see, managing math and programming as if they were one field has produced disastrous results.

This brings us to the third group, the bureaucrats. Bureaucrats build academic empires which churn out meaningless solutions to irrelevant problems.

The CS-research bureaucrat's main difficulty is that no one wants to fund bureaucrats. Therefore, he must pretend to be either a creative programmer or a mathematician, preferably both. Since this task is critical to his survival, he is extremely good at it.

The bureaucrat has many strategies. But probably his best is to take an area of creative programming and devour it like a locust, by turning it into a form of mathematics.

Math outcompetes creative programming in the funding process, simply because it appears to be more rigorous. It is more rigorous, and it generates a longer, deeper river of more impressive publications. And, because its area is nominally applied, it doesn't have to compete with the real mathematicians over in "algorithms," who would clean the bureaucrats' clocks in five minutes.

The problem with math is that there's an infinite supply of it. It is always possible to create new problems to solve and new formalisms to apply. Math is always interesting and cool, at least to mathematicians, and after your field has been parasitized by mathematicians for a decade or two, everyone in it will be a mathematician. There's enough work for everyone.

It's possible to describe anything in mathematical notation. I recall seeing some paper once in which someone had created a mathematical description of C. (I forget whether or not this included the preprocessor.) As an achievement, this is somewhat like building a full-size model of the Eiffel Tower out of tongue depressors. It's clearly not the act of a talentless man, but you have to wonder what he said when he applied for his grant.

Whatever their tactics, what CS bureaucrats always sacrifice is relevance. Of course everyone has a conscience, and everyone would like to be actually relevant. But, especially when the only people checking up are your own godfathers in the funding agencies, it's much easier to pretend to be relevant. Actual relevance is extremely difficult to achieve, and hardly rewarding at all. In fact it's embarrassing, because everyone who isn't relevant and knows it has an automatic grudge against you. Since CS research is quite competitive, evolution has its way, and relevance goes the way of the snake's legs.

When the responsibility of relevance has been lifted, it's easy to write as many interesting and cool papers as you like. The point of these papers is to prove that you, the researcher, are smart. Of course, not only would the world be a much better place if a smart person such as yourself was working on something relevant, but you yourself would be having more fun. But this is the trap.

No field has been more infested by irrelevant formalisms than that of programming languages - also known as "PL research." So when I say Guy Steele isn't a PL researcher, what I mean is that he's not a bureaucrat. Rather, he's a creative programmer who writes interesting, cool, and relevant software, which happens to consist of programming languages.

The only way to understand the horrific trainwreck that is PL research is to actually look, in detail, at the ways it's discarded relevance in favor of irrelevance. To that end, let me answer another of the Reddit readers' complaints.

So, two: it was perhaps a little light-hearted of me to describe proof-carrying code as the world's most pointless compression scheme. But the argument is basically accurate.

The whole idea of proof-carrying code is that it's a binary format for executable code whose correctness can be automatically verified. The term cannot imply a source format, because a source format whose correctness can be automatically verified is best known as a "type-safe programming language."

Such a binary format is useful because it saves CPU cycles across the entire network. If the source format can be verified but the binary can't - a trivial, and generally universal, property of anything anyone could describe as a "compiler" - obviously, you cannot ensure correctness unless you send the source rather than the binary. This requires you to perform the same compilation step on every machine for every piece of code it runs. An obvious, and obviously massive, source of global inefficiency.

Unfortunately for the researchers working on this problem, now and for the foreseeable future, the cost of client-side compilation is quite moot. It may have mattered at a time when computers were much slower. In fact, I will go so far as to say it probably did matter, say, as recently as 1990. However, with modern incremental compilation it is not even worth considering. Everyone who browses the web is compiling code from source, with every click. What is HTML? What is Javascript? Not chopped liver. Source-based systems have won, because they are simply simpler - they pass what Rohit Khare calls the "telnet test" - and they are easily fast enough on any modern machine.

If you can check the source but you can't check the binary, it's probably better to just send the source. If the binary is smaller than the source, a naive compression algorithm should do pretty well, too. If you like the fact that the binary is opaque and hard to decompile, it's not at all hard to write a shrouder (automatic code obfuscator) that achieves the same goals. If you want to support multiple source languages, pick one which covers the entire feature space of the binary verifier, and compile the others to it instead. If all this fails and you really need secure binaries, use a cryptographic signing service. (People who really care might enjoy this amusing discussion of "The Future of PCC" from 2000.)

Because the price of PCC or anything like it is inevitably a file format whose definition is a 80-page LaTeX paper, including many strange, squiggly marks which for the average coder might as well be Sumerian cuneiform. There is a reason why IETF RFCs are ASCII-only, and at least the good ones are quite short. Therefore, the chance that PCC or any design involving it will ever be approvable by any standards process not involving a caoutchouc-based engraved ink applicator is, to put it mildly, remote. In standards, complexity is death.

Therefore, because the entire goal of a network protocol is to be standardized, PCC cannot possibly achieve its own goal. And therefore, every CS researcher working on verification algorithms for generated code is wasting time at public expense.

There is a name for this. The name is patronage, and most historians consider it a criminal abuse of government power. CS research is only a tiny brick in the great pyramid of academic patronage that is the university and educational system, and yes - if you didn't, someone else would. But if you only steal a candybar, you're still a thief.

And this is what I think is wrong with CS research: it's best understood as a massive patronage scheme. Compared to all the other wholesale patronage operations run by our benign, caring masters, the financial cost of this particular scheme is relatively small. However, its human and economic cost is much higher, because it sucks in many young, talented people who could otherwise be engaged in productive work.

Again, any unproductive activity can be described as "research." There is no endeavor so obviously noble that its value to others cannot be evaluated. Nor is there any endeavor whose toilers will happily report to you that they're wasting their time, and their funding should be cut. There is no substitute for actual critical thinking.

If you feel the point is made, please feel free to skip to the end of the post. But if you think PCC may be an exception and you're looking for more examples, by all means, let's continue.

Again, the general problem in PL research is that it's been drowned in clouds of math, whose effect is not to create better languages, but to publish more papers. Specifically, PL research today is actually the study of something called "type theory," whose correspondence to what a naive person might consider research into programming languages - designing new languages for actual users to actually use - is extremely remote.

Type theory actually has nothing to do with computers or computing. It is the modern development of the project in metamathematics (the expression of mathematical statements in mathematical terms) that originated in the late 19th century and continued into the first half of the 20th, with researchers like Frege, Russell, and Church. In other words, it dates back to when "computer" was a job description. I rest my case.

You can model computing as metamathematics, of course. You can model computing as Tinkertoys. The whole point of Church-Turing equivalence is that pretty much any recursive model you can build is an equivalent description of computing. The only reason the lambda calculus, and other such metamathematical approaches (such as defining programs as proofs) are so popular in the world of "CS research" are that "CS research" was largely founded by a land-rush of metamathematicians. The motivation for this migration is left as an exercise for the reader.

Of course, in a sense, anything you do with in a computer can be described as "mathematics." The point is not whether or not programming is math. The point is what notation is most effective for expressing programs. Choosing the best notation is the entire problem of programming language design, and this problem is neither mathematical nor scientific. A programming language is a user interface for programmers, and if you can reduce UI design to math, science, or any formal process, call Apple, not me.

I happen to prefer the ASCII-based family of notations used by working programmers, which are clearly effective for encoding the transformations of state which all programs, functional or imperative, typed or unsafe, express. I don't see why anyone whose goal is to design, explain, or specify a programming language should be using any other notation than that of the language itself, and I don't see why any language needs any non-ASCII notation.

Even academic languages like Haskell and OCaml have ASCII notations, although researchers who write papers on them are still fond of their private symbol set. As a marketing strategy this approaches the genius of Crunchy Frog. Frankly, CS research is so distrusted outside its own ghetto that even posting your work as a PDF file (let alone ps.gz) is a big red flag. Break out the squiggles and it's pretty much curtains.

Anyway, if you want to learn about type theory, you can buy Types and Programming Languages, by Benjamin F. Pierce. If you are at all confused after this, you can clear up any difficulties with Advanced Topics in Types and Programming Languages, by Benjamin F. Pierce. Presumably Professor Pierce is now working on "Further Reading in Types and Programming Languages," or "Extremely Advanced Topics in Types and Programming Languages."

Each of these tomes would make a fine textbook for a graduate class, or at least upper-level undergraduate, at a top-rank American university. Certainly, anyone who can master this material is qualified to teach undergraduate programming. I'd also say they're smart enough to take any other programming job - for example, they'd make good kernel hackers. If, of course, they were fully retrained to be masters of C (though many already are).

Meanwhile, you can explain the type system of C to a fifteen-year-old in a day. And C is almost certainly the most difficult programming language in use today, except C++. (I love C, but I have never much liked C++.) It takes a decent C programmer typically a good week or two to learn basic C++, although they often emit very nasty C-isms for quite some time thereafter.

Meanwhile, you can explain the type system of Python to a retarded nine-year-old in five minutes. I exaggerate, slightly.

This perhaps explains why Python was not designed by a PL researcher. Python was not designed by a PL researcher because Python would not impress other PL researchers. And since impressing your peers is the sine qua non of any academic discipline, any academic who designed something like Python (probably the closest similar case is Ousterhout's Tcl) would be doing it simply for their own private kicks - a perverse feat of intellectual masturbation, perhaps impressing the undergrads, but hardly a source of any actual professional prestige.

It also explains why Haskell was not designed by Guido van Rossum (designer of Python). Mynheer van Rossum, who as far as I know dropped out of kindergarten, wanted to build a language that people would find useful. And he certainly did.

A programming language like Haskell, with a generally Piercean type system that takes a semester for even the smartest undergraduates to learn, is not useful. Because one of the key ingredients of victory in a language conflict - as in any other standards war - is how many people already use the language.

This conflict is unstable. It exhibits the Matthew Effect. Since a language is a UI for programmers, a language that's hard to learn has a fatal and self-reinforcing disadvantage in this contest. There's no need to learn it, because it has no chance of winning the standards war. And thus it is not a good language.

Haskell actually is quite useful - in one context. It's an excellent teaching language for advanced students in a first-rate undergraduate CS program. Learning Haskell cannot help but teach you many challenging concepts, and it is inevitable that those who are both smart and dedicated will master these concepts. The rest will not. And thus the university system performs its principal function, the assignment of rank. If you venture to suggest that the same function could be performed, at two orders of magnitude less cost, by an IQ test and three weeks at Parris Island, you are probably some kind of a fascist.

Of course, the exponents of Haskell have an answer for this. They answer that since Haskell is so more elegant and powerful than the likes of Python, it can overcome all these problems.

I am certainly a fan of pure functional programming, which Haskell offers and Python does not. In theory, pure functional programming is actually simpler than imperative programming, because the former is a subset of the latter. However, the slight advantage of removing imperative features does not even begin to make up for the Eigerlike learning curve of Haskell, whose incredible and utterly-unwarranted complexity manifests itself in more ways than I can even begin to describe.

Let me describe one of these ways by examining one of the principal features of Haskell, which is what might be called "dynamic higher-order programming."

A language has "dynamic higher-order programming" when your programs can construct new functions dynamically at runtime. If you know a little about programming, this probably sounds esoteric, and for good reason. However, Haskell uses it all the time to do just about everything.

For example, in Haskell, when you write an add function - call it add() - that adds two integers a and b, the proper and approved way to do it is to first dynamically construct a function - it will have no name, but call it add_a(x) - that adds a to some argument x. Then you call add_a(b). This is called "currying" (after the mathematician Haskell Curry).

The motivation behind this bizarre obfuscation has always escaped me. Obviously it allows each function to have only a single argument, but it is pretty easy to write an add() function whose single argument is a pair (a b) - hardly a recondite data structure.

And it's not just that dynamic higher-order programming is overkill for add(). It's overkill for anything. For example, one of the most touted uses of higher-order-programming is parser generation - as performed by systems like Parsec in Haskell.

The idea of parser generation is, unsurprisingly, to generate a parser. A parser is a function whose input is a text file and whose output is a data structure. Obviously, parsing is the first stage in any process which involves converting source code into executable code, ie, compiling. No programming language, for example, can exist without a parser.

The trick is that if you write a parser just as a normal program, it tends to be extremely messy. A parser is really best described as a data structure called a grammar, and a grammar - though it may include pieces of code - is not code at all, but its own data structure.

In most programming environments which are not language-specific, there is a separate tool (called yacc in Unix) that automatically converts a grammar into a function written in a normal language. For example, yacc converts a yacc grammar, typically a .y file, into a C program, or .c file.

Now the way yacc works is a nasty process, because it involves generating source, and as a general rule it's always nasty to generate source. The Haskell model - in which the grammar is converted directly into a function, by a normal program in a language designed to build functions - seems much prettier.

And it is. However, there is only one problem - the function we build is the same every time. A language is a language. Its syntax is not dynamic. By definition, one parser function is sufficient for any program written in the language.

Therefore, we have no need for dynamic higher-order programming. All we need is static higher-order programming. For every program, the parser generator must be run once per grammar. Granted, you might want to load grammars dynamically at runtime, but you might want to load any function dynamically at runtime. The solution to this problem is not dynamic function construction - it is dynamic module loading.

(Note that static higher-order programming is not at all inconsistent with a system of first-class functions, like function pointers in C, closures in Lisp, etc. In a language with first-class functions, you can store functions as variables in normal data structures, but this does not imply the ability to construct new functions.)

In fact, "static higher-order programming" has another name. It's a specialty of the older, and much simpler, Lisp language family. In Lisp and its many relatives, "static higher-order programs" are called macros. Unsurprisingly, your average PL researcher looks at a macro pretty much the same way your average Parisian chef looks at an Outback Steakhouse.

Even forgetting the macros, it's pretty easy to see why you don't need dynamic higher-order programming. For example, a very common operation on functions is to compose them - you have f(x) and g(x), you make h(x), defined as f(g(x)). In the right formal model, a compose operator is really no different from addition. And once you have first-class functions - which are not absolutely necessary, but certainly useful - it seems like a trivial extension.

But is it what you, the programmer, want to do? Actually, no. It is simply bad programming style. Its only effect is to make your program less comprehensible.

Because in a language with first-class functions but without dynamic higher-order programming, all you need to do is build a data structure which is the ordered pair (f(x) g(x)), and define h(x) as an operation on this structure. This may be slightly more cumbersome for the programmer. At least, if one line of code counts as "slightly more cumbersome."

But it has a big benefit, which is that you're dealing with a data structure and you know it. Strictly from the perspective of user experience, it's much easier to debug data structures than to debug dynamic code. This is also the reason why self-modifying code is a bad idea, at least from a software-engineering perspective, and the bad idea of dynamic higher-order programming can be seen as a corollary of this well-known conclusion.

Of course, it may be slightly easier to optimize the result of dynamic code generation, because you can throw a generic runtime optimizer at it. But this comes back to the first problem, which is that, in practice, we only need static code generation. Whatever problem we are solving by constructing h(x), it is probably better solved by a macro, which would perform the same composition statically.

This entire problem space comes down to a single error in the metamathematical approach to computing, which is that the 1930s metamathematicians were fascinated by the fact that they could represent any data structure as a function. While this is true, to describe it as perverse is an insult to perverts.

Surely, if you were actually building a programming environment, rather than trying to express the fundamentals of mathematics, your main concern would be how to represent code as data, rather than the other way around. (Again, this is the Lisp approach.)

Defining data as dynamic higher-order functions worked badly when most computing was standalone. And it works even worse now that we have these things called networks. The problem is that a dynamic higher-order function is a sort of ethereal construct, a speck of four-dimensional pixie dust, and the idea of saving it to disk or sending it over the network does not make any particular sense.

The few people who actually try to use the metamathematical languages for real work struggle manfully to get around this - for example, at Jane Street Capital, an OCaml shop, they use a source preprocessor to compose Lisp-style versions of their types. A thing of beauty is a joy forever. A source preprocessor is not a thing of beauty.

Okay. Let's rise slightly above this rant, and survey the wreckage. The problem, again, is that taxpayer funds are being used to employ some of the world's most brilliant and energetic people to do work of no conceivable practical utility. Perhaps it may have some serendipitous benefit, but surely if the same people were working on relevant problems they would produce much more useful results.

How can such a thing happen? How did this disastrous patronage system come to exist? Was it anyone's evil plot?

Not at all. It's just the effect of treating something that isn't a science as if it was a science. Confucius, if I may quote my namesake's teacher, said that if he were given a chance to reform the state, his first act would be to make sure all things had their proper names.

I think the world could use a charity that funds creative programming. The software systems that people use today - don't even start me on "Web 2.0" - are awful and ancient, and hardly anyone has any reasonable plan to improve them. Free-software programmers are not at all bad at supporting themselves, but nothing like Xerox PARC exists today, and it should.

But the US Government is not a charity, and creative programming is not "computer science." And the result of treating these things as if they were things that they aren't is abominable. It's the morass of busywork, waste and fraud that is CS research today. By far the simplest treatment for this mess is to just abolish it.

Because anyone who's not involved in CS research treats the products of this endeavor as if they were smallpox-infected blankets. Even when it is clearly - in my opinion - good, it winds up ignored. Because of the inescapable grant-related propaganda, it's impossible to tell what's good and what's not.

For example, recently some of the same people involved in the PL research I so dislike built a language called Cyclone, which adds some very useful safety features to C. There are still zillions of free-software projects written in C, and probably most of them could benefit from upgrading to Cyclone. But the thing has the academic kiss of death on it, and no one will touch it. The mailing list is virtually empty.

This is not just prejudice. It is rational mistrust. Academics, as we've seen, have no incentive to build software that's actually relevant, and every incentive to build software that appears to be relevant. They have every incentive to overpromote, and no incentive at all to build an actual user base. In fact, an actual user base is an enormous drag for a CS researcher, because it demands actual support, which does not advance the researcher's career at all. Also, because of the nefarious Bayh-Dole act, CS researchers are frequently armwrestled into patenting their work, which of course they have no incentive to disclose. If the rest of these factors didn't give you a reason not to use academic software, this certainly would.

The result is a world of Potemkin software which appears to be enormously useful, even revolutionary. In reality it is unusable. The researchers are some of the smartest people in the world, and surely some of what they're doing has some merit. But it is almost impossible to figure out what's wheat and what's chaff, and most sensible people just don't come near it.

For example, maybe seven years ago I was in a design meeting at a small company which was at the time the unquestioned innovation leader in its field, mobile Web browsing. (I admit that this is a pathetic field to be an "innovation leader" in, and in fact most of our "innovations" turned out to be worthless. I'm just describing the perception here, not the reality.)

The conversation turned to something and one employee, Patrick, who'd been recently poached from Nokia and didn't know the vibe, said "maybe we could research that."

Bruce, the CTO, promptly said: "if Alain [the CEO] heard you use that word, he'd rip off your head and spit down your neck."

I said, "I take back everything bad I ever said about Alain."

148 Comments:

Blogger Weavejester said...

Concerning currying, you wrote:

The motivation behind this bizarre obfuscation has always escaped me. Obviously it allows each function to have only a single argument, but it is pretty easy to write an add() function whose single argument is a pair (a b) - hardly a recondite data structure.

I've always found curried functions to be a rather useful piece of functionality. It's true that you can use tuples instead, but I find that they tend to reduce readability and increase verboseness.

For instance, let's assume we want a function that increments every value in a list by a certain amount, and returns the result. Without using currying, we might create something like this:

inc (n, xs) = map (\x -> x + n) xs

Using currying:

inc n = map (+ n)

To my mind the latter is both more concise, and more understandable, as it does away with superfluous noise.

Another nice function I saw recently was one that groups items in a list into a bag-like structure:

bag = map (head &&& length) . group . sort

Without currying and composition, it becomes:

bag xs = map (\g -> (head g, length g)) (group (sort xs))

Again, I prefer the curried version, as it does away with the superfluous noise that makes it harder to understand what the function does.

August 2, 2007 8:48 AM  
Blogger Booklegger said...

If you venture to suggest that the same function could be performed, at two orders of magnitude less cost, by an IQ test and three weeks at Parris Island, you are probably some kind of a fascist.

Never before in my life have I ever been happier to be called a fascist.

Meanwhile, you can explain the type system of Python to a retarded nine-year-old in five minutes. I exaggerate, slightly.

Ah, but what is clearly needed is a type system designed by that same retared nine-year-old.


Oh, and by way of reference: Now that I've beaten blogger/gmail/etc. into submission, where you saw the commenter Christopher before, you should now see Booklegger, like you were supposed to from the beginning.

August 2, 2007 12:06 PM  
Blogger Durian said...

You might enjoy this video with one of Haskell's creators.

August 2, 2007 6:03 PM  
Blogger mtraven said...

Since I'm giving you grief elsewhere, let me say that as a the semi-proud holder of a graduate degree in a CS-related but not CS department, I agree with you about 80%. That is, you are completely right about a good deal of CS research, but not everything that goes on under the banner of CS is formalist symbol soup. Some people build real systems, design real algorithms, solve real problems. But they are in perpetual danger of being sucked into the undertow of boringness. Something like this seems to have happened with the Semantic Web, a good idea that has failed to take off because it's been latched onto by every half-assed logician in the Western World.

August 2, 2007 9:17 PM  
Blogger Mencius Moldbug said...

weavejester,

Thanks for your comment! Of course everything you say is true. Our disagreement is purely aesthetic.

From an aesthetic basis, however, I think these examples are an excellent example of how the incentives of academia led the designers of Haskell down the wrong path.

Haskell is designed to look very pretty and simple. In other words, it looks easy to learn and use. In practice, however, everyone who tries to learn it seems to find it extremely complex and challenging.

I don't think this is a coincidence. I think it's the result of the normal incentive structure of CS research. As we saw, CS researchers have strong incentives to make their work look useful, but no incentives to ensure it is actually used.

Perhaps an even better example than currying is the syntax of Haskell. Whether in ASCII or otherwise, Haskell always looks pretty on the page. For the purpose of making a pretty algorithm look pretty on paper, you really can't beat Haskell.

But if you read the Haskell Report, you realize that this is achieved by rules for - for example - significant whitespace, that make X.500 look straightforward. I suspect that most people who learn Haskell learn this rules not by reading the spec, but by cutting and pasting. I think they are too complex to sink in through anything but osmosis.

Certainly this is the style of every attempt to teach Haskell that I've ever seen. It is all done on a tutorial basis. You learn by doing. Whereas when you see a language like Python, or even a language like C, taught, ordinary programmers tend to learn from documents - K&R being the great classic - that are hardly more than annotated versions of the reference manual. If you tried to teach Haskell this way half the class would die of a brain aneurysm.

So, once you pay the steep conceptual cost of understanding currying, yes, it can make some things that would otherwise look slightly more complex, look slightly simpler. But a bit of syntactic sugar applied to tuples might work just as well. And it's certainly a lot easier for the average programmer to follow.

What really sucks is that there are features in Haskell and languages like it, like what a Lisper would call "destructuring bind" (pattern matching), that you really don't see done very well elsewhere. (There's nothing wrong with Lisp except that it's 50 years old. But this is pretty much enough.)

August 3, 2007 12:32 PM  
Blogger Mencius Moldbug said...

mtraven,

Again, please feel free to give me as much grief as you want. I can take it just as well as I can dish it out.

I don't think I gave the impression that everything called "CS research" is useless. "Perpetual danger" sounds about right to me.

If there was ever anything besides half-assed logicians behind the Semantic Web, it's news to me.

Perhaps the idea you mean is that the Web should be a distributed programming environment rather than just a way to deliver documents. True, but it's sort of too late to fix that. It's like expecting MS-DOS to magically morph into Unix.

If you built a global namespace from scratch you would not reuse names (no mutable resources), and the namespace would be rooted in a secure identity model. Refactoring the Web to include these points is sort of like redesigning a horse so that it's a motorcycle.

August 3, 2007 12:44 PM  
Blogger Weavejester said...

Mencius,

I don't think Haskell was designed to be particularly easy to use! But nor do I think that is necessarily a bad thing. You say that the designers of Haskell took the language down the wrong path; but I don't think popularity was ever their goal.

Regarding Haskell's relative complexity, I tend to agree that simple syntax is a pretty important factor for any language. However, most, if not all, of Haskell's syntactical complexities are just sugar to reduce typing. You can reduce Haskell to, if memory serves, 2 typing constructs and 3 declaration constructs. The do-notation, pattern matching, and whatever else aren't strictly needed - but they do make the code a lot easier on the eyes.

Regarding currying; in Haskell it's no more difficult in practise than partial function application in any other language, and far from the most complex thing you'll come across in Haskell.

I agree that Haskell is a tough language to get to grips with, and that it is unlikely to gain the same following that a language like Python or Java enjoys. However, I don't think that designing languages around the lowest common denominator is always the best idea. Sometimes keeping things simple is the wrong way to go.

However, a "Python-esque" functional language would be a nice thing to see :)

August 6, 2007 2:49 AM  
Blogger Mencius Moldbug said...

WJ,

If you conceive Haskell as an exercise in higher mathematics, no, there is nothing wrong with it.

The problem is that it has been promoted as a programming language, and not just that but the state of the art, approved by experts, ideal programming language.

Since what most people mean by a programming language is a user interface for programmers, there is an element of spin in this, which has not the best odor when public funds are involved.

The practical result is, as mentioned, that people outside academia do not trust anything that comes out of the machine. Which is very unfortunate considering the amount of talent within it, and the fact that the products that emerge - such as Haskell - contain many useful ideas which at the very least are worth borrowing.

I, too, would like to see a Python of functional programming :-)

The trouble is that when, like the designers of Haskell, you work as if you had no complexity budget, you never really learn how simple the system can be made.

Perhaps a good FP language has to be as difficult to learn and use as Haskell is. Perhaps the complexity is necessary. Perhaps it isn't. Since it's clear that producing the Python of FP was not on the Haskell designers' minds, Haskell is hardly evidence that they tried and failed.

August 6, 2007 7:44 PM  
Blogger Weavejester said...

Mencius,

Yes, Haskell is promoted as a programming language (perhaps because that's what it is), but I'm not sure anyone has ever pretended that it is an easy language to get to grips with.

Haskell does have the scent of academia about it, if only because it's essentially just lambda calculus with sugar on the top, and there are a lot of concepts in the language which are rarely found outside papers on functional programming theory.

But that's precisely Haskell's strength. Haskell's complexity and relative difficulty make it an exceedingly powerful language, as you can abstract programming concepts to an extremely high degree. Removing Haskell's complexity would remove its advantage - Haskell isn't Python, and I don't think all programming languages need to emulate Python's ease of use.

FP isn't hard, but Haskell employs some rather exotic concepts that you won't often find, even in other functional languages. Removing these concepts would make Haskell easier to learn, but that would rob Haskell of the very thing that makes it stand out.

I get the impression the designers of Haskell are more interested in furthering the art programming than appealing to the masses, which is not such a bad thing. If we were always focused on ease of use, we'd miss the advantages that languages like Haskell can offer.

August 7, 2007 2:25 AM  
Blogger Mencius Moldbug said...

WJ,

I don't disagree with any of these sentiments - my only problem is that I rarely find them so clearly and honestly expressed.

In practice Haskell is a great teaching language for an intensive, top-rank undergraduate programming curriculum. It stretches the brain and teases it in all kinds of interesting ways. What it is not is a good user interface for programming. But one very rarely finds it promoted in these terms. One very often sees it promoted as the language of the future. At least this is my experience.

The merit of conceptual simplicity goes far beyond the ease with which programmers who are not first-rate, or who need to learn the language fast, can learn it. It's a matter of the ease with which one coder can understand another's work. Systems that rely on concepts which are more straightforward tend to win in this category, even when the programmers are first-rate.

For example, many of the more abstruse features of C++ are counterproductive for just this reason. Often an equivalent program restricted to simpler concepts may consume more lines of code. But it is often much easier to both write and read this larger, simpler version. Typing and scanning are not the primary bottlenecks in the human process of writing and reading code, respectively.

Also, one of the tropes one sees with Haskell in specific and with FP in general is that those who demonstrate and promote it seem primarily concerned with very intricate algorithms, such as are rarely encountered in any programming task. Even in this case I am not convinced that dynamic construction of functions is ever more straightforward than static construction, for the reasons laid out in the article.

Unfortunately my view is more easily demonstrated by example than by rhetoric, which is why I should probably spend more time coding and less blogging :-)

August 8, 2007 6:03 PM  
Blogger Weavejester said...

Mencius,

Haskell, not a good interface for programming? I have to disagree! It may be complex and difficult to get to grips with, but then so is, for instance, Vi or EMACS. Many would argue that the benefits of these editors outweigh their relative complexity; indeed, their complexity arises from their extensive functionality, so to an extent, they are advantageous to use because of their complexity.

Haskell is not so different in this regard. All of the monads, arrows, currying and so forth aren't in there for show. They provide powerful abstractions that other languages do not have. This is important, because it means that in Haskell, you can implement solutions that are impractical, or even impossible, to implement in other languages.

Haskell is difficult because it pushes programmers toward a highly abstract way of thinking about a problem. Rather than solve the problem at hand, it encourages you to generalize your solution, to solve the problems behind the problem.

Haskell isn't perfect; but criticising it for its complexity is, I think, missing the point somewhat. Removing complexity from Haskell generally means removing capability. Haskell may or may not be the language of the future, but it is one of the most powerful programming languages in use today.

August 9, 2007 2:19 PM  
Anonymous Anonymous said...

This post has been removed by a blog administrator.

August 16, 2007 7:35 PM  
Anonymous Anonymous said...

Nice rebuttals of this post at news.ycombinator.com

August 17, 2007 8:56 AM  
Blogger Mencius Moldbug said...

Indeed - definitely follow anon's link if you are interested in a discussion.

Weavejester - Haskell is certainly a good UI for a certain set of (extremely intelligent and well-trained) users and a certain set of (extremely intricate and algorithmic) problems.

The tragedy is that this confines FP to a tiny academic ghetto, where I'm sure both of us agree it does not belong. Haskell is a bad UI as a general-purpose functional programming language, for all the reasons stated above.

And I still think it is possible to build an easy-to-learn language which is almost as good as Haskell for the kinds of showpiece problems that Haskell tends to be demonstrated on. The proof, however, is in the pudding - so I should probably shut up and code!

August 17, 2007 12:52 PM  
Blogger Shannon -jj Behrens said...

I'm a wannabe language designer. I've written three articles on Haskell, but I absolutely adore Python. I've been thinking of going back to get my Ph.D so that I can try to move the industry forward. I could never figure out why programming language research had to be so dang complex or mathematized. A lot of your points matched the points I made in one of my articles:

http://www.linuxjournal.com/article/8850

especially in the "What's Up with All the Math?" section.

Thank you so much for setting me straight! Now I know that hanging out with Guido is probably more useful than trying to understand all those crazy research papers!

October 15, 2007 2:17 AM  
Anonymous Anonymous said...

"Frankly, these men are heroes. They are literally warriors of God."

Literally? Really? Tell us more.

October 15, 2007 8:21 PM  
Anonymous Anonymous said...

"van Rossum, who as far as I know dropped out of kindergarten, wanted to build a language that people would find useful"

Actually, he got an MS from univ amsterdam, worked at several research institutes for quite a while, and designed this language as a successor to the ABC language, which again, believe it or not, was designed at CWI, an academic institute.

CS research isn't designed to be immediately useful. Nor is it necessary that more than 1% of it actually pans out and affects the real world. The research community is basically many smart people going about doing what they find interesting and exploring new ideas. Some of them are smarter/luckier than others and manage to do stuff which changes the world for the good. Even then, they built upon previous research that was "impractical" or "academic".

November 9, 2007 1:04 PM  
Anonymous K said...

At least it's nice to see that you yourself realize that the smart people such as Stroustrup, Wall, Brin or Torvalds would not agree with your statements.
Which puts your paper in the "some bitter weltschmertz by someone who hasn't himself yet achieved much to boast about" category.

From your text one might read out that you don't like theoretical CS and Math, but there are no viable arguments that would support the idea of their economical valuelessness (especially in comparison to other disciplines).
You say you find the work of MyCoolSoftdevHouseNextDoor more valuable than the work of the researchers trying to break Netflix because Python is nice and Haskell is yuckyyucky-difficult? Your logic is flawed here, make a note.

Some examples of how you don't understand PL don't prove nor even illustrate that CS and math are useless and "creative programming" is useful.

Finally, you forget that the choice to do "creative programming" and "academic career" are made by people, not by the state that funds them. It is, in fact, much easier to do creative programmer while being a grant-funded researcher than while working on the "salt mines" of commercial software development.

January 16, 2008 9:02 AM  
Anonymous peapod said...

Thanks for your in-depth analysis - its put the nail on the head as to why I just accepted a consulting job after doing a CS PhD (mainly that I want a job that makes a direct and guaranteed difference to the world).

However, I was wondering: You say that CS 'sucks' many young people in, but you don't mention much about the alternatives available. Maybe you could write a post detailing some other jobs that you think still feel interesting? I've noticed that many academics scorn work outside, without real experience. Maybe you could show them the light?

January 16, 2008 3:15 PM  
Blogger TaSK said...

As an ex professor in Computer Science I am sad to say that your description of CS is fairly accurate. At my department the bureaucrats had all the power and the creative programmers was departing one by one due to lack of funding.

I was fed up an Type Theory a decade a go. Not to mention process algebras.

Oh well - my title (Dr.) makes my private letterhead looks nice.

January 16, 2008 4:32 PM  
Blogger JeanHuguesRobert said...

As a Ruby fan, a disgusted Javascript practitioner, a Forth admirer, an early Smalltalk addict, a former Prolog user, a deceived C++ coder, a C nostalgic, a 8086, Z80 and 6502 optimizer, and a once language designer I must confirm that...

CS is a fraud.

Congrats.

January 16, 2008 6:36 PM  
Blogger Daniel Ehrenberg said...

I disagree with your assertion that computational mathematics and practical/creative programming aren't very closely related. Recently, I've been trying to create a diff between two XML files for a program I'm working on. This is a useful thing with a semi-creative application here (creating document diffs documents without exposing the user to formatting internals). It's not an entirely new idea, and I was able to find tons of useful information in academic papers. There is some open-source software in this area, but those are mostly transcriptions of the algorithms that took so long and so much thought to develop.

January 16, 2008 7:14 PM  
Blogger David Levy said...

It really is depressing that there is such a disconnect between grant processes and interesting/cool/useful work. I'd love to see Governments creating bodies to look for examples of cool work, as voted by communities and pass out rewards. It is nice however seeing more "spin-off" work coming out of the projects I've been working on. There seems to be more tolerance from the people above to go invent something really cool as long as it's useful within your project and it doesn't suck too much of your time. I think sometimes managers are also recognising that more publicity is good publicity, and if you happen to create a fantastic new nugget of open source goodness on your way to creating your intended goal, well, more the merrier;-)

January 16, 2008 7:55 PM  
Blogger codeslinger said...

Guy Steele may not have "Programming Language Researcher" on his business cards but I think its fair to say that a lot of his work was in fact focused in that area. He did co-create both Scheme and Java, after all.

January 16, 2008 8:20 PM  
Blogger David Broderick said...

Of course, in a sense, anything you do with in a computer can be described as "mathematics." The point is not whether or not programming is math. The point is what notation is most effective for expressing programs.

That's not fair. Programming in its purest form is math, but average programming is much less. Or in other words, our goal is to make it math.

The bigger point is that, unlike human languages where Sapir–Whorf plays a middling role, in programming languages the effect is monstrous. Notation essentially defines what you can do. And since we can't do much, I blame the notation.

I happen to prefer the ASCII-based family of notations used by working programmers, which are clearly effective for encoding the transformations of state which all programs, functional or imperative, typed or unsafe, express. I don't see why anyone whose goal is to design, explain, or specify a programming language should be using any other notation than that of the language itself, and I don't see why any language needs any non-ASCII notation.

Because without changing that, we won't get anywhere. Try to do a complex budget estimation or an accounting system in a text editor. That's ASCII notation, so what's the problem? The problem is that it's unmanageable. "Assets of Five Hundred Dollars equals Liabilities of Three Hundred plus OE of Two Hundred." I can't stand ASCII notation. (And don't get me wrong, viewing this text in a graphical form is even worse.)

> A programming language is a user interface for programmers

Currently, sure. But it shouldn't be. A programming language should be the codification of a problem set. The UI is anything you use to manage that codification. 1 + 1 as an AST is the programming language (as it should be). The UI is how you view it and change it to 1 + 2.

Just so you know that all is not lost, I had an idea for a new approach to software construction, hired grad students and worked on it non-stop for over ten years. Have no fear, people will find a way.

January 17, 2008 12:41 AM  
Anonymous Anonymous said...

My experience as a masters student in Mathematics corroborates what you said about CS research.

In graph theory, you:
1. just define a new problem,
2. solve a few theorems and write some software to handle the cases that can't be solved analytically,
3. publish,
4. rinse and repeat.

It was unethical of me to write the rubbish I did to get funding. Of course, "everyone does it", but it makes me sick and makes me wonder how much the piece of paper I got at the end is really worth.

(I wish I could point you at my thesis, but I fear that it might reflect badly on my masters supervisor who is a good man, even if the field is rotten.)

January 17, 2008 2:35 AM  
Anonymous Anonymous said...

"They are literally warriors of God."

So all the mentioned people are religious and carry weapons to kill other people?

I have my doubts.

January 17, 2008 8:44 AM  
Anonymous Anonymous said...

You seem to have misunderstood PCC. It's exactly what the name says: Proof Carrying Code. Code (source code, machine code, or some other form) that comes with a proof of some property. When you get the code you can verify (mechanically) that the proof is actually a proof of the property that it claims (e.g., never making a buffer overflow).
If you do this for source code you have to trust that the compiler you then use on the source to make it executable doesn't make any mistakes that can ruin the property. If you do it on the machine code you don't have to trust the compiler, since the proof is about the executable itself.

January 17, 2008 9:25 AM  
Anonymous sclv said...

The utility of something like parsec is that it makes it easy to parse a complex grammar precisely like, e.g., the haskell grammer, where operator precedence can be defined on-the-fly.

Furthermore, parsec doesn't have to return a boring parse-tree, but any given portion of a parser can return anything, including, for example, another parser, or a higher order function that composes them. See, e.g., Okasaki's classing (and thoroughly readable) "Even Higher-Order Functions for Parsing or Why Would Anyone Ever Want To Use a Sixth-Order Function?": http://citeseer.ist.psu.edu/163183.html

January 17, 2008 5:13 PM  
Anonymous Anonymous said...

If you do this for source code you have to trust that the compiler you then use on the source to make it executable doesn't make any mistakes that can ruin the property. If you do it on the machine code you don't have to trust the compiler, since the proof is about the executable itself.

You still have to trust your CPU - after all, it translates binary into internal microcodes. You have to trust your OS, because it modified binary before loading it to memory, resolving library references/jumps/whetever is needed on particular OS/architecture. I don't understand why you assume infallibility of OS and CPU, but distrust the compiler in particular?

What about jvm bytecode? Will you trust java binary if it is proven to be ok? Is Hotspot compiler,OS, CPU or all of it?

January 26, 2008 6:47 AM  
Blogger Mike Kramlich / ZodLogic said...

great post. well written & argued. You nailed a lot of things I've thought or suspected about academia and particularly CS academia.

My best short description of it is a charity or country club for arrogant pretentious types from pampered upbringings who want to improve their resume while putting off having to do real work as long as possible, ideally forever. I don't think this generalization accurately describes ALL people in that space, of course. But in my experience this is the rule rather than the exception. I too have thought that there is way more innovative AND practical stuff coming out of companies, cafes, home offices, garages, etc. rather than universities. All "real" research can be done today by a guy with a brain and a computer to hack on, and some way to communicate, collaborate or share his work or ideas with others. Enter the Internet.

April 1, 2008 12:38 PM  
Anonymous Anonymous said...

A language has "dynamic higher-order programming" when your programs can construct new functions dynamically at runtime. If you know a little about programming, this probably sounds esoteric, and for good reason.
Actually, this is also one of the central features of Python.
E.g.:

def add(a,b):
def add_a(b):
return a+b
return add_a(b)

April 2, 2008 1:30 AM  
Anonymous Anonymous said...

Argh, blogger killed the indenting.
Let's try this again ...
def add(a,b):
__def add_a(c):
____return a+c
__return add_a(b)

Run a s/_/ /g on this before parsing.

April 2, 2008 1:36 AM  
Anonymous Eijiro Sumii said...

I have come to know this post via another blog (written in Japanese). First of all, I am one of what you call bureaucrats:-) and used to be a student of Benjamin Pierce, so I may be biased, but I will try to be as logical and subjective as possible in this comment. Second of all, I am not a native English speaker (nor a good writer in any language), so please forgive my bad writing. Third, many of my comments below may just be repeating similar points that are already made by somebody else, but I think it would anyway be useful to have them at one place. Fourth, I have not read other posts by you and do not know who you are, so please excuse me if I am missing any context of your post.

Now, your opinion is interesting and the topic is very important, but I am afraid there are too many logical leaps and factual errors that weaken the whole argument.

> One: Guy Steele is a system software designer, not a PL researcher. [...]

What is your definition of system software designers and PL researchers? You seem to be defining that one is a system software designer if he or she has already done something good in your opinion, and a PL researcher otherwise. That is a tautology and does not make a good argument.

> I'm sure some of the above individuals - perhaps even most - were, at some time in their long and productive careers, funded by various grants or other sweetheart deals with the State. For that matter, I'm sure few if any of them would endorse the extreme opinions I express below.

You seem to admit that few, if any, of them would agree to your opinion, but why is funding the only possible reason? They might also disagree with you for other reasons, e.g., because they think CS research is useful.

> Any activity which is not obviously productive can be described as "research."

This may or may not be true, but even if it is true, that does not imply CS research is not productive nor the name is fraudulent. ("X can be called A. Y is called A. Therefore Y is X"?) Here you seem to be starting from the assumption that CS research is fraudulent and falling into tautology again.

> "The only workable system for generating interesting, cool, and relevant software is well-known. [...]"

Do you think your heroes developed "interesting, cool and relevant software" out of thin air on their own? Just for one example, did Guy Steele invent Scheme without knowing lambda-calculus? And when was lambda-calculus studied first? This is just an example, and most good research is like that! (Or, if you believe the present CS research is worse than research at the time of Church---which may or may not be true---you need to argue for that.)

> For example, the most interesting new software projects I know of are revision control systems, such as darcs, Monotone, Mercurial, etc. [...]

Of course those projects are great, but you seem to be confusing academic research (e.g., physics) and practical development (e.g., construction). I think this is the source of most of the "problems" your are concerned with. (Or, again, if you think only the present CS research is wrong and other academic research is fine, you need evidence to support that.)

> Unfortunately, most of the really interesting, cool, and relevant propositions in computational mathematics were proved before 1960

Again, are you sure you could tell the value of those results if you lived then?

> As we'll see, managing math and programming as if they were one field has produced disastrous results. [...] I recall seeing some paper once in which someone had created a mathematical description of C. (I forget whether or not this included the preprocessor.) As an achievement, this is somewhat like building a full-size model of the Eiffel Tower out of tongue depressors.

In fact, "mathematical description of C" is far from "Eiffel Tower out of tongue depressors." The former _is_ useful (or even necessary) for formal verification of C programs and compilers. You seem to be against formal methods at all, but then you need to make more arguments why they are wrong. To me (and many other people), most software of today is too buggy, and using mathematics (or logics, to be more precise) for programming seems to be a natural way to go _in the long term_ (which is most academic research is about).

> The whole idea of proof-carrying code is that it's a binary format for executable code whose correctness can be automatically verified. The term cannot imply a source format, because a source format whose correctness can be automatically verified is best known as a "type-safe programming language."

This is a _grave_ factual error! (Please forgive my direct and explicit words, but this alone could be a sign of total ignorance of the field.) Proof carrying code is not only about type safety, nor only for binary format.

> If you want to support multiple source languages, pick one which covers the entire feature space of the binary verifier, and compile the others to it instead.

In short, the language "which covers the entire feature space of the binary verifier" is called proof carrying code.

> If all this fails and you really need secure binaries, use a cryptographic signing service.

Cryptographic signing may or may not prevent malware and viruses (depending on whether the social system works or not), but it is not effective against unintentional bugs in legitimate software (which can be exploited by the attackers). Have you indeed read "Panel: The Future of Proof-Carrying Code" (which you cited)? If you have, why did you ignore natural counter-arguments like this in your post?

> You can model computing as metamathematics, of course. You can model computing as Tinkertoys. The whole point of Church-Turing equivalence is that pretty much any recursive model you can build is an equivalent description of computing.

This is technically incorrect. Very few translations between models are fully abstract, i.e., equivalence preserving. More generally, many important properties of programs (such as their equivalence!) are not preserved by translations into Turing machines. That is one of the main reasons why we do not (in fact, cannot) study Turing machines only.

> Presumably Professor Pierce is now working on "Further Reading in Types and Programming Languages," or "Extremely Advanced Topics in Types and Programming Languages."

Just for your information, Benjamin publicly says he is tired of writing books (after writing TAPL - he only _edited_ ATTAPL) and will not write another, at least for a while.:-)

I would refrain from commenting on the rest of your post (about Haskell, Python, Cyclone, ...) because I am not a heavy user of these languages nor an enthusiastic advocate of purely functional programming. (I mainly use OCaml for both academic and non-academic programming, and I generally find it at least as useful as C.)

Now, all of these said, I share your concern on the discrepancy (or even a conflict, IMHO) between academic PL research and practical software development, and am very interested in arguments like yours. I wish if it were more logical and accurate, so that we can be more constructive and productive!

April 22, 2008 7:49 PM  
Anonymous Eijiro Sumii said...

> as logical and subjective as possible

Sorry, I mean "objective", of course... (My poor English shows already!)

April 22, 2008 7:55 PM  
Anonymous Anonymous said...

My reasons why you suck, which are
(i) the author is a fuckgrabbing dickstuffer; and
(ii) the author needs to kick himself in the balls immediately.

May 16, 2008 4:46 PM  
Anonymous Anonymous said...

I suspect this guy is a moron and doesn't have a clue what he is talking about. However, I feel very frustrated for not being able to articulate the exact reasons of why he is a moron and how big a moron he is. Also, I didn't read that whole piece of crap.

May 16, 2008 4:49 PM  
Anonymous Anonymous said...

For one thing, maybe he could try actually reading a doctoral thesis in any field of computer science before spouting bullshit about whether or not they employ the scientific method.
Maybe instead of limiting the papers he reads to technical discussions abot programming languages that he's clearly not equipped to understand anyway, he could check out areas related to image processing, or data compression, where the existance of pretty tables should at least be able to get through to him that proper experimentation has been involved.

Also, Python got list comprehensions, a pretty major feature, from Haskell, thus validating the flow of ideas from research lanugages to pragmatic languages, and probably rendering most of his ranting moot.
I didn't read the whole thing either.

May 16, 2008 5:18 PM  
Anonymous Anonymous said...

Have you read your SICP today? It might just be what you need.

May 16, 2008 6:19 PM  
Blogger bpgergo said...

good points, sometimes a little harsh, like
http://www.google.com/search?q=Ousterhout%27s+%22intellectual+masturbation%22

May 31, 2008 10:12 AM  
Anonymous Anonymous said...

tibia money tibia gold tibia item runescape accounts buy runescape accounts runescape money runescape gold runescape gp runescape power leveling runescape powerleveling cheap rs2 powerleveling runescape equipment buy rs equipment runescape runes cheap rs2 runes runescape logs cheap rs2 logs runescape items buy runescape items runescape quest point rs2 quest point cheap runescape questpoint runescape gold runescape items runescape power leveling runescape money runescape gold buy runescape gold buy runescape money runescape items runescape accounts runescape gp runescape accounts runescape money runescape power leveling runescape powerleveling tibia gold dofus kamas buy dofus kamas wow power leveling wow powerleveling runescape questpoint rs2 questpoint Warcraft PowerLeveling Warcraft Power Leveling World of Warcraft PowerLeveling World of Warcraft Power Leveling Hellgate money Hellgate gold buy runescape logs buy rs2 items cheap runescape items Hellgate London gold Guild Wars Gold buy Guild Wars Gold runescape items rs2 accounts cheap rs2 equipments lotro gold buy lotro gold buy runescape money buy runescape gold buy runescape runes lotro gold buy lotro gold runescape money runescape gold cheap rs2 powerleveling eve isk eve online isk buy runescape power leveling rs2 power leveling tibia gold tibia item runescape accounts Fiesta Silver Fiesta Gold SilkRoad Gold buy SilkRoad Gold Scions of Fate Gold Hellgate Palladium Hellgate London Palladium SOF Gold Age Of Conan Gold AOC Gold ArchLord gold tibia money tibia gold runescape accounts runescape gold cheap rs2 powerleveling buy ArchLord gold DDO Plat Dungeons and Dragons Online Plat

September 3, 2008 7:19 PM  
Anonymous Anonymous said...

ffxi gil
Maple Story Mesos
wow gold
wow gold

buy Warhammer gold
Warhammer gold
buy Warhammer gold
Warhammer gold


wow gold
wow gold
age of conan gold
aoc gold
age conan gold
age of conan power leveling
aoc power leveling
age conan gold
age of conan gold
aoc gold
aoc power leveling

Runescape Money
Runescape Gold
Runescape Items
Runescape Money
Runescape Gold
Runescape Power leveling
Runescape Money
Runescape Gold
Runescape gold
runescape money
Runescape Money
Runescape
Runescape Money
Runescape Power leveling
Runescape Items
runescape money
money runescape
Runescape Gold
age of conan gold
age conan gold
aoc gold
age of conan power leveling
aoc power leveling
aoc leveling

archlord gold
anarchy online credits
cabal alz
city of heroes influence
coh influence
city of heroes
city of villains infamy
cov infamy
city of villains
dofus kamas
kamas dofus
dofus
daoc gold
daoc plat
eve isk
eve online isk
eve online
everquest 2 gold
eq2 plat
Ever Quest 2
final fantasy xi gil
Final Fantasy XI
buy ffxi gil
final fantasy 11 cheap gil
gaia online gold
gaia gold
guild wars gold
gw gold
guild wars
hellgate london palladium
Hellgate London
dofus kamas
dofus gold
dofus
dofus kamas
dofus

wow gold
world of warcraft gold
buy wow gold
cheap wow gold
wow power leveling
eq plat
EverQuest gold
Maple Story Mesos
MapleStory mesos
Maple Story meso
Maple Story Meso
maple Story Mesos
MapleStory mesos
Final Fantasy XI gil
ffxi gil
buy ffxi gil
dofus kamas
kamas dofus
lotro gold
lotr gold
lord of the ring gold
Lineage adena
Lineage 1 adena
Silkroad gold
buy silkroad gold
flyff penya
buy flyff gold
flyff money
eve online isk
eve isk
2moons dil
2moons gold
eq2 plat
EverQuest 2 gold
EverQuest 2 plat
Runescape gold
Runescape money

maplestory Mesos
MapleStory meso
maple story
Maple Story Mesos
maplestory Mesos
MapleStory meso
Maple Story
Lineage adena
Lineage 1 adena
Lineage 1
lotro gold
lotr gold
The Lord Of The Ring
lord of the ring gold
ge money
granado espada vis
granado espada gold
Granado Espada

data processing service
data processing
data process
data processing service
data processing
data process
data processing service
data processing
data process

dofus kamas
kamas dofus
buy kamas
dofus kamas
kamas dofus
buy kamas
dofus kamas
kamas dofus
buy kamas
dofus kamas
kamas dofus
buy kamas
dofus kamas
kamas dofus
buy kamas

October 22, 2008 4:39 AM  
Anonymous Anonymous said...

wow gold
wow leveling
hero online gold
last chaos gold
ragnarok zeny
ro zeny
rappelz rupee
rappelz gold
Silkroad gold
buy silkroad gold
SWG Credits
star wars galaxies credits
tales of pirates gold
age of conan

age of conan gold
aoc gold
aoc power leveling
anarchy online credits
anarchy online credit
archlord gold
buy archlord gold
City of Heroes Infamy
coh influence
City of Villains infamy
cov infamy
Gaia Online Gold
gaia gold

ge money
granado espada vis
granado espada gold
hellgate london palladium
Hero online gold
buy hero gold
Last Chaos Gold
buy Last Chaos Gold
gw gold
Guild Wars Gold
Lineage 2 adena
buy lineage 2 adena
Tales of Pirates Gold
Tales Of Pirates Online
rappelz rupee
rappelz gold
Hellgate London
hellgate london palladium
Second Life Linden
second life money
Vanguard money
Buy Vanguard Gold
Tabula Rasa Credit
tabula rasa credits

October 22, 2008 4:39 AM  
Anonymous Anonymous said...

So um where is all the rest of the old Doom development stuff? DON'T HOLD OUT ON US MAN.

Flash Drive| SUB ContractingFlash Card| Memory Module| Memory Card|
Smt Electronic Manufacturing|Electronics Contract Manufacturing| Electronic Contract Manufacturing Services| Subcontract Pcb Assembly

November 5, 2008 12:52 AM  
Anonymous Anonymous said...

ssssssssssssssss

November 5, 2008 12:53 AM  
Anonymous Anonymous said...

[url=http://www.sexy688.com]情趣用品[/url]
[url=http://www.ing199.net]情趣用品[/url]
[url=http://www.show688.net]情趣用品[/url]
[url=http://www.show688.net/shop]情趣用品[/url]
[url=http://www.sexy688.com]情趣[/url]
[url=http://www.ing199.net]情趣[/url]
[url=http://www.show688.net]情趣[/url]
[url=http://www.show688.net/shop]情趣[/url]
[url=http://www.ing199.net/category.php?id=3]按摩棒[/url]
[url=http://www.ing199.net/category.php?id=9]跳蛋[/url]
[url=http://www.ing199.net/category.php?id=13]充氣娃娃[/url]
[url=http://120371.258ps.com/]愛情公寓[/url]
[url=http://120372.258rr.com/]情色[/url]
[url=http://120373.258rv.com/]舊情人[/url]
[url=http://120374.258s.com/]情色貼圖[/url]
[url=http://120375.258ss.com/]情色文學[/url]
[url=http://120376.258tt.com/]情色交友[/url]
[url=http://120377.258vr.com/]色情聊天室[/url]
[url=http://120378.258ww.com/]色情小說[/url]
[url=http://120379.258ww.com/]一葉情貼圖片區[/url]
[url=http://120380.258pp.com/]情色小說[/url]
[url=http://120381.258ps.com/]色情[/url]
[url=http://120382.258rr.com/]色情遊戲[/url]
[url=http://120383.258rv.com/]情色視訊[/url]
[url=http://120384.258s.com/]情色電影[/url]
[url=http://120385.258ss.com/]AIO交友愛情館[/url]
[url=http://120386.258tt.com/]色情A片[/url]
[url=http://120387.258vr.com/]一夜情[/url]
[url=http://120388.258ww.com/]辣妹視訊[/url]
[url=http://120389.258ww.com/]視訊聊天室[/url]
[url=http://120390.258pp.com/]免費視訊聊天[/url]
[url=http://120391.258ps.com/]免費視訊[/url]
[url=http://120392.258rr.com/]視訊[/url]
[url=http://120393.258rv.com/]視訊美女[/url]
[url=http://120394.258s.com/]美女視訊[/url]
[url=http://120395.258ss.com/]視訊交友[/url]
[url=http://120396.258tt.com/]視訊聊天[/url]
[url=http://120397.258vr.com/]免費視訊聊天室[/url]
[url=http://120398.258ww.com/]情人視訊網[/url]
[url=http://120399.258ww.com/]影音視訊聊天室[/url]
[url=http://120400.258pp.com/]視訊交友90739[/url]
[url=http://120401.258ps.com/]成人影片[/url]
[url=http://120402.258rr.com/]成人交友[/url]
[url=http://120403.258rv.com/]美女交友[/url]
[url=http://120404.258s.com/]微風成人[/url]
[url=http://120405.258s.com/]嘟嘟成人網[/url]
[url=http://120406.258tt.com/]成人貼圖[/url]
[url=http://120407.258vr.com/]成人電影[/url]
[url=http://120408.258ww.com/]A片[/url]
[url=http://120413.258rv.com/]豆豆聊天室[/url]
[url=http://120414.258ww.com/]聊天室[/url]
[url=http://120415.258ww.com/]UT聊天室[/url]
[url=http://120416.258ww.com/]尋夢園聊天室[/url]
[url=http://120417.258ww.com/]男同志聊天室[/url]
[url=http://120418.258ww.com/]UT男同志聊天室[/url]
[url=http://120419.258ww.com/]聊天室尋夢園[/url]
[url=http://120420.258ww.com/]080聊天室[/url]
[url=http://120421.258ww.com/]080苗栗人聊天室[/url]
[url=http://120448.258ps.com/]6K聊天室[/url]
[url=http://120449.258ps.com/]女同志聊天室[/url]
[url=http://120450.258ps.com/]小高聊天室[/url]
[url=http://120451.258ps.com/]上班族聊天室[/url]
[url=http://120453.258ps.com/]080中部人聊天室[/url]
[url=http://120454.258ww.com/]同志聊天室[/url]
[url=http://120455.258ww.com/]聊天室交友[/url]
[url=http://120456.258ww.com/]中部人聊天室[/url]
[url=http://120457.258ww.com/]成人聊天室[/url]
[url=http://120458.258ww.com/]一夜情聊天室[/url]
[url=http://120459.258ww.com/]情色聊天室[/url]
[url=http://120460.258ww.com/]寄情築園小遊戲[/url]
[url=http://128074.258pp.com/]AV女優[/url]
[url=http://128076.258s.com/]A片下載[/url]
[url=http://128077.258s.com/]免費A片[/url]
[url=http://128078.258s.com/]日本A片[/url]
[url=http://128079.258s.com/]麗的色遊戲[/url]
[url=http://128080.258s.com/]色色網[/url]
[url=http://128081.258s.com/]情色論壇[/url]
[url=http://128082.258s.com/]嘟嘟情人色網[/url]
[url=http://128083.258s.com/]色情網站[/url]
[url=http://128084.258s.com/]成人網站[/url]
[url=http://128085.258s.com/]成人論壇[/url]
[url=http://128086.258s.com/]成人小說[/url]
[url=http://128087.258s.com/]微風成人區[/url]
[url=http://128088.258s.com/]色美媚部落格[/url]
[url=http://128089.258s.com/]正妹牆[/url]
[url=http://128090.258s.com/]正妹百人斬[/url]
[url=http://128091.258s.com/]AIO[/url]
[url=http://128092.258s.com/]伊莉[/url]
[url=http://128092.258s.com/]伊莉討論區[/url]
[url=http://128093.258s.com/]成人文章[/url]
[url=http://128094.258s.com/]成人圖片區[/url]
[url=http://128095.258s.com/]免費成人影片[/url]
[url=http://128096.258s.com/]成人遊戲[/url]
[url=http://128097.258s.com/]成人影城[/url]
[url=http://128099.258s.com/]本土自拍[/url]
[url=http://128100.258s.com/]自拍[/url]
[url=http://128101.258s.com/]癡漢俱樂部[/url]
[url=http://129249.258ww.com/]AV[/url]
[url=http://129250.258ww.com/]做愛[/url]
[url=http://129251.258ww.com/]做愛影片[/url]
[url=http://129252.258ww.com/]av片[/url]
[url=http://129253.258ww.com/]a漫[/url]
[url=http://129254.258ww.com/]av dvd[/url]
[url=http://129255.258ww.com/]線上a片[/url]
[url=http://129256.258ww.com/]日本美女寫真集[/url]

November 6, 2008 2:08 PM  
Anonymous Anonymous said...

情趣用品,情趣用品,情趣用品,情趣用品,情趣,情趣,情趣,情趣,充氣娃娃,免費A片,AV女優,美女視訊,情色交友,免費AV,色情網站,辣妹視訊,美女交友,色情影片,成人影片,成人網站,A片,H漫,18成人,成人圖片,成人漫畫,情色網,成人交友,嘟嘟成人網,成人電影,成人,成人貼圖,成人小說,成人文章,成人圖片區,免費成人影片,成人遊戲,微風成人,愛情公寓,情色,情色貼圖,情色文學,情色交友,色情聊天室,色情小說,一葉情貼圖片區,情色小說,色情,寄情築園小遊戲,色情遊戲,情色視訊,情色電影,aio交友愛情館,言情小說,愛情小說,色情A片,情色論壇,色情影片,視訊聊天室,免費視訊聊天,免費視訊,視訊美女,視訊交友,視訊聊天,免費視訊聊天室,AIO,a片下載,aV,av片,A漫,av dvd,av成人網,聊天室,成人論壇,本土自拍,自拍,A片,情境坊歡愉用品,情趣用品,情人節禮物,情人節,情惑用品性易購,生日禮物,保險套,A片,情色,情色交友,色情聊天室,一葉情貼圖片區,情色小說,情色視訊,情色電影,辣妹視訊,視訊聊天室,免費視訊聊天,免費視訊,,視訊聊天,免費視訊聊天室,情人視訊網,視訊交友90739,成人交友,美女交友

November 6, 2008 2:08 PM  
Anonymous Anonymous said...

Today, the Microsoft-owned in-game ad agency said that it has signed an exclusive multiyear agreement with Blizzard. Azerothians opposed to seeing in-game ads in their localworld of warcft goldwatering holes need not worry, however, because the deal is limited to Blizzard's Web sites and Battle.net,the game maker's online-gaming hub. Terms of the deal were not announced, but Massive did note that the agreement is applicable to users in the US, Canada, Europe, South Korea, and Australia.
buy wow gold


Massive also said today that it would be extending its aforementioned deal with Activision to encompass an additional 18 games appearing on the Xbox 360 and PC.cheap wow goldThe agency didn't fully delineate which would fall under this deal, though it did call out Guitar Hero: World Tour, James Bond: Quantum of Solace, and Transformers: Revenge of the Fallen,buy wow items as well as games in its Tony Hawk and AMAX Racing franchises.Shortly before Activision and Vivendi announced their deal of the decade,wow power levelingthe Guitar Hero publisher signed on to receive in-game advertisements from Massive Inc for a number of its Xbox 360 and PC games. A bit more than a year later, Massive is now extending its reach to Activision's new power player, Blizzard Entertainment.buy wow gold from our site ,you'll get more surprises!

December 17, 2008 1:01 AM  
Blogger sexy said...

情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,按摩棒,跳蛋,充氣娃娃,情境坊歡愉用品,情趣用品,情人節禮物,情惑用品性易購,A片,視訊聊天室,視訊,視訊聊天,視訊交友網,免費視訊聊天,聊天室,UT聊天室,免費視訊,視訊交友,免費視訊聊天室,A片,A片

免費A片,AV女優,美女視訊,情色交友,免費AV,色情網站,辣妹視訊,美女交友,色情影片,成人影片,成人網站,A片,H漫,18成人,成人圖片,成人漫畫,情色網,日本A片,免費A片下載,性愛

A片,色情,成人,做愛,情色文學,A片下載,色情遊戲,色情影片,色情聊天室,情色電影,免費視訊,免費視訊聊天,免費視訊聊天室,一葉情貼圖片區,情色,情色視訊,免費成人影片,視訊交友,視訊聊天,視訊聊天室,言情小說,愛情小說,AIO,AV片,A漫,av dvd,聊天室,自拍,情色論壇,視訊美女,AV成人網,色情A片,SEX,成人圖片區

情趣用品,A片,免費A片,AV女優,美女視訊,情色交友,色情網站,免費AV,辣妹視訊,美女交友,色情影片,成人網站,H漫,18成人,成人圖片,成人漫畫,成人影片,情色網


情趣用品,A片,免費A片,日本A片,A片下載,線上A片,成人電影,嘟嘟成人網,成人,成人貼圖,成人交友,成人圖片,18成人,成人小說,成人圖片區,微風成人區,成人文章,成人影城,情色,情色貼圖,色情聊天室,情色視訊,情色文學,色情小說,情色小說,臺灣情色網,色情,情色電影,色情遊戲,嘟嘟情人色網,麗的色遊戲,情色論壇,色情網站,一葉情貼圖片區,做愛,性愛,美女視訊,辣妹視訊,視訊聊天室,視訊交友網,免費視訊聊天,美女交友,做愛影片

av,情趣用品,a片,成人電影,微風成人,嘟嘟成人網,成人,成人貼圖,成人交友,成人圖片,18成人,成人小說,成人圖片區,成人文章,成人影城,愛情公寓,情色,情色貼圖,色情聊天室,情色視訊,情色文學,色情小說,情色小說,色情,寄情築園小遊戲,情色電影,aio,av女優,AV,免費A片,日本a片,美女視訊,辣妹視訊,聊天室,美女交友,成人光碟

情趣用品.A片,情色,情色貼圖,色情聊天室,情色視訊,情色文學,色情小說,情色小說,色情,寄情築園小遊戲,情色電影,色情遊戲,色情網站,聊天室,ut聊天室,豆豆聊天室,美女視訊,辣妹視訊,視訊聊天室,視訊交友網,免費視訊聊天,免費A片,日本a片,a片下載,線上a片,av女優,av,成人電影,成人,成人貼圖,成人交友,成人圖片,18成人,成人小說,成人圖片區,成人文章,成人影城,成人網站,自拍,尋夢園聊天室

December 19, 2008 6:26 AM  
Blogger chengja said...

The Angels confirmedwow goldSunday that they have pulled out of the bidding for freewow goldagent Mark Teixeira's services. Team spokesmanwow goldTim Mead said the club would have no furtherwow goldcomment today.The club withdrew its offer of eightwow goldyears in the $160 million range forwow goldthe 28-year-old first baseman.

December 22, 2008 7:41 PM  
Blogger chengja said...

Frozen trash danced indofus kamaskamas dofusacheter kamasbuy kamas the icy wind at one end of theacheter dofusdofus kamaskamas dofusacheter dofusbuy kamasnear-empty stadium as theacheter kamasdofus kamaskamas dofusacheter kamashome finale'sdofus kamaskamas dofuslast seconds disappearedachat kamasdofus kamaskamas dofusacheter des kamasdofus kamaskamas dofusbuy kamasfrom the clock.Therewow pobuy wow goldachat gold wowwow levelingwow orwow gold cheapwas nothing towow powerlevelingbuy wow goldworld of warcraft goldcheap wow goldwow orwow power levelingcelebrate, nothing to lookworld of warcraft goldwow gold kaufenwow gold cheapwow levelforward to.Nothing wow geldwow gold kaufenwow gold cheapwow powerlevelingbut silence.

December 22, 2008 7:42 PM  
Blogger chengja said...

Glen "Big Baby" Davisworld of warcraft goldwow powow orbuy wow goldcheap wow goldwas hospitalizedwow power levelingwow powerlevelingdofus kamaskamas dofusSunday with whiplashLord of the Rings Online GoldLOTRO GoldLOTR Goldfly for fun penyaand a concussionflyff penyabuy flyff goldffxi gilbuy ffxi gilFinal Fantasy XI gilafter being involvedEverQuest 2 goldeq2 platffxi gilFinal fantasy xi gilbuy ffxi gilin a traffic accidentUgg BootsUgg BootsUgg Bootson his way to the Celtics-Knicks game.

December 22, 2008 7:42 PM  
Blogger chengja said...

Assistant coach Kenny Natt tookwow goldbuy wow goldwow levelingwow gold cheapwow goldbuy wow goldwow power levelingcheapest wow goldwow goldover the Kings at their wow soldiworld of warcraft goldbuy wow goldcheap wow goldwow goldwow oroworld of warcraft goldshootaround before Monday night's gamebuy wow goldwow gold hackwow goldworld of warcraft goldbuy wow goldcheap wow goldwow levelingagainst Minnesota, spokesman Troywow goldworld of warcraft goldbuy wow goldcheap wow goldwow power levelingwow powerlevelingdofus kamaskamas dofus Hanson said. Natt isLord of the Rings Online GoldLOTRO GoldLOTR Goldfly for fun penyaflyff penyabuy flyff goldFinal Fantasy XI gil Sacramento's fourth coach in less thanbuy cheap ffxi gilffxi gilbuy Warhammer goldWarhammer goldrunescape moneyrunescape goldEverQuest 2 goldeq2 platthree years.Assistantwow goldworld of warcraft goldbuy wow goldcheap wow goldwow power levelingwow powerlevelingdofus kamaskamas dofusLord of the Rings Online GoldLOTRO Goldcoach Chuck Person was firedLOTR Goldfly for fun penyaflyff penyabuy flyff goldFinal Fantasy XI gilffxi gilbuy Warhammer goldWarhammer goldalong with Theus, who went 44-62 inRunescape MoneyRunescape goldEverQuest 2 goldeq2 platbuy Warhammer goldWarhammer goldhis brief tenure with Sacramento.

December 22, 2008 7:42 PM  
Anonymous Anonymous said...

+runescape money runescape gold runescape money buy runescape gold buy runescape money runescape money runescape gold wow power leveling wow powerleveling Warcraft Power Leveling Warcraft PowerLeveling buy runescape gold buy runescape money runescape itemsrunescape accounts runescape gp dofus kamas buy dofus kamas Guild Wars Gold buy Guild Wars Gold lotro gold buy lotro gold lotro gold buy lotro gold lotro gold buy lotro gold runescape money runescape power leveling runescape money runescape gold dofus kamas cheap runescape money cheap runescape gold Hellgate Palladium Hellgate London Palladium Hellgate money Tabula Rasa gold tabula rasa money Tabula Rasa Credit Tabula Rasa Credits Hellgate gold Hellgate London gold wow power leveling wow powerleveling Warcraft PowerLeveling Warcraft Power Leveling World of Warcraft PowerLeveling World of Warcraft Power Leveling runescape power leveling runescape powerleveling eve isk eve online isk eve isk eve online isk tibia gold Fiesta Silver Fiesta Gold
Age of Conan Gold
buy Age of Conan Gold
aoc gold

December 22, 2008 11:26 PM  
Anonymous runescape-shop said...

runescape gold
runescape money
runescape power leveling
runescape powerleveling
runescape powerleveling
runescape power leveling
aoc power leveling
nike shoes
jordan shoes
jordan shoes
nike dunk
costume jewelry
handmade jewelry
fashion jewelry
wholesale jewelry

December 23, 2008 6:06 PM  
Anonymous Anonymous said...

world of warcraft power leveling wow power leveling power leveling runescape gold rs2 gold wow gold 福彩3D 直流电源 枕式包装机 纸巾机 oil painting 枕式包装机 湿巾包装机 纸巾包装机 湿巾机 纸巾机 枕包机 纸杯机 paper cup machine Mass air flow 程控交换机automatic rigid box line,paper converting and wrapping machines,automatic box makers,rigid set-up gift box,paperboard converting equipment


气动马达 气动搅拌机 油漆搅拌机,油墨/胶水搅拌器 金属探测门 runescape money rs2 money dofus kamas thermoforming Equipment bag making machine 产品设计 开关电源 储罐 中药提取设备 乳化机 反应釜 真空干燥箱 厚壁钢管


power leveling wow power leveling paper box making lines rigid paper box making lines paper box making machinery rigid paper box making machinery paper box forming machinery rigid paper box forming machinery rigid paper box equipment paper box equipment thermoforming machine thermoforming Equipment Plastic Machinery Plastic Thermoforming Machine Plastic Thermoforming Machinery Plastic Sheet Unit,Plastic Extruding Machine Plastic Machine prada shoes true religion jeans evisu jeans Ed hardy Gucci shoes Gucci Handbag adidas shoes Ugg Boots nike shoes LV handbags Jordan shoes new era caps

气动马达 气动搅拌机 叶片式气动马达 活塞式气动马达 滑片式气动马达 搅拌器 搅拌机 卧式气动马达 横切机

December 25, 2008 9:47 PM  
Blogger live1 said...

WoW geld,world of warcraft woW goLD on sale,This is a WoW goLD selling website.Buy WOw Gold, World of Warcraft wow golD! We Rocked the wOw gold market by cheap wow gold price as low as WOw gOld! Cheap WOw GOld,Cheapest wow goLd,Buy Cheap wow gOld,WOW GOld Guide,Strategy. All kinds of world of warcraft wow GoLd news
and world of warcraft WoW gold videos here.

December 30, 2008 9:38 PM  
Blogger live1 said...

Welcome to FAQ
Aktuelle News
Support
World of Warcraft(USA)
World of Warcraft(EUR)
Game Card
Guild Wars
Age of Conan - US
Age of Conan - EU
Final Fantasy XI
Vanguard
The Lord of the Rings OL - USA
The Lord of the Rings OL - EUR

December 30, 2008 9:39 PM  
Anonymous Anonymous said...

热钱将由目前的北京翻译公司流出转变为流入深圳翻译公司搜索巨头谷歌、,接受本报广州翻译公司,韩语翻译使得明年热钱的流动或会出现较大转向,,同声传译偶尔会和翻译公司东莞翻译公司。在线翻译工具。法语翻译同声传译设备租赁,是会议设备租赁,一项调查显示法语翻译几乎将深圳更多的是通过线翻译同声传译深圳俄语翻译
深圳韩语翻译广州同声传译上个月成交量放大广州翻译公司上海翻译公司这将导致人民币兑表决器出租,表决器销售 租赁表决器各种货币走势的转向。 德语翻译,,市场风险偏好升温。商务口译,料就在昨日下午稍晚时间,同传设备已经说明一切。翻译是一门严谨不容践踏的语言文化。同声传译,凡购买中国移动手机充值卡深圳同声传译翻译部署促进房地产市场健康发展措施出台,深圳翻译.深圳英语翻译 ,无需制作炫丽的界面和复杂的操作功能深圳日语翻译,中国移动后台词库地产的阴霾情绪同声传译设备租赁,是会议设备租赁深圳手机号码,深圳手机靓号,有的用户同传设备出租会议同传系统租赁报告昨日公布选择在线翻译会议设备租赁中美利差的一旦金融市场趋于稳定,。同声传译设备租赁存在,。新疆租车,美元汇率明年什么时候开始由强转弱, 广州翻译公司,用户的体验不能停留同声传译一扫而光”

December 30, 2008 10:31 PM  
Blogger buy wow gold said...

Today, the Microsoft-owned in-game ad agency said that it has signed an exclusive multiyear agreement with Blizzard. Azerothians opposed to seeing in-game ads in their localworld of warcft goldwatering holes need not worry, however, because the deal is limited to Blizzard's Web sites and Battle.net,the game maker's online-gaming hub. Terms of the deal were not announced, but Massive did note that the agreement is applicable to users in the US, Canada, Europe, South Korea, and Australia.
buy wow gold

Massive also said today that it would be extending its aforementioned deal with Activision to encompass an additional 18 games appearing on the Xbox 360 and PC.cheap wow goldThe agency didn't fully delineate which would fall under this deal, though it did call out Guitar Hero: World Tour, James Bond: Quantum of Solace, and Transformers: Revenge of the Fallen,buy wow items as well as games in its Tony Hawk and AMAX Racing franchises.Shortly before Activision and Vivendi announced their deal of the decade,wow power levelingthe Guitar Hero publisher signed on to receive in-game advertisements from Massive Inc for a number of its Xbox 360 and PC games. A bit more than a year later, Massive is now extending its reach to Activision's new power player, Blizzard Entertainment.buy wow gold from our site ,you'll get more surprises!

December 31, 2008 5:11 AM  
Blogger poshuai0012 said...

520聊天室
一夜情聊天室
一夜情貼圖區
一夜聊天室
一葉晴貼圖區
一葉晴貼影片區
丁字褲女優
丁字褲美女寫真
丁字褲美女影片
人之初貼圖區
八國聯軍情色網
八國聯軍論壇
十七歲女孩貼影區
又又處女貼影區
下載a片
上班族聊天室
大老婆俱樂部
大波霸美女影片
大眾論壇
女同志聊天室
女郎俱樂部
女郎貼影區
女狼俱樂部
女學生內衣照
女優天堂貼圖
女優王國
女優盒子
女優貼片
女優貼圖
女優電影
女優寫真
女優影片
小老婆俱樂部
小老鼠論壇
小弟弟情色網
小弟弟貼圖區
小弟弟貼影片
小弟弟貼影片區
小弟弟貼影片網
小弟弟貼影區
小弟弟影片
小杜情色網
小妹妹貼影區
小高聊天室
小說論壇
小賤人貼影區
小瓢蟲情色論壇
小瓢蟲論壇
小護士偷拍網
小魔女自拍天堂貼圖區
小魔女自拍貼圖區
小魔女免費影片
小魔女貼圖區
小魔女貼影片
不色不進貼影區
不穿內衣
中部人聊天室
內衣秀
內衣模特兒
內衣模特兒寫真
內衣褲
天天情色
天天幹貼圖區
天天網遊論壇
天天論壇
天生名模貼圖區
天堂私服論壇
天堂情色
天堂情色網
夫妻聯誼俱樂部
少女內衣
手工內衣
日本av女優
日本av女優免費影片區
日本a片
日本女優
日本內衣
日本正妹
日本正妹照片
日本正妹影片
日本美女
日本美女圖庫
日本美女寫真集
日本偷拍
日本情色女優
日本辣美女優
日本模特兒寫真
日本學生妹
月光論壇
月宮俱樂部
月宮貼圖區
比基尼
比基尼女郎
比基尼內衣
比基尼泳裝
比基尼泳裝外拍
比基尼泳裝美女
比基尼泳裝美女的影片
比基尼泳裝美少女圖片
比基尼美女
比基尼美女的奶
比基尼辣妹
比基尼辣妹照片區
比基尼辣妹圖片
比基尼辣妹影片
比基尼線
水美眉
北部人聊天室
卡通aa片
卡通aa片免費看
卡通a片
卡通a片免費看
卡通美女遊戲
卡通貼圖區
可愛美眉
只有貼圖區
台中人聊天室
台中聊天室
台論論壇
台灣 kiss 倩色網貼圖區
台灣 kiss 情網貼圖區
台灣av女優
台灣a片
台灣a片王
台灣kiss情色文學
台灣kiss情色文學區
台灣kiss情色網
台灣女優
台灣自拍偷拍
台灣客棧電影貼圖區
台灣美女
台灣美女 kiss 情網貼圖區
台灣美女貼圖
台灣美女貼圖區
台灣美女電影
台灣美女圖
台灣美女寫真貼圖區
台灣香腸俱樂部
台灣偷拍
台灣情色
台灣情色貼圖
台灣情色網
台灣情色網綜合論壇
台灣情色論壇
台灣無限貼圖區
台灣貼圖區
台灣賓館偷拍
台灣論壇
台灣論壇女生遊戲
台灣論壇好玩遊戲區
台灣論壇遊戲區
巨乳女優
巨乳美女
布蘭妮貼圖區
平面模特兒
打工正妹
本土a片
本土女優
本土偷拍
正妹大學
正妹大學宅男社
正妹日報
正妹地圖
正妹百人斬
正妹自拍
正妹空姐寫真
正妹星球
正妹相簿
正妹美食地圖
正妹無名
正妹無名相簿
正妹無名相簿分享
正妹照片
正妹圖
正妹圖片
正妹圖片或照片
正妹網
正妹裸照
正妹影片
正妹餐廳
正妹牆
交友啦咧聊天室
交友聊天室
交友貼影區
伊莉論壇
同志聊天
同志聊天室
同志貼圖區
名模露點
成人a片
成人偷拍
成人情色
成人情色小說
成人情色文學
成人情色貼圖
成人情色貼圖區
成人聊天室
成人貼圖區
成人影片
成人影城
成人影音
成人影音城
成人論壇
有閒俱樂部
百分百貼圖區
米克情色網
米克綜合論壇
自拍a片
自拍偷拍
自拍偷拍成人影片
自拍偷拍貼圖
自拍偷拍貼圖區

January 3, 2009 12:03 AM  
Anonymous buy wow gold said...

Today, the Microsoft-owned in-game ad agency said that it has signed an exclusive multiyear agreement with Blizzard. Azerothians opposed to seeing in-game ads in their localworld of warcft goldwatering holes need not worry, however, because the deal is limited to Blizzard's Web sites and Battle.net,the game maker's online-gaming hub. Terms of the deal were not announced, but Massive did note that the agreement is applicable to users in the US, Canada, Europe, South Korea, and Australia.
buy wow gold


Massive also said today that it would be extending its aforementioned deal with Activision to encompass an additional 18 games appearing on the Xbox 360 and PC.cheap wow goldThe agency didn't fully delineate which would fall under this deal, though it did call out Guitar Hero: World Tour, James Bond: Quantum of Solace, and Transformers: Revenge of the Fallen,buy wow items as well as games in its Tony Hawk and AMAX Racing franchises.Shortly before Activision and Vivendi announced their deal of the decade,wow power levelingthe Guitar Hero publisher signed on to receive in-game advertisements from Massive Inc for a number of its Xbox 360 and PC games. A bit more than a year later, Massive is now extending its reach to Activision's new power player, Blizzard Entertainment.buy wow gold from our site ,you'll get more surprises

January 3, 2009 7:52 PM  
Blogger buy wow gold said...

Today, the Microsoft-owned in-game ad agency said that it has signed an exclusive multiyear agreement with Blizzard. Azerothians opposed to seeing in-game ads in their localworld of warcraft goldwatering holes need not worry, however, because the deal is limited to Blizzard's Web sites and Battle.net,the game maker's online-gaming hub. Terms of the deal were not announced, but Massive did note that the agreement is applicable to users in the US, Canada, Europe, South Korea, and Australia.
buy wow gold

Massive also said today that it would be extending its aforementioned deal with Activision to encompass an additional 18 games appearing on the Xbox 360 and PC.cheap wow goldThe agency didn't fully delineate which would fall under this deal, though it did call out Guitar Hero: World Tour, James Bond: Quantum of Solace, and Transformers: Revenge of the Fallen,buy wow items as well as games in its Tony Hawk and AMAX Racing franchises.Shortly before Activision and Vivendi announced their deal of the decade,wow power levelingthe Guitar Hero publisher signed on to receive in-game advertisements from Massive Inc for a number of its Xbox 360 and PC games. A bit more than a year later, Massive is now extending its reach to Activision's new power player, Blizzard Entertainment.buy wow gold from our site ,you'll get more surprises!

January 7, 2009 6:25 AM  
Anonymous Anonymous said...

花美姬情趣用品..情趣風情..中部人情趣網台北情趣用品..情人節禮物..成人情趣用品一夜情趣用品情趣..情境坊歡愉用品.情人視訊網..美姬成人用品..情人花束..按摩棒情人歡愉用品情惑用品性易購情惑用品性易購..視訊交友..情人視訊網..成人視訊交友情趣交友..美姬用品專賣...高雄轉角情趣用品情趣用品辣妹視訊..情色論壇..情惑用品性易購..紅煙論壇..高雄轉角情趣用品<性感睡衣免費視訊聊天..視訊交友網..美姬圖影...紅煙論壇...交友聊天室..情惑用品性易購..美姬圖影..紅煙論壇.成人視訊交友..上班族聊天室情人節禮物情趣用品同志聊天室情書..聊天室交友中部人聊天室情惑用品性易購..紅煙論壇..高雄轉角情趣用品<性感睡衣免費視訊聊天..視訊交友網..情人視訊網...

情趣用品,情趣用品,情惑用品性易購,情惑用品性易購,情趣用品,情趣用品

花美姬情趣用品,A片,免費A片,AV女優,美女視訊,情色交友,色情網站,辣妹視訊,美女交友,色情影片,成人網站,H漫,18成人,成人圖片,成人漫畫,成人影片,情色,情趣,情趣用品,情色文學 ,色情小說,情色小說,臺灣情色網 ,色情 ,情色電影 ,色情遊戲 嘟嘟情人色網,麗的色遊戲 ,情色論壇,色情網站,一葉情貼圖片區 ,做愛 ,性愛 美女視訊,辣妹視訊 ,視訊聊天室 視訊交友網 ,免費視訊聊天 ,美女交友,做愛影片,情趣用品,情趣用品,情惑用品性易購,情惑用品性易購,情趣用品,情趣用品

情趣用品,情趣,按摩棒,跳蛋,充氣娃娃,情人節禮物,美女視訊,辣妹視訊,成人網站,免費視訊,成人電影,成人,情趣用品花美姬,情趣精品,男女情趣用品,台中情趣用品,台北情趣用品,高雄情趣用品,情趣情趣用品.情趣精品情趣用品

January 7, 2009 9:18 AM  
Blogger wow gold said...

Other wow gold changes are wow goldalmost as easy. buy wow goldA designer buy wow goldfeels like cheap wow gold nobody will cheap wow gold really object to wow power levelinga change and wow power levelingthat it's pretty power levelinglow risk. At power leveling e as a santiy check.

January 7, 2009 6:44 PM  
Blogger live1 said...

We are a world class wow GoLD store online. We supply cheap wOw golD, the cheapest WoW Gold to our loyal and reliable WOw Gold,cheap wow gold,Buy wow GoLd,WOw GOld store on line. we provide cheap wow goLd to each loyal and buy Cheap WoW geld Our wOw gold service is trustable and reliable.WOW GOld Store Welcome you! Look here to Buy wow gOld, Cheap WOw gOld, Buy cheap world of warcraft gold,
Power Leveling,wOW goLD on Sale with Fast Instant.

January 7, 2009 9:11 PM  
Blogger live1 said...

Aktuelle News
Support
FAQ
World of Warcraft(USA)
World of Warcraft(EUR)
Game Card
Guild Wars
Age of Conan - US
Age of Conan - EU
Final Fantasy XI
Vanguard
The Lord of the Rings OL - USA
The Lord of the Rings OL - EUR

January 7, 2009 9:12 PM  
Blogger 安安公主 said...

提供水噹噹整型論壇銀行貸款小額信用貸款優質宜蘭民宿查詢優質花蓮民宿查詢未婚聯誼好愛戀vivi網路購物大賣場珠海旅遊指南請問下川島旅遊查詢常平旅遊地圖珠海好玩的景點澳門機票特價中香港機票歡迎搶購香港機票大特賣澳門機票特賣會單身聯誼告別單身生活單身聯誼尋找您的另一半單身聯誼婚友社MatchEX單身聯誼婚友社提供婚友服務詢問婚友社地址我要辦未婚聯誼活動MatchEX未婚聯誼專業酒店經紀公司酒店上班族下班聊天未婚聯誼好開心VIP頂級婚友聯誼中心愛戀婚友聯誼中心優質婚友聯誼網路交友提供交友服務婚友社告別單身生活婚友社聯誼中心VIP頂級婚友社優質婚友社大陸新娘如何辦証大陸新娘新聞最專業的大陸新娘論壇越南新娘在台南生活越南新娘討論區別叫我外籍新娘外籍新娘回台灣外籍新娘回高雄玻尿酸的妙用台中SPA讓您放輕鬆台中婦產科-順風婦產科最細心的台中坐月子中心台中醫學美容讓你變美麗台中整型幫助妳台中整型特價中台中整型全新開幕身心靈舒適台中SPA專業酒店經紀誠徵寒假打工服務生拉刀六合地有限公司消除白蟻的專家優質搬家服務優質搬家公司學生優待優質搬家服務優質搬家公司張媽媽金忠代書房屋二胎貸款網路免費資源專業線上客服系統提供網頁設計服務專業線上客服系統專業網頁設計服務專業網頁設計公司

提供貼文貼文軟體關鍵字軟體自動貼文 交友貼文部落格貼文無名貼文seo軟體 貼文貼文軟體關鍵字軟體自動貼文 奇摩交友貼文奇摩部落格貼文無名自動貼文seo軟體 貼文貼文軟體關鍵字軟體自動貼文 PChome交友貼文部落格貼文無名貼文網站排名軟體 貼文貼文軟體關鍵字軟體自動貼文 奇摩交友貼文奇摩部落格貼文無名自動貼文seo軟體 貼文軟體交友貼文奇摩交友貼文軟體貼文軟體奇摩貼文自動貼文軟體貼文軟體無名貼文無名貼文軟體 關鍵字網站排名seo關鍵字網站排名關鍵字關鍵字關鍵字關鍵字軟體網站排名網站排名seoseoseo網站排名seo網站排名關鍵字seo關鍵字seo網站排名seo網站排名seo關鍵字優化關鍵字優化自然排序自然排序

桌球國手賽搶盡光采打羽球真好玩粉領瘋肚皮舞學習學習素描修心性幸福交友升級您的生活快樂婚友服務生美麗婚友社告別單身漂亮單身聯誼服務輕鬆未婚聯誼身心靈舒適未婚聯誼人脈專業 婚友社錢脈優質婚友旅遊網路婚友社國度線上單身聯誼驚喜提供婚友身心靈尋找未婚聯誼單身查詢婚友社輕瑩好玩的未婚聯誼心靈好吃的單身聯誼聯誼愛戀單身聯誼體會戀愛婚友領悟

January 8, 2009 7:38 PM  
Blogger quids said...

情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,
情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,
情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣,情趣,情趣,情趣,情趣,情趣,
情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,
情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,潤滑液,自慰套,威而柔,威而柔,
威而柔,威而柔,自慰套,跳蛋,按摩棒,充氣娃娃,自慰套,潤滑液,威而柔,FleshLight,跳蛋,按摩棒,充氣娃娃,跳蛋,按摩棒,FleshLight,充氣娃娃,
情趣商品,情趣網站,情趣網站,潤滑液,性感內衣,充氣娃娃,按摩棒,情趣精品,跳蛋,情趣網站,情趣商品,跳蛋,FleshLight,充氣娃娃,情趣內衣,情趣精品,按摩棒,威而柔,自慰套,成人玩具,
Nexus,lelo,聰明球,後庭,後庭g點,g點,美國fleshlight,STU訓練大師,Fleshgirls,Toys Heart,Tenga,日本 Vibratex,日本Toys Heart ,日本Tenga,美國aneros,rudeboy,英國rudeboy,英國Rocksoff,
德國Fun Factory,Fun Factory,英國甜筒造型按摩座,甜筒造型按摩座,英國Rock Chic ,瑞典 Lelo ,英國Emotional Bliss,英國 E.B,荷蘭 Natural Contours,荷蘭 N C,美國 OhMiBod,美國 OMB,Naughti Nano ,音樂按摩棒,ipod按摩棒,美國 The Screaming O,一本道,
美國TSO,美國TOPCO,美國Doc Johnson,美國CA Exotic,美國CEN,美國Nasstoy,美國Tonguejoy,英國Je Joue,美國Pipe Dream,美國California Exotic,美國NassToys,美國Vibropod,美國Penthouse,仿真按摩棒,矽膠按摩棒,猛男倒模,真人倒模,
仿真倒模,PJUR,Zestra,適趣液,穿戴套具,日本NPG,雙頭龍,FANCARNAL,日本NIPPORI,日本GEL,日本Aqua Style,美國WET,費洛蒙,費洛蒙香水,仿真名器,av女優,打炮,本土自拍,S1,
做愛,性愛,口交,吹喇叭,肛交,魔女訓練大師,無線跳蛋,有線跳蛋,震動棒,震動保險套,震動套,TOY-情趣用品,情趣用品網,情趣購物網,成人用品網,情趣用品討論,成人購物網,鎖精套,SKY ANGEL,
鎖精環,持久環,持久套,拉珠,逼真按摩棒,名器,超名器,逼真老二,電動自慰,自慰,打手槍,仿真女郎,SM道具,SM,性感內褲,仿真按摩棒,線上A片,免費A片,ALICE JAPAN,
pornograph,hunter系列,h動畫,成人動畫,成人卡通,情色動畫,情色卡通,色情動畫,色情卡通,無修正,禁斷,人妻,極悪調教,姦淫,近親相姦,顏射,盜攝,偷拍,SOD,
素人自拍,公園露出,街道露出,野外露出,誘姦,迷姦,輪姦,凌辱,痴漢,痴女,素人娘,中出,巨乳,調教,潮吹,色情影音,色情光碟,皇冠系列,老虎系列,交友,
av,a片,成人影片,成人影音,線上影片,成人光碟,成人無碼,成人dvd,情色影音,情色影片,情色dvd,情色光碟,航空版,薄碼,色情dvd,A片下載,成人電影,色情電影,TOKYO HOT,
東京熱,亞熱,武士系列,新潮館,婚友社,婚友社,婚友社,大陸新娘,大陸新娘,大陸新娘,越南新娘,外籍新娘,外籍新娘,台中坐月子中心,搬家公司,線上客服,網頁設計,
整型,貸款,宜蘭民宿,花蓮民宿,未婚聯誼,珠海,下川島,常平,澳門機票,香港機票,婚友,婚友社,未婚聯誼,未婚聯誼,婚友,交友,

January 9, 2009 1:57 AM  
Blogger quids said...

情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,
情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,
情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣,情趣,情趣,情趣,情趣,情趣,
情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,
情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,潤滑液,自慰套,威而柔,威而柔,
威而柔,威而柔,自慰套,跳蛋,按摩棒,充氣娃娃,自慰套,潤滑液,威而柔,FleshLight,跳蛋,按摩棒,充氣娃娃,跳蛋,按摩棒,FleshLight,充氣娃娃,
情趣商品,情趣網站,情趣網站,潤滑液,性感內衣,充氣娃娃,按摩棒,情趣精品,跳蛋,情趣網站,情趣商品,跳蛋,FleshLight,充氣娃娃,情趣內衣,情趣精品,按摩棒,威而柔,自慰套,成人玩具,
Nexus,lelo,聰明球,後庭,後庭g點,g點,美國fleshlight,STU訓練大師,Fleshgirls,Toys Heart,Tenga,日本 Vibratex,日本Toys Heart ,日本Tenga,美國aneros,rudeboy,英國rudeboy,英國Rocksoff,
德國Fun Factory,Fun Factory,英國甜筒造型按摩座,甜筒造型按摩座,英國Rock Chic ,瑞典 Lelo ,英國Emotional Bliss,英國 E.B,荷蘭 Natural Contours,荷蘭 N C,美國 OhMiBod,美國 OMB,Naughti Nano ,音樂按摩棒,ipod按摩棒,美國 The Screaming O,一本道,
美國TSO,美國TOPCO,美國Doc Johnson,美國CA Exotic,美國CEN,美國Nasstoy,美國Tonguejoy,英國Je Joue,美國Pipe Dream,美國California Exotic,美國NassToys,美國Vibropod,美國Penthouse,仿真按摩棒,矽膠按摩棒,猛男倒模,真人倒模,
仿真倒模,PJUR,Zestra,適趣液,穿戴套具,日本NPG,雙頭龍,FANCARNAL,日本NIPPORI,日本GEL,日本Aqua Style,美國WET,費洛蒙,費洛蒙香水,仿真名器,av女優,打炮,本土自拍,S1,
做愛,性愛,口交,吹喇叭,肛交,魔女訓練大師,無線跳蛋,有線跳蛋,震動棒,震動保險套,震動套,TOY-情趣用品,情趣用品網,情趣購物網,成人用品網,情趣用品討論,成人購物網,鎖精套,SKY ANGEL,
鎖精環,持久環,持久套,拉珠,逼真按摩棒,名器,超名器,逼真老二,電動自慰,自慰,打手槍,仿真女郎,SM道具,SM,性感內褲,仿真按摩棒,線上A片,免費A片,ALICE JAPAN,
pornograph,hunter系列,h動畫,成人動畫,成人卡通,情色動畫,情色卡通,色情動畫,色情卡通,無修正,禁斷,人妻,極悪調教,姦淫,近親相姦,顏射,盜攝,偷拍,SOD,
素人自拍,公園露出,街道露出,野外露出,誘姦,迷姦,輪姦,凌辱,痴漢,痴女,素人娘,中出,巨乳,調教,潮吹,色情影音,色情光碟,皇冠系列,老虎系列,交友,
av,a片,成人影片,成人影音,線上影片,成人光碟,成人無碼,成人dvd,情色影音,情色影片,情色dvd,情色光碟,航空版,薄碼,色情dvd,A片下載,成人電影,色情電影,TOKYO HOT,
東京熱,亞熱,武士系列,新潮館,婚友社,婚友社,婚友社,大陸新娘,大陸新娘,大陸新娘,越南新娘,外籍新娘,外籍新娘,台中坐月子中心,搬家公司,線上客服,網頁設計,
整型,貸款,宜蘭民宿,花蓮民宿,未婚聯誼,珠海,下川島,常平,澳門機票,香港機票,婚友,婚友社,未婚聯誼,未婚聯誼,婚友,交友,

January 9, 2009 1:58 AM  
Anonymous Anonymous said...

dofus
dofus kamas
dofus kamas
dofus
lotro
lotro gold
buy lotro gold
cheap lotro gold
lotro
lotro gold
buy lotro gold
guild wars
guild wars gold
buy guild wars gold
guild wars
guild wars gold
buy guild wars gold
guild wars
guild wars gold
buy guild wars gold
maplestory mesos
maple story mesos
maple story
maple story
maple story mesos
maplestory mesos
maple story
maple story mesos
maplestory mesos
runescape
runescape gold
buy runescape money
runescape
runescape money
buy runescape money
runescape
runescape gold
runescape money
buy runescape money
runescape
runescape gold
runescape money
buy runescape money
buy runescape money
runescape gold
runescape money
runescape
runescape
runescape gold
runescape money
buy runescape money
runescape
runescape money
runescape gold
buy runescape money
runescape
runescape gold
runescape money
buy runescape money

January 12, 2009 12:28 AM  
Blogger terminals-blocks said...

---------------------------------------------------------------------------------------------------------------------------------

January 12, 2009 1:15 AM  
Blogger mbryah said...

情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,潤滑液,自慰套,威而柔,威而柔,威而柔,威而柔,自慰套,跳蛋,按摩棒,充氣娃娃,自慰套,潤滑液,威而柔,FleshLight,跳蛋,按摩棒,充氣娃娃,跳蛋,按摩棒,FleshLight,充氣娃娃,情趣商品,情趣網站,情趣網站,潤滑液,性感內衣,充氣娃娃,按摩棒,情趣精品,跳蛋,情趣網站,情趣商品,跳蛋,FleshLight,充氣娃娃,情趣內衣,情趣精品,按摩棒,威而柔,自慰套,成人玩具,Nexus,lelo,聰明球,後庭,後庭g點,g點,美國fleshlight,STU訓練大師,Fleshgirls,Toys Heart,Tenga,日本 Vibratex,日本Toys Heart ,日本Tenga,美國aneros,rudeboy,英國rudeboy,英國Rocksoff,德國Fun Factory,Fun Factory,英國甜筒造型按摩座,甜筒造型按摩座,英國Rock Chic ,瑞典 Lelo ,英國Emotional Bliss,英國 E.B,荷蘭 Natural Contours,荷蘭 N C,美國 OhMiBod,美國 OMB,Naughti Nano ,音樂按摩棒,ipod按摩棒,美國 The Screaming O,一本道,美國TSO,美國TOPCO,美國Doc Johnson,美國CA Exotic,美國CEN,美國Nasstoy,美國Tonguejoy,英國Je Joue,美國Pipe Dream,美國California Exotic,美國NassToys,美國Vibropod,美國Penthouse,仿真按摩棒,矽膠按摩棒,猛男倒模,真人倒模,仿真倒模,PJUR,Zestra,適趣液,穿戴套具,日本NPG,雙頭龍,FANCARNAL,日本NIPPORI,日本GEL,日本Aqua Style,美國WET,費洛蒙,費洛蒙香水,仿真名器,av女優,打炮,本土自拍,S1,做愛,性愛,口交,吹喇叭,肛交,魔女訓練大師,無線跳蛋,有線跳蛋,震動棒,震動保險套,震動套,TOY-情趣用品,情趣用品網,情趣購物網,成人用品網,情趣用品討論,成人購物網,鎖精套,SKY ANGEL,鎖精環,持久環,持久套,拉珠,逼真按摩棒,名器,超名器,逼真老二,電動自慰,自慰,打手槍,仿真女郎,SM道具,SM,性感內褲,仿真按摩棒,線上A片,免費A片,ALICE JAPAN,pornograph,hunter系列,h動畫,成人動畫,成人卡通,情色動畫,情色卡通,色情動畫,色情卡通,無修正,禁斷,人妻,極悪調教,姦淫,近親相姦,顏射,盜攝,偷拍,SOD,素人自拍,公園露出,街道露出,野外露出,誘姦,迷姦,輪姦,凌辱,痴漢,痴女,素人娘,中出,巨乳,調教,潮吹,色情影音,色情光碟,皇冠系列,老虎系列,交友,av,a片,成人影片,成人影音,線上影片,成人光碟,成人無碼,成人dvd,情色影音,情色影片,情色dvd,情色光碟,航空版,薄碼,色情dvd,A片下載,成人電影,色情電影,TOKYO HOT,東京熱,亞熱,武士系列,新潮館,婚友社,婚友社,婚友社,大陸新娘,大陸新娘,大陸新娘,越南新娘,外籍新娘,外籍新娘,台中坐月子中心,搬家公司,線上客服,網頁設計,整型,貸款,宜蘭民宿,花蓮民宿,未婚聯誼,珠海,下川島,常平,澳門機票,香港機票,婚友,婚友社,未婚聯誼,未婚聯誼,婚友,交友,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,

January 12, 2009 5:15 AM  
Blogger gsgsg said...

Today, the Microsoft-owned in-game ad agency said that it has signed an exclusive multiyear agreement with Blizzard. Azerothians opposed to seeing in-game ads in their localworld of warcraft goldwatering holes need not worry, however, because the deal is limited to Blizzard's Web sites and Battle.net,the game maker's online-gaming hub. Terms of the deal were not announced, but Massive did note that the agreement is applicable to users in the US, Canada, Europe, South Korea, and Australia.
buy wow gold

Massive also said today that it would be extending its aforementioned deal with Activision to encompass an additional 18 games appearing on the Xbox 360 and PC.cheap wow goldThe agency didn't fully delineate which would fall under this deal, though it did call out Guitar Hero: World Tour, James Bond: Quantum of Solace, and Transformers: Revenge of the Fallen,buy wow items as well as games in its Tony Hawk and AMAX Racing franchises.Shortly before Activision and Vivendi announced their deal of the decade,wow power levelingthe Guitar Hero publisher signed on to receive in-game advertisements from Massive Inc for a number of its Xbox 360 and PC games. A bit more than a year later, Massive is now extending its reach to Activision's new power player, Blizzard Entertainment.buy wow gold from our site ,you'll get more surprises!

January 13, 2009 5:41 AM  
Blogger amy said...

Tomica Minichamps
Mini-Z Kyosho Futaba RCtank Choro-Q Ebbro Tiger I Silyerlit Radiocontrol
Tamiya Tomy Cars Model Tamiya Ebbro Kyosho Mini-Z Tomica .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tomica
Tomica
Tomica
Tomica
Minichamps
Minichamps
Minichamps
Minichamps
Minichamps
Mini-Z
Mini-Z
Mini-Z
Mini-Z
Kyosho
Kyosho
Kyosho
Kyosho
Kyosho
Futaba
Futaba
Futaba
Futaba
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Ebbro
Ebbro
Ebbro
Ebbro
Ebbro
Ebbro


Tomica
MIni-Z
Minichamps
Choro-Q
Kyosho
Tiger I
RC tank
RC bearing
car model
Futaba
Tomica
Minichamps
Tiger I
Tomica
Minichamps
Choro-Q
Mini-Z
Kyosho
Futaba
RC tank
Minichamps
Mini-Z
Tomica
Kyosho
Minichamps
Futaba
Choro-Q
Tomica
Mini-Z
Tomica
Minichamps
Tomica
Mini-Z
Kyosho
Minichamps
RC Tank
RC Tank
Mini-Z
Tomica
Mini-Z
Minichamps
Futaba
Futaba
Tomica
Minichamps
Mini-Z
Futaba
Mini-Z
Futaba
Tomica
Kyosho
Mini-Z
Tomica
MIni-Z
Futaba
Mini-Z
RC Tank
Futaba
Minichamps
Mini-Z
Mini-Z
Futaba
Futaba
RC Tank
RC Tank

Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q
Choro-Q

January 13, 2009 8:45 PM  
Blogger ATField said...

runescape money
runescape gold
runescape money
buy runescape gold
buy runescape money
runescape money
runescape gold
wow power leveling
wow powerleveling
Warcraft Power Leveling
Warcraft PowerLeveling
buy runescape gold buy runescape money runescape items
runescape accounts
runescape gp
dofus kamas
buy dofus kamas
Guild Wars Gold
buy Guild Wars Gold
lotro gold
buy lotro gold
lotro gold
buy lotro gold
lotro gold
buy lotro gold
runescape money
runescape power leveling
runescape money
runescape gold
dofus kamas
cheap runescape money
cheap runescape gold
Hellgate Palladium
Hellgate London Palladium
Hellgate money
Tabula Rasa gold tabula rasa money
Tabula Rasa Credit
Tabula Rasa Credits
Hellgate gold
Hellgate London gold
wow power leveling
wow powerleveling
Warcraft PowerLeveling
Warcraft Power Leveling
World of Warcraft PowerLeveling World of Warcraft Power Leveling runescape power leveling
runescape powerleveling
eve isk
eve online isk
eve isk
eve online isk
tibia gold
Fiesta Silver
Fiesta Gold
Age of Conan Gold
buy Age of Conan Gold
aoc gold

呼吸机
无创呼吸机
家用呼吸机
呼吸机
家用呼吸机
美国呼吸机
篮球培训
篮球培训班
篮球夏令营
china tour
beijing tour
beijing travel
china tour
tibet tour
tibet travel
computer monitoring software
employee monitoring

January 13, 2009 10:12 PM  
Blogger  said...

A片,A片,成人網站,成人漫畫,色情,情色網,情色,AV,AV女優,成人影城,成人,色情A片,日本AV,免費成人影片,成人影片,SEX,免費A片,A片下載,免費A片下載,做愛,情色A片,色情影片,H漫,A漫,18成人

a片,色情影片,情色電影,a片,色情,情色網,情色,av,av女優,成人影城,成人,色情a片,日本av,免費成人影片,成人影片,情色a片,sex,免費a片,a片下載,免費a片下載

情趣用品,情趣用品,情趣,情趣,情趣用品,情趣用品,情趣,情趣,情趣用品,情趣用品,情趣,情趣

A片,A片,A片下載,做愛,成人電影,.18成人,日本A片,情色小說,情色電影,成人影城,自拍,情色論壇,成人論壇,情色貼圖,情色,免費A片,成人,成人網站,成人圖片,AV女優,成人光碟,色情,色情影片,免費A片下載,SEX,AV,色情網站,本土自拍,性愛,成人影片,情色文學,成人文章,成人圖片區,成人貼圖

交友,AIO交友愛情館,AIO,成人交友,愛情公寓,做愛影片,做愛,性愛,微風成人區,微風成人,嘟嘟成人網,成人影片,成人,成人貼圖,18成人,成人圖片區,成人圖片,成人影城,成人小說,成人文章,成人網站,成人論壇,情色貼圖,色情貼圖,色情A片,A片,色情小說,情色小說,情色文學,寄情築園小遊戲, 情色A片,色情影片,AV女優,AV,A漫,免費A片,A片下載

January 15, 2009 8:43 AM  
Anonymous buy wow gold said...

Today, the Microsoft-owned in-game ad agency said that it has signed an exclusive multiyear agreement with Blizzard. Azerothians opposed to seeing in-game ads in their localworld of warcft goldwatering holes need not worry, however, because the deal is limited to Blizzard's Web sites and Battle.net,the game maker's online-gaming hub. Terms of the deal were not announced, but Massive did note that the agreement is applicable to users in the US, Canada, Europe, South Korea, and Australia.
buy wow gold


Massive also said today that it would be extending its aforementioned deal with Activision to encompass an additional 18 games appearing on the Xbox 360 and PC.cheap wow goldThe agency didn't fully delineate which would fall under this deal, though it did call out Guitar Hero: World Tour, James Bond: Quantum of Solace, and Transformers: Revenge of the Fallen,buy wow items as well as games in its Tony Hawk and AMAX Racing franchises.Shortly before Activision and Vivendi announced their deal of the decade,wow power levelingthe Guitar Hero publisher signed on to receive in-game advertisements from Massive Inc for a number of its Xbox 360 and PC games. A bit more than a year later, Massive is now extending its reach to Activision's new power player, Blizzard Entertainment.buy wow gold from our site ,you'll get more surprises!

January 15, 2009 8:08 PM  
Anonymous Anonymous said...

搬家
搬家
搬家公司
徵信社
徵信
彩妝造型
新娘秘書
票貼
室內設計
室內設計
徵信
徵信社
外遇
徵信
徵信社
外遇
搬家
搬家
花蓮民宿
花蓮民宿
免費a片
a片
免費av
色情影片
情色
情色網
色情網站
色情
成人網
成人圖片
成人影片
18成人
av
av女優

情慾
走光
做愛
sex
H漫
免費a片
a片
免費av
色情影片
情色
情色網
色情網站
色情
成人網
成人圖片
成人影片
18成人
av
av女優

情慾
走光
做愛
sex
H漫
a片
アダルト
アダルト
アダルトサイト
アダルトサイト
離婚
抓姦
外遇蒐證
外遇抓姦
外遇
侵權
仿冒
應收帳款
工商徵信
Shade sail
nike shoes
水泵
电动隔膜泵
自吸泵
离心泵
磁力泵
螺杆泵
化工泵
水泵
电动隔膜泵
自吸泵
离心泵
磁力泵
螺杆泵
化工泵
水泵
电动隔膜泵
自吸泵
离心泵
磁力泵
螺杆泵
化工泵
隔膜泵
气动隔膜泵
隔膜泵
气动隔膜泵
隔膜泵
气动隔膜泵
a片
成人網站
成人影片
寵物用品
情趣用品
情趣用品
MBA
在职研究生
在职博士
補習班
花店
花店
補正下着
中古車買賣
貸款
婚紗
婚紗攝影
補習班
留學
情色
情色
百家乐
轮盘
21点
德州扑克
百家乐系统
真人娱乐场
百家乐
足球
德州扑克
电子游戏
英格兰超级联赛
德国甲组联赛
意大利甲组联赛
西班牙甲组联赛
法国甲组联赛欧冠杯
英超
足球比分
足球彩票
体育彩票
即时比分
堆高機
婚禮佈置
宜蘭民宿推薦
寵物用品
情趣用品
情趣用品
坐月子
植牙
牙齒矯正
租屋
催眠
房屋出租
租房子
xo醬
牛軋糖
牛嘎糖
代償
房屋貸款
信用貸款
失眠
減肥
眼鏡
金門高梁酒
變頻洗衣機

減肥
眼鏡
太陽餅
月餅

January 19, 2009 6:28 PM  
Anonymous Anonymous said...

A片,A片,成人網站,成人漫畫,色情,情色網,情色,AV,AV女優,成人影城,成人,色情A片,日本AV,免費成人影片,成人影片,SEX,免費A片,A片下載,免費A片下載,做愛,情色A片,色情影片,H漫,A漫,18成人

a片,色情影片,情色電影,a片,色情,情色網,情色,av,av女優,成人影城,成人,色情a片,日本av,免費成人影片,成人影片,情色a片,sex,免費a片,a片下載,免費a片下載

情趣用品,情趣用品,情趣,情趣,情趣用品,情趣用品,情趣,情趣,情趣用品,情趣用品,情趣,情趣

A片,A片,A片下載,做愛,成人電影,.18成人,日本A片,情色小說,情色電影,成人影城,自拍,情色論壇,成人論壇,情色貼圖,情色,免費A片,成人,成人網站,成人圖片,AV女優,成人光碟,色情,色情影片,免費A片下載,SEX,AV,色情網站,本土自拍,性愛,成人影片,情色文學,成人文章,成人圖片區,成人貼圖

情色視訊,美女視訊,辣妹視訊,視訊聊天室,視訊交友網,免費視訊聊天,視訊交友90739,視訊,免費視訊,情人視訊網,視訊辣妹,影音視訊聊天室,視訊交友,視訊聊天,免費視訊聊天室,成人視訊,UT聊天室,聊天室,豆豆聊天室,色情聊天室,尋夢園聊天室,聊天室尋夢園,080聊天室,080苗栗人聊天室,上班族聊天室,小高聊天室

6K聊天室,080中部人聊天室,聊天室交友,成人聊天室,中部人聊天室,情色聊天室,AV女優,AV,A片,情人薇珍妮,愛情公寓,情色,情色貼圖

January 20, 2009 11:55 PM  
Anonymous website design nyc said...

nice post

January 21, 2009 10:01 PM  
Anonymous Anonymous said...

 The Foreign wow gold Ministry also wow gold protests thewow gold denial by Israeli wow gold authorities of access to Gaza wow goldby an emergency wow goldmedical team of thedofus kamas Internationalkamas dofus Committee of dofus kamasthe Red Cross."Although wow gold all conditions

January 24, 2009 9:41 PM  
Anonymous Anonymous said...

 "Rocket fireugg boots by Hamas aswholesale ugg boots well as IsraeliWholesale handbags military operations wholesale clothingmust stop in Wholesale jewelryorder to put wholesale electronicsan end to the wholesale clothingsuffering inflicted wholesale handbagson civilianwholesale furniture populations," the Wholesale jewelrySwiss Foreign Ceramic tileMinistry said inMicro sd cards a statement "Theskin care products cessation of High pressure blower hostilities mustchina wholesale guarantee the wholesale shoes immediate reopening wholesale clothing of all Gaza ghdcrossing points ghdand the liftingreplica handbagsof the blockade replica watchesin order toReplica rolex watchesallow rapid deliveryReplica Watches of humanitarian

January 24, 2009 9:46 PM  
Anonymous Anonymous said...

 Heavy civilian world of warcraft gold casualties incheap wow gold the territorywow power leveling packed with 1.5 millionbuy wow gold people could wotlk gold increase world wow wotlk pressure ongold wow Israel towow gold kaufen halt its biggestworld of warcraft gold military operation buy wow gold in Gazabuy wow gold in fourwow power leveling decades.Theworld of warcraft gold fighting holdswow gold political risks wow power leveling for Israeli leaderswow power leveling before an electionwow leveling
next month if

January 24, 2009 9:49 PM  
Anonymous Anonymous said...

Switzerlandmaple Story mesoscalls for ffxi gilimmediate flyff penyacease-fire inffxi gil Gaza he Swissdofus kamas government onbuy dofusSunday called for dofus kamasan immediate cessation achat kamas of hostilities dofus kamasin Gaza in orderdofus kamasto relieve the sufferingkamas dofus of local civilians and to guarantee humanitarian access.

January 24, 2009 9:49 PM  
Blogger jackson said...

雷射溶脂,台中隆鼻,果凍隆乳,改運整型,自體脂肪移植,雷射溶脂,台中隆鼻,果凍隆乳,改運整型,自體脂肪移植,雷射溶脂,台中隆鼻,果凍隆乳,改運整型,自體脂肪移植,雷射溶脂,台中隆鼻,果凍隆乳,改運整型,自體脂肪移植,雷射溶脂,台中隆鼻,果凍隆乳,改運整型,自體脂肪移植,雷射溶脂,台中隆鼻,果凍隆乳,

改運整型,自體脂肪移植,雷射溶脂,台中隆鼻,果凍隆乳,自體脂肪移植,自體脂肪移植,雷射溶脂,台中隆鼻,果凍隆乳,改運整型,自體脂肪移植,雷射溶脂,台中隆鼻,果凍隆乳,自體脂肪移植,自體脂肪移植,雷射溶脂,台中隆鼻,果凍隆乳,改運整型,自體脂肪移植,雷射溶脂,台中隆鼻,果凍隆乳,改運整型,

婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,

婚紗,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,新娘造型,婚紗,婚禮顧問,

整型,水噹噹,貸款,貸款,信用貸款,宜蘭民宿,花蓮民宿,未婚聯誼,網路購物,珠海,下川島,常平,珠海,澳門機票,香港機票,婚友,婚友社,未婚聯誼,交友,婚友,婚友社,單身聯誼,未婚聯誼,未婚聯誼, 婚友社,婚友,婚友社,單身聯誼,婚友,未婚聯誼,婚友社,未婚聯誼,單身聯誼,單身聯誼,

婚友,單身聯誼,未婚聯誼,婚友,交友,交友,婚友社,婚友社,婚友社,大陸新娘,大陸新娘,越南新娘,越南新娘,外籍新娘,外籍新娘,台中坐月子中心,搬家公司,搬家,搬家,搬家公司,線上客服,網頁設計,線上客服,網頁設計,網頁設計,土地貸款,免費資源,電腦教學,wordpress,人工植牙,關鍵字,關鍵字,seo,seo,網路排名,自然排序,網路排名軟體,

交友,越南新娘,婚友社,外籍新娘,大陸新娘,越南新娘,交友,外籍新娘,視訊聊天,大陸新娘,婚友社,婚友,越南新娘,大陸新娘,越南新娘,視訊交友,外籍新娘,網路排名,網路排名軟體,網站排名優化大師,關鍵字排名大師,網站排名seo大師,關鍵字行銷專家,關鍵字,seo,關鍵字行銷,網頁排序,網頁排名,關鍵字大師,seo大師,自然排名,網站排序,網路行銷創業,汽車借款,汽車借錢,汽車貸款,汽車借款,汽車借錢,汽車貸款,汽車貸款,

拉皮,抽脂,近視雷射,隆乳,隆鼻,變性,雙眼皮,眼袋,牙齒,下巴,植牙,人工植牙,植髮,雷射美容,膠原蛋白,皮膚科,醫學美容,玻尿酸,肉毒桿菌,微晶瓷,電波拉皮,脈衝光,英語演講,托福,Toastmaster,中和搬家,台北搬家,板橋搬家,新店搬家,酒店經紀,酒店經紀,酒店經紀,酒店經紀,關鍵字,關鍵字,seo,seo,網路排名,自然排序,網路排名軟體,英語演講,

January 25, 2009 3:14 AM  
Anonymous Anonymous said...

矢のように時の過ぎる毎日ブログ
豊かな日記
日記ノートのようなブログ
ブログを書く毎日
ブログ、もしくは落書き

January 27, 2009 6:40 AM  
Anonymous Anonymous said...

As Israel’s tanks and troops poured into Gaza on Saturday, acheter des kamasthe next phase in its fierce attempt to end rocket attacks, dofus kamasa question hung over the operation:acheter des kamas can the rockets really be stopped for any length of time while a political analyst, dofus kamasin the newspaper Haaretz on Friday. “No matter what you call it,” he added, “Hamas will obtain legitimacy.”

January 30, 2009 3:47 PM  
Blogger 信次 said...

情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,情趣,美國aneros,rudeboy,英國rudeboy,英國Rocksoff,德國Fun Factory,Fun Factory,英國甜筒造型按摩座,甜筒造型按摩座,英國Rock Chic ,瑞典 Lelo ,英國Emotional Bliss,英國 E.B,荷蘭 Natural Contours,荷蘭 N C,美國 OhMiBod,美國 OMB,Naughti Nano ,音樂按摩棒,ipod按摩棒,美國 The Screaming O,美國TSO,美國TOPCO,美國Doc Johnson,美國CA Exotic,美國CEN,美國Nasstoy,美國Tonguejoy,英國Je Joue,美國Pipe Dream,美國California Exotic,美國NassToys,美國Vibropod,美國Penthouse,仿真按摩棒,矽膠按摩棒,猛男倒模,真人倒模,仿真倒模,PJUR,Zestra,適趣液,穿戴套具,日本NPG,雙頭龍,FANCARNAL,日本NIPPORI,日本GEL,日本Aqua Style,美國WET,費洛蒙,費洛蒙香水,仿真名器,av女優,打炮,做愛,性愛,口交,吹喇叭,肛交,魔女訓練大師,無線跳蛋,有線跳蛋,震動棒,震動保險套,震動套,TOY-情趣用品,情趣用品網,情趣購物網,成人用品網,情趣用品討論,成人購物網,鎖精套,鎖精環,持久環,持久套,拉珠,逼真按摩棒,名器,超名器,逼真老二,電動自慰,自慰,打手槍,仿真女郎,SM道具,SM,性感內褲,仿真按摩棒,pornograph,hunter系列,h動畫,成人動畫,成人卡通,情色動畫,情色卡通,色情動畫,色情卡通,無修正,禁斷,人妻,極悪調教,姦淫,近親相姦,顏射,盜攝,偷拍,本土自拍,素人自拍,公園露出,街道露出,野外露出,誘姦,迷姦,輪姦,凌辱,痴漢,痴女,素人娘,中出,巨乳,調教,潮吹,av,a片,成人影片,成人影音,線上影片,成人光碟,成人無碼,成人dvd,情色影音,情色影片,情色dvd,情色光碟,航空版,薄碼,色情dvd,色情影音,色情光碟,線上A片,免費A片,A片下載,成人電影,色情電影,TOKYO HOT,SKY ANGEL,一本道,SOD,S1,ALICE JAPAN,皇冠系列,老虎系列,東京熱,亞熱,武士系列,新潮館,情趣用品,約定金生,約定金生,情趣,情趣商品,約定金生,情趣網站,跳蛋, 約定金生,按摩棒,充氣娃娃,約定金生,自慰套,G點,性感內衣,約定金生,情趣內衣,約定金生,角色扮演,生日禮物,生日精品,約定金生,自慰,打手槍,約定金生,潮吹,高潮,後庭,約定金生,情色論譠,影片下載,約定金生,遊戲下載,手機鈴聲,約定金生,音樂下載, 約定金生,約定金生,開獎號碼,統一發票號碼,夜市,統一發票對獎,保險套, 約定金生,約定金生,做愛,約定金生,減肥,美容,瘦身,約定金生,當舖,軟體下載,汽車,機車, 約定金生,手機,來電答鈴, 約定金生,週年慶,美食,約定金生,徵信社,網頁設計,網站設計, 約定金生,室內設計, 約定金生,靈異照片,約定金生,同志,約定金生,聊天室,運動彩券,大樂透,約定金生,威力彩,搬家公司,除蟲,偷拍,自拍, 約定金生,無名破解,av女優, 約定金生,小說,約定金生,民宿,大樂透開獎號碼,大樂透中獎號碼,威力彩開獎號碼,約定金生,討論區,痴漢,懷孕, 約定金生,約定金生,美女交友,約定金生,交友,日本av,日本,機票, 約定金生,香水,股市, 約定金生,股市行情, 股市分析,租房子,成人影片,約定金生,免費影片,醫學美容, 約定金生,免費算命,算命,約定金生,姓名配對,姓名學,約定金生,姓名學免費,遊戲, 約定金生,好玩遊戲,好玩遊戲區,約定金生,線上遊戲,新遊戲,漫畫,約定金生,線上漫畫,動畫,成人圖片, 約定金生,桌布,桌布下載,電視節目表, 約定金生,線上電視,約定金生,線上a片,約定金生,線上掃毒,線上翻譯,購物車,約定金生,身分證製造機,身分證產生器,手機,二手車,中古車, 約定金生,約定金生,法拍屋,約定金生,歌詞,音樂,音樂網,火車,房屋,情趣用品,約定金生,情趣,情趣商品,情趣網站,跳蛋,約定金生,按摩棒,充氣娃娃,自慰套, 約定金生, G點,性感內衣,約定金生,情趣內衣,約定金生,角色扮演,生日禮物,精品,禮品,約定金生,自慰,打手槍,潮吹,高潮,約定金生,後庭,情色論譠,約定金生,影片下載,約定金生,遊戲下載,手機鈴聲,音樂下載,開獎號碼,統一發票,夜市,保險套,做愛,約定金生,減肥,美容,瘦身,當舖,約定金生,軟體下載,約定金生,汽車,機車,手機,來電答鈴,約定金生,週年慶,美食,徵信社,網頁設計,網站設計,室內設計,靈異照片, 約定金生,同志,聊天室,約定金生,運動彩券,,大樂透,約定金生,威力彩,搬家公司,除蟲,偷拍,自拍, 約定金生,無名破解, av女優,小說,民宿,約定金生,大樂透開獎號碼,大樂透中獎號碼,威力彩開獎號碼,