Most internal data centers go through system updates and "just in case" reboots over the weekend.
Even without the reboots, my experience has been that Sun hardware has far more failures of CPU cores and memory modules than IBM or HP. That's purely anecdotal evidence, but I've just had way too many encounters with flaky Sun hardware to consider them viable for a 5-9's environment.
Maybe their very biggest boxen are better, but I've yet to run into their top-tier hardware at any banks, telcos, or semi-private businesses. IBM's big boys have been pretty common (I still drool over the time I got to take over an 8-processor F-series for a couple weeks. That was some serious power to work with!) HP used to be pretty popular with some telecos, but I haven't seen any new HP hardware in years -- just crufty "still working" boxes that need software enhancements.
Point is that allowing a law firm to reap these kind of profits is obscene.
$48,000,000.00. Even at $150,000.00 per year for every single person at a 20-person firm handling the case, and presuming they work on nothing else at the same time is still only $3,000,000.00. Add in say $1,000,000.00 (ridiculous) filing fees and direct court costs.
That leaves $44,000,000 as "profit".
No other industry expects to reap a 1100% profit on a two year effort.
And if the odds of winning are so low, what were you thinking to advise clients to pursue the case?
I realize that the actual costs involved in suing a company like Microsoft can be astronomical, but for the legal firms in such a case to charge full rate for the entire effort is obscene. Their profit on such cases should be capped at something reasonable, like 5-20% of their actual costs (filing fees, supporting research, etc. and not the lawyer's time. Their time is what the percentage is to cover, not double-dipping as both an hourly employee and as a profit-sharing partner of the firm.)
Realistically if such limits were imposed across the board, 90% of the frivolous lawsuits in court would go away. It's the leeching lawyers who often advise their clients to continue, knowing full well that they're going to take the majority of the settlement as "legal costs".
Sorry, but if you're using system() to run subprograms, you need to seriously look at the exec() and fork() functions that let you provide the control you want. system() is for quick hacks, not production-grade or threaded code.
If you think using system/fork-exec to spawn a process is threading, take another look at the POSIX and DCE thread APIs. In neither case is system() or fork() the way that you spawn a thread, but the means of spawning a seperate process.
Who has a better implementation of pthreads than Linux or AIX? Sun's is their own thread interface that isn't 100% POSIX. HP-UX has historically used DCE threads (aka POSIX draft thread specs.) Win32 is completely incompatible.
So, pray tell, which is this grail of pthreads implementations that is perfect?
I think the higher-end MKS Toolkit packages also provide portability code, ala Cygwin. It's pricey, but if a PHB needs a corporation to provide support contracts it's a viable solution.
I've been beating my SuSE box mercilessly with software development, web servers, print serving, Oracle, Sybase, DB/2, and Postgres for about a year now. Absolutely no problems with any of the ReiserFS data partitions.
Ext3? No thanks -- it just doesn't strike me as a clean design. Maybe XFS on the next box, but not for any reason other than trying it out.
The main appeal 'net-related activities have for me is the need to think. You spend your time reading, thinking about opinions, actually exercising those little grey neurons.
TV is not interactive, and with the quality of most shows currently produced, it's boring. Often it steps over the line from merely boring to annoyingly bad production values.
Who wouldn't prefer an entertainment media that doesn't presume one is a drooling moron?
I have yet to see anything come out of SCO that convinces me they have a valid case. Show us the code, show us the code history, prove that you created it instead of pilfering it from an OSS archive somewhere.
Unless they prove their case, I have absolutely no intention of submitting to what feels like extortion.
I do as much formal QA as I'm required to by client sites. Sometimes that means unit and regression test frameworks, sometimes it just means making it "good enough" for daily use.
Regardless of the reasons for the formal QA, you won't find too many people who actually enjoy doing it. It's a necessary part of doing a good job, like documentation. But as with anything that requires tedious, painstaking detail, it's hardly something I want to do with my free time.
And there is the crux of it: my free time. I see no reason someone can't take a branch of a project and apply formal QA processes if they need or want to, but it's another thing to ask people to stop having fun programming, and treat their hobby as a job. It's not. It's relaxation. It's entertainment. It's a thought provoking challeng. It is not going through endless checklists of test cases to see if you broke something.
Confidence is knowing one has the skills and experience to accomplish a duty others consider difficult or impossible.
Pride is taking joy in one's accomplishments and skills.
Modesty is having the skills and experience, but not feeling they make one any better than others.
Arrogance is claiming to have the skills and experience, but not being able to back up the claim. Even worse are those who presume that the success of others "like them" makes them better people.
Of course the arrogant far outnumber the other groups...
While there is a lot you can do with windows scripting and/or batch files and the command line, it's not well documented if you need to go that route.
I prefer *nix systems for many reasons, but realistically I found most server-class systems have some sort of facility for reasonable scripting and automation. The problem is that every system is a little bit different for how you accomplish those goals, and Win32 makes it really really hard to get the information you need to do so.
Mainframe, VMS, *nix derivatives, and more esoteric beasts like Tandem all have the means to accomplish the goals the poster set out -- you just need to learn how.
Besides, if your user community is in such a damned hurry to get an account that they need to call you on the cell to do so, your client has far more resource management issues than being able to call in to add a user. Someone should be trained as your backup, if only because you could get hit by a bus. Requests should be properly planned and scheduled, not based on last minute phone calls -- rush jobs are more likely to have mistakes that could even compromise system security.
I support production applications that often take weeks of regression testing before a rollout. Application executables are statically linked so that if a patch is applied there is no possible way it can impact anything that has already passed QA.
No, you can't just drop in a replacement with static linking. But that's a problem you have with either your own source code and build management policies, or with the vendor that has provided you the application.
I prefer dynamic linking from a technical standpoint, but that is a far cry from demanding that anyone who uses my code has to use dynamic linking.
I provide code. I expect you to share your changes to that code with the community. I do not presume to have any right to tell you what compiler to use, what command line options to use, what OS to use, nor how that OS is going to allowed to link an executable.
If you provide a blueprint for a rec room (the code), and the builder uses that design for a house (compiling and linking), it's ridiculous to suggest that you could complain about whether the house in question was a multi-story building, or whether it had a brick or stucco exterior. Your design has not been "stolen", it's been used as intended -- as part of a whole.
Seems to me that forbidding static linking is impacting my freedom to use the code to resolve a technical issue, while the intent of the license is to protect that freedom.
My point is that it's my source code I want kept free and up to date.
I don't care if you use some of it, all of it, or none of it. I don't care what compiler you use, how you link the code, or what kind of applications you are building.
If print media comparisons are the problem, then software should be under a seperate set of laws. Software is not print media.
Source code is more like a blueprint or a recipie. It would be absurd for me to post a recipie for everyone to use, then complain about the way people were eating the food their chef produced. The chef's preparations are analagous to compiling the code, while linking is whether the consumer chooses to eat with their fingers, a knife and fork, chopsticks, etc.
My only legitimate cause for complaint is if they change the recipie, don't tell anyone what they changed, and either claim it as their own or fail to let others know it's not quite the same (don't publish changes.)
Static linking is a very common QA requirement for production applications. Trying to ban static linking is just plain ignorant, and there is no way you can convince me otherwise.
A minor modification would address the issue
on
LGPL is Viral for Java
·
· Score: 2, Insightful
As I understand it, the Java issue seems to be almost identical to the static linking problem.
While I label a lot of my code as LGPL, I have absolutely no problem with static linking the code. I don't see how a few linker options are relevant to licensing of source code.
This has always been a nitpick that has baffled me about the GPL and LGPL. Why does everyone have such an issue with static linking? Static linking doesn't change the code I release, and nor should the implementation of byte code loaders and Java runtimes.
People have demanded for a long time that Microsoft improve security and reliability. Adding AV to the OS certainly helps with that, at the price of hurting the existing providers.
The business of Microsoft "lock-in" with IE is nonsense. The only sites where I have troubles with Mozilla, Opera, or even older versions of Netscape is those run by Microsoft's own server products. I have yet to run into a website powered by Apache, Cold Fusion, Tomcat, J2EE implementations, or any of a hundred other products that serve up HTML streams.
Which sites are a problem? The occasional game site run by people who only review windows games. The occasional bank or other online provider, who usually fixes the problem within three months of realizing that people outside their company actually use other browsers, and are serious about taking their business elsewhere if it's not fixed.
I do think IE sucks at standards compliance, and that things would be a whole lot easier if everyone just follows standards. I think the courts should have pimp-slapped Microsoft from one coast to the other for their behavior over the years. But I'm not so naive as to think IE has been anywhere near as successful at locking out other players as Microsoft would like.
Kill off an original top-quality show like Farscape, and instead produce drek like Tremors, Battlestar Galactica, and those awful made-for-SciFi movies of theirs.
I'm starting to think they hate science fiction, and should be relabled as the "Schlocky Horror Channel".
The same people who would complain that they don't understand the terminology for making a purchase are the same one's with VCRs blinking 00:00. No matter how simple things are, there will always be people who convince themselves it's too hard and too complicated to learn.
The problem with your analogy to cars is that you know what features you want -- automatic/standard, A/C, power seats, etc. Essentially the Best Buy/Walmart/other chain buying experience, where you just ask a sales rep which models have the options you want.
Now go buy a Kenworth tractor, and see how well your knowledge helps. Those things are heavily customized for the type of load and travel the owner is planning to use it for, much as non-consumer computers have all the details about component providers included in their specs.
If you regularly defend your trademark, as Hormel has been doing, then it cannot be used in "unrelated" fields. If you choose not to defend your trademark because you don't feel it's an issue, it becomes much harder to defend the next time.
Sometimes companies will come to an agreement to "share" a trademark name and use other means of distinguishing their products (logo, font, color, etc.) The agreement between Apple computers and Apple records many years ago is a good example. (Though I wonder how that holds together now, as Apple computer is clearly into the music distribution now.)
The junior and intermediate developers need "best practices" as a guideline while they learn. The experienced developer knows when to step out of the "best practices" to get performance and features that are needed by the application.
Think of it as driving a car. Most people will never need nor experience the handling of performance car -- the "best practices" of a normal powertrain and suspension are all they need. That doesn't mean there aren't people out there who will make good use of the extra functionality and features.
Platform doesn't matter much. Linux, Win32, AIX, Solaris -- they've all got decent Java IDEs and JDKs.
Databases just need to be full-featured. Sybase, DB/2, Oracle, PostgreSQL -- I don't care as long as it's got a full feature set including sequencers, triggers, and stored procs (in that order of usefulness.)
Web servers are irrelevant to the back end development. The web server has hooks that redirect certain pages or page types to the "rich" environment of a J2EE or equivalent framework. Even Apache doesn't embed Tomcat, but cooperates with it to share the duties (let Apache do what it does best -- server up simple content, and let Tomcat/J2EE/JSP do what it does best -- serve up functionality with a corresponding performance hit.)
Multi-tiered applications still require database code, database locking, and data sharing. While the client does not have access to a cursor or "scrollable result set", those features are still used at the back end where the system interfaces to the persistant storage (RDBMS.) Caching them as an array is only viable if the data is stable during your application's execution (lookups), or if your application is the only one accessing the database.
I agree that using application code to implement locking or sequencers is a poor approach. If those features are required, use a real database that supports them. Butchering an application design to work around limitations of less-robust databases like MySQL is foolish when you can get the desired functionality for free with products like PostgreSQL or a commercial database. It will also save you a lot of coding and debug time, letting you focus on application functionality, not infrastructure features.
No, I have no intention of "repairing" it because it's only having trouble with the one disk. Aside from that, it's just a toy, not my main DVD player. It just happens to be the one I take on road trips, as it does more than play DVDs (and costs about 1/2 the price of my DVD player -- just in case it gets stolen from the hotel or otherwise lost/damaged.)
Most internal data centers go through system updates and "just in case" reboots over the weekend.
Even without the reboots, my experience has been that Sun hardware has far more failures of CPU cores and memory modules than IBM or HP. That's purely anecdotal evidence, but I've just had way too many encounters with flaky Sun hardware to consider them viable for a 5-9's environment.
Maybe their very biggest boxen are better, but I've yet to run into their top-tier hardware at any banks, telcos, or semi-private businesses. IBM's big boys have been pretty common (I still drool over the time I got to take over an 8-processor F-series for a couple weeks. That was some serious power to work with!) HP used to be pretty popular with some telecos, but I haven't seen any new HP hardware in years -- just crufty "still working" boxes that need software enhancements.
Oops -- math errors.
Staff costs: $6,000,000.00.
Filing costs: $1,000,000.00
Total expenses: $7,000,000.00
Profit: $41,000,000
So the profit ratio is "only" about 585%.
Point is that allowing a law firm to reap these kind of profits is obscene.
$48,000,000.00. Even at $150,000.00 per year for every single person at a 20-person firm handling the case, and presuming they work on nothing else at the same time is still only $3,000,000.00. Add in say $1,000,000.00 (ridiculous) filing fees and direct court costs.
That leaves $44,000,000 as "profit".
No other industry expects to reap a 1100% profit on a two year effort.
And if the odds of winning are so low, what were you thinking to advise clients to pursue the case?
I realize that the actual costs involved in suing a company like Microsoft can be astronomical, but for the legal firms in such a case to charge full rate for the entire effort is obscene. Their profit on such cases should be capped at something reasonable, like 5-20% of their actual costs (filing fees, supporting research, etc. and not the lawyer's time. Their time is what the percentage is to cover, not double-dipping as both an hourly employee and as a profit-sharing partner of the firm.)
Realistically if such limits were imposed across the board, 90% of the frivolous lawsuits in court would go away. It's the leeching lawyers who often advise their clients to continue, knowing full well that they're going to take the majority of the settlement as "legal costs".
Sorry, but if you're using system() to run subprograms, you need to seriously look at the exec() and fork() functions that let you provide the control you want. system() is for quick hacks, not production-grade or threaded code.
If you think using system/fork-exec to spawn a process is threading, take another look at the POSIX and DCE thread APIs. In neither case is system() or fork() the way that you spawn a thread, but the means of spawning a seperate process.
Who has a better implementation of pthreads than Linux or AIX? Sun's is their own thread interface that isn't 100% POSIX. HP-UX has historically used DCE threads (aka POSIX draft thread specs.) Win32 is completely incompatible.
So, pray tell, which is this grail of pthreads implementations that is perfect?
I think the higher-end MKS Toolkit packages also provide portability code, ala Cygwin. It's pricey, but if a PHB needs a corporation to provide support contracts it's a viable solution.
I've been beating my SuSE box mercilessly with software development, web servers, print serving, Oracle, Sybase, DB/2, and Postgres for about a year now. Absolutely no problems with any of the ReiserFS data partitions.
Ext3? No thanks -- it just doesn't strike me as a clean design. Maybe XFS on the next box, but not for any reason other than trying it out.
The main appeal 'net-related activities have for me is the need to think. You spend your time reading, thinking about opinions, actually exercising those little grey neurons.
TV is not interactive, and with the quality of most shows currently produced, it's boring. Often it steps over the line from merely boring to annoyingly bad production values.
Who wouldn't prefer an entertainment media that doesn't presume one is a drooling moron?
I have yet to see anything come out of SCO that convinces me they have a valid case. Show us the code, show us the code history, prove that you created it instead of pilfering it from an OSS archive somewhere.
Unless they prove their case, I have absolutely no intention of submitting to what feels like extortion.
I do as much formal QA as I'm required to by client sites. Sometimes that means unit and regression test frameworks, sometimes it just means making it "good enough" for daily use.
Regardless of the reasons for the formal QA, you won't find too many people who actually enjoy doing it. It's a necessary part of doing a good job, like documentation. But as with anything that requires tedious, painstaking detail, it's hardly something I want to do with my free time.
And there is the crux of it: my free time. I see no reason someone can't take a branch of a project and apply formal QA processes if they need or want to, but it's another thing to ask people to stop having fun programming, and treat their hobby as a job. It's not. It's relaxation. It's entertainment. It's a thought provoking challeng. It is not going through endless checklists of test cases to see if you broke something.
Confidence is knowing one has the skills and experience to accomplish a duty others consider difficult or impossible.
Pride is taking joy in one's accomplishments and skills.
Modesty is having the skills and experience, but not feeling they make one any better than others.
Arrogance is claiming to have the skills and experience, but not being able to back up the claim. Even worse are those who presume that the success of others "like them" makes them better people.
Of course the arrogant far outnumber the other groups...
It's just not a very good one.
While there is a lot you can do with windows scripting and/or batch files and the command line, it's not well documented if you need to go that route.
I prefer *nix systems for many reasons, but realistically I found most server-class systems have some sort of facility for reasonable scripting and automation. The problem is that every system is a little bit different for how you accomplish those goals, and Win32 makes it really really hard to get the information you need to do so.
Mainframe, VMS, *nix derivatives, and more esoteric beasts like Tandem all have the means to accomplish the goals the poster set out -- you just need to learn how.
Besides, if your user community is in such a damned hurry to get an account that they need to call you on the cell to do so, your client has far more resource management issues than being able to call in to add a user. Someone should be trained as your backup, if only because you could get hit by a bus. Requests should be properly planned and scheduled, not based on last minute phone calls -- rush jobs are more likely to have mistakes that could even compromise system security.
I support production applications that often take weeks of regression testing before a rollout. Application executables are statically linked so that if a patch is applied there is no possible way it can impact anything that has already passed QA.
No, you can't just drop in a replacement with static linking. But that's a problem you have with either your own source code and build management policies, or with the vendor that has provided you the application.
I prefer dynamic linking from a technical standpoint, but that is a far cry from demanding that anyone who uses my code has to use dynamic linking.
I provide code. I expect you to share your changes to that code with the community. I do not presume to have any right to tell you what compiler to use, what command line options to use, what OS to use, nor how that OS is going to allowed to link an executable.
If you provide a blueprint for a rec room (the code), and the builder uses that design for a house (compiling and linking), it's ridiculous to suggest that you could complain about whether the house in question was a multi-story building, or whether it had a brick or stucco exterior. Your design has not been "stolen", it's been used as intended -- as part of a whole.
Seems to me that forbidding static linking is impacting my freedom to use the code to resolve a technical issue, while the intent of the license is to protect that freedom.
My point is that it's my source code I want kept free and up to date.
I don't care if you use some of it, all of it, or none of it. I don't care what compiler you use, how you link the code, or what kind of applications you are building.
If print media comparisons are the problem, then software should be under a seperate set of laws. Software is not print media.
Source code is more like a blueprint or a recipie. It would be absurd for me to post a recipie for everyone to use, then complain about the way people were eating the food their chef produced. The chef's preparations are analagous to compiling the code, while linking is whether the consumer chooses to eat with their fingers, a knife and fork, chopsticks, etc.
My only legitimate cause for complaint is if they change the recipie, don't tell anyone what they changed, and either claim it as their own or fail to let others know it's not quite the same (don't publish changes.)
Static linking is a very common QA requirement for production applications. Trying to ban static linking is just plain ignorant, and there is no way you can convince me otherwise.
As I understand it, the Java issue seems to be almost identical to the static linking problem.
While I label a lot of my code as LGPL, I have absolutely no problem with static linking the code. I don't see how a few linker options are relevant to licensing of source code.
This has always been a nitpick that has baffled me about the GPL and LGPL. Why does everyone have such an issue with static linking? Static linking doesn't change the code I release, and nor should the implementation of byte code loaders and Java runtimes.
People have demanded for a long time that Microsoft improve security and reliability. Adding AV to the OS certainly helps with that, at the price of hurting the existing providers.
The business of Microsoft "lock-in" with IE is nonsense. The only sites where I have troubles with Mozilla, Opera, or even older versions of Netscape is those run by Microsoft's own server products. I have yet to run into a website powered by Apache, Cold Fusion, Tomcat, J2EE implementations, or any of a hundred other products that serve up HTML streams.
Which sites are a problem? The occasional game site run by people who only review windows games. The occasional bank or other online provider, who usually fixes the problem within three months of realizing that people outside their company actually use other browsers, and are serious about taking their business elsewhere if it's not fixed.
I do think IE sucks at standards compliance, and that things would be a whole lot easier if everyone just follows standards. I think the courts should have pimp-slapped Microsoft from one coast to the other for their behavior over the years. But I'm not so naive as to think IE has been anywhere near as successful at locking out other players as Microsoft would like.
Kill off an original top-quality show like Farscape, and instead produce drek like Tremors, Battlestar Galactica, and those awful made-for-SciFi movies of theirs.
I'm starting to think they hate science fiction, and should be relabled as the "Schlocky Horror Channel".
The same people who would complain that they don't understand the terminology for making a purchase are the same one's with VCRs blinking 00:00. No matter how simple things are, there will always be people who convince themselves it's too hard and too complicated to learn.
The problem with your analogy to cars is that you know what features you want -- automatic/standard, A/C, power seats, etc. Essentially the Best Buy/Walmart/other chain buying experience, where you just ask a sales rep which models have the options you want.
Now go buy a Kenworth tractor, and see how well your knowledge helps. Those things are heavily customized for the type of load and travel the owner is planning to use it for, much as non-consumer computers have all the details about component providers included in their specs.
Transaction commit and rollback are an integral part of databases. Without it, you've just got a keyed file structure, not a database.
I did, however, forget to mention integrity checking, which is even more useful than sequencers.
If you regularly defend your trademark, as Hormel has been doing, then it cannot be used in "unrelated" fields. If you choose not to defend your trademark because you don't feel it's an issue, it becomes much harder to defend the next time.
Sometimes companies will come to an agreement to "share" a trademark name and use other means of distinguishing their products (logo, font, color, etc.) The agreement between Apple computers and Apple records many years ago is a good example. (Though I wonder how that holds together now, as Apple computer is clearly into the music distribution now.)
The junior and intermediate developers need "best practices" as a guideline while they learn. The experienced developer knows when to step out of the "best practices" to get performance and features that are needed by the application.
Think of it as driving a car. Most people will never need nor experience the handling of performance car -- the "best practices" of a normal powertrain and suspension are all they need. That doesn't mean there aren't people out there who will make good use of the extra functionality and features.
Platform doesn't matter much. Linux, Win32, AIX, Solaris -- they've all got decent Java IDEs and JDKs.
Databases just need to be full-featured. Sybase, DB/2, Oracle, PostgreSQL -- I don't care as long as it's got a full feature set including sequencers, triggers, and stored procs (in that order of usefulness.)
Web servers are irrelevant to the back end development. The web server has hooks that redirect certain pages or page types to the "rich" environment of a J2EE or equivalent framework. Even Apache doesn't embed Tomcat, but cooperates with it to share the duties (let Apache do what it does best -- server up simple content, and let Tomcat/J2EE/JSP do what it does best -- serve up functionality with a corresponding performance hit.)
Multi-tiered applications still require database code, database locking, and data sharing. While the client does not have access to a cursor or "scrollable result set", those features are still used at the back end where the system interfaces to the persistant storage (RDBMS.) Caching them as an array is only viable if the data is stable during your application's execution (lookups), or if your application is the only one accessing the database.
I agree that using application code to implement locking or sequencers is a poor approach. If those features are required, use a real database that supports them. Butchering an application design to work around limitations of less-robust databases like MySQL is foolish when you can get the desired functionality for free with products like PostgreSQL or a commercial database. It will also save you a lot of coding and debug time, letting you focus on application functionality, not infrastructure features.
No, I have no intention of "repairing" it because it's only having trouble with the one disk. Aside from that, it's just a toy, not my main DVD player. It just happens to be the one I take on road trips, as it does more than play DVDs (and costs about 1/2 the price of my DVD player -- just in case it gets stolen from the hotel or otherwise lost/damaged.)