I think Mahemoff does an excellent job on "Ajax Design Patterns". He is clearly well schooled in the traditional design patterns of Gamma et al and does an excellent job using a similar spirit vis a vis Ajax. He covers an impressive number of sites, many of whom I would never have heard about if it were not for his diligent research. He has a catalog of the specific patterns he covers such as Ajax App, Ajax Stub, Browser-Side Cache, and Data Grid. However, the actual book is organized in five main areas beginning with a great intro to basic Ajax (the section "Anatomy of a Server Call" is particularly good). After the intro the other areas covered are (1) Foundational Technology Patterns (including web remoting); (2) Programming Patterns, with a great intro to web services and clarity on what qualifies as a Restful service and why it is popular + DOM + code generation; (3) Functionality and Usability Patterns (widgets, page architecture, visual effects, etc); and (4) Development Patterns (diagnosis, testing). He spends a great deal of time discussing the tradeoffs in the performance of Ajax calls and even has a link to a back of the envelope calcs of the latency of ajax calls. It's filled with all sorts of neat Ajax tricks to optimally give the illusion of continuity as the user browses over a large dataset (eg in maps). Lots of technologies are covered in sufficient detail and really anyone with enough interest can understand it. This is just a solid programming/engineering book period. When I read a book like this I am awed at the power of the individual to organize. I would have taken ages to dig up Ajax related stuff here and there (and even in many books I perused), but when I found this book I was like, "Ok, I've found my guide!". You can't go wrong buying this book. At each step he brings attention back to the underlying pattern and when one understands the pattern , one is freed from the details just as the Gamma et al authors intended. So, fellow coders, this may be another book to add next to your desktop coding bibles (Gamma et al, etc...). Enjoy....
What's wrong with the above equation? Well, Microsoft is missing from it, yet it is a viable equation. What we are seeing with VmWare is a classic Innovator Dilemma of Christensen lore. I would have added Ubuntu (on VmWare???) but it's still too early to tell as there is nothing really compelling enough in Ubuntu at this stage to bring about a new standard: just because a production ingredient - software services - is done cheaply does not necessarily make a good business or product. In any case, while Microsoft was gunning for Google a far more dangerous and sinister competitor was taking a foothold at the very root of its source of domination. As Ballmer said in a February NyTimes article on VmWare, "Everybody in the operating system business wants to be the guy on the bottom". I would replace "operating system" with simply "computing". Moore's law, basic economics, and, most of all, what users want are driving the changes. Intel will be at the very bottom, then VmWare being the key value addition on the server, and then stuff goes out the Internet organized by Google, and you, the end user, rely on a string of Apple devices to connect with that information.
I'm not saying Microsoft won't matter, but the companies that make it big in tech sit at the sweet critical value spots in the whole package and right now those spot are moving away from Microsoft. I have no idea why Gates is leaving now when his company is no doubt facing the worst threats of its entire life. At least IBM had its ivory towers of untouchable mainframes built over years of honest work to see it through and that business is still healthy. It also has services which are actually more fundamental to its roots from the days Thomas Watson Sr transformed the company using the skills he learned as a salesman under John Patterson of the National Cash Register. Anyways, the problem with the way big tech growth areas emerge is that once you notice them, it's almost too late to stop the trend. Companies like Xensource will remain dwarfs unless VmWare seriously F***s up. Microsoft got away with heavy handed aggressive tactics against Netscape, but now we all know about those tactics and they won't work quite as well against VmWare and Google. Of the two VmWare is a far worse nightmare because Google could very well be a passing cloud due to the torrential growth of the web: the web will continuously demand new ways of organizing information and it will not be one size fits all so the search engine market will evolve like the dog eat dog market for hard drives (incidentally, that's why I applaud Yahoo's appointment of Jerry Yang as CEO because in my view search is still very much a computing guts business and we need "warrior CEOs" like Gates was to lead such companies). Dominating the guts of computing is the best sweet spot. Apple is also in a very sweet spot because its instinct for design and "grokking" what the user wants is an extremely tangible asset that is not easily replicated. At first I ridiculed the iPhone but now I can't wait to get my hands on one. If I were Microsoft I would harakiri myself and break up into pieces that can more effectively compete against these threats. The value of the individual pieces separated may be greater than their current value. Standard Oil did this back in the early 1900s and that's what actually made Rockefeller a billionaire.
As we move to an era dominated by the web, expect the requirement for understanding algorithms to go up. Case in point: Google. It will take just a couple of more guys to conjure up new algorithms and build a super network to rival Google. This is because the web is like one big frigging algorithm and it can shift easily from place to place. And when folks find something on the web that works better, switching immediately then telling all your friends is a no brainer. In the web, a better mouse trap definitely means a better service because there are tons of mice and each mouse is giving birth to tons of more mice. If I find a better search engine than Google's (and I sure need one), I will drop Google in a heartbeat. I bet someone can prove that the more useful a search engine is to people, the more new information they create with it such that the search engine starts to suck and it's a rat race. The average teen alone is spewing so much info that Google and all its network of computers won't be able to catch up fast enough. So, crack open Knuth's books and be the next Google. For a billion plus+ payout even the dumbest programmer could burn at least one midnight lamp giving a shot at ruling the net...for a time at least...and who knows, he or she might get lucky!
I'd like to see the author try and fly in a plane designed by computer scientists using his methods. I'd prefer to try the new Boeing Dreamliner which involved a lot of math to design. In fact, in embedded systems you have a lot of mathematical analysis to make sure stuff happens when you want it to happen, otherwise you could have serious accidents and loss of life. I'll guarantee you that Boeing ain't gonna use Windows OS anytime soon to run its planes! The only windows you'll find on that plane are the kind you look through to see the clouds and the kind running on the laptops/pdas of folks dumb enough not to just sit back, relax, and chill for just a while. The main point, though, is that math is a language of reasoning just like English is used for communicating ideas. How would he sell his book without being able to actually write it and then talk about it? It's the exact same idea, except math allows you to be very, very precise in what you mean. And if something dosen't quite fit, it gives you the language to describe something new that does. One can't just carve out one area of the universe like programming and say it dosen't need math. The goodness of being able to communicate reasoning precisely is that it enables others to use a piece of work and build on it, or show flaws in the work's reasoning.
Hence, after many iterations a dumb programmer can just code away with not much thought to "formal" mathematics. With not much thought to how his dumb mind even functions when he goes to take a piss. Never mind the fact that mathematical models of his dumb ass were used by the marketing folks to lure him into buying all that beer which made him want to take a piss in the first place (even modeling the precise place to place the beer in the store so his dumb ass dosen't miss it). The great things about technological progress is that things change fast thanks to all the above and so eventually the programmers who are too dumb to know math will be replaced by computers or programmers who do. We've already replaced a world chess champion with a computer! Anyways, everyone has their own story of that one programmer they know who didn't really understand the algorithm and replaced some "small" thing and seriously F****d everything up - and you weren't even surprised! Eventually simple arithmetic done by the cost conscious company executive will make sure programmers who do not add value do not add any more 0s to the cost line using the simple subtraction algorithm. Luckily, it does not take much to get into math. Your brain already has more than you need to begin so don't listen to all the fear against math and just begin. You will be surprised what your brain can do because it is far, far, far more powerful than you can imagine. This was assured by the great designer who designed you. For all we know, you're just an algorithm appearing in someone else's consciousness - a very powerful algorithm, though. The classical definition of infinity in mathematics is that an infinite set is one in which if you remove a tangible piece from it, the remaining piece is still equivalent to the original. But, to be fair, let me read the author's actual words before judging him because maybe it's the reviewer who was being dumb.
As an added thought to my comment on Leabre's post above ("Re:Lack of Talent Indeed"), I think a great career switch for software developers in the US should be setting up an executive recruiting business. Find great candidates, help them prepare for interviews, maintain great standards, great integrity, and exceed your customer's expectations. The value of such a business will surely grow over time. Such a business is a worthy business full of meaning for yourself, for the candidates you assist, and for the businesses for which you provide candidates.
I completely agree with you. My previous company was looking for an entry level software development position for a financial-related application. The language required was Java, but in reality the code base was very solid, and well documents and we just needed someone with decent programming skills to do maintenance-related work. C# would have also done quite fine. I worked very closely with the manager who was overseeing the interview process. In fact, we were good friends and he's a decent guy. Being humble, he dosen't consider himself a wiz and sympathizes with folks who have difficulties solving technical problems. Anyway, after half a year of interviewing his desperation in not finding a decently qualified developer became well known throughout the office. He had simplified the process to just asking a very simple quiz of about 4 or 5 thoroughly foundational programming questions. These are the kind you usually learn in programming 101. None were tricky and required little more than knowing what was being asked since if you knew, say, what a certain data structure like a hash table was, the question was so tied to its nature that almost any decent enough answer would have been counted right by him and his fellow co-worker interviewers. When he asked me the questions I thought he was kidding. They were sooo easy. Yet he told me that almost all the candidates he asked were doing badly on them, and the few who passed them were hard to get. I literally couldn't believe him - I just couldn't. I heard him several times giving the test on the phone and eventually I realized he was saying the truth. Eventually we settled on a recommendation by a former co-worker and that worked out well.
The whole experience completely changed my view of the technical expertise available to US companies. And this was just programming, and we interviewed people of various cultural backgrounds so it's not a cultural thing. I think part of the problem is also the process of finding the candidates because a lot of recruiters have entered the market and do not perform a good job screening candidates. Trying to post a job ad on say Monster is troublesome because one gets a flood of responses and the manager simply has no time to sift through the resumes. If you want to find a decent designer, which is where I feel the greater value lies, forget it. Even among the main developers of the company, I felt they knew their programming stuff well but the theoretical foundation on very basic things was also still a bit shaky. One of our co-workers who was a so so developer got an offer as a designer somewhere else and the clear advantage he seemed to be having - doing less "grunt programming" work and being paid much more - was a topic of grumbling conversation among our developers for a while. To be a great designer whether it's in software or anywhere else you need a thorough understanding of the very basic things. Sometimes you even need more domain expertise because a better design comes with better understanding of what it's being used for - this is how great engineers like Isambard Kingdom Brunel and James Dyson think. A solid foundation is key because to create innovative stuff you need to be able to play around with these basic concepts, moving them about in your mind like fluid, adding new things, and then seeing the thing come together. If even one tiny stone is missing in the very foundation, the entire design can be toppled. Or it may not even materialize in the first place - I find that a lot of my design problems solve themselves in my mind when I'm not consciously thinking about them and if the mind dosen't know some vital fact, how can it go about putting the solution together? In software engineering we are dealing with the most complex systems man or woman has ever put his mind to organizing. Those who feel that we've reached a plateau and that the value of software engineering will fall due to, eg, open source, have no clue what they're talking about. This software beast will continue to grow faster than o
When I code I have to have my music playing right so I'll take as long as it takes and do as much as it takes to get it just the way I want. I just can't code right without a good music setup. Music is not an area you want to cut corners with or accept less than you want. Even in the poorest nations folks have to get their music system right even if it means banging on a few sticks with a motley crew. A life without good music is a poor life. As for printers...they still all suck, especially the office ones.
Companies like Microsoft and IBM often sign cross-licensing deals to cover patent infringements. It's quite a standard practice actually. IBM loves Linux but they also love fat profits, AIX, and mainframes so I don't think they'll come fighting on the side of Linux. What we are seeing here might be the start of an extraordinary situation in legal history. Usually we'd have expected Microsoft to have been thoroughly hounded for its monopoly and then broken up and that's the end of it. If this case carries on it may open up so many other issues related to the entire issue of copyright, DRM, etc, and Microsoft may end up paradoxically putting up a good case in the defense of an individual's right to what they create with far reaching implications. We see in the music world that many artists that we love are not being compensated enough for their creations. We see the same thing in online video. Now, we all love Linus. Linux is in no small part a success because of his leadership. John Carmack and Linus are my top coding heroes and I often peruse my copy of Linus's book or the excellent bio of Carmack/Romero by David Kushner. In this case, though, I wish Linus would hire a lawyer quickly and not resort to communication via the public media. A lot could be at stake here and the issue deserves proper attention on his part with the aid of professional lawyers.
One key comment that Mark makes in the interview is that he is for free software. By this I assume he means obtaining software development services for free (as opposed to support). I think all these debates about open source vs proprietary fail to see the big picture in sufficient detail. Let's think about this. The laws of economics and jurisprudence have not changed. What does a desire for free software really mean then? From a developer's standpoint, one implication is that a software developer's services have little value. Or perhaps it means the specific software under discussion has little value. Hmmm...that's definitely something to ponder. If it has little value then why bother with it anyway? But he was talking about software in a general sense so could that mean he's aiming for a situation in which all software has little value? Clearly software has value, particularly in new areas. Unfortunately technology by its very definition means change and while certain groups of developers are slapping themselves on the back for a job well done, the carpet is shifting as I type to a different direction.
So what exactly does he mean? We're in the software development business which requires defining things a bit more precisely kinda like in mathematics or law. Perhaps he means there is value in software and a developer's services, but the person who created it or provided those services will not be compensated. That's ok if that's what the provider intended. If not, it's unfair. If that's what the provider intended, then let's look into that provider with the added assumption that Shuttleworth is trying to create a top system. The individual provider of software development services is saying I am a software developer and I am giving away value for free. Then where is that value coming from? Perhaps someone is paying him or her for those services rendered elsewhere in sufficient amounts to allow him or her some downtime to give away software services of value. Or perhaps software development is just a hobby for the provider and he or she earns a living doing something else. That's all ok unless the developer's main employer isn't being shortchanged which is unfair. Perhaps he or she really believes there is little value in his or her software developing skills, which is a sad case. But how can that mode of working produce this top system on par with systems in which the developers are giving their all day in and day out? Software development regardless of open source or not can be hard to do and can take a lot of time to do right, especially when defining standards. Defining technology standards involves the subject of how humans with differing objectives communicate with each other at a basic level and that has not changed so we'll leave that to a different discussion. Suffice to say that time and time again folks who concentrate power have used this point splendidly. In fact, my prediction is that in the future all this massive communication mishaps occuring these days will quite naturally lead to the creation of a technology monopoly with an even stronger hold than Microsoft (maybe even an off-shoot of Microsoft like those feisty Standard Oil offshoots that are still shouting today, who knows). But, like I said, let's leave that discussion to a different day.
We can go on and on with this kind of analysis, but at the end I feel the conclusion from his goal is that (a) either software of inferior sustainable value is produced, (b) there has been too much value assigned to that particular line of software development in the marketplace, or (c) there is such massive altruism in the developer community to give so much software development value away for free. Let's leave (c) to a different discussion - I wish it's true but I'm not convinced of its sustainability. In (a) the system will not succeed in the market and we see this clearly on the desktop. The PC is basically a mass communication device and unless Ubuntu works very well with Microsoft file formats then forget it no matter how much it is d
I think Mahemoff does an excellent job on "Ajax Design Patterns". He is clearly well schooled in the traditional design patterns of Gamma et al and does an excellent job using a similar spirit vis a vis Ajax. He covers an impressive number of sites, many of whom I would never have heard about if it were not for his diligent research. He has a catalog of the specific patterns he covers such as Ajax App, Ajax Stub, Browser-Side Cache, and Data Grid. However, the actual book is organized in five main areas beginning with a great intro to basic Ajax (the section "Anatomy of a Server Call" is particularly good). After the intro the other areas covered are (1) Foundational Technology Patterns (including web remoting); (2) Programming Patterns, with a great intro to web services and clarity on what qualifies as a Restful service and why it is popular + DOM + code generation; (3) Functionality and Usability Patterns (widgets, page architecture, visual effects, etc); and (4) Development Patterns (diagnosis, testing). He spends a great deal of time discussing the tradeoffs in the performance of Ajax calls and even has a link to a back of the envelope calcs of the latency of ajax calls. It's filled with all sorts of neat Ajax tricks to optimally give the illusion of continuity as the user browses over a large dataset (eg in maps). Lots of technologies are covered in sufficient detail and really anyone with enough interest can understand it. This is just a solid programming/engineering book period. When I read a book like this I am awed at the power of the individual to organize. I would have taken ages to dig up Ajax related stuff here and there (and even in many books I perused), but when I found this book I was like, "Ok, I've found my guide!". You can't go wrong buying this book. At each step he brings attention back to the underlying pattern and when one understands the pattern , one is freed from the details just as the Gamma et al authors intended. So, fellow coders, this may be another book to add next to your desktop coding bibles (Gamma et al, etc...). Enjoy....
What's wrong with the above equation? Well, Microsoft is missing from it, yet it is a viable equation. What we are seeing with VmWare is a classic Innovator Dilemma of Christensen lore. I would have added Ubuntu (on VmWare???) but it's still too early to tell as there is nothing really compelling enough in Ubuntu at this stage to bring about a new standard: just because a production ingredient - software services - is done cheaply does not necessarily make a good business or product. In any case, while Microsoft was gunning for Google a far more dangerous and sinister competitor was taking a foothold at the very root of its source of domination. As Ballmer said in a February NyTimes article on VmWare, "Everybody in the operating system business wants to be the guy on the bottom" . I would replace "operating system" with simply "computing". Moore's law, basic economics, and, most of all, what users want are driving the changes. Intel will be at the very bottom, then VmWare being the key value addition on the server, and then stuff goes out the Internet organized by Google, and you, the end user, rely on a string of Apple devices to connect with that information.
I'm not saying Microsoft won't matter, but the companies that make it big in tech sit at the sweet critical value spots in the whole package and right now those spot are moving away from Microsoft. I have no idea why Gates is leaving now when his company is no doubt facing the worst threats of its entire life. At least IBM had its ivory towers of untouchable mainframes built over years of honest work to see it through and that business is still healthy. It also has services which are actually more fundamental to its roots from the days Thomas Watson Sr transformed the company using the skills he learned as a salesman under John Patterson of the National Cash Register. Anyways, the problem with the way big tech growth areas emerge is that once you notice them, it's almost too late to stop the trend. Companies like Xensource will remain dwarfs unless VmWare seriously F***s up. Microsoft got away with heavy handed aggressive tactics against Netscape, but now we all know about those tactics and they won't work quite as well against VmWare and Google. Of the two VmWare is a far worse nightmare because Google could very well be a passing cloud due to the torrential growth of the web: the web will continuously demand new ways of organizing information and it will not be one size fits all so the search engine market will evolve like the dog eat dog market for hard drives (incidentally, that's why I applaud Yahoo's appointment of Jerry Yang as CEO because in my view search is still very much a computing guts business and we need "warrior CEOs" like Gates was to lead such companies). Dominating the guts of computing is the best sweet spot. Apple is also in a very sweet spot because its instinct for design and "grokking" what the user wants is an extremely tangible asset that is not easily replicated. At first I ridiculed the iPhone but now I can't wait to get my hands on one. If I were Microsoft I would harakiri myself and break up into pieces that can more effectively compete against these threats. The value of the individual pieces separated may be greater than their current value. Standard Oil did this back in the early 1900s and that's what actually made Rockefeller a billionaire.
As we move to an era dominated by the web, expect the requirement for understanding algorithms to go up. Case in point: Google. It will take just a couple of more guys to conjure up new algorithms and build a super network to rival Google. This is because the web is like one big frigging algorithm and it can shift easily from place to place. And when folks find something on the web that works better, switching immediately then telling all your friends is a no brainer. In the web, a better mouse trap definitely means a better service because there are tons of mice and each mouse is giving birth to tons of more mice. If I find a better search engine than Google's (and I sure need one), I will drop Google in a heartbeat. I bet someone can prove that the more useful a search engine is to people, the more new information they create with it such that the search engine starts to suck and it's a rat race. The average teen alone is spewing so much info that Google and all its network of computers won't be able to catch up fast enough. So, crack open Knuth's books and be the next Google. For a billion plus+ payout even the dumbest programmer could burn at least one midnight lamp giving a shot at ruling the net...for a time at least...and who knows, he or she might get lucky!
I'd like to see the author try and fly in a plane designed by computer scientists using his methods. I'd prefer to try the new Boeing Dreamliner which involved a lot of math to design. In fact, in embedded systems you have a lot of mathematical analysis to make sure stuff happens when you want it to happen, otherwise you could have serious accidents and loss of life. I'll guarantee you that Boeing ain't gonna use Windows OS anytime soon to run its planes! The only windows you'll find on that plane are the kind you look through to see the clouds and the kind running on the laptops/pdas of folks dumb enough not to just sit back, relax, and chill for just a while. The main point, though, is that math is a language of reasoning just like English is used for communicating ideas. How would he sell his book without being able to actually write it and then talk about it? It's the exact same idea, except math allows you to be very, very precise in what you mean. And if something dosen't quite fit, it gives you the language to describe something new that does. One can't just carve out one area of the universe like programming and say it dosen't need math. The goodness of being able to communicate reasoning precisely is that it enables others to use a piece of work and build on it, or show flaws in the work's reasoning.
Hence, after many iterations a dumb programmer can just code away with not much thought to "formal" mathematics. With not much thought to how his dumb mind even functions when he goes to take a piss. Never mind the fact that mathematical models of his dumb ass were used by the marketing folks to lure him into buying all that beer which made him want to take a piss in the first place (even modeling the precise place to place the beer in the store so his dumb ass dosen't miss it). The great things about technological progress is that things change fast thanks to all the above and so eventually the programmers who are too dumb to know math will be replaced by computers or programmers who do. We've already replaced a world chess champion with a computer! Anyways, everyone has their own story of that one programmer they know who didn't really understand the algorithm and replaced some "small" thing and seriously F****d everything up - and you weren't even surprised! Eventually simple arithmetic done by the cost conscious company executive will make sure programmers who do not add value do not add any more 0s to the cost line using the simple subtraction algorithm. Luckily, it does not take much to get into math. Your brain already has more than you need to begin so don't listen to all the fear against math and just begin. You will be surprised what your brain can do because it is far, far, far more powerful than you can imagine. This was assured by the great designer who designed you. For all we know, you're just an algorithm appearing in someone else's consciousness - a very powerful algorithm, though. The classical definition of infinity in mathematics is that an infinite set is one in which if you remove a tangible piece from it, the remaining piece is still equivalent to the original. But, to be fair, let me read the author's actual words before judging him because maybe it's the reviewer who was being dumb.
As an added thought to my comment on Leabre's post above ("Re:Lack of Talent Indeed"), I think a great career switch for software developers in the US should be setting up an executive recruiting business. Find great candidates, help them prepare for interviews, maintain great standards, great integrity, and exceed your customer's expectations. The value of such a business will surely grow over time. Such a business is a worthy business full of meaning for yourself, for the candidates you assist, and for the businesses for which you provide candidates.
I completely agree with you. My previous company was looking for an entry level software development position for a financial-related application. The language required was Java, but in reality the code base was very solid, and well documents and we just needed someone with decent programming skills to do maintenance-related work. C# would have also done quite fine. I worked very closely with the manager who was overseeing the interview process. In fact, we were good friends and he's a decent guy. Being humble, he dosen't consider himself a wiz and sympathizes with folks who have difficulties solving technical problems. Anyway, after half a year of interviewing his desperation in not finding a decently qualified developer became well known throughout the office. He had simplified the process to just asking a very simple quiz of about 4 or 5 thoroughly foundational programming questions. These are the kind you usually learn in programming 101. None were tricky and required little more than knowing what was being asked since if you knew, say, what a certain data structure like a hash table was, the question was so tied to its nature that almost any decent enough answer would have been counted right by him and his fellow co-worker interviewers. When he asked me the questions I thought he was kidding. They were sooo easy. Yet he told me that almost all the candidates he asked were doing badly on them, and the few who passed them were hard to get. I literally couldn't believe him - I just couldn't. I heard him several times giving the test on the phone and eventually I realized he was saying the truth. Eventually we settled on a recommendation by a former co-worker and that worked out well.
The whole experience completely changed my view of the technical expertise available to US companies. And this was just programming, and we interviewed people of various cultural backgrounds so it's not a cultural thing. I think part of the problem is also the process of finding the candidates because a lot of recruiters have entered the market and do not perform a good job screening candidates. Trying to post a job ad on say Monster is troublesome because one gets a flood of responses and the manager simply has no time to sift through the resumes. If you want to find a decent designer, which is where I feel the greater value lies, forget it. Even among the main developers of the company, I felt they knew their programming stuff well but the theoretical foundation on very basic things was also still a bit shaky. One of our co-workers who was a so so developer got an offer as a designer somewhere else and the clear advantage he seemed to be having - doing less "grunt programming" work and being paid much more - was a topic of grumbling conversation among our developers for a while. To be a great designer whether it's in software or anywhere else you need a thorough understanding of the very basic things. Sometimes you even need more domain expertise because a better design comes with better understanding of what it's being used for - this is how great engineers like Isambard Kingdom Brunel and James Dyson think. A solid foundation is key because to create innovative stuff you need to be able to play around with these basic concepts, moving them about in your mind like fluid, adding new things, and then seeing the thing come together. If even one tiny stone is missing in the very foundation, the entire design can be toppled. Or it may not even materialize in the first place - I find that a lot of my design problems solve themselves in my mind when I'm not consciously thinking about them and if the mind dosen't know some vital fact, how can it go about putting the solution together? In software engineering we are dealing with the most complex systems man or woman has ever put his mind to organizing. Those who feel that we've reached a plateau and that the value of software engineering will fall due to, eg, open source, have no clue what they're talking about. This software beast will continue to grow faster than o
When I code I have to have my music playing right so I'll take as long as it takes and do as much as it takes to get it just the way I want. I just can't code right without a good music setup. Music is not an area you want to cut corners with or accept less than you want. Even in the poorest nations folks have to get their music system right even if it means banging on a few sticks with a motley crew. A life without good music is a poor life. As for printers...they still all suck, especially the office ones.
Companies like Microsoft and IBM often sign cross-licensing deals to cover patent infringements. It's quite a standard practice actually. IBM loves Linux but they also love fat profits, AIX, and mainframes so I don't think they'll come fighting on the side of Linux. What we are seeing here might be the start of an extraordinary situation in legal history. Usually we'd have expected Microsoft to have been thoroughly hounded for its monopoly and then broken up and that's the end of it. If this case carries on it may open up so many other issues related to the entire issue of copyright, DRM, etc, and Microsoft may end up paradoxically putting up a good case in the defense of an individual's right to what they create with far reaching implications. We see in the music world that many artists that we love are not being compensated enough for their creations. We see the same thing in online video. Now, we all love Linus. Linux is in no small part a success because of his leadership. John Carmack and Linus are my top coding heroes and I often peruse my copy of Linus's book or the excellent bio of Carmack/Romero by David Kushner. In this case, though, I wish Linus would hire a lawyer quickly and not resort to communication via the public media. A lot could be at stake here and the issue deserves proper attention on his part with the aid of professional lawyers.
One key comment that Mark makes in the interview is that he is for free software. By this I assume he means obtaining software development services for free (as opposed to support). I think all these debates about open source vs proprietary fail to see the big picture in sufficient detail. Let's think about this. The laws of economics and jurisprudence have not changed. What does a desire for free software really mean then? From a developer's standpoint, one implication is that a software developer's services have little value. Or perhaps it means the specific software under discussion has little value. Hmmm...that's definitely something to ponder. If it has little value then why bother with it anyway? But he was talking about software in a general sense so could that mean he's aiming for a situation in which all software has little value? Clearly software has value, particularly in new areas. Unfortunately technology by its very definition means change and while certain groups of developers are slapping themselves on the back for a job well done, the carpet is shifting as I type to a different direction.
So what exactly does he mean? We're in the software development business which requires defining things a bit more precisely kinda like in mathematics or law. Perhaps he means there is value in software and a developer's services, but the person who created it or provided those services will not be compensated. That's ok if that's what the provider intended. If not, it's unfair. If that's what the provider intended, then let's look into that provider with the added assumption that Shuttleworth is trying to create a top system. The individual provider of software development services is saying I am a software developer and I am giving away value for free. Then where is that value coming from? Perhaps someone is paying him or her for those services rendered elsewhere in sufficient amounts to allow him or her some downtime to give away software services of value. Or perhaps software development is just a hobby for the provider and he or she earns a living doing something else. That's all ok unless the developer's main employer isn't being shortchanged which is unfair. Perhaps he or she really believes there is little value in his or her software developing skills, which is a sad case. But how can that mode of working produce this top system on par with systems in which the developers are giving their all day in and day out? Software development regardless of open source or not can be hard to do and can take a lot of time to do right, especially when defining standards. Defining technology standards involves the subject of how humans with differing objectives communicate with each other at a basic level and that has not changed so we'll leave that to a different discussion. Suffice to say that time and time again folks who concentrate power have used this point splendidly. In fact, my prediction is that in the future all this massive communication mishaps occuring these days will quite naturally lead to the creation of a technology monopoly with an even stronger hold than Microsoft (maybe even an off-shoot of Microsoft like those feisty Standard Oil offshoots that are still shouting today, who knows). But, like I said, let's leave that discussion to a different day.
We can go on and on with this kind of analysis, but at the end I feel the conclusion from his goal is that (a) either software of inferior sustainable value is produced, (b) there has been too much value assigned to that particular line of software development in the marketplace, or (c) there is such massive altruism in the developer community to give so much software development value away for free. Let's leave (c) to a different discussion - I wish it's true but I'm not convinced of its sustainability. In (a) the system will not succeed in the market and we see this clearly on the desktop. The PC is basically a mass communication device and unless Ubuntu works very well with Microsoft file formats then forget it no matter how much it is d