Domain: paulgraham.com
Stories and comments across the archive that link to paulgraham.com.
Comments · 1,105
-
Re:Pretty CoolIt did a great job at bringing all the power of Lisp with all the symplicity of HTML. All the equivalents of HTML elements were just lisp-like function calls. Something like
(text this is (font color=red size=+2 big red text))
It is natural way to write HTML generating code in Common Lisp. Powerful macros make the task very easy.
Look into Graham's book ANSI Common Lisp. There is an example of HTML generating code.
Examples from the book are available online -
A plea to all up-and-coming language designersBefore you go off and try to code up the Next Big Thing, please do all of us a favor and learn a little bit about Lisp.
Don't learn about it from your officemate, or your college instructor, especially if they say they haven't used it in over ten years. You wouldn't believe the opinions of someone who learned C from K&R without upgrading their knowledge, would you?
Instead, start from places like the ALU web site or Cliki or Paul Graham's Lisp FAQ.
If you do this right, you will learn that computer languages:
are not inherently fast or slow - implementations are fast or slow, not languages
can be both dynamic and have good performance
can be cross-platform without swallowing POSIX whole
can have multiple inheritance without damaging your brain
can be object-oriented without being object-obsessed
If you like, you can quit as soon as you understand how static scoping and closures work - at least that way you will avoid the primary mistake in pretty much every recent scripting language.
There is a small risk you will become a SmugLispWeenie by doing this, so be forwarned. -
Re:Censorship
In fact, most censorship comes from everyday people. The whole "political corectness" movement sought to censor our everyday speech and the worst part is that we're supposed to police each other. Paul Graham wrote a little paper on this and other forms of censorship. It has appeared previously on
/. . -
Re:AOL Instant DoS v2.0I appreciate the joke and all, but if a FFB was implemented properly it wouldn't work in reality. This issue has alredy been identified and it's been recognized that before crawling a website any links would have to be matched against a blacklist (or blacklists, to prevent spammers from easily gaming any one particular filter technique). While SCO are indeed assholes, they aren't spammer assholes (yet, but with those guys you never know...) and so most likely won't be blacklisted.
That said, I went to www.sco.com and couldn't find the pictures you were talking about. Do I need to get some kind of free trial membership or something to see 'em?
-
Re:Damn it!
Could someone please enlighten me?
Read this essay if you missed it when it was posted: What You Can't Say -
Book recommendations
I thought about coming up with a syllabus for myself of C, Haskell, LISP and Perl (which just evades me....)
I'd like to strongly recommend some books. The first is Modern C++ Design by Andrei Alexandrescu. The second is On Lisp by Paul Graham. In conjunction with that, you will need an introductory text on Lisp if you don't already know it and a good book on C++ templates. While I don't know what the best Lisp text currently in print is, I'd be willing to give Graham's ANSI Common Lisp a try on the strength of his other book. And C++ Templates: A Complete Guide by Vandevoorde and Josuttis illuminates a lot of dark corners in templates and explains some new features.
In the end, the goal is to understand how many times Graham and Alexandrescu are talking about the same things using very different languages. C++ templates are in many important ways a compile-time, functional macro language on top of C++ that implement many of the features of Lisp macros. For what it's worth, Bruce Eckel has mentioned this generic programming link in the context of discussing Java generics. -
Book recommendations
I thought about coming up with a syllabus for myself of C, Haskell, LISP and Perl (which just evades me....)
I'd like to strongly recommend some books. The first is Modern C++ Design by Andrei Alexandrescu. The second is On Lisp by Paul Graham. In conjunction with that, you will need an introductory text on Lisp if you don't already know it and a good book on C++ templates. While I don't know what the best Lisp text currently in print is, I'd be willing to give Graham's ANSI Common Lisp a try on the strength of his other book. And C++ Templates: A Complete Guide by Vandevoorde and Josuttis illuminates a lot of dark corners in templates and explains some new features.
In the end, the goal is to understand how many times Graham and Alexandrescu are talking about the same things using very different languages. C++ templates are in many important ways a compile-time, functional macro language on top of C++ that implement many of the features of Lisp macros. For what it's worth, Bruce Eckel has mentioned this generic programming link in the context of discussing Java generics. -
Lisp is a great tool
Read Paul Graham's article Beating The Averages.
-
Rebuttal/Solution/Sales pitch-mod up if merited...
My credentials are years of programming experience and months of research invested in CF13(TM), my solution to English-language spam.
Part I of the article:
Identity theft - The ones I got were relayed through a 3rd party machine and deemed spam. Should I ever get a 'real one' that would mean either a spammer is using a stolen/throwaway account at a domain with mailserver(s) and easily traceable, or, worse yet, an 'inside job' by someone unscrupulous at the sender domain. The rule of thumb is to not give out sensitive information via email no matter how convincing said email is.
Viruses - All attachments are treated as 'text files' by my program and are 'harmless' provided a certain registry key affecting Notepad hasn't been changed/hijacked (see my website for more details). Also, all email is downloaded and treated as text files, making HTML related exploits impossible as well.
Sender - Anonymous senders are treated as spam. No exceptions. I've only gotten spam from such senders the rare times I recived them before I wrote my program.
Recipient - No 'BCC:' email if desired. In the past, such email I've recieved were spam.
Word lists - My program uses two of them. One of them is the single word list from Grady Ward's Moby project. The other file contains 'spam words' that appear in the first file. Both lists make 'hashbusting' and 'L33T' spelling, two tried and true spammer tactics, impossible.
Black/White lists - Supported at the email address and email domain level. I decided not to support IP level black/whitelisting since the IP source of spam is irrelevant--it is the content of spam that is relevant. Likely, such spam is deemed spam at the email header level anyway--or at the email message content level if need be.
Hash-tables - Pointlest due to 'hashbusting' and 'L33T' spelling. Unecessary in my program.
AI/Probabilistic systems - I researched the Bayesian approach and decided not to use it in my program. Though effective at first, spammers have thoroughly 'poisoning' this method of spam detection. Also, this method requires additional disk storage space, processor time (to do the math calculations on top of the pattern matching), and training time to be effective.
Bypassing filters - A default install of my program should catch almost all spam. Should any get through, one could read through the spam and identify new 'spam words' to be added to that list.
False-positives - Alas, to avoid deleteing such email at the server level, All such email is downloaded and processed. My program displays the subject lines of email messages it process and logs them to a separate file for further review if needed.
Spam filters do not stop spam - Agreed, but they can be as effective as my program which only has one known form of spam it cannot detect sent by a spammer from a stolen/throwaway account.
Reverse lookup - Not supported in my program to avoid slowing my program down and not overburdening the (likely) overtaxed DNS server system. This should be handled at the mailserver level to head off the sending of spam in the first place.
Part II of the article:
Challenge-Response - I considered using this but decided against it. In doing so I avoid 'mail loops' with another Challenge-Response system and outright rejection by email correspondents who hold a dim view of this antispam system.
Computational challenge: Another idea that fell by the wayside due primarily to the wide disparity in the CPU clock speeds of user's systems.
Cryptography - Not used by my program to process incoming email and thus unecessary. The 'bu -
Re:I want an anti-spam tool to return fire
I know that comment was meant to be cute but there has been real thought into fighting back spammers.
-
Have him read this
Why Nerds are Unpopular. By appealing to his intellect, you can show him the forces at work at school, and why he has to conquer them. It's silly asking a nerd to become not-a-nerd because its "the right thing to do" (which is what most arguments amount to)... but show him how popularity works, and how he might take advantage of it for himself, and you may get somewhere.
-
Tell Him to Do His Time & Get Out
Tell him not to worry about it. School's just a holding pen for all the monkeys he's surrounded by. The following article summarizes it better than I can.
Why Nerds Are Unpopular
And what's with all these suggestions about getting a girlfriend. What kind of advice is that? Women are the biggest waste of time in existence. 90% of men's motivation for sex is sexual, learn to make do with our hand and a vat of vasoline and imagine the time savings. -
Asberger's Syndrome: Nerds' vertical dyslexia?
Both of these came from Slashdot
why nerds are unpopular
Slashdot on Aspergers The word has a P in it not a B!
I think what helped me the most, putting social skills into practice was joining a toastmasters organisation, meetings include regular and positive feedback on your communication skills, with the self restraint imposed by people who know they're going to be next on the "evaluation" roster.
Most nerds are never going to be interested in doing what it takes to be popular all the time, there are just so many other things that are more important. But they can be taught what it takes to get a "normal" person's attention and help when they need it. Basic psychology would help. The other thing is they need to learn that there are a lot more lies out there than truth. What is in novels about heros is much more how the writer (usually another nerd) wishes the world would be, not how it actually is.
The most important thing a kid can learn is that humans aren't the least bit rational or reasonable. They're often emotionally or chemically driven. Example, you might be explaining perfectly rationally why it is important to have a van for work, but your boss may have just experienced a tradgedy involving vans and refuses to budge. You might present to a committee, that preventing accidents costs less than cleaning up after them. But all the committee will see is a cost now that might not be a cost later (they're wrong but they won't see it).
Nerds like everyone else, operate well on the whats-in-it-for-me. They know not to judge a book by its cover. They may not know that everybody does judge a book by its cover - at least at first. So to get a kid to take time over his appearance is as simple as getting him or her to understand that s/he will be teased if s/he doesn't make any effort get it right.
Only put your hand up in class to answer a question once per lesson.
Don't make it obvious that you know heaps more than other kids. They will be annoyed and then nasty.
Do help the slower kids, and do keep this quiet. Helping other kids helps you develop social skills and it also helps you learn, and it helps keep the whole class moving a bit quicker.
If your class is going too slowly (you're bored), do ask your teacher for extra reading/exercises, and do it in class - you will earn points with your peers for appearing to not be paying attention.
Remember the right university will be full of kids just like you, and all these stupid kids in school won't matter any more - except when you're trying to get a research grant. -
They don't want it enough
I will point you to a well-reasoned essay by Paul Graham entitled Why Nerds Are Unpopular. -
Re:Functional Programming missed the boatIf you examine these "fashions", you'll see many examples of Philip Greenspun's adage that "The exciting thing in computer science is always whatever we tried 20 years ago and didn't work". Industry is ever rediscovering and popularizing old ideas from academia. Even Java, while primitive, took some of its main selling points (garbage collection, portable bytecode) from the ivory tower. In Paul Graham's words, "the default language, embodied in a succession of popular languages, has gradually evolved toward Lisp". These are different ways of saying that if the ideas are good (and good ideas abound in the functional programming community), the mainstream will pick them up eventually.
Also, it's not exactly true that functional programming lacks a big-name sponsor. Haskell research and implementation is largely driven by Microsoft Research. This is not the same as promoting (something like) Haskell to working programmers, but it suggests that Microsoft has its eye on doing so someday.
-
Hackers and Painters
Hackers and Painters by Paul Graham is a great read on why artists and hackers have similar interests and mindsets. A must-read for hackers.
-
Hackers and Painters
Hackers and Painters by Paul Graham is a great read on why artists and hackers have similar interests and mindsets. A must-read for hackers.
-
Re:Securing C++ through hardware
I think you are forgetting something though... C and C++ are the most powerful higher level languages that exist today... Why? Because with them... you can easily mess everything up!
Not so. Lisp is far more powerful than C/C++. Macros alone are evidence of this. Paul Graham wrote an excellent piece on this here.
(Note: this is not a troll. I said "more powerful" not "better." The first is a quantitative fact, the second an opinion that has no meaning.) -
Re:The only answer:As you probably know (given your learning of Scheme), it gets really cool if you are not bound by the decisions of the language designer in what paradigms you can use.
I am a happy user of Common Lisp, which supports imperative, functional, OO etc. out of the box. But what is more important is that the language itself is extensible. It is a rather common approach to write applications by first extending the language, and such extensions can go quite far. For example, people have integrated prolog style logic programming into Lisp, there are libraries that support nondeterministic evaluation and backtracking, prototype-based alternatives to the native OO system, dataflow, you can use it as a dynamic markup language etc. The nice thing is that all this gets part of the Lisp system just like the builtins, so that a programmer can mix and match all of these, and the features of CL itself.
Paul Graham has written a really cool book on that topic, which is freely available.
-
Re:it's true
So, if any Micro$oft employees have ever looked at Linux kernel source, they are no longer allowed to work on Windows 'cause now they are tainted?
Microsoft may do that. According to a footnote in an essay by Paul Graham:"I've been told that Microsoft discourages employees from contributing to open-source projects, even in their spare time. But so many of the best hackers work on open-source projects now that the main effect of this policy may be to ensure that they won't be able to hire any first-rate programmers."
-
Re:The hilarious irony
the 'politically correct' movement
Has there ever been a 'politically correct' movement of substantial size? Unlikely.
The expression was appopriated as a lazy and hollow (but effective) smear against anything the right wing don't like.
Want to gain easy points? Accuse your opponent/the thing you dislike of being 'politically incorrect' and for *absolutely no cost* you get to become the heroic figure making a lone stand against the forces of communism, or whatever.
It's clever, because you don't have to debate the specifics of your argument. There's a good bit about this technique here (see 'Viso Sciolto').
However, since it permeated the mainstream so extensively, 'Politically Correct' has tended to be used by people who are lazy and/or stupid, like the celebrity chef who was cooking something with cream, and pointed out that "I know it's politically incorrect, but.. yadda yadda".
No, it's your choice. If you want to guzzle 5 pints of cream a day, and die of obesity or whatever, that's your problem.
Of course, then you can sue the cream makers. Genius! You get to play the "don't tell me what I can and can't do" card for years, and when the consequences of your actions hit, you can whine and blame the food-makers for not protecting you.
Personally, I'd rather see junk-food manufacturers sued for advertising shitty food to kids or making misleading claims. -
Really -- the rich and cutting edge disagree
I and others disagree. Here's two:
Consider Paul Graham: Beating the Averages. Considering that he's the kind of guy that gets invited to MIT as a language wizard (along with Guy Steele, David Detlefs, Martin Rinard, Jonathan Rees, and David Moon), and considering that he has a net worth in the (hundreds of) millions, I'll go with his choice: abstraction rules.
Consider Erann Gat from JPL (the guys who get to send robots to Mars and build autonomously controlled space probes) disagrees and empirically proves it.
Diamond Walker emphatically endorses LISP - his story is very compelling.
The list goes on and on: Dan Friedman, Mitchell Wand, Shriram Krishnamurthi, Christian Quiennec ...
But, to paraphrase Graham, if you don't know these people I guess I don't have to worry about you. -
Re:Only if you're the author.
As Paul Graham has pointed out, this only works if you use the 'ham' words from the corpus. Which are highly specific, clearly. Graham points out that if you send him mail with the word 'lisp' in it, it gets treated as ham, because no spammer is interested in programming.
He also points out that even if you put in a large number of neutral words (which are easier to guess), they won't outbalance the spammy words. For it is difficult to sell viagra without using the word 'viagra' - and the word 'vi@gra' is even more incriminating, as it will never occur in normal email. -
Re:The upside is...
"Thank god for people that actually solve hard problems, like the people on Topcoder."
Went there, thought it was mildly interesting, and tried to sign up. The registration page had colors that made its text virtually impossible to read without doing Select All or forcing colors and background to local values.
The default programming language selection offered C++, C# and Java. Java? Paul Graham rightly points out that Java was specifically created for mediocre programmers.
Their Submit button doesn't work if JavaScript isn't enabled. I surf with JS disabled because I'm not a complete idiot. When you find yourself trapped in a filled-out form with a nonfunctional Submit button, Reload/Refresh to get JS turned on also wipes everything you have already entered into the form.
I closed the browser and wrote them off as LowCoders. Maybe they should start with the not-hard problem of fixing their broken Website. Hey! They could even use that as the goal of one of their upcoming competitions, killing two birds with one stone! -
Re:For some books it's worth itPersonally, I think it might be worth the price if someone wrote a Haskell book that could actually explain to me what a monad is. I tried to learn how to use them a few months ago. I still sometimes wake up in a cold sweat with nightmares of monads eating my brain.
Given a choice, though, I'd prefer an alpha release of Arc. No monads there! Hahahahahahaha!
-
Re:The latest big spam technique...How did this post get modded up?
This is old news, and has been discussed ad-nauseum in every developers forum for anti-spam software that I've seen.
The "random words" technique is almost completely ineffective at "poisoning" a Bayesian or other statistical filter, presuming it is well-trained. All the random words score in the middle, contributing almost nothing to the final message score. Occasionally, a very "hammy" word will be chosen by the spammer, but just as frequently, a very "spammy" word will show up. It's a wash as far as the filter is concerned.
What's probably happening is that spammers are defeating the program's HTML or e-mail header parser, not the Bayesian model in general. Pick a filtering program with a better parser, and you'll do much better. Try SpamBayes.
-
Re: on the vote
Very well said, albeit depressing as hell. I'm not American, but this is rampant in the EU too. Politicos, businesses and media, all busy creating artificial focal points of power and authority. Whether it's presidencies or punch-line agendas, dumbed-down 'news' or brands as identity/lifestyle.
Reminds me of the Facade pattern ("...can be used to simplify a number of complicated object interactions into a single interface."). We, the public, only get to play with facades; the important stuff abstracted away, protected and out of reach.
It makes perfect sense, that searching for any single or few points of control/power (a president, a product/service/brand, a standard 'journalistic analysis', etc.) is naive and simplifying. As is easy to see, changing a few pieces on the chessboard doesn't change the game; we'/they're still caught playing chess...
Making noise and protesting probably is close to all we can do. Though even that can get dangerous quickly, especially in a society with fewer rights to privacy and with eroded individual and 'cultural' freedoms. Something we discussed here, about Paul Graham's fine essay What You Can't Say
It increasingly looks like "the system" fights hard to file down the teeth on the parts of democracy that can bite back and hurt "the system" itself..
Jesus, this is both frightening and depressing. And it's back to work in less than 8 hours. Unh. -
Re:The problem with this technique
A solution to this problem:
In each corpus, create a new 'virtual' message (which will be calculated during the retraining phase). The contents of this message are 1 occurrence each of each word that occurs in the other corpus.
This will mean that when a word has only occurred a few times in one corpus, yet still never at all in the other, its score will be close to 0.5, rather than the 0.9999 (or similar) that traditional techniques would assign to it. Only as the corpus sizes increase and the number of messages containing the word increase with them will the probability deviate towards either 0 or 1 (neither of which will it ever quite reach).
I believe this is the technique Paul Graham is feeling towards in Better Bayesian Filtering when he says "There are theoretical arguments for giving these two tokens substantially different probabilities". -
Re:Should be easy to block
Most of them are using random word sequences; the random strings like xdwexe are not usually an important percentage of the overall text, no more than names might be. Besides, how large a corpus of "valid" words do you want to use? The OED weighs in at almost 0.5M; and then with another 0.5M uncatalogued scientific terms and neologisms, plus common mis-spellings and typos and jargon and dialect orthography (like our color, meter, checker, jail etc. for the Brits colour, metre, chequer, gaol)
...If you don't want to keep the entire corpus of "valid" words in your code, you're going to have to make some compromises. Maybe you'll want to exclude words like "thou," "hauberk," and "coney." Not so good if you're subscribing to an Early Modern Literature listserv.
So you're going to need some logic to determine whether or not a "valid" word that occurs in a message is meaningful. Here's how one rather well known discussion of Bayesian filtering deals with this issue (of unknown words); this is precisely the logic that spammers with random meaningful words are exploiting:
One question that arises in practice is what probability to assign to a word you've never seen, i.e. one that doesn't occur in the hash table of word probabilities. I've found, again by trial and error, that
.4 is a good number to use. If you've never seen a word before, it is probably fairly innocent; spam words tend to be all too familiar.So, what if all the words are valid, but the sentences aren't? Grammar checkers involve a lot more logic than spellcheckers do, and are consequently a lot less accurate. Fact is, you can also fool a grammar checker filter: just pad with random quotations from novels, etc. instead of padding with random words or random misspelled strings.
So the Bayesian approach of identifying spam and ham words is a pretty effective one, given the limitations.
-
Re:why not filter out 1337 sp3@k?
Why bother? A decently trained Bayesian filter will be able to recognize a spam that contains a misspelled word or two, or one that contains substitutions of similar characters. Then it will learn that those modified forms are a very strong indicator of spam. As Paul Graham (the main early advocate of Bayesian Filters) has pointed out, there are legitimate reasons why you might see a mention of "Viagra" in your email, but no legitimate reason that you would see "V1agra", "\/iagra", "Vi@gra", or the like. Instead of slipping by my Bayesian filter, those variants actually stand out as particularly strong spam indicators.
-
Re:why not filter out 1337 sp3@k?
Why bother? A decently trained Bayesian filter will be able to recognize a spam that contains a misspelled word or two, or one that contains substitutions of similar characters. Then it will learn that those modified forms are a very strong indicator of spam. As Paul Graham (the main early advocate of Bayesian Filters) has pointed out, there are legitimate reasons why you might see a mention of "Viagra" in your email, but no legitimate reason that you would see "V1agra", "\/iagra", "Vi@gra", or the like. Instead of slipping by my Bayesian filter, those variants actually stand out as particularly strong spam indicators.
-
Bayes filters deal with it fine
Paul Graham mentions the technique in this article, pointing out that the Bayesian filters look for words that commonly appear just in spam or just in non-spam. The random words are common in neither, so are simply ignored by the filters. As a technique, the random words would get past a filter that looks for some spammy to non-spammy word ratio. But that's not how the spam filters work.
-
I think everyone here
including RMS should go on and re-read : this article that was discussed earlier on
/.
Is it me, or is he saying something unfassionable and something that will come true in the future? I suppose he grew out of the time where he could only discuss his ideas with only a few friends in the kitchen, but it looks like the majority of us is still fighting for the 'earth is flat' model, where the reality is: Stallman just maybe right and what he says just may become the truth of the next century. -
Re:What I encountered yesterday
Paul Grahm wrote an explaination of why this sort of random introduction of words into spam doesn't fool a good Bayesian filter in this article.
So Far, So Good
The more they try to fool the filter, the better the filter becomes at recognizing this sort of "random" word placement. Interesting read. -
No one's said it?It's so relevant:
Let's write the next version of our application on Lisp!
Yeah, I haven't been threatened with losing my job for that. Nope, no heresy, there. -
Some stats
Hey. I get a fair amount of spam, but I am not afraid. It is all filtered. You can see some recent ones at drpa.us/spam.html. Try to send me an email, and check if it gets through! You can also see a plot of my daily spam frequency for the last 400 days or so at drpa.us/spam0.jpg. Advice to all: start saving all your spam and good mail in separate folders. The more you save, the easier it is for a smart filter to automatically identify them. And many thanks to Paul Graham for teaching us all the Bayesian solution (we just need to listen).
-
Re:Bayesian SPAM filterPOPFile uses a different algorithm than TBird. POPFile is based on the IFile project while Mozilla/Thunderbird is based on Paul Graham's original 2002 essay "A Plan for Spam".
Paul Graham's ideas have undergone a lot of improvements. Some of the best improvements and tweaks have been implemented by the SpamBayes project. Their Outlook plugin makes Outlook the best spam solution that I have seen (better than SpamAssasin).
I don't know if it will help, but you can vote for the bug to improve Mozilla's spam algorithm.
-
Re:Bayesian SPAM filterPOPFile uses a different algorithm than TBird. POPFile is based on the IFile project while Mozilla/Thunderbird is based on Paul Graham's original 2002 essay "A Plan for Spam".
Paul Graham's ideas have undergone a lot of improvements. Some of the best improvements and tweaks have been implemented by the SpamBayes project. Their Outlook plugin makes Outlook the best spam solution that I have seen (better than SpamAssasin).
I don't know if it will help, but you can vote for the bug to improve Mozilla's spam algorithm.
-
Re:A new low
If you can drive up spammers' bandwidth bills and make the return less than $0, then you'd have something really nice going.
-
Re:A new lowWhat? Nice troll. Point out the word "taxing" in my post. I'll wait.
Okay, my fault for feeding the trolls, but:
When I talk about "attacking the economics of spam," what I mean is making it unprofitable to be a spammer. I think there are lots of ways to do this; taxing, while one way, is a particularly stupid and noxious method.
Here are things I think will work to varying degrees:
- Blacklists
- Spidering spammer websites
- Legal action (sadly, no URL...)
-
Re:So he's the one
-
We never needed this or any other law
Almost everyone is missing the fact that laws, even when well written and targeted, are poor substitutes for economic solutions when the undesired activity is economically driven and economic solutions are available. And this law seems particularly badly written. It is pointless to whine and wring our hands over this, since it's fundamentally bad policy to wait for someone else to save us from things we're unwilling to deal with ourselves. Anti-spam legislation was bound, if not to fail utterly, at least to start very badly, like Billy Bob's Mail Order Plans For Home Fusion Power. If you'd like to empower yourself, read the remainder of this post. If you'd just like to gain the satisfaction that there is hope,, read this post.
Why does spam exist?
Most spam seeks to sell something, directly or indirectly. Most spam solicits visits to what might be called "beneficiary Websites" -- the Websites where the touted products are actually sold, usually via e-commerce. Some small percentage of spam solicits responses by phone or fax, a smaller percentage by snail mail, and a very tiny percentage advises you to come to Jesus or some such with no response solicited.
So almost all spam exists because someone hopes to make money from it, and almost all spam solicits responses to beneficiary Websites.
Forget who sends it: Who is responsible for it?
OK, so the largest percentage of spam solicits visits to product or service Websites. Follow the money. Other than the rare "Joe job," such spam is obviously sent either by the Website operator or by a contractor acting on behalf of the Website operator. No one else stands to benefit from the responses to the spam, so no one else will lift a finger to attract traffic to the Website except in some very rare scenarios.
So the true beneficiary of the spam, who is also the party who funded sending the spam, is generally readily visible and reachable. The true beneficiary is almost always also the true source of the spam. The question is: knowing this, what can one do that will be effective?
Counterattack the source
Paul Graham, the researcher and LISP expert who advanced Bayesian filtering a little over a year ago, followed up a few months ago with a paper on Filters that Fight Back (FFB).
The fatal weakness in spam that attempts to attract visits to beneficiary e-commerce Websites is just that: it invites us to visit, and explicitly so. When we accept the invitation and visit the beneficiary Websites, the additional traffic marginally increases the costs of operating the Websites. "So what?" you might ask.
Here's what: the Websites count on the millions of recipients of the spam who are not interested, not to visit the Websites. The flip side of the near-zero cost of sending spam is the near-zero cost of the unresponsive among the recipients. The Website operators send or cause to be sent millions and millions of spam emails but they only have to pay for the server capacity and bandwidth for the tiny response rate from the morons who actually buy stuff. While we can't easily change the low cost of sending spam, we certainly can change the low cost of hosting the servers that have to handle the Web visits that can result from spam. We can do that simply by accepting the invitations contained in spam, and not only accepting the invitations but clicking on every link they have, to make sure to navigate through all their pages.
But that sounds like too much work!
Sure. And dangerous, too, because your browser may not be configured for maximum security. If it were, you wouldn't be able to surf most of the major sites on the Web. But there's a completely legitimate set of tools for downloading Websites for offline browsing. WebWhacker is an old one that
-
Re:Free and democratic?A footnote from Paul Graham's Plan for Spam:
As a rule of thumb, the more qualifiers there are before the name of a country, the more corrupt the rulers. A country called The Socialist People's Democratic Republic of X is probably the last place in the world you'd want to live.
-
Re:They SHOULD fire them
"Programmers that can follow an arbitrary coding standard are, in the long run, more useful than programmers that generate a lot of code that nobody can use."
You might be interested in Java then -- it was designed for use by teams of mediocre programmers, so should fit right in with your office philosophy:
Read the reasoning -
Re:Spam Rage?
Damn it, if spammers can finger us, why can't we go Soviet Russia on their amoral asses and finger them right back? Combine the email-initiated slashdot effect with a shitlist (also known as a blacklist of sites which you *can* visit when you recieve spams), and you can make spammers pay---literally.
-
Paul Graham's article on "Why Nerds are Unpopular"
I am surprised that no one has cited this article yet: Why Nerds are Unpopular.
Paul raises several ideas which are interesting...
Like a politician who wants to distract voters from bad times at home, you can create an enemy if there isn't a real one. By singling out and persecuting a nerd, a group of kids from higher in the hierarchy create bonds between themselves: attacking an outsider makes them all insiders. This is why the worst cases of bullying happen with groups. Ask any nerd: you get much worse treatment from a group of kids than from any individual bully, however sadistic.
-
It's NEW and DANGEROUS because it's the INTERNET!
Come on. I read through the whole article and didn't see a single thing that didn't happen when I went to school, pre-Internet. Or, for that matter, I didn't read anything that I didn't hear from my parents' stories about when they went to school.
The article spent four fifths of its copy trying to make out that teasing and gossip-spreading were something novel and Internet-age. Yeah, sure. Before text-messages, kids just had no way of insulting or passing information to each other. Certainly, no schoolgirl has ever been teased about her clothes, or boy about his sexuality, before the age of the Dark, Nasty Internet.
Children are vicious. They learn the need to establish a social hierarchy long before they learn empathy. Paul Graham covers this phenomenon quite effectively in one of his essays.
Sure, the "instant-on" thing is new, but really, kids will do exactly what adults do when they want to get away from unwanted IMs: go invisible, or register a second screen-name that only their friends know.
I'm not saying it's not a problem, but it's not a new problem. I abhor lazy journalism that finds sensationalism in dressing up something as old as time (pornography, bullying, copying music) in Internet clothes, just because it's easier to scare people that way.
Charles Miller -
Why Functional Programming Matters
Maybe not seminal or classic like many of the already cited papers, but I'm surprised nobody mentioned it yet. I'm learning Lisp and I was curious about what exactly is "functional programming" in practice. The 1984 paper was a great introduction, along with Graham's book On Lisp.
-
Winner for Most Elegant...
...has to go to:
"Recursive Functions of Symbolic Expressions and Their Computation by Machine" by John McCarthy 1960
Here was a professor who was analyzing Lambda Calculus mathematics and had written out a bunch of formulas to prove some mathematical theorems. Unbeknownst to him, he had invented arguably the most fundamental and elegant programming language possible by accident. Only after another mathematician had seen his ideas and said "Hey! these formulas are describing a computer language!" and wrote the formulas in the form of a computer program did they realize their discovery and called it LISP. That moment is now revered among LISPweenies everywhere!
In proper LISPweenie-troll mode, I hereby declare that LISP, invented in 1960, kicks the butt of C++, Python, Java, etc. etc. or any other language people have developed since. Read this article if you remained unconvinced:
Revenge Of The Nerds -
Euclid's Elements of programming languages...
McCarthy's paper on Lisp: Recursive Functions of Symbolic Expressions and Their Computation by Machine (Part I).
For a refreshing analysis of the paper by Lisp guru Paul Graham (the same guy who proposed the idea of Bayesian anti-spam filtering), see The Roots of Lisp.