The syntax is really not that hard. Maybe I just don't get most newbies, but it seems pretty intuitive to me to see
# Hi, I'm explaining the following # option, and I'm in a different color. # I don't look like code at all. foo="bar"
That's pretty much it. And a good sample config file -- often used as a config file -- shows you all the possible options, and simultaneously explains what they do to the program itself. You can learn by doing and reading through the config file, although it helps a lot to understand comments first, so you know how to uncomment something.
I've been able to do this with some pretty tough software. Squid, for instance. Talk about a TON of options. And by the end of the sample config, I knew what each of them meant -- or at least, I understood it when I set the option; no way I'd remember it now. And when I started out, I only had a dim idea of what an HTTP proxy was. I just don't see how a GUI could make that any easier, except by having an explanation of what a proxy is, which could go in the comments -- they already practically explained most details of how a proxy works, anyway.
There are actually a couple of definitions of God which are pretty good. There's even one for the people who must doublethink to create an organized religion:
People always want something more than immediate joy or that deeper sense called happiness. This is one of the secrets by shich we shape the fulfillment of our designs. The something more assumes amplified power with people who cannot give it a name or who (most often the case) do not even suspect its existence. Most people only react unconsciously to such hidden forces. Thus, we have only to call a calculated something more into existence, define it and give it shape, then people will follow.
That is how Man creates God. It's taken from Dune, by the way, though I'm not sure which book.
But I'm not talking to Google here, I'm talking to Slashdot, who understands terms like "OS-Agnostic". If I was talking to Google, oh well, I'll have to explain my term.
I must still be missing the point about how "There is no God" can possibly not be an assertion. How about this one: "There are no cookies in the house." If you know the house pretty well, and you know where cookies are kept, and you've checked recently, you can say that with a reasonable amount of confidence. But suppose you just got home from vacation, the rest of the family has been there without you for a week, and you never talked about food while you were away. Until you check the cupboards, and that one special handmade cookie jar, how can you make such a statement? The best you can do is "I don't know whether there are cookies in the house."
For you to be able to say "There might be", there needs to be some evidence pointing this way.
Why? For the love of not-God and all that isn't holy...
(Sorry, apparently beliefs are easier than verbal mannerisms.)
You seem to think that being an atheist implies some kind of active disbelief in the existance of God. It doesn't.
That's fine, but what I keep hearing is "There is no God". Is there any evidence either way? Can there ever be definitive evidence either way?
Like I said -- if you'd bothered to finish with my post, I said this:
For instance, if someone said "This table is made of an oak tree I chopped down myself," you can't immediately give a response of disbelief. If anything, your default response should be belief, in that case, unless you have evidence to suggest that this person is a habitual liar.
In that case, if someone asked you "Did Sanity actually personally chop down the oak tree that made that table?" The only correct, logical response (in absence of any evidence) is "I don't know." You could say "No" if you know for a fact that it's not made of Oak. You could say "Yes" if you saw me chop it down, and saw it crafted, and can make a reasonable assumption that no one swapped it for a fake. But lacking any evidence at all other than that the table appears to be oak, and doesn't appear to be made in a factory, you cannot have an opinion, and to say "Sanity did not chop down that tree" is not a good default.
So, when asked the question "Does God exist?" I can only answer "I don't know." I have no conclusive evidence either way. The best I could do, logically, is "I think so" if I've seen some miracles (which could still be coincidences), or "I think not" if I've been to war and have become jaded to the idea that God has any great, righteous plan that involves so many innocents suffering so much. As the evidence stands, I'm mostly neutral, therefor "I don't know" is correct.
And evidence is what logic is built on, by the way. Descartes tried throwing away evidence and running on pure logic, but he didn't do it right, all he could really prove is that he exists. Unless we have a good, Descartes-like or Euclid-like way of proving or disproving God, there can never be a logical reason for God's existance, it's all interpretation of evidence.
Are the OS-agnostics saying they don't know whether or not an OS exists?
You didn't get it at all here. People are not OS-agnostic. Programs can be, among other things. And yes -- a Java program, for instance, does not necessarily know whether it's running on an OS at all. I'm pretty sure the JVM can be run without an OS, and that this is what people run on their phones, and Lego Mindstorms, and so on.
Even a C program can, at least in source code, be OS-agnostic. You can compile Hello World to run on boot, without requiring an OS, if you so desired -- not to mention any OS in the world.
Anyway, you're right, it may not be quite accurate there. I was just pointing out that it's used enough that when I say I'm agnostic, most people at least know the word, and almost no one misses the point.
It is still just "atheist" although some make the distinction between 'strong' and 'weak' atheists.
Which is as useless as the distinction between "black hat" and "white hat" hackers. Most people will already have that cyberpunk image in their head as soon as they hear the word "hacker", and that makes the word fairly useless when I have to explain it every time.
This dovetails into what I have found to be a more practical definition of the agnostic: one who doesn't know what they believe. A great MANY people fall into that camp. They are wishy-washy with their beliefs all over the map based on whatever.
I have fewer beliefs, and more assumptions, and I explained that earlier. Anyway, it is hard to know what to believe, isn't it? Perhaps it's not logically sound, but looking at the inherent order in Nature, it's hard not to become religious in Einstein's sense: "I believe in Spinoza's God, Who reveals Himself in the lawful harmony of the world, not in a God Who concerns Himself with the fate and the doings of mankind." He has a lot more to say on the subject; check WikiQuote.
Anyway, I see nothing wishy-washy in deciding not to waste my life trying to find the meaning of it, and I wouldn't want to believe an easily disprovable assertion, such as "There is no God."
Another motivation for term agnostic seems to be a desire not to offend the true believers. "Atheist" is a (well-needed) slap in the face. It closes the door on Mormons. People 'get' it. "Oh, you're not buying, I'll stop trying to sell you."
That's not often my motivation. Entertainment is my motivation -- you might also call me a hedonist, but I have a conscience. So when someone knocks on the door trying to sell me something, I have fun with them. I make sure I know my Bible, so I can quote the raunchiest parts of it, and the direct contradictions, and maybe convert them, but if not, at least I had fun.
My roommate had even more fun -- he was also agnostic, in about the same sense, but he'd been playing Nexus TK as a Geomancer, a subpath (think "clan", but more fundamental to gameplay) which was Taoist. So, regardless of whether anyone believed it, everyone had read the Tao Te Ching, and he understood it fairly well. So when the campus Christian people came around, he was able to attack their religion and claim to be a Taoist, a completely different religion, fairly unknown to most of the Christian West.
"How do you know my religion's evil or wrong when you don't know the first thing about it? Maybe they're both true! Maybe Christ was an incredible Feng Shui master!"
Unfortunately for me, I was gone at the time, because they never came back. Atheist, and they might think they can still save his soul. Geomancer agnostic, and they leave wondering if they're losing theirs.
So no, I'm not afraid of offending the true believers, I just like to be more artful about it. And by artful, I mean much, much subtler and more painful (to them).
To be fair, I do use Azureus, and they also listed the Apollo program. How many people used that? Two? How many use the same program today?
And to be fair, I see plenty of fast Java server apps, when I look for them. Usually, I don't care what the other end is running. I started ignoring it when I realized how unhealthy my rage at ASP was.
Not quite. He talks about why he chose Excel over Visicalc, and he talks about Java being the first to bring bytecode to the desktop and the browser, not the first bytecode ever.
Have you ever run into this in real life? I never have.
I have never seen a file starting with a -. As it is, I usually don't end up rm-ing files that I don't know what they are -- most of the time, I'll do "rm -rf foo" instead of "cd foo; rm *; cd..; rmdir foo". If I was that worried about it, I'd simply make a habit of throwing a -- in there.
"rm -- *" will do exactly what you expect. So will "rm./*". And it's still fewer characters than "delete *.*".
For that matter, we are in 2006 and Windows lovers never tried to make the browser/Outlook type safe. Double-click on an attachment called "foo.txt", which has an icon that would seem to indicate a Notepad text file. Reflexively click yes to any dialog box. Since "Hide file extensions" is the default, you just ran "foo.txt.exe". If there wasn't an extension, you wouldn't have a clue other than the fucking icon.
So that explains why I want to throw my cell phone out the window. It's a fricken phone, I want it to be able to SEND and RECEIVE CALLS. Leave the picture taking to a digital camera, it's far better suited to it.
I agree with you, but if you've got to have any software at all -- I like the contact list, for one. We've had DNS on the Web for decades now, we should at least have the equivalent of a host file for our phone numbers.
So, if you've got to have any software at all, why not Java? Sure beats having to reprogram/recompile it every time you change hardware, and I imagine phone hardware changes pretty fast. And even if programmer time was entirely free, better not to rewrite it if it works well -- people are used to programs behaving the way they do, and they depend on the subtlest things that you and I would think are completely pointless. I can cite a marketer who used Outlook's colors to sort her email -- could not deal with losing that information to transfer her to a new computer.
As for JAVA, it *is* a toy programming language. Any language that attempts to force a coding style upon users is meant for the beginner programmer, or student.
Or someone who works on a real project, where it makes sense to sacrifice a little flexibility in coding style to make it harder for unskilled programmers to ruin a project, and easier for you to sit down at any part of the project, or a completely different one you've never seen before, and instantly see what's going on.,/p>
Compare that to Perl. Love it for programs that only I will ever see. Hate reading other people's Perl, and I'd never use it for a large project.
So, in other words, the opposite of a toy, be that a good thing or a bad thing. I like toys.
in C/C++ I can call my file anything I bloody well like, and as long as my base Syntax is correct, it will compile. Sure , there is somewhat of a use of correct naming convention, but professional software engineers (read: real engineers, with an engineering degree), already know this.
So when do you break the convention, and why? And when you're doing this, is it on a "toy" project, or something else?
I agree that I prefer convention not be built into the language, but I don't see it as a huge deal, especially when you'd normally be sticking to the convention 99% of the time. In fact, most large projects dictate a convention for exactly the reasons I've given -- in order to be able to read code written by others.
I am not defending Java. There are plenty of real reasons to hate it, even some of the reasons you're giving now, but your original statements (that you still maintain), such as "Java is a toy language", are simply wrong.
In a C/C++ program, everything is generally statically linked (MS-DOS), or calls standard windows DLLs.
This is a bad thing. Shared libraries were invented for a reason. Use them.
Besides, who says we're talking about Windows? I can count the statically linked Linux programs I have on one hand.
Under Java, getting anything to work always involves setting the damn CLASSPATH variable.
Because that's so much harder than typing "#include " at the beginning of each file.
There is nothing *inside* the program/bytecode, telling me against what version of the damn library something is linked against.
That's why most of them ship with some sort of launcher -- a simple shell script, to set CLASSPATH. That's why you can inlude any library you want in the JAR file -- which is pretty much just a zipfile.
Again, why is this any harder than managing includes and static/dynamic links in C/C++? Funny you should mention that you can call your file whatever you want -- well, CLASSPATH lets me use whatever version of the library I want.
It's certainly a point against it in my book, but the word "toy" seems so obviously 180 degrees wrong that I had to correct it. Don't get me wrong, I'd much rather play with a "toy" OS that might deserve the name, like, say, Ruby. But your last point is a good one: Language preferences are subjective, so I'm staying to the more objective stuff.
Quicktime is fairly well supported, and the high-def MOV files I've seen definitely use h.264, so they work well under native 64-bit mplayer.
For repackaging stuff, I think someone else showed you a way -- what I've tried to do (and failed at) is a simple:
mencoder -oac copy -ovc copy foo.mov -o foo.ogm
Of course, sometimes you actually have to transcode, like when the codec doesn't support seeking -- I don't mean "no index", I mean "no seeking whatsoever". Then I'd like to transcode no matter what.
Those who do not understand Unix are doomed to reinvent it, poorly.
If the software doesn't require root/admin, run it as a limited user, or in a Wine jail (and as a limited user). If it does require root, run it in a chroot jail -- I don't think Windows can do that, but Wine can. If it requires kernel modules/drivers, then you need to consider: UserModeLinux under a limited account? Or do you really need a virtual machine?
I guess at this point it's about convenience -- you're used to doing it the way you do it, and vmware probably has a nicer GUI than any chroot jail. Windows may not support this, wine may not work.
But really, a virtual machine is far from the best solution. Or are you convinced that the VM code is that much safer than Wine?
There is no such thing as an accurate estimate in software development, so you're right there -- outsource absolutely everything to people who have already solved the problem, because then you know how much it costs.
It also means you'll never innovate a thing.
Or, try Doug's Law (correct me if this is from anywhere but my friend Doug): Make an estimate. Double it, then change the units. That's the estimate you give to the business end, and to the clients.
So, for instance, if it'll take you 10 seconds, say "Gimme 20 minutes". If it'll take a couple minutes, that's four hours. If it'll take a good, solid hour, that's 2 days. A couple days is four weeks. Three weeks is six months. A month is two years.
If, after that adjustment, it's still worth it to go homebrew, you've got a pretty damned safe bet.
Ok, one possibility is disk images. Cheaper than a VM, use no resources while the site is up. Of course, rolling back means you need to boot.
I guess that's not instantly. Another possibility in pretty widespread use is to have redundancy, instead of rolling back. Mysql replication + DRBD + heartbeat, and you can have another server on hot standby, ready to do an IP takeover, and no one has to notice.
What kind of faults do you usually see -- crashes or deletion/corruption?
Let's see... The first four of your reasons could theoretically be solved with a chroot jail, except Windows doesn't do that, to my knowledge. Or if it's a Windows app, a Wine jail. And something off bittorrent, at least for me, usually means a game, so a Wine jail makes more sense -- it can run at near-native speed that way. Fifth reason just seems stupid to me -- how does a virtual machine make this any easier than copying config files?
Redundancy, load balancing, and uptime are all things fairly well done in ways other than virtual machines. Ease of upgrading and adding new hardware -- you just need your software to be hardware-agnostic, which is why I mention.NET/Java. Monitoring and automation of what, exactly, that isn't already done with bash and Nagios?
Reduction in costs is basically saying that some other reason you listed worked. Virtual machines by themselves increase costs by requiring more hardware -- they will never be as fast as native.
Reinstalling OSes shouldn't really be required -- I know we're talking about enterprise, but I haven't really reconfigured the vast majority of my desktop software in something like 6 years and 3 different boxes. When I install a new OS, I copy my old config files over, and tweak things for the new hardware -- the exact same kinds of things I'd have to mess with on the host OS of a virtual machine. Or are you saying you just ran VMWare out-of-the-box on an OEM Windows?
It just makes no sense when for most intents and purposes, you are reinventing things that have existed in Unix for years, if not decades.
The jitter would probably kill you -- remember, it's mostly not about making sure we know what frame 1 is, and frame 2, and frame 3, from each of the cameras. It's about making sure that a given frame isn't off by some tiny fraction of a frame. I don't know if NTP has the resolution you need, but even if it does, you need some damn precise control of the hardware to make it work. Or you could just use some sync cables of some sort and let the cameras worry about it...
Many consider a homebrew solution regardless, if for no other reason than "Open Source". Reinventing the wheel can be a good thing if it's something you enjoy doing, and if it means it will cost you (and everyone else) so much less in the future.
I, for one, will be pretty interested in how this turns out. I'd love to be able to do motion capture for a little one or two-man game.
Hmm. Your main issue is going to be switching machines. I see three ways of doing this:
Some virtual machines let you suspend to a file. This is nice if you must run Windows, or some other uncooperative OS. But, that still means suspend to a file, which will take some time. As for the disk, that would be fairly trivial -- your host OS would be Linux over NFS, so your disk image is an NFS file.
Issue to watch for here: Local cache. I don't care how fast your gigabit is, that server is going to feel some stress. I tried setting up gigabit just for file sharing, and it was never as fast as it should have been, yes I was using Jumbo Frames, and it's just a crossover cable, yes it was cat6. And even if that's flawless, there's the server at the other end. You probably want good local caching, probably local disk caching. InterMezzo would have been good, but they've pretty much died. You might try simply throwing tons of RAM at the problem, or you might try cachefs (never got it working, but maybe...) or maybe one of the FUSE things.
Second way: Don't use VMs. VMs will never be as fast as a native OS. But "native OS" can still work roughly the way the VM image does above, if your hardware is identical. With Linux and Suspend2, you can suspend and resume from pretty much anything you can see as a block/swap device. So, all of the above caching issues apply, but just run it as a network OS, have one range of IPs for machines still booting and logging in, and another for fully functional machines. Here, when the user logs in, the bootstrap OS tells itself to resume the OS image from the network.
You could also do this with Windows by copying a local disk image around -- after you hibernate, boot a small Linux which rsyncs the whole disk across the network, including hiberfile.sys. Everything besides the OS itself would be stored over the network already anyway (samba).
I don't know if this will work -- after all, no hardware is truly identical. But it may be worth a shot.
Advantage: Both Linux and Windows XP know to trim the image a bit on suspend, so it won't be a whole memory image, just relevant stuff. Truly native speed.
Disadvantage: If I'm wrong, then you won't be able to properly resume on a different box.
Finally, you could stick to software which supports saving sessions and resuming them. I know Gnome at least, and maybe KDE, had this idea of saving your session when you log out -- and telling all applications to do so -- so that when you log back in after a fresh boot, it's like resuming from a hibernate.
Advantages: Fastest and most space-efficient out of all of them. Least administrative overhead -- in the event of a crash, there isn't nearly as much chance for bad stuff to happen. Easily works cross-platform, native speed on any supported platform. Simplest to implement, in theory.
Disadvantage: Not really implemented. 99% of all software may remember useless things like window size and position, but very few actually store a session. If you mostly roll your own software, this may be acceptible.
And of course, you could always do web apps, but those won't be anywhere near native speed -- yet.
All approaches share one flaw, though -- bad things happen when a box goes down. With a VM image (or a suspend image), if you crash, you'll obviously want to restore from a working image -- but what about the files? If they're on a fileserver, does your working image properly reconnect to the fileserver, or does it assume it's still connected (thus having weird things cached)? The third option (saving sessions) is the safest here, because in the event of a crash, programs behave the same way they would on a single-user desktop. But you still lose your session.
What others are suggesting -- various terminal server options -- is much slower, but it also means that as long as the application server is up, so is your session. If you crash, you can switch to another machine and literally be exactly where you
Saw a show on PBS or History Channel or somesuch about him. It was about e=mc^2, and while it included a bit about the giants whose shoulders he stood on, it also included quite a bit about "A young Einstein. A rebellious, even a sexy Einstein."
That should be popular, especially some of the quotes:
"Education is what remains after one has forgotten everything he learned in school."
Or, in a private school like the one I went to:
"Even on the most solemn occasions I got away without wearing socks and hid that lack of civilisation in high boots."
I understand the difference, but the apps they show off would be better implemented as single Java or Python apps -- even.NET/mono -- than as a whole OS inside a VMWare machine. I understand why VMWare did the contest the way they did, but the fact is, 99% of the time, you're using VMWare because you have to run two different OSes, not because you want to. For instance, you would run it on a desktop because you're addicted to Linux, but you have that one little Windows app holding you back.
But, even there, virtualization is really a third choice. First choice is a native app, second choice is an emulation layer like Wine or the Linux emulation for BSD, third choice is VMWare. Even on another arch, there are other ways -- qemu can run a single Linux app under a different arch, so qemu+wine can run Windows apps on a Linux arch other than x86/amd64. I'll try that soon on my Powerbook...
So, this is really nothing other than a publicity stunt, unless they had some sort of prize money.
Mod parent up. I won't be shut up, by the way -- every single RealPlayer I've ever had the misfortune to play with has been nothing but pain. Windows version I'd heard described as "behaves like a virus" by my most MS-loving, proprietary-loving technology whores -- and this was before we had a word for "spyware". Difficult to uninstall, a pain to live with. Linux users had to deal with truly ancient versions, so while there were players and plugins which used the RealPlayer DLLs (.so's), and while RealPlayer itself was distributed under package management (so not much chance of spyware if I don't run it), it was compiled with a truly ancient version of gcc, and thus wouldn't work with any of those things. So I ended up having to run it anyway...
And while most players let you have a fairly big buffer, RealPlayer sounded staticy, like bad radio reception. I suspect it had some clever way for dropping quality, but I shouldn't have needed that with my connection -- and yet, it still spent half the time buffering.
CarTalk is a humorous radio show which answers automotive questions, half-seriously, you never know if they're giving you good advice or just messing with you. They switched from RealPlayer several years ago, because as amazing as it seemed (even to them!), RealPlayer managed to be significantly worse than Windows Media Player -- Microsoft did far, far better than them by being almost mediocre.
If Real wants to gain respect, then yes, they should open their own format. We don't need all the source code, just the codecs, thanks.
If Real wants to survive as a business, they should drop the farce and just start selling their spyware directly to botnet controllers and peddlers of animated cursors.
By the way, whoever suggested that Flash has replaced Real as the format that does copy protection... Flash may not be as open as we'd like for playing, but it's easy enough to rip the video out of it. Or at least, I've done that with audio -- pulled an ordinary mp3 file out of a Flash presentation. With Real, you have to use the Analog Hole, not that it's that bad -- the sound quality sucks so much that encoding it as a 56-bit mp3 wouldn't hurt.
Consumer Reports has a section at the back of the magazine called "Selling It", where they show huge mistakes in advertising. Horrible spelling errors, logical WTFs, and just plain BAD ideas like EneMan -- the enema superhero -- that somehow made it to market, actually onto shelves. They also had a Golden Cocoon award for overpackaging, which popped up every now and then in Selling It.
Unfortunately, I can't find any examples online, but I'm sure at least some of you know what I mean.
The syntax is really not that hard. Maybe I just don't get most newbies, but it seems pretty intuitive to me to see
# Hi, I'm explaining the following
# option, and I'm in a different color.
# I don't look like code at all.
foo="bar"
That's pretty much it. And a good sample config file -- often used as a config file -- shows you all the possible options, and simultaneously explains what they do to the program itself. You can learn by doing and reading through the config file, although it helps a lot to understand comments first, so you know how to uncomment something.
I've been able to do this with some pretty tough software. Squid, for instance. Talk about a TON of options. And by the end of the sample config, I knew what each of them meant -- or at least, I understood it when I set the option; no way I'd remember it now. And when I started out, I only had a dim idea of what an HTTP proxy was. I just don't see how a GUI could make that any easier, except by having an explanation of what a proxy is, which could go in the comments -- they already practically explained most details of how a proxy works, anyway.
There are actually a couple of definitions of God which are pretty good. There's even one for the people who must doublethink to create an organized religion:
That is how Man creates God. It's taken from Dune, by the way, though I'm not sure which book.
But I'm not talking to Google here, I'm talking to Slashdot, who understands terms like "OS-Agnostic". If I was talking to Google, oh well, I'll have to explain my term.
I must still be missing the point about how "There is no God" can possibly not be an assertion. How about this one: "There are no cookies in the house." If you know the house pretty well, and you know where cookies are kept, and you've checked recently, you can say that with a reasonable amount of confidence. But suppose you just got home from vacation, the rest of the family has been there without you for a week, and you never talked about food while you were away. Until you check the cupboards, and that one special handmade cookie jar, how can you make such a statement? The best you can do is "I don't know whether there are cookies in the house."
Why? For the love of not-God and all that isn't holy...
(Sorry, apparently beliefs are easier than verbal mannerisms.)
That's fine, but what I keep hearing is "There is no God". Is there any evidence either way? Can there ever be definitive evidence either way?
Like I said -- if you'd bothered to finish with my post, I said this:
In that case, if someone asked you "Did Sanity actually personally chop down the oak tree that made that table?" The only correct, logical response (in absence of any evidence) is "I don't know." You could say "No" if you know for a fact that it's not made of Oak. You could say "Yes" if you saw me chop it down, and saw it crafted, and can make a reasonable assumption that no one swapped it for a fake. But lacking any evidence at all other than that the table appears to be oak, and doesn't appear to be made in a factory, you cannot have an opinion, and to say "Sanity did not chop down that tree" is not a good default.
So, when asked the question "Does God exist?" I can only answer "I don't know." I have no conclusive evidence either way. The best I could do, logically, is "I think so" if I've seen some miracles (which could still be coincidences), or "I think not" if I've been to war and have become jaded to the idea that God has any great, righteous plan that involves so many innocents suffering so much. As the evidence stands, I'm mostly neutral, therefor "I don't know" is correct.
And evidence is what logic is built on, by the way. Descartes tried throwing away evidence and running on pure logic, but he didn't do it right, all he could really prove is that he exists. Unless we have a good, Descartes-like or Euclid-like way of proving or disproving God, there can never be a logical reason for God's existance, it's all interpretation of evidence.
You didn't get it at all here. People are not OS-agnostic. Programs can be, among other things. And yes -- a Java program, for instance, does not necessarily know whether it's running on an OS at all. I'm pretty sure the JVM can be run without an OS, and that this is what people run on their phones, and Lego Mindstorms, and so on.
Even a C program can, at least in source code, be OS-agnostic. You can compile Hello World to run on boot, without requiring an OS, if you so desired -- not to mention any OS in the world.
Anyway, you're right, it may not be quite accurate there. I was just pointing out that it's used enough that when I say I'm agnostic, most people at least know the word, and almost no one misses the point.
Which is as useless as the distinction between "black hat" and "white hat" hackers. Most people will already have that cyberpunk image in their head as soon as they hear the word "hacker", and that makes the word fairly useless when I have to explain it every time.
I have fewer beliefs, and more assumptions, and I explained that earlier. Anyway, it is hard to know what to believe, isn't it? Perhaps it's not logically sound, but looking at the inherent order in Nature, it's hard not to become religious in Einstein's sense: "I believe in Spinoza's God, Who reveals Himself in the lawful harmony of the world, not in a God Who concerns Himself with the fate and the doings of mankind." He has a lot more to say on the subject; check WikiQuote.
Anyway, I see nothing wishy-washy in deciding not to waste my life trying to find the meaning of it, and I wouldn't want to believe an easily disprovable assertion, such as "There is no God."
That's not often my motivation. Entertainment is my motivation -- you might also call me a hedonist, but I have a conscience. So when someone knocks on the door trying to sell me something, I have fun with them. I make sure I know my Bible, so I can quote the raunchiest parts of it, and the direct contradictions, and maybe convert them, but if not, at least I had fun.
My roommate had even more fun -- he was also agnostic, in about the same sense, but he'd been playing Nexus TK as a Geomancer, a subpath (think "clan", but more fundamental to gameplay) which was Taoist. So, regardless of whether anyone believed it, everyone had read the Tao Te Ching, and he understood it fairly well. So when the campus Christian people came around, he was able to attack their religion and claim to be a Taoist, a completely different religion, fairly unknown to most of the Christian West.
"How do you know my religion's evil or wrong when you don't know the first thing about it? Maybe they're both true! Maybe Christ was an incredible Feng Shui master!"
Unfortunately for me, I was gone at the time, because they never came back. Atheist, and they might think they can still save his soul. Geomancer agnostic, and they leave wondering if they're losing theirs.
So no, I'm not afraid of offending the true believers, I just like to be more artful about it. And by artful, I mean much, much subtler and more painful (to them).
To be fair, I do use Azureus, and they also listed the Apollo program. How many people used that? Two? How many use the same program today?
And to be fair, I see plenty of fast Java server apps, when I look for them. Usually, I don't care what the other end is running. I started ignoring it when I realized how unhealthy my rage at ASP was.
Are you one of those hardcore Slashdot trolls, or do you actually not understand what I mean when I say free as in libre? As in freedom of speech?
Not quite. He talks about why he chose Excel over Visicalc, and he talks about Java being the first to bring bytecode to the desktop and the browser, not the first bytecode ever.
Have you ever run into this in real life? I never have.
..; rmdir foo". If I was that worried about it, I'd simply make a habit of throwing a -- in there.
./*". And it's still fewer characters than "delete *.*".
I have never seen a file starting with a -. As it is, I usually don't end up rm-ing files that I don't know what they are -- most of the time, I'll do "rm -rf foo" instead of "cd foo; rm *; cd
"rm -- *" will do exactly what you expect. So will "rm
For that matter, we are in 2006 and Windows lovers never tried to make the browser/Outlook type safe. Double-click on an attachment called "foo.txt", which has an icon that would seem to indicate a Notepad text file. Reflexively click yes to any dialog box. Since "Hide file extensions" is the default, you just ran "foo.txt.exe". If there wasn't an extension, you wouldn't have a clue other than the fucking icon.
I agree with you, but if you've got to have any software at all -- I like the contact list, for one. We've had DNS on the Web for decades now, we should at least have the equivalent of a host file for our phone numbers.
So, if you've got to have any software at all, why not Java? Sure beats having to reprogram/recompile it every time you change hardware, and I imagine phone hardware changes pretty fast. And even if programmer time was entirely free, better not to rewrite it if it works well -- people are used to programs behaving the way they do, and they depend on the subtlest things that you and I would think are completely pointless. I can cite a marketer who used Outlook's colors to sort her email -- could not deal with losing that information to transfer her to a new computer.
Or someone who works on a real project, where it makes sense to sacrifice a little flexibility in coding style to make it harder for unskilled programmers to ruin a project, and easier for you to sit down at any part of the project, or a completely different one you've never seen before, and instantly see what's going on.,/p>
Compare that to Perl. Love it for programs that only I will ever see. Hate reading other people's Perl, and I'd never use it for a large project.
So, in other words, the opposite of a toy, be that a good thing or a bad thing. I like toys.
So when do you break the convention, and why? And when you're doing this, is it on a "toy" project, or something else?
I agree that I prefer convention not be built into the language, but I don't see it as a huge deal, especially when you'd normally be sticking to the convention 99% of the time. In fact, most large projects dictate a convention for exactly the reasons I've given -- in order to be able to read code written by others.
I am not defending Java. There are plenty of real reasons to hate it, even some of the reasons you're giving now, but your original statements (that you still maintain), such as "Java is a toy language", are simply wrong.
This is a bad thing. Shared libraries were invented for a reason. Use them.
Besides, who says we're talking about Windows? I can count the statically linked Linux programs I have on one hand.
Because that's so much harder than typing "#include " at the beginning of each file.
That's why most of them ship with some sort of launcher -- a simple shell script, to set CLASSPATH. That's why you can inlude any library you want in the JAR file -- which is pretty much just a zipfile.
Again, why is this any harder than managing includes and static/dynamic links in C/C++? Funny you should mention that you can call your file whatever you want -- well, CLASSPATH lets me use whatever version of the library I want.
It's certainly a point against it in my book, but the word "toy" seems so obviously 180 degrees wrong that I had to correct it. Don't get me wrong, I'd much rather play with a "toy" OS that might deserve the name, like, say, Ruby. But your last point is a good one: Language preferences are subjective, so I'm staying to the more objective stuff.
Oh, I see. I remember seeing a rant at least as long on their page as the one I put out.
Still, it's not much of a choice, compared to ShoutCast/IceCast + open format (mp3, ogg) + WinAMP for the newbies.
I said MOV, I meant WMV.
Quicktime is fairly well supported, and the high-def MOV files I've seen definitely use h.264, so they work well under native 64-bit mplayer.
For repackaging stuff, I think someone else showed you a way -- what I've tried to do (and failed at) is a simple:
mencoder -oac copy -ovc copy foo.mov -o foo.ogm
Of course, sometimes you actually have to transcode, like when the codec doesn't support seeking -- I don't mean "no index", I mean "no seeking whatsoever". Then I'd like to transcode no matter what.
Those who do not understand Unix are doomed to reinvent it, poorly.
If the software doesn't require root/admin, run it as a limited user, or in a Wine jail (and as a limited user). If it does require root, run it in a chroot jail -- I don't think Windows can do that, but Wine can. If it requires kernel modules/drivers, then you need to consider: UserModeLinux under a limited account? Or do you really need a virtual machine?
I guess at this point it's about convenience -- you're used to doing it the way you do it, and vmware probably has a nicer GUI than any chroot jail. Windows may not support this, wine may not work.
But really, a virtual machine is far from the best solution. Or are you convinced that the VM code is that much safer than Wine?
There is no such thing as an accurate estimate in software development, so you're right there -- outsource absolutely everything to people who have already solved the problem, because then you know how much it costs.
It also means you'll never innovate a thing.
Or, try Doug's Law (correct me if this is from anywhere but my friend Doug): Make an estimate. Double it, then change the units. That's the estimate you give to the business end, and to the clients.
So, for instance, if it'll take you 10 seconds, say "Gimme 20 minutes". If it'll take a couple minutes, that's four hours. If it'll take a good, solid hour, that's 2 days. A couple days is four weeks. Three weeks is six months. A month is two years.
If, after that adjustment, it's still worth it to go homebrew, you've got a pretty damned safe bet.
In a server environment... hmm...
Ok, one possibility is disk images. Cheaper than a VM, use no resources while the site is up. Of course, rolling back means you need to boot.
I guess that's not instantly. Another possibility in pretty widespread use is to have redundancy, instead of rolling back. Mysql replication + DRBD + heartbeat, and you can have another server on hot standby, ready to do an IP takeover, and no one has to notice.
What kind of faults do you usually see -- crashes or deletion/corruption?
Let's see... The first four of your reasons could theoretically be solved with a chroot jail, except Windows doesn't do that, to my knowledge. Or if it's a Windows app, a Wine jail. And something off bittorrent, at least for me, usually means a game, so a Wine jail makes more sense -- it can run at near-native speed that way. Fifth reason just seems stupid to me -- how does a virtual machine make this any easier than copying config files?
Redundancy, load balancing, and uptime are all things fairly well done in ways other than virtual machines. Ease of upgrading and adding new hardware -- you just need your software to be hardware-agnostic, which is why I mention .NET/Java. Monitoring and automation of what, exactly, that isn't already done with bash and Nagios?
Reduction in costs is basically saying that some other reason you listed worked. Virtual machines by themselves increase costs by requiring more hardware -- they will never be as fast as native.
Reinstalling OSes shouldn't really be required -- I know we're talking about enterprise, but I haven't really reconfigured the vast majority of my desktop software in something like 6 years and 3 different boxes. When I install a new OS, I copy my old config files over, and tweak things for the new hardware -- the exact same kinds of things I'd have to mess with on the host OS of a virtual machine. Or are you saying you just ran VMWare out-of-the-box on an OEM Windows?
It just makes no sense when for most intents and purposes, you are reinventing things that have existed in Unix for years, if not decades.
The jitter would probably kill you -- remember, it's mostly not about making sure we know what frame 1 is, and frame 2, and frame 3, from each of the cameras. It's about making sure that a given frame isn't off by some tiny fraction of a frame. I don't know if NTP has the resolution you need, but even if it does, you need some damn precise control of the hardware to make it work. Or you could just use some sync cables of some sort and let the cameras worry about it...
Many consider a homebrew solution regardless, if for no other reason than "Open Source". Reinventing the wheel can be a good thing if it's something you enjoy doing, and if it means it will cost you (and everyone else) so much less in the future.
I, for one, will be pretty interested in how this turns out. I'd love to be able to do motion capture for a little one or two-man game.
Hmm. Your main issue is going to be switching machines. I see three ways of doing this:
Some virtual machines let you suspend to a file. This is nice if you must run Windows, or some other uncooperative OS. But, that still means suspend to a file, which will take some time. As for the disk, that would be fairly trivial -- your host OS would be Linux over NFS, so your disk image is an NFS file.
Issue to watch for here: Local cache. I don't care how fast your gigabit is, that server is going to feel some stress. I tried setting up gigabit just for file sharing, and it was never as fast as it should have been, yes I was using Jumbo Frames, and it's just a crossover cable, yes it was cat6. And even if that's flawless, there's the server at the other end. You probably want good local caching, probably local disk caching. InterMezzo would have been good, but they've pretty much died. You might try simply throwing tons of RAM at the problem, or you might try cachefs (never got it working, but maybe...) or maybe one of the FUSE things.
Second way: Don't use VMs. VMs will never be as fast as a native OS. But "native OS" can still work roughly the way the VM image does above, if your hardware is identical. With Linux and Suspend2, you can suspend and resume from pretty much anything you can see as a block/swap device. So, all of the above caching issues apply, but just run it as a network OS, have one range of IPs for machines still booting and logging in, and another for fully functional machines. Here, when the user logs in, the bootstrap OS tells itself to resume the OS image from the network.
You could also do this with Windows by copying a local disk image around -- after you hibernate, boot a small Linux which rsyncs the whole disk across the network, including hiberfile.sys. Everything besides the OS itself would be stored over the network already anyway (samba).
I don't know if this will work -- after all, no hardware is truly identical. But it may be worth a shot.
Advantage: Both Linux and Windows XP know to trim the image a bit on suspend, so it won't be a whole memory image, just relevant stuff. Truly native speed.
Disadvantage: If I'm wrong, then you won't be able to properly resume on a different box.
Finally, you could stick to software which supports saving sessions and resuming them. I know Gnome at least, and maybe KDE, had this idea of saving your session when you log out -- and telling all applications to do so -- so that when you log back in after a fresh boot, it's like resuming from a hibernate.
Advantages: Fastest and most space-efficient out of all of them. Least administrative overhead -- in the event of a crash, there isn't nearly as much chance for bad stuff to happen. Easily works cross-platform, native speed on any supported platform. Simplest to implement, in theory.
Disadvantage: Not really implemented. 99% of all software may remember useless things like window size and position, but very few actually store a session. If you mostly roll your own software, this may be acceptible.
And of course, you could always do web apps, but those won't be anywhere near native speed -- yet.
All approaches share one flaw, though -- bad things happen when a box goes down. With a VM image (or a suspend image), if you crash, you'll obviously want to restore from a working image -- but what about the files? If they're on a fileserver, does your working image properly reconnect to the fileserver, or does it assume it's still connected (thus having weird things cached)? The third option (saving sessions) is the safest here, because in the event of a crash, programs behave the same way they would on a single-user desktop. But you still lose your session.
What others are suggesting -- various terminal server options -- is much slower, but it also means that as long as the application server is up, so is your session. If you crash, you can switch to another machine and literally be exactly where you
Saw a show on PBS or History Channel or somesuch about him. It was about e=mc^2, and while it included a bit about the giants whose shoulders he stood on, it also included quite a bit about "A young Einstein. A rebellious, even a sexy Einstein."
That should be popular, especially some of the quotes:
"Education is what remains after one has forgotten everything he learned in school."
Or, in a private school like the one I went to:
"Even on the most solemn occasions I got away without wearing socks and hid that lack of civilisation in high boots."
I understand the difference, but the apps they show off would be better implemented as single Java or Python apps -- even .NET/mono -- than as a whole OS inside a VMWare machine. I understand why VMWare did the contest the way they did, but the fact is, 99% of the time, you're using VMWare because you have to run two different OSes, not because you want to. For instance, you would run it on a desktop because you're addicted to Linux, but you have that one little Windows app holding you back.
But, even there, virtualization is really a third choice. First choice is a native app, second choice is an emulation layer like Wine or the Linux emulation for BSD, third choice is VMWare. Even on another arch, there are other ways -- qemu can run a single Linux app under a different arch, so qemu+wine can run Windows apps on a Linux arch other than x86/amd64. I'll try that soon on my Powerbook...
So, this is really nothing other than a publicity stunt, unless they had some sort of prize money.
Mod parent up. I won't be shut up, by the way -- every single RealPlayer I've ever had the misfortune to play with has been nothing but pain. Windows version I'd heard described as "behaves like a virus" by my most MS-loving, proprietary-loving technology whores -- and this was before we had a word for "spyware". Difficult to uninstall, a pain to live with. Linux users had to deal with truly ancient versions, so while there were players and plugins which used the RealPlayer DLLs (.so's), and while RealPlayer itself was distributed under package management (so not much chance of spyware if I don't run it), it was compiled with a truly ancient version of gcc, and thus wouldn't work with any of those things. So I ended up having to run it anyway...
And while most players let you have a fairly big buffer, RealPlayer sounded staticy, like bad radio reception. I suspect it had some clever way for dropping quality, but I shouldn't have needed that with my connection -- and yet, it still spent half the time buffering.
CarTalk is a humorous radio show which answers automotive questions, half-seriously, you never know if they're giving you good advice or just messing with you. They switched from RealPlayer several years ago, because as amazing as it seemed (even to them!), RealPlayer managed to be significantly worse than Windows Media Player -- Microsoft did far, far better than them by being almost mediocre.
If Real wants to gain respect, then yes, they should open their own format. We don't need all the source code, just the codecs, thanks.
If Real wants to survive as a business, they should drop the farce and just start selling their spyware directly to botnet controllers and peddlers of animated cursors.
By the way, whoever suggested that Flash has replaced Real as the format that does copy protection... Flash may not be as open as we'd like for playing, but it's easy enough to rip the video out of it. Or at least, I've done that with audio -- pulled an ordinary mp3 file out of a Flash presentation. With Real, you have to use the Analog Hole, not that it's that bad -- the sound quality sucks so much that encoding it as a 56-bit mp3 wouldn't hurt.
I've also had some issues with recent high-def content. Not sure what the codec was, but it was in .mov, so...
Consumer Reports has a section at the back of the magazine called "Selling It", where they show huge mistakes in advertising. Horrible spelling errors, logical WTFs, and just plain BAD ideas like EneMan -- the enema superhero -- that somehow made it to market, actually onto shelves. They also had a Golden Cocoon award for overpackaging, which popped up every now and then in Selling It.
Unfortunately, I can't find any examples online, but I'm sure at least some of you know what I mean.