FYI: his scripts sucked, too. He'd make lots of dumb mistakes like assigning a variable called "retval" and then checking "ret"!!! Duh. gcc would have caught this immediately, so would "use strict".
So would PyChecker, which would also have caught a wider variety of errors than "use strict" would have.
Those are both stylistic, not grammatical choices. His grammar, though colloquial, is still accurate.
Jeremy
Re:because you are ignorant?
on
Why not Ruby?
·
· Score: 1
How exactly does Python suddenly qualify as a language for pragmatists? The supposed elegance of Python was/is a barrier to its being favored over Perl.
People who expect to read code written by themselves and others and understand it without effort are people who like Python. People who like their ideas to translate directly into code, with as few syntactical or semantic "gotchas" as possible like Python. People who consider such things are pragmatists. People who don't consider such things are, to some degree, not pragmatists, because they're ignoring (or they don't agree with) the practicality of the above disciplines.
No, you don't. Really. You perhaps understand the concept of iteration, but not the concept of an "iterator" as implemented by languages such as Sather, Ruby, and (if I recall correctly), a forthcoming version of Python.
Explain to me where I'm wrong, then. An iterator is an object that maintains the state of traversing a container class, and has several methods with which to affect that state. An iterator for a singly linked list would include a method to retrieve the next item; an iterator for a doubly linked list would include a method to retrieve the previous item and one to retrieve the next item. An iterator for a binary tree would probably include methods for traversing the tree inorder, preorder, or postorder.
Where is my understanding lacking?
What I'm saying is that such problems can be solved more flexibly and elegantly with higher order functions.
Another important thing to keep in mind is that no one is forcing you to use iterators in Ruby, just as no one will force you to use them in Python 2.2. You can write a for-loop if you want. It's significantly easier to write an iterator, however, in terms of time and resulting code complexity.
I believe iterators are more complex in terms of code complexity and in terms of time invested to achieve the same goal as a higher order function.
Jeremy --
Re:I can tell you why *I* am not using Ruby.
on
Why not Ruby?
·
· Score: 1
Closures are just functions (in Ruby, apparently, they're pieces of code, but the same concept applies) that carry around the environment in which they were instantiated. Perl has them -- you just create an anonymous function with "sub { BLOCK }".
Jeremy --
Re:IMHO: Perl-Python-Ruby
on
Why not Ruby?
·
· Score: 2
As for cleanliness of code. Python looks cleaner than Perl, but Python is still full of broken symmetries. "a.append(b)" but "del a[len(a)]"; pop but no push;
Pop pops an element anywhere in the list. Not just at the end, as the Perl version does. You can use.append and.pop to treat a list like a stack very easily. Complaining because.append isn't also called.push seems remarkably petty to me.
And lets not get into the retarded block structure. (Oops, to late) semantically overloaded whitespace!
Perhaps "overloaded" is defined differently in your dictionary, but whitespace has one purpose in Python: as a delimiter, for blocks and for tokens. Indent your code as a good coder would indent his code (note: I didn't say how you would indent your code, I don't know what your Perl code looks like:)) and you'll experience absolutely no difficulties writing your own code or reading others'. And believe me, when you leave the Perl world and learn that code can actually be read by someone other than he who wrote it, you'll be astounded.
A real reason Python's block structure sucks is that it makes arbitrarily nested lexical scopes difficult to implement, that in turn makes closures difficult to implement
Please, explain how this is so. I'm curious.
Ruby kicks Python butt in the cleanliness of design and programming department.
Do you prefer proof, or unsupported assertions? Me, personally, I'm a big fan of proof, but I'm having some trouble finding it in your posts. Maybe you can enlighten me.
Ruby is faster. Ruby is easier to write extesions for (though SWIG make this minor except for typemaps).
I found the assertion, but again, I couldn't find the proof. Perhaps you can provide some.
Python has one pretty cool thing: Stackless Python. Guido-Python-dev-whom-ever, integrate Stackless Python into the Core; make python truely unique and kickass!
Stackless provides continuations. Their utility is questionable, at best -- there's a reason Scheme includes it, but Common Lisp doesn't -- Standard ML includes it, but O'Caml doesn't. The argument has raged a long time on both sides, with no signs of letting up.
I'd like to see them in the language, but not if it costs the simplicity of the language. It's definitely not something that is required for Python to be "truly unique and kickass" -- it already is.
Jeremy --
Re:I can tell you why *I* am not using Ruby.
on
Why not Ruby?
·
· Score: 2
It's not that I don't understand it. I do completely understand the idea of an iterator (with a name like that, who couldn't?) What I don't understand is where the syntax came from and why the syntax is necessary.
Let's say I want to iterate over a list in Python. I'd "map(a_function, a_list)". "map" applies a_function to each element of a_list, creating a new list as it goes along. It doesn't entail side effects; the original list isn't modified. You'll find a function similar to this in nearly every language; any implementation of lists in any language should provide such a facility (and Ruby provides that facility via its iterators.)
I prefer the Python/Lisp/O'Caml way. I, like more intelligent people who have gone before me, see iterators in object-oriented languages as a sign of weakness. Ruby's iterators exist to work around the fact that functions aren't first class objects in Ruby. They exist because a programmer can't write higher order functions in Ruby.
As beautiful as "pure" languages like Java and Haskell and Ruby are, they'll always lose in practice to languages that implement multiple programming paradigms well, like O'Caml, and Lisp, and Python. Programmers don't need to be contrained by their language, restricted to programming in a particular way or paradigm because that's the way the author/designer of the language decided it should be. In O'Caml or Python or Lisp, they're not. In Ruby, iterators are a perfect example of how they are.
Jeremy --
I can tell you why *I* am not using Ruby.
on
Why not Ruby?
·
· Score: 5
I've been through my rounds with programming languages -- I started with C, then loved Perl, then moved onto Python and learned what readable code was, and now I'm currently enamoured with O'Caml.
Here are the reasons I'm not, and haven't ever chosen to use Ruby:
First, I don't like the syntax[*]. Python has a beautiful, simple, typing-economic syntax that no language I've seen can compare to. Ruby doesn't -- it uses "end" to denote the end of blocks, it has several prefixes (@ and $) for varaibles to change the interpretation of those variables, and it has a strange (to me) syntax for iterating through data structures.
Second, I don't buy the speed argument. I've tested various trivial scripts and a few non-trivial ones in both Ruby and Python, and found them about equal -- Python is faster in some operations, Ruby is faster in others. In either case, neither is ever much faster or slower than the other. In the world of scripting languages, a 10% difference in speed makes very little difference -- if you need more speed for what you're doing, you likely need an order of magnitude increase, and thus, a compiled language. A 10% increase in speed isn't generally worth switching scripting languages, and except for some pathlogical cases (which exist in both cases!) you won't find Ruby or Python differing by more than 10% in their total execution time.
Thirdly, while many claim that Ruby is "more OO" than Python because even the basic types are classes which can be inherited from, it's not that simple. First, Python provides UserList, UserDict, and UserString modules for those that do need to subclass a basic type (believe me, it doesn't happen often:)). Also, functions in Python are first class objects, whereas functions in Ruby aren't. You can argue about which language is "more OO" all day long, but there are points for each side, and at the end of the day, whichever helps you do more work, no matter how OO it is, is the superior one.
Python OO is, by the way, far more reflective than Ruby OO -- you won't find anything in ruby that's as flexible as python's getattr/setattr functions and __getattr__/__setattr__/__dict__ attributes of objects. Esoteric stuff like the Meta-Object Protocol is thus far easier to implement in Python than in Ruby.
Python has a more active user community in the US and Europe (though I hear Ruby has a more active community in Japan.) The standard library in Python is to die for, and much more extensive than that included with Ruby.
Features that don't affect me as much, but still played a part in my decision not to use Ruby: It's less portable than Python and the C interface is (in my opinion) not as cleanly implemented. Python has several implementations available, whereas Ruby has only one.
In short, Ruby and Python both have their advantages and disadvantages. I prefer Python (and feel that compared to Ruby is comes out way ahead,) but even if Ruby ended up slightly ahead after an objective evaluation, it would be hard to justify learning an entirely new language for the barely incremental increase in productivity.
Jeremy
[*]: Yes, those of you who know/have looked at O'Caml have seen its syntax, and probably noted that it's far worse than Ruby's. I can agree, however, O'Caml has numerous features to compensate: static typing, tail recursion optimization, blazingly fast native code compilers, support for several programming paradigms...the list continues. O'Caml has an ugly syntax, but in most cases (and definitely in O'Caml's case) syntax is a one-time cost, and O'Caml pays back that cost nicely.
PS.: If I'm wrong on any of the above points, please correct me -- that's what I've learned from a cursory examination of the language, I don't claim to know it in-depth. --
Do the police not have a responsibility to enforce the law in this country? And does not that responsibility require them to apprehend fugitives? If the police have developed a technology that allows them to make the streets I live on safer without violating my rights (as a law abiding citizen,) then by all means, have them use it!
Remind me again which right (constitutional or otherwise) of yours prevents me (or the Tampa Police) from taking pictures of you in public.
That's funny, I've got a netfilter box hosting 4 IPSec tunnels as well as firewall duties for a 2mbps link, 256MB RAM on a Duron 750. Guess what my load is?
0.00 0.00 0.00
Of course, since load average is only calculated based on the number of processes waiting for CPU, and since netfilter is entirely coded in-kernel, your load average will never be more than 0.0 on that firewall, regardless of your hardware.
I like that it's GPL'ed, but what would happen if it was put under another open-source licence? Would it make/.?
Um, it is under another open source license -- one that's less restrictive than the GPL, and allows integration into closed source programs. The BSD-like license it's now under, however, is compatible with the GPL, so it can be used in GPLed programs.
The only version of the BSD license that's not officially sanctioned by RMS as being 'non-free' are the ones that include advertising clauses.
Actually, even licenses that include an advertising clause are Free Software. They just aren't GPL compatible. Note that the old-style BSD license is listed on this page.
Jeremy --
Re:journaling is nice, but how about a better RAID
on
XFS 1.0 is Released
·
· Score: 2
Very fast?
I don't know what world you're living in, but I get 20mb/sec throughput on my ibm 75gxp. And that's on a plain old ATA33 controller with dual celerons 366.
5400rpm drives haven't been "very fast" for at least 5 years.
Jeremy --
Re:journaling is nice, but how about a better RAID
on
XFS 1.0 is Released
·
· Score: 2
Um, 100baseT is 100 megabits per second. That's 12.5 megabytes per second. Even a "shitty ide hard drive" can saturate that.
It bothers me that they spend more time on SMTP. SMTP and FTP combined are probably two of the hardest protocols to implement correctly, as is evinced by the numerous vulnerabilities on almost all servers designed for either protocol.
I wish they'd pay attention to possibly more radical changes to the mail infrastructure. Specifically, it seems that Internet Mail 2000 solves numerous fundamental problems with SMTP and the other mail related protocols, POP* and IMAP. It's disappointing to see more time spent on a protocol with a far better alternative.
Kythorn has a very valid point. Each of the BSDs is an entire operating system in its own right. The entire operating system, including the kernel and all the default userspace apps, comes together in one big package.
The kernel used by BSD doesn't even have a version number. That's because it's just a member of an entire operating system, say, FreeBSD, and to consider the kernel separate from that operating system makes no sense. On a linux system, on the other hand, the kernel is just another software package, developed entirely separately from the distribution itself. This is so radically different from the BSD model that it surely warrants a distinction.
Please, don't accuse others of trolling when you, in fact, were the one to post erroneous information.
You still have your work. They still have theirs. No one is hurt by that situation.
So you think it's fair that they have your work, and you don't have their work?
I say that is bullshit. You with the GPL are forcing them to be ripped off by taking their work for free if they want yours.
Huh? Let's think about this one. They take my work for free, and you're complaining because I ask for quid pro quo? You say I'm "ripping them off" because I'm not giving them my code for nothing in return?
There is no proof that the Microsoft Windows TCP/IP stack is based on BSD code.
There. I said it. Now I dare anyone reading this to prove me wrong. I use FreeBSD myself; I'd love to hear that the most popular operating system on the planet used code from my operating system of choice. I know, however, that no one's going to prove me wrong. I know that at least 4 people will post "Look, dork, if you do 'strings' on the windoze ftp client, it says it's bsd!!". And I'll say, "You do know that an ftp client isn't a tcp/ip stack?" I know this will happen because I've already said this, here. (link missing because slashdot's search function doesn't work well)
As much as I'd like to believe that Windows uses the BSD tcp/ip stack, there's simply not proof of it, and plenty of opposing evidence (see the various deficiencies in the implementation in Windows).
No one has mentioned chaos theory because this isn't it.
Chaos theory says that even with simple rules, systems can be unpredictable. It doesn't say more than that. It doesn't mention emergent systems because that's not covered by chaos theory.
"the study of systems which have very simple equations of motion, but which have an extremely complicated behavior" is a perfect description of Complexity Theory. Complexity is the science of life at the edge of chaos and order, where complex systems emerge and adapt from a handful of simple rules.
Check out the book "Complexity" by M. Mitchell Waldrop for an excellent Gleick-esque portrayal of the emergency (pun intended:)) of complexity as a science.
I realize you were joking but... MS would never say nasty things about the BSD's since their TCP/IP stack and kerberos are largely based on BSD code.
I have heard this numerous times, and in fact used to believe it. That is, until I realized that such accusations were entirely without merit.
I'd like to find one link of solid evidence that Microsoft has ever used BSD code. I'd love for it to be true -- it would truly show the success of open source and the fulfillment of BSD's goal (that good code be used, regardless of the license.)
Keep in mind that the BSD license, until fairly recently (certainly until after the creation of NT/2k tcp/ip and kerberos code) did have an advertising clause. Can you find one instance where Microsoft fulfilled that? A multinational corporation like Microsoft doesn't take free code without dotting all its legal Is and crossing all its legal Ts.
As much as I'd like to believe that Microsoft did use BSD code, I can't do so without some proof. Too many people, it seems, have no such restrictions. Find me some proof so I can believe.
The GPL exists to protect the authors of Free Software from having their work stolen (yes, I said "stolen") by people who aren't willing to give back to the community.
Seriously, why would you think that you can freely partake of the efforts of a programmer without giving him some sort of compensation? The author of GPLed code, I'm sure, *rejoices* every time he sees a project GPLed because it used his code. That's what he charges for his code: that people who use it must also contribute to Free Software.
Honestly, I don't think it's moral to used GPLed code without GPLing your product that takes advantage of it, regardless of whether you can find a legal loophole for doing so. Doing so violates the intent of the author.
Eros, unfortunately, doesn't look like it's actually going to arrive (at least not in a timely manner), but I've read several of the papers on capability-based security and they were all very interesting.
What do you think about Eros? What's your opinion (and your perception of the security community's opinion) about capability based security?
Great, but what does this mean for projects like L.A.M.E., which has just recently freed itself from Fraunhofer ["regular"] mp3 code/patents? Back into the fray?"
LAME isn't "free from Fraunhofer mp3 code/patents". They may have finally outgrown their name and become a full-fledged mp3 encoder in their own right, but no matter, Fraunhofer's patent still stands. LAME infringes on that patent.
No, it isn't. Fraunhofer (and other MPEG consortium members) claim that it is impossible to create an mp3 encoder without infringing on their patents. To create/use an encoder, the law says one must pay royalties to Fraunhofer and other MPEG Consortium members. In other words, you can play what you like, but you're not allowed to contribute without paying the ante.
(note that this question isn't on the faq from vorbis.com, it's from xiph.org.
No matter how hard LAME tries, it is another MP3 encoder, and as such, infringes on mp3 patents.
Please, read the article. AOL accounts aren't vulnerable from AIM; it's exactly the opposite. And, as noted in a previous post, AIM and AOL screenname passwords are not kept in sync.
So would PyChecker, which would also have caught a wider variety of errors than "use strict" would have.
Jeremy
Those are both stylistic, not grammatical choices. His grammar, though colloquial, is still accurate.
Jeremy
People who expect to read code written by themselves and others and understand it without effort are people who like Python. People who like their ideas to translate directly into code, with as few syntactical or semantic "gotchas" as possible like Python. People who consider such things are pragmatists. People who don't consider such things are, to some degree, not pragmatists, because they're ignoring (or they don't agree with) the practicality of the above disciplines.
Explain to me where I'm wrong, then. An iterator is an object that maintains the state of traversing a container class, and has several methods with which to affect that state. An iterator for a singly linked list would include a method to retrieve the next item; an iterator for a doubly linked list would include a method to retrieve the previous item and one to retrieve the next item. An iterator for a binary tree would probably include methods for traversing the tree inorder, preorder, or postorder.
Where is my understanding lacking?
What I'm saying is that such problems can be solved more flexibly and elegantly with higher order functions.
I believe iterators are more complex in terms of code complexity and in terms of time invested to achieve the same goal as a higher order function.
Jeremy
--
Jeremy
--
Pop pops an element anywhere in the list. Not just at the end, as the Perl version does. You can use .append and .pop to treat a list like a stack very easily. Complaining because .append isn't also called .push seems remarkably petty to me.
Perhaps "overloaded" is defined differently in your dictionary, but whitespace has one purpose in Python: as a delimiter, for blocks and for tokens. Indent your code as a good coder would indent his code (note: I didn't say how you would indent your code, I don't know what your Perl code looks like :)) and you'll experience absolutely no difficulties writing your own code or reading others'. And believe me, when you leave the Perl world and learn that code can actually be read by someone other than he who wrote it, you'll be astounded.
Please, explain how this is so. I'm curious.
Do you prefer proof, or unsupported assertions? Me, personally, I'm a big fan of proof, but I'm having some trouble finding it in your posts. Maybe you can enlighten me.
I found the assertion, but again, I couldn't find the proof. Perhaps you can provide some.
Stackless provides continuations. Their utility is questionable, at best -- there's a reason Scheme includes it, but Common Lisp doesn't -- Standard ML includes it, but O'Caml doesn't. The argument has raged a long time on both sides, with no signs of letting up.
I'd like to see them in the language, but not if it costs the simplicity of the language. It's definitely not something that is required for Python to be "truly unique and kickass" -- it already is.
Jeremy
--
Let's say I want to iterate over a list in Python. I'd "map(a_function, a_list)". "map" applies a_function to each element of a_list, creating a new list as it goes along. It doesn't entail side effects; the original list isn't modified. You'll find a function similar to this in nearly every language; any implementation of lists in any language should provide such a facility (and Ruby provides that facility via its iterators.)
I prefer the Python/Lisp/O'Caml way. I, like more intelligent people who have gone before me, see iterators in object-oriented languages as a sign of weakness. Ruby's iterators exist to work around the fact that functions aren't first class objects in Ruby. They exist because a programmer can't write higher order functions in Ruby.
As beautiful as "pure" languages like Java and Haskell and Ruby are, they'll always lose in practice to languages that implement multiple programming paradigms well, like O'Caml, and Lisp, and Python. Programmers don't need to be contrained by their language, restricted to programming in a particular way or paradigm because that's the way the author/designer of the language decided it should be. In O'Caml or Python or Lisp, they're not. In Ruby, iterators are a perfect example of how they are.
Jeremy
--
Here are the reasons I'm not, and haven't ever chosen to use Ruby:
First, I don't like the syntax[*]. Python has a beautiful, simple, typing-economic syntax that no language I've seen can compare to. Ruby doesn't -- it uses "end" to denote the end of blocks, it has several prefixes (@ and $) for varaibles to change the interpretation of those variables, and it has a strange (to me) syntax for iterating through data structures.
Second, I don't buy the speed argument. I've tested various trivial scripts and a few non-trivial ones in both Ruby and Python, and found them about equal -- Python is faster in some operations, Ruby is faster in others. In either case, neither is ever much faster or slower than the other. In the world of scripting languages, a 10% difference in speed makes very little difference -- if you need more speed for what you're doing, you likely need an order of magnitude increase, and thus, a compiled language. A 10% increase in speed isn't generally worth switching scripting languages, and except for some pathlogical cases (which exist in both cases!) you won't find Ruby or Python differing by more than 10% in their total execution time.
Thirdly, while many claim that Ruby is "more OO" than Python because even the basic types are classes which can be inherited from, it's not that simple. First, Python provides UserList, UserDict, and UserString modules for those that do need to subclass a basic type (believe me, it doesn't happen often :)). Also, functions in Python are first class objects, whereas functions in Ruby aren't. You can argue about which language is "more OO" all day long, but there are points for each side, and at the end of the day, whichever helps you do more work, no matter how OO it is, is the superior one.
Python OO is, by the way, far more reflective than Ruby OO -- you won't find anything in ruby that's as flexible as python's getattr/setattr functions and __getattr__/__setattr__/__dict__ attributes of objects. Esoteric stuff like the Meta-Object Protocol is thus far easier to implement in Python than in Ruby.
Python has a more active user community in the US and Europe (though I hear Ruby has a more active community in Japan.) The standard library in Python is to die for, and much more extensive than that included with Ruby.
Features that don't affect me as much, but still played a part in my decision not to use Ruby: It's less portable than Python and the C interface is (in my opinion) not as cleanly implemented. Python has several implementations available, whereas Ruby has only one.
In short, Ruby and Python both have their advantages and disadvantages. I prefer Python (and feel that compared to Ruby is comes out way ahead,) but even if Ruby ended up slightly ahead after an objective evaluation, it would be hard to justify learning an entirely new language for the barely incremental increase in productivity.
Jeremy
[*]: Yes, those of you who know/have looked at O'Caml have seen its syntax, and probably noted that it's far worse than Ruby's. I can agree, however, O'Caml has numerous features to compensate: static typing, tail recursion optimization, blazingly fast native code compilers, support for several programming paradigms...the list continues. O'Caml has an ugly syntax, but in most cases (and definitely in O'Caml's case) syntax is a one-time cost, and O'Caml pays back that cost nicely.
PS.: If I'm wrong on any of the above points, please correct me -- that's what I've learned from a cursory examination of the language, I don't claim to know it in-depth.
--
Remind me again which right (constitutional or otherwise) of yours prevents me (or the Tampa Police) from taking pictures of you in public.
Jeremy
--
Of course, since load average is only calculated based on the number of processes waiting for CPU, and since netfilter is entirely coded in-kernel, your load average will never be more than 0.0 on that firewall, regardless of your hardware.
Jeremy
--
Um, it is under another open source license -- one that's less restrictive than the GPL, and allows integration into closed source programs. The BSD-like license it's now under, however, is compatible with the GPL, so it can be used in GPLed programs.
Jeremy
--
Actually, even licenses that include an advertising clause are Free Software. They just aren't GPL compatible. Note that the old-style BSD license is listed on this page.
Jeremy
--
I don't know what world you're living in, but I get 20mb/sec throughput on my ibm 75gxp. And that's on a plain old ATA33 controller with dual celerons 366.
5400rpm drives haven't been "very fast" for at least 5 years.
Jeremy
--
Jeremy
--
It bothers me that they spend more time on SMTP. SMTP and FTP combined are probably two of the hardest protocols to implement correctly, as is evinced by the numerous vulnerabilities on almost all servers designed for either protocol.
I wish they'd pay attention to possibly more radical changes to the mail infrastructure. Specifically, it seems that Internet Mail 2000 solves numerous fundamental problems with SMTP and the other mail related protocols, POP* and IMAP. It's disappointing to see more time spent on a protocol with a far better alternative.
Jeremy
--
Just out of curiosity, why didn't you use a BSD solution, which has full NAT capability (and many more) while also being very well tested?
Jeremy
--
Kythorn has a very valid point. Each of the BSDs is an entire operating system in its own right. The entire operating system, including the kernel and all the default userspace apps, comes together in one big package.
The kernel used by BSD doesn't even have a version number. That's because it's just a member of an entire operating system, say, FreeBSD, and to consider the kernel separate from that operating system makes no sense. On a linux system, on the other hand, the kernel is just another software package, developed entirely separately from the distribution itself. This is so radically different from the BSD model that it surely warrants a distinction.
Please, don't accuse others of trolling when you, in fact, were the one to post erroneous information.
Jeremy
--
Jeremy
--
So you think it's fair that they have your work, and you don't have their work?
Huh? Let's think about this one. They take my work for free, and you're complaining because I ask for quid pro quo? You say I'm "ripping them off" because I'm not giving them my code for nothing in return?
Your argument makes no sense.
Jeremy
--
There is no proof that the Microsoft Windows TCP/IP stack is based on BSD code.
There. I said it. Now I dare anyone reading this to prove me wrong. I use FreeBSD myself; I'd love to hear that the most popular operating system on the planet used code from my operating system of choice. I know, however, that no one's going to prove me wrong. I know that at least 4 people will post "Look, dork, if you do 'strings' on the windoze ftp client, it says it's bsd!!". And I'll say, "You do know that an ftp client isn't a tcp/ip stack?" I know this will happen because I've already said this, here. (link missing because slashdot's search function doesn't work well)
As much as I'd like to believe that Windows uses the BSD tcp/ip stack, there's simply not proof of it, and plenty of opposing evidence (see the various deficiencies in the implementation in Windows).
Jeremy
--
No one has mentioned chaos theory because this isn't it.
:)) of complexity as a science.
Chaos theory says that even with simple rules, systems can be unpredictable. It doesn't say more than that. It doesn't mention emergent systems because that's not covered by chaos theory.
"the study of systems which have very simple equations of motion, but which have an extremely complicated behavior" is a perfect description of Complexity Theory. Complexity is the science of life at the edge of chaos and order, where complex systems emerge and adapt from a handful of simple rules.
Check out the book "Complexity" by M. Mitchell Waldrop for an excellent Gleick-esque portrayal of the emergency (pun intended
Jeremy
--
I'd like to find one link of solid evidence that Microsoft has ever used BSD code. I'd love for it to be true -- it would truly show the success of open source and the fulfillment of BSD's goal (that good code be used, regardless of the license.)
Keep in mind that the BSD license, until fairly recently (certainly until after the creation of NT/2k tcp/ip and kerberos code) did have an advertising clause. Can you find one instance where Microsoft fulfilled that? A multinational corporation like Microsoft doesn't take free code without dotting all its legal Is and crossing all its legal Ts.
As much as I'd like to believe that Microsoft did use BSD code, I can't do so without some proof. Too many people, it seems, have no such restrictions. Find me some proof so I can believe.
Jeremy
The GPL exists to protect the authors of Free Software from having their work stolen (yes, I said "stolen") by people who aren't willing to give back to the community.
Seriously, why would you think that you can freely partake of the efforts of a programmer without giving him some sort of compensation? The author of GPLed code, I'm sure, *rejoices* every time he sees a project GPLed because it used his code. That's what he charges for his code: that people who use it must also contribute to Free Software.
Honestly, I don't think it's moral to used GPLed code without GPLing your product that takes advantage of it, regardless of whether you can find a legal loophole for doing so. Doing so violates the intent of the author.
Jeremy
Eros, unfortunately, doesn't look like it's actually going to arrive (at least not in a timely manner), but I've read several of the papers on capability-based security and they were all very interesting.
What do you think about Eros? What's your opinion (and your perception of the security community's opinion) about capability based security?
Thanks, Jeremy
LAME isn't "free from Fraunhofer mp3 code/patents". They may have finally outgrown their name and become a full-fledged mp3 encoder in their own right, but no matter, Fraunhofer's patent still stands. LAME infringes on that patent.
From the Vorbis FAQ:
(note that this question isn't on the faq from vorbis.com, it's from xiph.org.
No matter how hard LAME tries, it is another MP3 encoder, and as such, infringes on mp3 patents.
Higher quality closed formats is not the answer. Higher quality open formats are the only way.
Jeremy
Please, read the article. AOL accounts aren't vulnerable from AIM; it's exactly the opposite. And, as noted in a previous post, AIM and AOL screenname passwords are not kept in sync.
Jeremy