Tariffs make things worse. It's just a way of stealing from local buyers to give (some smaller amount than was stolen) to local producers, thereby encouraging local producers to do less producing and more stealing, since stealing seems to work better.
Oh, good show! Now provide some concrete, real-world examples of how our 'brains' will allow us to compete with labor you can pay $2/hour.
Why, I know! Tariffs and restrictive trade policies! Problem solved!
That whole 'economics' thing got you stumped, eh? It's true that there are some people who I cannot imagine being highly paid (like all Americans) in a world of incredibly cheap automation and global price leveling. Fortunately, things are getting cheaper faster and faster, so this seems likely to solve itself, unless people like you (and Kerry, and Bush) manage to head prosperity off at the pass and beat it to death with tariffs and regulations.
From what I just read about Tapestry, it does seem very similar to what I intend PSILISP to be when it grows up. The most immediate difference, to me, is that I expect PSILISP to be less than 5,000 lines of code, where Tapestry is well over 50,000.
I started PSILISP mostly because I was frustrated with the prevalence of web frameworks that treated pages as having only the most tenous connection to other pages. That is, the decision of which code to run for this URL/form/session state combination was made too early in the response process, and usually depended almost entirely on the URL.
In any case, this is far off topic.
It's true that anything you can do with macros can be done with non-macrified languages (as far as I know). It's just that with macros, you can have the additions appear to be built into the language, and you don't force users to build object oriented code even where that's overkill. In PSILISP, I'm using macros to do the same sorts of things that I used to use mix-ins for, in Python, but now, I worry less about the details of how it's implemented (after I write it), since it's just like any other built-in.
Here's an example of a macro that doesn't something you can't do, as far as I know, in Python:
Suppose you're writing some larger app, and you'd like to have something happen whenever your app prints something (work with me, here; you can come up with a less contrived example of this, I'm sure).
So, everyplace you now have
(print (do-something variable-name)) ; in python this would be ; print do_something(variable)
you'd like it to save the variable name and value.
So, you can write an (untested) macro:
(defmacro print ((func var))
(let ((f (gensym))
(v (gensym)))
`(let ((,f,func)
(,v,var))
(save-value (format nil
"Called ~A with variable: ~A having value: ~A",f ',var,v))
(CL:print (,f,v)))))
to shadow the built-in print statement. Of course, this is a fairly fragile implementation of PRINT, and would break in lots of cases as written. However, you haven't had to change any of your original code, with the possibly hundreds of print statements like this, and now you're getting the formatted string in your logfile or database or whatever SAVE-VALUE does with it, and in that string is not only the variable value, but the source *name* of the variable as well!
How would I do this in Java? Could it even be done without choosing from the outset to use a non-builtin to do my low level printing? I'm quite sure you couldn't do this in Python without resorting to changing the builtin print function in C (for CPython).
The important thing is that you can build new language features for Common Lisp that are written in Common Lisp, and can be used exactly like any other language features. In fact, most of the "built in" functionality of Common Lisp can be implemented in terms of macros, though there are a few built-ins that are only possible as "special operators".
Okay. Here's an attempt at why macros are so useful:
It's very common for a developer to want to open a file, read from (or write to) it, and close it. No matter what happens (in this idiom) we always want to close our file. Errors or exceptions should not prevent the file from being closed, so, in most languages, we'd have to remember to close that file in every branch of our code.
Now, one solution to this would be to have open files be objects that know to close themselves when being garbage collected (Python does this, I think), but this means that if we have an error, and fail to remember to close the file, we're guaranteed to have an error if we try to open that file again later in the same run of the program. For long-running processes this is, of course, fatal.
Macros to the rescue!:)
In Lisp, if we wanted to read from a file without worrying about all that, we'd say:
(with-open-file (file-variable "/path/to/file":direction:output)
(write-string "just a test string" file-variable))
In this example, WITH-OPEN-FILE is a macro that adds code to the beginning and end of whatever code it contains, so that a file is opened, a stream is attached to the file, the variable name we give it is connected to the stream, our code runs, and then, *even if we had an error or just jumped out of our code into some other area of the program*, the file is properly closed.
Of course, we could do all this bookkeeping ourselves, but now we don't have to, and this is not something we could easily do concisely with functions alone. Further, now we just don't have to ever worry again about whether a file gets closed properly. It just works.
Multiply the conceptual savings from this macro across a whole slew of similar macros, and the effect is very much like defining a new, higher-level language that frees the developer from messing with the low level details, but preserves those details so that they're available when the developer actually wants to use them directly.
Now, my original assertion was about using macros to aid in building manager-friendly or web-designer-friendly mini-languages, and I haven't talked about that. Part of this is because I'm most familiar with one implementation of that in particular (PSILISP, my web application framework), and it's not done yet. Nevertheless:
In PSILISP, assuming you've already defined a page called PAGEONE, you can say
(in-page pageone
(write-to-page
(p:class "my-html-p-class"
"This is a paragraph in the same page,
but maybe in a different file or package, Lisp-wise.")))
and it's easy for the web designer to understand what's going on, even if said designer doesn't know Lisp in the first place.
Lisp has almost no syntax, so it's extremely regular (barring exceptions like LOOP). Because it's so regular, it's easy to build macros that do powerful things.
Macros can completely transform the source, at compile time, but with the full power of the language. Having that ability, together with simplicity, means that it's easy to build a complete mini-language for one's manager or web designer to use on the site, and easy for them to learn it, since you can explain the syntax in 5 minutes or less, and they don't have to learn 50 built-ins to use it.
Common Lisp's conditions system not only allows exception-handling, like Python, but can also have an entire protocol for controlling execution flow built on it. More about that in the conditions chapter of Peter Seibel's forthcoming book.
Lastly, having a generic-function-based object system means that a method can "belong" simultaneously to more than one class, at the same time. So, instead of having a method inside a class, you call a method with any number of objects of various classes, and it figures out from the type of the object what method to run, of all the similarly named methods. You can even specialize a method on a particular object or objects, instead of a particular class or classes! Multiple dispatch rocks.
Thanks. It was a good excuse to write about working, rather than actually work.:)
Perhaps XML added them since it's harder to break up?
I think XML added them because they were required for SGML, of which XML is supposed to be a simplified version. In SGML, it's perfectly legal to omit closing tags entirely when it's obvious from the context. Like,
<sgml><p>stuff in <i>italics</sgml>
(which, btw, may very well not be legal SGML at all; I don't know!).
But, given that situation, if you insert a close tag, you really do have to specify what it closes, and since XML is a derivative of SGML, they didn't take out the requirement to specify what tag was being closed.
It's interesting, really, how close XML is to S-expressions (the term for Lisp parenthetical expressions).
<table> _<tr> __<td>My Data </td></tr> _<tr> __<td>More </td></tr></table> <table> _<tr> __<td>My Other Data </td></tr> _<tr> __<td>Seco nd </td></tr></table>
without the underlines (for indentation). See how, using indentation, it's clear that there are two non-nesting tables?
The problem with comparing HTML or XML with lisp for indentation purposes is that in the markup languages, the closing tag appears (incorrectly) to be meaningful. This seems required precisely because people indent those markup tags in all sorts of idiosyncratic ways, so the ending tag gives a clue to the human reader about scope. If, instead, you could use </> to close any tag, it would make more sense to indent HTML like one does Lisp:
<table> _<tr> __<td>My Data </></> _<tr> __<td>More </></></> <table> _<tr> __<td>My Other Data </></> _<tr> __<td>Secon d </></></>
Some implementations in the lisp family (some Scheme's, I think) use ] to mean close all parens to the top level, which (picking a possible substitute) would be the equivalent of:
<table> _<tr> __<td>My Data </></> _<tr> __<td>More <\> <table> _<tr> __<td>My Other Data </></> _<tr> __<td>Secon d <\>
This shows even more clearly the advantage of using indentation to *read* the source, and using one's editor to assist one in *writing* source that is easily read.
I don't happen to use one of those Scheme's, since I'm more interested in Common Lisp ( http://www.randallsquared.com/psilisp.shtml ), but that close-all bracket is a cool idea.
Piling up all the closing parens makes the code *easier* to read, not harder. After you've been lisping for a few weeks, the parens just sorta disappear, and you rely on indentation to give you the overall structure of the current function, and then just add however many are left over at the end. Any good editor will let you know when you've put enough, and you can define a "fill out close parens to the top level" command in most.
It's probably because having another person there that you're talking to is a low-level cue that I don't need to pay attention, and if that cue isn't there, I'm going to be subtlely distracted throughout your conversation, as my "someone is trying to get my attention" or "someone is talking to me" alert is going off.
"Organized Peaceful Anarchy" makes perfect sense. Most people in the US buy groceries which are provided by a mostly anarchic system (that is, no one forces the farmers, truckers, grocery stores, et al to provide their services).
In spite of what pwot thinks, the "Zionverse is inside a system" idea is still the best explanation of what happened in 2 and 3.
Com'n, we're expected to believe that Neo's "connection to the source" allows him to see humans that *think* they're Agent Smith, but not other humans? When he has no eyes!?
His "connection to the source" allows him to communicate wirelessly with the Matrix systems, even when in Zion sleeping, to give him premonitions in his dreams?
Give me a break.
There is no other explanation that doesn't invoke magic.
If Zion is in the base world (I'm not sure "real" is the word we're looking for), then I'd agree it doesn't make any sense.
However, Neo can see Bane and Trinity while blinded, and essentially the only thing he can't see is scenery. Both humans and machines are visible to him. Your alternate explanation doesn't explain how he could see them.
But he clearly wasn't taken over. They showed the energy that represented Neo leaving his body into the machines in Neo-vision in the machine city. All Smith got was an empty shell, hence his confusion.
By the end, Neo has learned from Bane/Smith and the power system program that the world Zion is in isn't the real world, any more than the Matrix is (unless you believe in magic), that programs can take over human brains (and by extension that humans can take over matrix-class hardware that they're connected to), and that most of the programs don't hate humans, so peace is possible.
When Smith reinforces this lesson with a speech about how love and other emotions are just as artificial as designed programs, Neo realizes that he can leave his body entirely into the Matrix machinery, while allowing Smith to take over the Neo-construct that remains. This allows Neo to then deprogram all the other individuals taken over by Smith.
The scene with Trinity dissolves Neo's emotional ties to the "flesh" so that he can move himself into the machines.
I never needed the ID3 tags, since I wanted the info I cared about in the filename anyway; why type it twice? Of course, the reason, it now appears, is that iTunes thinks the ID3 tag is canonical, and the filename isn't.:(
I wasn't trolling; I'm just still irritated by the behavior (although I stopped using iTunes immediately upon finding this out, in June).
Telling iTunes not to organize my music was no longer an option after it had already messed everything up. I wasn't willing to give it another chance after I spent many hours listening to the first 15-30 seconds of about a thousand songs to figure out what they were.
The naming convention seems incredibly easy, but only works if iTunes knows what the song is, and in my case, not only did it screw up the naming of things that I'd prefer to name slightly differently, it gave me a
Unknown Artist/Unknown Album/
structure under which it filed virtually all my music, so all I had to go on was a name that I might or might not recognize, and which often seemed to include the artist's name in some fashion. I've had a few problems with OS X apps since switching, but this one completely takes the cake for screwups I've had with Mac software.
I understand that if I'd known it was going to do that, I could have told it not to do it. In the meantime, I found whamb, which is an mp3 player that just plays mp3s, and doesn't reorganize my music, too. In fact, whamb works much like XMMS did on my Gentoo system.
[...]in iTunes, when changes get made, they automatically are propagated through the library. Easy.
Yeah, that sucks, doesn't it? I hate what iTunes did to my music folders when I first switched this last summer. When I finally noticed that songs weren't where I expected them to be, I went hunting, and finally found them in another folder, stupidly renamed according to what iTunes thought they should be instead of clearly named according to my naming system, as I'd manually done. I hate, hate, hate iTunes.
When Mac programs do stuff behind the scenes that I would have done myself, I talk about how it "just works" like everyone else, but once in a while, it does something behind the scenes that's just wrong, and once in a while does something boneheaded like this.
Song after song named "Soundtrack Track 11", "Sndtrck - Trck 04", "Bone feat. Thugs, Harmony Song 5". Disaster. I hate that.
Zero cases rock. I have this one, and my PB17 fits snugly in the lower part, with plenty of room for a mouse, the power block, and a mouse pad in the top.
NOT a "minor issue".
on
Blind Lake
·
· Score: 2, Informative
Wilson's stuff consistently fails to deliver on the promise of the first 1/3 of the book. I've been suckered twice by him, once for "Harvest" and once for "Cronoliths".
Wilson's books seem to focus on the main characters' ordinary lives, even in the face of something really interesting happening, *somewhere else*. You keep hoping that we'll get to see the interesting things, but that never happens.
Oh yeah? Well I predict 2/3rds of the US programming market will dry up within the next 3 years because of Free Software. Capitalism just can't compete with freedom.
Given that Free Software is typically also free as in beer, and therefore simply costs less than most non-Free alternatives, driving non-Free software out of the market in 2/3 cases will be a great example of the free market in action! Then the rest of us can move on to implementing new things, rather than wasting time writing the same things over and over.
That's what tariffs are for, boy.
Tariffs make things worse. It's just a way of stealing from local buyers to give (some smaller amount than was stolen) to local producers, thereby encouraging local producers to do less producing and more stealing, since stealing seems to work better.
Oh, good show! Now provide some concrete, real-world examples of how our 'brains' will allow us to compete with labor you can pay $2/hour.
Why, I know! Tariffs and restrictive trade policies! Problem solved!
That whole 'economics' thing got you stumped, eh? It's true that there are some people who I cannot imagine being highly paid (like all Americans) in a world of incredibly cheap automation and global price leveling. Fortunately, things are getting cheaper faster and faster, so this seems likely to solve itself, unless people like you (and Kerry, and Bush) manage to head prosperity off at the pass and beat it to death with tariffs and regulations.
Fullscreen on what? A PDA?
Your parent post was clearly a joke aimed at the person who put "i.e., " in the quotes.
:)
Now, don't you feel better?
I started PSILISP mostly because I was frustrated with the prevalence of web frameworks that treated pages as having only the most tenous connection to other pages. That is, the decision of which code to run for this URL/form/session state combination was made too early in the response process, and usually depended almost entirely on the URL.
In any case, this is far off topic.
It's true that anything you can do with macros can be done with non-macrified languages (as far as I know). It's just that with macros, you can have the additions appear to be built into the language, and you don't force users to build object oriented code even where that's overkill. In PSILISP, I'm using macros to do the same sorts of things that I used to use mix-ins for, in Python, but now, I worry less about the details of how it's implemented (after I write it), since it's just like any other built-in.
Here's an example of a macro that doesn't something you can't do, as far as I know, in Python:
Suppose you're writing some larger app, and you'd like to have something happen whenever your app prints something (work with me, here; you can come up with a less contrived example of this, I'm sure).
So, everyplace you now haveyou'd like it to save the variable name and value.
So, you can write an (untested) macro:to shadow the built-in print statement. Of course, this is a fairly fragile implementation of PRINT, and would break in lots of cases as written. However, you haven't had to change any of your original code, with the possibly hundreds of print statements like this, and now you're getting the formatted string in your logfile or database or whatever SAVE-VALUE does with it, and in that string is not only the variable value, but the source *name* of the variable as well!
How would I do this in Java? Could it even be done without choosing from the outset to use a non-builtin to do my low level printing? I'm quite sure you couldn't do this in Python without resorting to changing the builtin print function in C (for CPython).
The important thing is that you can build new language features for Common Lisp that are written in Common Lisp, and can be used exactly like any other language features. In fact, most of the "built in" functionality of Common Lisp can be implemented in terms of macros, though there are a few built-ins that are only possible as "special operators".
It's very common for a developer to want to open a file, read from (or write to) it, and close it. No matter what happens (in this idiom) we always want to close our file. Errors or exceptions should not prevent the file from being closed, so, in most languages, we'd have to remember to close that file in every branch of our code.
Now, one solution to this would be to have open files be objects that know to close themselves when being garbage collected (Python does this, I think), but this means that if we have an error, and fail to remember to close the file, we're guaranteed to have an error if we try to open that file again later in the same run of the program. For long-running processes this is, of course, fatal.
Macros to the rescue!
In Lisp, if we wanted to read from a file without worrying about all that, we'd say:or if we wanted to write to it:In this example, WITH-OPEN-FILE is a macro that adds code to the beginning and end of whatever code it contains, so that a file is opened, a stream is attached to the file, the variable name we give it is connected to the stream, our code runs, and then, *even if we had an error or just jumped out of our code into some other area of the program*, the file is properly closed.
Of course, we could do all this bookkeeping ourselves, but now we don't have to, and this is not something we could easily do concisely with functions alone. Further, now we just don't have to ever worry again about whether a file gets closed properly. It just works.
Multiply the conceptual savings from this macro across a whole slew of similar macros, and the effect is very much like defining a new, higher-level language that frees the developer from messing with the low level details, but preserves those details so that they're available when the developer actually wants to use them directly.
Now, my original assertion was about using macros to aid in building manager-friendly or web-designer-friendly mini-languages, and I haven't talked about that. Part of this is because I'm most familiar with one implementation of that in particular (PSILISP, my web application framework), and it's not done yet. Nevertheless:
In PSILISP, assuming you've already defined a page called PAGEONE, you can sayand it's easy for the web designer to understand what's going on, even if said designer doesn't know Lisp in the first place.
I use Common Lisp.
Lisp has almost no syntax, so it's extremely regular (barring exceptions like LOOP). Because it's so regular, it's easy to build macros that do powerful things.
Macros can completely transform the source, at compile time, but with the full power of the language. Having that ability, together with simplicity, means that it's easy to build a complete mini-language for one's manager or web designer to use on the site, and easy for them to learn it, since you can explain the syntax in 5 minutes or less, and they don't have to learn 50 built-ins to use it.
Common Lisp's conditions system not only allows exception-handling, like Python, but can also have an entire protocol for controlling execution flow built on it. More about that in the conditions chapter of Peter Seibel's forthcoming book.
Lastly, having a generic-function-based object system means that a method can "belong" simultaneously to more than one class, at the same time. So, instead of having a method inside a class, you call a method with any number of objects of various classes, and it figures out from the type of the object what method to run, of all the similarly named methods. You can even specialize a method on a particular object or objects, instead of a particular class or classes! Multiple dispatch rocks.
Thanks. It was a good excuse to write about working, rather than actually work.
Perhaps XML added them since it's harder to break up?
I think XML added them because they were required for SGML, of which XML is supposed to be a simplified version. In SGML, it's perfectly legal to omit closing tags entirely when it's obvious from the context. Like,(which, btw, may very well not be legal SGML at all; I don't know!).
But, given that situation, if you insert a close tag, you really do have to specify what it closes, and since XML is a derivative of SGML, they didn't take out the requirement to specify what tag was being closed.
It's interesting, really, how close XML is to S-expressions (the term for Lisp parenthetical expressions).
The problem with comparing HTML or XML with lisp for indentation purposes is that in the markup languages, the closing tag appears (incorrectly) to be meaningful. This seems required precisely because people indent those markup tags in all sorts of idiosyncratic ways, so the ending tag gives a clue to the human reader about scope. If, instead, you could use </> to close any tag, it would make more sense to indent HTML like one does Lisp:Some implementations in the lisp family (some Scheme's, I think) use ] to mean close all parens to the top level, which (picking a possible substitute) would be the equivalent of:This shows even more clearly the advantage of using indentation to *read* the source, and using one's editor to assist one in *writing* source that is easily read.
I don't happen to use one of those Scheme's, since I'm more interested in Common Lisp ( http://www.randallsquared.com/psilisp.shtml ), but that close-all bracket is a cool idea.
(all IMHO, of course)
Piling up all the closing parens makes the code *easier* to read, not harder. After you've been lisping for a few weeks, the parens just sorta disappear, and you rely on indentation to give you the overall structure of the current function, and then just add however many are left over at the end. Any good editor will let you know when you've put enough, and you can define a "fill out close parens to the top level" command in most.
It's probably because having another person there that you're talking to is a low-level cue that I don't need to pay attention, and if that cue isn't there, I'm going to be subtlely distracted throughout your conversation, as my "someone is trying to get my attention" or "someone is talking to me" alert is going off.
That and 2 nuyen will get you a hot steaming cup. :)
Hard to respect someone when you don't even know who they are. Dean Kamen is not Ray Kurweil.
"Organized Peaceful Anarchy" makes perfect sense. Most people in the US buy groceries which are provided by a mostly anarchic system (that is, no one forces the farmers, truckers, grocery stores, et al to provide their services).
Not necessarily. :(
In spite of what pwot thinks, the "Zionverse is inside a system" idea is still the best explanation of what happened in 2 and 3.
Com'n, we're expected to believe that Neo's "connection to the source" allows him to see humans that *think* they're Agent Smith, but not other humans? When he has no eyes!?
His "connection to the source" allows him to communicate wirelessly with the Matrix systems, even when in Zion sleeping, to give him premonitions in his dreams?
Give me a break.
There is no other explanation that doesn't invoke magic.
If Zion is in the base world (I'm not sure "real" is the word we're looking for), then I'd agree it doesn't make any sense.
However, Neo can see Bane and Trinity while blinded, and essentially the only thing he can't see is scenery. Both humans and machines are visible to him. Your alternate explanation doesn't explain how he could see them.
But he clearly wasn't taken over. They showed the energy that represented Neo leaving his body into the machines in Neo-vision in the machine city. All Smith got was an empty shell, hence his confusion.
It makes perfect sense.
SPOILERS!
SPOILERS!
SPOILERS!
By the end, Neo has learned from Bane/Smith and the power system program that the world Zion is in isn't the real world, any more than the Matrix is (unless you believe in magic), that programs can take over human brains (and by extension that humans can take over matrix-class hardware that they're connected to), and that most of the programs don't hate humans, so peace is possible.
When Smith reinforces this lesson with a speech about how love and other emotions are just as artificial as designed programs, Neo realizes that he can leave his body entirely into the Matrix machinery, while allowing Smith to take over the Neo-construct that remains. This allows Neo to then deprogram all the other individuals taken over by Smith.
The scene with Trinity dissolves Neo's emotional ties to the "flesh" so that he can move himself into the machines.
I never needed the ID3 tags, since I wanted the info I cared about in the filename anyway; why type it twice? Of course, the reason, it now appears, is that iTunes thinks the ID3 tag is canonical, and the filename isn't. :(
I wasn't trolling; I'm just still irritated by the behavior (although I stopped using iTunes immediately upon finding this out, in June).
Telling iTunes not to organize my music was no longer an option after it had already messed everything up. I wasn't willing to give it another chance after I spent many hours listening to the first 15-30 seconds of about a thousand songs to figure out what they were.
The naming convention seems incredibly easy, but only works if iTunes knows what the song is, and in my case, not only did it screw up the naming of things that I'd prefer to name slightly differently, it gave me a
Unknown Artist/Unknown Album/
structure under which it filed virtually all my music, so all I had to go on was a name that I might or might not recognize, and which often seemed to include the artist's name in some fashion. I've had a few problems with OS X apps since switching, but this one completely takes the cake for screwups I've had with Mac software.
I understand that if I'd known it was going to do that, I could have told it not to do it. In the meantime, I found whamb, which is an mp3 player that just plays mp3s, and doesn't reorganize my music, too. In fact, whamb works much like XMMS did on my Gentoo system.
Yeah, that sucks, doesn't it? I hate what iTunes did to my music folders when I first switched this last summer. When I finally noticed that songs weren't where I expected them to be, I went hunting, and finally found them in another folder, stupidly renamed according to what iTunes thought they should be instead of clearly named according to my naming system, as I'd manually done. I hate, hate, hate iTunes.
When Mac programs do stuff behind the scenes that I would have done myself, I talk about how it "just works" like everyone else, but once in a while, it does something behind the scenes that's just wrong, and once in a while does something boneheaded like this.
Song after song named "Soundtrack Track 11", "Sndtrck - Trck 04", "Bone feat. Thugs, Harmony Song 5". Disaster. I hate that.
Zero cases rock. I have this one, and my PB17 fits snugly in the lower part, with plenty of room for a mouse, the power block, and a mouse pad in the top.
Wilson's stuff consistently fails to deliver on the promise of the first 1/3 of the book. I've been suckered twice by him, once for "Harvest" and once for "Cronoliths".
Wilson's books seem to focus on the main characters' ordinary lives, even in the face of something really interesting happening, *somewhere else*. You keep hoping that we'll get to see the interesting things, but that never happens.
Or groceries, who needs to eat?! Let's just stop paying all the taxes we pay to have food available in grocery stores! Oh, wait...
Oh yeah? Well I predict 2/3rds of the US programming market will dry up within the next 3 years because of Free Software. Capitalism just can't compete with freedom.
Given that Free Software is typically also free as in beer, and therefore simply costs less than most non-Free alternatives, driving non-Free software out of the market in 2/3 cases will be a great example of the free market in action! Then the rest of us can move on to implementing new things, rather than wasting time writing the same things over and over.
>I sometimes 'randomly' select text when I
:)
> browse/read (it helps me read faster, dunno
> why).
Yeah, me, too. It does seem to make reading faster, but it annoys the hell out of people trying to read over your shoulder.