I should add that Ruby is used for a lot more than just websites. You are probably thinking about Rails. Ruby is suitable (and is used for) all the same kinds of things as Python. It's just that Ruby got a later start, because it wasn't really known outside of Japan until some years after it was created.
"I'm not so sure that many companies are actually so worried about people looking at their source code, especially for a language such as Ruby which is mainly used on the backend of websites, but I could be wrong."
Then you've missed my whole point.
Java is used on the back-end of some websites too. And that is probably where it would have stayed, if it were not compilable to bytecode.
It makes a BIG difference to a LOT of people. Repeat: that's the whole reason why Microsoft included an obfuscator with Visual Studio: because (a) their CLR bytecode compiler did not sufficiently obfuscate the source, and (b) without that, nobody wanted to distribute desktop apps. It wasn't just an extra, it was considered to be essential.
I didn't bother to look at Google. I didn't feel my basic argument needed that to support it. And I still don't.
"I guess I can agree that having the code obfuscated makes it harder for a competitor to steal your code completely and wrap it up as their own product."
Which in turn makes the language more popular. That was the essence of what I was saying. Java would not have enjoyed anywhere near the popularity it has had if everybody could see all the source code. Even though decompiling is still possible. And the lack of same has been the deciding factor in my not distributing a couple of programs written in Ruby.
"If you're trying to hide your super-secret algorithm, or keep people from cracking your DRM, having the code compiled is a false sense of security."
Agreed. I think the basic idea is that you are preventing all but the determined from "borrowing" your code.
While I generally agree that "security through obscurity", as a concept, doesn't work very well, it is usually sufficient to block only the casual potential thieves, not the experts. If that were not so, they would not be able to sell all those shitty door locks to people. Which is 95% of them or probably more. Most of them are ridiculously easy to defeat, if you know what you are doing.
Those with skill are going to get in anyway, if they are determined.
By that I mean: chances are good that it will never hit a site like ebay... it will be fenced or sold on the street for a small fraction of its market value.
"Anecdotally, our university will watch for MAC addresses of stolen computer equipment. According to one of the network guys, they've never had a hit. The equipment is sold on ebay before it is ever turned on on campus."
Which is precisely why something like Prey is useful. It will track the computer wherever it is.
"What blows my mind is that no one ever buys it and then takes it to campus."
Most thieves of this kind are not professionals or college students. They are usually drug addicts or people with similar problems, looking for a quick buck.
"Luckily, any decent BT client supports blocklists natively. There's really no need to download a 3rd party program."
Yes, that's true. Anybody who uses Vuze for example (formerly Azureus) doesn't need a separate program. It even (optionally) automatically downloads online lists once a week.
From the description, it appears to me that they are using spoofed IP addresses and other such means to "fake" the P2P data. What this amounts to is "jamming" the internet traffic, in much the same way a DDOS attack (or radio jammer, but more targeted) works.
If that is so, using this "technology" is probably very much against U.S. and international law.
"Prey isn't very useful if the device doesn't have true GPS built in, so scratch it for a laptop and some tablets."
Location services are FAR better than that these days. My own router is located on the map within a few yards of its actual location, and that's using WiFi only. Cell towers are less useful of course, but your laptop would probably be pinpointed within 10s of yards at most.
If I was going to steal a laptop/tablet/cell phone, the very first thing I'm going to do is turn it off and/or remove the battery, rendering Prey and the like useless.
Only for as long as it's turned off. As soon as it's rebooted, Prey is back on the job, sending pictures of the user (taken with the webcam) and screenshots. I've tested it on my own laptop, and it works very well.
And as another responder replied, if the criminal is not too smart they aren't going to be wiping the hard drive. But even more than that: they're usually too lazy, or in too much of a hurry. They want a working phone or computer they can use or sell NOW, not something they will have to spend days overhauling first.
"Also, it's not like compiling your code hopelessly obfuscates it."
Okay, I knew there was a Perl compiler, but I wasn't aware that anybody actually used it. I was not aware of the PHP compiler.
But you don't need code to be "hopelessly" obfuscated. Even bytecode-compiled code is obfuscated enough for it to be commercially useful. Decompiled code is much harder to read and decipher than plain source code. Another example is the obfuscator that Microsoft used to supply (and maybe still does, I don't know) with Visual Studio, without which many people would not have used it to build commercial products.
Arguing absolutes (like "hopelessly obfuscated") isn't going to get you very far. I am beginning to think you are arguing just to be a troll.
"Predicting that a language will become popular in the future is tenuous at best."
Will you get off the Ruby kick? I was referring to a class of languages, not necessarily a language itself:
"... scripting languages like Ruby..."
And all I said was that will make them more popular. And that stands to reason, because then they will be useful for a wider range of applications. It hardly takes a Nostradamus to make that prediction.
"string.strip is harder to read generally speaking, because it's so small it can get lost in other code..."
Hahahahaha! You have a weird concept of "readability". That's a pretty thin argument.
When browsing through a large volume of code either would take the same time to skim over since you knew what they were doing (though as noted the shorter example is easier to accidentally miss).
Sorry, but it literally doesn't work that way. It takes more time for the human eye and brain to parse the longer line. That's a fact that anybody else who studied human engineering can confirm for you.
Here's the same functionality in MacRuby (a Ruby wrapper for Obj-C):
my_string.strip
Which one is easier to read? While I don't claim that MacRuby compiles to code that is quite as fast as native Obj-C, which one is easier to read is hardly in question. And that's mostly a matter of the language, not the programmer.
"If I'm wrong, can you please explain why I'm wrong? (I mean, I'd like something more than "because Bert64 and me say so")."
I would not presume to do so. Instead, I recommend that you look up the actual LAW, and associated court decisions. And I assure you, they do not match very closely to your assumptions.
"No, the Harvard researchers didn't do the same thing. "
Yes, they did. They used gene therapy to lengthen the telomeres. Exactly the same thing these folks did.
The exact mice they did it to are irrelevant.
Scientists at Harvard announced the very same thing, over a year and a half ago.
I should add that Ruby is used for a lot more than just websites. You are probably thinking about Rails. Ruby is suitable (and is used for) all the same kinds of things as Python. It's just that Ruby got a later start, because it wasn't really known outside of Japan until some years after it was created.
"I'm not so sure that many companies are actually so worried about people looking at their source code, especially for a language such as Ruby which is mainly used on the backend of websites, but I could be wrong."
Then you've missed my whole point.
Java is used on the back-end of some websites too. And that is probably where it would have stayed, if it were not compilable to bytecode.
It makes a BIG difference to a LOT of people. Repeat: that's the whole reason why Microsoft included an obfuscator with Visual Studio: because (a) their CLR bytecode compiler did not sufficiently obfuscate the source, and (b) without that, nobody wanted to distribute desktop apps. It wasn't just an extra, it was considered to be essential.
"Woosh."
If that was a joke, dude, it wasn't a "Whoosh" at all. It was more like a thud.
I know they were still there in 2008. I saw them both in the local airport and in Salt Lake City.
"I guess I can agree that having the code obfuscated makes it harder for a competitor to steal your code completely and wrap it up as their own product."
Which in turn makes the language more popular. That was the essence of what I was saying. Java would not have enjoyed anywhere near the popularity it has had if everybody could see all the source code. Even though decompiling is still possible. And the lack of same has been the deciding factor in my not distributing a couple of programs written in Ruby.
"If you're trying to hide your super-secret algorithm, or keep people from cracking your DRM, having the code compiled is a false sense of security."
Agreed. I think the basic idea is that you are preventing all but the determined from "borrowing" your code.
While I generally agree that "security through obscurity", as a concept, doesn't work very well, it is usually sufficient to block only the casual potential thieves, not the experts. If that were not so, they would not be able to sell all those shitty door locks to people. Which is 95% of them or probably more. Most of them are ridiculously easy to defeat, if you know what you are doing.
Those with skill are going to get in anyway, if they are determined.
By that I mean: chances are good that it will never hit a site like ebay... it will be fenced or sold on the street for a small fraction of its market value.
"Anecdotally, our university will watch for MAC addresses of stolen computer equipment. According to one of the network guys, they've never had a hit. The equipment is sold on ebay before it is ever turned on on campus."
Which is precisely why something like Prey is useful. It will track the computer wherever it is.
"What blows my mind is that no one ever buys it and then takes it to campus."
Most thieves of this kind are not professionals or college students. They are usually drug addicts or people with similar problems, looking for a quick buck.
"All it lacks is a decent torrent client."
Well, how about being constructive? What do you recommend instead?
Personally I find it quite useable, but I am always open to suggestion. What is it about it that you don't like, and what does it better?
"Luckily, any decent BT client supports blocklists natively. There's really no need to download a 3rd party program."
Yes, that's true. Anybody who uses Vuze for example (formerly Azureus) doesn't need a separate program. It even (optionally) automatically downloads online lists once a week.
"Never ever again have problem with companies like Mediadefender or PiratePay and their ilk."
PeerBlock is probably great for all the Neanderthals who still use Windows. It isn't available to anybody else.
From the description, it appears to me that they are using spoofed IP addresses and other such means to "fake" the P2P data. What this amounts to is "jamming" the internet traffic, in much the same way a DDOS attack (or radio jammer, but more targeted) works.
If that is so, using this "technology" is probably very much against U.S. and international law.
"sure, and I can put $10,000 worth of gear in a backpack. but when I travel I don't, cheap, durable, low performance is good enough."
Apparently this person travels a lot and doesn't want to (or has reason not to) leave his hardware at home. I chose not to second-guess his motives.
"what the heck kind of high-powered applications are you running that require that kind of expensive hardware?"
My Macbook Pro, which I use routinely for work, was about $3000 new. Toss in a good tablet and smartphone, and you can top $4000 very easily.
Travel insurance is available from vending machines at airports. It is not difficult to get at all.
"Prey isn't very useful if the device doesn't have true GPS built in, so scratch it for a laptop and some tablets."
Location services are FAR better than that these days. My own router is located on the map within a few yards of its actual location, and that's using WiFi only. Cell towers are less useful of course, but your laptop would probably be pinpointed within 10s of yards at most.
If I was going to steal a laptop/tablet/cell phone, the very first thing I'm going to do is turn it off and/or remove the battery, rendering Prey and the like useless.
Only for as long as it's turned off. As soon as it's rebooted, Prey is back on the job, sending pictures of the user (taken with the webcam) and screenshots. I've tested it on my own laptop, and it works very well.
And as another responder replied, if the criminal is not too smart they aren't going to be wiping the hard drive. But even more than that: they're usually too lazy, or in too much of a hurry. They want a working phone or computer they can use or sell NOW, not something they will have to spend days overhauling first.
"Also, it's not like compiling your code hopelessly obfuscates it."
Okay, I knew there was a Perl compiler, but I wasn't aware that anybody actually used it. I was not aware of the PHP compiler.
But you don't need code to be "hopelessly" obfuscated. Even bytecode-compiled code is obfuscated enough for it to be commercially useful. Decompiled code is much harder to read and decipher than plain source code. Another example is the obfuscator that Microsoft used to supply (and maybe still does, I don't know) with Visual Studio, without which many people would not have used it to build commercial products.
Arguing absolutes (like "hopelessly obfuscated") isn't going to get you very far. I am beginning to think you are arguing just to be a troll.
"lol apparently you think Perl is not a scripting language like Ruby. And ok, I'll agree PHP isn't a scripting language like Ruby."
Where do you get this stuff? That's not what I said, either.
Tell me: do you know of anybody working on compilers for Perl or PHP? When you do, let me know...
"Predicting that a language will become popular in the future is tenuous at best."
Will you get off the Ruby kick? I was referring to a class of languages, not necessarily a language itself:
"... scripting languages like Ruby ..."
And all I said was that will make them more popular. And that stands to reason, because then they will be useful for a wider range of applications. It hardly takes a Nostradamus to make that prediction.
"string.strip is harder to read generally speaking, because it's so small it can get lost in other code..."
Hahahahaha! You have a weird concept of "readability". That's a pretty thin argument.
When browsing through a large volume of code either would take the same time to skim over since you knew what they were doing (though as noted the shorter example is easier to accidentally miss).
Sorry, but it literally doesn't work that way. It takes more time for the human eye and brain to parse the longer line. That's a fact that anybody else who studied human engineering can confirm for you.
"Would it strip a tab? A newline? I can't be sure coming in."
Nor can you be sure of exactly the same thing in the Objective-C example.
I did not state that my example was better or worse, I stated that it needed no more assumptions about the API.
What does whitespaceCharacterSet include? Some people (and some contexts) assume that newlines and carriage returns are whitespace.
You still need to know about the APIs. If you don't, you shouldn't be attempting to program.
"But aside from simple things like that, the readability of the code depends a lot more on the programmer than on the language."
I would dispute this. In fact I think it is a rather bizarre statement. Take the example I gave earlier. Here's the Obj-C:
NSString *s = [stringToTrim stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
Here's the same functionality in MacRuby (a Ruby wrapper for Obj-C):
my_string.strip
Which one is easier to read? While I don't claim that MacRuby compiles to code that is quite as fast as native Obj-C, which one is easier to read is hardly in question. And that's mostly a matter of the language, not the programmer.
"Anyone can look at that line and understand exactly what it does without any knowledge of the APIs ..."
So what? If you're programming without knowledge of the APIs, maybe you shouldn't be programming in the first place.
Compare that with some other language:
my_string.strip
I don't see any more ambiguity -- or need to know about the APIs -- there than in GP's example.
"If I'm wrong, can you please explain why I'm wrong? (I mean, I'd like something more than "because Bert64 and me say so")."
I would not presume to do so. Instead, I recommend that you look up the actual LAW, and associated court decisions. And I assure you, they do not match very closely to your assumptions.