This article seems as if the real complexity that is causing the problem was just too daunting to try to summarize in an article for the non-technical world, so they just quoted something off a website. What is the *real* problem? I have built and maintained systems based on exactly that combination of software without any issues... granted, the particular configuration, scope, and size is most assuredly different, but I doubt "Apache support being experimental" on windows is the beginning and end of this issue.
Of course you can build this stuff for a fraction of what it costs from a company that makes it. Any company that makes medical equipment has to be ISO certified, inspected, have major forms of insurance to cover rampant medical litigation, etc.
He can MAKE an endoscope for $1000, but how much would have to SELL it for, after he had all the necessesary insurance, certifications, and other forms of CYA?
I have no problem with a service colleting my demographic information, as long as I understand and agree on how they use it, without any bull crap like "Terms of service may change without notice".
Using my demographics to give me more ads for computers, sci-fi shows, and other things that match my interest is a better use of my time than commercials for Massingil's latest lemon-scented douche.
Using my demongraphic information to increase my car insurance rates, on the other hand, would not make me happy.
First off, Ruby on Rails is an excellent solution for publishing a database as a series of web pages, but it is not where you want to start teaching - that is a tool for a particular solution.
Ruby itself, on the other hand, is an excellent language to start with. So is Python. I don't think you could go wrong with either choice - better yet, teach boath over the course of a semester, solving the same excercises in either language. This will go a long way towards teaching the 'abstract skills' of programming, rather than the mechanics of any one language.
Java would work too, except teaching with Java immediately puts you at a disadvantage - just to get a class that can run, you have to deal with concepts like classes, access (the public keyword) , the static keyword, arrays (the args[] passed to main), etc. That is a lot of theory before you can get 'hello world' off the ground. Of course you can skip all that at first, but that givesx the students a suspicious feeling. Trust me, I've tried.
I hate it whenever I see a sentence that equates the cost of creating software to the cost of copying the software.
I am a software engineer. the piece of software I work on has 18 people working on it full-time to write it. THAT is the major cost. Duplicating it is a trivial expense. The cost of the people has to be amortized over all of the copies generated.
I contribute to open-source projects as well; I do that for a different motive than putting a roof over my head. Congratulations to those who can do that entirely with open source; for me, open source is like pro-bono work for a lawyer; I want to give back.
All that aside, you NEVER pay for the true COST of something, you pay for its true WORTH. The soft drink you are drinking right now has about $.06 worth of sugar water in it. I bet the can, transportation, and refrigeration cost more than the contents. I won't even try to calculate the cost for a $5 cup of coffee at Starbucks.
Science fiction isn't about the science... it is about telling human interest stories. Not that I think writers that paint themselves into a corner should fix it by 'reversing the polarity of the tachyon emitters', but come on... tell me a story worth reading - who cares if it involves FTL travel?
I should have finished watching it before I posted that. There are also reference to the original movie ("Arent you a little short for a stormstooper?"), as well as a fantastic prop reference to Pulp Fiction. Makes me wonder what references I'm missing cause I didn't see the original.
If Microsoft wasn't so arrogant / sufferring from 'not invented here' / needing to own every aspect of the OS so they can figure out new and innovative ways to exploit it once you rely on it, they could just include cygwin and a shell like bash.
Cygwin/bash is there, does everything people want out out of a shell, is under a license that would allow Microsoft to redistribute it, and Microsoft might get some positive points from the geek crowd.
These two comments make it sound as if 'patches' applied to software are somewhat analogous to those things your mother would iron on your clothes when your knee would bust through. They are nothing of the sort.
When a 'patch' is applied to software, it simply replaces what was there before and integrates seamlessly - think more 'weave' than patch... Imagine if you were writing a term paper with a group of people, and someone said 'hey... replace the 4th paragraph on page 5 with this new paragraph I'm sending you'. If you replaced the paragraphs, someone reading the paper later would have no idea the removed paragraph even existed, let alone that your paper had been 'patched'.
IT seems as if a lot of the comments in this thread are of a 'why bother' attitude, thinking that Microsoft will never adopt it. Well, the battle has just begun folks - there are still a LOT of ways this could play out...
1) All of the OTHER office programs now have a common format to use, and third parties have a standard 'input' for other processing - such as automatically making html, pdf, docbook, or some other format. With one well-documented standard, each tool can concentrate on doing one thing well.
2) Microsoft won't budge on this until they feel the heat from their customers - so people who care must start educating people. The more people who start asking for this format, the more pressure Microsoft will feel. The average joe isn't going to be able to put much pressure, but what if a big contract at the Department of Defense included a requirement that said, "All deliverables must be in OpenDocument format."? The companies bidding on that contract sure would care... And SAIC, Lockheed Martin, etc can put a LOT of pressure on Microsoft.
3) If Microsoft expressed any interest, it will initially be as a 'migration path away from all those inferior products', and they will read the format perfectly. They won't allow users to save in that format without the pressure I mention above, and even when they do, it will probably be buggy, and throw up so many 'Warning: You are saving your document in OpenDocument. That may cause you to lose page formatting' messages that users will have no faith in the OpenDocument format.
Don't give up the battle yet - the fun is just beginning!
My nikon camera (I own a D100 and a coolpix 5700) is my property, not nikon. If I want to take a little bit of driver code that they provide it, and debug it, fix it to work on 64 bit, or just audit it for security, I should be able to do so.
I would expect to be able to give that to other people who also own nikon cameras, given that their camera is also their property. Note that this code is pretty much useless to people who own other cameras, and companys like Canon know enough about things like white balance that they don't give a rip about nikon's code.
Nikon is in the business of selling cameras, not writing device drivers. If the drivers were freely available, and people could write new and interesting software based on it, this would HELP them sell cameras, not HURT them. For the same reason, Nestle gives away the tollhouse cookie recipe - they are in the business of selling chocolate chips.
First of all, disclaimer: I am the President of the Northern Virginia Java Users Group, and I am a big fan of Java.
You are doing UI Research... Chances are, you are going to want to do things 'outside the norm' for existing UI development. Which language has better support for this? Frankly, I don't know, because I don't know C#.
I do know Java. Java has AWT, Swing, SWT, JSP, Java Server Faces, etc. With Swing, you can easily switch between different 'look and feels', and has the 'pluggable look and feel' architecture (PLAF) so you can write your own. I don't know what kinds of abilities C# has in this area, but Java was designed with the idea to have chameleon look and feels. I would think that this would make it easier in Java to do the kinds of things you would want to do for UI Research.
Asking most slashdot readers to choose between Java and C# is like asking them if they would want to be bitten by a poisounous snake or crushed by a constricter. I bet most responses will say something like "Python with the QT libraries". That may be a valid answer as well.
This is a complex minefield I have been navigating for a couple of years. HEre is my understanding of it:
1) When we talk about EJB 3.0 in this context, we are really talking about Entity Beans. Entity Beans are currently crap - do not use them. Future versions of the spec are moving in a better direction though (see below). The Session Beans part of EJB 3.0 are very useful IF you need to services provided by the container (but that is outside this conversation).
2) JDO is a real thing, and it works really well IF you have an object-oriented domain model that you want to persist as transparently as possible. While not part of the J2EE spec, it doesn't have to be - it works inside the container just fine. (Th main reason it is not part of the spec is political - the EJB vendors didn't want to have to write yet another component). IF you have an existing database schema, your mileage may vary with JDO - it is up the the JDO vendor to so support mapping tools to existing schemas. JDO 2.0 is not revolutionary - it just takes the existing stuff a little further. IF you like this approach, I would also suggest you look at an OODBMS like Versant.
3) Hibernate ROCKS, especially if you are mapping an existing database to a bunch of objects. It does a lot more than that though - you can start from objects and either generate or map to a schema, start with a schema and generate objects, etc. There is a fundamental 'impedance mismatch' between relational and OO, as the first chapter of "Hibernate In Action" outlines better than any explanation I have seen. It isn't a 'standard', but so what? You use standards when you want to choose between different vendors... This is open source, which is another risk-mitigation strategy for the same problem. 'Ant' isn't a standard, yet I doubt you could show me more than a handful of projects that don't use it (or Maven, which uses Ant under the covers).
In short, there is no one choice. All have their plusses and minuses, and any can be used in a J2EE environment even if they aren't 'part of the spec'. Even JDBC might be a valid choice given a particular project's needs. The choice is going to depend a lot on the application.
Sun realizes there is confusion, and is trying to address it... unfortunately, the letter they wrote to 'the community' actually added more confusion to the mix.
The next version of Entity Beans is going to look a LOT like Hibernate, but will use the new JDK 5.0 concept of 'annotations' to help describe the relational mapping. This will ultimately mean Hibernate will be subsumed into JBoss as their Entity Bean implementation (which is why they are a part of JBoss).
Sun also wants to have a persistence mechanism that is usable outside of a J2EE container. Entity beans in their current form are not it. JDBC can do this, but it is does not facilitate thinking in terms of an 'object model'. JDO is this spec now, as is Hibernate, and hibernate is actually moving to be more EJB-Like. My crystal ball says that Hibernate and JDO will unite under some uber-api umbrella that allows a developer to use it like either api can be used today, and will be a spec that can be used in a J2EE container as well as outside.
Mapquest had this about 3 years ago... I had zoomed into my office and could actually identify my car in the parking lot. I have a great image of Washington D.C. from mapquest too, with the Washington Monument casting a shadow like a big sundial.
Regarding the catch-22, does being behind NAT provide enough of a security/obscurity layer to connect to the internet to get the patches? I know windows has all kinds of things on and listening by default, but with the machine behind NAT, your average script kiddie can't see it to even ping it, let alone get to those other services (provided my router running NAT hasn't been compromised...)
The model that creative commons is a great start... I'd like to see all the OSI licenses unified under a questionaire...
The questionaire should ask me a series of questions, like:
Do you want derivative works to be licensed under the same license?
Do you want commercial works to owe you royalties?
Do you want others to be able to redistribute your work?
Are others redistributing the work allowed to use the name of the original work?
And so on.
I should be able to answer each question "Yes", "No", or "I Don't Care", and at the end it should give me a list of licenses that meet my criteria, with a non-legalease paragraph descriving each, example works already under that licenses, and court rulings proving the validity of the license, if any.
With this approach, there wouldn't be much of a need to 'reduce' the number of licenses... in fact, the possible number of licenses relevant under the license would be a simple expansion of the number of 'yes/no' combinations of answers.
You don't think spyware has the potential to cause injury? Do you have any idea what kind of things people are stupid enough to let computers, running windows, connected to the internet do?
Power systems, security systems, medical information, percriptions, health care, financial, etc... Any and all of these things could be - hell.. HAVE BEEN - compromised thanks to these security problems.
How many people would be injured if Los Angeles' 911 call center were crippled due to problems with a handful of critical resources?
Second of all, serialization in Java is not as simple as just saying 'implements Serializable'... In some cases it can be this simple, but if you are doing anything with controlled object construction, such as singletons or the typesafe enum pattern, or if your objects hold onto things that don't make sense to be persisted (such as network connections, open files, etc), then you are going to have to do some special things.
Take a look at the ReadResolve and WriteReplace methods, the Externalizable interface, and for Gods sake, Read the relevant parts of the book 'Effective Java' by Josh Bloch before doing anything with serialization.
This article seems as if the real complexity that is causing the problem was just too daunting to try to summarize in an article for the non-technical world, so they just quoted something off a website. What is the *real* problem? I have built and maintained systems based on exactly that combination of software without any issues... granted, the particular configuration, scope, and size is most assuredly different, but I doubt "Apache support being experimental" on windows is the beginning and end of this issue.
For an understanding of why Linus has to do this, read this article at the Motley Fool (registration might be required)
e maker000501.htm
http://www.fool.com/portfolios/rulemaker/2000/rul
Of course you can build this stuff for a fraction of what it costs from a company that makes it. Any company that makes medical equipment has to be ISO certified, inspected, have major forms of insurance to cover rampant medical litigation, etc.
He can MAKE an endoscope for $1000, but how much would have to SELL it for, after he had all the necessesary insurance, certifications, and other forms of CYA?
82% of all statistics are made up on the spot, in an attempt to prove one's point.
I have no problem with a service colleting my demographic information, as long as I understand and agree on how they use it, without any bull crap like "Terms of service may change without notice".
Using my demographics to give me more ads for computers, sci-fi shows, and other things that match my interest is a better use of my time than commercials for Massingil's latest lemon-scented douche.
Using my demongraphic information to increase my car insurance rates, on the other hand, would not make me happy.
First off, Ruby on Rails is an excellent solution for publishing a database as a series of web pages, but it is not where you want to start teaching - that is a tool for a particular solution.
Ruby itself, on the other hand, is an excellent language to start with. So is Python. I don't think you could go wrong with either choice - better yet, teach boath over the course of a semester, solving the same excercises in either language. This will go a long way towards teaching the 'abstract skills' of programming, rather than the mechanics of any one language.
Java would work too, except teaching with Java immediately puts you at a disadvantage - just to get a class that can run, you have to deal with concepts like classes, access (the public keyword) , the static keyword, arrays (the args[] passed to main), etc. That is a lot of theory before you can get 'hello world' off the ground. Of course you can skip all that at first, but that givesx the students a suspicious feeling. Trust me, I've tried.
I hate it whenever I see a sentence that equates the cost of creating software to the cost of copying the software.
I am a software engineer. the piece of software I work on has 18 people working on it full-time to write it. THAT is the major cost. Duplicating it is a trivial expense. The cost of the people has to be amortized over all of the copies generated.
I contribute to open-source projects as well; I do that for a different motive than putting a roof over my head. Congratulations to those who can do that entirely with open source; for me, open source is like pro-bono work for a lawyer; I want to give back.
All that aside, you NEVER pay for the true COST of something, you pay for its true WORTH. The soft drink you are drinking right now has about $.06 worth of sugar water in it. I bet the can, transportation, and refrigeration cost more than the contents. I won't even try to calculate the cost for a $5 cup of coffee at Starbucks.
I have given up all hope of trying to predict this stuff afterlearning that ringtones... RINGTONES!!!! are a 3 BILLION+ industry per year.
Science fiction isn't about the science... it is about telling human interest stories. Not that I think writers that paint themselves into a corner should fix it by 'reversing the polarity of the tachyon emitters', but come on... tell me a story worth reading - who cares if it involves FTL travel?
I should have finished watching it before I posted that. There are also reference to the original movie ("Arent you a little short for a stormstooper?"), as well as a fantastic prop reference to Pulp Fiction. Makes me wonder what references I'm missing cause I didn't see the original.
Oh come on! this is worth watching just for the subtle reference to the Alien and Predator movies!
The animation is just fresking incredible. I cannot believe what kind of stuff is possible on consumer budgets these days.
If Microsoft wasn't so arrogant / sufferring from 'not invented here' / needing to own every aspect of the OS so they can figure out new and innovative ways to exploit it once you rely on it, they could just include cygwin and a shell like bash.
Cygwin/bash is there, does everything people want out out of a shell, is under a license that would allow Microsoft to redistribute it, and Microsoft might get some positive points from the geek crowd.
These two comments make it sound as if 'patches' applied to software are somewhat analogous to those things your mother would iron on your clothes when your knee would bust through. They are nothing of the sort.
When a 'patch' is applied to software, it simply replaces what was there before and integrates seamlessly - think more 'weave' than patch... Imagine if you were writing a term paper with a group of people, and someone said 'hey... replace the 4th paragraph on page 5 with this new paragraph I'm sending you'. If you replaced the paragraphs, someone reading the paper later would have no idea the removed paragraph even existed, let alone that your paper had been 'patched'.
If you write software, take a look at the book Pragmatic Project Automation (I think it was reviewed a few months ago here on /.)
It is geared a lot towards Java projects, but there are some philosophical nuggets there for any project.
IT seems as if a lot of the comments in this thread are of a 'why bother' attitude, thinking that Microsoft will never adopt it. Well, the battle has just begun folks - there are still a LOT of ways this could play out...
1) All of the OTHER office programs now have a common format to use, and third parties have a standard 'input' for other processing - such as automatically making html, pdf, docbook, or some other format. With one well-documented standard, each tool can concentrate on doing one thing well.
2) Microsoft won't budge on this until they feel the heat from their customers - so people who care must start educating people. The more people who start asking for this format, the more pressure Microsoft will feel. The average joe isn't going to be able to put much pressure, but what if a big contract at the Department of Defense included a requirement that said, "All deliverables must be in OpenDocument format."? The companies bidding on that contract sure would care... And SAIC, Lockheed Martin, etc can put a LOT of pressure on Microsoft.
3) If Microsoft expressed any interest, it will initially be as a 'migration path away from all those inferior products', and they will read the format perfectly. They won't allow users to save in that format without the pressure I mention above, and even when they do, it will probably be buggy, and throw up so many 'Warning: You are saving your document in OpenDocument. That may cause you to lose page formatting' messages that users will have no faith in the OpenDocument format.
Don't give up the battle yet - the fun is just beginning!
My nikon camera (I own a D100 and a coolpix 5700) is my property, not nikon. If I want to take a little bit of driver code that they provide it, and debug it, fix it to work on 64 bit, or just audit it for security, I should be able to do so.
I would expect to be able to give that to other people who also own nikon cameras, given that their camera is also their property. Note that this code is pretty much useless to people who own other cameras, and companys like Canon know enough about things like white balance that they don't give a rip about nikon's code.
Nikon is in the business of selling cameras, not writing device drivers. If the drivers were freely available, and people could write new and interesting software based on it, this would HELP them sell cameras, not HURT them. For the same reason, Nestle gives away the tollhouse cookie recipe - they are in the business of selling chocolate chips.
First of all, disclaimer: I am the President of the Northern Virginia Java Users Group, and I am a big fan of Java.
You are doing UI Research... Chances are, you are going to want to do things 'outside the norm' for existing UI development. Which language has better support for this? Frankly, I don't know, because I don't know C#.
I do know Java. Java has AWT, Swing, SWT, JSP, Java Server Faces, etc. With Swing, you can easily switch between different 'look and feels', and has the 'pluggable look and feel' architecture (PLAF) so you can write your own. I don't know what kinds of abilities C# has in this area, but Java was designed with the idea to have chameleon look and feels. I would think that this would make it easier in Java to do the kinds of things you would want to do for UI Research.
Asking most slashdot readers to choose between Java and C# is like asking them if they would want to be bitten by a poisounous snake or crushed by a constricter. I bet most responses will say something like "Python with the QT libraries". That may be a valid answer as well.
This is a complex minefield I have been navigating for a couple of years. HEre is my understanding of it:
1) When we talk about EJB 3.0 in this context, we are really talking about Entity Beans. Entity Beans are currently crap - do not use them. Future versions of the spec are moving in a better direction though (see below). The Session Beans part of EJB 3.0 are very useful IF you need to services provided by the container (but that is outside this conversation).
2) JDO is a real thing, and it works really well IF you have an object-oriented domain model that you want to persist as transparently as possible. While not part of the J2EE spec, it doesn't have to be - it works inside the container just fine. (Th main reason it is not part of the spec is political - the EJB vendors didn't want to have to write yet another component). IF you have an existing database schema, your mileage may vary with JDO - it is up the the JDO vendor to so support mapping tools to existing schemas. JDO 2.0 is not revolutionary - it just takes the existing stuff a little further. IF you like this approach, I would also suggest you look at an OODBMS like Versant.
3) Hibernate ROCKS, especially if you are mapping an existing database to a bunch of objects. It does a lot more than that though - you can start from objects and either generate or map to a schema, start with a schema and generate objects, etc. There is a fundamental 'impedance mismatch' between relational and OO, as the first chapter of "Hibernate In Action" outlines better than any explanation I have seen. It isn't a 'standard', but so what? You use standards when you want to choose between different vendors... This is open source, which is another risk-mitigation strategy for the same problem. 'Ant' isn't a standard, yet I doubt you could show me more than a handful of projects that don't use it (or Maven, which uses Ant under the covers).
In short, there is no one choice. All have their plusses and minuses, and any can be used in a J2EE environment even if they aren't 'part of the spec'. Even JDBC might be a valid choice given a particular project's needs. The choice is going to depend a lot on the application.
Sun realizes there is confusion, and is trying to address it... unfortunately, the letter they wrote to 'the community' actually added more confusion to the mix.
The next version of Entity Beans is going to look a LOT like Hibernate, but will use the new JDK 5.0 concept of 'annotations' to help describe the relational mapping. This will ultimately mean Hibernate will be subsumed into JBoss as their Entity Bean implementation (which is why they are a part of JBoss).
Sun also wants to have a persistence mechanism that is usable outside of a J2EE container. Entity beans in their current form are not it. JDBC can do this, but it is does not facilitate thinking in terms of an 'object model'. JDO is this spec now, as is Hibernate, and hibernate is actually moving to be more EJB-Like. My crystal ball says that Hibernate and JDO will unite under some uber-api umbrella that allows a developer to use it like either api can be used today, and will be a spec that can be used in a J2EE container as well as outside.
Mapquest had this about 3 years ago... I had zoomed into my office and could actually identify my car in the parking lot. I have a great image of Washington D.C. from mapquest too, with the Washington Monument casting a shadow like a big sundial.
you might as well ask 'is typing journalism?'. Some blogs will be journalism, some blogs won't. Journalism is more an activity than a venue for words.
Regarding the catch-22, does being behind NAT provide enough of a security/obscurity layer to connect to the internet to get the patches? I know windows has all kinds of things on and listening by default, but with the machine behind NAT, your average script kiddie can't see it to even ping it, let alone get to those other services (provided my router running NAT hasn't been compromised...)
What does 'Amazon' have to do with a bookstore?
What does 'Google' have to do with searching?
For that matter, what the heck does 'McDonalds' have to do with hamburgers?
I guess we should all live in a world of 'Pizza Huts' and 'bookstore.com's according to this theory.
The model that creative commons is a great start... I'd like to see all the OSI licenses unified under a questionaire...
The questionaire should ask me a series of questions, like:
Do you want derivative works to be licensed under the same license?
Do you want commercial works to owe you royalties?
Do you want others to be able to redistribute your work?
Are others redistributing the work allowed to use the name of the original work?
And so on.
I should be able to answer each question "Yes", "No", or "I Don't Care", and at the end it should give me a list of licenses that meet my criteria, with a non-legalease paragraph descriving each, example works already under that licenses, and court rulings proving the validity of the license, if any.
With this approach, there wouldn't be much of a need to 'reduce' the number of licenses... in fact, the possible number of licenses relevant under the license would be a simple expansion of the number of 'yes/no' combinations of answers.
-db
You don't think spyware has the potential to cause injury? Do you have any idea what kind of things people are stupid enough to let computers, running windows, connected to the internet do?
Power systems, security systems, medical information, percriptions, health care, financial, etc... Any and all of these things could be - hell.. HAVE BEEN - compromised thanks to these security problems.
How many people would be injured if Los Angeles' 911 call center were crippled due to problems with a handful of critical resources?
First of all, the guy is talking C++, not Java.
Second of all, serialization in Java is not as simple as just saying 'implements Serializable'... In some cases it can be this simple, but if you are doing anything with controlled object construction, such as singletons or the typesafe enum pattern, or if your objects hold onto things that don't make sense to be persisted (such as network connections, open files, etc), then you are going to have to do some special things.
Take a look at the ReadResolve and WriteReplace methods, the Externalizable interface, and for Gods sake, Read the relevant parts of the book 'Effective Java' by Josh Bloch before doing anything with serialization.