Domain: joelonsoftware.com
Stories and comments across the archive that link to joelonsoftware.com.
Comments · 1,628
-
Re:Not for Win32 compatibility
> "As Wine proves, any reimplementation of the Win32 API is inevitably not going to be as good as the real thing."
Yeah, most of my pet spywares fail to run correctly under wine.
Actually, I get the distinct feeling, with Vista, the Wine is really, really close to a tipping point. Wine is an example of Microsoft losing control of their API. Go ahead, read the linked article, then re-read this post.
Assume that:
1) Microsoft's core strength is their Win32 API, with massive investments by business and companies the world over in it.
2) Microsoft is losing the ability to alter their own API. Much like Intel trying to "clean up" the i386 architecture with the Itanic (I mean, Itanium) only to be slapped back by AMD's Opteron chipset,
3) As Microsoft's implementation of the Win32 API becomes increasingly hassle-prone, their apparent value will drop while re-implementations of the Win32 API (Read: Wine) continue to improve.
Already, most software works or "mostly works" with Wine. I routinely run IE with Flash on my Fedora Core 6 laptop in Wine. How long before Wine becomes a "target platform" for software vendors who are otherwise locked into the Win32 API?
I'm guessing that day is within 5 years, maybe as little as two years, if Apple gets in on the act as well. I mean, what Windows-based software vendor ISN'T going to make sure their Win32 applications don't work under Apple/Wine if it's officially blessed by Apple? -
Re:IP Laws?They talk about a "formal approach to code scavenging" without even coming close to explaining what exactly that MEANS.
Agreed. Reading TFS, I thought it was going to be yet another "we can make programming like Lego!" thing. (Which it ain't, and probably never will be. Bonus reference: "Lego" is mentioned in the second paragraph of this article about Steve Jobs/NeXT/WebObjects from Wired. God bless Wired and their eternally fucked-up CMS that can't serve images for any story in the archive and, this week, shows the actual HTML code that should be formatting the Question-and-Answer portion of the article.)
Reading TFA, I really don't know much more than I did before. This is the best I could come up with:Code scavenging is seen as the most frequent and least complex way of re-using code and has been common practice at an informal level since programming first began. Programming is difficult to teach and most programmers learn their chops by looking at working code and using it as the basis for building their own programs. In other words, they "scavenge" the good bits and tweak them to a new purpose.
The term scavenging appears to have first surfaced as a formal concept in a 1992 paper by Charles Krueger of Carnegie Mellon University. It was tested by academics in the 1990s but rejected because it yielded few gains for a lot of effort.
According to Hackett, code scavenging is worth re-visiting because the Web makes it easier to find code and re-use it. He points to sites where massive amounts of existing code are available for potential scavenging such as Google code search, Sourceforge, Code Project, Microsoft's Codeplex, and O'Reilly's Code Search. Others include the Free Software Foundation (FSF), FreeVBcode.com, Freecountry and Freshmeat.So, code scavenging is... um, re-use? Can anyone make better sense of that than I can?
"In other words, they 'scavenge' the good bits and tweak them to a new purpose."
Um, no. You scavenge the pieces you need, not necessarily the good bits. Have you ever been looking for some code to do parse phone numbers, and while looking at source, said "Hey! This looks like a great way to compare two lists!" Probably not. You're only looking for formatting code, so that's all you see, so that's all you get. Looking at source is not like looking at produce at the food store, where you can walk by the tomatoes and they catch your eye because they're perfectly ripe and really, really nice-looking.
Rather than searching Google, I think every good programmer should take the time to create a really good library. I don't mean take the time writing great code, I mean take the time to organize it into a proper library: make one, clean, well-commented version; put things into variables, ($tableName in queries instead of the actual table name, etc.) and pull code from that when you need it, rather than just copying-and-pasting from the last place you remember using it and then changing all the variable names, table names, etc.
I plan to make mine Real Soon Now. :-)
>> So, how quickly would you run afoul of Intellectual Property laws doing this?
> That's a great knee-jerk reaction.
No, that's just the first thing that popped into his head. (Pardon me if I'm putting words in your mouth, Mr. Gambit.) With that one sentence, he did not say (or imply) "The only people who would use this are thieves." He just put out that question for people to discuss. That topic came up here just a couple days ago. I highly recommend reading that discussion. There are some very good points; among them, that if you publish something with no licensing info, it is copyrighted to you by default. (In the US at least, -
Re:As a previous customer...Thanks for the heads up. I'm only signed up for six months, but the big issue for me was price: it's about $25 less than cable, and, in addition, Millenium was never responsive when the line went myteriously dead and such. Oh, and it also galled me that cable TV was only $15 or so more per month, compared to $50 or so as a standalone package -- but I don't have a TV (sorry to be this guy) and felt like they were jerking me around. Yes, I know you want to cell me bundles, but I have zero use for one and don't want to be part of your marketing ploy.
So far the dl/ul speeds are pretty good, and I haven't noticed the 6 - 9 p.m. slowdown that used to occur. This may become a bigger problem as more people sign up. I do live in Seattle, about a mile from downtown, so if anywhere in the city is going to get good connections it ought to be people in my area.
I'm sorry to hear the abysmal stories about ClearWire but am not especially surprised by them, given how low their nominal competition sets the bar. I can only hope the competition from ClearWire improves cable service, much as mobiles made landline telecos moderately more responsive and satellite TV forced cable companies to improve their offerings, if not their service.
-
The experience is in the details
Those futuristic FX barely have to do with what the final user get as 'experience'. The real experience is about the feelings of the user.
Unfortunately, the most common feelings provoked by today's interfaces are anger and frustration. That's because the interface is littered with rough/unpolished edges, and because software is designed as a bag full of (unrelated) features - instead of as a mean to achieve an end - the process to actually use a feature is rarely taken into the design, not to say tested with users to test it and debug it with the user using it.
A really good development in user experience would be a way to force programmers to follow
this kind of advice. -
So apple doesn't think ahead? Only Microsoft....?
Joel spotted the real difference between iPod and Zune:
http://www.joelonsoftware.com/items/2007/10/05.html -
Re:The problem with waiting for MS
My buddy is a engineer who does a lot of CAD stuff, and guess what? The software he learned to use at school (Cal Poly Pomona) and now uses at work doesn't work on his Vista notebook his GF bought for him. Hahaha ooops I mean it's not funny.
But does your buddy's software work with WINE? WINE is getting good enough that even apps like IE work well with it, and it's nearing a "1.0" release, effectively a release of Windows XP-ish. I suspect that WINE may well become the "default" Windows in a decade or so. I don't believe that Microsoft can truly grow beyond the Win32 API. Here's why... -
In the same vein
Joel Spolsky does an entertaining job of ripping another phone with poorly-designed software to pieces here.
-
Re:Microsoft is simply bland..
As requested:
The Initiating Story: http://www.joelonsoftware.com/items/2006/11/21.html
The Inside Story: http://moishelettvin.blogspot.com/2006/11/windows-shutdown-crapfest.html
Slashdot Coverage: http://developers.slashdot.org/article.pl?sid=06/11/27/1728231 -
Re:A lot better than software
10-12%? Thats great. I hear the shareware industry trial to purchase conversion rate is more like 1%.
http://discuss.joelonsoftware.com/default.asp?biz.5.368726.30
Would you be willing to share the URL to your product?
Or at the very least a generalization of the size of your customer base? Is it in the hundreds? thousands? ten thousands? -
Re:The university situation/Why designers prefer MEven though I use both Macs and Windows, I have no clue where XP or Vista stand with Color Management. I only use Color Management on Macs.
There are clear Font Rendering differences, though. Check out this recent article by Joel Spolsky, in which he writes: The nice thing about the Apple algorithm is that you can lay out a page of text for print, and on screen, you get a nice approximation of the finished product. This is especially significant when you consider how dark a block of text looks. (...) The advantage of Microsoft's method is that it works better for on-screen reading. Both rendering techniques have their advantages; Apple's is just better suited for designers who design for print. -
Re:310 developers?
That is a lot of coders. Let's hope they go about their work in an organised and efficient way. Following some of these tips wouldn't hurt.
-
Re:Low System Spec a big plus too
http://www.joelonsoftware.com/articles/fog0000000069.html
I heartily agree. And furthermore, I haven't really enjoyed an id engine-based game since Quake II. All of the games that came after it just felt less attractive in terms of motion and firing. There's something too fluid about Quake 3 and everything that came after it.
-
Re:Am I reading that right?
Actually, as the legend says, this was one of the turning points for MS, back the at the time when Lotus 1-2-3 reigned.
Back there, while Lotus was cramming everything to fit in 640k of memory, MS was making Excel w/o concerns for machines, and they got to ship earlier.
Than, by the time 1-2-3 shipped, modern machines were cheap enough, so people went with Excel instead
It really makes sense, in a way.
http://joelonsoftware.com/items/2007/09/18.html -
Joel Spolsky thinks it's a rendering bug.
-
Smart, but Don't Get Things DoneHilarious! Joel wrote flippantly about this exact intellectual exercise here:
http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html People who are Smart but don't Get Things Done often have PhDs and work in big companies where nobody listens to them because they are completely impractical. [...] For example, they will say, "Spreadsheets are really just a special case of programming language," and then go off for a week and write a thrilling, brilliant whitepaper about the theoretical computational linguistic attributes of a spreadsheet as a programming language. Smart, but not useful." -
Let's just wait and see!
I read this and thought of Joel Spolsky's recent blog post: http://www.joelonsoftware.com/items/2007/09/18.html/. I imagine MS know just what they are doing and are positioning Vista for the typical desktop computer of about 18 months from now.
Let's just wait and see before we declare MS to be dead! -
Re:7) How far will it scaleAfter 30 years development, "How far will it scale" is
* the question that scares me most,
* the one that you can never get honest information about from OS or component suppliers,
* and the one that's hardest to test because the most-used features are rarely those you expected. After my 10 years of development, "How far will it scale" is- the question that scares me most,
- based only on an honest assessment of how I structure the software, and
- utterly irrelevant to OS or component suppliers
Seriously - if you want to scale, you need to avoid the Shlemiel the painter's algorithm. Avoid this sucker with passion and verve. Hunt for ANY CASE where this algorithm is hard at work, sucking away CPU cycles endlessly towards the abyss of swapped memory, session timeouts, and database deadlocks. When you've learned to look for it, you'll be amazed at just how rampant this nasty little bugger actually is.
I wish there was something more to it than that, but I've seen time, and time, and time again, lousy performance made snappy simply by finding and refactoring code that uses this kind of algorithm. Simply put, it's code that processes each bit of data slower as you add more total information to process.
And that's where PHP shines incredibly bright. For as much as you'd hate to admit it, Java's server "shared" VM is a variation of the dreaded painter's algorithm, as is any other form of "shared environment". PHP shares nothing. Each hit is unique, and the only thing that's shared are a few session variables. So, if you structure your application right, you can have 100 servers all serving your PHP application, no matter how computationally dense it is.
And that, brother, is the key to real scalability - Knowing that you can add performance in a linear fashion as the amount of information processed grows. If load climbs faster than the amount of information being processed, hunt the painter! He's in there somewhere... - the question that scares me most,
-
Re:The Appropriate Successor to Windows 98 SE?
Congratulations. You've made the all-to-common, stupid mistake of equating UI look and feel. They are two very different things. Almost everything you listed could be preserved while still satisfying most customers by rolling the look back to something less gaudy.
However, most people would disagree that the feel of the UI is really any better, let alone worth the hassle of an upgrade and the requisite re-learning. And even if the mechanics of the UI are an improvement for you, it still doesn't deserve praise because of the vast number of obvious, easily fixed flaws. -
Re:tea leaves and biz speakIt's pretty simple, really. How many jobs have you applied for? Two? Three? If you are serious, you will probably have applied for ten or more. If everyone is applying for ten or more, then every employer will receive a lot of applications, but there will be a lot of duplicates. Three applications is not very many.
As for why you weren't picked, there are a couple possibilities:
- You are just not very good. In this case, the solution is simple (if not easy). Join an open source project, start your own, or do whatever it takes to get better. Maybe just reading through some guides like a zillion monkeys or even Joel. Programming is a skill, and can be developed.
- Someone else who applied was better. Whatever, it happens no matter how good you are. Move on, apply somewhere else.
- You have bad interview skills. It happens. Read What Color is Your Parachute
-
Re:The 85% SOLUTION
This argument gets heard all the time. But it's simply not true. Yes, you can satisfy 80% of the trips made by an average family with an electric vehicle. But that's quite different than satisfying 80% of the USERS. That occasional trip, that 1 in 5 trip that can't be done by an EV (easily) is a show-stopper.
Take a look at the 80/20 myth for a good explanation of how this dynamic works out in practice. -
"9 different kinds of OFF"
I am reminded of Joel Spolsky's rant about Windows Vista having 9 different kinds of Off:
http://www.joelonsoftware.com/items/2006/11/21.html
I would have expected Apple to get it less wrong.... -
Re:Swedish code is still legible
Using Hungarian notation to indicate that a variable is an integer may be pointless, but using a prefix to indicate that a variable represents an integral number of twips rather than pixels, or to distinguish between string variables which hold sql strings and string variables which hold html strings is useful. Even more so if you are coding in a language that doesn't support typedefs.
http://www.joelonsoftware.com/articles/Wrong.html
Adelle. -
Re:Swedish code is still legible
It's not a waste of time. Actually typing code is maybe 1% of the total time it takes to develop something and it can easily save hours in analysis.
See http://www.joelonsoftware.com/articles/Wrong.html for more details.
Also, sometimes it's just not possible, because not all languages have a modern IDE that supports it. -
Re:I know why it's been 10 years
I showed this to a friend of mine who graduated in chemical engineering and thus had only a basic understanding of programming (some Matlab, some basic C etc) and immediately recognized the power and elegance of functional programming.
-
Re:How about this
who decided that TextLikeThis is more readable than text_like_this?
AFAIK, there actually have been studies done that found camel case to be easier to read than words separated with underscores. It's certainly easier to type. However, "found to be better by most" = "always better for everyone" so if you prefer to code like_this, by all means, do so.
I use lowerCamelCase instead of UpperCamelCase so my single-word variables can be lowercase and not look out of place, and I value readability by humans more than absolute consistency* so I would indeed use 'XMLparser' instead of 'XmlParser'.
* I typically work alone, so I can do that. Anyone working on big projects should probably create an absolute set of rules and follow them. This PDF (120k) is a fun read and a good example. -
Re:I beleive the technical term isSorry if I sound stupid, I should probably go bust out something in python... by dynamic you mean python is more like Perl:
my $var = "Could be a number, or a string, or a hashref";
or more like C#
int var = 102;
string astring = "My Happy String";
I'd think with the former perl like syntax the only way you could really parse the language in the editor and do good intellesense is to damn near compile the code in real time somehow. With C# and language like it, the editor only needs to look "skin deep" for the most part to determine the structure of variables and the language.
That said.. I'm no CS major, and alas I cannot write my own compiler. Not a superstar programmer here :-). http://xkcd.com/208/ But, intelisence can apply certain things to the variables, no matter what their type, since this can be done in the language anyway.
my $i = 4;
$i = func( $i );
$i = $i * 2;
What's to say that the value of $i doesn't become alpha in func? That could be optional...
Intelisense sucks anyway. Use vim and ctrl-n/p, it's much more sane than that method completion anyway. There's so many benefits to learning how to use vim that it's just silly to list it all here. I have to spend all day listening to people crap on about the latest addons to VS or whatever everyone is wanking over these days that it makes one just want to switch off and use something that doesnt come complete with hype, and it's more productive.
VS is just a toy. -
Re:I beleive the technical term is
Sorry if I sound stupid, I should probably go bust out something in python... by dynamic you mean python is more like Perl:
my $var = "Could be a number, or a string, or a hashref";
or more like C#
int var = 102;
string astring = "My Happy String";
I'd think with the former perl like syntax the only way you could really parse the language in the editor and do good intellesense is to damn near compile the code in real time somehow. With C# and language like it, the editor only needs to look "skin deep" for the most part to determine the structure of variables and the language.
That said.. I'm no CS major, and alas I cannot write my own compiler. Not a superstar programmer here :-). -
Re:ROFL
Q: Microsoft's biggest competition is...
1) Linux
2) Mac OS X
3) Old MS products
The correct answer is 'C'. I know a company that is *very* Microsoft-centric. Last year they were announcing ambitious plans to move to Vista as soon as possible. Not only are they still on XP, they evidently now have no plans to move to Vista. I guess a cold dose of reality was enough to bring them to their senses.
MS is facing two problems with regard to Vista adoption: 1) Vista mostly sucks* and 2) XP is mostly OK. Either one would be an obstacle. Both together are nearly insurmountable.
In the next 2-3 years, I predict...
- most apps will work OK on Vista
- driver issues will have been worked out
- another service pack or two will shave off all the rough edges--they'll fix that networking/multimedia issue, they'll have better default settings so UAC isn't as annoying, etc.
- OEM hardware with Vista will work pretty well
Basically, they'll get past the current state of Vista having "no redeeming merits to overcome the compatibility headaches it causes." But I really do think that will take 2-3 years, and it'll be interesting to see what MS does in that time. I'm sure Vista will eventually be the dominant OS, but I think it'll take that long--which is too bad, because spam simply will not go away until the bulk of the boxes on the Internet are not insecure Windows systems. (Of course, if Mac OS X or Linux wins, that'll be fine too.) MS really screwed up, though. Once Vista was spiraling out of control, they should have pulled back and did what Apple did with OS X--release a whole new OS with the old OS in a VM. That way they could have had a relatively cruft-free OS with the old crufty stuff contained in a VM, rather than making the single largest collection of cruft ever.
* where "mostly sucks" means "some things that used to work are now broken, and the things that are new and work aren't really that great." -
JoelOnSoftware
Joel Spolsky is in the same boat as you (as am I, for that matter). He was great technically, so they made him a manager. http://www.joelonsoftware.com/ has some wonderful tips about managing technical folks.
But really, the best advice I have is: Quite and find a job where you can still write code. Management is dreadful, especially if you are one of those people who likes to do things themselves. -
Re:Read Rands!!
Ditto for Joel Spolsky. I don't always agree with these guys, but they definitely know what they're talking about, and knowing what they knew saved my butt on a couple of occasions.
-
Rands and Joel
As an engineer / architect who has had to deal with some frustrating management (most of it indirect, fortunately), I've found these two blogs to be both enlightening and useful for feeding to managers. Rands especially, as a developer who moved into management with a purpose, has some very insightful commentary. He's also recently published a book, which I'm planning on giving to some of my favorite managers (who despite their sincere desire to treat us well, sometimes have a hard time understanding the geeks they herd.)
Rands on Management: http://www.randsinrepose.com/cat_management.html
Rands's Book: http://managinghumans.com/ (Direct to Amazon: http://www.amazon.com/Managing-Humans-Humorous-Sof tware-Engineering/dp/159059844X)
Joel on Software: http://www.joelonsoftware.com/
Good luck! It's great to hear about people who care enough to want to do it right. -
Re:Right idea, wrong reasons!Huh? Are we using JBuilder? Bean... ah, we're talking J2EE. Something to build...something to build... if only we had 'factories' or something. You do realize that 'factories' are old hat? You need a factory factory factory these days... What can I say, I'm old skool for a 23 year old
;) Besides, I took Java twice with a semester in between and the language changed (5 to 6); that makes me an old timer with 'back in the day' war stories or something. Joel on Software, good call, man! One of the few management figureheads from Microsoft that I actually care to pay attention to! Perhaps that's also because he's no longer with Microsoft... but, I digress. -
Re:Right idea, wrong reasons!Huh? Are we using JBuilder? Bean... ah, we're talking J2EE. Something to build...something to build... if only we had 'factories' or something. You do realize that 'factories' are old hat? You need a factory factory factory these days...
-
Re:Forbes right on top of last week
My methodology is a lot less "poor me" and more "what can be done here".>
And, gee, I actually pointed out things that can be, and are, being "done here". But I can see how you'd miss it. I mean, look at me say "It'll happen eventually. Open standards are in the interest of the consumers, and eventually they spread. Consider how many networking models there were in the 80's, and then by the late 90's it was all TCP/IP, despite vendors attempts at lock-in. The same will happen with open-source software and general computing, it'll just take a while." That just reeks of "poor me" despair.
And I didn't 'blame the competition' any more than "to an extent". IBM owned computing until the late 80s, early 90s, but they made mistakes that MS took advantage of. It's not like IBM couldn't have stopped MS if they'd recognized the situation, but they were wedded to their mainframe business. Now MS is wedded to (a really ill-advised level of) backward compatibility (see the "Raymond Chen" stuff in that link) and the Windows codebase, which has grown to a size that it's unmanageable by the techniques they use. This leads to security issues (sure, it's possible to secure windows, but look how many people have trouble getting a regular oil change and ask yourself if they can keep a computer secure) and huge shipping delays and massive feature dumps so they can ship at all. Those are mistakes, and Linux is capitalizing on them.
You're just filing me away as another Linux zealot, even though I explicitly recognize the problem you point out and have listed specific strategies that are being pursued to deal with it. If that's your bag, well, okay, have a nice life and all.
-
Re:You're not very smart, are you?
Why are the "migration tools" all one way, instead of synchronizing between Linux and Windows?
The most ironic part of this is that being able to read and write Lotus 123 spreadsheets was one of the main reasons why MS Excel became dominant. -
Joel on SoftwareI'm surprised nobody's mentioned Joel On Software's coverage of this from July 2005. He has the best explanation for why a company that wants to have great software can't settle for good developers.
"So, why isn't there room in the software industry for a low cost provider, someone who uses the cheapest programmers available? (Remind me to ask Quark how that whole fire-everybody-and-hire-low-cost-replacements plan is working.)
Here's why: duplication of software is free. That means that the cost of programmers is spread out over all the copies of the software you sell. With software, you can improve quality without adding to the incremental cost of each unit sold.
Essentially, design adds value faster than it adds cost.
Or, roughly speaking, if you try to skimp on programmers, you'll make crappy software, and you won't even save that much money."
..."The real trouble with using a lot of mediocre programmers instead of a couple of good ones is that no matter how long they work, they never produce something as good as what the great programmers can produce.
Five Antonio Salieris won't produce Mozart's Requiem. Ever. Not if they work for 100 years.
Five Jim Davis's -- creator of that unfunny cartoon cat, where 20% of the jokes are about how Monday sucks and the rest are about how much the cat likes lasagna (and those are the punchlines!)
... five Jim Davis's could spend the rest of their lives writing comedy and never, ever produce the Soup Nazi episode of Seinfeld." -
Re:Internal Inconsistency in his Argument
He's absolutely correct.
There are numerous studies to support this. Taking about 20 seconds to look for one: http://www.joelonsoftware.com/articles/HighNotes.h tml.
Also take a look at "Code Complete" by Steve McConnell and "Peopleware" by DeMarco and Lister. Actually, I've seen credible estimates of a factor of 25 times productivity between best and worst programmers. Given the negative productivity I've witnessed, even this may be an under-estimate.
This should be a well-known fact but it isn't. A major part of the problem is cluelessness by the people doing the hiring. You probably can't scale salary by productivity but how about something like the square root of productivity? Of course, the hiring of Bob Nardelli, the mediocre CEO who did nothing at Home Depot, by Chrysler shows how unrelated salary and effectiveness can be. -
Re:A question to the world:
Has anyone noticed that when you use a Mac for a while, Windows fonts suddenly feel really pixelated with Cleartype?
Then if you use a PC for a while, when you come back to a Mac the fonts feel really blury?
Yes. This article explains exactly why this is the case.
The "too long; didn't read" summary: Microsoft optimizes font display for on-screen readability, whereas Apple optimizes for getting the same results (page coverage or "grayness %") on screen as you would obtain in print. -
Very funny you guys
"Mac users will continue to see the Internet as it was intended"
What's Wrong With Apple's Font Rendering?
Welcome to the blurry, but fast, browser...
Apple and Microsoft have always disagreed in how to display fonts on computer displays... -
Hungarian Notation
No, Hungarian Notation was invented by Charles Simonyi when he worked at PARC. When he took a job at Microsoft and tried to introduce it there, it was completely misunderstood, and that bastardized version is what most untrained programmers came to know (no thanks to Microsoft's developer training). Since they seemingly couldn't even be bothered to pronounce his name, it became known as Hungarian Notation.
The real thing is incredibly useful, and I encourage all unfamiliar with it to read through Joel's article.
-
Re:/. gets a D
I've killed some time on this since it's a pretty interesting idea. It turns out there are plenty outside the D and F range. It does seem to like pages with a single Flash object and not much else, so that's bad. It also makes some pretty arbitrary decisions which don't mean squat to many sites. There are some sites that get enough traffic that speed is a factor but not so much that a content delivery network is really necessary, for example.
I skipped the actual link and score on sites that are pretty much just representative of the sites around them. I wanted to include them by name, though, to show where they fall. I've stuck mostly to main index pages, and I've noted where I've gone deeper.
A: Google (99%), Altavista main page (98%), Altavista Babelfish (90%) (including upon doing a translation from English to French), Craigslist (96%), Pricewatch (93%), Slackware Linux, OpenBSD, Led Zeppelin site at Atlantic (100%), supremecommander.com, w3m web browser site (96%)
B: Apache.org (87%), the lighttpd web server (84%), Google Maps, which also got a C once (84% in most cases), Perlmonks (84%), Dragonfly BSD (85%), Butthole Surfers band page (81%), 37 Signals
C: One Laptop Per Child,, ESR's homepage, the Open Source Initiative (78%), Google News (73%), Lucid CMS (74%), Perl.org (75%), lucasfilm.com, Charred Dirt game
D: gnu.org, The Register, A9 (66%), kernel.org, Akamai (64%), kuro5hin.org, freshmeat.net, linuxcd.org, Movable Type (61%), Postnuke, blogster.com, Joel on Software (67%), Fog Creek Software, metallica.com, gaspowered.com, Scorched 3D (68%), id software (64%), ISBN.nu book search
F: MS IIS (49%), microsoft.com, msn.com, linux.com, fsf.org, discovery.com, newegg.com, rackspace.com, the Simtel archive (26%), CNet Download (29%), Adobe (58%), savvis.com, mtv.com, sun.com, pclinuxos.com, freebsd.org, phpnuke.org, use.perl.org, ruby-lang.org, python.org, java.com, Rolling Stones band page (56%), powellsbooks.com, amazon.com, barnesandnoble.com, getfirefox.com
My site for my company (96%) gets an A (no, I'm not going to get it slashdotted) which is pretty simple but has a pic and some Javascript on it. Several sites I have done or have helped design with someone else get C or D ratings. -
Re:One - they are binary compatible.
All that is needed is to install a compatibility library.
I agree with most of the responses here that the linked article is weak, and I have no problem with the plethora of distros. However, since you specifically mention binary compatibility, I'd like to share my perspective testing a proprietary DBMS.
We support Windows, VMS, and 31 flavors of Unix, so adding Linux (IA32 at first) was relatively easy. We tested Red Hat, SuSE (as it was spelled at the time), and Turbo, but I figured it would basically work anywhere. As the product grew and the Linux port matured, we had to deal with high-level libraries (C++, ODBC, LDAP, Kerberos, et al.) and low-level interfaces (asynchronous I/O, threading). As we kept finding version-specific bugs (e.g., works on Red Hat 9, but not SuSE 8), we came to standardize on RHEL and SLES, eventually building them separately. Meanwhile, we ported to AMD64 and IA64, so we were building six different Linux kits.
There may have been a way to avoid building separate kits for Red Hat and SUSE, and it may be possible to get the kits to run on something other than the build platform. However, when it comes to deployment, customers do not appreciate that kind of wrangling. Pretending that Linux distributions are equivalent is what Joel Spolsky would call a leaky abstraction.
-
strawman
One of the best is strawman: building low-fidelity, low-cost prototypes for projects even if you know the approach isn't right.
Yes, it's an awesome idea until some PHB doesn't realize that software development is like and iceburg and forces dev to use the prototype as the production version.
"But, it looks 90% done!" -
Re:Mod parent way up!Who cares if MySQL does them or not. Show me the developers that can both develop applications and do SQL. That is a dieing breed. Most developers nowdays go for a really trivial schema and an abstraction layer. At that point the only thing that matters is row speed on simple table operations and there MySQL or in-memory OO database frameworks with a simple backing store wipe the floor. This is the reality of life. And it is not going to get better. If you look at the books on the market the only book that used to teach "proper" SQL (with joins and the lot) strictly from the context of application development was the old DB2 bible. It has not been reprinted since the late 90-es. All the rest that is out there is either heavily slanted toward the app side or towards the DB side (usually the latter). Add to that the fact that many universities try to teach "real life software engineering skills" instead of proper data structure and data manipulation classes and the picture is complete: http://www.joelonsoftware.com/articles/ThePerilso
f JavaSchools.html. Add to that the fact that DBDs when you actually corner them to ask something meaningfull answer with SQL technobabble like in your post. To the average developer it sounds like fortran. And if it looks like fortran, walks like fortran and talks like fortran it gotta be fortran. From the point of view of a average software engineer SQL and especially stored procedures look like a blast from the past. He expects to see objects, constructors, destructors, private and public structures. And what does he see? He sees something that looks like written by his grandparents. As a result he turns around and starts doing delete/insert/last_insert_id instead of replace and sequential deletions in software instead of foreign keys. I have tried in the past to work with developers who write commercial apps on top of SQL to optimise their code. And I have wanted to scream all along. In 95% of the cases you deal with either one of the following:- A nice schema designed once upon a time properly by a proper DBD that is vandalised in the application abstraction layer because the developers are are sorely pissed off by the endless wingeing of the SQL server and/or its abissmal performance. So they take the matters in their own hands and violate ACID by cashing and bypassing restrictions in the app. Sooner or later someone comes around and says - WTF, why don't we rewrite this all in software and sod off the expensive database. And surprise surprise it ends up being done in MySQL.
- An abissmal schema or no schema at all where all restrictions are done in the app. That is MySQL country all the way.
-
Re:First Column!. . . or *gasp* the evil that is Hungarian notation.
-
Re:Lack of Talent Indeed
One thought on the technical hiring problem (having been on both sides of these sorts of decisions), the real problem in hiring technical people is recruiters who have no understanding of the technology. I don't know if your using them, but a lot of places do. Their ads are easy to spot, because they aren't looking for "programmers" or "developers" but "Oracle Applications Technical Architect" and "SAP Costing Consultant" (those titles taken from actual job postings).
The ad text generally looks like the result of someone quitting their job and the HR rep going to IT and saying "So what did this guy do anyways?" An engineer (who's currently overworked because someone just left) rambles on about Oracle, C++, something about Win32, and the HR rep who has no clue what they're talking about just writes it down and hopes they got it right. They then pass that along to a recruiter, who runs searches on resumes looking for people with the words "Oracle", "C++" and "Win32" somewhere, and contacts them via email. Then they inflate the persons' resume to match the experience requirements, and send you candidates without evaluating them because they don't know how to do that.
By contrast, the good companies and IT departments, when they have to post ads (usually the result of expansion or retirement) look for "Programmer" or "Developer" and ask for things like "Object-oriented programming experience", "familiarity with Windows API" (or better yet Linux), and "understanding of algorithms". They rarely go through recruiters, and in their reply to you they immediately make it clear they are a technical person in a position to evaluate you.
I'm not alone in seeing recruiters as the biggest problem in IT: http://www.joelonsoftware.com/articles/SortingResu mes.html -
Developing for Linux is just easier.One of the reasons that Windows has the kind of IDE and debugger support that it 'enjoys' is because it needs it. Developing for Windows is nearly unmanageable without that kind of support. The Windows API is huge, complex, only occasionally and accidentally orthogonal, and in my experience mostly very poorly documented. I'm not the only one who thinks so:
"Today we are ready for the official release of the
.NET Framework 2.0. Tabulating only MSCORLIB.DLL and those assemblies that begin with word System, we have over 5,000 public classes that include over 45,000 public methods and 15,000 public properties, not counting those methods and properties that are inherited and not overridden. A book that simply listed the names, return values, and arguments of these methods and properties, one per line, would be about a thousand pages long.If you wrote each of those 60,000 properties and methods on a 3-by-5 index card with a little description of what it did, you'd have a stack that totaled 40 feet."
Meanwhile, the entire POSIX spec, suitable for fully implementing a POSIX system including the utility apps, with commentary and rationales for design decisions, fits in about two and a half feet of binders.
Intellisense is practically mandated if you want to work with an interface as baroque as Win32. And it's nice even when you're working with your own defined classes and structures. But it has its own drawbacks, as Petzold notes:
"For example, suppose you're typing some code and you decide you need a variable named id, and instead of defining it first, you start typing a statement that begins with id and a space. I always type a space between my variable and the equals sign. Because id is not defined anywhere, IntelliSense will find something that begins with those two letters that is syntactically correct in accordance with the references, namespaces, and context of your code. In my particular case, IntelliSense decided that I really wanted to define a variable of interface type IDataGridColumnStyleEditingNotificationService, an interface I've never had occasion to use."
I develop for many platforms at work. It's a core part of my job. I mostly enjoy writing code for Unixish platforms, and tolerate the Windows stuff. The APIs on Unix are small, well-thought-out, have few if any side effects, and tend to be thoroughly documented. I find very few interfaces on Windows have even a majority of these traits, let alone all of them.
I've rarely felt the need for more debugging support than Linux comes with. The problems tend to be simpler and more easily uncovered. Eclipse is nice, and appears to take many of the good things about Visual Studio and leave much of the bad behind. For some projects, it's very useful. For others, it's overkill.
Another item worth reading - the whole book, really - is The Art Of Unix Programming. For a Windows developer's perspective on the book, see here. Needless to say, I don't agree with everything he writes there, but you might find it interesting.
-
You missed some fun ones, like M$ bean bag.
Private offices for employees is a big benefit. See http://joelonsoftware.com/oldnews/pages/March2007
. html. Play this up. Take a cue from Google and loosen up a little about offices. Let people call facilities and have their office painted any color they want. Have the standard office come with a guest chair and a brightly colored Microsoft branded bean-bag chair.A bean bag chair and paint? Oh yeah, that will make the next version of IE better. Perhaps they can be a company that does not make you grovel, beg and feel like a school girl to get anything done. Nah, that would be a different company - here's a M$ bean bag, which is ergonomic like an oversized sack..
The whole article is one of the most infantile and petty cases of corporate penis envy I've ever seen.
-
You missed some fun ones, like M$ bean bag.
Private offices for employees is a big benefit. See http://joelonsoftware.com/oldnews/pages/March2007
. html. Play this up. Take a cue from Google and loosen up a little about offices. Let people call facilities and have their office painted any color they want. Have the standard office come with a guest chair and a brightly colored Microsoft branded bean-bag chair.A bean bag chair and paint? Oh yeah, that will make the next version of IE better. Perhaps they can be a company that does not make you grovel, beg and feel like a school girl to get anything done. Nah, that would be a different company - here's a M$ bean bag, which is ergonomic like an oversized sack..
The whole article is one of the most infantile and petty cases of corporate penis envy I've ever seen.
-
Re:blah blah blah
Look at Wikipedia's reports of various market share stats for that period. There is no controversy that Netscape's market share plunged in 1997. Now look up the browser MS shipped in 1997. It was not a superior product competing in the market place, because nobody chose IE; they got it by default.
(Using "EWS Web Server at UIUC" figures because they are the most detailed. Relatively simplistic analysis because I'm damned if I'm going to waste too much time arguing with someone trolling for hits on their soapbox website.)
For most of 1997 Microsoft was shipping IE3. IE3 was considered to be - overall - on par with Navigator 3. While it was not as good in some areas, it was better in others.
Navigator's market share dropped from ~75% at the start of 1997, to ~65% in September.
In February 1997 (from memory, could be a month off either way), the first IE4 beta was released (warez copies of it and the cancelled "Nashville" update which would have introduced it had been floating around the 'net since late 1996) . In September 1997, IE4 proper was released, a far superior browser to Navigator 3 or 4. In the remaining 3 months of 1997, Navigator's market share dropped a further 5%, to ~60%.
So, they lost 10% in the first 3/4 of the year, mostly (~7%) to a product that was roughly equivalent, and the rest to a series of betas. However, they lost the final 5% in 3 months, straight after the release of IE4 - and that extra market share went directly to IE4 (IE4's marketshare went from 2% - 3% in September 1997 to ~13% in December 1997).
The first 6 months of 1998 tell a similar story. Navigator drops from ~60% to ~50%. IE4's share grows from ~13% to ~19%. In June 1998, Windows 98 was released (with IE4).
So, over 18 months, Netscape lost ~25% of the market - but it lost the majority of that (~19%) to IE4 (before IE4 was included in any version of Windows). Clearly a case of users _deliberately_ deserting Navigator for the superior IE4 browser.
Moving onto the second half of 1998, we see Navigator's fall slowed, only losing ~5%. IE4 continues to gain, however, stealing significant marketshare especially from IE3 (I'm sure you'll attribute this to bundling with Windows 98, conveniently forgetting Windows 98's relatively slow adoption). IE4 ends 1998 with ~40% of the browser market.
Sure, after MS set up a barrier to Netscape's business plan, it could then invest more into browser development. After 1997, Netscape could do very little, while MS rapidly released three major new versions in 97, 99, and 2001.
In fact, Netscape were doing a great deal, desperately trying to rewrite their browser from the ground up so it could have a chance of competing with Microsoft's largely-from-scratch IE4. It was this major error that was the real reason Navigator 4 sucked so much - Netscape were too busy with their other codebase.
What needs to be noted is what happened after AOL/Netscape/Mozilla stopped delivering anything as a competitor. Microsoft, without any further need to take the browser market, froze development of the browser for half a decade. Another version of IE wasn't delivered until 2006, and only because Firefox was starting to compete again.
Microsoft were hardly the only ones. The only significant change to the web browser in the last decade since IE4, is the introduction of tabbed interfaces (which weren't exactly an outrageously obscure idea either).
You can say all you want about what "Steve Jobs" wants or knows, but since you can't understand why anticompetitive behavior and monopoly maintenance are bad for markets, I also have to assume you know nothing about what was going on inside Apple.
A straw man, ad hominem and a non-sequitor all rolled into one. Nicely done.
We also know, because Jobs announced it, that Jobs did try to