Mature thinkers eventually get tired of studying radically opposed opinions. When you disagree with someone axiomatically there's no point to argument. You can try to empathize with the person -- but the substance of your opponents' arguments becomes irrrelevant.
People who study axiomatically opposed arguments and dissect them for accuracy and flaws are wasting their time unless they are preparing to debate the issue publically. Slashdot is a lame place to debate this publically. Many of us aren't in the mood to dive into debates, nor of the public stature to make our yet-another-opinion very meaningful -- at least to an audience that would find this article compelling.
People who are enthusiastic about debate think that a reasoned argument is important, that winning a debate is possible. These people are either naive, or they have not been very thoughtful about their past experiences. They are deluded into thinking that if they could just get someone to understand what they are arguing, the compelling wisdom of it would overwhealm the person into agreeing. This is not possible. People's beliefs are not analytical -- even among those inclined to debate. Analysis follows belief, we construct reasons to justify our desires.
This article will only make me feel frustrated and annoyed, and railing against its inaccuracies or even trying to understand its perspective will be constructive. I am glad the original poster made this clear. I prefer constructive and informative thought, which this article will not provide me. Avoiding this sort of thing is what you need to do to be intellectually constructive in this internet age -- it's not zealotry.
What are you talking about? Like I said, "friendly" messages on a domain-not-found should be handled by the UI, not by DNS tricks. What SiteFinder does can be done by the browser just as well when it gets fails to find a domain.
I don't know what you are arguing against. I guess you are arguing against VeriSign, but I was doing the same thing, so why did you post your argument in reply to my post?
Sure, browsers could recognize the DNS-not-found, and redirect to www.whatever.com?domain=www.doesnotexist.com
They already kind of do this, trying different combinations of appending.com, prepending www., and that could be expanded into a wider search. Invalid domains can be turned into search terms.
This is a UI issue, not a protocol issue. It can best solved in the UI, i.e., in the browser. And the browsers, while not always acting in good faith, have done exactly this.
On a similar thread, I've had a service stall due to a broken package, and make it very difficult to start up my system. It's a heavy service (Zope) which was annoying enough to wait for -- having it mess my system up was insult to injury. Or injury to insult? Anyway, it was dumb.
Shell scripting shouldn't qualify as simple. Shell scripting is a language in itself, and a stupid language at that. Because it is a naturally sloppy language it only appears simple -- it is actually complex and error-prone. Maybe if the current system was written in Tcl I'd be more impressed -- not a very powerful language, but it is simple.
Maybe the whole thing could be rewritten in C someday -- easier to do once the functionality is completely worked out. Maybe it won't turn out to be a problem -- Python is standard on modern desktop operating systems (which is what this proposal targets). Maybe bash/sh is more standard, but standards only come about because developers demand new dependencies (at least that's how it happens in Linux).
The intelligent free software programmer should not be afraid to rewrite software, but should do so with the wisdom of past successes and failurees. Available source code and an active group of developers experimenting with ideas provide a great deal to learn from. However, in order for that learning to be effective you must use it.
Yes, you can improve existing projects. But source code is not some magical thing, to be preserved at all cost. It is not a limited resource. Rewriting is frequently easier and can lead to more robust code. You don't have to use old code to learn the old code's mistakes.
Or, since this is free software, you can use the old code. Use a collection of old code, copy and paste to your hearts delight. But if you are going to get people to use it, you usually have to give it a name -- so that people can find it, discuss it, etc. So just because it has a new name does not mean it is all new code.
And if CORBA was such a great thing, why isn't everyone using it? It's not that it's obscure, or that implementations don't exist. Lots of implementations exist, there's lots of documentation, and yet people still don't use it. It's hardly like these GNOME people have never heard of CORBA. But perhaps they want to create something that free software developers will actually use. Not paid programmers who do what they have to because that's what mangement wants -- people will struggle with all sorts of things when they are being paid to do it. But free software developers -- even when paid -- are generally motivated more by aesthetic, incremental, intrinsically satisfying programming.
CORBA could be technically great, or horrible, or whatever... but the fact is that people aren't using it. It's had its chance, its time has passed.
Political speach isn't to the advantage of incumbent politicians. They do best when the bar is high, when speach is restricted, and when political expression is at a low.
Did you subtract your immediate and upstream tax benefits? E.g., the portion of the cost of that loaf of bread that was paid for by subsidy. Or the benefit of the road used to transport the loaf, paid for with tax dollars?
I mean, if we're going to do a full accounting, you can't be selective about it. Sometimes (not always) the government is a service provider, and taxes are what drive that.
That would be a trojan, not a worm. And while people talk about the risk of it, links in forums (especially moderated, high-activity forums) aren't a big vector for trojans. This utility might still mess up your system, but probably not on purpose.
I personally fail to see how it is some great inconvenience to have telemarketers calling you every so often. Its putting food on someone's table, and is better than them being on welfare.
It's small inconveniences multiplied a million times over. Telemarketers steal our time in small chunks. They are parasites. They decrease the quality of life in this country. We'd be better off with them on welfare, because at least then they would be doing nothing instead of actively making the world a worse place to live in.
Sure, it's small inconvenience. It's also a small return. Is it okay to steal, if you only steal five cents at a time? Eh, whatever, I don't care about five cents. What if you stole five cents at a time from every person in the country? That's the kind of equation telemarketers are making -- small returns from small inconveniences, multiplied by every person in the country.
We should stop worshipping jobs. We should start being concerned about productivity. Telemarketers have jobs, but they are completely unproductive. That's not the kind of economy I want to support.
Machine voting isn't the problem, Diebold is. They've created a horrible, insecure system. It's simple enough to create a more secure system that it's hard not to believe Diebold is deliberately enabling fraud.
A system where votes were printed to a machine-readable piece of paper, verified by the voter, then deposited in a secure box, would be simple and secure. By printing votes you create a self-verifying system -- voters can check their vote is correct, and an audit can easily verify that votes were recorded as voters intended. Management of the printed records would be just like the ballots we already are using, but without the reliability problems of punch-card systems. Tallying could be done mechanically, as a barcode could accompany the printed text.
The whole system is very simple. Even if they just used an ATM style of security (printing to an internal paper log) they would be far superior to Diebold. But using logic is difficult in this case, because Diebold is clearly making absurd claims, and it's difficult to refute absurdity.
EVM 2003 is trying to create a complete open source voting system (not just machine). I wish them the best of luck. This is more than just philosophy about copyright and IP, it's the defense of democracy from those that want very much to take away even the slight accountability that currently exists. They've already made it into office with one fraudulent election (2000), and very possibly kept control of congress with another (2002, with many states being won with unverifiable votes that didn't match up with predicted results).
I assume Joel is into XP, and XP practices really assume all the programmers are working together in the same space. Doesn't work so well from home.
Heh... team programming where you take turns commuting to each others houses for a day. I think that sounds kind of fun. Even more fun when the entire office comes to your house one day a week...
Re:Nice office... but who is going to pay for this
on
The Bionic Office
·
· Score: 2, Insightful
If it's not in the middle of New York City I think you could get it for a lot cheaper. If it's not in downtown anywhere, you can get it a lot cheaper than that. I'm working in an office on the North side of Chicago right now, and it's great -- it's closer than downtown (for everyone in the office, as far as I know, not just me), it's obviously a much cheaper location for what you get, and it's just nicer. Maybe I'm just biased against downtowns (okay, I definitely am), but I prefer living and working in mixed-use areas. I like living by stores and businesses, and I like working by people's houses. It all feels much more natural to me. And I can bike to work.
Non-central locations in a city are great, because there's all sorts of interesting spaces (not just office buildings), and there's stuff around. I don't want to work in a strip mall, or an industrial park, or a highrise. They are all examples of overly partitioned spaces, spaces that are serve a specific function then become wastelands on a daily cycle. I like being by restaurants that are open for lunch and dinner, I like seeing mothers with strollers go by, I like knowing that it's 3:00 because I see all the kids walking back from school. My only disapointment is that few offices have front porches.
A
lot of the stuff in that office also isn't about the programmers, it's about visitors. You can make functional, attractive, pleasant spaces without spending a ton of money. But they won't impress outsiders with your prosperity and modernity.
Sure, copyright covers use, not just distribution. If you have an illegal/unauthorized copyrighted work, you could be sued. In reality, it's entirely implausible that users could be successfully sued for this. IF the copyright violation is revealed and an unintentional copyright violator continued to even just USE the offending code, the then a suit might succede.
My impression is that generally ignorance is a good defense for copyright violations -- if you could plausibly believe that the works weren't copyrighted (e.g., no copyright notice, as in this case), then you aren't in violation until you've been notified. I imagine liability for that "damage" could be shifted to the person who removed the copyright notice in the first place, but (according to SCO's story) that would be IBM or SGI or somesuch.
Of course, SCO might claim that they've already "notified" everyone about the violations. I don't know what the quality of the notification need be. I suppose it's this case that HP is idemnifying against.
Word doesn't do very sophisticated revision management, as far as I can tell. But I only watched other people use it, I didn't use it myself.
Typically you'd put the document in Tracking mode, and all the changes would be highlighted (green for added text, red strikethrough for deleted). This is saved with the document, and can be handed around -- no client-server style is required (easier to use, mostly with email attachments, though you can also imagine all the clerical work this requires to manage). Once an editor was satisfied they'd Accept Changes, and all the revision marks would go away -- vaguely like a commit. I don't know if old revisions were available at all (I kind of doubt it, but then with the amount of stuff in a Word document it seems like it should be able to fit in there somewhere). There were also problems with authors or people who weren't part of the professional editing cycle not being trusted to do this stuff right.
In terms of archival, backups, auditing, etc., it's not a very good system at all. But the UI is pretty decent. The changes are also quite accurate, since it tracks the actual changes you make as opposed to finding the minimal changes required given two versions of a document, as diff does. This is especially important in Word, where there's a lot of styling information, much of it hidden, implicitly inserted, and possibly redundant.
People didn't seem to have much respect for Word's diff-like comparison feature. Probably the comparison was hampered by all the spurious changes that Word inserts as you edit, but I never tried it. Maybe a diff-like comparison would be okay (as opposed to tracking every change as it is made), if the comparison was high quality. But it's really the inline display of differences in the editable document that was the prime feature.
diff doesn't work well with most human text (as opposed to program text). Because it is line-based it will not give good indications of what changes were made, because most human text is not line-based. Tracking mode in Word is quite granular -- when you delete a single space, for instance, it marks only that single space.
I've had decent success using diff-like tools working on a per-word basis using HTML. Presumably you could do the same thing with TeX. But there is no tool support for this. Even in the case of diff there are tools that browse the changes nicely, but few (any?) GUI tools that allow you to interact with the text while simultaneously seeing the changes.
From what I can tell, most publishers don't really trust their writers to do anything but the simplest formatting or typesetting (nor probably to most writers want to think about typesetting). The Word document they are looking for is as plain as can be -- maybe a few italics here and there at most.
Probably of more interest to the publishers is the track changes mode in Word. They probably won't do any formatting until the book is very close to finished, but tracking changes is important. I don't know what tools support this in other formats, like RTF.
A slim subset of HTML seems best to me -- p, br, h1, i, b, maybe tt. Maybe some other details if depending on the domain. Amount and type of whitespace explicitly insignificant. Comparisons relatively easy due to the primitive structure. No attempt at semantics -- that's for indexers and people involved later on, if it happens at all. No one can agree on semantics anyway. The focus should be on content. But that still presupposes tools that I am not certain exist -- accessible editors with that can handle comparisons, accessible storage of revisions, safe transport of documents without loss of information, high enough availability that all the likely freelancers involved in the process (editor, copywriter, proofreader, researcher, indexer, etc) will have access and sufficient skill in the tools... well, that's why they choose Word. Ironically, the actual features publishers need aren't that extensive -- far less than what a secretary needs! -- but they're still stuck with Word.
They also strangely stopped exit polls part way through, even though exit polls would have been an important measure of voter intention, and a significant discrepency between poll results and votes tallied would be evidence of fraud or misinterpreted voter intention. The justification for stopping exit polls part way through the day (that it might effect the race) was absurd, as it is not difficult to withhold the results or simply not collate the results until after the polls have closed.
If you want any programs to be under package control (e.g., Perl applications) it is nice to have their dependencies under package control as well. Otherwise you have to bundle all those dependencies.
No, Python doesn't and won't have a macro system. The Lisp features like lambda and map are kind of in disrepute, at least from Guido's perspective -- see comp.lang.python for many opinions on the matter. Since Guido is Benevolent Dictator For Life, his opinion holds a great deal of sway. (BTW, map has been replaced with list comprehension, taken from Haskell, so it's not like functional programming as a whole is being rejected)
Macros would indeed be more difficult to implement in Python, because data and code are not as interchangable as in Lisp (e.g., (car 1 2) being code, '(car 1 2) being data). Macro-like manipulations of Python code would be rather difficult. But there has been discussions about ways of achieving the same flexibility without quite so much generality.
In a related example, some people feel that code blocks, ala Ruby or Smalltalk, are the right way to do control structures. Indeed they are very general. Python instead has developed notions of iteration, generation, and the use of first-class functions, and together they are all quite general as well -- you can do what you need to do. While more eclectic than anonymous functions/lambdas/closures, they are arguably more transparent -- you don't know what a function might do with a code block, and it can greatly effect surrounding code.
So it is with macros -- they are extremely general, and can do unexpected and magic things, (which is not in fitting with core Python principals). As Python grows alternatives, more things need to be built into the languages, but the result is a set of predictable and well-known idioms. Python is a full language, not the basis for other languages, as Lisp can become.
As far as performance, there are a number of things like Psyco, Pyrex, Numeric, and Weave/SciPy, which can handle performance problems (noting that in most application performance is not a problem). The result is again somewhat eclectic, but pragmatic. There's a wide variety of ways to optimize a Python program, many of which are just normal programming optimization (caching, making a process persistent, lazy loading, etc), as well as Python modules written in C or other compiled languages (potentially aided by things like SWIG, Pyrex, or ctypes)
People talk Ocaml up a lot, but if it was so great why doesn't it have good libraries? Other languages have built good libraries of code in the same amount of time Ocaml has had to do so. I suspect that Ocaml might be too insular, thus hindering the use of external code.
You forgot PythonCard, for a somewhat easier/higher level/more visual way to do GUI programming (built ontop of wxPython).
The other links you give are mostly if you want to improve the performance of your application, which usually isn't a problem. The beginning Python programmer shouldn't look at those unless they have determined empirically that they really need those tools. (Unless you are interfacing C libraries, try Pyrex, or if you know that you will be doing heavy math, where you'd use NumPy or Weave)
If you're using globals in an OO language, may Dog have mercy on your soul.
While I've seen a lot of abuse of globals (any PHP piece code being a good example), I think being purely anti-global is a little too strong.
Global variables should hold global data. Global data does exist. I don't know about the specific case of Ruby, but in Smalltalk (which is obviously the inspiration for Ruby's semantics) all uppercase variables are global, which conveniently includes classes, as classes are first-class objects that are used globally. Singletons are another common example of a global, though sometimes that is hidden behind the facade of syntax. Class variables are also globals, just globals in a more specific namespace.
Anyway, I often use globals. When the global is of a specific class people would call it a singleton, or maybe a constant, but it's still a global. But when it's not a constant, which includes classes with non-contant class variables, it's usually a cache of some sort, or a primitive data store, built with the expectation of concurrency.
[It's convenient in Python, and maybe Ruby for all I know, that globals are still local to their module, so the problem of globals being difficult to track is avoided.]
People who study axiomatically opposed arguments and dissect them for accuracy and flaws are wasting their time unless they are preparing to debate the issue publically. Slashdot is a lame place to debate this publically. Many of us aren't in the mood to dive into debates, nor of the public stature to make our yet-another-opinion very meaningful -- at least to an audience that would find this article compelling.
People who are enthusiastic about debate think that a reasoned argument is important, that winning a debate is possible. These people are either naive, or they have not been very thoughtful about their past experiences. They are deluded into thinking that if they could just get someone to understand what they are arguing, the compelling wisdom of it would overwhealm the person into agreeing. This is not possible. People's beliefs are not analytical -- even among those inclined to debate. Analysis follows belief, we construct reasons to justify our desires.
This article will only make me feel frustrated and annoyed, and railing against its inaccuracies or even trying to understand its perspective will be constructive. I am glad the original poster made this clear. I prefer constructive and informative thought, which this article will not provide me. Avoiding this sort of thing is what you need to do to be intellectually constructive in this internet age -- it's not zealotry.
I don't know what you are arguing against. I guess you are arguing against VeriSign, but I was doing the same thing, so why did you post your argument in reply to my post?
They already kind of do this, trying different combinations of appending .com, prepending www., and that could be expanded into a wider search. Invalid domains can be turned into search terms.
This is a UI issue, not a protocol issue. It can best solved in the UI, i.e., in the browser. And the browsers, while not always acting in good faith, have done exactly this.
On a similar thread, I've had a service stall due to a broken package, and make it very difficult to start up my system. It's a heavy service (Zope) which was annoying enough to wait for -- having it mess my system up was insult to injury. Or injury to insult? Anyway, it was dumb.
Maybe the whole thing could be rewritten in C someday -- easier to do once the functionality is completely worked out. Maybe it won't turn out to be a problem -- Python is standard on modern desktop operating systems (which is what this proposal targets). Maybe bash/sh is more standard, but standards only come about because developers demand new dependencies (at least that's how it happens in Linux).
Yes, you can improve existing projects. But source code is not some magical thing, to be preserved at all cost. It is not a limited resource. Rewriting is frequently easier and can lead to more robust code. You don't have to use old code to learn the old code's mistakes.
Or, since this is free software, you can use the old code. Use a collection of old code, copy and paste to your hearts delight. But if you are going to get people to use it, you usually have to give it a name -- so that people can find it, discuss it, etc. So just because it has a new name does not mean it is all new code.
And if CORBA was such a great thing, why isn't everyone using it? It's not that it's obscure, or that implementations don't exist. Lots of implementations exist, there's lots of documentation, and yet people still don't use it. It's hardly like these GNOME people have never heard of CORBA. But perhaps they want to create something that free software developers will actually use. Not paid programmers who do what they have to because that's what mangement wants -- people will struggle with all sorts of things when they are being paid to do it. But free software developers -- even when paid -- are generally motivated more by aesthetic, incremental, intrinsically satisfying programming.
CORBA could be technically great, or horrible, or whatever... but the fact is that people aren't using it. It's had its chance, its time has passed.
Political speach isn't to the advantage of incumbent politicians. They do best when the bar is high, when speach is restricted, and when political expression is at a low.
I mean, if we're going to do a full accounting, you can't be selective about it. Sometimes (not always) the government is a service provider, and taxes are what drive that.
That would be a trojan, not a worm. And while people talk about the risk of it, links in forums (especially moderated, high-activity forums) aren't a big vector for trojans. This utility might still mess up your system, but probably not on purpose.
Sure, it's small inconvenience. It's also a small return. Is it okay to steal, if you only steal five cents at a time? Eh, whatever, I don't care about five cents. What if you stole five cents at a time from every person in the country? That's the kind of equation telemarketers are making -- small returns from small inconveniences, multiplied by every person in the country.
We should stop worshipping jobs. We should start being concerned about productivity. Telemarketers have jobs, but they are completely unproductive. That's not the kind of economy I want to support.
A system where votes were printed to a machine-readable piece of paper, verified by the voter, then deposited in a secure box, would be simple and secure. By printing votes you create a self-verifying system -- voters can check their vote is correct, and an audit can easily verify that votes were recorded as voters intended. Management of the printed records would be just like the ballots we already are using, but without the reliability problems of punch-card systems. Tallying could be done mechanically, as a barcode could accompany the printed text.
The whole system is very simple. Even if they just used an ATM style of security (printing to an internal paper log) they would be far superior to Diebold. But using logic is difficult in this case, because Diebold is clearly making absurd claims, and it's difficult to refute absurdity.
EVM 2003 is trying to create a complete open source voting system (not just machine). I wish them the best of luck. This is more than just philosophy about copyright and IP, it's the defense of democracy from those that want very much to take away even the slight accountability that currently exists. They've already made it into office with one fraudulent election (2000), and very possibly kept control of congress with another (2002, with many states being won with unverifiable votes that didn't match up with predicted results).
Heh... team programming where you take turns commuting to each others houses for a day. I think that sounds kind of fun. Even more fun when the entire office comes to your house one day a week...
Non-central locations in a city are great, because there's all sorts of interesting spaces (not just office buildings), and there's stuff around. I don't want to work in a strip mall, or an industrial park, or a highrise. They are all examples of overly partitioned spaces, spaces that are serve a specific function then become wastelands on a daily cycle. I like being by restaurants that are open for lunch and dinner, I like seeing mothers with strollers go by, I like knowing that it's 3:00 because I see all the kids walking back from school. My only disapointment is that few offices have front porches.
A lot of the stuff in that office also isn't about the programmers, it's about visitors. You can make functional, attractive, pleasant spaces without spending a ton of money. But they won't impress outsiders with your prosperity and modernity.
Oh wait, maybe you are right. At least if you want a programming team larger than 3.
But think, if you could get ALL TEN in your team...! That loser down the street with twenty guys in the top 99.7% would be eating his heart out.
My impression is that generally ignorance is a good defense for copyright violations -- if you could plausibly believe that the works weren't copyrighted (e.g., no copyright notice, as in this case), then you aren't in violation until you've been notified. I imagine liability for that "damage" could be shifted to the person who removed the copyright notice in the first place, but (according to SCO's story) that would be IBM or SGI or somesuch.
Of course, SCO might claim that they've already "notified" everyone about the violations. I don't know what the quality of the notification need be. I suppose it's this case that HP is idemnifying against.
Typically you'd put the document in Tracking mode, and all the changes would be highlighted (green for added text, red strikethrough for deleted). This is saved with the document, and can be handed around -- no client-server style is required (easier to use, mostly with email attachments, though you can also imagine all the clerical work this requires to manage). Once an editor was satisfied they'd Accept Changes, and all the revision marks would go away -- vaguely like a commit. I don't know if old revisions were available at all (I kind of doubt it, but then with the amount of stuff in a Word document it seems like it should be able to fit in there somewhere). There were also problems with authors or people who weren't part of the professional editing cycle not being trusted to do this stuff right.
In terms of archival, backups, auditing, etc., it's not a very good system at all. But the UI is pretty decent. The changes are also quite accurate, since it tracks the actual changes you make as opposed to finding the minimal changes required given two versions of a document, as diff does. This is especially important in Word, where there's a lot of styling information, much of it hidden, implicitly inserted, and possibly redundant.
People didn't seem to have much respect for Word's diff-like comparison feature. Probably the comparison was hampered by all the spurious changes that Word inserts as you edit, but I never tried it. Maybe a diff-like comparison would be okay (as opposed to tracking every change as it is made), if the comparison was high quality. But it's really the inline display of differences in the editable document that was the prime feature.
I've had decent success using diff-like tools working on a per-word basis using HTML. Presumably you could do the same thing with TeX. But there is no tool support for this. Even in the case of diff there are tools that browse the changes nicely, but few (any?) GUI tools that allow you to interact with the text while simultaneously seeing the changes.
A slim subset of HTML seems best to me -- p, br, h1, i, b, maybe tt. Maybe some other details if depending on the domain. Amount and type of whitespace explicitly insignificant. Comparisons relatively easy due to the primitive structure. No attempt at semantics -- that's for indexers and people involved later on, if it happens at all. No one can agree on semantics anyway. The focus should be on content. But that still presupposes tools that I am not certain exist -- accessible editors with that can handle comparisons, accessible storage of revisions, safe transport of documents without loss of information, high enough availability that all the likely freelancers involved in the process (editor, copywriter, proofreader, researcher, indexer, etc) will have access and sufficient skill in the tools... well, that's why they choose Word. Ironically, the actual features publishers need aren't that extensive -- far less than what a secretary needs! -- but they're still stuck with Word.
They also strangely stopped exit polls part way through, even though exit polls would have been an important measure of voter intention, and a significant discrepency between poll results and votes tallied would be evidence of fraud or misinterpreted voter intention. The justification for stopping exit polls part way through the day (that it might effect the race) was absurd, as it is not difficult to withhold the results or simply not collate the results until after the polls have closed.
If you want any programs to be under package control (e.g., Perl applications) it is nice to have their dependencies under package control as well. Otherwise you have to bundle all those dependencies.
Macros would indeed be more difficult to implement in Python, because data and code are not as interchangable as in Lisp (e.g., (car 1 2) being code, '(car 1 2) being data). Macro-like manipulations of Python code would be rather difficult. But there has been discussions about ways of achieving the same flexibility without quite so much generality.
In a related example, some people feel that code blocks, ala Ruby or Smalltalk, are the right way to do control structures. Indeed they are very general. Python instead has developed notions of iteration, generation, and the use of first-class functions, and together they are all quite general as well -- you can do what you need to do. While more eclectic than anonymous functions/lambdas/closures, they are arguably more transparent -- you don't know what a function might do with a code block, and it can greatly effect surrounding code.
So it is with macros -- they are extremely general, and can do unexpected and magic things, (which is not in fitting with core Python principals). As Python grows alternatives, more things need to be built into the languages, but the result is a set of predictable and well-known idioms. Python is a full language, not the basis for other languages, as Lisp can become.
As far as performance, there are a number of things like Psyco, Pyrex, Numeric, and Weave/SciPy, which can handle performance problems (noting that in most application performance is not a problem). The result is again somewhat eclectic, but pragmatic. There's a wide variety of ways to optimize a Python program, many of which are just normal programming optimization (caching, making a process persistent, lazy loading, etc), as well as Python modules written in C or other compiled languages (potentially aided by things like SWIG, Pyrex, or ctypes)
Hmm... Dylan? Rebol? (Rebol = Logo = Lisp)
People talk Ocaml up a lot, but if it was so great why doesn't it have good libraries? Other languages have built good libraries of code in the same amount of time Ocaml has had to do so. I suspect that Ocaml might be too insular, thus hindering the use of external code.
The other links you give are mostly if you want to improve the performance of your application, which usually isn't a problem. The beginning Python programmer shouldn't look at those unless they have determined empirically that they really need those tools. (Unless you are interfacing C libraries, try Pyrex, or if you know that you will be doing heavy math, where you'd use NumPy or Weave)
Global variables should hold global data. Global data does exist. I don't know about the specific case of Ruby, but in Smalltalk (which is obviously the inspiration for Ruby's semantics) all uppercase variables are global, which conveniently includes classes, as classes are first-class objects that are used globally. Singletons are another common example of a global, though sometimes that is hidden behind the facade of syntax. Class variables are also globals, just globals in a more specific namespace.
Anyway, I often use globals. When the global is of a specific class people would call it a singleton, or maybe a constant, but it's still a global. But when it's not a constant, which includes classes with non-contant class variables, it's usually a cache of some sort, or a primitive data store, built with the expectation of concurrency.
[It's convenient in Python, and maybe Ruby for all I know, that globals are still local to their module, so the problem of globals being difficult to track is avoided.]