We don't really have a 2-party system the way other countries have N-party systems. Each party has many (informal) subgroups and we get to elect our representatives in two stages - first we get to select the Democratic and Republican nominees (where there is usually plenty of choice, at least for the not-in-power party) and then select between those two.
Is that better than a system like the UK where each party internally (i.e. not by open vote) selects candidates to run for specific offices (e.g. seats in the House of Commons) and then the party with the majority gets to internally select the PM, etc?
Maybe it is, because in a Parliamentary system you get only one vote, whereas in our system you get to vote twice.
Yeah, yeah, if P==NP we're all doomed. So what? If pigeons evolved flamethrowers in their eyes tomorrow we'd be doomed too. That doesn't make it reasonable to write an article headlined "Better bring lots of breadcrumbs when you go out, otherwise there's a chance you will be burnt to a crisp, experts say".
Somebody once told me a story about spilling a milkshake into a VAX 780. They took it outside, hosed everything off, let it dry, and it ran just fine.
Then again, I recently dropped my Nokia cellphone into the toilet. I took it apart, let it dry as much as possible, but it still didn't work. Just don't build them like they used to. (But the cellphone probably has a lot more MIPS and RAM than the VAX!)
I don't recall the details but I think some time ago a satellite went out due to solar weather and this disabled a lot of pagers. Also I think during solar storms astronauts are not allowed to do EVA at the space station.
There's a passage in the book "Red Mars" that describes the effects of a solar storm on astronauts who are way beyond the Earth's protective magnetosphere. Basically they have to hide in a shielded area of the space ship until the storm passes. This book is pretty good with scientific accuracy so I'd guess that description is a good one.
Granted, the average person might not notice the effects. But that doesn't mean that they don't exist.
Quite a few things have happened due to solar flares. Satellites knocked out, transmission lines shut down, etc. Check out "Storms from the Sun: The Emerging Science of Space Weather" by Michael Carlowicz and Ramon Lopez - I read this a while back and it listed a number of these consequences.
"We have to start using the habbits of the middle age" - hang on, my 40th birthday is coming up - does that mean I'm going to turn into some kind of dismembering vigilante? (Or did you mean to write "the hobbits of middle earth" - just bite off his ring finger for a start?)
The other problem with Alpha was that it came out too far in advance of other 64-bit systems, and it had no 32-bit pointer type. Back then (12 years ago or so) lots of code assumed that sizeof (int) == sizeof (pointer) which meant that only very clean code would be portable to the Alpha. That hindered adoption quite a bit.
Now that everybody has a 64-bit architecture, Alpha might be able to compete very well against Sparc, MIPS, etc, if it had a foothold in the market...
The ironic thing about the sizeof (pointer) issue is that everybody now uses 32-bit ints and 64-bit longs, except for Win64, where long is still 32 bits. Obviously all decent code should be using caddr_t instead of making these assumptions, but...
I guess I was thinking of the bigger applications like Oracle, scientific codes, etc. Something that's 95% GUI code will probably not get ported as fast... Maybe vendors of these apps don't take linux seriously yet, but I bet they consider MacOS a real option. When 5%, 10%, whatever of their customers say "I'm switching to Mac, see ya" will that be enough to get them to do a port? And once you run on 2 dissimilar machines a 3rd one is not so much extra incremental cost. (And I'll bet there are or soon will be ports of the MacOS toolkit to linux, which cuts down the cost even more (writing with zero knowledge of the facts, here)).
Personally, in my work (and non-work programming), writing code that is deliberately non-portable would be such an obviously dumb move that it's hard to see how people can do this. Have they never heard of platform-dependent layers to insulate their "real" code from the OS? Is it a blind faith in the future hegemony of MS, or are they just too lazy and/or too hurried to do it right?
Wait, doesn't that suggest that MS should be helping Wine, et al as much as possible to let you run Windows programs on Linux, rather than supporting Linux binaries on Windows?
The assumption here is that once Windows can run Unix apps, the conventional Unix and Linux distributions will become redundant, because... the reason people use them is that there are apps they can run only on Unix and not Windows? Ha ha ha... Seriously, by 2008 every vendor with any sense will sell both Linux and Windows ports of their software, and both SFU and Wine will be an occasionally useful convenience utility. Linux will win because the kernel is better than Windows, if that's the only differentiator.
Or maybe MS will switch to the Linux or BSD kernel after Longhorn is out. If OS's are a commodity why waste vast amounts of money competing with something that's already better and free. They're already doing that with IE (telling people they should switch to Mozilla).
It's not generally the case that 64-bit code should be faster than 32-bit code (I'd expect the reverse, by a small margin) but the Itanium is a special case. The IA-64 instruction set is different from IA-32 and the CPU has to translate the 32-bit codes on the fly into 64-bit operations before executing them. *That* is what's slow. The AMD64 architecture, on the other hand, is an extension of IA-32 and so it's a lot faster than Itanium at running 32-bit executable.
I would guess Intel is moving in the direction of dropping Itanium and going with AMD's architecture. They really goofed when they assumed everybody would recompile all their old 32-bit apps immediately for Itanium. This is a mistake a lot of hardware vendors make... If DEC hadn't made that mistake with the Alpha 15 years ago they might still be around and the Alpha architecture might be the standard for PC's now.
Hey, I know the guy who has the somewhere.com domain name. I'm sure he'd appreciate it if he didn't have to use 99% of his internet bandwidth throwing away mail send to bogus addresses...
Sure, anybody can release their code under any terms they like. The point of the story, I think, is that if you release something public domain or using BSD-like terms, somebody may well take your code and make money from it.
Maybe you expect that and are fine with it, and have as a goal the encouragement of better software (say, going back 15 years, if you release a toolkit like Tcl/Tk because you want to provide an alternative to C/Motif), or just recognition and acclaim based on wide usage.
But this seems somehow wrong when the product being released and charged for is a small increment on top of the original PD stuff. This could happen if the code is a full application rather than components or framework.
If I release a program in the latter category I would consider a license that says "free to non-profits, but pay me if it's a commercial product". This probably has a name in the OSS license taxonomy but I don't know what it is. It seems fairest because the author would always get a share of the profits (whether they are zero or not). I think universities tend to give approval to research projects releasing their code under this kind of license more easily than the GPL - these days technology licensing is no small matter for schools.
If the author of the PocketNES code thought about this and figured PD was what he wanted, great. But the next person might be in for a surprise if they don't think the issues through...
I think rather than preserving all the data when you convert from one representation to another, you need to think of it as multiple views onto a single internal format that you may not ever look at.
Programming languages are hard - just consider html/xml. You have two types of views - structural and presentation. That would correspond to semantics-based XML tags like <definition>, <example_code lang=C>, etc, one one hand, and large italic green text on the other. It doesn't make sense to pollute either of these representations with tags belonging to the other, I don't think, but you can keep everything in a comprehensive internal format and have multiple editors that modify the things they like without messing up the other tags. Various people have done research on this topic - 15 years ago there was something called Lilac that worked like this for LaTeX.
How does this apply to programming languages? What are the useful "other views" of a program? Maybe an encoding of the breakpoints and debugging hooks you have applied with the debugger? You wouldn't necessarily want to see those when you are editing the code. Profiling information? Nicely formatted documentation?
If you think there is stuff to be done in this area, give it a try... See what DevStudio.Net and Mono are moving towards and what would be good to have, from your point of view, which they are not addressing, and have at it... We won't know if something will be useful unless we try it out.
As long as the different representations are not too far off then it's probably not a big deal. But I work a lot together with other developers looking at the same code at the same time and if our dialects were mutually incomprehensible that would not be a good thing.
Multiple representations can be very powerful - editing html code in parallel with the rendered version makes a lot of sense. But even in this case there is not a one to one mapping - it's not just syntax but semantics that vary (i.e. the rendered version has no semantics whereas the html or xml code may). I wonder if you could find two real programming languages that you could usefully and bidirectionally translate between and not lose a lot in the process.
Why in the world would any programmer care about whether they write "if { }" or "if... fi", etc? I don't see the big advantage in indulging one's personal preferences about syntax. It's not like every person's brain has a completely different way of reading a program that makes it significantly easier to understand a unique brand of syntactic sugar...
Sure, you can develop in your own special IDE that gives you your unique syntax. But don't you ever look at code together with other programmers who might have different preferences? Don't you ever view code published in magazines and on web sites that can't pretty-print to your specification? Training yourself to strongly prefer some kind of private language is not a very good idea.
GEB is not a book for anybody with a technical college education. I don't think I could manage to read it again myself after a PhD in CS. I did read it when I was 16, though, and I thought it was the most amazing thing I ever read, and it convinced me I wanted to study math and CS in college.
So I agree with your last sentence, I guess. There is a place for "inspirational" technical books like GEB and to say "just read Knuth instead" is missing the point by a mile.
Based on the little biochemistry I know, I'd say that water is a rather unique chemical, and it's due to its special qualities (e.g. hydrogen bonds, interaction with other polar molecules) that life as we know it is possible. Sure, there may be biology based on other compounds, but the more we know about our biochemistry the less likely it seems that an equally "powerful" system could arise. There are organisms that life at higher and lower temperatures, but I think they generally use tricks (like anti-freeze compounds) to extend the range of liquid water as a solvent. 90 degrees K seems way out of bounds to me.
Ever check how much doctors pay for malpractice insurance? It's in the 6 digits for some specialties. Just think what would happen when small software companies start getting sued because of bugs in their code that lead to others making expensive mistakes. Lots of companies would be driven out of business and the only ones that would be left standing would be the ones with the deepest pockets, i.e. Microsoft. Then they would say "we are paying out all these huge damage awards, so we have to raise the base price on windows to $1000 / copy".
Maybe that's a bit extreme. Seriously, software is way more complex than a car. Who among you would bet your entire net worth that you haven't shipped code with potentially serious bugs in it? There are always bugs.
Maybe a mandatory "your money back if you aren't satisfied" law would fly. But 99% of the people who take advantage of that offer are going to keep a backup copy of the software, "just in case"...
This idea could never get past the unanimous opposition of every company in the software industry. Just live with it - software has bugs. If you don't like it switch to another package or just go back to pencil and paper.
I think the reference I originally used was http://www.arcelect.com/10baset.htm... It appears there are a few kinds of 100baseT - 100baseTX, 100baseT4 and 100baseVG. It looks like TX is the most commonly used ands it uses 2 pairs. So you are right.
I like the Leviton Cat5 plugs w/faceplates because I hate putting male connectors on the end of the cables. I always make mistakes in feeding in the wires into the tiny sockets... With the plugs you have plenty of room to clamp down the individual wires.
Here's another hint... Phones take 2 wires and 10baseT takes 4. So if all you have is one cat5 cable going to some obscure location in your house, and you don't need high bandwidth, you can get 1 ethernet connection and 2 phone lines. Useful...
> VMWare is not cheap
Is is cheap - less than $200
That's a lot cheaper than a whole other PC, at least
And it's really great to have - fast, convenient, etc
We don't really have a 2-party system the way other countries have N-party systems. Each party has many (informal) subgroups and we get to elect our representatives in two stages - first we get to select the Democratic and Republican nominees (where there is usually plenty of choice, at least for the not-in-power party) and then select between those two.
Is that better than a system like the UK where each party internally (i.e. not by open vote) selects candidates to run for specific offices (e.g. seats in the House of Commons) and then the party with the majority gets to internally select the PM, etc?
Maybe it is, because in a Parliamentary system you get only one vote, whereas in our system you get to vote twice.
Yeah, yeah, if P==NP we're all doomed. So what? If pigeons evolved flamethrowers in their eyes tomorrow we'd be doomed too. That doesn't make it reasonable to write an article headlined "Better bring lots of breadcrumbs when you go out, otherwise there's a chance you will be burnt to a crisp, experts say".
What would a Lamborghini SUV look like? Now we know.
Somebody once told me a story about spilling a milkshake into a VAX 780. They took it outside, hosed everything off, let it dry, and it ran just fine.
Then again, I recently dropped my Nokia cellphone into the toilet. I took it apart, let it dry as much as possible, but it still didn't work. Just don't build them like they used to. (But the cellphone probably has a lot more MIPS and RAM than the VAX!)
I don't recall the details but I think some time ago a satellite went out due to solar weather and this disabled a lot of pagers. Also I think during solar storms astronauts are not allowed to do EVA at the space station.
There's a passage in the book "Red Mars" that describes the effects of a solar storm on astronauts who are way beyond the Earth's protective magnetosphere. Basically they have to hide in a shielded area of the space ship until the storm passes. This book is pretty good with scientific accuracy so I'd guess that description is a good one.
Granted, the average person might not notice the effects. But that doesn't mean that they don't exist.
Quite a few things have happened due to solar flares. Satellites knocked out, transmission lines shut down, etc. Check out "Storms from the Sun: The Emerging Science of Space Weather" by Michael Carlowicz and Ramon Lopez - I read this a while back and it listed a number of these consequences.
"I can keep my printer ... in a bathroom"
:-)
Great idea - any time you need some toilet paper just print up a few Slashdot stories
"We have to start using the habbits of the middle age" - hang on, my 40th birthday is coming up - does that mean I'm going to turn into some kind of dismembering vigilante? (Or did you mean to write "the hobbits of middle earth" - just bite off his ring finger for a start?)
The other problem with Alpha was that it came out too far in advance of other 64-bit systems, and it had no 32-bit pointer type. Back then (12 years ago or so) lots of code assumed that sizeof (int) == sizeof (pointer) which meant that only very clean code would be portable to the Alpha. That hindered adoption quite a bit.
Now that everybody has a 64-bit architecture, Alpha might be able to compete very well against Sparc, MIPS, etc, if it had a foothold in the market...
The ironic thing about the sizeof (pointer) issue is that everybody now uses 32-bit ints and 64-bit longs, except for Win64, where long is still 32 bits. Obviously all decent code should be using caddr_t instead of making these assumptions, but...
I guess I was thinking of the bigger applications like Oracle, scientific codes, etc. Something that's 95% GUI code will probably not get ported as fast... Maybe vendors of these apps don't take linux seriously yet, but I bet they consider MacOS a real option. When 5%, 10%, whatever of their customers say "I'm switching to Mac, see ya" will that be enough to get them to do a port? And once you run on 2 dissimilar machines a 3rd one is not so much extra incremental cost. (And I'll bet there are or soon will be ports of the MacOS toolkit to linux, which cuts down the cost even more (writing with zero knowledge of the facts, here)).
Personally, in my work (and non-work programming), writing code that is deliberately non-portable would be such an obviously dumb move that it's hard to see how people can do this. Have they never heard of platform-dependent layers to insulate their "real" code from the OS? Is it a blind faith in the future hegemony of MS, or are they just too lazy and/or too hurried to do it right?
Wait, doesn't that suggest that MS should be helping Wine, et al as much as possible to let you run Windows programs on Linux, rather than supporting Linux binaries on Windows?
The assumption here is that once Windows can run Unix apps, the conventional Unix and Linux distributions will become redundant, because ... the reason people use them is that there are apps they can run only on Unix and not Windows? Ha ha ha... Seriously, by 2008 every vendor with any sense will sell both Linux and Windows ports of their software, and both SFU and Wine will be an occasionally useful convenience utility. Linux will win because the kernel is better than Windows, if that's the only differentiator.
Or maybe MS will switch to the Linux or BSD kernel after Longhorn is out. If OS's are a commodity why waste vast amounts of money competing with something that's already better and free. They're already doing that with IE (telling people they should switch to Mozilla).
It's not generally the case that 64-bit code should be faster than 32-bit code (I'd expect the reverse, by a small margin) but the Itanium is a special case. The IA-64 instruction set is different from IA-32 and the CPU has to translate the 32-bit codes on the fly into 64-bit operations before executing them. *That* is what's slow. The AMD64 architecture, on the other hand, is an extension of IA-32 and so it's a lot faster than Itanium at running 32-bit executable.
I would guess Intel is moving in the direction of dropping Itanium and going with AMD's architecture. They really goofed when they assumed everybody would recompile all their old 32-bit apps immediately for Itanium. This is a mistake a lot of hardware vendors make... If DEC hadn't made that mistake with the Alpha 15 years ago they might still be around and the Alpha architecture might be the standard for PC's now.
Hey, I know the guy who has the somewhere.com domain name. I'm sure he'd appreciate it if he didn't have to use 99% of his internet bandwidth throwing away mail send to bogus addresses...
Sure, anybody can release their code under any terms they like. The point of the story, I think, is that if you release something public domain or using BSD-like terms, somebody may well take your code and make money from it.
Maybe you expect that and are fine with it, and have as a goal the encouragement of better software (say, going back 15 years, if you release a toolkit like Tcl/Tk because you want to provide an alternative to C/Motif), or just recognition and acclaim based on wide usage.
But this seems somehow wrong when the product being released and charged for is a small increment on top of the original PD stuff. This could happen if the code is a full application rather than components or framework.
If I release a program in the latter category I would consider a license that says "free to non-profits, but pay me if it's a commercial product". This probably has a name in the OSS license taxonomy but I don't know what it is. It seems fairest because the author would always get a share of the profits (whether they are zero or not). I think universities tend to give approval to research projects releasing their code under this kind of license more easily than the GPL - these days technology licensing is no small matter for schools.
If the author of the PocketNES code thought about this and figured PD was what he wanted, great. But the next person might be in for a surprise if they don't think the issues through...
I think rather than preserving all the data when you convert from one representation to another, you need to think of it as multiple views onto a single internal format that you may not ever look at.
... See what DevStudio.Net and Mono are moving towards and what would be good to have, from your point of view, which they are not addressing, and have at it ... We won't know if something will be useful unless we try it out.
Programming languages are hard - just consider html/xml. You have two types of views - structural and presentation. That would correspond to semantics-based XML tags like <definition>, <example_code lang=C>, etc, one one hand, and large italic green text on the other. It doesn't make sense to pollute either of these representations with tags belonging to the other, I don't think, but you can keep everything in a comprehensive internal format and have multiple editors that modify the things they like without messing up the other tags. Various people have done research on this topic - 15 years ago there was something called Lilac that worked like this for LaTeX.
How does this apply to programming languages? What are the useful "other views" of a program? Maybe an encoding of the breakpoints and debugging hooks you have applied with the debugger? You wouldn't necessarily want to see those when you are editing the code. Profiling information? Nicely formatted documentation?
If you think there is stuff to be done in this area, give it a try
As long as the different representations are not too far off then it's probably not a big deal. But I work a lot together with other developers looking at the same code at the same time and if our dialects were mutually incomprehensible that would not be a good thing.
Multiple representations can be very powerful - editing html code in parallel with the rendered version makes a lot of sense. But even in this case there is not a one to one mapping - it's not just syntax but semantics that vary (i.e. the rendered version has no semantics whereas the html or xml code may). I wonder if you could find two real programming languages that you could usefully and bidirectionally translate between and not lose a lot in the process.
Why in the world would any programmer care about whether they write "if { }" or "if ... fi", etc? I don't see the big advantage in indulging one's personal preferences about syntax. It's not like every person's brain has a completely different way of reading a program that makes it significantly easier to understand a unique brand of syntactic sugar...
Sure, you can develop in your own special IDE that gives you your unique syntax. But don't you ever look at code together with other programmers who might have different preferences? Don't you ever view code published in magazines and on web sites that can't pretty-print to your specification? Training yourself to strongly prefer some kind of private language is not a very good idea.
GEB is not a book for anybody with a technical college education. I don't think I could manage to read it again myself after a PhD in CS. I did read it when I was 16, though, and I thought it was the most amazing thing I ever read, and it convinced me I wanted to study math and CS in college.
So I agree with your last sentence, I guess. There is a place for "inspirational" technical books like GEB and to say "just read Knuth instead" is missing the point by a mile.
Based on the little biochemistry I know, I'd say that water is a rather unique chemical, and it's due to its special qualities (e.g. hydrogen bonds, interaction with other polar molecules) that life as we know it is possible. Sure, there may be biology based on other compounds, but the more we know about our biochemistry the less likely it seems that an equally "powerful" system could arise. There are organisms that life at higher and lower temperatures, but I think they generally use tricks (like anti-freeze compounds) to extend the range of liquid water as a solvent. 90 degrees K seems way out of bounds to me.
Any biologists out there care to speculate on exotic forms of life that can grow at 94 degree K? Probably no chance to use water as a catalyst ...
Any astrogeologists (if that's not an oxymoron) know what the chances are of localized hotspots on titan (e.g. is the core hot?)
Ever check how much doctors pay for malpractice insurance? It's in the 6 digits for some specialties. Just think what would happen when small software companies start getting sued because of bugs in their code that lead to others making expensive mistakes. Lots of companies would be driven out of business and the only ones that would be left standing would be the ones with the deepest pockets, i.e. Microsoft. Then they would say "we are paying out all these huge damage awards, so we have to raise the base price on windows to $1000 / copy".
...
Maybe that's a bit extreme. Seriously, software is way more complex than a car. Who among you would bet your entire net worth that you haven't shipped code with potentially serious bugs in it? There are always bugs.
Maybe a mandatory "your money back if you aren't satisfied" law would fly. But 99% of the people who take advantage of that offer are going to keep a backup copy of the software, "just in case"
This idea could never get past the unanimous opposition of every company in the software industry. Just live with it - software has bugs. If you don't like it switch to another package or just go back to pencil and paper.
I think the reference I originally used was http://www.arcelect.com/10baset.htm ... It appears there are a few kinds of 100baseT - 100baseTX, 100baseT4 and 100baseVG. It looks like TX is the most commonly used ands it uses 2 pairs. So you are right.
I like the Leviton Cat5 plugs w/faceplates because I hate putting male connectors on the end of the cables. I always make mistakes in feeding in the wires into the tiny sockets... With the plugs you have plenty of room to clamp down the individual wires.
Here's another hint... Phones take 2 wires and 10baseT takes 4. So if all you have is one cat5 cable going to some obscure location in your house, and you don't need high bandwidth, you can get 1 ethernet connection and 2 phone lines. Useful...