The whole point of a Wiki is that people can write about what they feel is important. This is what makes Wikipedia so good -- many articles are written by people who know what they are talking about first-hand, and not English majors trying to explain how something works. The quality of the writing isn't as good as a commercial encyclopedia, but the quality of the information is much higher.
Considering that the GNAA has been trolling slashdot (which is one of the most popular sites on the 'net) for the last few years, they may as well have an article of their own. If someone took the time to write and update it, it's important enough to be in there. Plus, that page is hilarious!
You don't know what you are talking about. Of course you can't use platform-specific crap if you are making a portable app. If you want to write an app in C++ that works on Windows, Linux, and Mac, you can't use any of those features, either. KDE features pretty much require that your app be KDE-only, for instance. With Java, you get out-of-the-box portability. While your app won't support AppleScript out of the box (neither will the C++ app), it should look like a normal Mac application, with a menubar on top and Aqua widgets everywhere (you are wrong with regard to the menu bar).
As far as python and others: they do not have any advantages over Java for desktop apps. They are not portable, since they depend on external (often platform-specific) libraries for everything. They are exteremely slow (about 10x slower than java). They are hard to develop and hard to deploy due to the external libraries. Scripting languages are best left for scripting.
Not true. Modern Flash cards have wear leveling built into the hardware. The address the computer sees is actually the logical address that the controller translates to a hardware-specific address. The controller automatically adjusts addresses to spread out the writes and to detect and remap bad blocks (this should occur without loss of data, since blocks only go bad when you write to them).
I still don't see what the big deal is. True, Java isn't free software (which is a good thing, because you have one standard, compatible version of the Sun JRE). There is no good reason whatsoever to change the JRE, just write new code to do new things.
If you don't like Swing, use a third-party toolkit (like SWT), it will work just as well. If you just don't like how Swing looks, use a third-party look and feel (they are available; for instance there is one that closely mimics standard Windows look and feel). You have to add at most 4 lines of code.
JNI is useful if you don't require your program to run on any platform and need to call a native method. There is nothing wrong with using it if you realize what the limitations are.
I don't know what Eclipse looked like 2 years ago. It looks very Windows-like to me, even on Linux.
Apple is a hardware company. They make money from selling Macs, not OS X. If they could sell Macs with WinXP, I'm sure they would have no problem with it. I have met lots of people that say they love Mac hardware and design but hate the operating system. I would think Apple would probably try to appeal to them.
Bah. Qt is complete, utter crap. Talk about an over-complex API -- you can't even figure out what the hell it's doing most of the time because Qt doesn't use C++ but has it's own little language extension, with it's own set of compilers, no less. If I wanted to deal with any more nightmare that is C++ I would at least use GTKmm (which has a shitty API and is poorly documented but is at least written in C++ and doesn't use 10 million macros and a meta-compiler). With that said, I'll stick to Java. At least you don't have to consult a textbook to look up some mind-numbingly complicated expression every time you need an iterator. Not to mention dealing with all the joys of allocating memory and dealing with memory leaks. And being able to run your app on just about any platform without worrying about dependencies and other random user-unfriendly crap.
It's easy to see that you don't know what you're talking about. First, the source for Java is available from Sun. Second, you can write your own widget sets or interface to native APIs quite easily (ever hear of JNI? Pluggable look and feel?). There are plenty of Java apps that look and feel exactly like a native program. Try Eclipse some day.
Great idea. Let's stop accepting signatures and requiring PINs. Let's see... Signatures are next to impossible to falsify. PINs are easy to steal and there's no paper trail. PINs are easy to guess (a 4-digit PIN means only 10,000 combinations -- there are millions of sites you could try it on). If someone steals your PIN, it's your own damn fault as far as the bank is concerned. So, what's so great about that idea?
Direct to computer downloads will prosper the day everyone gets a 100Mbit connection. Until then, the only people that will bother downloading movies will be the ones not paying for it. I think the next big thing will be Video over IP. The telcos are setting it up already, you can expect it to be everywhere you can get DSL in a couple of years. How about on-demand streaming of anything you want the minute you want it?
The problem is, Windows is probably the most strict product as far as license enforcement. If you get a BSA audit, they will find a way to extract money out of your company. Rare third party apps generally come with license managers and are installed on IT-managed machines, so the problem is not as bad.
Most people don't give a shit that they can copy it -- if they want to copy Windows to their friendly neighbors, they do.
Product activation does stop quite a few. I've heard of people having to purchase a brand-new retail copy of windows because they lost their reinstall CD. It also is a good incentive to try Linux out -- you don't have to pay for it.
Most people also don't give a shit that they can modify, since most people *can't* modify it.
That's a fallacy. While most people can't modify a piece of software, there are always a few people that can. That means you can find distributions that do just about anything one would want. Let's take a look at the array of choices: Gentoo, Redhat, Knoppix, Xandros, Linspire, Debian, even LinuxBIOS. While it's a major hassle to have so many of them, it's a huge advantage. You can't exactly download a bootable WinXP CD or alter the build options, to my knowledge.
The same happens with applications. YOU might not want to hack Firefox, and that's perfectly fine. But you can choose from tens of thousands of themes, extensions, and other hacks. I saw someone the other day with 65 extensions installed. This is a power user's dream.
Wait a second, we're talking admins now? We were talking end users.
Technology has a way of making it's way home from the office. Let's see: computers, cellphones, word processors, spreadsheets... These weren't developed to write letters to Grandma.
Well, let's rephrase this in simple, easy-to-digest words for idiots like you. People use Linux because they are free to copy, redistribute, and modify it. You don't have to deal with BSA audits, you don't need to worry about keeping track of licenses when you are deploying it, you can customize the OS to do what you need, and nobody can force you to upgrade if you don't want to.
The stability argument is a myth. Linux is more stable than Win9x, but Win2K or XP with decent drivers is just as stable, at least for desktop use. I can crash my Linux machine just by starting Xawtv. I remember people were bitching about how a more stable version of Windows will kill Linux. Well, it's not stability that's the selling point.
Security through obscurity won't work for one simple reason: if the system is so obscure that hardly anyone can use it, it will be trivial to compromise to anyone who knows what he is doing. If you are worried about script kiddies, it's a workable solution. If you are worried about security, it's not secure unless you have regular 3rd party audits and stuff like that.
The FSF can't sue anyone unless you assigned your copyright to them or you stole code from their libraries. They just write the license, they aren't the copyright owner.
I agree: it is absolutely necessary to know the fundamentals of CS. My point was that not knowing some of the practical developments in the field can be even more dangerous, that many university CS programs do not give them enough attention, and that many CS students never learn those concepts properly.
Those "buzzwords" are based on several decades of experience building large software systems. Nobody would want to repeat those mistakes. Yet, they are routinely repeated. Look on SourceForge, and you will find plenty of code that is generally well-written but has major structural problems which make the application either unusable or unmaintainable. It also happens in the commercial world: for example, the original Netscape browser became completely unmaintainable around version 4. Netscape had to scrap it and rewrite it from scratch (now, it is known as Mozilla Firefox).
Goods aren't the only things purchased with credit cards. Many Internet services such as iTunes or dating websites have nothing to ship. Think of Amazon gift certificates.
That's why credit cards have fraud protection. You call them up and reverse the charge....many desktops will have a card reader attached...
They were saying that back in 1994. Hasn't happened yet.
A card reader currently costs US $25, which a bank can afford to provide to a customer for better security.
Banks exist to make money. They make money by having the customer use credit cards. This would discourage the use of credit cards, and you would no longer be able to order stuff over the phone or by mail or fax (which is still a significant percentage of orders). Not to mention that a truly secure card reader would cost a lot more than $25. $150 would be much more realistic. To be even somewhat secure, it would need to at least have a display and its own network connection, which adds quite a bit to the cost.
The burden of using a system should not be upto a vendor or a customer
Customers generally don't need to ship stuff to 20 different addresses, and it's not difficult to call your bank and have them add another authorized address. Most places will still ship to an alternate address, they will just call you first to confirm. Having to use special card reader hardware would be much more of a hassle.
The current system is incredibly stupid, because it doesn't verify a person. It merely identifies a person's card with a card number, and this identity can be adopted by anyone masquerading as that person.
Your system has exactly the same problem. There is no foolproof way to identify a person remotely. Plus, your system is now susceptible to spyware: put some software on the customer's machine to hijack the card reader and you can do what you want with the credit card. If anything, it's LESS secure.
I had a CC number stolen, and it was used to purchase software online, which was DOWNLOADED, not shipped, bypassing the mismatched shipping/billing address theory.
Call your credit card company. Say the charge was unauthorized. Get the charge reversed. Problem solved.
There are systems out there that prevent this problem much more easily. For instance, Citibank can generate single-use credit card numbers that expire in one month and are locked to a merchant. Much less hassle than dragging around card readers with you, and you still have the ability to order over the phone, for one.
I honestly don't care. You can't do anything with a credit card that can't be resolved with a call to the CC company. Most merchants don't have very good security anyway; I bet most of the smaller online shops store credit card info in a mysql database without any kind of security.
I certainly agree. However, a bigger problem is that most CS graduates have no clue about software engineering (stuff like OOP design, UML, patterns, and so on). If someone uses a bubblesort instead of quicksort or vice versa, it's pretty easy to fix (in most civilized languages, you just specify a different object from the standard library). Obviously, it can get hairy, but at least the bad parts are somewhat isolated. The nice thing is, you can often hire a few really smart CS guys to do the really hard bits and end up with a decent program.
A bad case of spaghetti code might not even _be_ fixable. In the first case, you end up with a program that's really slow but fixable. In the second, you end up with a program that kind of works, but is barely maintainable and degenerates rapidly as structural problems are found and worked around. Fixing it would require a complete re-write, which never happens. After about 20 releases, you might end up with something that does the job but is no longer maintainable.
I don't know, but it seems like having "Restaurant operations" experience right next to your "Master of Science, 2005" would be a negative. I would suggest starting out with something slightly more relevant. A blank resume looks slightly better than one with custodial jobs on it. I mean, why would you want to hire a part-time janitor with an MSCS degree into a senior development position?
Well, maybe you work for Microsoft or something, but commercial code generally needs to be pretty damn good. You don't want your program to crash or corrupt data, and you need it to do what the customer wants, when the customer wants it. If you write bad software, you will quickly run out of customers. That's unlike a lot of CS assignments, some of which place more priority on having the right preconditions and invariants than having well-structured code.
Computer science is certainly useful for software engineers (which is what 99% of non-academic positions require), but it's a bit like hiring people with an MS in physics to do electrical engineering. They will know all the theory really well but probably won't be able to do the job without some additional training. Unless you have some kind of external experience (open-source software, part-time programming position, co-op/internship experience), you probably won't be able to get anything other than an entry-level position.
The CEO does make a lot more than is average (about $20 million a year). But I hear the company is one of those very religious, stick-up-their-ass type. You don't want to work for them, that's for sure.
Themes are not separate. The program always outputs them (sometimes using shared libraries). A shared library is considered part of the program: for instance, you cannot legally link a non-GPL program to a GPL library. Also, if the themes are indeed GPL, you cannot legally include them in a book without obtaining separate permissions from the copyright holder (unless the book is also licensed as GPL).
The whole point of a Wiki is that people can write about what they feel is important. This is what makes Wikipedia so good -- many articles are written by people who know what they are talking about first-hand, and not English majors trying to explain how something works. The quality of the writing isn't as good as a commercial encyclopedia, but the quality of the information is much higher.
Considering that the GNAA has been trolling slashdot (which is one of the most popular sites on the 'net) for the last few years, they may as well have an article of their own. If someone took the time to write and update it, it's important enough to be in there. Plus, that page is hilarious!
You don't know what you are talking about. Of course you can't use platform-specific crap if you are making a portable app. If you want to write an app in C++ that works on Windows, Linux, and Mac, you can't use any of those features, either. KDE features pretty much require that your app be KDE-only, for instance. With Java, you get out-of-the-box portability. While your app won't support AppleScript out of the box (neither will the C++ app), it should look like a normal Mac application, with a menubar on top and Aqua widgets everywhere (you are wrong with regard to the menu bar).
As far as python and others: they do not have any advantages over Java for desktop apps. They are not portable, since they depend on external (often platform-specific) libraries for everything. They are exteremely slow (about 10x slower than java). They are hard to develop and hard to deploy due to the external libraries. Scripting languages are best left for scripting.
Not true. Modern Flash cards have wear leveling built into the hardware. The address the computer sees is actually the logical address that the controller translates to a hardware-specific address. The controller automatically adjusts addresses to spread out the writes and to detect and remap bad blocks (this should occur without loss of data, since blocks only go bad when you write to them).
I agree, I've had nothing but problems with their cards. The routers are decent, the wireless cards blow.
I still don't see what the big deal is. True, Java isn't free software (which is a good thing, because you have one standard, compatible version of the Sun JRE). There is no good reason whatsoever to change the JRE, just write new code to do new things.
If you don't like Swing, use a third-party toolkit (like SWT), it will work just as well. If you just don't like how Swing looks, use a third-party look and feel (they are available; for instance there is one that closely mimics standard Windows look and feel). You have to add at most 4 lines of code.
JNI is useful if you don't require your program to run on any platform and need to call a native method. There is nothing wrong with using it if you realize what the limitations are.
I don't know what Eclipse looked like 2 years ago. It looks very Windows-like to me, even on Linux.
Apple is a hardware company. They make money from selling Macs, not OS X. If they could sell Macs with WinXP, I'm sure they would have no problem with it. I have met lots of people that say they love Mac hardware and design but hate the operating system. I would think Apple would probably try to appeal to them.
Bah. Qt is complete, utter crap. Talk about an over-complex API -- you can't even figure out what the hell it's doing most of the time because Qt doesn't use C++ but has it's own little language extension, with it's own set of compilers, no less. If I wanted to deal with any more nightmare that is C++ I would at least use GTKmm (which has a shitty API and is poorly documented but is at least written in C++ and doesn't use 10 million macros and a meta-compiler). With that said, I'll stick to Java. At least you don't have to consult a textbook to look up some mind-numbingly complicated expression every time you need an iterator. Not to mention dealing with all the joys of allocating memory and dealing with memory leaks. And being able to run your app on just about any platform without worrying about dependencies and other random user-unfriendly crap.
It's easy to see that you don't know what you're talking about. First, the source for Java is available from Sun. Second, you can write your own widget sets or interface to native APIs quite easily (ever hear of JNI? Pluggable look and feel?). There are plenty of Java apps that look and feel exactly like a native program. Try Eclipse some day.
Are there any plans for such a common language runtime to which applications can target themselves in the free software ecosystem?
.NET or C# or Mono.
Yes, it already exists. It's called Java. There's also a knock-off of it called
Great idea. Let's stop accepting signatures and requiring PINs. Let's see... Signatures are next to impossible to falsify. PINs are easy to steal and there's no paper trail. PINs are easy to guess (a 4-digit PIN means only 10,000 combinations -- there are millions of sites you could try it on). If someone steals your PIN, it's your own damn fault as far as the bank is concerned. So, what's so great about that idea?
Direct to computer downloads will prosper the day everyone gets a 100Mbit connection. Until then, the only people that will bother downloading movies will be the ones not paying for it. I think the next big thing will be Video over IP. The telcos are setting it up already, you can expect it to be everywhere you can get DSL in a couple of years. How about on-demand streaming of anything you want the minute you want it?
The problem is, Windows is probably the most strict product as far as license enforcement. If you get a BSA audit, they will find a way to extract money out of your company. Rare third party apps generally come with license managers and are installed on IT-managed machines, so the problem is not as bad.
Most people don't give a shit that they can copy it -- if they want to copy Windows to their friendly neighbors, they do.
Product activation does stop quite a few. I've heard of people having to purchase a brand-new retail copy of windows because they lost their reinstall CD. It also is a good incentive to try Linux out -- you don't have to pay for it.
Most people also don't give a shit that they can modify, since most people *can't* modify it.
That's a fallacy. While most people can't modify a piece of software, there are always a few people that can. That means you can find distributions that do just about anything one would want. Let's take a look at the array of choices: Gentoo, Redhat, Knoppix, Xandros, Linspire, Debian, even LinuxBIOS. While it's a major hassle to have so many of them, it's a huge advantage. You can't exactly download a bootable WinXP CD or alter the build options, to my knowledge.
The same happens with applications. YOU might not want to hack Firefox, and that's perfectly fine. But you can choose from tens of thousands of themes, extensions, and other hacks. I saw someone the other day with 65 extensions installed. This is a power user's dream.
Wait a second, we're talking admins now? We were talking end users.
Technology has a way of making it's way home from the office. Let's see: computers, cellphones, word processors, spreadsheets... These weren't developed to write letters to Grandma.
Well, let's rephrase this in simple, easy-to-digest words for idiots like you. People use Linux because they are free to copy, redistribute, and modify it. You don't have to deal with BSA audits, you don't need to worry about keeping track of licenses when you are deploying it, you can customize the OS to do what you need, and nobody can force you to upgrade if you don't want to.
The stability argument is a myth. Linux is more stable than Win9x, but Win2K or XP with decent drivers is just as stable, at least for desktop use. I can crash my Linux machine just by starting Xawtv. I remember people were bitching about how a more stable version of Windows will kill Linux. Well, it's not stability that's the selling point.
Security through obscurity won't work for one simple reason: if the system is so obscure that hardly anyone can use it, it will be trivial to compromise to anyone who knows what he is doing. If you are worried about script kiddies, it's a workable solution. If you are worried about security, it's not secure unless you have regular 3rd party audits and stuff like that.
The FSF can't sue anyone unless you assigned your copyright to them or you stole code from their libraries. They just write the license, they aren't the copyright owner.
I agree: it is absolutely necessary to know the fundamentals of CS. My point was that not knowing some of the practical developments in the field can be even more dangerous, that many university CS programs do not give them enough attention, and that many CS students never learn those concepts properly.
Those "buzzwords" are based on several decades of experience building large software systems. Nobody would want to repeat those mistakes. Yet, they are routinely repeated. Look on SourceForge, and you will find plenty of code that is generally well-written but has major structural problems which make the application either unusable or unmaintainable. It also happens in the commercial world: for example, the original Netscape browser became completely unmaintainable around version 4. Netscape had to scrap it and rewrite it from scratch (now, it is known as Mozilla Firefox).
Goods aren't the only things purchased with credit cards. Many Internet services such as iTunes or dating websites have nothing to ship. Think of Amazon gift certificates.
...many desktops will have a card reader attached...
That's why credit cards have fraud protection. You call them up and reverse the charge.
They were saying that back in 1994. Hasn't happened yet.
A card reader currently costs US $25, which a bank can afford to provide to a customer for better security.
Banks exist to make money. They make money by having the customer use credit cards. This would discourage the use of credit cards, and you would no longer be able to order stuff over the phone or by mail or fax (which is still a significant percentage of orders). Not to mention that a truly secure card reader would cost a lot more than $25. $150 would be much more realistic. To be even somewhat secure, it would need to at least have a display and its own network connection, which adds quite a bit to the cost.
The burden of using a system should not be upto a vendor or a customer
Customers generally don't need to ship stuff to 20 different addresses, and it's not difficult to call your bank and have them add another authorized address. Most places will still ship to an alternate address, they will just call you first to confirm. Having to use special card reader hardware would be much more of a hassle.
The current system is incredibly stupid, because it doesn't verify a person. It merely identifies a person's card with a card number, and this identity can be adopted by anyone masquerading as that person.
Your system has exactly the same problem. There is no foolproof way to identify a person remotely. Plus, your system is now susceptible to spyware: put some software on the customer's machine to hijack the card reader and you can do what you want with the credit card. If anything, it's LESS secure.
I had a CC number stolen, and it was used to purchase software online, which was DOWNLOADED, not shipped, bypassing the mismatched shipping/billing address theory.
Call your credit card company. Say the charge was unauthorized. Get the charge reversed. Problem solved.
There are systems out there that prevent this problem much more easily. For instance, Citibank can generate single-use credit card numbers that expire in one month and are locked to a merchant. Much less hassle than dragging around card readers with you, and you still have the ability to order over the phone, for one.
I honestly don't care. You can't do anything with a credit card that can't be resolved with a call to the CC company. Most merchants don't have very good security anyway; I bet most of the smaller online shops store credit card info in a mysql database without any kind of security.
I certainly agree. However, a bigger problem is that most CS graduates have no clue about software engineering (stuff like OOP design, UML, patterns, and so on). If someone uses a bubblesort instead of quicksort or vice versa, it's pretty easy to fix (in most civilized languages, you just specify a different object from the standard library). Obviously, it can get hairy, but at least the bad parts are somewhat isolated. The nice thing is, you can often hire a few really smart CS guys to do the really hard bits and end up with a decent program.
A bad case of spaghetti code might not even _be_ fixable. In the first case, you end up with a program that's really slow but fixable. In the second, you end up with a program that kind of works, but is barely maintainable and degenerates rapidly as structural problems are found and worked around. Fixing it would require a complete re-write, which never happens. After about 20 releases, you might end up with something that does the job but is no longer maintainable.
I don't know, but it seems like having "Restaurant operations" experience right next to your "Master of Science, 2005" would be a negative. I would suggest starting out with something slightly more relevant. A blank resume looks slightly better than one with custodial jobs on it. I mean, why would you want to hire a part-time janitor with an MSCS degree into a senior development position?
Well, maybe you work for Microsoft or something, but commercial code generally needs to be pretty damn good. You don't want your program to crash or corrupt data, and you need it to do what the customer wants, when the customer wants it. If you write bad software, you will quickly run out of customers. That's unlike a lot of CS assignments, some of which place more priority on having the right preconditions and invariants than having well-structured code.
Computer science is certainly useful for software engineers (which is what 99% of non-academic positions require), but it's a bit like hiring people with an MS in physics to do electrical engineering. They will know all the theory really well but probably won't be able to do the job without some additional training. Unless you have some kind of external experience (open-source software, part-time programming position, co-op/internship experience), you probably won't be able to get anything other than an entry-level position.
The CEO does make a lot more than is average (about $20 million a year). But I hear the company is one of those very religious, stick-up-their-ass type. You don't want to work for them, that's for sure.
Themes are not separate. The program always outputs them (sometimes using shared libraries). A shared library is considered part of the program: for instance, you cannot legally link a non-GPL program to a GPL library. Also, if the themes are indeed GPL, you cannot legally include them in a book without obtaining separate permissions from the copyright holder (unless the book is also licensed as GPL).