If you're into strategy and don't mind losing all of your free time and some of your work time, there's FreeCiv. Think Civilization recast as a full-on client/server multi-player setup. I've not played it recently (no time to game at all lately, too much code to write!) but the graphics requirements should be fairly modest.
The best advise I ever saw in terms of meeting people (it wasn't direct at me, but it was on a mailing list that I was on) was "if you want to meet and/or date people who are interested in X, you've got to put yourself where people interested in X are." That's true for any given definition of X.
Figure out what your interests are, geek or otherwise. Don't take a cooking class just to meet chicks if you don't want to know how to cook for your own sake. If you are interested in it, though, get out there and do it. Meet people. If you're looking for geeky relationships (friendly or romantic), find your local LUG, or an open source project you're into may have a local users group. If you're into Star Trek or role playing, look for a local fan club or D&D group or LARP. If you're a somewhat religious person, get involved with your church/synagogue/mosque/whatever. (Note: Do NOT do that if you are not genuinely at least somewhat religious.) Personally I'd recommend taking a massage class. Not only is it a very good skill to have, it's a skill that many people appreciate in a person (friendly or romantic) and my understanding is those classes tend to be mostly women, too.:-)
The geekier groups are likely going to be mostly male, but that's OK. You're trying to meet *people*, not *women*. The women come later, because they're people too.:-) (And acting like they're not is a great way to stay single.) Half the time you'll meet someone through someone else that you really like, that you wouldn't have met if you hadn't met the first person first. Friend-of-a-friend is a great way to meet people as well, if you bootstrap yourself first.
If you already have a few friends, see about tagging along with them to things they do. Odds are if they're your friends you have interests in common, which means you probably have *other* interests in common, too. If they're real friends, they'll be supportive of your endeavors.
I'll also add that when people ask me how I learned to dance, my answer is always the same: By being a bad dancer for a long time and not caring, until I got good at it. Socializing is a learned skill. It will take time to learn. Just remember that it's a much "softer" skill than programming, but that doesn't mean it's not as complex or challenging.
As others have said, expose students to all three methodologies (procedural, OOP, and functional) as early as possible. A language that supports all of the above can be good for that, or else pick languages with reasonably similar syntaxes (eg, they all use curly braces for code blocks) to reduce the mental overhead.
That said, I would do procedural first. It's the closest to what the computer actually does: Execute one instruction after another in order. It is also, therefore, the one with the least mental overhead. It's easier to explain a conditional or a loop in a procedural structure than a functional structure, I'd argue. (And in that case OOP is a superset of procedural, as the code within methods is still behaving procedurally.) So the 101 course should be in a procedural language, or using procedural style in a procedural/OO language.
I did OO next, but in hindsight I'd probably suggest functional second. It's the most "mathematically pure", and the one that forces you to think about what you're doing at a conceptual level the most. It's also the one they're least likely to use in practice out in industry, but what students learn about good design in a functional language (atomic functions, no side effects, logical thinking, etc.) will serve them in very good stead later on in their careers. I only had about a quarter of one class in which we covered functional languages and I just didn't get it at the time. Years later I finally figured out what functional programming was all about and even though I don't write functional code I've found my coding style drifting to be more functional-ish, and as a result much less bug-prone and, for me at least, easier to read.
Then put it together with good OOP. You then have the procedural stuff down pat, and the good practice of how to treat functions as discrete behaviors. An object, then, is just a larger chunk of discrete behavior bundled together. It introduces the complications of state, but the idea of each method as an atomic little bundle of behavior within that larger bundle should be a smooth transition from functions as an atomic little bundle of behavior.
All three are equally expressive, but knowing all three will give students a better understanding of *how to think about the problem at hand*, which is what school is all about. Even if you're not coding in one of those paradigms, you can still implement many of the same concepts in another paradigm where appropriate. (No-side-effects from functional, polymorphism and delegation from OO, and "how does the computer think" from procedural are all applicable in all paradigms, if you're coding properly.)
I argued much the same thing in much less space 2 years ago.:-) Most "MVC" web frameworks are anything but, and it is disingenous to claim that they are. It's a marketing gimmick for people that don't actually know what they're talking about.
I have long argued that MVC doesn't even make sense on the web to begin with. MVC is a great architectural model for live interactive systems, but a web site or web app is not a live interactive system. It's an asynchronous challenge/response system.
I blame Sun for completely abusing the term in their Java stacks (I think they called it "model 2"?), and Ruby on Rails for popularizing the wrong impression. MVC by definition requires a direct observer connection from View to Model. All web-MVC frameworks I've seen start with the initial statement that the Controller, not the View, is responsible for handling user interaction and communicating with the Model. Sorry, that's not MVC. It's not a bad model for the web, but it's not MVC. If anything it's closer to PAC.
See the link above for a lengthier analysis and links to Wikipedia.:-)
Really, the whole point of design patterns is to have a common vocabulary. How is that useful if you're going to bastardize your terminology due to stubborn ignorance?
With all due respect, why was PHP 4 being around preventing you from getting real work done (in 4 or 5)?
Shared web hosts. The problem with PHP 4 was that hosts weren't upgrading because projects weren't requiring PHP 5, and projects therefore couldn't require PHP 5 because none of the web hosts offered it. And so it was still in widespread use, so the PHP dev team had to keep supporting it. No one wanted to be the first to "jump", because whoever jumped first would get burned (either by a cost to upgrade servers that wasn't needed or by limiting your product to a small number of possible install servers).
So instead, we all jumped at once together. Now, developers can write PHP 5-dependent code with a reasonable level of confidence that users will be able to run it, either on their existing host or on any of 200+ web hosts that do offer PHP 5 out of the box.
And by "real work", I mean "not working around design flaws in PHP 4's object model and avoiding using utility routines that were added in PHP 5 because I can't rely on them being there".
Imagine not being able to use Linux 2.6 when developing system utilities, because no one is upgrading from 2.4, even though 2.6 has been out for 4 years.
Over 100 PHP projects and products and over 200 web hosts that have been committed to PHP 5.2 and no earlier for over a year. GoPHP5 launched before the PHP development team announced an EOL for PHP 4. While I don't believe for a second that it was the only reason they made that decision, I also don't believe for a second that it didn't have a big influence on it.
The push to drop PHP 4 support came from people using PHP in production in the first place. Those of us who get paid to write PHP code are cheering at the top of our lungs, because now we can actually get real work done.
It depends on the situation. What sort of company? What size?
If everything you do is web, then standardizing on [PHP|Python|Ruby] for all your web stuff makes sense. They're all close enough functionality-wise, and it will make mixing and matching your code and coders easier.
Similarly, doing server-side programming sometimes in C#, sometimes in Java is probably wasteful. They're both close enough in their approach and capabilities that having to learn and remember both is wasteful.
Standardizing that you'll use [C#|Java|Python|C++] for every line of code written? Nonsense. That's over-standardization. In at least some cases any one of those is going to suck royally.
Standardizing your source control system? Definitely a good idea, unless you have to interact with a 3rd party open source project that is using something else. Even then, you should use just one for all of your internal stuff and then make sure someone knows how to use whatever the 3rd party uses. (I suggest svn myself, but some people prefer distributed RCSes. Pick what you like.)
Standardizing your IDE? Only if you want to make 2/3 of your developers less productive. I can see an argument in favor if you are paying per seat for the IDE and want to only have one vendor and site license to deal with, certainly. But if you're paying that much for an IDE, you need to switch to an open source IDE anyway.:-) At my company we offer a standardized IDE for all programmers, but half of them use something else at least half the time. That's fine, as long as they get the job done.
Same framework? Same argument as language. Within a given realm, sure, it makes sense. Use one, or maybe two, frameworks for your web stuff. Use one for your desktop stuff. But don't presume that you MUST use that for EVERYTHING. Just make it your first choice to try, not an absolute mandate.
So it's all about balance, and picking the right battles. There are benefits to standardization as long as you don't over-do it and create a monoculture.
Well, first of all, modules in Drupal are code plugins. The stuff you move from one side of the page to another is a "block".:-)
Drupal is great for getting something out quickly, but yes, for any serious site you are going to be using numerous "contrib" modules (the add-on systems you mention). Drupal's architecture is built around letting add-on modules do the powerful stuff, while core is an engine to enable them to do powerful stuff.
For instance, if you're building a complex site without the CCK and Views modules, you're missing 2/3 of what Drupal has to offer. You can build sites that look and function nothing like "normal Drupal" without touching core code if you know where to "bend" it, and there are a large number of places where Drupal is designed to bend. No, you can't crank out the NYTimes web site in a weekend, but you can't do that with any CMS, and any CMS vendor that claims they can is lying to you.:-)
A small sampling of Drupal sites launched in the last year or two:
If the response says that the tag opened before some text is never closed, it wouldn't be that hard for your regular submitter to correct the error and resubmit.
Regular Slashdot submitter? Maybe. Regular LiveJournal or MySpace submitter? Not a chance.
As a professional web developer and standards nazi, I'd agree with you if it weren't for one thing: User-supplied content.
For content generated by the site author or a CMS, I would agree. Sending out code that is not XHTML compliant is unprofessional. Even if you don't want to make the additional coding changes to your site to make it true XHTML rather than XHTML-as-HTML, All of the XHTML strictness rules make your code better, where "better" means easier to maintain, faster, less prone to browser "interpretation", etc. Even just for your own sake you should be writing XHTML-as-HTML at the very least. (True XHTML requires changes to the mime type and to the way you reference stylesheets, and breaks some Javascript code like document.write(), which are properly left in the dust bin along with the font tag.)
But then along comes Web 2.0 and user-supplied content and all that jazz. If you allow someone to post a comment on a forum, like, say, Slashdot, and allow any HTML code whatsoever, you are guaranteed to have parse errors. Someone, somewhere, is going to (maliciously or not) forget a closing tag, make at typo, forget a quotation mark, overlap a b and an i tag, nest something improperly, forgets a / in a self-closing tag like hr or br, etc. According to strict XHTML parsing rules, that is, XML parsing rules, the browser is then supposed to gag and refuse to show the page at all. I don't think Slashdot breaking every time an AC forgets to close his i tag is a good thing.:-)
While one could write a tidy program (and people have) that tries to clean up badly formatted code, they are no more perfect than the "guess what you mean" algorithms in the browser itself. It just moves the "guess what the user means" algorithm to the server instead of the browser. That's not much of an improvement.
Until we can get away with checking user-submitted content on submission and rejecting it then, and telling the user "No, you can't post on Slashdot or on the Dell forum unless you validate your code", browsers will still have to have logic to handle user-supplied vomit. (And user, in this case, includes a non-programmer site admin.)
The only alternative I see is nesting "don't expect this to be valid" tags in a page, so the browser knows that the page should validate except for the contents of some specific div. I cannot imagine that making the browser engine any cleaner, though, and would probably make it even nastier. Unless you just used iframes for that, but that has a whole host of other problems such as uneven browser support, inability to size dynamically, a second round-trip to the server, forcing the server/CMS to generate two partial pages according to god knows what logic...
As long as non-programmers are able to write markup, some level of malformed-markup acceptance is necessary. Nowhere near the vomit that IE encourages, to be sure, but "validate or die" just won't cut it for most sites.
The discrimination is "low cost to those who are looking to make money off of it" vs. "too expensive for those not trying to make money off it by selling per unit". That's a discriminatory situation.
Ogg isn't open vs closed MPEG-4; they're both open containers available for non-discriminatory licensing. There is no such thing as non-discriminatory licensing. If I have to beg permission of some patent holder to use it, then it is discriminatory. It's discriminating against people building players that do not have a revenue model (read: most FOSS players) with which to pay for licensing fees.
"Non-discriminatory" simply means that the patent holder can't charge Sony a different price per unit than they charge Microsoft. And they'll charge me that same fee, which is of course set based on the assumption that only Sony and Microsoft and companies of their size and revenue model are going to be licensing it. Can you afford $1 every time your movie player is downloaded by someone through APT on Debian/Ubuntu? I can't. That means that I am being discriminated against in terms of access to the codec.
When H.264 can be legally implemented by any "kid in his basement" and distributed to the world without any permission, license fee, or NDA involved, then we can discuss it as an "open web standard". Until then, it is neither open nor free, nor should it be a de jure "standard" for anything. Ogg/Vorbis+Theora, however, can be. Their relative technological merits are not in dispute.
And that's just the first few I remembered. Drupal scales just fine if you know what you're doing. If you don't, then you won't be able to make anything scale.
OK, from the vids and screen caps it looks visually stunning. I hope my system can handle it.:-) But it looks like just an engine port of the original Starcraft. OK, more units. Yawn. The rest looks exactly the same, just with lots of polygons. It's still an effectively 2D game.
Granted SC and BW is a really hard act to follow. But I was rather hoping for SC2 to break new ground. I'd love to see something like Homeworld: Cataclysm in the SC universe, with the graphics they're showing off for SC2. That would totally rock.
I guess we'll find out when it's actually released. Of course, given Blizzard's bad citizenship in the past several years, I don't know if I'll even want to buy it. (bnetd, FreeCraft, etc.)
As a Drupal developer for the past year and a half, I can't disagree more. Yes, Dries disagrees with major contributors often, and has shot down my ideas at times too, but on the whole the high standards that he (and the other committers and core contributors, of whom there are many) holds to have kept the system moving in the right direction. How many open source systems out there do have full coverage test suites for everything? A minority, I wager.
And of course Drupal's very architecture, hyper-modular like Eclipse and even more plugin-based than OSS darling Firefox, encourages pushing functionality out to contrib modules where it can be developed more rapidly and without weighing down the core system with extra code (read: extra bugs).
I don't know what the plans are as far as trademark and domain name ownership long term, as I'm not involved with the Association directly. I agree that it would be a good place for such things, but it was only just founded. Give it time to sort out the legal details. I know a few of the other people who are on the Association's board of directors, and I know they are not short-sighted people.
Seriously, as a current T-Mobile customer, where else am I going to go? I've still got over a year on my 2 year enslavement contract. Even when it's over, where do I go? Cingular? They play nice with the NSA, their customer service is terrible, and their QoS in my area is crap. Verizon? They've been crippling their phones for years. Sprint? Decent data plans, but they're CDMA which means device lock-in by definition. US Cellular? Also CDMA lock-in.
I just want a good GSM carrier in the US that will give me a family plan, a decent data plan, a non-insane lock-in, and half-way decent phones. Or hell, give me decent plans at a good enough price and I'll buy my own damned phones as God intended. Just sell me a SIM card and don't bankrupt me to use it, then stay out of my way. Is that so much to ask?
It just goes to show, if a standard isn't open, you can't trust it. If it's not open, it's not a standard. It's just the lock-in cage of the week.
I can tolerate proprietary software, but proprietary data and data formats are, quite frankly, a bigger problem. This is precisely why. It is also logically impossible to have DRM that does not do this, by nature.
Boycott DRM. All of it. Microsoft's, the **AA's, even Apple's. Yes, that means stop giving money to the pro-DRM campaign by buying iPods, even if it is weak DRM.
Even if there were 15 competing open formats for media that had decent market share, you could easily build a player that supported all of them at negligible marginal cost. With proprietary formats, and especially DRM, you get to pick which company is going to get the right to fleece you, rob you blind, take away your ability to use your own data, and then pull a bait and switch like this on you and make you do it all over again.
No, Bad stuff. Are these new features part of the ECMAScript standard? If not, then wtf are they doing in the browser?
When Microsoft "extends" the web without asking the standards committee, they get vilified (and rightly so). Mozilla shouldn't get a by on it just because they're cool. "Embrace and extend" is bad, no matter who's doing it.
Gah, just get me a standard that I can bloody use consistently!
What exactly is newsworthy about an agregator site? "Planet" sites are nothing new. How is this news?
Personally, I use Akregator, KDE's RSS reader, to pull in just the feeds I want anyway. (Yes, Slashdot is one of them.:-) ) So I get all my news pushed to me, I can read it whenever, and I don't need a 3rd party site to do it. You can do the same with a dozen services or applications.
Again, what's so interesting here? (And yes, I did glance at the site. I still don't get it.)
There's another performance issue you're forgetting: Multiple runtimes.
Sure, well-written Java with the right non-Swing toolkit can be quite nice. Python can do wonderful things. PHP runs mission-critical aviation systems that get zillions of hits..NET makes Windows development not suck. Even Javascript will be useful as a desktop language come KDE 4. And all will run on reasonably modern hardware rather well.
Now try running all of them at once.
Now you have the Java runtime, and the.NET runtime, and a Python runtime, and Mozilla's XUL runtime all sitting in memory at once, each running one or two programs. That "reasonably modern" computer if yours is now not quite so spiffy, is it?
Of course, MS's answer is "well just do it all in.NET". Sun's is "just do it all in Java". The open source world is largely ignoring the question entirely.:-)
That said, I do believe that "managed language" programs are the future. There are entire classes of bug and security hole that simply cannot exist in a language where you aren't futzing with memory directly (C/C++). I don't believe it's even possible to write a buffer overflow in Python or PHP (not sure about the others). The runtime, yes, but that's written once. You pay a cost for that, but in the long run it is a worthwhile cost.
Qt is about the only non-managed system I'd want to even think about coding for on the desktop or server. Handhelds and embedded systems, though, are an entirely different animal.
If it meant fewer people using IE, whatever the version, it would be a step forward for web standards. IE 7, from what I've seen, will still be well-behind the competition in terms of modernity.
Ha! Yes, I did mean "!(corporate stooge neocon)". I was referencing the fact that in 1999-2000, the DoJ had MS on the ropes and on the verge of being broken up. The first act of the Bush DoJ was to tell Microsoft "bad boy, don't do it again, now go back to business as usual."
January 5th: http://buytaert.net/drupal-7-to-be-released-on-january-5th-with-one-ginormous-party Before Duke Nukem. (Actually *all* Drupal releases ever have been released during Duke's development...)
To how many significant digits? We need to know what level of precision we're working with.
If you're into strategy and don't mind losing all of your free time and some of your work time, there's FreeCiv. Think Civilization recast as a full-on client/server multi-player setup. I've not played it recently (no time to game at all lately, too much code to write!) but the graphics requirements should be fairly modest.
The best advise I ever saw in terms of meeting people (it wasn't direct at me, but it was on a mailing list that I was on) was "if you want to meet and/or date people who are interested in X, you've got to put yourself where people interested in X are." That's true for any given definition of X.
Figure out what your interests are, geek or otherwise. Don't take a cooking class just to meet chicks if you don't want to know how to cook for your own sake. If you are interested in it, though, get out there and do it. Meet people. If you're looking for geeky relationships (friendly or romantic), find your local LUG, or an open source project you're into may have a local users group. If you're into Star Trek or role playing, look for a local fan club or D&D group or LARP. If you're a somewhat religious person, get involved with your church/synagogue/mosque/whatever. (Note: Do NOT do that if you are not genuinely at least somewhat religious.) Personally I'd recommend taking a massage class. Not only is it a very good skill to have, it's a skill that many people appreciate in a person (friendly or romantic) and my understanding is those classes tend to be mostly women, too. :-)
The geekier groups are likely going to be mostly male, but that's OK. You're trying to meet *people*, not *women*. The women come later, because they're people too. :-) (And acting like they're not is a great way to stay single.) Half the time you'll meet someone through someone else that you really like, that you wouldn't have met if you hadn't met the first person first. Friend-of-a-friend is a great way to meet people as well, if you bootstrap yourself first.
If you already have a few friends, see about tagging along with them to things they do. Odds are if they're your friends you have interests in common, which means you probably have *other* interests in common, too. If they're real friends, they'll be supportive of your endeavors.
I'll also add that when people ask me how I learned to dance, my answer is always the same: By being a bad dancer for a long time and not caring, until I got good at it. Socializing is a learned skill. It will take time to learn. Just remember that it's a much "softer" skill than programming, but that doesn't mean it's not as complex or challenging.
As others have said, expose students to all three methodologies (procedural, OOP, and functional) as early as possible. A language that supports all of the above can be good for that, or else pick languages with reasonably similar syntaxes (eg, they all use curly braces for code blocks) to reduce the mental overhead.
That said, I would do procedural first. It's the closest to what the computer actually does: Execute one instruction after another in order. It is also, therefore, the one with the least mental overhead. It's easier to explain a conditional or a loop in a procedural structure than a functional structure, I'd argue. (And in that case OOP is a superset of procedural, as the code within methods is still behaving procedurally.) So the 101 course should be in a procedural language, or using procedural style in a procedural/OO language.
I did OO next, but in hindsight I'd probably suggest functional second. It's the most "mathematically pure", and the one that forces you to think about what you're doing at a conceptual level the most. It's also the one they're least likely to use in practice out in industry, but what students learn about good design in a functional language (atomic functions, no side effects, logical thinking, etc.) will serve them in very good stead later on in their careers. I only had about a quarter of one class in which we covered functional languages and I just didn't get it at the time. Years later I finally figured out what functional programming was all about and even though I don't write functional code I've found my coding style drifting to be more functional-ish, and as a result much less bug-prone and, for me at least, easier to read.
Then put it together with good OOP. You then have the procedural stuff down pat, and the good practice of how to treat functions as discrete behaviors. An object, then, is just a larger chunk of discrete behavior bundled together. It introduces the complications of state, but the idea of each method as an atomic little bundle of behavior within that larger bundle should be a smooth transition from functions as an atomic little bundle of behavior.
All three are equally expressive, but knowing all three will give students a better understanding of *how to think about the problem at hand*, which is what school is all about. Even if you're not coding in one of those paradigms, you can still implement many of the same concepts in another paradigm where appropriate. (No-side-effects from functional, polymorphism and delegation from OO, and "how does the computer think" from procedural are all applicable in all paradigms, if you're coding properly.)
I argued much the same thing in much less space 2 years ago. :-) Most "MVC" web frameworks are anything but, and it is disingenous to claim that they are. It's a marketing gimmick for people that don't actually know what they're talking about.
I have long argued that MVC doesn't even make sense on the web to begin with. MVC is a great architectural model for live interactive systems, but a web site or web app is not a live interactive system. It's an asynchronous challenge/response system.
I blame Sun for completely abusing the term in their Java stacks (I think they called it "model 2"?), and Ruby on Rails for popularizing the wrong impression. MVC by definition requires a direct observer connection from View to Model. All web-MVC frameworks I've seen start with the initial statement that the Controller, not the View, is responsible for handling user interaction and communicating with the Model. Sorry, that's not MVC. It's not a bad model for the web, but it's not MVC. If anything it's closer to PAC.
See the link above for a lengthier analysis and links to Wikipedia. :-)
Really, the whole point of design patterns is to have a common vocabulary. How is that useful if you're going to bastardize your terminology due to stubborn ignorance?
With all due respect, why was PHP 4 being around preventing you from getting real work done (in 4 or 5)?
Shared web hosts. The problem with PHP 4 was that hosts weren't upgrading because projects weren't requiring PHP 5, and projects therefore couldn't require PHP 5 because none of the web hosts offered it. And so it was still in widespread use, so the PHP dev team had to keep supporting it. No one wanted to be the first to "jump", because whoever jumped first would get burned (either by a cost to upgrade servers that wasn't needed or by limiting your product to a small number of possible install servers).
So instead, we all jumped at once together. Now, developers can write PHP 5-dependent code with a reasonable level of confidence that users will be able to run it, either on their existing host or on any of 200+ web hosts that do offer PHP 5 out of the box.
And by "real work", I mean "not working around design flaws in PHP 4's object model and avoiding using utility routines that were added in PHP 5 because I can't rely on them being there".
Imagine not being able to use Linux 2.6 when developing system utilities, because no one is upgrading from 2.4, even though 2.6 has been out for 4 years.
For those wondering how many projects will be left out in the cold, here's your answer:
http://gophp5.org/
Over 100 PHP projects and products and over 200 web hosts that have been committed to PHP 5.2 and no earlier for over a year. GoPHP5 launched before the PHP development team announced an EOL for PHP 4. While I don't believe for a second that it was the only reason they made that decision, I also don't believe for a second that it didn't have a big influence on it.
The push to drop PHP 4 support came from people using PHP in production in the first place. Those of us who get paid to write PHP code are cheering at the top of our lungs, because now we can actually get real work done.
Go PHP 5!
It depends on the situation. What sort of company? What size?
If everything you do is web, then standardizing on [PHP|Python|Ruby] for all your web stuff makes sense. They're all close enough functionality-wise, and it will make mixing and matching your code and coders easier.
Similarly, doing server-side programming sometimes in C#, sometimes in Java is probably wasteful. They're both close enough in their approach and capabilities that having to learn and remember both is wasteful.
Standardizing that you'll use [C#|Java|Python|C++] for every line of code written? Nonsense. That's over-standardization. In at least some cases any one of those is going to suck royally.
Standardizing your source control system? Definitely a good idea, unless you have to interact with a 3rd party open source project that is using something else. Even then, you should use just one for all of your internal stuff and then make sure someone knows how to use whatever the 3rd party uses. (I suggest svn myself, but some people prefer distributed RCSes. Pick what you like.)
Standardizing your IDE? Only if you want to make 2/3 of your developers less productive. I can see an argument in favor if you are paying per seat for the IDE and want to only have one vendor and site license to deal with, certainly. But if you're paying that much for an IDE, you need to switch to an open source IDE anyway. :-) At my company we offer a standardized IDE for all programmers, but half of them use something else at least half the time. That's fine, as long as they get the job done.
Same framework? Same argument as language. Within a given realm, sure, it makes sense. Use one, or maybe two, frameworks for your web stuff. Use one for your desktop stuff. But don't presume that you MUST use that for EVERYTHING. Just make it your first choice to try, not an absolute mandate.
So it's all about balance, and picking the right battles. There are benefits to standardization as long as you don't over-do it and create a monoculture.
Well, first of all, modules in Drupal are code plugins. The stuff you move from one side of the page to another is a "block". :-)
:-)
:-)
Drupal is great for getting something out quickly, but yes, for any serious site you are going to be using numerous "contrib" modules (the add-on systems you mention). Drupal's architecture is built around letting add-on modules do the powerful stuff, while core is an engine to enable them to do powerful stuff.
For instance, if you're building a complex site without the CCK and Views modules, you're missing 2/3 of what Drupal has to offer. You can build sites that look and function nothing like "normal Drupal" without touching core code if you know where to "bend" it, and there are a large number of places where Drupal is designed to bend. No, you can't crank out the NYTimes web site in a weekend, but you can't do that with any CMS, and any CMS vendor that claims they can is lying to you.
A small sampling of Drupal sites launched in the last year or two:
http://www.imamuseum.org/
http://artsci.wustl.edu/
http://www.artic.edu/aic/collections
http://www.motogp.com/
http://gigaom.com/
http://donna.be/
http://www.fastcompany.com/
http://www.flipkowlier.be/
http://popsci.com/
http://rockband.com/
And several dozen from SonyBMG Music, such as:
http://www.pinkspage.com/
http://www.avrillavigne.com/
http://jenniferlopez.com/
http://britney.com/
You can do very non-Drupaly sites with Drupal if you learn to embrace contrib modules.
(Disclaimer: I worked on several of the sites listed above.)
Regular Slashdot submitter? Maybe. Regular LiveJournal or MySpace submitter? Not a chance.
As a professional web developer and standards nazi, I'd agree with you if it weren't for one thing: User-supplied content.
:-)
For content generated by the site author or a CMS, I would agree. Sending out code that is not XHTML compliant is unprofessional. Even if you don't want to make the additional coding changes to your site to make it true XHTML rather than XHTML-as-HTML, All of the XHTML strictness rules make your code better, where "better" means easier to maintain, faster, less prone to browser "interpretation", etc. Even just for your own sake you should be writing XHTML-as-HTML at the very least. (True XHTML requires changes to the mime type and to the way you reference stylesheets, and breaks some Javascript code like document.write(), which are properly left in the dust bin along with the font tag.)
But then along comes Web 2.0 and user-supplied content and all that jazz. If you allow someone to post a comment on a forum, like, say, Slashdot, and allow any HTML code whatsoever, you are guaranteed to have parse errors. Someone, somewhere, is going to (maliciously or not) forget a closing tag, make at typo, forget a quotation mark, overlap a b and an i tag, nest something improperly, forgets a / in a self-closing tag like hr or br, etc. According to strict XHTML parsing rules, that is, XML parsing rules, the browser is then supposed to gag and refuse to show the page at all. I don't think Slashdot breaking every time an AC forgets to close his i tag is a good thing.
While one could write a tidy program (and people have) that tries to clean up badly formatted code, they are no more perfect than the "guess what you mean" algorithms in the browser itself. It just moves the "guess what the user means" algorithm to the server instead of the browser. That's not much of an improvement.
Until we can get away with checking user-submitted content on submission and rejecting it then, and telling the user "No, you can't post on Slashdot or on the Dell forum unless you validate your code", browsers will still have to have logic to handle user-supplied vomit. (And user, in this case, includes a non-programmer site admin.)
The only alternative I see is nesting "don't expect this to be valid" tags in a page, so the browser knows that the page should validate except for the contents of some specific div. I cannot imagine that making the browser engine any cleaner, though, and would probably make it even nastier. Unless you just used iframes for that, but that has a whole host of other problems such as uneven browser support, inability to size dynamically, a second round-trip to the server, forcing the server/CMS to generate two partial pages according to god knows what logic...
As long as non-programmers are able to write markup, some level of malformed-markup acceptance is necessary. Nowhere near the vomit that IE encourages, to be sure, but "validate or die" just won't cut it for most sites.
The discrimination is "low cost to those who are looking to make money off of it" vs. "too expensive for those not trying to make money off it by selling per unit". That's a discriminatory situation.
"Non-discriminatory" simply means that the patent holder can't charge Sony a different price per unit than they charge Microsoft. And they'll charge me that same fee, which is of course set based on the assumption that only Sony and Microsoft and companies of their size and revenue model are going to be licensing it. Can you afford $1 every time your movie player is downloaded by someone through APT on Debian/Ubuntu? I can't. That means that I am being discriminated against in terms of access to the codec.
When H.264 can be legally implemented by any "kid in his basement" and distributed to the world without any permission, license fee, or NDA involved, then we can discuss it as an "open web standard". Until then, it is neither open nor free, nor should it be a de jure "standard" for anything. Ogg/Vorbis+Theora, however, can be. Their relative technological merits are not in dispute.
A few of the organizations that use Drupal on a large scale successfully:
http://www.mtv.co.uk/
http://www.theonion.com/
http://dead.net/ (The Grateful Dead site)
http://goingon.com/ (Forbes. Yes, that Forbes.)
http://playboy.de/ (Playboy Germany, NSFW)
http://www.fighthunger.org/ (The UN)
And that's just the first few I remembered. Drupal scales just fine if you know what you're doing. If you don't, then you won't be able to make anything scale.
OK, from the vids and screen caps it looks visually stunning. I hope my system can handle it. :-) But it looks like just an engine port of the original Starcraft. OK, more units. Yawn. The rest looks exactly the same, just with lots of polygons. It's still an effectively 2D game.
Granted SC and BW is a really hard act to follow. But I was rather hoping for SC2 to break new ground. I'd love to see something like Homeworld: Cataclysm in the SC universe, with the graphics they're showing off for SC2. That would totally rock.
I guess we'll find out when it's actually released. Of course, given Blizzard's bad citizenship in the past several years, I don't know if I'll even want to buy it. (bnetd, FreeCraft, etc.)
As a Drupal developer for the past year and a half, I can't disagree more. Yes, Dries disagrees with major contributors often, and has shot down my ideas at times too, but on the whole the high standards that he (and the other committers and core contributors, of whom there are many) holds to have kept the system moving in the right direction. How many open source systems out there do have full coverage test suites for everything? A minority, I wager.
And of course Drupal's very architecture, hyper-modular like Eclipse and even more plugin-based than OSS darling Firefox, encourages pushing functionality out to contrib modules where it can be developed more rapidly and without weighing down the core system with extra code (read: extra bugs).
I don't know what the plans are as far as trademark and domain name ownership long term, as I'm not involved with the Association directly. I agree that it would be a good place for such things, but it was only just founded. Give it time to sort out the legal details. I know a few of the other people who are on the Association's board of directors, and I know they are not short-sighted people.
Seriously, as a current T-Mobile customer, where else am I going to go? I've still got over a year on my 2 year enslavement contract. Even when it's over, where do I go? Cingular? They play nice with the NSA, their customer service is terrible, and their QoS in my area is crap. Verizon? They've been crippling their phones for years. Sprint? Decent data plans, but they're CDMA which means device lock-in by definition. US Cellular? Also CDMA lock-in.
I just want a good GSM carrier in the US that will give me a family plan, a decent data plan, a non-insane lock-in, and half-way decent phones. Or hell, give me decent plans at a good enough price and I'll buy my own damned phones as God intended. Just sell me a SIM card and don't bankrupt me to use it, then stay out of my way. Is that so much to ask?
It just goes to show, if a standard isn't open, you can't trust it. If it's not open, it's not a standard. It's just the lock-in cage of the week.
I can tolerate proprietary software, but proprietary data and data formats are, quite frankly, a bigger problem. This is precisely why. It is also logically impossible to have DRM that does not do this, by nature.
Boycott DRM. All of it. Microsoft's, the **AA's, even Apple's. Yes, that means stop giving money to the pro-DRM campaign by buying iPods, even if it is weak DRM.
Even if there were 15 competing open formats for media that had decent market share, you could easily build a player that supported all of them at negligible marginal cost. With proprietary formats, and especially DRM, you get to pick which company is going to get the right to fleece you, rob you blind, take away your ability to use your own data, and then pull a bait and switch like this on you and make you do it all over again.
I choose "None of the above". You should do.
http://www.defectivebydesign.org/
No, Bad stuff. Are these new features part of the ECMAScript standard? If not, then wtf are they doing in the browser?
When Microsoft "extends" the web without asking the standards committee, they get vilified (and rightly so). Mozilla shouldn't get a by on it just because they're cool. "Embrace and extend" is bad, no matter who's doing it.
Gah, just get me a standard that I can bloody use consistently!
What exactly is newsworthy about an agregator site? "Planet" sites are nothing new. How is this news?
:-) ) So I get all my news pushed to me, I can read it whenever, and I don't need a 3rd party site to do it. You can do the same with a dozen services or applications.
Personally, I use Akregator, KDE's RSS reader, to pull in just the feeds I want anyway. (Yes, Slashdot is one of them.
Again, what's so interesting here? (And yes, I did glance at the site. I still don't get it.)
There's another performance issue you're forgetting: Multiple runtimes.
.NET makes Windows development not suck. Even Javascript will be useful as a desktop language come KDE 4. And all will run on reasonably modern hardware rather well.
.NET runtime, and a Python runtime, and Mozilla's XUL runtime all sitting in memory at once, each running one or two programs. That "reasonably modern" computer if yours is now not quite so spiffy, is it?
.NET". Sun's is "just do it all in Java". The open source world is largely ignoring the question entirely. :-)
Sure, well-written Java with the right non-Swing toolkit can be quite nice. Python can do wonderful things. PHP runs mission-critical aviation systems that get zillions of hits.
Now try running all of them at once.
Now you have the Java runtime, and the
Of course, MS's answer is "well just do it all in
That said, I do believe that "managed language" programs are the future. There are entire classes of bug and security hole that simply cannot exist in a language where you aren't futzing with memory directly (C/C++). I don't believe it's even possible to write a buffer overflow in Python or PHP (not sure about the others). The runtime, yes, but that's written once. You pay a cost for that, but in the long run it is a worthwhile cost.
Qt is about the only non-managed system I'd want to even think about coding for on the desktop or server. Handhelds and embedded systems, though, are an entirely different animal.
If it meant fewer people using IE, whatever the version, it would be a step forward for web standards. IE 7, from what I've seen, will still be well-behind the competition in terms of modernity.
Ha! Yes, I did mean "!(corporate stooge neocon)". I was referencing the fact that in 1999-2000, the DoJ had MS on the ropes and on the verge of being broken up. The first act of the Bush DoJ was to tell Microsoft "bad boy, don't do it again, now go back to business as usual."