Actually, there is nothing compelling about your argument. If they used the right type of license, they could specifically get it to the point that Microsoft couldn't embrace and extend. Using the right license, Microsoft would have to show up with the source and show it to the public.
Microsoft would drop it like a bad habit. As long as the license requires you to show up with the sourcce if you make changes, it's all good.
I wish they would just drop the redistribution licening to say, "Give this to every one you know, it's all good". It's not like they stop you from downloading it off their site.
It's not like they do a compelling job of construction a development environment for you, it'd be nice if they'd let RedHat, Debian, FreeBSD and anybody else who wanted to show up and create a wonderful, easy to use, out of the box experience for developers using Java.
I'm a programmer, I have a BS and double majored in Mathematics and Computer Science. I grok algorithms, I know who Donald Knuth is. I can do the theory behind computer science.
I take serious exception to the analogy:
Programming:CS::"Cleaning Test Tubes":"Molecular Biology"
Programming:CS::Engineering:Physics
would be a lot more accurate. The former is belittling. If you think a course in "C++ programming in 6 months" will make you a programmer (forget a decent programmer), you are demonstrating how incredibly little you actually know about programming.
Your concept of "taking a physics degree to learn how to operate a microwave oven", further demonstrates your belittling attitude towards programmers.
Computer Science in and of itself is mostly useless (just as is physics and mathematics). All science becomes useful in it's applications. Programming, is the definitive version of "application" in terms of CS. Just as Engineering is pretty much the application of Physics.
Programming is where the rubber meets the road. I've never met a good programmer who wasn't a decent Computer Scientist. To a man, every good programmer understands CS, even if only at an intuitive level. The formal training is irrelavent if you comprehend what is going on.
The problem is that CS departments are the source of people who become programmers (as that's what industry needs). At the University I went to with 2 exceptions out of 20, not a one of them made a decent programmer. I've heard similar stories from a number of people from many different Universities. Of the two exceptions, neither had a Ph.d (one was all but dissertation, the other was a smart guy with a BS). Very, very few institutions need a computer scientist, other then to create computer scientists (outside of acedemia or serious reseach centers, computer scientists are a useless bunch if they lack other skills). Sorta like the old joke about a history professor's task is to create more history professors.
Try being a programmer sometime. It's an art, not a skill. Guess who taught me that? It should be your absolute hero if you are a CS guy. Donald Knuth named his books to reflect that. CS's entire purpose is to develop specific mathematical models that are useful for computing. In essense to work out the mechanics of algorithms given a particular type of computing machinary (FA/NFA/Turing machines, etc, etc), and do the analysis of the various algorithms and methods given a set of computing tools.
Programming is the essense of Computer Science. It ain't high brow. It's for us lowly test tube scrubbers I guess. Programming is the time when Computer Science finally becomes useful. When Computer Science actually blooms, and shows all it's glory. Computer Science is a thing of beauty, but in the end, it's a bunch of mislabelled mathematics.
You should try programming sometime it's lots of fun. It's lots of repetition. You'd also realize just how useless what some of you learn in CS truely is. I always like the quotes from Linus Torvalds and Alan Cox describing just how stupid modern OS design theory is. That most serious CS people couldn't design an OS that was actually workable if their lives depended on it. Nobody needs a theoritical OS, everybody needs a practical OS.
It's lots of detail and grunt work. It's lots of chasing down bugs. That's only 'cause you high end CS guys haven't constructed the DWIM (Do What I Mean) compiler. If you'd get off your lazy theoretical ass and do something useful, I might tolerate you talking bad about programmers.
There are lots of people who claim to be "programmers" who aren't. Just like every guy who drives nails ain't a carpenter. Just like every guy who can prove that Quicksort isn't an n*log(n) as an algorithm isn't a computer scietist. Just like not everybody on slashdot isn't as clever as they think they are (me especially). Programmers deverve a far greater amount of respect then you give them. They take the crap CS people make up, and make it do something useful in the real world.
Sorry, my sister can manage to write HTML that can be viewed in everything from Netscape 3.0 thru a current version. It runs on Netscape and IE.
When she gets to use CSS and various other newer tools for sites they can essentially say buzz off if you don't use a current browser. She does with relative ease.
You can't convince me it's that hard. I've been to too many sites that look just fine in both.
I've been to too many sites that are confused that, the web isn't desktop publishing, where what they see isn't only view way it could be rendered. Sites that do stupid things like assume a fixed font size. Like assuming that every one on the planet uses a 17" at 1024x768, or that no one could concieve of using a 256 color desktop. My favorites being the idiots who use a repeating graphic to acheive a border on the left hand side, that because I use a wide screen shows up twice and obscures the near the right edge.
cnn.com manages to render a decent looking page. Amazon renders a good looking page. eBay works fine. I write C++ that outputs HTML all the time, that has to work under both IE and Mozilla.
time.com renders a fine looking page. Lets see, sourceforge looks fine. Heck, even Microsoft.com looks pretty good. cox.net (my ISP) just flately refuses to use any broswer that isn't IE for some functionality, even though the functionality is trivially right under mozilla. Sorry, I'm not a web designer, but I understand that HTML is a Markup Language, not a by the pixel layout language. I realize that it isn't desktop publishing (which a graphic artists appear to not under stand).
I've got no issues with not supporting anything older then the last couple of releases of Mozilla and IE. If the real problem was that they we're following the standards and mozilla violated them, I'd have no problems with them not allowing it. However, in my experience, unless you work hard to use IE only features, Mozilla will render everything just fine, since the 1.0 days.
Not that it significantly changes the analysis, but I believe we are a lot closer to 290 million people in the US. Check here:
http://www.census.gov/cgi-bin/popclock
Says we have 292Mil.
Now, the other thing to get curious about, is how many of those dollars are "recycled". I know in a lot of small towns, Walmart is one of the few places to shop, and one of the few places to be employed. I'm always curious about how much of a closed economy they are. That's by the census. I'm not sure if that includes illegal aliens.
In a lot of small towns, Walmart is the only convinent place to buy anything, so I'd be reasonable surprised if a family of 4 doesn't end up spending $10-$15K a year on clothes, food, schools supplies, etc..
No, it's more like asking them to release VHS tapes that will play in both Sony, and Phillips VCR's. There is a standard for HTML. It's not terrible complex to build good looking sites that render in several of the latest browsers.
I'd be pissed if I bought a VHS tape that wouldn't play in my Sony VCR.
First, that's a ludicrust policy, for a variety of reasons. If there is a problem with people using their cell phones too much, fire those people. If they are critical to the company, fire them and have a meeting explaining exactly why they got fired. It's a very simple way to get a message to the employees. If they are incapable of dealing with a simple personal problem, I'm curious about how they deal with everything else.
It's a completely safe object that affects virtually no one in the office if you turn it off. Do they not allow you to receive personal phone calls on company time on a land line? Are they upset because they lose the ability to track whom you call during the day, or the ability to actually listen to you while on a call? I could understand not letting you answer the phone, and have to turn the ringer off. Physically not allowing you to carrier it is just silly. If no other reason, then you might like to use it while on a break, or over the lunch hour. Personally, I'd rather not have to leave it in my vehicle parked outside all day. I'd also want to be able to listen to my voice mail at any point during the day.
Second, who at the company is willing to accept the liability of you being out of contact in case of an emergency? Your wife/child/parent needs immediate medical assistance and getting a hold of you is critical to the process?
Finally, I'd carry one with me. I'd never answer it. I'd always turn it on vibrate. I'd make them fire me for it. I'd have virtually everyone carry one in, and see if they had the will to fire people over it. It's a silly rule, if people are wasting time while getting paid by the company, there's a simple solution. Fire those people. Me, I don't answer the phone at work except under special circumstances. Everyone who knows me, knows not to call me during regular business hours unless it is really important.
Having said all that, I'd never let the company send messages to me on a phone I paid for. If only so when I go on vaction, I can hand them the pager back and it's clear that no one at work can page me. In fact, at various jobs, I've refused to give out my cell phone number. I'd refuse to answer my cell phone if I knew it was work related, if I was not at work given the situation.
Hmmm, never heard of the T1 to 10/100 converters (I was unaware the framing was the same, or that the addressing could be fiddled with so that you could use a transceiver to change from one to the other). I'll have to look at the physical framing to see if that makes any sense at all. Got a link to one? I could use one where I work at points.
While you can do the direct copying from one care to another (I didn't know it could jump PCI buses, but it makes sense), that eliminates all of the packet processing. In fact, I thought it made Linux act like a bridge. I'm not that familiar with the issue, but I've always been told it is an odd feature, that eliminates a ton of the processing done on a packet. So it's only good on a straight up router/bridge type setup.
All firewalling and policy routing is skipped if I remember correctly. Which makes it a good idea if you split the traffic into small enough streams that a single machine could then firewall/IPSec the stream (it also means that do egress/spoof checking isn't possible via firewall rules, however I think Linux has on option to do that via a sysctl, presumable that could do it for you while dong fastcopy).
Finally, how the hell did you get a phone company to bring in T1's in such a quick manner that you couldn't get some type of ventilation. That or bring a box fan.
Hmmm, I've got a few questions. First off, they never made a P2 that went 800Mhz. Those stopped at the 500Mhz mark or so. Next, your telling me you cracked open a case on a working machine, fiddled with jumpers (not many P2/3 era MoBo's had clock speed settings via the BIOS). I'm not sure, but you probably had to switch the clock rate of the FSB, which was bad in and of itself. Why on earth would you switch the configuration on a known good machine? That's among the more assine things I've heard done in the name of stability. Next you'll tell me you kept machines in the bathroom, so you could ground the cases directly to the pipes. I've been told that downclocking can lead to its own set of instabilities (you didn't downclock enough from what I've heard, you'd have to downclock from about 800 to 200 or so. I've considered picking up a 2.4Ghz chip and running it at 400Mhz so I wouldn't need a fan, instead I picked up a Via CPU).
Now, I'm also curious about the machine you had. It had to have two PCI buses for the configuration you describe. At least 4 PCI slots (assuming, you got 8 T1's in a single card). I'm not aware of too many PCI cards that can do a T1. I sure don't know of one that can do 8 T1's on a single card (maybe you had a T3 interface card and only 8T1's worth of bandwidth). Probably you had to have either 5 or 9 slots (3 Network, and 2 or 4 T1 cards). Possible 11 slots. The bus on that had to be pretty damn impressive, that's a whole lot of data to be pumping thru a PCI bus of that era. Probably only 33/66Mhz bus on that bus.
Pretty impressive that you could move that much data thru a CPU with too small a cache, and too slow a cache, on a Motherboard that couldn't have dealt that that much data. Somehow the details aren't adding up.
If you have it installed, that will show you the license. On my RedHat 9.0, it's listed as GPL'ed.
http://www.redhat.com/licenses/rhel_us_3.html
Check that link. Go to the section for Appendix 1. Sections 1 & 2 cover it. You can copy anything besides the stuff spelled out in section 2. Section two says the only retain rights to the labelled:
"REDHAT-LOGOS" and "anaconda-images"
I took that to mean those to packages. I could be wrong. However, if you rpm -q -i those, you'll find they are all rights reserved. So I'm guessing that redhat-artwork is in the clear. From the description, it appears to be a "look and feel" issue. There might be a few things they would contest, but legally, I've got to be pretty good to go.
Now, you can't advertise it as RedHat, you can't say it's based on RedHat. You can't do anything that would confuse the consumer, or you are in violation of trademark law, which is separate from copyright law.
Actually, it's not spread out amonst the entire distro. It's in precisely two packages. redhat-logos, and anaconda-artwork if I remember correctly. You can strip those two things off, and you should be good to go.
Everything else is part of a GPL'ed package, that you have to be allowed to distribute as is. If you read their license, they are quite clear that those are the only two things they hold copyright and trademark over.
Read up on "Man In the Middle" some more. If I can intercept everything that passes thru, and you only send the public key in the clear, I can set things up so you can't tell I'm the man in the middle.
I suppose, that if I encrypt with my private key, then encrypt with your public key. Nobody in the middle can tell what I'm saying. You can know you are talking with someone, but if they can intercept all of the messages, how can you tell them apart from me, if you've never met me or them? They could say the are me, and do what I'd do. With no pre-shared information you can't tell the difference between them and me. What you would know, is that whoever you are actually communicating with it's secure. What you don't know is that you are communicating with who you want to be communicating with. I can demonstrate it for you via the equations if you'd like.
In essense, with no pre-shared information, between Alice and Bob, how can they communicate if Marla can intercept anything they send.
Alice sends a public key to Bob (PK[A], Alice has the matching private key pk[A]).
Marla captures this, and sends Bob (PK[MA], Marla has the matching private key pk[MA]).
At this point, Alice knows nothing about Bob. Marla can respond with to Alice just like Bob would. Alice can't tell the difference between them. Marla sends PK[MB] (Marla has the matching private key pk[MB]) to Alice (who believes it's Bob).
Bob responds to Marla (who is masquarading as Alice) with PK[B] (Bob has the matching key pk[B]), which Marla again captures.
Marla uses pk[MA] and PK[B] to communicate with Bob. Bob uses PK[MA] and pk[B] to communicate with Marla (whom he believes to be Alice)
Marla uses pk[MB] and PK[A] to commuicate with Alice. Alice uses pk[A] and PK[MB] to communicate with Marla (whom she believes to be Bob).
All Alice knows is that she's communicating with the person with the key PK[MB] (who must have pk[MB]), and Bob with PK[MA] (who must have pk[MA]). They know that no one without the associated private keys can read the conversation.
Marla now controls the conversation between Alice and Bob. The problem, is that Marla controls the network. That's enough control to subvert public key cryptography.
What Alice doesn't know is that PK[MB] is associated with Marla. They trust the first person who comes along and says they are Bob, to be Bob. At some point, the string of bits has to be associated with Bob, and not with Marla.
What is different about Public Key cryptography instead of Symmetric Key cryptography, is that Bob can tell everyone and their brother his public key, and it's no big deal. So he can publish it in a well known location and that's good. In Symmetric Key, the key must be kept a secret. In public key, you can use the same key pair to communicate with everyone, if you also use their pair in the communication. In symmetric key cryptography that isn't the case.
There is a reason that Versign exists. It's to provide PKI. You really need PKI to make Asymetric Cryptography to work.
With Public Key Cryptography, you can be sure that you are talking with the person who knows the private keys associated with the public keys. However, Public Key Cryptography has no guarantees that who you think has the private keys is who they say they are. At some point, a secure transaction must take place to associate a particular person with a particular key (normally a third party does this, and they are known as a Key/Certificate Authority, think VeriSign. Everyone implicitly trusts the Third Party).
The alternative way to do this, is to build a distributed web of trust. This is what GPG does. Which is "better" from a security standpoint, but very difficult to bootstrap to a point where it's useful.
Ever heard of "man in the middle". Never trust a public key, just because it is public.
You should get signed keys, or keys directly from the person you want to be talking with. If the somebody wanted to break your security, all they have to do, is be upstream from your ISP. Capture the broadcast of the public key, send you a different one they have the private key for.
Now there are exchange methods that you can use in public, but just passing a key in the clear isn't a good idea. Normally there is some type of key exchange before hand, a trusted third party, or a web of trust used to establish identity, and the trustworthyness of a public key.
What does the size of the executable or source have to do with anything? (By the by,/bin/sh is much smaller then/usr/bin/perl in terms of binary size if you account for the fact that all of the functionality of perl is in/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/ libperl.so on my machine).
Shells are what you type commands into. If you are desperate to get a linux system started, you can always do "linux init=/bin/sh" on the grub/lilo prompt. You can try linux emergency on any redhat box (not sure if that is portable to non-redhat linux distros). Then you get a shell. The thing everybody is used to dealing with for starting a machine.
I don't know about you, but in my startup scripts, I'd never use readdir or a socket (I might use readdir, but "for file in *.ext ; do ; done" works just fine in that case). I'd can't think of a reason to use an associate array during startup. RegEx's I can think of a few uses for. I could see how not forking for every "echo" call would be a nice idea. In shell, I'd almost never do `cat file`, it's silly. If you aren't doing script
Start md devices
Start LVM
Start my swap
Mount my filesystems
Initialize my network
Fork/exec the 30 daemons I need started
In a pinch, I'd have a hard time debugging my system if it was perl based. Perl is more complex to read and write, and it doesn't mimic what I spend 90% of my time doing on a UNIX box to get things to start and stop.
If I used perl as my shell, I could see wanting my startup scripts written in it. However, I want my startup scripts to work exactly like my everyday usage, so when the shit hits the fan, I can deal with the situation. Not many people I know would be thrilled at getting to type in perl scripts to start a crippled machine. Nobody I know is insane enough to use it as a CLI. The beauty of shell, is that it is designed to run commands interactively. Perl isn't. It wouldn't be a good thing when things go wrong, and I'd never use any of the power of perl during a startup script, and I'd have to deal with all the ugliness of external commands, which is precisely what shell does wonderfully.
About the only compelling thing I can see, is you'd avoid forking 1000 times to run "echo", but the uglyness of running system(""), or popen("") all the time just doesn't appeal to me. Maybe you could use backticks all the time, but at that point, you might as well just have used the damn shell.
Start naming compelling features, I just absolutely have to have during startup scripts. You claim perl has so many useful features for programming. Do me a favor, find 3 of them that I'll find so compelling, that I'm willing to do: system( "daemon args" ) to get it. I'll bet you can't find 3 compelling features perl has that the shell doesn't that are good for startup scripts.
Sockets, you are doing something wrong if you are using sockets in a startup script. Readdir? find and shell globbing work just fine for that. Associative arrays? I can't think of a good usage. Good regular expressions, okay, there's one. You can have functions, arguments, scoping, and external functionality in shell. It's not even hard to do in shell.
I'm not saying that perl isn't useful for a zillion things. It is. It is vastly superiour to shell in so many ways. Running external commands isn't one of them. Running external commands is what 95% of startup scripts is about.
Yeah, but I meant in terms of "easy to read code", less in terms of runtime. Implementing "mount -f -l -a -t" or whatever it is, and executing "fsck" isn't as simple in perl. There are tons of things you'll both end up exec'ing. The majority of my startup scripts are preciesly "start this daemon", "run this command". I suppose you could save yourself a bunch of forking, by re-implementing mount/fsck/ip/iptables and numerous other commands in native perl. Most of what you do during startup isn't "cat", "echo" or "grep". Sure there's plenty of "echo", "if", and a bit of "grep". However, the bulk of *MY* startup scripts are "start apache, ssh", "run these userspace commands that interact with the kernel (ifconfig/ip/iptables)". Fsck my filesystems. mount the filesystems. Run the startup for lvm and raid devices. Load my modules. Most of which the shell is far better suited to doing the perl is (IMHO). None of those are native perl utilities (they are all native shell utilities). They are all things you'll have to use system(""), for, and carefully escape things, or setup arrays of arguments. Generally it's all much easier to run external commands in a shell then it is in perl.
Last time I checked,/bin/bash is on the / partition, and perl is either on/usr/bin/perl, or/usr/local/bin/perl.
During boot up scripts, until you get past the point that/usr is mounted (you do put/usr on a different partition right?), you can't use anything. That's how you determine what goes on/bin and what goes in/usr/bin (well mostly). When things go wrong, and you need to recover, trying to fix things on a busted machine, is much more reliable if you are using shell then perl (it's got a smaller foot print, and it's not an intertangled mess of libraries).
Intertangled messes of libraries are a great thing when you are developing. They are a beast, if things are broken. What if you fsck can't finish because part of the library is dorked. Thus you can't mount the filesystems you need to use to fix the problem.
During boot up, you want to use the easiest, and most reliable method of booting. Shell scripts are probably better off then perl scripts. It's easy to have readable, reliable shell scripts with scoping, it's just not something you are used to doing apparently.
Besides all that, you'd spend all your time in perl doing exec/fork/system. The/bin/sh is more efficient at doing that then perl is (in terms of code, if not runtime).
Those statistics aren't mutually exclusive. One of them, concerns specifically "US traffic", the other makes no specific limitation to "US Traffic". So if the US represents 22% of the worlds Internet Traffic, the, and about 10% of it's e-mail, it would appear that both are accurate.
If you misquoted the statistics out of context (innocently, or as in lie, more lies and statistics). It could differentiate between "generated on", or "passed thru". I'd be relatively surprised if 50% of all packets that cross a US ISP, doesn't at some point touch UUNet's network. 90% of all e-mail might be a reach.
The other thing, is that the 50/90% stat is a quote I remember seeing for years. It might be that it's very much out of date.
In terms of ways to tell, there isn't really much of a way of figuring it short of asking various ISP's to post a lot of internal information. I'm pretty sure most of those types of statistics are guesstimates based on network layout and major traffic flow.
Actually, it's not a misunderstanding, it's a habituated mistake. If you were to ask me to explain the difference between the two, I'm completely capable of it. It's a tick of typing. I generally write it correctly (when I write with pen and paper). However, just like some people always type teh, and other nasties, I type we're all the time. The other one if you look thru my post history is I put in you're, instead of your. Anything else?
I can explain the differences between, there, their, and they're. I know what a homophone is and a homograph is. Any thing else that's completely off topic? Generally, when I'm in a hurry or I'm tired I make mistakes, and I don't have the time or the energy to proof it. This isn't English 101, I'm not that worried about somebody docking me points.
If English wasn't a language filled with such stupidity, it'd be a lot easier to write in it.
I'm not arguing against Ender's Game having bad physics (it does later in the series). However, involving "Rama" appeared to be incredible accurate. In fact, it's accurace was the primary plot conflict (overcoming, and dealing with the majority problems due to the phyics of the spinning cylinder seemed to be the largest of the plot conflicts).
I'd really rather have someone explain why Rama is "wrong". As opposed to why Ender's Game isn't that bad on a relative sense in comparison to other bad Sci-Fi.
Okay, so answer the original question. What was wrong with Rama? Ender's Game goes well understood physics, and as far as I know, Rama stays well within everything to do with known physics.
I've read enough of the stuff after Ender's Game, to know that the explaination of "Ansible Communication" has a total crap explaintion in terms of physics. It's a cool thought problem, but it's not physics based. The next problem with Quantum entanglement, is isn't it relatively (no pun intended) limited in the amount of communication? Isn't it limited by the number of entangled photons you take with you? Granted you could just start streaming photons to who you want to communicate with. However, Ansible's can communicate with absolutely anyone (there's no need to build individual links between B and C, if B and C left point A and very, very different times in the books), and it in princepal is based on the mind projection of a "bugger", which is based on sucking particles in from outside of the Universe.
Oh, and while I went on at length about Ender's Game, I'm willing to concede that point, if you'll explain how exactly Rama is bad physics.
Yes, but J.R.R. Tolkien lived during a time, when "men dressed up as talking animals may achive buffoonery or mimicry, but they do not achieve Fantasy". That isn't this day and age. Now, I think he might object, because now there is an single image everyone has of a "Balrog" that they can latch on to. That anyone who ever reads the stories after seeing the movies will miss getting to imagine the scenes. To construct the Balrog so it was scarier (if only to themselves), then the one Peter Jackson constructed.
Fantasy, can finally be constructed in a movie, in a way, that it never could as a play (which is what Tolkien appears to be referring to by the word "drama"). I'm not saying he'd approve, but I'm guessing, that the quote you've given isn't an applicable argument.
It's funny now, because I'm going to read the books again after seeing all the movies to remember "the real story". It'll be harder to block out the visions of what PJ's Ents (I always pictured them significantly differently), and harder to block out what Sam, Frodo, and Strider look like. It'll be difficult, but in the end, I like the books more then I liked the movies. However, getting to sit down with a movie for one night, is a lot easier then dedicating the time to read one of the books.
Really, I've studied a bit of physics, at the very least, the majority of the physics of the spinning cylinder we're correct (the relative gravities). I'm pretty sure most of the speed of light/transmission times we're correct.
Some of the gravity things, I'd have had to actually re-calculated the stuff. Now it might be he forgot a number of things, but most of it sounded reasonsable.
Some of the nuclear weapons might have been wrong. Some of the stuff involving the heating/cooling of the cylinder might have been off (I'm not sure).
I enjoyed the book soley because it seem to have an accurate physics setup, but thought the plot was incredibly dull. (The book could have used a little bit more direct conflict to be interesting, but oh well).
Novel that you picked Ender's Game, that was had some very obviously bogus physics in it (the whole concept of faster then light transmission of ansibles thing, althought the physics might have been more accurate, they we're also a smaller portion of the actual plot of the books), as a sci-fi, over "Rendezvous with Rama".
Two points. First, X at least on a stock Linux kernel, can't run as a non-root user. There for a variety of reasons.
From the simple, it needs acess to raw hardware, and standard users don't get that.
To the slightly less obvious: if you use XDM you have a chicken and the egg problem? You have to log into the screen to know what it is running as, but you have to have it running as a specific user to run.
At some point, when some of the security features in the kernel finally get all kinds of advanced features for limiting capabilities by program, by user, by time of day, but the position of the sun, the moon, and the stars, this will be a solved problem for all programs under Linux (after you do some assine amount of configuration, or use the default config the distro you use has). Then you'll be able to say that X runs as user foo, and foo has the ability to access specific pieces of hardware like user root, has the ability to su like root does, and has what other priveledge stuff that you need to run an X server.
Finally, in terms of "vga/vesa" stuff, what do you mean? Every piece of hardware I had runs correctly, and it's easy to configure it so it does just that. I've got config for a stock crappy VGA driver in my XF86Config file that redhat generated for me. If I stick a crappy card 10 year old VGA card in there, I'm assuming it'll run. If not, it'll die gracefully (at least under redhat), and tell me what to do (run the configuration tool).
This way, they can do *exactly* what the GCC people did: sell a proprietary copy of their license.
I'm going to ask you precisely when this happened? As far as I know GCC has always had some portion of it's copyright held by RMS. He generally doesn't do dual licenses.
I know that cygwin used to sell a version of the GCC development toolchain. However, they implemented their own libc that you could purchase a copy of, and link your software to that wasn't LGPL'ed. Which left got you out of the legal restrictions on the LGPL (which was really good for embedded programmers).
I know that OpenSTeP development environment used to run under Windows. I'm not sure if they gave you the source or not (I never went looking), but again, they had proprietary libraries, not GCC based compilers.
Got any examples? Sorry, I know this is completely tangental, but it's a point that would be important to the FSF. The FSF might have sold support, or something else along with copies of their software, but they've never released a priopriatary release.
Hmmm, you appear to be ignorant of the facts (no disrespect). Unfettered access to the internet, is a series of red tape issues that must be traversed. You can't get service to the Internet without some type of ISP. All but the largest ISP's have a transit provider which is for all intents and purposes, their ISP.
So if you really want your own access to the Internet, where you are in control of as much as you can be without having an international network, these are the steps:
First, you have to aquire IP addresses. This used to be a relatively simple process (or so I'm told). You can either get them from the people who give you connectivity (read: your ISP).
However, you say, we don't have an ISP. So we have to go get them from the source. So, you'll have to get them from one of the regional IP providers. In this case, it'd be ARIN (in North America at least). You can pick them up for the bargin basement price of $20K for a/20 (2^12 = 4096). Oh, and part of the paperwork is to prove you'll use it all.
Actually, after poking around, I've found that is the route you have to go if you are an actual ISP. It appears you can apply directly for IP's yourself. For a/24, that'll cost $2,500, plus an additional $100/year. If you want to have the numbers be publically routable, you'll probably want an AS number ($500 initial fee, plus $100/year). You can apply for these, buy you need a pretty good reason it appears, all of which must be justified periodically on why you get to keep the IP's. Also note, that these IP's are very likely to be filtered by large ISP's, because the routing table is getting too big, so they just drop routes that are for too small a block of addresses. So there will be significant parts of the Internet that can't get to you.
Now, you have IP's reserved especially for you. However, you have to actually get get physical access to someone or something that will allow you to connect to the Internet. Most people do this by an ISP. However, that again is out in this case. So, now, you have to setup a peering agreement with someone.
Essentially, a peering agreement is a deal where several groups throw in together, and line of physical data lines to some one else on the internet. They create a Point of Presense (PoP) where that data line is terminated. Each group gets access to this PoP to get connected to the Internet at large. Now, they all agree to pay the fees associated with the lines. One of which is to pay the company that owns the line (unless they paid to have it buried). They have to pay for the physical space that houses the equipment. They also have to pay the entity at the other end of the line.
That entity is the PoP's ISP. Normally, in this case they are referred to as a "Transit Provider", as opposed to an ISP. The fees associated with this are contractually drawn up by the entity you are connecting to. Normally, it's done by the byte, or by a threshhold of bandwidth utilization.
If really big transit providers (Tier 1 ISP's) construct a peering point, generally no money changes hands. However, at this point, you are an ISP to other large ISP's, as opposed to having one.
In the end, unless you are an ISP (and have a global worldwide network), you MUST have an ISP. It might be a no frills, IP transit only arrangment. However, in the end, you must have an ISP. Unless you can convince someone who currently has access to the Internet to lop off some numbers and give them to you. However, they are still the entity providing you Transit, and in some sense are your ISP.
Where I work, we have UUNet (WorldCom) as our ISP. They are the have the single largest network in the world. They give us unfettered access to the internet, but they are still an ISP. They give us a block of 128 IP addresses, and we have T1 connectivity for about $1,200/month (roughly, between them and the phone company). Technically speaking, we setup a peering agreement with UU
I'm not saying this is true for Java (but some of the links below reference JIT), but Dynamo (on old HP project that sounded like it was a rehash of the IBM DAISY project), used to claim they got a 20% speed up from dynamically translating from native code to native code.
You read that right, they went from PA-RISC to PA-RISC. Picked up a big boost in speed. It claims on some benchmarks it taking code compiled with -O, had performance like -O4 was used while compiling (they dont' cite a specific percentage in the abstract). Below is the link.
The link in there is the one that references the 20% speed up. I believe a lot of this type of technology has been silicon on the P4 (it believe some of the instruction cache/micro op trace cache stuff does) does runtime optimization.
This is essentially the same technology that is used by Valgrind (very cool debugging tool). Valgrind, doesn't do optimization, it does memory reference checks (ensures you never access memory for a read, until you have written there), and has a version that will compute the cache hits rate by each instruction. Now it slows down tremendously the code, but that's because it's not an optimizer, it's just a useful concept based on JIT translation.
So clearly JIT can create situations where it can out-optimize the best optimized code a compiler can construct. That isn't saying that a Java JIT can whoop up on a good C++ compiler, but it does demonstrate that what they are saying is feasible.
It's my understanding that the primary place where a JIT translation can just crush regular code, is that it can optimize across function calls, and it can optimize across system calls (system calls are function calls, but I know that the Intel compiler can optimize across some function calls, but nobody can optimize across system calls sanely).
A JIT, can do all the peephole optimization across translaction units, that a C++ compiler can't legally do. The other thing it can do, is write the version of the code that runs after if there are no aliases (I'm unaware of a compiler that does this, and it's my understanding that's a major problem for C/C++ compilers).
Microsoft would drop it like a bad habit. As long as the license requires you to show up with the sourcce if you make changes, it's all good.
I wish they would just drop the redistribution licening to say, "Give this to every one you know, it's all good". It's not like they stop you from downloading it off their site.
It's not like they do a compelling job of construction a development environment for you, it'd be nice if they'd let RedHat, Debian, FreeBSD and anybody else who wanted to show up and create a wonderful, easy to use, out of the box experience for developers using Java.
Kirby
I take serious exception to the analogy:
Programming:CS::"Cleaning Test Tubes":"Molecular Biology"
Programming:CS::Engineering:Physics
would be a lot more accurate. The former is belittling. If you think a course in "C++ programming in 6 months" will make you a programmer (forget a decent programmer), you are demonstrating how incredibly little you actually know about programming.
Your concept of "taking a physics degree to learn how to operate a microwave oven", further demonstrates your belittling attitude towards programmers.
Computer Science in and of itself is mostly useless (just as is physics and mathematics). All science becomes useful in it's applications. Programming, is the definitive version of "application" in terms of CS. Just as Engineering is pretty much the application of Physics.
Programming is where the rubber meets the road. I've never met a good programmer who wasn't a decent Computer Scientist. To a man, every good programmer understands CS, even if only at an intuitive level. The formal training is irrelavent if you comprehend what is going on.
The problem is that CS departments are the source of people who become programmers (as that's what industry needs). At the University I went to with 2 exceptions out of 20, not a one of them made a decent programmer. I've heard similar stories from a number of people from many different Universities. Of the two exceptions, neither had a Ph.d (one was all but dissertation, the other was a smart guy with a BS). Very, very few institutions need a computer scientist, other then to create computer scientists (outside of acedemia or serious reseach centers, computer scientists are a useless bunch if they lack other skills). Sorta like the old joke about a history professor's task is to create more history professors.
Try being a programmer sometime. It's an art, not a skill. Guess who taught me that? It should be your absolute hero if you are a CS guy. Donald Knuth named his books to reflect that. CS's entire purpose is to develop specific mathematical models that are useful for computing. In essense to work out the mechanics of algorithms given a particular type of computing machinary (FA/NFA/Turing machines, etc, etc), and do the analysis of the various algorithms and methods given a set of computing tools.
Programming is the essense of Computer Science. It ain't high brow. It's for us lowly test tube scrubbers I guess. Programming is the time when Computer Science finally becomes useful. When Computer Science actually blooms, and shows all it's glory. Computer Science is a thing of beauty, but in the end, it's a bunch of mislabelled mathematics.
You should try programming sometime it's lots of fun. It's lots of repetition. You'd also realize just how useless what some of you learn in CS truely is. I always like the quotes from Linus Torvalds and Alan Cox describing just how stupid modern OS design theory is. That most serious CS people couldn't design an OS that was actually workable if their lives depended on it. Nobody needs a theoritical OS, everybody needs a practical OS.
It's lots of detail and grunt work. It's lots of chasing down bugs. That's only 'cause you high end CS guys haven't constructed the DWIM (Do What I Mean) compiler. If you'd get off your lazy theoretical ass and do something useful, I might tolerate you talking bad about programmers.
There are lots of people who claim to be "programmers" who aren't. Just like every guy who drives nails ain't a carpenter. Just like every guy who can prove that Quicksort isn't an n*log(n) as an algorithm isn't a computer scietist. Just like not everybody on slashdot isn't as clever as they think they are (me especially). Programmers deverve a far greater amount of respect then you give them. They take the crap CS people make up, and make it do something useful in the real world.
Kirby
When she gets to use CSS and various other newer tools for sites they can essentially say buzz off if you don't use a current browser. She does with relative ease.
You can't convince me it's that hard. I've been to too many sites that look just fine in both.
I've been to too many sites that are confused that, the web isn't desktop publishing, where what they see isn't only view way it could be rendered. Sites that do stupid things like assume a fixed font size. Like assuming that every one on the planet uses a 17" at 1024x768, or that no one could concieve of using a 256 color desktop. My favorites being the idiots who use a repeating graphic to acheive a border on the left hand side, that because I use a wide screen shows up twice and obscures the near the right edge.
cnn.com manages to render a decent looking page. Amazon renders a good looking page. eBay works fine. I write C++ that outputs HTML all the time, that has to work under both IE and Mozilla.
time.com renders a fine looking page. Lets see, sourceforge looks fine. Heck, even Microsoft.com looks pretty good. cox.net (my ISP) just flately refuses to use any broswer that isn't IE for some functionality, even though the functionality is trivially right under mozilla. Sorry, I'm not a web designer, but I understand that HTML is a Markup Language, not a by the pixel layout language. I realize that it isn't desktop publishing (which a graphic artists appear to not under stand).
I've got no issues with not supporting anything older then the last couple of releases of Mozilla and IE. If the real problem was that they we're following the standards and mozilla violated them, I'd have no problems with them not allowing it. However, in my experience, unless you work hard to use IE only features, Mozilla will render everything just fine, since the 1.0 days.
Kirby
http://www.census.gov/cgi-bin/popclock
Says we have 292Mil.
Now, the other thing to get curious about, is how many of those dollars are "recycled". I know in a lot of small towns, Walmart is one of the few places to shop, and one of the few places to be employed. I'm always curious about how much of a closed economy they are. That's by the census. I'm not sure if that includes illegal aliens.
In a lot of small towns, Walmart is the only convinent place to buy anything, so I'd be reasonable surprised if a family of 4 doesn't end up spending $10-$15K a year on clothes, food, schools supplies, etc..
Kirby
I'd be pissed if I bought a VHS tape that wouldn't play in my Sony VCR.
Kirby
It's a completely safe object that affects virtually no one in the office if you turn it off. Do they not allow you to receive personal phone calls on company time on a land line? Are they upset because they lose the ability to track whom you call during the day, or the ability to actually listen to you while on a call? I could understand not letting you answer the phone, and have to turn the ringer off. Physically not allowing you to carrier it is just silly. If no other reason, then you might like to use it while on a break, or over the lunch hour. Personally, I'd rather not have to leave it in my vehicle parked outside all day. I'd also want to be able to listen to my voice mail at any point during the day.
Second, who at the company is willing to accept the liability of you being out of contact in case of an emergency? Your wife/child/parent needs immediate medical assistance and getting a hold of you is critical to the process?
Finally, I'd carry one with me. I'd never answer it. I'd always turn it on vibrate. I'd make them fire me for it. I'd have virtually everyone carry one in, and see if they had the will to fire people over it. It's a silly rule, if people are wasting time while getting paid by the company, there's a simple solution. Fire those people. Me, I don't answer the phone at work except under special circumstances. Everyone who knows me, knows not to call me during regular business hours unless it is really important.
Having said all that, I'd never let the company send messages to me on a phone I paid for. If only so when I go on vaction, I can hand them the pager back and it's clear that no one at work can page me. In fact, at various jobs, I've refused to give out my cell phone number. I'd refuse to answer my cell phone if I knew it was work related, if I was not at work given the situation.
Kirby
While you can do the direct copying from one care to another (I didn't know it could jump PCI buses, but it makes sense), that eliminates all of the packet processing. In fact, I thought it made Linux act like a bridge. I'm not that familiar with the issue, but I've always been told it is an odd feature, that eliminates a ton of the processing done on a packet. So it's only good on a straight up router/bridge type setup.
All firewalling and policy routing is skipped if I remember correctly. Which makes it a good idea if you split the traffic into small enough streams that a single machine could then firewall/IPSec the stream (it also means that do egress/spoof checking isn't possible via firewall rules, however I think Linux has on option to do that via a sysctl, presumable that could do it for you while dong fastcopy).
Finally, how the hell did you get a phone company to bring in T1's in such a quick manner that you couldn't get some type of ventilation. That or bring a box fan.
Kirby
Now, I'm also curious about the machine you had. It had to have two PCI buses for the configuration you describe. At least 4 PCI slots (assuming, you got 8 T1's in a single card). I'm not aware of too many PCI cards that can do a T1. I sure don't know of one that can do 8 T1's on a single card (maybe you had a T3 interface card and only 8T1's worth of bandwidth). Probably you had to have either 5 or 9 slots (3 Network, and 2 or 4 T1 cards). Possible 11 slots. The bus on that had to be pretty damn impressive, that's a whole lot of data to be pumping thru a PCI bus of that era. Probably only 33/66Mhz bus on that bus.
Pretty impressive that you could move that much data thru a CPU with too small a cache, and too slow a cache, on a Motherboard that couldn't have dealt that that much data. Somehow the details aren't adding up.
Kirby
rpm -q -i redhat-artwork
If you have it installed, that will show you the license. On my RedHat 9.0, it's listed as GPL'ed.
http://www.redhat.com/licenses/rhel_us_3.html
Check that link. Go to the section for Appendix 1. Sections 1 & 2 cover it. You can copy anything besides the stuff spelled out in section 2. Section two says the only retain rights to the labelled: "REDHAT-LOGOS" and "anaconda-images"
I took that to mean those to packages. I could be wrong. However, if you rpm -q -i those, you'll find they are all rights reserved. So I'm guessing that redhat-artwork is in the clear. From the description, it appears to be a "look and feel" issue. There might be a few things they would contest, but legally, I've got to be pretty good to go.
Now, you can't advertise it as RedHat, you can't say it's based on RedHat. You can't do anything that would confuse the consumer, or you are in violation of trademark law, which is separate from copyright law.
Kirby
Everything else is part of a GPL'ed package, that you have to be allowed to distribute as is. If you read their license, they are quite clear that those are the only two things they hold copyright and trademark over.
Kirby
I suppose, that if I encrypt with my private key, then encrypt with your public key. Nobody in the middle can tell what I'm saying. You can know you are talking with someone, but if they can intercept all of the messages, how can you tell them apart from me, if you've never met me or them? They could say the are me, and do what I'd do. With no pre-shared information you can't tell the difference between them and me. What you would know, is that whoever you are actually communicating with it's secure. What you don't know is that you are communicating with who you want to be communicating with. I can demonstrate it for you via the equations if you'd like.
In essense, with no pre-shared information, between Alice and Bob, how can they communicate if Marla can intercept anything they send.
All Alice knows is that she's communicating with the person with the key PK[MB] (who must have pk[MB]), and Bob with PK[MA] (who must have pk[MA]). They know that no one without the associated private keys can read the conversation. Marla now controls the conversation between Alice and Bob. The problem, is that Marla controls the network. That's enough control to subvert public key cryptography.
What Alice doesn't know is that PK[MB] is associated with Marla. They trust the first person who comes along and says they are Bob, to be Bob. At some point, the string of bits has to be associated with Bob, and not with Marla.
What is different about Public Key cryptography instead of Symmetric Key cryptography, is that Bob can tell everyone and their brother his public key, and it's no big deal. So he can publish it in a well known location and that's good. In Symmetric Key, the key must be kept a secret. In public key, you can use the same key pair to communicate with everyone, if you also use their pair in the communication. In symmetric key cryptography that isn't the case.
There is a reason that Versign exists. It's to provide PKI. You really need PKI to make Asymetric Cryptography to work.
With Public Key Cryptography, you can be sure that you are talking with the person who knows the private keys associated with the public keys. However, Public Key Cryptography has no guarantees that who you think has the private keys is who they say they are. At some point, a secure transaction must take place to associate a particular person with a particular key (normally a third party does this, and they are known as a Key/Certificate Authority, think VeriSign. Everyone implicitly trusts the Third Party).
The alternative way to do this, is to build a distributed web of trust. This is what GPG does. Which is "better" from a security standpoint, but very difficult to bootstrap to a point where it's useful.
Kirby
You should get signed keys, or keys directly from the person you want to be talking with. If the somebody wanted to break your security, all they have to do, is be upstream from your ISP. Capture the broadcast of the public key, send you a different one they have the private key for.
Now there are exchange methods that you can use in public, but just passing a key in the clear isn't a good idea. Normally there is some type of key exchange before hand, a trusted third party, or a web of trust used to establish identity, and the trustworthyness of a public key.
Kirby
Shells are what you type commands into. If you are desperate to get a linux system started, you can always do "linux init=/bin/sh" on the grub/lilo prompt. You can try linux emergency on any redhat box (not sure if that is portable to non-redhat linux distros). Then you get a shell. The thing everybody is used to dealing with for starting a machine.
I don't know about you, but in my startup scripts, I'd never use readdir or a socket (I might use readdir, but "for file in *.ext ; do ; done" works just fine in that case). I'd can't think of a reason to use an associate array during startup. RegEx's I can think of a few uses for. I could see how not forking for every "echo" call would be a nice idea. In shell, I'd almost never do `cat file`, it's silly. If you aren't doing script
Start md devices
Start LVM
Start my swap
Mount my filesystems
Initialize my network
Fork/exec the 30 daemons I need started
In a pinch, I'd have a hard time debugging my system if it was perl based. Perl is more complex to read and write, and it doesn't mimic what I spend 90% of my time doing on a UNIX box to get things to start and stop.
If I used perl as my shell, I could see wanting my startup scripts written in it. However, I want my startup scripts to work exactly like my everyday usage, so when the shit hits the fan, I can deal with the situation. Not many people I know would be thrilled at getting to type in perl scripts to start a crippled machine. Nobody I know is insane enough to use it as a CLI. The beauty of shell, is that it is designed to run commands interactively. Perl isn't. It wouldn't be a good thing when things go wrong, and I'd never use any of the power of perl during a startup script, and I'd have to deal with all the ugliness of external commands, which is precisely what shell does wonderfully.
About the only compelling thing I can see, is you'd avoid forking 1000 times to run "echo", but the uglyness of running system(""), or popen("") all the time just doesn't appeal to me. Maybe you could use backticks all the time, but at that point, you might as well just have used the damn shell.
Start naming compelling features, I just absolutely have to have during startup scripts. You claim perl has so many useful features for programming. Do me a favor, find 3 of them that I'll find so compelling, that I'm willing to do: system( "daemon args" ) to get it. I'll bet you can't find 3 compelling features perl has that the shell doesn't that are good for startup scripts.
Sockets, you are doing something wrong if you are using sockets in a startup script. Readdir? find and shell globbing work just fine for that. Associative arrays? I can't think of a good usage. Good regular expressions, okay, there's one. You can have functions, arguments, scoping, and external functionality in shell. It's not even hard to do in shell.
I'm not saying that perl isn't useful for a zillion things. It is. It is vastly superiour to shell in so many ways. Running external commands isn't one of them. Running external commands is what 95% of startup scripts is about.
Kirby
Kirby
During boot up scripts, until you get past the point that /usr is mounted (you do put /usr on a different partition right?), you can't use anything. That's how you determine what goes on /bin and what goes in /usr/bin (well mostly). When things go wrong, and you need to recover, trying to fix things on a busted machine, is much more reliable if you are using shell then perl (it's got a smaller foot print, and it's not an intertangled mess of libraries).
Intertangled messes of libraries are a great thing when you are developing. They are a beast, if things are broken. What if you fsck can't finish because part of the library is dorked. Thus you can't mount the filesystems you need to use to fix the problem.
During boot up, you want to use the easiest, and most reliable method of booting. Shell scripts are probably better off then perl scripts. It's easy to have readable, reliable shell scripts with scoping, it's just not something you are used to doing apparently.
Besides all that, you'd spend all your time in perl doing exec/fork/system. The /bin/sh is more efficient at doing that then perl is (in terms of code, if not runtime).
Kirby
If you misquoted the statistics out of context (innocently, or as in lie, more lies and statistics). It could differentiate between "generated on", or "passed thru". I'd be relatively surprised if 50% of all packets that cross a US ISP, doesn't at some point touch UUNet's network. 90% of all e-mail might be a reach.
The other thing, is that the 50/90% stat is a quote I remember seeing for years. It might be that it's very much out of date.
In terms of ways to tell, there isn't really much of a way of figuring it short of asking various ISP's to post a lot of internal information. I'm pretty sure most of those types of statistics are guesstimates based on network layout and major traffic flow.
Kirby
I can explain the differences between, there, their, and they're. I know what a homophone is and a homograph is. Any thing else that's completely off topic? Generally, when I'm in a hurry or I'm tired I make mistakes, and I don't have the time or the energy to proof it. This isn't English 101, I'm not that worried about somebody docking me points.
If English wasn't a language filled with such stupidity, it'd be a lot easier to write in it.
Kirby
I'd really rather have someone explain why Rama is "wrong". As opposed to why Ender's Game isn't that bad on a relative sense in comparison to other bad Sci-Fi.
Kirby
I've read enough of the stuff after Ender's Game, to know that the explaination of "Ansible Communication" has a total crap explaintion in terms of physics. It's a cool thought problem, but it's not physics based. The next problem with Quantum entanglement, is isn't it relatively (no pun intended) limited in the amount of communication? Isn't it limited by the number of entangled photons you take with you? Granted you could just start streaming photons to who you want to communicate with. However, Ansible's can communicate with absolutely anyone (there's no need to build individual links between B and C, if B and C left point A and very, very different times in the books), and it in princepal is based on the mind projection of a "bugger", which is based on sucking particles in from outside of the Universe.
Oh, and while I went on at length about Ender's Game, I'm willing to concede that point, if you'll explain how exactly Rama is bad physics.
Kirby
Fantasy, can finally be constructed in a movie, in a way, that it never could as a play (which is what Tolkien appears to be referring to by the word "drama"). I'm not saying he'd approve, but I'm guessing, that the quote you've given isn't an applicable argument.
It's funny now, because I'm going to read the books again after seeing all the movies to remember "the real story". It'll be harder to block out the visions of what PJ's Ents (I always pictured them significantly differently), and harder to block out what Sam, Frodo, and Strider look like. It'll be difficult, but in the end, I like the books more then I liked the movies. However, getting to sit down with a movie for one night, is a lot easier then dedicating the time to read one of the books.
Kirby
Some of the gravity things, I'd have had to actually re-calculated the stuff. Now it might be he forgot a number of things, but most of it sounded reasonsable.
Some of the nuclear weapons might have been wrong. Some of the stuff involving the heating/cooling of the cylinder might have been off (I'm not sure).
I enjoyed the book soley because it seem to have an accurate physics setup, but thought the plot was incredibly dull. (The book could have used a little bit more direct conflict to be interesting, but oh well).
Novel that you picked Ender's Game, that was had some very obviously bogus physics in it (the whole concept of faster then light transmission of ansibles thing, althought the physics might have been more accurate, they we're also a smaller portion of the actual plot of the books), as a sci-fi, over "Rendezvous with Rama".
Kirby
From the simple, it needs acess to raw hardware, and standard users don't get that.
To the slightly less obvious: if you use XDM you have a chicken and the egg problem? You have to log into the screen to know what it is running as, but you have to have it running as a specific user to run.
At some point, when some of the security features in the kernel finally get all kinds of advanced features for limiting capabilities by program, by user, by time of day, but the position of the sun, the moon, and the stars, this will be a solved problem for all programs under Linux (after you do some assine amount of configuration, or use the default config the distro you use has). Then you'll be able to say that X runs as user foo, and foo has the ability to access specific pieces of hardware like user root, has the ability to su like root does, and has what other priveledge stuff that you need to run an X server.
Finally, in terms of "vga/vesa" stuff, what do you mean? Every piece of hardware I had runs correctly, and it's easy to configure it so it does just that. I've got config for a stock crappy VGA driver in my XF86Config file that redhat generated for me. If I stick a crappy card 10 year old VGA card in there, I'm assuming it'll run. If not, it'll die gracefully (at least under redhat), and tell me what to do (run the configuration tool).
Kirby
I'm going to ask you precisely when this happened? As far as I know GCC has always had some portion of it's copyright held by RMS. He generally doesn't do dual licenses.
I know that cygwin used to sell a version of the GCC development toolchain. However, they implemented their own libc that you could purchase a copy of, and link your software to that wasn't LGPL'ed. Which left got you out of the legal restrictions on the LGPL (which was really good for embedded programmers).
I know that OpenSTeP development environment used to run under Windows. I'm not sure if they gave you the source or not (I never went looking), but again, they had proprietary libraries, not GCC based compilers.
Got any examples? Sorry, I know this is completely tangental, but it's a point that would be important to the FSF. The FSF might have sold support, or something else along with copies of their software, but they've never released a priopriatary release.
Kirby
So if you really want your own access to the Internet, where you are in control of as much as you can be without having an international network, these are the steps:
First, you have to aquire IP addresses. This used to be a relatively simple process (or so I'm told). You can either get them from the people who give you connectivity (read: your ISP).
However, you say, we don't have an ISP. So we have to go get them from the source. So, you'll have to get them from one of the regional IP providers. In this case, it'd be ARIN (in North America at least). You can pick them up for the bargin basement price of $20K for a /20 (2^12 = 4096). Oh, and part of the paperwork is to prove you'll use it all.
Actually, after poking around, I've found that is the route you have to go if you are an actual ISP. It appears you can apply directly for IP's yourself. For a /24, that'll cost $2,500, plus an additional $100/year. If you want to have the numbers be publically routable, you'll probably want an AS number ($500 initial fee, plus $100/year). You can apply for these, buy you need a pretty good reason it appears, all of which must be justified periodically on why you get to keep the IP's. Also note, that these IP's are very likely to be filtered by large ISP's, because the routing table is getting too big, so they just drop routes that are for too small a block of addresses. So there will be significant parts of the Internet that can't get to you.
Now, you have IP's reserved especially for you. However, you have to actually get get physical access to someone or something that will allow you to connect to the Internet. Most people do this by an ISP. However, that again is out in this case. So, now, you have to setup a peering agreement with someone.
Essentially, a peering agreement is a deal where several groups throw in together, and line of physical data lines to some one else on the internet. They create a Point of Presense (PoP) where that data line is terminated. Each group gets access to this PoP to get connected to the Internet at large. Now, they all agree to pay the fees associated with the lines. One of which is to pay the company that owns the line (unless they paid to have it buried). They have to pay for the physical space that houses the equipment. They also have to pay the entity at the other end of the line.
That entity is the PoP's ISP. Normally, in this case they are referred to as a "Transit Provider", as opposed to an ISP. The fees associated with this are contractually drawn up by the entity you are connecting to. Normally, it's done by the byte, or by a threshhold of bandwidth utilization.
If really big transit providers (Tier 1 ISP's) construct a peering point, generally no money changes hands. However, at this point, you are an ISP to other large ISP's, as opposed to having one.
In the end, unless you are an ISP (and have a global worldwide network), you MUST have an ISP. It might be a no frills, IP transit only arrangment. However, in the end, you must have an ISP. Unless you can convince someone who currently has access to the Internet to lop off some numbers and give them to you. However, they are still the entity providing you Transit, and in some sense are your ISP.
Where I work, we have UUNet (WorldCom) as our ISP. They are the have the single largest network in the world. They give us unfettered access to the internet, but they are still an ISP. They give us a block of 128 IP addresses, and we have T1 connectivity for about $1,200/month (roughly, between them and the phone company). Technically speaking, we setup a peering agreement with UU
You read that right, they went from PA-RISC to PA-RISC. Picked up a big boost in speed. It claims on some benchmarks it taking code compiled with -O, had performance like -O4 was used while compiling (they dont' cite a specific percentage in the abstract). Below is the link.
http://portal.acm.org/citation.cfm?id=349303&dl=AC M&coll=portal
Here's an old slashdot.org article about it:
http://slashdot.org/articles/00/03/23/106257.shtml
The link in there is the one that references the 20% speed up. I believe a lot of this type of technology has been silicon on the P4 (it believe some of the instruction cache/micro op trace cache stuff does) does runtime optimization.
This is essentially the same technology that is used by Valgrind (very cool debugging tool). Valgrind, doesn't do optimization, it does memory reference checks (ensures you never access memory for a read, until you have written there), and has a version that will compute the cache hits rate by each instruction. Now it slows down tremendously the code, but that's because it's not an optimizer, it's just a useful concept based on JIT translation.
So clearly JIT can create situations where it can out-optimize the best optimized code a compiler can construct. That isn't saying that a Java JIT can whoop up on a good C++ compiler, but it does demonstrate that what they are saying is feasible.
It's my understanding that the primary place where a JIT translation can just crush regular code, is that it can optimize across function calls, and it can optimize across system calls (system calls are function calls, but I know that the Intel compiler can optimize across some function calls, but nobody can optimize across system calls sanely).
A JIT, can do all the peephole optimization across translaction units, that a C++ compiler can't legally do. The other thing it can do, is write the version of the code that runs after if there are no aliases (I'm unaware of a compiler that does this, and it's my understanding that's a major problem for C/C++ compilers).
Kirby