OK, I'm going to give this post one and only one follow-up, after that tear me to shreds at your leisure.
I'm going to deal with the drug issue first:
- Firstly: please try to be imaginative, here's a way to try to frame this experiment: Imaging a world without printed or minted money,credit cards, or any type of wealth proxy. I am not proposing this, I am simply trying to get to to engage the exercise. If you could IMAGINE such a world then you could probably IMAGINE a world without patents. If you cannot, then feel free to ignore my post.
-Secondly: In response to the "where would the money come from?" types of questions: I'm going to first answer this by general principle then I will try to offer a possibility (that will be shot down in flames, I agree, but at least I'm TRYING to be IMAGINATIVE, what the ACTUAL solution would be I probably cannot predict).
The economy is like any Eco system in that vacuums get filled. The vacuum would be the empty space in the economy from the collapse of the "intellectual property" hoarders known as pharmaceutical companies of TODAY. By removing the patent system as a crutch for modern business would not eliminate the demand for the products produced by these companies only the means that they employ to make their money.
I never said, and will never say, that the elimination of the patent system will preserve things as they are, they won't, they can't. Personally I would like to shake things up, hence the proposition.
What would emerge in the new environment would be new ways to get the drugs developed. Does that mean that every chemist currently employed by pharmaceutical companies would transition into this (what ever it is) new way? No, certainly not. But because the demand would still exist for health drugs the demand will be filled, that is almost a certainty.
There will be a new breed of business person capable to being profitable in such an environment. The nice thing is without patents (legal short-term monopolies) there will likely be many such persons.
So here's a W.A.G. about how this could be done:
Let's start with the sellers of drugs: I could envision a collaborative effort on the part of drug sellers (pharmacies) to contribute some amount of monies (dues) to a fund that underwrites the development of new products for them to sell. A portion of the monies go to existing research projects at universities and a portion goes to independent researchers in the form of grants. When promising drugs emerge a portion of the pool funding would go to "bringing the product to market" meaning two things:
1. Funding the clinical trials portion of the research. 2. the development of cost-effective/high quality and large-scale production of the drug.
Now there are questions about how this pool gets administered: Since ultimately the general populace would be the consumer I would suggest regional boards of elected folks for that would manage the allocation of grants. Elected I mean elected by the general population. With term-limits subject to external audits, etc.
This vision is incomplete, in this response only, but I do have more pieces of the puzzle filled in.
The basic principle is this: we can actually live, yes I do mean live, even thrive in a world without patent protection. But is requires political will and an understanding that it can, in fact, work.
>>OK, onto "Bullpuckey"
One anecdote don't a trend make. Yes, I know a few people with "personal" patents as well, but such evidence is trivial. The vast majority of patent holding is with corporate entities and holding companies.
>>RE: "Trade secrets" they go as well. Open up everything. Complete transparency. I prefer to know thins than not to know them. I would argue that in a world where you can not sue because of "trade secret" or "patent infringement" is a world where we know more in general.
>> "Patents were instituted just before the start of the industrial revolutio
Really, I mean this as an honest-to-goodness suggestion, not as flaimbait. Of course it will never happen, but spend a few minutes thinking about it, for a real SANITY check.
For starters: The patent system was supposed to originally protect the individual inventor. Those days are LONG past!
Anyone who thinks that the lack of a patent system would mean no more viable businesses is simply not applying their imagination. It would truly create an even playing field. YES businesses would need to change, but that does not mean that there would be no more drugs, or software, or whatever your version of "the sky would fall" is. All of these things would continue but the WAY they would continue would be completely different. For me I would like access to practically free prescription drugs.
Unfortunately, most who read this "crazy idea" will not "get it", but I'm putting it out there anyway.
- I do not support DRM under any circumstances - I will not buy or use DRM enabled devices - I use Linux to watch DVDs because I can watch DVDs from anywhere. - I teach my kids about the evils of thought rights elimination: Patents, DMCA, DRM and to a lesser extent copyrights not about how their life will be bettered with laws and a technocracy that seems to think all new ways to take choice away from people is a good thing (TM) - I, as in ME, will retain the final say about how/where I will use "digital content" (they're only FILES after all!) not my computer or my OS vendor.
Ok, let's get this straight: the RIAA/MPAA is a front organization designed to represent a particular set of businesses. These businesses make their money by selling access to controlled copies of stuff RIAA->music/CDs/etc. and MPAA->Movies/DVDs/etc. Their sole purpose is to defend a business model. Of course this business model flows money back (to varying degrees) to the actual talented individuals who made the stuff we wanted to buy in the first place.
Pirating exists because this existing business model does not play well with today's available technology and distribution channels.
Now, in olden days(TM) this situation would just be called "competition" (RIAA/MPAA and the companies they represent vs. modern technology) and companies would have to rise to meet the challenge or die. But today this is just an opportunity for one side (the DRM cartel) to buy the law to preserve their way of life.
I say "let them die". Don't buy their CDs or watch their movies. Listen/watch stuff from artists who are learning to adapt to the new realities and PAY THEM DIRECTLY!
You might say: "But this way of doing things will never result in the making of '[Some big budget film]' because the economics wont work." To this I say: "The business models to make '[Some big budget film]' will eventually come about because there is a market for it. But if you think that the only way to that end is the preservation of a rights-strangling cartel, then so be it: feel free to give up your rights, they have an unquenchable thirst for your rights. They will just buy more laws and more governments until you have no rights at all. They won't even have to advertise anymore, you'll be compelled to buy products because they say so (ok, I'm off the deep end here). But I'll keep working with artists businesses that are adapting and providing what I want on MY terms."
Certainly my list does lean that way. But I think that it is somewhat fitting since much of the innovation is related to bootstrapping the whole FOSS movement. Once there was a sufficient base (toolsets, environments, etc.) then non-developer oriented efforts started like Gnome, KDE, Enlightenment, etc could take off. As far as non-developer tools we are still in the early phases to really criticize. I understand that the general opinion is that FOSS is just copying Windows/Mac/Whatever, but it is a mistake to take this point of view, IMHO. All of the desktop enviroments that run under Linux are not reverse engineered at all. Sure they take ideas from commercial non-FOSS desktops, but why not? As Andy Herzfeld once said while Developing Eazel (which was another innovation, before Red Carpet, and certainly before Windows Update) "Linux UI developers just want their stuff to be useable".
It's still early in the game for Linux desktop stuff, but already I vastly prefer KDE to XP and even the Mac (despite the amazingly sexy UI). The pace of development in the Linux Desktop space means that it is only a matter of time before they overtake the "innovation" pace of non-FOSS. Patience will be rewarded.
- Bittorrent - Struts (mayby not a great example) - Ruby - Perl - Postgres - Sourceforge, Freshmeat, CPAN, RubyForge (like uh, where are the commercial examples?) - Linux kernel build system (Microsoft so copy-catted this thing for WinCE, but it is still inferior in nearly every way) - automake/autoconf/libtool - Emacs (yeah Emacs, think back now when this thing came on the scene there was nothing like it) - GCC (Didn't reverse engineer anything, but a common compiler build environemnt was unheard of when this project started out) - ICU - Uh, like "The Web", think about it. - CGI - TeX/LaTeX - MajorDomo - OpenMosix
Even-handed comment: Mr. Grimes' criticism of.NET, is consistent with my experience with the framework. Although there are many positives about.NET, mainly its attempt to both re-do Java and begin the proper burial of COM, it does have a number of short-comings that are consistent with the idea that much of the framework was contrived without sufficient INTELLIGENT thought put into it.
Accurate comment:.NET has a number of short-comings that make it only tolerable to work with if and only if I'm being paid to do so:
ASP.NET: At first seems sexy, but after MANY years of use has proven itself to be broken and worthless. Viewstate: broken, Server-side event model: cool idea, but wrongly implemented in ASP.NET.
Windows.NET and ASP.NET: Yet another attempt to graft the "minds of VB" onto the programmer. When is M$ going to get it that building serious applications from a UI-centric point-of-view is wrong-headed in the extreme.
CLR: Again another attempt to enslave the programming world to the VB zombie army.
I've personally found that programming and parenthood it VERY difficult to balance:
- Every place I've worked, both big and small, impose unhealthy expectations of developers.
- As a community we are often our own worst enemies because we often "volunteer" extra time by staying late on our own, especially when single and not yet with children. The pattern of behavior is easy to understand: usually we're young, eager to learn and produce, but it then sets the bar very high regarding what kind of commitment a developer is supposed to have towards work.
A few of things to keep in mind:
- It's only a job, if you love programming, then they cannot take that away from you. Save your fun programming for yourself. - It's only a job (yes, I said it twice), if your current employer is a prick regarding expected commitment, leave. I really mean it: leave. A-holes who expect gratis death-march labor without giving back in a big and meaningful way deserve to be put out of business. Period. - As far as is scientifically known this is your ONLY LIFE. The extra time you put into work and not spending time with your loved-ones WILL NOT COME BACK! Always keep this in the forefront of your mind. - Stand your ground: DON'T do weekends, DON'T do extra hours. Even if you get paid hourly, this financial situation is no license to assume that all of your free time is up for sale. Commit extra time, but place limits. If found that if you behave as if your time is valuable people will respect that. If they don't: leave. - Whining a-holes that are in a situation where they can "freely" donate ridiculous quantities of their "free" time that bitch about "Paul Parenthood" going home without "finishing their work" can talk to the hand. Grow up: until science provides (scary) alternatives to continuing our species though procreation we are responsible for RAISING OUR CHILDREN. You are someone's child, think from the child's point of view does this make sense: "Ok Daddy/Mommy stay at work late or on the weekends because the 'project's gotta get done' and you don't want all the shit to flow to the D.I.N.Ks. and singles, besides, why would you want to spend time with me?" The first time one of you mal-adjusted idiots complain to me about folks going home after business hours are over will find your sorry asses on the unemployment line. Seek professional help. - If your managing programmers (and I did this OFTEN as a engineering director) CHASE PEOPLE OUT OF THE OFFICE. You won't have whiny a-holes because you make it clear that your EMPLOYEES are there for REGULAR BUSINESS HOURS. IF you REGULARLY expected people to put in long hours than PAY THEM HOURLY! I'll say it again PAY THEM HOURLY!!! It is the ONLY ETHICAL THING TO DO. Any argument to the contrary is self-serving rationalization.
Conclusion:
Personally, get out of the software business. DON'T stop coding if that is your calling, just code for yourself and others. Spread the fruits of you labor.
If you only went into programming as a job, then continue because you don't really care, but there are better ways to make a living.
In general, RMS's position with regard to "free software" (as in freedom) is RARELY off-target. This is because his motivations are simply an outcome of the reasoning that code, like any other form of expression, is crystallized thought, and as thought should be cherished and spread to as many as possible to share it's benefits (and, in some cases, drawbacks). The GPL is one tool that helps ensure the spread of thought in code form. It truly is a disease to think that thought products (affectionately known as "intellectual property") can truly be contained. So why not embrace the fact that we as human beings are tremendously adept at copying, processing and synthesizing thought products.
The other tool at his disposal is a relentless pursuit of the goal that all software should be "free" (again, as in freedom). Software that is not free is always suspect: the "owner" that reserves rights to restrict others in their ability to utilize "their" software is prone to an "absolute power" syndrome. Their intentions may start out noble, but that can change at any moment. Sad to say, but it appears the Mr. McVoy may be on the verge of this. I remember reading the mailing-list archives when this first blew up. Mr. McVoy really has drawn a mental line in the sand that he's not willing to cross. It is unclear if he has the strength of character to let go of his "closed-source" ways. It would really be nice if he did.
Unfortunately, in pursuit of his "free" software goal RMS is likely to piss people off, hence the established rancor at him. Fortunately, RMS has the resolve to see past this and move on. It will be a rocky road to enlightenment for most (it certainly is for me, and I can't even begin to claim any form of enlightenment), but it certainly is liberating.
A replacement for BitKeeper should be developed post-haste, subversion looks promising, but needs many features to completely replace BK. I personally use subversion in my own projects and found it to be quite workable.
Food for though (pun intended): Are your thoughts yours? Do you own your thoughts? If so, how do you exert thought ownership rights? If you never existed would your thoughts exist in others? Now, granted, there clearly are expressions of my thought process that others recognize as "me", but at work, if others were confronted with the problems you work to solve every day what is the likely-hood that others would produce the same or similar solutions as yours? I find it amazing looking at all of the various Web site building technologies out there built by many others how similar many of their solutions are to the ones I produce. The evidence that elements of "my" thoughts are going on in other people's heads oh so clearly demonstrates the fact that "intellectual property" are hollow words. Pursuing the task of squirreling away your thoughts and jealously guarding them is the labor of sick-minded people. Even writing what I writing now is not new. Most of you have read "drivel" like this before, but it is still worth mentioning. Just think about it.
It can be done, with some hard work...
on
Can .NET Really Scale?
·
· Score: 2, Informative
First of all, let me start out by saying that under certain circumstances YES.NET-based web applications CAN scale to 100+ concurrent connections on the relatively limited hardware you speak of.
In order to do this you WILL (here's where I get flamed, but frankly, I don't care) need to examine and deal with the following:
1. How database intensive is your application? Despite claims by the DB suppliers RDBMS packages are slow.
Every query, even trivial ones like:
SELECT 0 as foo from bar
will require milliseconds to execute AT BEST. This is because you need to serialize the SQL request from your "middle-ware" (in this case the ASP.NET runtime instance) place this request into a inter-process communication channel (say a network buffer) then block. The network stack has to sent it over the wire, a thread on the SQL server machine has to be woken up to process the incoming query. The query has to be parsed, then executed. The results must follow the reverse route eventually waking up the blocked thread on the "client" (the machine running the ASP.NET runtime that initiated the call in the first place) parse the result set and present that result set to the rest of the application (via a "reader" object). At best this process is on the order of milliseconds per request. If you can get away with cleverly caching data in the application server then this task that originally took milliseconds now gets done in microseconds. Bottom line: eliminate calls to the database where ever you can. There is a down-side to this: more build time costs more money. Plus your code gets more complex. Evaluate the trade-offs. IF caching pays-off in your application it's a lot cheaper to add more application server boxes than it is to pay the crazy expensive prices to beef-up SQL server.
2. Multiple network cards per machine. When you did your benchmarking how much resource usage was there? On the machine running the Web application when you reached max transaction rate was the CPU at 100% If not you may be encountering either a network or DB bottleneck. Look at the DB was it maxing out (CPU + DISK), if so you need to focus your attention there, i.e..NET is not the bottle-neck the DB is (which is USUALLY the case). If the DB machine was able to handle more load then you may be encountering a network bottleneck. Try adding more network cards to the application server and the DB server. Connect multiple times to the DB server. Allocate a network stack per CPU on the DB server if you have multiple CPUs (there is stuff in Microsoft's knowledge-base about how to do this). Do the same thing on the Application server. Make sure that under maximum transaction load that both the application server and the DB is maxed out, at least this way you know you are squeezing the maximum throughput out of your machines.
3. Avoid using Web services "inside" your application. You may be using Web services to retrieve data from within your application code. Web services have a lot of friggin' overhead and are not particularly speedy. If you have to use Web services, then also try caching if you can. Any time you application has to wait for some other process (perhaps on a different machine) you will be incurring a big time penalty.
4. Where possible try to static-ify you output. This really is just another kind of caching. Many Web sites (including Slashdot) use this technique. It's particularly useful for news type sites. Write the output of your processing to the hard disk the first time it's requested then re-use this pre-generated file for subsequent requests. Update on a time-basis.
5. Yes, I'm going to say it: look at your DB schema and see if you have opportunities to de-normalize data to simplify queries. Joins are expensive, and query optimizers often don't do a great job. This approach can't always be used, but it can improve query performance orders of magnitude. What you may want to do is keep a really nice normali
I'm also working on this exact same project. I'm planning to start a major remodeling job on my house starting this fall. Many of the things you are looking to do I'm also trying to accomplish. Here's the general outline of my plans:
Bedrooms: I'm only running Cat5. Each room will have a custom built PC with a decent sound card and speakers. These machine are for the kids to watch videos, do homework, play games, listen to music, etc. Each of these machine will boot into some sort of GNU/Linux (right now the plan is Gentoo) as the primary OS. Unfortunately, they will also have a Win2K boot option for playing games. Util WineX/Transgamign goes GPL or many more games (thank you BioWare for NWN) go native Linux, I'm afraid that Win2K will remain in my, and my kids life.
Den, Kitchen, dining room, backyard patio: A pair of decent speakers mounted to the wall with the speaker cables neatly tucked away out of sight.
Family room: I plan on building a custom home theater PC running GNU/Linux that will be used as a PVR, TV, CD player, DVD Player, CD Ripper, DVD Ripper. Also attached will be a VHS for the older tapes. This machine will be hooked up to a nice 5.1 (or better) speaker system. These speakers will be "switchable" to also play "piped-in" music as well.
I have several "scenarios" that I want my A/V system to support:
1.Party: In this scenario, I would like to "program" all of the speakers in the Den, Kitchen, dining room, backyard patio, and family room (which will all be on the first for (except the backyard patio;-) ) to play the same music. I will need to be able to adjust the volume levels independently in each room, as well as needing an easy way to "mute" a room or all of the music in all of the rooms, FROM ANY ROOM. 2.Clusters of people doing stuff: I can see myself cooking dinner, in the kitchen, while one of my kids is playing with a friend in the living room. I would like to listen to my own music in the kitchen while my kids either watch videos (on the HTPC) or listening to "piped" music, radio, or Internet radio from a "audio server". The other rooms are "silent". In other words I can deliver independent audio to individual rooms. (By Internet radio I mean consumer Internet radio as well as shout/icecast)
I'm looking for an integrated/elegant solution. I would like an audio server in the basement that can be remotely controlled from each room that play music from an audio library of OGG files, Internet radio sources or radio tuner cards in any combination.
(I also plan to have a video server, actually a simple file server, with backed-up DVD images to act as a video server (thank you dvdbackup))
I don't want desktops or laptop scattered around the house actually doing the "audio work". I'm figuring that any PC on my home network can create/manipulate audio playlists that can be played in all rooms or an arbitrary subset. I will need to develop an "integrated remote control" system. I'm thinking of small, embedded, computers with an integrated LCD touch screen and networking that I will mount in the wall in each room on the first floor, as well as on the back of the house. These computers would provide a touch screen interface for controlling the audio in that room (with the option to control audio in other rooms or throughout the house). The controls would include volume levels, muting, playlist control, and the ability to choose from Internet or broadcast radio sources. In the family room it must also be possible to "switch" the speakers from the "piped" audio to the HTPC. When these wall mounted computers are inactive they would display the date/time and weather (or something).
I have also considered PDAs with 802.11 but I like the fixed solution from a clutter/aesthetics point-of-view. Also, PDAs like remotes will take a lot of abuse and tend to get lost. On the other hand, I have not ruled out the PDA solution yet.
Ok, now you know what I'm looking to do, here's where I'm at:
How about just plain ol' NO DRM!
on
"Squishy" DRM?
·
· Score: 1
How about the mo-fos just stop looking at every friggin' customer as a pirate and back off! DRM ain't going to stop the real pirates anyway. DRM in any form is just going to hurt the average consumer.
By the way I have a completely OGG format digital music library composed ENTIRELY of music I purchased on CDs (backup media). Why the hell is M$, RIAA, MPAA, and others interested in hurting guys like me? bastards...
OK, I'm going to give this post one and only one follow-up, after that tear me to shreds at your leisure.
I'm going to deal with the drug issue first:
- Firstly: please try to be imaginative, here's a way to try to frame this experiment: Imaging a world without printed or minted money,credit cards, or any type of wealth proxy. I am not proposing this, I am simply trying to get to to engage the exercise. If you could IMAGINE such a world then you could probably IMAGINE a world without patents. If you cannot, then feel free to ignore my post.
-Secondly: In response to the "where would the money come from?" types of questions: I'm going to first answer this by general principle then I will try to offer a possibility (that will be shot down in flames, I agree, but at least I'm TRYING to be IMAGINATIVE, what the ACTUAL solution would be I probably cannot predict).
The economy is like any Eco system in that vacuums get filled. The vacuum would be the empty space in the economy from the collapse of the "intellectual property" hoarders known as pharmaceutical companies of TODAY. By removing the patent system as a crutch for modern business would not eliminate the demand for the products produced by these companies only the means that they employ to make their money.
I never said, and will never say, that the elimination of the patent system will preserve things as they are, they won't, they can't. Personally I would like to shake things up, hence the proposition.
What would emerge in the new environment would be new ways to get the drugs developed. Does that mean that every chemist currently employed by pharmaceutical companies would transition into this (what ever it is) new way? No, certainly not. But because the demand would still exist for health drugs the demand will be filled, that is almost a certainty.
There will be a new breed of business person capable to being profitable in such an environment. The nice thing is without patents (legal short-term monopolies) there will likely be many such persons.
So here's a W.A.G. about how this could be done:
Let's start with the sellers of drugs: I could envision a collaborative effort on the part of drug sellers (pharmacies) to contribute some amount of monies (dues) to a fund that underwrites the development of new products for them to sell. A portion of the monies go to existing research projects at universities and a portion goes to independent researchers in the form of grants. When promising drugs emerge a portion of the pool funding would go to "bringing the product to market" meaning two things:
1. Funding the clinical trials portion of the research.
2. the development of cost-effective/high quality and large-scale production of the drug.
Now there are questions about how this pool gets administered: Since ultimately the general populace would be the consumer I would suggest regional boards of elected folks for that would manage the allocation of grants. Elected I mean elected by the general population. With term-limits subject to external audits, etc.
This vision is incomplete, in this response only, but I do have more pieces of the puzzle filled in.
The basic principle is this: we can actually live, yes I do mean live, even thrive in a world without patent protection. But is requires political will and an understanding that it can, in fact, work.
>>OK, onto "Bullpuckey"
One anecdote don't a trend make. Yes, I know a few people with "personal" patents as well, but such evidence is trivial. The vast majority of patent holding is with corporate entities and holding companies.
>>RE: "Trade secrets" they go as well. Open up everything. Complete transparency. I prefer to know thins than not to know them. I would argue that in a world where you can not sue because of "trade secret" or "patent infringement" is a world where we know more in general.
>> "Patents were instituted just before the start of the industrial revolutio
Really, I mean this as an honest-to-goodness suggestion, not as flaimbait. Of course it will never happen, but spend a few minutes thinking about it, for a real SANITY check.
For starters: The patent system was supposed to originally protect the individual inventor. Those days are LONG past!
Anyone who thinks that the lack of a patent system would mean no more viable businesses is simply not applying their imagination. It would truly create an even playing field. YES businesses would need to change, but that does not mean that there would be no more drugs, or software, or whatever your version of "the sky would fall" is. All of these things would continue but the WAY they would continue would be completely different. For me I would like access to practically free prescription drugs.
Unfortunately, most who read this "crazy idea" will not "get it", but I'm putting it out there anyway.
Where HRE == Human Rights Enablement.
- I do not support DRM under any circumstances
- I will not buy or use DRM enabled devices
- I use Linux to watch DVDs because I can watch DVDs from anywhere.
- I teach my kids about the evils of thought rights elimination: Patents, DMCA, DRM and to a lesser extent copyrights not about how their life will be bettered with laws and a technocracy that seems to think all new ways to take choice away from people is a good thing (TM)
- I, as in ME, will retain the final say about how/where I will use "digital content" (they're only FILES after all!) not my computer or my OS vendor.
Ok, let's get this straight: the RIAA/MPAA is a front organization designed to represent a particular set of businesses. These businesses make their money by selling access to controlled copies of stuff RIAA->music/CDs/etc. and MPAA->Movies/DVDs/etc. Their sole purpose is to defend a business model. Of course this business model flows money back (to varying degrees) to the actual talented individuals who made the stuff we wanted to buy in the first place.
Pirating exists because this existing business model does not play well with today's available technology and distribution channels.
Now, in olden days(TM) this situation would just be called "competition" (RIAA/MPAA and the companies they represent vs. modern technology) and companies would have to rise to meet the challenge or die. But today this is just an opportunity for one side (the DRM cartel) to buy the law to preserve their way of life.
I say "let them die". Don't buy their CDs or watch their movies. Listen/watch stuff from artists who are learning to adapt to the new realities and PAY THEM DIRECTLY!
You might say: "But this way of doing things will never result in the making of '[Some big budget film]' because the economics wont work."
To this I say: "The business models to make '[Some big budget film]' will eventually come about because there is a market for it. But if you think that the only way to that end is the preservation of a rights-strangling cartel, then so be it: feel free to give up your rights, they have an unquenchable thirst for your rights. They will just buy more laws and more governments until you have no rights at all. They won't even have to advertise anymore, you'll be compelled to buy products because they say so (ok, I'm off the deep end here). But I'll keep working with artists businesses that are adapting and providing what I want on MY terms."
Certainly my list does lean that way. But I think that it is somewhat fitting since much of the innovation is related to bootstrapping the whole FOSS movement. Once there was a sufficient base (toolsets, environments, etc.) then non-developer oriented efforts started like Gnome, KDE, Enlightenment, etc could take off. As far as non-developer tools we are still in the early phases to really criticize. I understand that the general opinion is that FOSS is just copying Windows/Mac/Whatever, but it is a mistake to take this point of view, IMHO. All of the desktop enviroments that run under Linux are not reverse engineered at all. Sure they take ideas from commercial non-FOSS desktops, but why not? As Andy Herzfeld once said while Developing Eazel (which was another innovation, before Red Carpet, and certainly before Windows Update) "Linux UI developers just want their stuff to be useable".
It's still early in the game for Linux desktop stuff, but already I vastly prefer KDE to XP and even the Mac (despite the amazingly sexy UI). The pace of development in the Linux Desktop space means that it is only a matter of time before they overtake the "innovation" pace of non-FOSS. Patience will be rewarded.
- Bittorrent
- Struts (mayby not a great example)
- Ruby
- Perl
- Postgres
- Sourceforge, Freshmeat, CPAN, RubyForge (like uh, where are the commercial examples?)
- Linux kernel build system (Microsoft so copy-catted this thing for WinCE, but it is still inferior in nearly every way)
- automake/autoconf/libtool
- Emacs (yeah Emacs, think back now when this thing came on the scene there was nothing like it)
- GCC (Didn't reverse engineer anything, but a common compiler build environemnt was unheard of when this project started out)
- ICU
- Uh, like "The Web", think about it.
- CGI
- TeX/LaTeX
- MajorDomo
- OpenMosix
... didn't go far enough.
.NET, is consistent with my experience with the framework. Although there are many positives about .NET, mainly its attempt to both re-do Java and begin the proper burial of COM, it does have a number of short-comings that are consistent with the idea that much of the framework was contrived without sufficient INTELLIGENT thought put into it.
.NET has a number of short-comings that make it only tolerable to work with if and only if I'm being paid to do so:
Even-handed comment: Mr. Grimes' criticism of
Accurate comment:
ASP.NET: At first seems sexy, but after MANY years of use has proven itself to be broken and worthless. Viewstate: broken, Server-side event model: cool idea, but wrongly implemented in ASP.NET.
Windows.NET and ASP.NET: Yet another attempt to graft the "minds of VB" onto the programmer. When is M$ going to get it that building serious applications from a UI-centric point-of-view is wrong-headed in the extreme.
CLR: Again another attempt to enslave the programming world to the VB zombie army.
I've personally found that programming and parenthood it VERY difficult to balance:
- Every place I've worked, both big and small, impose unhealthy expectations of developers.
- As a community we are often our own worst enemies because we often "volunteer" extra time by staying late on our own, especially when single and not yet with children. The pattern of behavior is easy to understand: usually we're young, eager to learn and produce, but it then sets the bar very high regarding what kind of commitment a developer is supposed to have towards work.
A few of things to keep in mind:
- It's only a job, if you love programming, then they cannot take that away from you. Save your fun programming for yourself.
- It's only a job (yes, I said it twice), if your current employer is a prick regarding expected commitment, leave. I really mean it: leave. A-holes who expect gratis death-march labor without giving back in a big and meaningful way deserve to be put out of business. Period.
- As far as is scientifically known this is your ONLY LIFE. The extra time you put into work and not spending time with your loved-ones WILL NOT COME BACK! Always keep this in the forefront of your mind.
- Stand your ground: DON'T do weekends, DON'T do extra hours. Even if you get paid hourly, this financial situation is no license to assume that all of your free time is up for sale. Commit extra time, but place limits. If found that if you behave as if your time is valuable people will respect that. If they don't: leave.
- Whining a-holes that are in a situation where they can "freely" donate ridiculous quantities of their "free" time that bitch about "Paul Parenthood" going home without "finishing their work" can talk to the hand. Grow up: until science provides (scary) alternatives to continuing our species though procreation we are responsible for RAISING OUR CHILDREN. You are someone's child, think from the child's point of view does this make sense: "Ok Daddy/Mommy stay at work late or on the weekends because the 'project's gotta get done' and you don't want all the shit to flow to the D.I.N.Ks. and singles, besides, why would you want to spend time with me?" The first time one of you mal-adjusted idiots complain to me about folks going home after business hours are over will find your sorry asses on the unemployment line. Seek professional help.
- If your managing programmers (and I did this OFTEN as a engineering director) CHASE PEOPLE OUT OF THE OFFICE. You won't have whiny a-holes because you make it clear that your EMPLOYEES are there for REGULAR BUSINESS HOURS. IF you REGULARLY expected people to put in long hours than PAY THEM HOURLY! I'll say it again PAY THEM HOURLY!!! It is the ONLY ETHICAL THING TO DO. Any argument to the contrary is self-serving rationalization.
Conclusion:
Personally, get out of the software business. DON'T stop coding if that is your calling, just code for yourself and others. Spread the fruits of you labor.
If you only went into programming as a job, then continue because you don't really care, but there are better ways to make a living.
Thanks for the sentiments.
In general, RMS's position with regard to "free software" (as in freedom) is RARELY off-target. This is because his motivations are simply an outcome of the reasoning that code, like any other form of expression, is crystallized thought, and as thought should be cherished and spread to as many as possible to share it's benefits (and, in some cases, drawbacks). The GPL is one tool that helps ensure the spread of thought in code form. It truly is a disease to think that thought products (affectionately known as "intellectual property") can truly be contained. So why not embrace the fact that we as human beings are tremendously adept at copying, processing and synthesizing thought products.
The other tool at his disposal is a relentless pursuit of the goal that all software should be "free" (again, as in freedom). Software that is not free is always suspect: the "owner" that reserves rights to restrict others in their ability to utilize "their" software is prone to an "absolute power" syndrome. Their intentions may start out noble, but that can change at any moment. Sad to say, but it appears the Mr. McVoy may be on the verge of this. I remember reading the mailing-list archives when this first blew up. Mr. McVoy really has drawn a mental line in the sand that he's not willing to cross. It is unclear if he has the strength of character to let go of his "closed-source" ways. It would really be nice if he did.
Unfortunately, in pursuit of his "free" software goal RMS is likely to piss people off, hence the established rancor at him. Fortunately, RMS has the resolve to see past this and move on. It will be a rocky road to enlightenment for most (it certainly is for me, and I can't even begin to claim any form of enlightenment), but it certainly is liberating.
A replacement for BitKeeper should be developed post-haste, subversion looks promising, but needs many features to completely replace BK. I personally use subversion in my own projects and found it to be quite workable.
Food for though (pun intended): Are your thoughts yours? Do you own your thoughts? If so, how do you exert thought ownership rights? If you never existed would your thoughts exist in others? Now, granted, there clearly are expressions of my thought process that others recognize as "me", but at work, if others were confronted with the problems you work to solve every day what is the likely-hood that others would produce the same or similar solutions as yours? I find it amazing looking at all of the various Web site building technologies out there built by many others how similar many of their solutions are to the ones I produce. The evidence that elements of "my" thoughts are going on in other people's heads oh so clearly demonstrates the fact that "intellectual property" are hollow words. Pursuing the task of squirreling away your thoughts and jealously guarding them is the labor of sick-minded people. Even writing what I writing now is not new. Most of you have read "drivel" like this before, but it is still worth mentioning. Just think about it.
First of all, let me start out by saying that under certain circumstances YES .NET-based web applications CAN scale to 100+ concurrent connections on the relatively limited hardware you speak of.
.NET is not the bottle-neck the DB is (which is USUALLY the case). If the DB machine was able to handle more load then you may be encountering a network bottleneck. Try adding more network cards to the application server and the DB server. Connect multiple times to the DB server. Allocate a network stack per CPU on the DB server if you have multiple CPUs (there is stuff in Microsoft's knowledge-base about how to do this). Do the same thing on the Application server. Make sure that under maximum transaction load that both the application server and the DB is maxed out, at least this way you know you are squeezing the maximum throughput out of your machines.
In order to do this you WILL (here's where I get flamed, but frankly, I don't care) need to examine and deal with the following:
1. How database intensive is your application? Despite claims by the DB suppliers RDBMS packages are slow.
Every query, even trivial ones like:
SELECT 0 as foo from bar
will require milliseconds to execute AT BEST. This is because you need to serialize the SQL request from your "middle-ware" (in this case the ASP.NET runtime instance) place this request into a inter-process communication channel (say a network buffer) then block. The network stack has to sent it over the wire, a thread on the SQL server machine has to be woken up to process the incoming query. The query has to be parsed, then executed. The results must follow the reverse route eventually waking up the blocked thread on the "client" (the machine running the ASP.NET runtime that initiated the call in the first place) parse the result set and present that result set to the rest of the application (via a "reader" object). At best this process is on the order of milliseconds per request. If you can get away with cleverly caching data in the application server then this task that originally took milliseconds now gets done in microseconds. Bottom line: eliminate calls to the database where ever you can. There is a down-side to this: more build time costs more money. Plus your code gets more complex. Evaluate the trade-offs. IF caching pays-off in your application it's a lot cheaper to add more application server boxes than it is to pay the crazy expensive prices to beef-up SQL server.
2. Multiple network cards per machine. When you did your benchmarking how much resource usage was there? On the machine running the Web application when you reached max transaction rate was the CPU at 100% If not you may be encountering either a network or DB bottleneck. Look at the DB was it maxing out (CPU + DISK), if so you need to focus your attention there, i.e.
3. Avoid using Web services "inside" your application. You may be using Web services to retrieve data from within your application code. Web services have a lot of friggin' overhead and are not particularly speedy. If you have to use Web services, then also try caching if you can. Any time you application has to wait for some other process (perhaps on a different machine) you will be incurring a big time penalty.
4. Where possible try to static-ify you output. This really is just another kind of caching. Many Web sites (including Slashdot) use this technique. It's particularly useful for news type sites. Write the output of your processing to the hard disk the first time it's requested then re-use this pre-generated file for subsequent requests. Update on a time-basis.
5. Yes, I'm going to say it: look at your DB schema and see if you have opportunities to de-normalize data to simplify queries. Joins are expensive, and query optimizers often don't do a great job. This approach can't always be used, but it can improve query performance orders of magnitude. What you may want to do is keep a really nice normali
I'm also working on this exact same project. I'm planning to start a major remodeling job on my house starting this fall. Many of the things you are looking to do I'm also trying to accomplish. Here's the general outline of my plans:
;-) ) to play the same music. I will need to be able to adjust the volume levels independently in each room, as well as needing an easy way to "mute" a room or all of the music in all of the rooms, FROM ANY ROOM.
Bedrooms: I'm only running Cat5. Each room will have a custom built PC with a decent sound card and speakers. These machine are for the kids to watch videos, do homework, play games, listen to music, etc. Each of these machine will boot into some sort of GNU/Linux (right now the plan is Gentoo) as the primary OS. Unfortunately, they will also have a Win2K boot option for playing games. Util WineX/Transgamign goes GPL or many more games (thank you BioWare for NWN) go native Linux, I'm afraid that Win2K will remain in my, and my kids life.
Den, Kitchen, dining room, backyard patio: A pair of decent speakers mounted to the wall with the speaker cables neatly tucked away out of sight.
Family room: I plan on building a custom home theater PC running GNU/Linux that will be used as a PVR, TV, CD player, DVD Player, CD Ripper, DVD Ripper. Also attached will be a VHS for the older tapes. This machine will be hooked up to a nice 5.1 (or better) speaker system. These speakers will be "switchable" to also play "piped-in" music as well.
I have several "scenarios" that I want my A/V system to support:
1.Party: In this scenario, I would like to "program" all of the speakers in the Den, Kitchen, dining room, backyard patio, and family room (which will all be on the first for (except the backyard patio
2.Clusters of people doing stuff: I can see myself cooking dinner, in the kitchen, while one of my kids is playing with a friend in the living room. I would like to listen to my own music in the kitchen while my kids either watch videos (on the HTPC) or listening to "piped" music, radio, or Internet radio from a "audio server". The other rooms are "silent". In other words I can deliver independent audio to individual rooms. (By Internet radio I mean consumer Internet radio as well as shout/icecast)
I'm looking for an integrated/elegant solution. I would like an audio server in the basement that can be remotely controlled from each room that play music from an audio library of OGG files, Internet radio sources or radio tuner cards in any combination.
(I also plan to have a video server, actually a simple file server, with backed-up DVD images to act as a video server (thank you dvdbackup))
I don't want desktops or laptop scattered around the house actually doing the "audio work". I'm figuring that any PC on my home network can create/manipulate audio playlists that can be played in all rooms or an arbitrary subset. I will need to develop an "integrated remote control" system. I'm thinking of small, embedded, computers with an integrated LCD touch screen and networking that I will mount in the wall in each room on the first floor, as well as on the back of the house. These computers would provide a touch screen interface for controlling the audio in that room (with the option to control audio in other rooms or throughout the house). The controls would include volume levels, muting, playlist control, and the ability to choose from Internet or broadcast radio sources. In the family room it must also be possible to "switch" the speakers from the "piped" audio to the HTPC. When these wall mounted computers are inactive they would display the date/time and weather (or something).
I have also considered PDAs with 802.11 but I like the fixed solution from a clutter/aesthetics point-of-view. Also, PDAs like remotes will take a lot of abuse and tend to get lost. On the other hand, I have not ruled out the PDA solution yet.
Ok, now you know what I'm looking to do, here's where I'm at:
How about the mo-fos just stop looking at every friggin' customer as a pirate and back off! DRM ain't going to stop the real pirates anyway. DRM in any form is just going to hurt the average consumer.
By the way I have a completely OGG format digital music library composed ENTIRELY of music I purchased on CDs (backup media). Why the hell is M$, RIAA, MPAA, and others interested in hurting guys like me? bastards...
Jim Powers