Quotes in 2004

Friday, December 31, 2004

Microsoft will have to change. I think that the business of Microsoft, the company of Microsoft, is going to continue to succeed. But I think the business model of Microsoft is going to have to change.

And I don't think that Longhorn will change the dynamics all that significantly. There's some pretty wonderful technology in Longhorn. But if you look at the release cycle, you're talking 5-6 years - and now they're saying, well maybe we better accelerate and take some pieces and put Avalon into Windows XP rather than waiting for the full Longhorn. But they can't just keep up with the pace of a Web-based offering where you can roll out new products to all your users without even asking, and update products dynamically. I just think that [Web-based] software services have a better model. So I think that Microsoft will continue to dominate on the PC, but the PC is going to be a smaller and smaller part of the entire business.

--Tim O'Reilly
Read the rest in Read/Write Web: Tim O'Reilly Interview, Part 1: Web 2.0

Wednesday, December 29, 2004
Rigid languages make types important, so whenever you get a type "wrong" (i.e. different from the declared type signature), it's a bug, and the compiler balks loudly. No wonder a lot of these bugs are caught; the language sets the programmer up to make them. By contrast, in a dynamic language, what a type or object *does* is important, not if it matches a certain declaration. As a result, programmers can focus on the actual functionality without having to worry about ballast, and the language doesn't introduce extra opportunity for errors.

--Hans Nowak
Read the rest in zephyrfalcon.org :: Efectos Especiales

Saturday, December 25, 2004
It ain't so much the things we don't know that get us in trouble. It's the things we know that ain't so.

--Artemus Ward

Thursday, December 23, 2004
And speaking of disasters: if you get hit by a bus, can your significant other get into your system to answer e-mail from clients, collect the last few payments you're due, or see the household financial records? Ordinarily I would caution you not to write down passwords, but to cover these scenarios, I suggest leaving a page or two of network instructions in your safety deposit box. They'll come in handy for your executors too.

--Mike Gunderloy
Read the rest in Developer Central Blog - ADTmag.com

Wednesday, December 22, 2004
Creating sophisticated software requires a team effort. One person can use smoke and mirrors to make a demo that dazzles an audience. But shipping that to a million customers will expose its flaws and leave everyone looking bad. It is a cliche in our business that the first 90 percent of the work is easy, the second 90 percent wears you down, and the last 90 percent - the attention to detail - makes a good product. Making software that is simultaneously easy to learn, easy to use, friendly, useful, and powerful takes people with an incredible combination of skills, talent, and artistry working together with intensity and patience.

--Ron Avitzur
Read the rest in The Graphing Calculator Story

Tuesday, December 21, 2004
My general approach to the Collection classes is that if I don't like something's contract, I create exactly what I need. For example, if I need something that differs from the presupposed invariants of Collection.add(Object), then I don't implement Collection. Instead, I'll write the simplest API possible, and hide the simplest implementation possible behind it. Sometimes this turns out to be a domain-level class, but sometimes it's just a simplified utility without all the Collections baggage.

--Greg Guerin on the java-dev mailing list, Wednesday, 24 Nov 2004

Monday, December 20, 2004
People don't suffer from Asperger's. They suffer because they're depressed from being left out and beat up all the time.

--Justin Mulvaney
Read the rest in The New York Times > Health > How About Not 'Curing' Us, Some Autistics Are Pleading

Sunday, December 19, 2004
Groovy seems to have this underwhelming lack of vision. Who is it trying to target, how is it going to get to the masses? If I wanted to hack and slash something in a hurry I'd use Perl or Python. I wouldn't use anything that was dependent on a large JVM overhead, that's putting the server under strain for the wrong reason. I can't see the Groovy adoption rate going skyhigh with the exception of some ubergeek Java developers. If anyone has put Groovy in a production setting I would love to know the outcome in six months time.

--Jason Bell
Read the rest in Pushin' and pullin' the Groovy (jasonbell.blog-city.com)

Saturday, December 18, 2004
don't ever use jre/lib/ext for your own JARs, you'll get nothing but grief

--Jason Hunter on the jdom-interest mailing list, Monday, 29 Nov 2004

Friday, December 17, 2004

In general, Python requires you trust your programmers. People give Java grief about its restricted environment and static typing, but if you don't trust the programmer to do a good job, at least with Java they (maybe) can't mess things up as badly for everyone else working on a project. You can mess things up royally with Python. I like working with a language that respects my intelligence -- no final classes, no type restrictions, no (truly) private methods -- but that's not without its costs.

In general, Python rewards highly-skilled programmers with a considerably increased productivity, moreso than in low-level languages. We talk about how Python is also easy to learn and maintain, and that's still true, but it doesn't mean that it evens out the differences in productivity between programmers. In fact, quite the opposite, it makes those most productive programmers more productive and more valuable. That Python is easy to learn and maintain means that there's less risk in using a highly skilled, highly productive programmer. In other languages you risk being left with a program that only another highly skilled programmer can maintain, and that's less likely to occur with Python (for an appropriate definition of "highly skilled").

--Ian Bicking
Read the rest in Respecting The Programmer

Thursday, December 16, 2004

This is the kind used by software startups founded by ex-Oracle salesmen where the price isn't on the website anywhere. No matter how much you search to find the price, all you get is a form to provide your name, address, phone number, and fax number, for some reason, not that they're ever going to fax you anything.

It's pretty obvious here that the plan is to have a salesman call you up and figure out how much you're worth, and then charge you that much. Perfect segmentation!

This doesn't work so good either. First of all, the low end buyers are just going to move on. They will assume that if the price isn't listed, they can't afford it. Second, the people who don't like salesmen harassing them will just move on.

Worse, as soon as you send a message that your price is negotiable, you're going to end up reverse segmenting. Here's why: the big companies you sell to, the ones who should be willing to give you the most money, are incredibly sophisticated about purchasing. They'll notice that your sales guy or gal is working on commission, and they'll know that he's got quarterly quotas, and they'll know that both the salesperson and the company are going to be incredibly desperate to make a sale at the end of the quarter (the salesperson to get his commission, and the company to avoid getting their knees shot off by their VCs or Wall Street). So the big customers will always wait until the last day in the quarter and end up getting a ridiculously good price which somehow involves weird accounting shenanigans so the company can book a lot of revenue that they're never really going to get.

--Joel Spolsky
Read the rest in Joel on Software - Camels and Rubber Duckies

Wednesday, December 15, 2004
Sun's mealy-mouthed, half-assed, Janus-faced approach to "opening" up Java is, frankly, insulting. Sun: if you want to continue with your dictatorial control of Java, just be honest and say so but stop all of the weasely, self-righteous BS -- or return to your bold roots and get serious about truly opening Java up to the world.

--John D. Mitchell
Read the rest in John D. Mitchell's Blog: JCK's New Bait-n-Switch Licensing

Tuesday, December 14, 2004

One of the bills that was under consideration in Congress before it adjourned at least took a step in the right direction. It would have required adware vendors display a notice saying: "This program will collect information about Web pages you access and will use that information to display advertising on your computer. Do you accept?' But while even that was much too blunt for the tastes of the direct marketing lobby, I fear it does not quite make what the adware folks are up to clear enough. So, just to be helpful, allow me to propose my own version of an honest adware notice:

"Warning: This program will display innumerable pop-up ads over content you might wish to see. It will watch what you do on the Internet and report that information to people of questionable motives. It might automatically download additional software from other parties that will also display ads and/or collect information about you. Installing this program will thus inevitably degrade the performance of your computer until it's a useless piece of garbage. Do you agree, bozo?"

Well, maybe it needs works, but you get the idea. Let's just hope our new Congress does as well.

--Ed Foster
Read the rest in Ed Foster's Gripelog || Honest Adware Notice

Monday, December 13, 2004
For what definition of "optimal"? Which is more important: fast code, small code, or maintainable code? Usually, you get to pick two. So which two do you pick? Especially given that you don't know how the code is going to be used. For some people, a *small* ArrayList is more important than a *fast* one. For others, a larger-but-faster one is better. How do you keep both sets of people happy?

--Glen Fisher on the java-dev mailing list, Monday, 29 Nov 2004

Sunday, December 12, 2004
To criticise a person for their race is a manifestly irrational and ridiculous. But to criticise their religion - that is a right. That is a freedom. And a law that attempts to say you can criticise or ridicule ideas, as long as they are not religious ideas, is a very peculiar law indeed.

--Rowan Atkinson
Read the rest in Guardian Unlimited | Special reports | Law to safeguard religion is no joke, warns Blackadder

Saturday, December 11, 2004
A piece of art is not a loaf of bread. When someone steals a loaf of bread from the store, that's it. The loaf of bread is gone. When someone downloads a piece of music, it's just data until the listener puts that music back together with their own ears, their mind, their subjective experience. How they perceive your work changes your work. Treating your audience like thieves is absurd. Anyone who chooses to listen to our music becomes a collaborator. People who look at music as commerce don't understand that. They are talking about pieces of plastic they want to sell, packages of intellectual property. I'm not interested in selling pieces of plastic.

--Jeff Tweedy, Wilco
Read the rest in Wired News: 'Music Is Not a Loaf of Bread'

Friday, December 10, 2004

Truly, the relational data model is a wonderful innovation, and it would be an absolute disaster to replace it with flawed persistence technologies like XMLDBs or OODBMS. Fortunately, that simply won't happen, since there is simply no industry interest or momentum behind either.

Technologies like OODBMS sacrifice sound, application technology agnostic data management for sort-term convenience (convenience for one single application, written using one particular programming language). Relational technology essentially completely replaced network or hierarchical database technology, and there were excellent reasons why that happened. We should most certainly not be reviving either of those discredited approaches by slapping on the latest buzzwords (OO, XML, etc) as window dressing.

--Gavin King
Read the rest in JavaFree.com.br - Content

Thursday, December 9, 2004
the C++ language consciously chose to emphasize "power" and "flexibility". That sounds nice initially, but unfortunately it also means that there is very little you can rely on and almost any simple program statement can have weird side effects. In C++ the statement "a = b;" must be approached with caution.

--Graham Hamilton
Read the rest in java.net Weblogs: Evolving the Java Language

Wednesday, December 8, 2004

Essentially, if you've been using Java for a while and are new to Python, do not trust your instincts. Your instincts are tuned to Java, not Python. Take a step back, and above all, stop writing so much code.

To do this, become more demanding of Python. Pretend that Python is a magic wand that will miraculously do whatever you want without you needing to lifting a finger. Ask, "how does Python already solve my problem?" and "What Python language feature most resembles my problem?" You will be absolutely astonished at how often it happens that thing you need is already there in some form. In fact, this phenomenon is so common, even among experienced Python programmers, that the Python community has a name for it. We call it "Guido's time machine", because sometimes it seems as though that's the only way he could've known what we needed, before we knew it ourselves.

So, if you don't feel like you're at least ten times more productive with Python than Java, chances are good that you've been forgetting to use the time machine! (And if you miss your Java IDE, consider the possibility that it's because your Python program is much more complex than it needs to be.)

--Phillip J. Eby
Read the rest in dirtSimple.org: Python Is Not Java

Tuesday, December 7, 2004
What we really need is a complete paradigm shift in traffic engineering and city planning to break away from the conventional ideas that have got us in this mess. There's still this notion that we should build big roads everywhere because the car represents personal freedom. Well, that's bullshit. The truth is that most people are prisoners of their cars.

--Ian Lockwood
Read the rest in Wired 12.12: Roads Gone Wild

Monday, December 6, 2004
Sprinkling Open Source pixie dust on a product doesn't suddenly make it more succesful, faster or better.

--Dare Obasanjo on the xml-dev mailing list, Friday, 15 Oct 2004

Saturday, December 4, 2004
If .NET had started just as some abstract project to change the way that people program, then I'd be willing to wager that it would have gone down in flames at some point. What kept the teams focused and moving forward was the fact that, let's be honest here, Java was breathing down Microsoft's neck. Without that serious competitive pressure, odds are pretty decent that the .NET project would have eventually collapsed under its own weight because we wouldn't have had the kinds of checks and balances that competition imposed on us. But the reality of needing to compete with Java helped keep our eyes on the prize, as it were, and counterbalanced the tendency of black hole projects to spin out of control.

--Paul Vick
Read the rest in Was .NET a black hole project?

Friday, December 3, 2004
Stating that some language feature or common programming idiom (like accessors) has problems is not the same thing as saying you should never use them under any circumstances. And just because a feature or idiom is commonly used does not mean you should use it either. Uninformed programmers write many programs and simply being employed by Sun Microsystems or Microsoft does not magically improve someone's programming or design abilities. The Java packages contain a lot of great code. But there are also parts of that code I'm sure the authors are embarrassed to admit they wrote.

--Alan Holub
Read the rest in Why getter and setter methods are evil

Thursday, December 2, 2004
I wonder how solid Microsoft's coding would become if strategic governments around the world removed the liability shield that software manufactures now currently enjoy. They would then have some real financial incentive to get it right the first time, instead of this Computer Science 101 coding they are continually churning out.

--Richard Starnes
Read the rest in Microsoft to fix 'download warning' flaw | CNET News.com

Wednesday, December 1, 2004
The interesting thing is that people always want something to be correct and complain bitterly when it isn't. Then, once it *is* correct, they complain bitterly that it's slow. ;)

--Andy Clark on the xerces-j-user mailing list, Tuesday, 23 Nov 2004

Tuesday, November 30, 2004
Another reason spam is so bad is that so many companies use Microsoft Outlook for reading e-mail. Again, because that program is written in C, it's quite easy to design a virus to go through your e-mail address book and broadcast spam to all the people you know. As soon as your company starts using Outlook, you can see emergent, horrible, almost biological things start to happen. So by using Outlook, you're not practicing safe e-mail. We need a "condomized" version of it.

--Bill Joy
Read the rest in Fortune.com - Technology - Joy After Sun

Monday, November 29, 2004
Don't believe anyone who claims to have a wonderful new framework that'll solve your problems if only you'd migrate everything you do to it. The web is all about separate pieces, loosely joined. The really clever businesses know how to manage uncertainty, they're not looking to eliminate it. Circling the wagons will not integrate you into the web, neither will it promote web-like innovation inside a business.

--Edd Dumbill
Read the rest in Edd Dumbill's Weblog: Behind the Times

Sunday, November 28, 2004
If you look at Java, the language is regular and small enough that creating a 100% bug-free parser is an achievable goal (well, at least pre-1.5 :-).

--Mike Spille
Read the rest in Groovy Ambiguities, Optional Elements, and Syntax Shortcuts Considered Sucky

Saturday, November 27, 2004

If I can't be The Man, then I at least want to be the owner of a Hummer - with American flag decals all over the back bumper, because Hummer owners are, on average, a little more patriotic than you and me.

Yes, I want to drive the mother of all gas-guzzlers that gets so little mileage you have to drive from gas station to gas station. Yes, I want to drive my Hummer and never have to think that by consuming so much oil, I am making transfer payments to the worst Arab regimes that transfer money to Islamic charities that transfer money to madrassas that teach children intolerance, antipluralism and how to hate the infidels.

And when one day one of those madrassa graduates goes off and joins the jihad in Falluja and kills my neighbor's son, who is in the U.S. Army Rangers, I want to drive to his funeral in my Hummer. Yes, I want to curse his killers in front of his mother and wail aloud, "If there was only something I could do ..." And then I want to drive home in my Hummer, stopping at two gas stations along the way.

--Thomas Friedman
Read the rest in The New York Times > Opinion > Op-Ed Columnist: In My Next Life

Friday, November 26, 2004
open sharing of knowledge ends up resulting in better development—also that cooperation sometimes needs to be enforced with licenses because there are greedy people out there that simply don’t care about poaching other people’s work. I guess you could call the belief in sharing of knowledge a ‘philosophy,’ but I just think it’s a fact. It’s what differentiates science from alchemy or witchcraft. To me, anybody who doesn’t believe in it is just wearing some serious blinders.

--Linus Torvalds
Read the rest in CRN | CRN Interview: Linus Torvalds

Thursday, November 25, 2004
The hypocrisy embedded in this tale is becoming a national running gag. As in the Super Bowl brouhaha, in which the N.F.L. maintained it had no idea that MTV might produce a racy halftime show, the league has denied any prior inkling of the salaciousness on tap this time - even though the spot featured the actress playing the sluttiest character in prime time's most libidinous series and was shot with the full permission of one of the league's teams in its own locker room. Again as in the Jackson case, we are also asked to believe that pro football is what Pat Buchanan calls "the family entertainment, the family sports show" rather than what it actually is: a Boschian jamboree of bumping-and-grinding cheerleaders, erectile-dysfunction pageantry and, as Don Imus puts it, "wife-beating drug addicts slamming the hell out of each other" on the field.

--Frank Rich
Read the rest in The New York Times > Arts > Frank Rich: The Great Indecency Hoax

Wednesday, November 24, 2004

The essence of the bazaar is not voting -- a concept I never mentioned in "The Cathedral and the Bazaar" and don't endorse -- but the right to fork. Anyone who doesn't like Linus's decisions about Linux can fork the codebase, start his own effort, and compete for developer and user attention on a legally equal footing. *That* is the essence of the bazaar.

Sun can vapor on about voting and committees all it wants, but at the end of the day JCP is still a single point of control, the Java reference implementation and class libraries are under a proprietary license, and nobody can legally fork them. As long as that continues to be the case, Java will be firmly stuck in cathedral-land and any claim otherwise will be disingenuous crap.

--Eric S. Raymond
Read the rest in Open Letter to Sun from Eric Raymond

Tuesday, November 23, 2004

Java generics don't allow anything *new* to be done, it just allows existing or future Java code that employes the "generic idiom" (essentially using Object, or often some base interface to write code that operating independent of type) to carrying on doing exactly that same thing, only with greater static type safety.

If a particular piece of Java code was bad or good design before generics, it remains bad or good after. I do speculate however that many uses of the generic idiom which *are* bad design will provide difficult to parameterize for enhanced static type checking, and that this in fact could be used as a "smell" for flushing out such bad design in code.

--Wilhelm Fitzpatrick on the java Dev mailing list, Thursday, 28 Oct 2004

Monday, November 22, 2004

Traditionally, some programmer named Scott gets assigned the invoicing system for the dapper new leasing application, bangs away at it in his cube for about six months, shoves it off to testing at 2 am, steps off a curb in front of the proverbial bus, and there goes the project. Okay, perhaps that extreme example is not entirely fair to the traditional process. However, it does help illustrate the issue many Agilists have with assigning specific application areas to specific programmers: Nobody understands anybody else’s code. Because of that, defects fester in code that is never fully reviewed by a second set of eyes, shifting programmers to troubled areas of the system halfway through the project is difficult at best, and turnover can really smart.

Collective ownership repeals the implicit or explicit relationships between programmers and components. Instead, programmers are encouraged to work in areas they have not worked in before. Meanwhile, everyone on the team is allowed time to assist other members in areas that they know well. This initially can slow down the progress of the team, but its benefits can save significant time and increase productivity in the long run.

--Peter Schuh
Read the rest in 7 Simple Ways to Add a Little Agile without Going to Extremes

Sunday, November 21, 2004
Unfortunately, given a choice, programmers as a class reliably choose big, ugly, powerful languages over small, elegant ones. How many Pascal programmers are there these days?

--Glen Fisher on the java-dev mailing list, Friday, 29 Oct 2004

Saturday, November 20, 2004
I think the problem was over here, somewhere between the chair and the keyboard.

--Jean Luc Bouchard on the AppleScript Users mailing list, Friday, 19 Nov 2004

Friday, November 19, 2004
In software, paradoxical as it sounds, good craftsmanship means working fast. If you work slowly and meticulously, you merely end up with a very fine implementation of your initial, mistaken idea. Working slowly and meticulously is premature optimization. Better to get a prototype done fast, and see what new ideas it gives you.

--Paul Graham
Read the rest in Made in USA

Thursday, November 18, 2004
As for “pre-emptive strike,” there has been a formal consensus on this since the UN Charter and the Nuremberg Tribunal. The formal consensus, the supreme law of the land in the US, bans the resort to force with narrow exceptions: when authorized by the Security Council, or in response to armed attack until the Security Council acts, in the latter case when “the necessity for action is instant, overwhelming, and leaving no choice of means, and no moment of deliberation.” These principles were established because of explicit international rejection, led by the US, of doctrine that now prevails: that resort to force is legitimate if we “know”—that is, have some reason to believe—that someone has the intention of attacking us. That doctrine would, for example, justify Japan’s attack on US military bases in Pearl Harbor and Manila. The Japanese could read the US press, with its lurid discussion of how US bombing could exterminate this inferior and vicious race by burning down Japan’s wooden cities, and they knew that flying fortresses capable of bombing Japan from Pearl Harbor and Manila were coming off the Boeing Assembly line, so they “knew” that there was a serious threat of extermination, not just terror. Therefore, according to the “Bush doctrine,” shared by Kerry and elites generally, Japan had every right to bomb Pearl Harbor and Manila.

--Noam Chomsky
Read the rest in How to Fight Terrorists (ZNet Blog)

Wednesday, November 17, 2004
The OO design process centers on use cases: a user performs standalone tasks that have some useful outcome. (Logging on is not a use case because it lacks a useful outcome in the problem domain. Drawing a paycheck is a use case.)

--Alan Holub
Read the rest in Why getter and setter methods are evil

Tuesday, November 16, 2004

Stupid illustration: let's say you live in an apartment and have two cars, but only one parking spot, so you park your second car in your neighbour's spot, without his permission. He gets more and more pissed off. Eventually, he spray paints your car windows bright orange. Should he have done that? No. Should you call the cops and have him punished? Yes. Should you park your car somewhere else in future, or would that be giving into terrorism?

Chomsky says park your car somewhere else - and preferably do it before your neighbour loses his temper. In contrast, the current administration would have you go into your neighbour's house with a shotgun and tell him to shut the fuck up with his stupid whining about his stupid fucking car park.

--Alan Green
Read the rest in Joe Grossberg: Noam Chomsky and the War on Terror

Monday, November 15, 2004

The latest National Geographic has an article about squid who change their colors. Often they have reasons for changing, but sometimes I think they just change for the heck of it. A couple of years ago I was snorkeling in the Bahamas, and got to watch a school of cuttlefish swimming along. They weren't hiding or courting or anything like that, but as they swam along they would all change color to brown, then yellow, then red, then green. It's like, "Hey guys, wouldn't it be cool if we all ran the same screensaver at the same time." Sort of a cultural identity thing, I suppose.

The interesting thing was that while I was watching, they forked. You know, like BSD. One group of cuttlefish went off one way, and the other group went off another. Maybe they had a personality conflict. Maybe they had a fight over licensing. I dunno. But the cool thing was that the moment they forked, they desynchronized their screensavers. This group wanted to stay green, while the other group wanted to go on and try out some purple. Who knows what goes on in the mind of a cuttlefish — it's possible that they split specifically over the color issue. Wouldn't be the first open source project to split over the color of the bikeshed.

--Larry Wall
Read the rest in Perl.com: The State of the Onion

Sunday, November 14, 2004
If you're reading this in IE, drop what your're doing, click over to http://www.mozilla.org/products/firefox/ and click on "Free Download". Install it, and run it. It's really that much better.

--Micah Dubinko
Read the rest in Push Button Paradise

Saturday, November 13, 2004

Open Source has shown us that well understood software can and will be commoditized. The operating system has been. The Web server has been. The Applications Server (to the extent folks need it) has been and more message buses are being written in open source. The entire XML processing stack is open source. So the value in "well understood" software today is in the support, not the code. The community that forms around open source software seems quite up to the job of educating itself. The real value in my opinion has moved from the software to the information and the community. Amazon connects you to books, movies, and so on. eBay connects you to goodness knows how many willing sellers of specific goods. Google connects you to information and dispensers of goods and services. In every case, the push is for better and more timely access both to information and to people. I cannot, for the life of me, see how Longhorn or Avalon or even Indigo help one little bit in this value chain.

My mother never complains that she needs a better client for Amazon. Instead, her interest is in better community tools, better book lists, easier ways to see the book lists, more trust in the reviewers, librarian discussions since she is a librarian, and so on.

--Adam Bosworth
Read the rest in Adam Bosworth's Weblog: What is the platform?

Friday, November 12, 2004
In 2004, President Bush allotted $270 million to "abstinence education," up from the $97.5 million budgeted in 2000. I'm not against abstinence, but I'm horrified by the assumption that, despite what we know of millennia of human behavior, teenagers are going to stop having sex because adults are telling them to. How many of your peers purposely abstained from sex when you were a teenager? Exactly.

--Regina Lynn
Read the rest in Wired News: E-tail Fraud Remains a Threat

Thursday, November 11, 2004
You know, it often seems strange to me that there isn't a discipline of "API Usability" akin to the UI usability. We are actively looking at how to make common uses of the APIs simpler, and provide better tools support. Look for more on this in the coming months. One of our most senior developers is specifically tasked with fixing this, and API Usability is now much more a part of the API review process. I really think 'Writing Usable APIs', if well done, would be a real winner of a book title for a tech publisher. I've never seen it addressed well, if at all.

--Tim Boudreau. NetBeans
Read the rest in NetBeans - Software Reality

Wednesday, November 10, 2004

One thing I’m not going to do is take part in the Democrat circular firing squad, wringing my hands about what wasn’t done, or where we went wrong, why our message didn’t get across. Why not? Because I’m from Texas. Unlike most of my New York friends, I don't have to give red-staters the benefit of the doubt. I was raised devoutly in the Southern Baptist Church - in fact, First Baptist of Dallas, the south’s largest Baptist church, and the one Billy Graham belonged to. I know these people who voted for Bush. Some of them are bullies. Some are outrageous hypocrites, girls who would savage each other’s reputations and then get up in front of the choir and give the most sincere-sounding pious homilies. Many use their so-called Christian “faith” as an excuse to assume their own infallibility and never examine their own motives - just like W. When I was 15 I was taken to a week-long convocation, in a huge stadium filled with believers, called the Bill Gothard Seminar. Gothard was a charismatic guy who preached that the Christian life consisted of sound business practices, and that if you lived it, God would make you rich - in fact, you could tell who was really godly, because by the logic of the belief, they had the most money. I was thoughtful enough at 15, and familiar enough with what Christ was actually quoted as saying, to be somewhat horrified by this as it sunk in.

One of the things I’m most ashamed of in my life is something I did for the Church. The First Baptist Church of Dallas grouped us choir members in pairs and sent us out on the streets to proselytize. We were handed sheets of questions, and instructed to tell passersby that we were conducting a survey. So the nice people would stop to be helpful by answering our questions, and we would gradually lead up to trying to convert them, getting them to pray there on the street and dedicate their life to Christ. It was really embarrassing - lying to strangers as instructed to by the church. Bait ‘n’ switch is a perfectly acceptable strategy to the Southern Baptist Church - no wonder W. doesn’t understand why anyone should object to it. The absolute desirability of the end always justified any means, no matter how dishonest, which is exactly the pathology we see in the White House today.

--Kyle Gann
Read the rest in ArtsJournal: PostClassic

Tuesday, November 9, 2004
When I arrived home last night, I had several email messages from reporters asking me about my experience. One of them really disturbed me: "After being an election judge, have you changed your opinion at all about these DREs?" I suppose it disturbed me because it implied that somehow my opinion on DREs was based on some superficial measure that could change when I saw them in action. I think the question ignores the expertise of computer scientists, including me, with respect to computer security. It is like asking a surgeon who states that a particular medical procedure is risky whether he might change his opinion because there was a successful operation using that procedure somewhere in the world. Imagine if, universally, all of the heart surgeons in the world said that a new medication was dangerous and could lead to heart attacks but that the drug's manufacturer claimed that it was safe. Would people feel comfortable taking the medication? Would doctors be asked whether they changed their opinion on the medication because somebody took it and did not die? It is a common problem. The press likes to simplify the issue and boil it down to sound bites from each side to produce what they consider "balanced" stories.

--Avi Rubin
Read the rest in My day as an election judge - take 2

Monday, November 8, 2004

Alan Kay's Turing Award lecture was about three things: the power of a simple idea pursued relentlessly (the meme trail from Sketchpad and Simula to Smalltalk to Squeak), the as-yet-untapped potential of the computer, and our responsibility to our children to give them learning opportunities we couldn't have had.

His demos were cooler than the Microsoft ones. For a bit, that puzzled me. A searchable catalog of sky pictures and galaxies is cool: I plan to show it to my children. Being able to view most any location in the United States down to incredibly fine granularity is cool. So why is an ancient video of flickery black-and-white Sketchpad cooler? Why are Fun Manipulations of Two-Dimensional Objects in Squeak cooler? Why are not very detailed three dimensional moving objects so awesomely cool that I called my wife just to babble to her about it and say we had to teach our children Squeak?

I think it's because in the Microsoft Research world, we're observers, consumers, secondary participants in an experience someone else has constructed for us. In Alan Kay's vision, we're actors in a world that's actively out there asking us to change it.

--Brian Marick
Read the rest in Exploration Through Example

Sunday, November 7, 2004

I've never programmed Java without an IDE, except as a deliberate exercise in masochism.

I started off using IBM's VisualAge for Java, which was apparently VA Smalltalk tortured until it spoke Java (I'm reminded of that bit from the Lord of the Rings movies where Saruman explains where orcs came from). Then I moved on to WSAD/Eclipse, and then on to IntelliJ IDEA. I don't think I've ever met a Java developer who, having used IDEA or Eclipse for more than a week, ever wanted to go back to using anything else.

--Charles Miller
Read the rest in Smalltalk Tidbits, Industry Rants: Why progress is so slow

Saturday, November 6, 2004
AOP is kind of a complicated one for me, because AOP is one of these things where the theory sounds really good. I actually mostly like the theory. The way it turns out in practice tends to be pretty dangerous. It's fraught with all kinds of problems. You know when the AOP folks talk about AOP they list you like three or four use cases for AOP and they actually mostly make sense, although they have problems in the details. But there actually aren't very many use cases outside of that. And when you find people who are using AOP, the average ones that I've talked to have been using it for things that are just like incredibly inappropriate. It's like a really, really, really bad idea to be doing what they're doing. And so I feel very conflicted because on the one hand I basically like the concept, but I don't think that the research community has really figured out how to encapsulate those in a mechanism that really works for people. It's like giving them a chainsaw without any safety instructions.

--James Gosling
Read the rest in Sun's Gosling: New Java Flavors Brewing

Friday, November 5, 2004
What has most concerned scientists are problems that are not observable, so the fact that no major problems were observed says nothing about the system. The fact that we had a relatively smooth election yesterday does not change at all the vulnerability these systems have to fraud or bugs.

--David Jefferson, Lawrence Livermore National Laboratory
Read the rest in MSNBC - E-voting passes biggest test, mostly trouble-free

Thursday, November 4, 2004
But we all are moral cowards when it comes to Iraq. Our collective inability to summon the requisite shame and rage when confronted by an estimate of 100,000 dead Iraqi civilians in the prosecution of an illegal and unjust war not only condemns us, but adds credibility to those who oppose us. The fact that a criminal such as Osama bin Laden can broadcast a videotape on the eve of the US presidential election in which his message is viewed by many around the world as a sober argument in support of his cause is the harshest indictment of the failure of the US and Britain to implement sound policy in the aftermath of 9/11. The death of 3,000 civilians on that horrible day represented a tragedy of huge proportions. Our continued indifference to a war that has slaughtered so many Iraqi civilians, and will continue to kill more, is in many ways an even greater tragedy: not only in terms of scale, but also because these deaths were inflicted by our own hand in the course of an action that has no defence.

--Scott Ritter
Read the rest in Guardian Unlimited | Special reports | The war on Iraq has made moral cowards of us all

Wednesday, November 3, 2004
both Java and Microsoft have both gone off in the wrong direction and to some extent are following each other in circles. But there are positives and negatives. The positive is they are learning from each other and gaining best practices. The negative is they are chasing each others' tails to get feature checklists matched up, regardless of value to developers.

--Alan Knight
Read the rest in Programming Legends Debate .Net, J2EE

Tuesday, November 2, 2004
Usability is the number one concern when designing software. And I don't mean "today with modern computing and the lack of new types of software usability is easier and growing in importance". I mean computers have no other purpose than to serve humans, and a better computer serves humans better. End of story. Software that doesn't conform to the way humans do things is bad software. (bad!) I don't care how cool and awesome your software is, if it's not understandable then it's useless.

--Joshua Marinacci
Read the rest in Joshua Marinacci's Blog: Please: think of the users!

Monday, November 1, 2004
Even though I'm on a pair of JSR Expert Groups (JAXB 2.0 and JAX-RPC 2.0) I've become increasingly skeptical of the whole Soviet-style "planned economy" Sun has implemented for Java. This often seems to lead to specifications that are cumbersome and difficult to understand while often failing to provide developers with the support they could really use. I think open source is a better path for the evolution of Java technologies. Seeing what's become of StAX just reinforces that - I don't see where it adds anything that's really useful to XMLPull, and it actually takes some things away. I recently had it pointed out that it doesn't even provide access to the declared namespace stack, for instance.

--Dennis Sosnoski on the xmlpull-dev mailing list, Thursday, 20 May 2004

Sunday, October 31, 2004
Technology is not a solution. It is an enabler. Smart people use technology well and it amplifies their 'smarts'. Otherwise, GIGO At The Speed of Light.

--Claude L (Len) Bullard on the xml-dev mailing list, Monday, 3 May 2004

Saturday, October 30, 2004
My cat has a radio frequency identification (RFID) tag embedded between her shoulder blades. So if she gets lost, she can be easily identified. If she were hurt, her medical records could be readily retrieved. Imagine the conversation I had with my child's pediatrician when I inquired about the same safety net for my toddler. "YOU WANT TO DO WHAT?" Not a good visit. Talk about feeling like I had fangs. And meanwhile, some groups are protesting its usage on boxes of detergent.

--Jonathan Schwartz
Read the rest in Things that scare Sun's Schwartz | Perspectives | CNET News.com

Friday, October 29, 2004
Given that C++ templates are Turing-complete, they are actually a convoluted and difficult method for executing code at compile time. If you want Lisp macros or Perl BEGIN blocks, you know where to find them, and they are smoothly integrated with the rest of the language. Templates are just another part of the autonavelization of C++.

--John Cowan on the xml-dev mailing list, Tuesday, 17 Aug 2004

Thursday, October 28, 2004
What Java gives you are typed collections (i.e., not merely "contains Objects"). C++ templates (on whose syntax the Java generics are based) give you typed collections, *and a great deal more*. Java kept the bathwater, but threw out the baby anyway.

--Glen Fisher on the java-dev mailing list, Wednesday, 27 Oct 2004

Wednesday, October 27, 2004

Security is always a trade-off. If the benefits of RFID outweighed the risks, then maybe it would be worth it. Certainly, there isn't a significant benefit when people present their passport to a customs official. If that customs official is going to take the passport and bring it near a reader, why can't he go those extra few centimeters that a contact chip -- one the reader must actually touch -- would require?

The Bush administration is deliberately choosing a less secure technology without justification. If there were a good offsetting reason to choose that technology over a contact chip, then the choice might make sense.

Unfortunately, there is only one possible reason: The administration wants surreptitious access themselves. It wants to be able to identify people in crowds. It wants to surreptitiously pick out the Americans, and pick out the foreigners. It wants to do the very thing that it insists, despite d

emonstrations to the contrary, can't be done.

--Bruce Schneier
Read the rest in Op Ed: Does Big Brother Want to Watch?

Tuesday, October 26, 2004

Whenever you have a technology that's sold only to the enterprises — SharePoint, InfoPath or whatever — it's always going to be at a competitive disadvantage, in terms of mind share than something that gets sold to the whole world.

For example, nobody's ever going to use SharePoint in college. Ever. So no startup is ever going to use SharePoint because none of the kids who leave college are going to know it. This was BEA's big problem. Kids in college, when they want to learn about Web development, they learn Perl, PHP, maybe Microsoft's (ASP.Net) stack. They don't learn about Domino or BEA. So the only way those guys have hope of getting mind share in the market is to have an extensive sales force. They're always going to be sweeping back the waves against the force of the cheap, easy way of getting started in college.

--Joel Spolsky
Read the rest in A Q&A With Joel on (Microsoft) Software

Monday, October 25, 2004
I don't believe class libraries should have dependencies on environment variables or system properties unless absolutely necessary. These dependencies are instances of global behavior that influence how a library behaves to all aspects of an application. If part of an application requires a library to behave in one manner at the same time another part of the application requires it to behave in another manner, global configuration throws a wrench into the works. It is less restrictive to allow the application to instantiate library artifacts and configure them through an API, thereby allowing the application to implement its own environment variable, system property, or other configuration system.

--Daniel F. Savarese
Read the rest in Java Pro - When Static Methods and Code Collide

Sunday, October 24, 2004
An ongoing question in the developer community is whether BREW stacks up to J2ME. The answer, for the most part, is that the two technologies don't compare. BREW is proprietary and J2ME is not. BREW comes with a built-in distribution system and J2ME doesn't. Whereas J2ME is viewed as the stronger overall development platform, BREW provides easy entry into the booming cell phone applications market. J2ME is a workhorse; BREW is a moneymaker.

--Larry Loeb
Read the rest in Roaming charges: Taken with BREW

Saturday, October 23, 2004
no-one in their right mind would base any interesting Java application semantics on toString; its idiomatic use is for diagnostics and printing.

--Bill de hÓra
Read the rest in Bill de hÓra: ABOUT / HTTP/1.2

Friday, October 22, 2004

Most of our panics on computers are in slow motion, and don’t usually result in death. They can, however, result in destruction. When I started out in computers, disk drives were really, really big—not in capacity, but in physical size. You would plop a disk platter on the drive to use it, replacing it with another platter when done.

Some folks said a “head crash” was when the read/write head would land on the platter, causing a furrow that would render the platter unusable. Not true. A real head crash next required that you, quick, got ahold of the backup platter and placed it on the same drive mechanism and had the now-damaged head trace a furrow in the backup drive. The crash was complete when you then placed the “grandfather” disk on the same defective drive, ensuring a complete loss of data.

Today, things are not much different. People get a message stating, “There are a lot of interesting things on this disk, but I seem to have misplaced my glasses, so I can't read it right now. Would you like me to utterly destroy all your work for the last year?”

Oh, I’m sorry. That’s not actually what it says. It says, “Disk damaged. Initialize?”

Too bad people don’t have a clue what “initialize” means. In a single click, they greatly reduce or eliminate the possibility of recovering their information through a wide variety of available software and hardware options. Anyone writing messages like the above needs to be initialized.

--Bruce Tognazzini
Read the rest in Panic! How it Works and What To Do About It

Thursday, October 21, 2004
On one of my previous projects, I ran a pretty tight ship with respect to code size. This was due in part to my natural proclivities, but also due to the constraints on the system. We were delivering the UI as an applet (webstart didn't even exist yet), to users who might be connecting via a modem. I accomplished this, in large part, by means of aggressive refactoring, to pull out commonalities in the code. I always trot out these examples when people start talking about measuring developer productivity via LoC. At my first programming job out of college (my second Real Programming Job), in one highly productive marathon coding session I wrote about 100 lines of code which replaced the work of 600 lines of code scattered throughout the system. Therefore, on my most productive day of coding ever, I had written negative 500 lines of code. On my longest sustained 'productive' cycle, on the first project I mentioned, I averaged negative 200 lines of code for four weeks, and cut the future growth rate of the codebase by 10% through eliminating several common patterns of 'busy work' code. If you're going to reward people based on how much code they generate, does that mean I owed the company money?

--Jason Marshall
Read the rest in Something to Say

Wednesday, October 20, 2004
Describe your software in one paragraph. If you can't then it's doing too many things or you don't understand the problem well. Cut it back.

--Joshua Marinacci
Read the rest in Joshua Marinacci's Blog: Please: think of the users!

Tuesday, October 19, 2004

They say you can hold seven plus or minus two pieces of information in your mind. I can't remember how to open files in Java. I've written chapters on it. I've done it a bunch of times, but it's too many steps. And when I actually analyze it, I realize these are just silly design decisions that they made. Even if they insisted on using the Decorator pattern in java.io, they should have had a convenience constructor for opening files simply. Because we open files all the time, but nobody can remember how. It is too much information to hold in your mind.

The other issue is the effect of an interruption. If you are really deep into doing something and you have an interruption, it's quite a number of minutes before you can get back into that deeply focused state. With programming, imagine you're flowing along. You're thinking, "I know this, and I know this, and I know this," and you are putting things together. And then all of a sudden you run into something like, "I have to open a file and read in the lines." All the clutter in the code you have to write to do that in Java can interrupt the flow of your work.

Another number that used to be bandied about is that programmers can produce an average of ten working lines of code per day. Say I open up a file and read in all the lines. In Java, I've probably already used up my ten working lines of code for that day. In Python, I can do it in one line. I can say, "for line in file('filename').readlines():," and then I'm ready to process the lines. And I can remember that one liner off the top of my head, so I can just really flow with that.

--Bruce Eckel
Read the rest in Python and the Programmer

Monday, October 18, 2004

Apple needs developers more than developers need Apple.
Apple needs a user base, users don't need Apple.
Apple needs a community, the community doesn't need Apple.

Is Apple being greedy if they won't support Java 1.5 on 10.1 and later, No. They just aren't being very smart when what they want is a developer community.

--Matthew McGee on the java-dev mailing list

Sunday, October 17, 2004
I suspect lots of Windows users are curious about Macs nowadays - and security is a chief cause. The Windows crowd must feel like residents of Florida - one hurricane after another. The machines appear to be under constant attack from virus writers and purveyors of spyware.

--Edward C. Baig
Read the rest in Yahoo! News - Edward C. Baig: Personal Tech - New iMac even more exquisite than last one

Friday, October 15, 2004
Have you noticed that it's generally dying companies that try to misuse the courts as an anticompetitive weapon? It's the fingerprint of failure.

--Pamela Jones
Read the rest in GROKLAW

Thursday, October 14, 2004

By default, CVS translates line endings (from CR [Unix] to CRLF [Windows] and back) and expands keywords (like $Id$) in your files. This is very handy until you commit a binary file to your CVS repository and CVS, in a fit of helpfulness, turns your file into tapioca pudding.

Subversion will never ever ever do anything to your data unless you ask it to.

Let's say that together now:

SUBVERSION WILL NEVER EVER EVER DO ANYTHING TO YOUR DATA UNLESS YOU ASK IT TO.

--Brian W. Fitzpatrick
Read the rest in ONLamp.com: The Top Ten Subversion Tips for CVS Users

Wednesday, October 13, 2004
There's also another lesson I'd like to draw, which is about where people who believe in the fundamentally decentralized and open nature of the web should put our attention. We ought to be careful not to be seduced by the new platforms of the web. We fought long and hard not to have the web become Microsoft Internet Explorer, and we should fight equally hard not have it become Google. In the first wars, our weapons were the HTML and CSS standards, in the latter, they may well turn out to be the vocabularies and ideas of the semantic web.

--Edd Dumbill
Read the rest in Edd Dumbill's Weblog: Behind the Times

Tuesday, October 12, 2004

For almost any mature language (C, Java, C++, Python, Lisp, Ada, FORTRAN, Python, Smalltalk, sh, javascript, ...) coding style is an essentially solved problem, and we ought to stop worrying about it. And to stop worrying about it will require worrying about it a lot first, because the only way to get from where we are to a place where we stop worrying about style is to enforce it as part of the language.

Yup. I'm really saying that. I'm saying that, for example, the next ANSI C update should define the standard K&R C programming style into the language grammar. Programs that use any new features should be required to be in K&R style or be rejected by the compiler as syntactically illegal.

I'm gonna pause here. When I was talking about this on a mailing list I had to go through this several times. People didn't quit get me because they didn't quite believe someone was saying this. I mean this quite literally. For example, I want the next C grammar to define that a space comes between any keyword and an opening parenthesis. "if (foo)" would be legal, but "if(foo)" would not. Not a warning, not optionally checked, but actually forbidden by the language parser. Flat out illegal. Can't compile.

--Ken Arnold
Read the rest in Style is Substance

Monday, October 11, 2004
People use SOAP in the SOA style for many reasons. One may very well be that they prefer it to using HTTP/XML or SOAP in a RESTful manner. But you need to also consider that they might be using it because it's "the cool thing" that the ISVs are hyping, and/or because they aren't familiar with how to solve their problems using the Web or REST. Only time will tell what was really happening, but in the meantime you can't claim that "adoption == success", because it doesn't, only deployment does.

--Mark Baker
Read the rest in Eric Newcomer's Weblog: More on WS-* Complexity

Sunday, October 10, 2004
Debugging is worse than the dentist. Even with watches, breakpoints and single stepping our forty lines a day productivity can drop to fixing a single line over an entire day. That is bad use of resources, resources that could be better spent rewriting that section of code, or writing better tests, or clearer design, or code review, or a good night’s sleep or any other activity that would prevent the bug in the first place. What can be worse than staring at a debugger? Try doing the same thing by staring at log files. It’s like trying to find a gunshot wound with keyhole surgery. To make matters worse, all the other developers have dumped their LOG_WARNING, LOG_NOTICE and LOG_DEBUG messages (where did they come from?) all over your now mission critical log output. It’s a desperate mess. All that extra code and configuration for what? So we could now begin the most spectacularily inefficient process in the whole of software development…?

--Marcus Baker
Read the rest in The Last Craft? Marcus' blog on Agile Web Development » Logging is evil

Saturday, October 9, 2004

Of all the shortsighted policies of President Bush and Vice President Dick Cheney, none have been worse than their opposition to energy conservation and a gasoline tax. If we had imposed a new gasoline tax after 9/11, demand would have been dampened and gas today would probably still be $2 a gallon. But instead of the extra dollar going to Saudi Arabia - where it ends up with mullahs who build madrasas that preach intolerance - that dollar would have gone to our own Treasury to pay down our own deficit and finance our own schools. In fact, the Bush energy policy should be called No Mullah Left Behind.

Our own No Child Left Behind program has not been fully financed because the tax revenue is not there. But thanks to the Bush-Cheney energy policy, No Mullah Left Behind has been fully financed and is now the gift that keeps on giving: terrorism

--Thomas Friedman
Read the rest in The New York Times > Opinion > Op-Ed Columnist: The Battle of the Pump

Friday, October 8, 2004

Almost nobody with actual authority in software patents is competent to understand software. Patent examiners (I'm sorry to say) are not our best and brightest. The Patent Office doesn't pay enough to attract or keep top level folks. Juries (like the one in this case) are picked from the normal jury pool. Imagine trying to explain the difference between (say) virtual memory with paging vs. an on-chip CPU cache to mother. And then remember that your mother is smart enough to avoid jury duty. Not to mention that the judge is a lawyer, most of whom have only the most basic scientific training.

In short, everybody who has the power to make judgements is almost certainly unqualified to do so.

--Ken Arnold
Read the rest in Ken Arnold's Blog: Patentably idiotic

Thursday, October 7, 2004
I once stood in a hotel lobby in Amman, Jordan, listening quietly as a passionate GNU/Linux advocate tried to get Microsoft employees to agree that free software would be better for the Muslim world than proprietary software. His opponents were getting paid to boost Microsoft and proprietary software and couldn't change their beliefs -- at least in public -- without losing their jobs, so there was no way the Linux advocate could "win" this argument. I've witnessed similar scenes all over the world, and cringed at every one. Linux boosters shouldn't waste their (our) energy trying to convince unconviceable people. There are better uses for that passion.

--Robin 'Roblimo' Miller
Read the rest in NewsForge | The futility of arguing with paid advocates

Wednesday, October 6, 2004
XML is in some senses the exact polar *opposite* of the O-O paradigm: all the data is exposed and no methods are provided to do anything with it and the receiver is free to do with it what the receiver will.

--Tim Bray on the xml-dev mailing list, Wednesday, 23 Oct 2002

Tuesday, October 5, 2004
Java is focused on being a powerful but simple language, easy to read, with a consistent clear meaning. It is more important that Java programs be easy to read than to write.

--Graham Hamilton
Read the rest in java.net Weblogs: Evolving the Java Language

Monday, October 4, 2004

If you're a nerd, you can understand how important clothes are by asking yourself how you'd feel about a company that made you wear a suit and tie to work. The idea sounds horrible, doesn't it? In fact, horrible far out of proportion to the mere discomfort of wearing such clothes. A company that made programmers wear suits would have something deeply wrong with it.

And what would be wrong would be that how one presented oneself counted more than the quality of one's ideas. That's the problem with formality. Dressing up is not so much bad in itself. The problem is the receptor it binds to: dressing up is inevitably a substitute for good ideas. It is no coincidence that technically inept business types are known as "suits."

Nerds don't just happen to dress informally. They do it too consistently. Consciously or not, they dress informally as a prophylactic measure against stupidity.

--Paul Graham
Read the rest in What the Bubble Got Right

Sunday, October 3, 2004

Most of the information derived from interrogations at Guantánamo appears to be very general in nature; so general that it is not very useful. How much help is it to know that during a class on improvised explosives at a camp in Afghanistan someone discussed bombing apartment complexes or shopping malls in the US?

Chechen terrorists have been bombing apartment complexes in Russia for years, and anyone even vaguely familiar with American consumer culture knows that shopping malls would be a good target. Is it "enormously valuable intelligence"? No; it does not identify cities where sympathisers are resident or an execution timeframe, so it is not very useful.

I doubt that anyone detained at Guantánamo ever had access to that type of information; if some claim that they did, they probably did so to either earn the incentives or avoid the maltreatment that General Miller instituted.

-- Lieutenant-Colonel Anthony Christino
Read the rest in Guardian Unlimited | Special reports | The real truth about Camp Delta

Saturday, October 2, 2004
The political ethos of the Net, its extreme libertarianism -- that's another thing that comes out of the programming social world. You know, whoever's the most technically able can do whatever they want. It's really not "everyone can do whatever they want"; it's that the more technically able you are, the more you should be able to do. And that's the way it is online to me. It is a kind of meritocracy in a very narrow sense.

--Ellen Ullman
Read the rest in Salon | 21st

Friday, October 1, 2004
I have found the various optional syntactical elements and syntactical shortcuts to interact in interesting and often surprising ways. The intent behind each of these shortcuts seems sane enough, most often the designers are trying for a more compact syntax and are trying to make it easier for scripty type people to write terse code. In fact, looking back through various discussions, to a large extent it appears that various language features are considered primarily on an individual basis, and then it's determined after the fact how it may be shoehorned into the parser and made to work. This can lead to code snippets and individual features that look cool and compact in isolation - but when these individual pieces used inside of complex Groovy scripts, they can interact in very, very bad ways. You see a snippet of code on a mailing list, and say "Oh, yeah, how nice, how elegant". But when you see it in a real program it's different - you're not focusing on one narrow issue that people are discussing, you're trying to understand what the freak the program does. And more often than not Groovy's shortcuts are getting in my way, not helping me.

--Mike Spille
Read the rest in Groovy Ambiguities, Optional Elements, and Syntax Shortcuts Considered Sucky

Thursday, September 30, 2004
The natural extension of grid computing is the Java grid -- the two are made for each other. What I mean by grid computing is the decoupling of applications from specific hardware platforms. And then the virtualization of those platforms so you can create a network-based computing and storage pool, and be a lot more dynamic in associating the computation you perform with the resources you have available. Java technology is great for this, because the principles behind it have been to introduce a fundamental abstraction layer between the code and state, and the underlying platform. So Java technology advances grid-style computing, which enables us to be much more fluid in applying more computation and storage resources when needed.

--Greg Papadopoulos, Chief Technology Officer, Sun Microsystems
Read the rest in Grid Computing: A Conversation with Sun Microsystems' Chief Technology Officer, Greg Papadopoulos

Wednesday, September 29, 2004
The difference between the CLR world and the Java world is that Java is open. The CLR world is Microsoft. It requires a business relationship with Microsoft to open up that code.

--Stephen DeWitt
Read the rest in Start-up banks on Java hardware boost | CNET News.com

Tuesday, September 28, 2004
Unlike the president, the young men and women trying to stay alive in the unraveling chaos of Iraq can't count on their daddies to get them out of the line of fire.

--Maureen Dowd
Read the rest in The New York Times > Opinion > Op-Ed Columnist: Pre-emptive Paranoia

Monday, September 27, 2004

By all appearances, the Pentagon has cooked up an overblown spy case at Gitmo based on clumsy mistakes and bad judgment. This illustrates how actions by a very real enemy, al-Qaida, have turned us inward, leading us to fight amongst ourselves when we should be battling the foe.

Yes, there are Muslims in our midst. Yes, there are Arab-language speakers in our midst. Many are our fellow Americans and fellow airmen. They deserve better treatment than Al Halabi has received.

So don’t be upset with me for defending this airman. The case against Al Halabi, like the earlier case against Yee, is an example of government running out of control. It is time to pull hard on the reins.

If they can do this to Al Halabi, they can do it to you or me. We need to demand accountability for the handling of the so-called Guantanamo spy case, and it needs to happen without further delay.

--Robert F. Dorr
Read the rest in Air Force Times - News - This Week's Air Force Times

Sunday, September 26, 2004
Sun risks becoming the data general of the decade. The company could easily slide toward becoming a 'zombie' -- a lot of cash but no life, staggering and lurching with a fading heartbeat at each step

--George Colony, CEO, Forrester Research
Read the rest in Sun's plans...and how they could go wrong - ZDNet UK Comment

Saturday, September 25, 2004

Sun's revealed strategy is built on a mistaken view of what GNU/Linux is. The problem with building your plans on a mistaken fantasy or a wish is that the rest of the world refuses to shake itself loose from reality. Reality doesn't care what your company wants or needs.

And the reality is that GNU/Linux is a better mousetrap. It wasn't started by any company, it is bigger than any company, it depends on no company, and if they all went out of business tomorrow, it would continue. That's one big reason why companies should switch to it at their earliest opportunity, by the way. There is no vendor lock-in. If, worst-case scenario, your vendor did shut down, you won't be left stranded with software that you can't continue to use. You can always use it. The GPL guarantees it. And there will always be a way to get it updated, vendor or no vendor. If I were a business, what I would do to protect my business is hire a whole lot of Linux guys ASAP, and then I'd be set for life, dependent on no one.

--Pamela Jones
Read the rest in GROKLAW

Friday, September 24, 2004

Certainly we have to convert from random disk access to sequential access patterns. Disks will give you 200 accesses per second, so if you read a few kilobytes in each access, you're in the megabyte-per-second realm, and it will take a year to read a 20-terabyte disk.

If you go to sequential access of larger chunks of the disk, you will get 500 times more bandwidth--you can read or write the disk in a day. So programmers have to start thinking of the disk as a sequential device rather than a random access device.

--Jim Gray
Read the rest in ACM Queue - Content

Thursday, September 23, 2004
Every 3-5 years Microsoft comes up with some entirely different developer API library that’s always touted as the next best thing to happen to this planet since the sliced bread. Everything else, according to MS evangelist forces, is pure crap and even your lame “but it works for me” gets silenced away in the corporate propaganda machine.

--Alex Moskalyuk
Read the rest in Spolsky 1: Scoble 0 – Stegman’s Video, while Great, doesn’t apply to the API war

Wednesday, September 22, 2004
If the "wasted vote" argument ever held any water, it doesn't any more. The two major parties have moved toward a weird, non-existent "center" for the last 50 years, to the point where it's difficult to tell them apart.

--Michael Badnarik
Read the rest in Slashdot | Libertarian Presidential Candidate Michael Badnarik Answers

Tuesday, September 21, 2004
Many times, applications are developed with a particular version of a framework, and they become dependent on the subtle semantics of its API, or they may workaround bugs in the framework. A future version of the framework may change those semantics and fix the bugs (without changing the API at all), which breaks the application. This is why it's important for application frameworks such as Java to co-exist on the same system -- not just for developer testing, but for users, as well, who may have legacy applications (which have not been or cannot be upgraded) that depend on quirks in earlier frameworks.

--Tevor Harmon on the java-dev mailing list

Monday, September 20, 2004
there are those people out there with dirty minds who have to equate everything in life to stealing music, and right now those folks are probably quite convinced that some way, somehow, my true motivation for turning off my auto-sync is so that I can copy music to my iPod from other people's computers. Sorry folks, that's not the name of the game, at least not for me anyway. If anything, my shame lies in the fact that I've spend so ungodly much money over the years on music (and continue to do so to this day, although less of it is wasted on songs I don't want, thanks to iTunes). So don't even think about trying to accuse me of turning off auto-sync for the purpose of stealing other people's music. Even aside from the legal ramifications, other people's music usually sucks anyway.

--Bill Palmer
Read the rest in iPod Garage

Sunday, September 19, 2004
I think we know exactly how this is going to play out. You'll see a very elaborate spin operation. But there's not much new here from what the ISG reported before. There are still no weapons, no production of weapons and no programmes to begin the production of weapons. What we're left with here is that Saddam Hussein might have had the desire to rebuild the capability to build those weapons. Well, lots of people have desire for these weapons. Lots of people have intent. But that's not what we went to war for.

-- Joseph Cirincione, Carnegie Endowment for International Peace
Read the rest in Guardian Unlimited | Special reports | Iraq had no WMD: the final verdict

Saturday, September 18, 2004
nearly every conversation I’ve ever had about extreme programming eventually works its way to pair programming, which pretty much kills the dialog part of the conversation. Pair programming is apparently best discussed in monologue format. For most of the developers I’ve listened to, it is “The” extreme in extreme programming. It is either the single greatest advance in Western Civilization since the windowed envelop, or it is the spawn of the Netherworld.

--Craig Castelaz
Read the rest in java.net Weblogs: Pair programming: Everyone's favorite argument

Friday, September 17, 2004
Swing disasters continue to give Java a bad name. Swing is a brilliant, although hard to learn, API. But the vast majority of Swing applications are so bad that they give Swing and therefore Java a bad name.

--Sachin Hejip
Read the rest in Sachin's Java and Software Blog: Why Java isn't cool : triggered by "Great Hackers"

Thursday, September 16, 2004

Now you have a legitimate beef with Java OO -- it really is significantly different than doing OO in Smalltalk. Number one on my list of gripes is not being able to add responsibilities to classes in the platform library that should actually house those responsibilities. Number two is that because it's not dynamic we don't have useful abstractions/idioms like code blocks, which can lead to felony violations of the Law of Demeter if folks aren't careful.

Nevertheless, Java really does have a decent toolset nowadays. More importantly, they have the right tools for the corporate environment. I don't want to turn this into another "When will Smalltalk have X so it can be competitive?" complaint. Many Smalltalks have made concerted efforts to remove excess log from their own eyes (and it shows). But there are some mighty big wood chunks still left. Now we all know what we're supposed to do before we removed the slivers from Java, right?

--Josh Braun
Read the rest in Smalltalk Tidbits, Industry Rants: Why progress is so slow

Wednesday, September 15, 2004
I've seen people spend hours in meetings working out the directory structure and file placement of a project they are preparing to create in their CVS repository--and anyone who's ever tried to move a directory or a file in CVS knows why: CVS doesn't allow you to move anything around in the repository!* With Subversion, you can move files and directories with wild abandon

--Brian W. Fitzpatrick
Read the rest in ONLamp.com: The Top Ten Subversion Tips for CVS Users

Tuesday, September 14, 2004
For Dolphin, as for Tiger, a lot of people both inside and outside of Sun will be involved in reviewing any language change proposals. The detailed designs will be handled through the JCP. But my suspicion is that we'll probably continue to stay very conservative on changes, as each little change also carries its little wad of additional complexity. We're unlikely to add a macro preprocessor (sorry) or any general form of operator overloading, or full-blown AOP, or any other mechanism for redefining and obscuring core semantics. But we will look for new language ideas that help developers with common problems. For example, one area I'm personally interested in is some kind of "friends" import mechanism to make large multi-package projects easier to manage.

--Graham Hamilton
Read the rest in java.net Weblogs: Evolving the Java Language

Monday, September 13, 2004

To lawmakers: the 21-year-old drinking age is bad social policy and terrible law. It is astonishing that college students have thus far acquiesced in so egregious an abridgment of the age of majority. Unfortunately, this acquiescence has taken the form of binge drinking. Campuses have become, depending on the enthusiasm of local law enforcement, either arms of the law or havens from the law.

Neither state is desirable. State legislators, many of whom will admit the law is bad, are held hostage by the denial of federal highway funds if they reduce the drinking age. Our latter-day prohibitionists have driven drinking behind closed doors and underground. This is the hard lesson of prohibition that each generation must relearn. No college president will say that drinking has become less of a problem in the years since the age was raised. Would we expect a student who has been denied access to oil paint to graduate with an ability to paint a portrait in oil? Colleges should be given the chance to educate students, who in all other respects are adults, in the appropriate use of alcohol, within campus boundaries and out in the open.

And please - hold your fire about drunken driving. I am a charter member of Presidents Against Drunk Driving. This has nothing to do with drunken driving. If it did, we'd raise the driving age to 21. That would surely solve the problem.

--John M. McCardell Jr.
Read the rest in The New York Times > Opinion > Op-Ed Contributor: What Your College President Didn't Tell You

Sunday, September 12, 2004
while I was originally impressed by Apple’s iTunes Music Store, it’s become obvious that buying old-fashioned CDs from old-fashioned music stores is a better deal. The sound quality is higher, and what I get is just a bunch of digital files that are mine and I can store on any computer I want to and play on any device I want to and nobody’s getting in the way.

--Tim Bray
Read the rest in ongoing · The DRM Debacle

Saturday, September 11, 2004

The events of September 11 are something quite new in world affairs, not in their scale and character, but in the target. For the US, this is the first time since the War of 1812 that the national territory has been under attack, even threat. Many commentators have brought up a Pearl Harbor analogy, but that is quite misleading. On Dec. 7 1941, military bases in two COLONIES were attacked. Not the national territory, which was never threatened. During these years the US annihilated the indigenous population (millions of people), conquered half of Mexico, intervened violently in the surrounding region, conquered Hawaii and the Philippines (killing hundreds of thousands of Filipinos), and in the past half century particularly, extended its resort to force throughout much of the world. The number of victims is colossal. For the first time, the guns have been directed the other way. That is a dramatic change.

The same is true, even more dramatically, of Europe. Europe has suffered murderous destruction, but from internal wars. Meanwhile European powers conquered much of the world with extreme brutality. With the rarest of exceptions, they were not under attack by their victims outside. England was not attacked by India, or Belgium by the Congo, or Italy by Ethiopia. It is not surprising, therefore, that Europe should be utterly shocked by the terrorist crimes of Sept. 11. Again, not because of the scale, regrettably.

Exactly what this portends, no one can guess. But that it is something strikingly new is quite clear.

--Noam Chomsky
Read the rest in Liberty at Risk

Friday, September 10, 2004

Linux cannot compete with Longhorn

Wait. Hear me out. I'm not saying that because Longhorn is a superior platform in any way. I'm saying it because Longhorn is not real, it's just the latest codename for the next version of Windows. As everyone knows, the next version of Windows is always the best operating system of all time: it's always faster, more stable, and more secure than anything the world has ever seen before. Comparing a real operating system like GNU/Linux against the marketing dreams of the malignant monopoly from Redmond is like comparing your geekiness with Helen, Sweetheart of the Internet: a futile and unfulfilling exercise.

Still, such false comparisons are one of Microsoft's favorite marketing techniques. Remember, Microsoft has never competed on the technical merits of its operating platforms. Not from the day IBM gave them a corner on the market until today. Given the quality of their products, that's probably a good thing for Redmond: DrDOS was a better DOS than MS-DOS, and OS/2 was far better, far more advanced than Win95.

Microsoft has always preferred to compete with its core competencies: FUD, astroturfing, false advertising, rigged benchmarks, funding "independent" studies, being channeled by submissive scribes and sycophantic industry analysts, and attempting to freeze the market long enough for them to catch up with the competition. Longhorn will probably fit into all those categories before it materializes, but its primary purpose is the latter. It's just another train-load of BS designed to freeze the market until the next version of Windows gets there.

--Joe Barr
Read the rest in NewsForge | Linux cannot compete with Longhorn

Thursday, September 9, 2004

When we were making the rounds of venture capital firms in the 1990s, several told us that software companies didn't win by writing great software, but through brand, and dominating channels, and doing the right deals.

They really seemed to believe this, and I think I know why. I think what a lot of VCs are looking for, at least unconsciously, is the next Microsoft. And of course if Microsoft is your model, you shouldn't be looking for companies that hope to win by writing great software. But VCs are mistaken to look for the next Microsoft, because no startup can be the next Microsoft unless some other company is prepared to bend over at just the right moment and be the next IBM.

It's a mistake to use Microsoft as a model, because their whole culture derives from that one lucky break. Microsoft is a bad data point. If you throw them out, you find that good products do tend to win in the market. What VCs should be looking for is the next Apple, or the next Google.

--Paul Graham
Read the rest in Great Hackers

Wednesday, September 8, 2004

Overall, we think Tiger is on track to be our highest quality release ever. Happiness! But unfortunately that doesn't mean (and can't mean) that it is bug free.

There is an agonizing tension in getting to high quality. To achieve stability, you have to become really paranoid about change management, especially late in a release. Since beta1 we have been increasingly cautious in bug analysis. We've tried to make sure the key bugs get fixed, but we've also deferred some bugs, in order to manage the rate of change and to make sure we keep a high level of overall stability. Some of these may get addressed in the Tiger update releases (5.0_01, 5.0_02, etc.).

In some of our early JDK releases we were aggressively fixing lots of bugs even very late in the release. Well, unfortunately, that didn't actually lead to high quality releases. Every bug fix is also a bug risk, even for those small fixes that "are clearly totally safe". Our history is that even heavily reviewed "totally safe" fixes sometimes aren't.

--Graham Hamilton
Read the rest in java.net: Stabilizing the Tiger Release [September 08, 2004]

Tuesday, September 7, 2004

Making the right decision about your tools always comes down to a cost/benefit analysis. The cost side of the equation is some amalgam of money, research time, training, performance, and sustainability ("Will this product be around for as long as my project?"). The benefits can take the form of simplified development and maintenance, better performance or scalability, or simplification of the code. Tool choices should never be based on either of the following propositions:

  • "Microsoft said I should."
  • "Joe thought this looked cool."

--Justin Gehtland
Read the rest in ONJava.com: Better, Faster, Lighter Programming in .NET and Java

Monday, September 6, 2004
Remember Steve Ballmer said Microsoft couldn't compete with Linux on price, so they'd have to fight on quality. While you are laughing about that one, I'll further explain that this means Microsoft will have to improve its quality and that may well happen. And if it does, we can thank Linus Torvalds for doing something nobody else, including Bill Gates, could do in the preceding 25 years.

--Robert X. Cringely
Read the rest in I, Cringely | The Pulpit

Sunday, September 5, 2004

People who program Java using text editors are inevitably the ones who loaded up an IDE, tried to use it, ignoring all the debugging, refactoring, code-navigation and auto-complete tools in the process -- i.e. all the things that make it an IDE instead of an underpowered text editor, and then went back to somewhere the keyboard shortcuts were more familiar, happy that he was "more productive" again.

--Charles Miller
Read the rest in Smalltalk Tidbits, Industry Rants: Why progress is so slow

Saturday, September 4, 2004

A new database technology, operating system, or programming language has to be rather special to displace the established 30-year-old stuff that most of us work with.

But I once thought that C would never be displaced, and overnight Java came along and everyone decided it was the next thing. I don't know why it happens, but sometimes the industry decides to take a step forwards.

--Michael Kay on the xml-dev mailing list, Wednesday, 25 Aug 2004

Friday, September 3, 2004

The problem appeared early in his article - at the point where he said "we are a Java shop". he didn't say "We look around for the best tools for a job" - he said "we are a Java shop". Right there, he ensured that there was a fairly low top point to his team's productivity. Python? Ruby? Smalltalk? Nah, text editors and Java are the way to go. This is nicely in line with the 4 zone charts that these bozos like to draw, but it's not a way to rise above the competition. If you make sure that you do exactly what the other guys do, you have made a risk averse decision - you won't fail any worse than they do, but you also won't succeed any better. You'll tread water.

--James Robertson
Read the rest in Smalltalk Tidbits, Industry Rants: Why progress is so slow

Thursday, September 2, 2004

When you talk about a virtual machine, that doesn't necessarily imply that it's actually interpreted. You can go through some kind of a transformational step and actually end up with machine code that is what is actually executing.

Just-in-time compilers can give you performance that is indistinguishable from hand-coded machine code. In some cases, the just-in-time happens significantly beforehand, so that what gets blown into the ROM on a machine is not necessarily bytecode but can actually be the compiled machine code. It's just that there's a transitive nature of trust, right? You've got this untrusted piece of code that comes in, but then you do an analysis by the Verifier to prove various things about it, and then you transform that bytecode into machine code through a compiler that you trust, and you end up with machine code that you can trust. You can actually use that in a lot of these constrained high-performance environments.

There are very few environments these days where you can't afford a just-in-time compiler. Even in most modern cellphones, the older ones are interpretive Java, but the modern ones are actually not. They actually get fairly amazing performance.

--James Gosling
Read the rest in ACM Queue - A Conversation with James Gosling - James Gosling talks about virtual machines, security, and of course, Java.

Wednesday, September 1, 2004
If I can get started with some software very quickly then I'm more likely to use it, regardless of the dollar amount. Access to the code is merely a side benefit. This is an important lesson for free software developers. Make it as easy as possible for someone who doesn't know about your software to figure out what it's about and how to get started. If you need more than a paragraph to explain what it does, then no one will use it. If you need more than a page to set it up, then no one will ... You see what I mean.

--Joshua Marinacci
Read the rest in java.net: My 1 year anniversary at Java.net: the social side of software. [August 21, 2004]

Monday, August 24, 2004
For another example, take Perl. Paul Graham has opined (Hi, Paul) that there are a lot of spectacularly original ideas in Perl, but I'd like to correct that impression. There are indeed a few original ideas in Perl, but most of the ideas were stolen. Perl has learned a spectacular number of things from history. Paul was right about one thing though — some of things Perl learned from history were spectacularly wrong. That's not to say that some of my original ideas weren't also spectacularly wrong. But hey, that's what iterated algorithms are for. "Release early, release often" is the old phrase. The new catch phrase seems to be "Learning in Public". Same sort of thing.

--Larry Wall
Read the rest in Perl.com: The State of the Onion

Monday, August 23, 2004

Yet again, though, I have had to stop and think - what is it about Java that makes people brand it as the most un-cool language on earth? I have had friends look at me like I was a poor sod for "having to" develop in Java. So, let me list all the reasons I can think why people consider Java un-cool.

Java has considerably fewer surprises

and prefers not to add complexity to the language for rarely used features thereby resulting in a language where you cannot really make your friends go ga-ga at amazingly brief programming constructs. You need to write something substantial [like Gosling's Huckster] for them be to impressed with your programming abilities and not your language knowledge. This is probably the biggest reason Java is un-cool. It's too easy (although programming or software development remains as tough as ever).
Java was always touted as the language that the "average" IT programmer can use. It's such a language-for-the-masses that yet again, it fails the "geek" test. And if you use Java, so do you.

--Sachin
Read the rest in The New York Times > New York Region > Across New York, a Death Penalty Stuck in Limbo

Sunday, August 22, 2004
If it does nothing else, the McGreevey marriage highlights the chief absurdity of the arguments of those opposed to gay marriage: gay men can, in point of fact, get married - provided we marry women, duped or otherwise. The porousness of the sacred institution is remarkable: gay people are a threat to marriage, but gay people are encouraged to marry - indeed, we have married, under duress, for centuries, and the religious right would like us to continue to do so today - as long as our marriages are a sham. As long as we're willing to lie to ourselves, our wives, our communities, our children, and, for someone like McGreevey, our constituents. A closeted gay man like McGreevey can even marry twice and have both his marriages regarded as legitimate. Even as an openly gay man, McGreevey can remain married to his wife and smoke all the pole he likes on the side. There ain't no law agin' it, Senator Santorum. But how does this state of affairs protect marriage from the homos, I wonder? If an openly gay man can get married as long as his marriage makes a mockery of what is the defining characteristic of modern marriage - romantic love - or if he marries simply because he despairs of finding a same-sex partner, what harm could possibly be done by opening marriage to the gay men who don't want to make a mockery of marriage or who can find a same-sex partner?

--Dan Savage
Read the rest in Guardian Unlimited | UK Latest | When gay Americans marry

Saturday, August 21, 2004
The problem with Windows isn't so much that it's insecure, but that it is stale. The company has flailed away, making changes mainly to protect its monopoly. So lately, instead of getting better with each new release, Windows is just getting different.

--Bill Joy
Read the rest in Fortune.com - Technology - Joy After Sun

Friday, August 20, 2004

At the lowest level, you have to know that the boundaries around the piece of software are completely known and contained. So, for example, in Java, you can't go outside the bounds of an array. Ever. Period. Turning off array subscripting is not an option.

A lot of work has gone into optimizing compilers. Then you know there's no way that you can get unbounded memory corruption, and that when you hand a piece of memory off to some suspect piece of code, it can't then use it to get outside of that. So if you've got an interpretive language that supports things like C's unbounded pointers, it's very difficult—or at least expensive—to really bound things that it can touch.

Along with that go things like forging the identity of objects. So in Java, you're allowed to cast things only when the cast is actually legal. You can't cast to a super class or to a subclass. You can't take an image and cast it to a string. You can't lie about the identity of an object.

--James Gosling
Read the rest in ACM Queue - A Conversation with James Gosling - James Gosling talks about virtual machines, security, and of course, Java.

Thursday, August 19, 2004
There are too many libraries out there that make it very difficult—or impossible—for programmers to use multiple implementations of a piece of functionality in different parts of the same program. I don't mean to single out the Java core APIs, but an example of this problem is the way the socket API was originally designed in JDK 1.0.2. Socket.setSocketImplFactory forces a single socket-creation factory upon the entire application. Worse yet, recalling the earlier example of global environment variables and system properties, the java.net package relies on a host of system properties. For example, if you want to use a SOCKS proxy you can set the socksProxyHost and socksProxyPort properties. What happens if you want some socket connections to use the proxy and others not to? You have to avoid the java.net configuration properties and implement your own SOCKS support.

--Daniel F. Savarese
Read the rest in Java Pro - When Static Methods and Code Collide

Wednesday, August 18, 2004
Maybe I'm missing something, but I haven't seen anything in 1.5 (or is it 5.0 now?) for which I'd say "Yeah, that'll let me deliver working software in half the overall time." If it isn't about significantly improving quality, development time, or end-user features, what's the point? Yes, I already know about how generics will save the planet, but if they're so terrific, how has anyone been able to write working Java code without them all this time?

--Greg Guerin on the java-dev mailing list, Thursday, 1 Jul 2004

Tuesday, August 17, 2004

If you love NetBeans, you either develop on Linux/Solaris, or you need to take a reality check yourself. Have you taken a serious look and IDEA or Eclipse? Have you spent days or weeks with JBuilder? I've spent a great deal of development time with all these products. NetBeans has it merits, like the GUI builder, and some other nice features. However, NetBeans falls way short of the other products.

Lastly, the developers working on the NetBeans GUI need a reality check if they think NetBeans has a 'Native MS Windows appearance'

--Malcolm Davis
Read the rest in java.net: netbeans 3.6 [August 14, 2004]

Monday, August 16, 2004
In my career I saw many ambitious API-centric attempts at smooth network interoperability prove to have lousy cost-effectiveness, including various RPC stacks, Corba, DCOM, and so on and so on. The Web succeeded in many arenas where they failed, and one important reason is that it never subscribed to the myth of the interoperable data model.

--Tim Bray on the xml-dev mailing list, Friday, 24 Oct 2003

Sunday, August 15, 2004

Code bloat begets code bloat

The faster your codebase grows, the less of it people will understand. When people don't understand all of the code, they don't see global patterns, and so they will reinvent little wheels all over the place. In theory, the development leads and the architects are supposed to watch out for these issues, but there are always places where redundant code can hide, and as the code continues to grow, even this watchdog function breaks down. Soon you have people who are intimately familiar with only a couple of modules in the system, and so replication across modules becomes difficult to spot. As the line-count continues to rise, the percentage of the code that each person really knows decreases, compounding the problem. Welcome to exponential code growth.

There's more here than just a vague fuzzy warm feeling that the code is 'tight'. It means longer code-build-test cycles, more resource requirements from the code, and harder-to-solve optimization issues. Worst of all, replicated code means replicated bugs. It means developers are spending a lot of time doing the same work over and over again, with slightly different details. Slogging the same boring code over and over again is essentially menial labor, and is bad for morale.

--Jason Marshall
Read the rest in Something to Say

Saturday, August 14, 2004
Its sometimes seems funny that we all get so caught up with things like this. But, I too sometimes spend a millisecond more thinking about readable variable/method names then the actual work they are doing. But inconsistencies sometimes bother my simple mind. I prefer ID because when I read it or somebody else reads my code, I want them to say "eye" "dee" not "id" as it sounds in the word "did". Regardless if its real meaning is an abbreviation, I use my case notation to determine how the words(s) will be pronounced/read.

--Scott Stewart
Read the rest in Capitalization: Should you use ID or Id

Friday, August 13, 2004

When I plugged in my Wal-Mart machine and hit the power button, I got a look at an alternate future that ought to be fueling Pepcid sales among Microsoft executives. The computer featured a glamorous new desktop screen and sophisticated control panels, help menus, and audio tutorials. I was instantly able to connect the machine to the Internet, where I downloaded—free of charge—open-source equivalents of the Microsoft Office programs I use every day: Word, Excel, PowerPoint, and Internet Explorer. The free software may not have all of Office’s bells and whistles, but the version of it I chose, Open Office, does everything I need it to do—including saving files in Word format.

The back-office world of servers and databases is no longer Linux’s most exciting frontier. Sure, Linux has gained an irreversible hold in behind-the-scenes corporate computing centers, where some 67 percent of corporate Web servers are Linux machines running open-source software. Companies from Schwab and Merrill Lynch to L. L. Bean and Pep Boys have converted parts of their back-office operations to Linux, and IBM, Oracle, and other companies are spending millions to make their own business software run on the operating system. But over the last three years or so, the capabilities of open-source software have finally caught up with those of Microsoft applications in the space where most human-computer interaction actually occurs: the desktop.

--Wade Roush
Read the rest in Technology Review: An Alternative to Windows

Thursday, August 12, 2004

Objects with finalizers (those that have a non-trivial finalize() method) have significant overhead compared to objects without finalizers, and should be used sparingly. Finalizeable objects are both slower to allocate and slower to collect. At allocation time, the JVM must register any finalizeable objects with the garbage collector, and (at least in the HotSpot JVM implementation) finalizeable objects must follow a slower allocation path than most other objects. Similarly, finalizeable objects are slower to collect, too. It takes at least two garbage collection cycles (in the best case) before a finalizeable object can be reclaimed, and the garbage collector has to do extra work to invoke the finalizer. The result is more time spent allocating and collecting objects and more pressure on the garbage collector, because the memory used by unreachable finalizeable objects is retained longer. Combine that with the fact that finalizers are not guaranteed to run in any predictable timeframe, or even at all, and you can see that there are relatively few situations for which finalization is the right tool to use.

If you must use finalizers, there are a few guidelines you can follow that will help contain the damage. Limit the number of finalizeable objects, which will minimize the number of objects that have to incur the allocation and collection costs of finalization. Organize your classes so that finalizeable objects hold no other data, which will minimize the amount of memory tied up in finalizeable objects after they become unreachable, as there can be a long delay before they are actually reclaimed. In particular, beware when extending finalizeable classes from standard libraries.

--Brian Goetz
Read the rest in Java theory and practice: Garbage collection and performance

Wednesday, August 11, 2004
I think that anyone who truly wants to see Java succeed will argue *against* "one UI to rule them all": end users choose the programs they like, that they appreciate, over ones they don't. Hence, a Java program written to have a single UI on every platform will be at a competitive disadvantage to programs written (in any language) to adhere to the platform's conventions. Result: people choose non-Java programs over Java programs. A Java program which adheres to the platform's conventions will not suffer that disadvantage.

--Glen Fisher on the java-dev mailing list, Thursday, 01 Jul 2004

Tuesday, August 10, 2004
We need a national ID card with our photograph and thumbprint digitized and embedded in the ID card. We need a database behind that, so when you're walking into an airport and you say that you are Larry Ellison, you take that card and put it in a reader and you put your thumb down and that system confirms that this is Larry Ellison,

--Larry Ellison, CEO Oracle
Read the rest in Oracle boss urges national ID cards, offers free software (9/22/2001)

Monday, August 9, 2004
it's worth remembering that in-memory code can often by boosted by more intelligent queries. It's always worth looking to see if you are calling the database multiple times, and if there's a way to do it with a single call instead. This is particularly easy to overlook when you have a domain model because people usually think of class at a time access.

--Martin Fowler
Read the rest in Domain Logic and SQL

Sunday, August 8, 2004
In terms of Java being used as a general programming language on Linux to do lots of different things all over the place, compared to C++, it just hasn't gotten there yet.

--Bob Sutor, IBM
Read the rest in Is Java cooling off? | CNET News.com

Thursday, August 6, 2004
Our enemies are innovative and resourceful, and so are we. They never stop thinking about new ways to harm our country and our people, and neither do we.

--George W. Bush, Washington, D.C., Aug. 5, 2004

Thursday, August 5, 2004
The nature of malloc is that it has a long linked list of available blocks of memory called the free chain. When you call malloc, it walks the linked list looking for a block of memory that is big enough for your request. Then it cuts that block into two blocks -- one the size you asked for, the other with the extra bytes, and gives you the block you asked for, and puts the leftover block (if any) back into the linked list. When you call free, it adds the block you freed onto the free chain. Eventually, the free chain gets chopped up into little pieces and you ask for a big piece and there are no big pieces available the size you want. So malloc calls a timeout and starts rummaging around the free chain, sorting things out, and merging adjacent small free blocks into larger blocks. This takes 3 1/2 days. The end result of all this mess is that the performance characteristic of malloc is that it's never very fast (it always walks the free chain), and sometimes, unpredictably, it's shockingly slow while it cleans up. (This is, incidentally, the same performance characteristic of garbage collected systems, surprise surprise, so all the claims people make about how garbage collection imposes a performance penalty are not entirely true, since typical malloc implementations had the same kind of performance penalty, albeit milder.)

--Joel Spolsky
Read the rest in Joel on Software - Back to Basics

Wednesday, August 4, 2004

Deregulation of electricity in California and other states took place on Clinton's watch. The idea was to let the market come up with a better way to allocate production and distribution than the heavily regulated system of yore. Interesting idea. lousy execution.

Now we're in the worst of both worlds, because what deregulation did occur had the effect -- intended or not -- of enriching a few manipulators and making the overall problem worse.

The real answer, of course, is in making energy a vastly more decentralized affair than it's been for the past 50 years. The vulnerability of our grid to stress and human error -- never mind the potential for terrorist strikes -- is growing in part because of the way it's designed.

--Dan Gillmor
Read the rest in Silicon Valley - Dan Gillmor's eJournal - Our Failing Electrical System

Tuesday, August 3, 2004
Larry Ellison announced that Oracle is now running entirely on Linux. But he didn't say, "Incidentally we're going to run all of Oracle on MySQL on Linux." If you just connected the dots, that would be the next sentence in the paragraph. But he didn't say that, so I believe that Larry actually thinks Oracle will have a lot more value than MySQL has. I do not understand why he thinks the Linux problems are fixable and the MySQL problems are not.

--Jim Gray
Read the rest in ACM Queue - Content

Saturday, July 31, 2004

Great hackers also generally insist on using open source software. Not just because it's better, but because it gives them more control. Good hackers insist on control. This is part of what makes them good hackers: when something's broken, they need to fix it. You want them to feel this way about the software they're writing for you. You shouldn't be surprised when they feel the same way about the operating system.

A couple years ago a venture capitalist friend told me about a new startup he was involved with. It sounded promising. But the next time I talked to him, he said they'd decided to build their software on Windows NT, and had just hired a very experienced NT developer to be their chief technical officer. When I heard this, I thought, these guys are doomed. One, the CTO couldn't be a first rate hacker, because to become an eminent NT developer he would have had to use NT voluntarily, multiple times, and I couldn't imagine a great hacker doing that; and two, even if he was good, he'd have a hard time hiring anyone good to work for him if the project had to be built on NT.

--Paul Graham
Read the rest in Great Hackers

Friday, July 30, 2004
The way we architected the Java platform was on the assumption that there would be bad people out there. We needed to ensure we made it difficult for bad people and bad code to do harm to others. We haven't played this up a lot, but no one's written a virus in Java.

--Jonathan Schwartz, Chief Operating Officer, Sun Microsystems
Read the rest in Sun's McNealy swings at rivals | CNET News.com

Thursday, July 29, 2004
Processes are extremely common in the real world and in programming. Elaborate mechanisms have been devised over the years to handle transactions, workflow, orchestration, threads, protocols, and other inherently "procedural" concepts. Those mechanisms breed complexity as they try to compensate for the inherent time-invariant deficiency in OO programming. Instead, the problem should be addressed at the root by allowing process-specific constructs, such as "before/after," "cause/effect," and, perhaps, "system state" to be a core part of the language.

--Victoria Livschitz
Read the rest in The Next Move in Programming: A Conversation with Sun's Victoria Livschitz

Wednesday, July 28, 2004
Diebold voting machines represent a huge threat to our democracy. I fundamentally believe that we have thrown our trust in the outcome of our elections in the hands of a handful of companies (Diebold, Sequoia, ES&S) who are in a position to control the final outcomes of our elections. I also believe that the outcomes can be changed without any knowledge by election judges or anyone else. Furthermore, meaningful recounts are impossible with these machines.

--Avi Rubin
Read the rest in My day as an election judge

Tuesday, July 27, 2004
I really think Brown's motivation should come under scrutiny. I don't believe for a nanosecond that Brown was trying to do a legitimate study of IP and open source or anything like that. I think he was trying to make the case the people funding him (which he refused to disclose to me despite my asking point blank) wanted to have made. Having an institution with an illustrious-sounding name make the case looks better than having an interested party make the case.

--Andrew Tanenbaum
Read the rest in Some notes on the "Who wrote Linux" Kerfuffle

Monday, July 26, 2004

complexity leads to disaster. Your application should be built around simple constructs and understandable layers, which combine to perform complex tasks. The code itself, however, should avoid complexity at every stage. This is much easier to say than to do, though, since many programmers are afraid of missing important pieces, or of oversimplifying.

You don't need to be afraid of doing something too simply if you embrace change in your application. The ability to fearlessly embrace change is based on good testing practices. If your code has thorough, automated, repeatable tests, then making changes to the code loses much of its anxiety. As changes are introduced, the tests will tell you whether or not you are breaking something important. Automated testing gives you a safety net, allowing you to examine simple solutions first, and to change them over time without fear.

--Justin Gehtland
Read the rest in ONJava.com: Better, Faster, Lighter Programming in .NET and Java

Sunday, July 25, 2004
If your app is the only app your users ever use, and if they commonly have to use different platforms, then pitching to a cross platform look and feel makes sense. However, the vast majority of end users only use one platform during the day, and use several apps in the process. Therefore, most end users do not care if your app looks and feels the same on multiple platforms. What they care about is whether or not your app works in a manner that is consistent with the platform they use. An app using the Metal L&F without a global menu bar is shockingly different from everything else a typical Mac user encounters, and if they never use your app on Windows or Linux, they couldn't care less how it works there.

--Rob Cope on the java-dev mailing list, Thursday, 01 Jul 2004

Saturday, July 24, 2004

I can't tell you what the future will bring, because it depends on you. If you help defend freedom, it may endure, for you and for others. If you leave it to others to defend freedom, we all may lose it.

Consider Australia, for instance. On a previous visit, I saw a copy of the Magna Carta enshrined in Canberra. I'm sure it is still there, a symbol of freedom, even though the rights it established have been largely abolished. The Australian government can now detain you just because of who you have met, and imprison you just for not answering questions. The Attorney General, with the consent of a few other officials, could declare ZDnet a "terrorist organization" tomorrow, without a trial, and you would have no recourse. They can ban a club, a union, even a political party. If you are connected with the banned organisation, you are a criminal, guilty by association. It is unnecessary to prove you actually tried to hurt anyone.

These laws are supposed to protect you from "terrorists", but they are more dangerous than terrorists. Governments are more powerful and can do more harm.

--Richard M. Stallman
Read the rest in Developer Spotlight: Richard Stallman: Builder AU: Program

Friday, July 23, 2004
Java is not the last language -- although it may be Scott McNealy's last language.

--Grady Booch
Read the rest in At IBM Rational User Conference: I have seen the future and it is Booch- ADTmag.com

Thursday, July 22, 2004
although undefined behavior is impossible in Java, deadlock and livelock are shamefully easy. Rather than provide deadlock-free language mechanisms for concurrent execution, Java provides only low-level synchronization primitives, leaving it to the programmer to manage contention. Even a simple monitor facility such as provided in Per Brinch Hansen's Concurrent Pascal would have been an improvement, and the thirty years since Hansen's work have seen considerable progress in safe approaches to program concurrency. But for whatever reason Java ignored this work.

--Greg Colvin
Read the rest in In the Spirit of C

Wednesday, July 21, 2004

The last few months have been great for client side Java. With the release of JDIC, JDNC, Java 1.5 betas, and more support than ever from Sun, I think we are seeing a revival in interest for client side Java. Still, I hear the usual refrain: "If Java is so good on the desktop, then where are all of the commercial apps?" If I point to something like LimeWire I get: "No. I mean big applications, like Word." Well, I never have an answer for that one. I didn't seven years ago and I don't know. Speed and API support isn't an issue anymore, but there still aren't any well known commercial applications written in Java. That finally led me to the question "Is any big name application written in anything other than C/C++?"

The answer is, strangely, no. Perl, TCL, PHP and Python. No big commercial app is written in anything other than the stalwarts: C and C++. But I also came to another observation. There aren't any new big commercial apps.

I want you to seriously think about this for a change. What big established software is there that's new? On my computer I have running: Mozilla, Outlook, Word, Excel, Photoshop, and jEdit. All of those, except for jEdit (a Java program), stem from a code base that is at least 7 years old. Excel is twenty! There simply aren't any new big desktop applications.

--Joshua Marinacci
Read the rest in java.net: Myth: There aren't any commercial apps written in Java. [July 20, 2004]

Tuesday, July 20, 2004

So Andrew Gilligan, the BBC reporter who claimed that the government had sexed up the intelligence about Iraq's weapons of mass destruction, was mostly right. Much of the rest of the media, which took the doctored intelligence at face value, was wrong. The reward for getting it right was public immolation and the sack. The punishment for getting it wrong was the usual annual bonus. No government commissions inquiries to discover why reporters reproduce the government's lies.

All journalists make mistakes. When deadlines are short and subjects are complicated, we are bound to get some things wrong. But the falsehoods reproduced by the media before the invasion of Iraq were massive and consequential: it is hard to see how Britain could have gone to war if the press had done its job. If the newspapers have any interest in putting the record straight, they should surely each be commissioning an inquiry of their own. Unlike the government's, it should be independent, consisting perhaps of a lawyer, a media analyst and an intelligence analyst. Its task would be to assess the paper's coverage of Iraq, decide what it got right and what it got wrong, discover why the mistakes were made and what should be done to prevent their repetition. Its report should be published in full by the paper.

--George Monbiot
Read the rest in MediaGuardian.co.uk | Media | Our lies led us into war

Monday, July 19, 2004
If you write code that requires 1.5, then you are holding your customers hostage to having an acceptably bug-free 1.5 JRE on their machines. Even if the download is free, they still have to download it and install it. The download and install may not be cost-free. Or even achievable in some cases (e.g. corporate machines where users are not allowed to have unapproved software).

--Greg Guerin on the java-dev mailing list, Thursday, 1 Jul 2004

Sunday, July 18, 2004
Coding up the simplest thing that could possibly work is really about this: If you can't keep five things in your head at one time and make a decision, try keeping three things in your head. Try keeping just one thing in your head, and see if you can make a decision. Then you can think of the next thing. And amazingly, when you write some of this dumb, straight-ahead code, it often turns out that it was all that was required. It works great. When a second programmer comes back later and reads the code she might say, "The people who wrote this are morons. They just wrote a simple linear search here. This thing's ordered, so they could have done a binary search. They could have used a hash table here. Why are they doing a linear search?" Well, because a linear search worked. And when the other programmer looked at the linear search, she understood it in a minute.

--Ward Cunningham
Read the rest in The Simplest Thing that Could Possibly Work

Saturday, July 17, 2004

Apache Ant is the backbone of the development process in any modern Java development shop. Based on an open XML-based script, it controls the build and deployment process. It can talk to version-control systems like CVS. It can generate the 5 to 7 extra files that a business component needs, by leveraging another Open Source tool called XDoclet. It can compile code using any Java compiler. It can coordinate unit testing at different tiers by running tests written to Open Source testing frameworks such as JUnit and its derivatives, HttpUnit and JUnitEE. It can package and deploy J2EE applications to any application server. Best of all, its script-based model means greater reuse, a faster learning curve for fresh developers and a higher average level of quality in a development team.

Most graphical IDEs now have support for Ant. Good development practice nowadays is to ignore the IDE's own code generation, compilation and packaging features, and to use Ant's equivalents instead.

The ultimate endorsement of Ant is that Microsoft now has an Ant lookalike called MSBuild as the build platform for Visual Studio.NET. To those who weren't paying attention, this is an example of Microsoft chasing Open Source's tail-lights (Jim Allchin, I hope you're reading this).

--Ganesh Prasad
Read the rest in Linux Today - Community: Beyond an Open Source Java

Friday, July 16, 2004
With a kind of weird cryptic syntax, it reduces the lines of code by making code less readable. Didn’t’ we learn our obscuring lesson with C? The beauty of languages like Python is not only the abstractness and easy of use, but also readability. Of course the creators of Groovy will rave about its virtues, and an ugly baby will always look beautiful to its mom, but this baby needs to be put to sleep.

--Malcolm Davis
Read the rest in java.net: Groovy isn’t hip [June 30, 2004]

Thursday, July 15, 2004

With static type checking the programmer must do lot more finger typing and a lot more thinking about these details. The programmer uses valuable brain cycles up on that stuff, rather than on actually solving the problem. There are situations where latent typing, sometimes called weak typing, frees up what you're doing so much that you can really think about the problem and the expression becomes clean. The type checking still happens, it just happens later in the process.

Latent type checking gives you much more flexibility in your programming. The way I describe it to C++ programmers is that with latent typing, or Python in general, when you write a function, you get templates without templates. What you're saying in C++ with a template is that you've got code that doesn't care what type it works with. As long as these operations can be performed, then the code is happy. It's actually being evaluated at compile time and spewing out horrible error messages if it fails. But the idea is that the programmer is able to say, "I would like a Bag of Cats." The thing says, OK, as long as I can perform these various operations on Cats that I want to, I don't care if it's Cats or whatever. That's what you get for free with Python without any of that template syntax. It turns out that's incredibly powerful. It makes your programming a lot easier to write and, I think, to read.

But the thing is, if you try to do those operations on the inappropriate type, you actually have to do it at runtime to find out that that's a problem. If you are still totally convinced, as I guess I was at one time, that strong static type checking is the greatest thing in the world, as soon as that slips away into the later type checking, you start to get nervous. You think well, what if the thing that would cause the type to be checked doesn't happen? Because if it's latent checking, the checking doesn't happen until you try to use this thing, rather than when the compiler runs. But I think in Java we've also found out that we check things at both compile time and runtime. And it seems like we tend to find those problems out. Every once in a while you would imagine something might slip through, but that's really almost a surmise. It seems like most of the time things don't slip through. When they do slip through, you get an exception. You find out about it right away. So it's not as bad as we think coming from strong static type checking

--Bruce Eckel
Read the rest in Type Checking and Techie Control

Wednesday, July 14, 2004
some 40 percent of teams in the U.S. don't use version control at all. 76 percent don't unit test, and 70 percent don't have a daily build.

--Andy Hunt
Read the rest in ONLamp.com: The Pragmatic Programmers Interview [Jun. 24, 2004]

Tuesday, July 13, 2004
Hacking is often just some kid trying to be funny. The thing is, we have a particular sense of humor and most people just don't get our jokes. But ... hacker terrorists? Right. We're only a threat to those who want to innovate with money rather than with brains. Looking around this room, you can tell we're not motivated by money, and that scares some people.

--Steve Wozniak
Read the rest in Wired News: A Gathering to Hack the System

Monday, July 12, 2004

Most programmers say garbage collection is or should be slow, with no given reason- it's assumed but never discussed. Some computer language researchers say otherwise.

Consider what happens when you do a new/malloc: a) the allocator wanders through some lists looking for a slot of the right size, then returns you a pointer. b) This pointer is pointing to some pretty random place.

With GC, a) the allocator doesn't need to look for memory, it knows where it is, b) the memory it returns is adjacent to the last bit of memory you requested. The wandering around part happens not all the time but only at garbage collection. And then (depending on the GC algorithm) things get moved of course as well.

--J.P.Lewis and Ulrich Neumann
Read the rest in Java pulling ahead? Java versus C++ benchmarks

Friday, July 9, 2004

Many years ago, I was so innocent I still considered it possible that we could become the humane and reasonable America so many members of my generation used to dream of. We dreamed of such an America during the Great Depression, when there were no jobs. And then we fought and often died for that dream during the Second World War, when there was no peace.

But I know now that there is not a chance in hell of America’s becoming humane and reasonable. Because power corrupts us, and absolute power corrupts absolutely. Human beings are chimpanzees who get crazy drunk on power. By saying that our leaders are power-drunk chimpanzees, am I in danger of wrecking the morale of our soldiers fighting and dying in the Middle East? Their morale, like so many bodies, is already shot to pieces. They are being treated, as I never was, like toys a rich kid got for Christmas.

--Kurt Vonnegut
Read the rest in Cold Turkey -- In These Times

Thursday, July 8, 2004
Program defensively with the assumption that clients will do their best to destroy its invariants. This may actually be true if someone tries to break the security of your system, but more likely that your class will have to cope with unexpected behavior resulting from honest mistakes on the part of the programmer using your API. Either way, it is worth taking the time to write classes that are robust in the face of ill-behaved clients

--Joshua Bloch
Read the rest in The Doctor Is In

Wednesday, July 7, 2004

I love generics (the bytecode of which MIGHT be usable on older JRE's, but I won't believe until I test), and I like a lot of the new 1.5 additions, but for real production code, I'm not going to be using 1.5 in my publicly distributed projects for a long, long time. My personal projects, I'll have a lot of fun with, but I'm loathe to tell any users 'You can't run my program, your {insert technical term they usually don't understand, JRE, JVM, OS, browser, kernel, etc.} is out of date.'

--Morgan Schweers on the Java Dev mailing list, Thursday, 1 Jul 2004

Tuesday, July 6, 2004
Sun is actually losing control of the Java franchise. If Sun were smart, they'd see the writing on the wall--that they can't maintain exclusive control of Java and that open source is taking over.

--Anne Thomas Manes, Burton Group
Read the rest in Is Java cooling off? | CNET News.com

Monday, July 5, 2004

I don't have any ideological axes to grind. The debates between this and that open source license are entirely boring. There's really only one sense in which it's important: when ideology keeps developers away from the Java platform, it's extremely important, and needs to be neutralized as an issue. There's an easy way to neutralize that issue: release Java under a legitimately open-source license. Sun wants to get from 3 or 4 million Java developers (this year's number is 4 million) to 10 million; it will be a whole lot easier to do that if you can throw some hundreds of thousands of Linux developers into the mix. Gosling has the odd impression that Java is incredibly popular on Linux. That's really not true. There are two significantly different communities: Java developers who happen to use Linux (just like there are Java developers who happen to use Windows or OS X), and Linux developers, who for whatever reason are staying away from Java--a significant number of whom are moving towards Mono, a .Net clone.

I happen to think that Mono is an extraordinarily bad idea; I don't see any chance that there will be meaningful interoperation between Windows apps and Linux apps because of the CLR. The real glue to Windows is VB and libraries, and I don't think they are going away, nor could they be cloned without a huge and disastrous lawsuit. But that's beside the point: Mono's existence shows that Sun failed to attract Linux developers when they should have. They didn't neutralize the ideological issue when they could have, and developers went elsewhere.

Of course, it may well be too late. If Sun released the JDK under an open source license tomorrow, would anyone care? Perhaps not. I'm inclined to say "Better too late than never," but I'm very disappointed that they're still dragging their feet over decisions that should have been made years ago. If there were an open source Java in 2000, it's quite possible that .Net wouldn't even exist. It certainly wouldn't be serious competition.

--Mike Loukides
Read the rest in java.net: ex post javaone [July 04, 2004]

Sunday, July 4, 2004
Get the build under control. Owning the build is job number one. "Builds in my IDE" doesn't count. Use ant or makefile to build code, not an IDE. Once we've got the build down, then we can start leveraging the IDE, but the build process has to be IDE independent. Dysfunctional build and deployment processes are a good way to derail legacy maintainance projects.

--Bill de hÓra
Read the rest in Bill de hÓra: Seven more ways to improve legacy Java

Saturday, July 3, 2004
Here is an officer of the Department of Justice, who has declined to prosecute another officer of the Department of Justice, who has committed crimes documented by another officer of the Department of Justice, because yet another officer of the Department of Justice has deported the witnesses. And you have to ask, where is the justice in that?

--Bryan Lonegan
Read the rest in The New York Times > New York Region > Lawyers Sue Over Tapes With Detainees

Friday, July 2, 2004
Java has some technical advantages over C#, and vice versa, but it's probably safe to assume that a debate over the technical merits of Java vs. C# will be unproductive and neverending.

--Havoc Pennington
Read the rest in Java, Mono, or C++?

Thursday, July 1, 2004

The most difficult barrier is psychological, which is the mistaken belief that Java technology is slow. Java technologies do not compromise what you are trying to build. Java technologies today perform as well as C++. The amount of tools that are now available for Java development is fantastic -- everything from Sun's products to Open Source projects and tools are available. There is a tremendous amount of information available about migrating to Java technologies from C++ and other technologies, again available through java.net as well as other sites like gamedev.net.

Benefits of moving to the Java platform from C++ include accessibility to more platforms, decreased development time, automatic garbage collection, and not having to track down bugs and memory leaks. These benefits allow a faster time to market and enable you to run your game on more than one platform. And again, the key point is that the performance is there. Roughly 90% of all the PC games that were released in the past year could have been done with existing Java technologies.

--Chris Melissinos, Chief Gaming Officer, Sun Microsystems
Read the rest in Java Technology Gets in the Game: A Conversation with Chief Gaming Officer, Chris Melissinos

Wednesday, June 30, 2004
Where's the outrage on viruses? I don't understand. Just in the first quarter there were losses of $300 billion for worms and Trojan viruses. We call them worms and Trojans, but they're Microsoft viruses. If you write proper Java applications, we have solved Ebola, anthrax, and mad cow.

--Scott McNealy, Sun Microsystems
Read the rest in Sun's McNealy swings at rivals | CNET News.com

Tuesday, June 29, 2004
Striking the proper constitutional balance here is of great importance to the Nation during this period of ongoing combat. But it is equally vital that our calculus not give short shrift to the values that this country holds dear or to the privilege that is American citizenship. It is during our most challenging and uncertain moments that our Nation's commitment to due process is most severely tested; and it is in those times that we must preserve our commitment at home to the principles for which we fight abroad.

--Justice Sandra Day O'Connor
Read the rest in YASER ESAM HAMDI and ESAM FOUAD HAMDI, as next friend of YASER ESAM HAMDI, PETITION- ERS v. DONALD H. RUMSFELD, SECRETARY OF DEFENSE, et al.

Monday, June 28, 2004
I don't want to say when that will happen. But make no mistake: We will open-source Solaris.

--Jonathan Schwartz
Read the rest in Sun warms to open source for Solaris | CNET News.com

Sunday, June 27, 2004
Recently, a lot of campaign reporters were writing that Kerry is altering his "populist" message and moving to the centre. If John Kerry was ever a populist, George W Bush is a Rhodes scholar. Here's what Kerry has to face up to and build upon. The difference between him and Bush is that Kerry represents the liberal, charitable wing of the Privilege party and George W represents the conservative, greedy wing of the Privilege party.

--Howell Raines
Read the rest in Guardian Unlimited | US elections 2004 | Feature: Howell Raines on the campaign challenges of John Kerry

Saturday, June 26, 2004
Java VM performance on the Mac is very disappointing compared to Windows or Linux. If I need decent Java performance I use the server VM on Linux or if that's not enough put the number crunching into C or Objective C accessible through JNI on my G5.

--John W. Whitworth on the Java-Dev mailing list, Saturday, 24 Apr 2004

Friday, June 25, 2004
Jini is taking the same path as Java. Java first had visibility on devices like set-top boxes. It really gained traction and ended up back on devices with J2ME and the like. Jini is doing the same thing. The sort of on-the-fly discovery and contract negotiations turn out to be terribly important to people who are building complex systems in the data center. Web services have a way too coarse-grained interface to think about using for some infrastructure applications. It's way too creaky for that from a management point of view. Jini has been in front of that. N1 is drawing heavily upon it.

--Greg Papadopoulos, Chief Technology Officer, Sun Microsystems
Read the rest in On the hot seat at Sun |CNET.com

Thursday, June 24, 2004

The problem is that much of the Java stuff out there is just written by really smart morons who seem to love complexity for complexity's sake. Even in the API itself! Ever used the Calendar API? It's written by a monkey. Ever check out the code under the JSTL? Those guys have to be on crack. It's not the language itself that causes these problems, it's the culture around the language. When programmers respect patterns more than solutions, you know something is broken.

--Russell Beattie
Read the rest in Russell Beattie Notebook

Wednesday, June 23, 2004

I've been struck by the seemingly pathological need so many CIOs have for the certification of skills and accreditation of organizational performance. I find this craving misguided and pathetic. What does it really say when someone is Microsoft certified? Or has a certificate in "network engineering" from a quality university? Or if a development organization has a Capability Maturity Model Level 3 rating? Or is ISO 9000 compliant?

In many respects, these questions are as pointless and silly as asking, what does it mean to graduate summa cum laude from Harvard in English? Or, how good a lawyer will you be if you performed brilliantly on the multistate bar exam? Or, to be a total jerk about it, how superior an executive would you be if you had an MBA from a top-20 school?

Unfortunately, these silly and pointless questions are templates for the questions so many CIOs ask themselves when they seek to outsource development or weigh the quality of their own human capital investments. For reasons I fully understand but totally reject, many CIOs increasingly look to certification and accreditation standards as "market signals" indicative of professional quality and reliability. This represents the laziest and most dangerous kind of cover-your-ass thinking by C-level executives.

--Michael Schrage
Read the rest in Hiding Behind Certification - Making I.T. Work - CIO Magazine Jun 15,2004

Tuesday, June 22, 2004
What I mostly use for visualization is JavaDoc, because it's an abstract view of the public interface. I generate JavaDoc a lot as I'm designing and developing. I look at the HTML pages generated by JavaDoc and think, well, this looks kind of confusing. And I go back and make some changes to the code. I may not be able to see that it is confusing just by looking at the code. So I think having different ways to visualize code and designs as it is being developed can help guide the design.

--Bill Venners
Read the rest in Analyze this!

Monday, June 21, 2004
I refactor many many times an hour. Refactoring and all the auto-generation is so fundamental to the way I work now that I have come to view Idea/Eclipse as the baseline for any editor. Going back to XCode or CodeWarrior (or anything else besides Idea/Eclipse) would be like having to type with one finger. These features get your mind off syntax and keep you thinking about architecture. You can argue whether that's a good thing for a beginner, but if time is money, you need these features.

--Willis Morse on the java-dev mailing list, Friday, 11 Jun 2004

Saturday, June 19, 2004
A lot of us thought in the 1990s that the big battle would be between procedural and object oriented programming, and we thought that object oriented programming would provide a big boost in programmer productivity. I thought that, too. Some people still think that. It turns out we were wrong. Object oriented programming is handy dandy, but it's not really the productivity booster that was promised. The real significant productivity advance we've had in programming has been from languages which manage memory for you automatically. It can be with reference counting or garbage collection; it can be Java, Lisp, Visual Basic (even 1.0), Smalltalk, or any of a number of scripting languages. If your programming language allows you to grab a chunk of memory without thinking about how it's going to be released when you're done with it, you're using a managed-memory language, and you are going to be much more efficient than someone using a language in which you have to explicitly manage memory. Whenever you hear someone bragging about how productive their language is, they're probably getting most of that productivity from the automated memory management, even if they misattribute it.

--Joel Spolsky
Read the rest in Joel on Software - How Microsoft Lost the API War

Friday, June 18, 2004

During the great migration away from AOL and Netscape, every engineer that ever worked there took with them Bugzilla, Tinderbox, and the others. I have a company now, and that's we use for our bug tracking: Bugzilla. Tara Hernandez (Code Rush), she now works at Pixar, and they use Bugzilla and Tinderbox. Once you use Tinderbox, you cannot work on big software without it. You see people working on big software without Tinderbox and you say to them "You guys are idiots! How do you know if your tree builds?" and they always say "Oh, our tree never builds, we know when a guy comes around and tells us when our tree builds."

Something interesting about Netscape: when I first got there, the tree was broken all the time. Every once in a while there was a day where the tree would build, and you pulled on that day. Someone would yell out "The tree is green!" and you would do everything you could to merge your stuff, and then the tree would be broken again, and it would be broken forever. When we wised up and started writing these tools things started to change, and along the way we came up with these cultural and behavioral standards. For instance, when the Tinderbox shows "RED", you don't check in. You don't check in on red. And if you do check in on red, someone will be there to kick your ass, and that person is the sheriff, and they have a sheriff badge and everything. In Code Rush you see Tara walking around with that bat, that was mostly symbolic but her job was to kick ass.

Everybody who checked in since the last freeze is "on the hook," so when the tree burns, everyone who checked in code during that cycle is responsible for fixing the tree. Life got better when there were serious consequences and it got to the point where in the old days everyone just checked in whenever they wanted. In the new days, you would be ashamed to check in something that broke the tree. It would be a big deal when you broke the tree. I checked in stuff that broke the tree on two occasions and the same guy fixed my shit twice, and I went out and bought him a bottle of Shiraz because I was ashamed that I broke the frickin' tree and I was grateful that he fixed it.

--Scott Collins
Read the rest in Ars Technica: Scott Collins interview - Page 3 - (6/2004)

Thursday, June 17, 2004

Microsoft has set a clever trap by standardizing the core of the CLI and C# language with ECMA, while keeping proprietary the class libraries such as ASP.NET and XAML. There's the appearance of an open managed runtime, but it's an incomplete platform, and no momentum or standards body exists to drive it to completion in an open manner. Many interesting class libraries are clearly encumbered by Microsoft IP and nobody concerned about legal liability will want to ship them. The core may also be encumbered, though that remains uncertain.

Aside from IP issues, Microsoft controls the .NET platform. They will always be ahead, and it will always be tuned for Windows. This is the wrong direction for free software, if we want to win the war, and not only some battles.

--Havoc Pennington
Read the rest in Java, Mono, or C++?

Wednesday, June 16, 2004

This should be obvious, but it isn’t. All packages on sourceforge, freshmeat or wherever should include a 2 or 3-sentence description of what they do. This isn’t marketing, it’s simply telling people what they need to know. WordPress spends a page on this information, with screenshots, which is more than necessary.

It’s not just open source software that’s guilty of not saying what the product does. It’s amazing how often marketing departments in commercial software companies try to make the software engineers create a product they can market, instead of marketing the product the software engineers created.

--Lauren Wood
Read the rest in Anyway » What WordPress Does Right

Tuesday, June 15, 2004

X Windows is complicated beyond belief. My God, you can't even change the screen resolution without shutting down, editing a text file and re-starting. And crashing, and re-editing. And reading Google search pages. And USENET. And re-re-editing. And re-starting.

I got dual-head extended desktop working on my Windows XP laptop right out of the box. I challenged a Linux hacker associate of mine to get extended dual-head working in X on the very same model desktop. (I agreed to 100% switch from Windows to X if he got it working.) The guy worked for two days, without success. Before he gave up, he was neck-deep in X11r6 source code! I joked that in another hour he was going to be the official maintainer.

And X crashes. Oh man, goes it ever. All the time. It doesn't always "take down" the operating system in a TECHNICAL sense, but if you do manage to escape a blank-screen lock-up you're likely to be dropped to shell with a segfault. This is better than BSOD?

--Jesse Erlbaum on the WWWAC mailing list, Wednesday, 11 Jun 2003

Monday, June 14, 2004
I have been doing a lot of security work lately with the Java JCE and often I swear (occasionally literally) that the Java JCE APIs are themselves encrypted!

--Mike Duigou
Read the rest in java.net: Complexity [April 25, 2004]

Sunday, June 13, 2004

I think that Sun could have done a lot to foster the development community without doing java.net, or even instead of it. In some ways java.net reminds me of IBM's attempt to do its own open source zone on developerWorks back in 1999. How many of us are going to that for code now?

A shared CVS repository, wiki's and a bunch of weblogs do not a community make. Sun might be able to get bunches of communities around individual projects, but growing a community across projects takes time and effort. It doesn't happen by magic. Jakarta (with all its faults) is the only example I'm aware of that actually has a flourishing community across some subsection of its many subprojects.

The bottom line is that Sun is asking us to trust them to do the right thing. Just like they've asked us (told us, really) to trust them to steward the Java technology. My reply to Sun: show us your heart. Here's your chance to make it up to us for not submitting Java to ECMA, for not open-sourcing Java, and for foisting tons of junk off on us via the JCP.

--Ted Leung
Read the rest in Ted Leung on the air

Saturday, June 12, 2004
In 1987, three years after the success of NFS, Sun lost the war to define the standard graphics interface for the next generation. The winner, the X Window System, was technically inferior to Sun's NeWS offering. But X had one critical advantage; it was open source. Ten years later in 1997, when Bill Joy came to a Linux conference to push Jini as a universal network-service protocol, we in the open-source community told him straight up "You can have ubiquity or you can have control. Pick one." He picked control, and Jini failed in its promise. The contrast with NFS could hardly be more stark.

--Eric S. Raymond
Read the rest in Title

Friday, June 11, 2004

The Hashtable class is thread-safe, whereas the HashMap class is not. So why was another thread-safe map -- ConcurrentHashMap -- needed, when we already have Hashtable (and Collections.synchronizedMap())? While both Hashtable and ConcurrentHashMap are thread-safe implementations of Map, Hashtable (and synchronizedMap) get their thread-safety from synchronizing every method. (Note that simply synchronizing every method does not, in general, render a class thread-safe). The result of synchronizing every method is that no operations on a Hashtable in different threads can overlap each other -- access to the Hashtable is effectively serialized. Such classes can become a scalability bottleneck, because one thread performing a long-running operation on a Hashtable can stall many other threads until that operation is finished.

By contrast, classes such as ConcurrentHashMap are designed not only for thread safety, but for highly concurrent access. This means that multiple operations can overlap each other without waiting for a lock. In the case of ConcurrentHashMap, an unbounded number of read operations can overlap each other, reads can overlap writes, and up to 16 write operations can overlap each other. In most cases, read operations (Map.get) can proceed with no locking at all! (This is the result of some extremely careful coding, deep understanding of the Java Memory Model, and extensive peer review -- don't try this at home.) The naming convention ConcurrentXxx indicates a class that has been designed not only for thread safety, but for high performance and scalability under concurrent access.

--Brian Goetz
Read the rest in A First Look at JSR 166: Concurrency Utilities

Thursday, June 10, 2004
RFC 2396 is a lousy spec, and has been interpreted in many different ways by different implementors.

--Michael Kay on the saxon-help mailing list, Thursday, 8 Apr 2004

Wednesday, June 9, 2004
We think we’re inventing the new open source. It’s not the ponytailed faction on the communist fringe. There needs to be professionalism and credibility. There needs to be sales and marketing, and all the things that make a business. People say you’re either a company or a starving poet. Why can’t we be both?

--Marc Fleury
Read the rest in SD Times: News & Top Stories

Tuesday, June 8, 2004
when the optimization won't bring significant, measurable benefits, I prefer clear code over optimized code: code that is slightly slower or more memory-intensive but a lot more transparent and easy to maintain will win over the long term.

--David Megginson on the XML Developers mailing list, Monday, 05 Apr 2004

Monday, June 7, 2004

It's quite remarkable how in contemporary society people develop brand loyalties. Of course today with the Internet and discussion forums we see everyone from sincere amateurs to obnoxious trolls publicly jumping to either the defense of their favourite brand or trashing another that they dislike.

For goodness sakes — these are just products. Yet the level of emotion displayed is sometimes alarming. Sure, sometimes companies and their products take on a certain character, and we make certain assumptions about them as a consequence of consensus observations and experience. Sometimes these becomes almost cultural assumptions — Sony takes high quality TVs — Mercedes cars are well built — Snap-On tools are rugged. Whether true or not, they become part of our society's cultural world-view.

But sometimes these assumptions are simply based on what some psychologists call "magical thinking". This is the all-to-human trait of suspending rationality even when the facts apparently contravene observation. Believing in things without a rational basis.

--Michael Reichmann
Read the rest in Pixel Peepers

Sunday, June 6, 2004

How about Jesus’ Sermon on the Mount, the Beatitudes?

Blessed are the meek, for they shall inherit the Earth.

Blessed are the merciful, for they shall obtain mercy.

Blessed are the peacemakers, for they shall be called the children of God. …

And so on.

Not exactly planks in a Republican platform. Not exactly Donald Rumsfeld or Dick Cheney stuff.

For some reason, the most vocal Christians among us never mention the Beatitudes. But, often with tears in their eyes, they demand that the Ten Commandments be posted in public buildings. And of course that’s Moses, not Jesus. I haven’t heard one of them demand that the Sermon on the Mount, the Beatitudes, be posted anywhere.

“Blessed are the merciful” in a courtroom? “Blessed are the peacemakers” in the Pentagon? Give me a break!

--Kurt Vonnegut
Read the rest in Cold Turkey -- In These Times

Saturday, June 5, 2004
Imagine for a moment that Windows XP came with Office XP Professional and Visual Studio .NET preinstalled with it. Imagine it was significantly more secure and easier to use. Imagine that it cost only $50 for all of that software. Sun's new Java Desktop System Release 2 is like the bizarro world equivalent of that kind of Microsoft software package. It's in the same league, except it doesn't use Microsoft technologies. If only it actually worked.

--Jem Matzan
Read the rest in Linux.com | First look: Sun Java Desktop System Release 2

Friday, June 4, 2004
We haven't worked out how to open-source Java -- but at some point it will happen; it might be today, tomorrow or two years down the road.

--Raghavan Srinivas, Sun Microsystems
Read the rest in Sun to open-source Java: ZDNet Australia: News: Software

Thursday, June 3, 2004
Please don't judge all IDEs by JBuilder. Many of them (notably IntelliJ IDEA and Eclipse) do not suck.

--John Brewer on the java-dev mailing list, Monday, 17 May 2004

Wednesday, June 2, 2004

Java has long precedence in arrogantly mangling well- accepted meanings for things: one that particularly stuck in my craw was the use of "design pattern" to describe getters and setters. In JDK 1.4 we were told some lame way to use assertions which was a backward justification for them being disabled by default. JDK 1.4 also had to invent its own inferior logging system rather than using the openly created, well-tested and well-liked Log4J. And we've also been told many times about how Java has been as fast or faster than C++, or about how one or another feature is great and flawless. I point to the threads implementation which has had major changes quietly made from version to version with not so much as a peep of apology or admission that "hey, we really screwed up here." Or maybe I was just not on that particular announcement list.

There are some things I love about JDK 1.5. The new for loop syntax is a big step forward in making code more easily written and read, and autoboxing has been long in coming, and enum is a big improvement, but I also remember hearing over and over that features like this weren't important or necessary, and it seemed to take C# rather that the loyal Java users to stimulate the Sun Java group to add ease of programming features.

--Bruce Eckel
Read the rest in Generics Aren't

Tuesday, June 1, 2004
One of the most important acts of a software project manager is to say “no”. No, this patch introduces more code than it should. No, this feature will confuse more people than it will help. No, you’re ugly and stupid (sometimes the manager has a bad day).

--Steven Garrity
Read the rest in The Rise of Interface Elegance in Open Source Software

Thursday, May 27, 2004
I killed innocent people for our government. For what? What did I do? Where is the good coming out of it? I feel like I've had a hand in some sort of evil lie at the hands of our government. I just feel embarrassed, ashamed about it.

--Staff Sgt. Jimmy Massey
Read the rest in sacbee.com -- Opinion -- Atrocities in Iraq: 'I killed innocent people for our government'

Wednesday, May 26, 2004

A kernel hacker, who we might all consider to be a “power user” may not be a power user when he just wants to burn a CD for his road trip. A database administrator, another typical “power user” may just want to chat with his friends, not perform an orchestra of preferences and settings in a chat application. We are all experts in some area of software and beginners in others (and our experience is constantly changing).

Rather than adding more and more features for the mythical “power user”, or swing to the other end of the spectrum and dumb-down the interface for the mythical “average user”, smart developers are learning that good defaults and elegant interface design makes software better for everyone to use, regardless of their level of experience.

--Steven Garrity
Read the rest in The Rise of Interface Elegance in Open Source Software

Tuesday, May 25, 2004

Considering the importance of keeping your users and customers happy, you want your products to be designed by people who understand your customers and can see the world from their point of view. The problem with programmers doing this work is that they don’t think like other people. In fact, programmers think so differently they’re like a separate species. Alan Cooper calls them Homo logicus. What differentiates H. logicus from Homo sapiens isn’t an addiction to caffeine or an aversion to daylight; it’s a difference in how we look at the world. Most of us sapiens value being successful with our software. We don’t care how it does what it does; we just want it to do what we tell it to do. A successful specimen of H. logicus, on the other hand, is deeply interested in the inner workings of software.

A good programmer juggles a dozen variables in his head and thinks about all of the bizarre edge cases that could possibly break the software. What programmers often don’t consider, though, is that just because something is possible doesn’t mean it’s probable. To use a simple example, Apple’s iPhoto has easily accessible tools for the things most users want to do, such as cropping and rotating photos. If a programmer had designed iPhoto, a seldom-used tool for adjusting color depth would be on the screen right next to the "rotate photo" tool. An interaction designer would either hide the function in a menu or, better yet, drop color-depth adjustment altogether, thereby saving the cost of developing and supporting that feature.

--Kim Goodwin
Read the rest in Cooper: Can Programmers Do Interaction Design?

Monday, May 24, 2004
Choice of IDE is a matter of religion. Different people like different IDEs for different reasons. Which one is "best" for you depends entirely on how you define "best": what features you require, what features you abhor, how well the IDE's work style fits your work style, etc. The only reliable advice is, try it and see how well you like it.

--Glen Fisher on the java-dev mailing list, Monday, 17 May 2004

Sunday, May 23, 2004
Imagine buying a car where the hood was locked shut and you allowed the dealer that you bought it from to retain the only key to the hood of the car. Every other industry in a free market democracy works the way open source does. It's only the software industry that has this really weird, binary-only proprietary model. If you don't have source code, and you don't have a license that allows you to make changes to it, you have handed control of your technological infrastructure either for your organization or for your society to the developer of that software.

--Bob Young
Read the rest in Ottawa Citizen

Saturday, May 22, 2004
Our statutory and constitutional law is very ill-equipped to deal with the challenge of government piggybacking on private data collection. Almost all of the restraints are directed exclusively to government, and when the government essentially uses the private sector as a proxy, much of the cooperation is unregulated. What makes it all the more challenging is that the same conservative libertarians in Congress who are instinctively suspicious of government surveillance (and who helped defeat proposals like one for a national ID card) are also enthusiastic free-market types who resist any government regulation of the private sector.

--Jeffrey Rosen
Read the rest in Wired News: Getting Naked for Big Brother

Friday, May 21, 2004
I supported the war and now I feel foolish. I'm just struck by how many people like me who were instinctively distrustful of government forgot to be humble in our expectations. The idea that the federal government can quickly transform the Middle East seems odd to me for a conservative. A basic tenet of conservatism is that it's much easier to destroy things than to create them - much easier, and more fun, too.

--Tucker Carlson
Read the rest in The New York Times > Week in Review > The Hawks Loudly Express Their Second Thoughts

Thursday, May 20, 2004
I don't think that library designers know everything. I think that they know very little about how users might use their classes, and therefore shouldn't be making promises their code can't keep. If they want to support extensibility, then that should be something they design well and test for. If they aren't going to go to that effort, than I don't think providing extensibility that will “probably work” is doing their users a service, and it may be actively doing them a disservice. Not only will such code be more likely to fail, but the constraint of such virtuals limits how the class can evolve in the future. It's bad when you'd like to make a small change that would help 99.9% of your users, but you can't because somebody might have existing code that depends on your behavior.

--Eric Gunnerson
Read the rest in More on virtual by default

Wednesday, May 19, 2004
People complaining about software now need to take occasional reality breaks and remind themselves of what things were like in the 1970's, when you still typed in your Fortran programs on punchcards, fed in your decks, and then waited 2 hours for the computer operator to deliver your line printer output to get a list of the syntax errors in your program.

--Kenneth Whistler on the unicode mailing list, Friday, 14 May 2004

Tuesday, May 18, 2004
A potentially deadly illness, clinically referred to as UML (Unified Modeling Language) fever, is plaguing many software-engineering efforts today. This fever has many different strains that vary in levels of lethality and contagion. A number of these strains are symptomatically related, however. Rigorous laboratory analysis has revealed that each is unique in origin and makeup. A particularly insidious characteristic of UML fever, common to most of its assorted strains, is the difficulty individuals and organizations have in self-diagnosing the affliction. A consequence is that many cases of the fever go untreated and often evolve into more complex and lethal strains.

--Alex E. Bell, The Boeing Company
Read the rest in ACM Queue - Death by UML Fever - Are you (or your developers) sick?

Monday, May 17, 2004

In 1960, I worked at Bank of America on the ERMA project. ERMA was the world’s first electronic check processing computer. It had core memory—ferrite beads suspended from wires—and vacuum tubes. The memory was infinitesimal—less than that of the original Apple One, and the speed was hundreds of times slower. Programmers in those days did not throw away bits or clock cycles. Both were precious commodities.

Guess what? It’s now a different century! Computers have what can only be described as gobs of memory, along with blinding speed, speed so extreme that only the finest operating system developers in the world can bring them to a crawl.

So why can’t I input my credit card number the way it appears on the card? Why do I have to suck the extra spaces out, making it all but impossible to re-scan it for errors? We’re talking three spaces here, three bytes. We’re talking a loop to scan for those characters that can be accomplished in couple of microseconds.

What possible reason exists today for writing third-rate code that was no longer acceptable by the late 1970s? How much money is your company willing to lose to put up with it? When are you going to demand that people be able to enter dates in the way they are most comfortable, enter credit card numbers in the way they are most comfortable, and enter social security numbers with the hyphens as either God or Roosevelt intended?

--Bruce Tognazzini
Read the rest in AskTog: Top 10 Reasons to Not Shop On Line

Sunday, May 16, 2004

Today, US carriers handle barely 2 percent of international cargo. The industry is dominated by nations like Panama and Liberia, so-called flags of convenience, where regulations are lighter and costs lower.

The US fleet was a classic victim of the efforts to save it. Rather than adapt to new economics, the American industry suffocated under overregulation and protectionism. Now the job gets done - goods move efficiently from place to place - but it's a rogue's business, rife with ne'er-do-wells and pirates.

The US is in danger of repeating the mistake, this time with intellectual property. In the face of new technologies and competition, the US is toughening patent and copyright protections. It's leaning on other countries - and its own citizens - to play by ever tighter rules. But if it's not careful, the US will drive its intellectual property offshore into a shadow world that, like shipping, is replete with piracy and rogue states.

--Thomas Goetz
Read the rest in Wired 12.02: START

Saturday, May 15, 2004
Anyone who has done serious infrastructure work on production systems has had to deal with existing COBOL systems. In both dollar terms, and in person-hours, there is more investment in COBOL than any other language or environment surviving today. So it makes some economic sense in some cases to invest a little more in the existing systems rather than invest a lot to rewrite.

--Barry Tauber on the xml-dev mailing list, Thursday, 13 May 2004

Friday, May 14, 2004
our TiVo boxes are watching us and reporting our viewing habits back to their mother ship. And this is highly detailed snooping according to TiVo's own report of the most replayed and most freeze-framed moments from the recent Academy Awards telecast. They not only know what you are watching, but how you are watching it on a second-by-second basis -- information that of course will be sold to the very advertisers who think they are being subverted by TiVo technology. If you are watching "Debbie Does Dallas," your TiVo knows.

--Robert X. Cringely
Read the rest in I, Cringely | The Pulpit

Thursday, May 13, 2004
The more features that a designer puts into a language or library, the more power the users get, but also the more surface area they get. There are more features users have to know about, even if it is knowing they just want to ignore certain features.

--Bill Venners
Read the rest in Elegance and Other Design Ideals

Wednesday, May 12, 2004
The golden rule of programming has always been that clarity and correctness matter much more than the utmost speed. Very few people will argue with that. And yet do we really believe it? If we did, then 99% of all programs would be written in something like Python. Or Erlang. Even traditional disclaimers such as "except for video games, which need to stay close to the machine level" usually don't hold water any more.

--James Hague
Read the rest in Programming as if Performance Mattered

Tuesday, May 11, 2004

There are all sorts of ways to slice it up, but one that I find useful in some situations is to divide programming tasks rather crudely into two categories: mud slinging and diamond cutting.

Mud slinging is where what to do is pretty clear. You just wade in and start shoveling. You don't have to think to hard and you get to feel real productive because lots of motion is happening. I often feel like most of what I do is in this category. It's not too hard, it needs to get done, Just Do It. I find that it has a personally satisfying rhythm. Relaxing, low stress, regular progress. Lots of lines of code cranked out.

Then there's diamond cutting. This is where you stare and stare at a problem, and then whack! it breaks open. Not much coding gets done. I find it really frustrating. Why can't I figure it out? Why? What? How? Sorting socks would be more fun. High stress. But then, it hits me. A dozen quick lines of code and poof, hard problem solved. It's a real rush. High dynamic range in emotional state.

Of course, it's impossible to tell the difference between true diamond cutting and generic cluelessness.

--James Gosling
Read the rest in James Gosling: on the Java road...

Monday, May 10, 2004

A smoker may say that his smoking doesn't bother anyone else, and a typical developer who never writes unit tests may say his lack of discipline doesn't bother anyone else, but they're both wrong. If I'm in the same room as a habitual smoker, or on the same project as a undisciplined developer, I'm going to suffer to some extent -- from the physical odor of the former, or the code-smells of the latter.

The larger context also sees problems: higher health-care costs for the smoker [and thus higher expenses by insurers and governments]; longer project times (for debugging) and lower-quality products from the undisciplined developers.

--C. Keith Ray
Read the rest in MemoRanda

Sunday, May 9, 2004

What UML should do, what any sort of architectural language should do, is make it clear whether a particular design is good or bad. Fetishizing UML (stand back, I have a license to kill with literary theory) breaks it, perverts it so that it does precisely the opposite of what it's supposed to do. I think one could argue that fetishizing any technology, techinique, or process, from design patterns to agile programming to RUP to Java itself causes a strange inversion where the fetishized object of desire, having become an end in itself, destroys the end for which it was created. We've certainly seen that with patterns: poorly applied patterns that served primarily to legitimize poor code: "it must be good, it has patterns." "It must be good, there's a UML diagram And look, the code's so complex, you can't understand it without the diagram. Great stuff.." UML, patterns, and our whole artillery of tools and techniques, are only means to an end; code is good because it works, because it's maintainable, because it's efficient, and for many reasons, but not because it applies the principles of some holy writ.

I was going to close this article by saying "kill the sacred cows", but that's not the point. The problem isn't the poor cows; it's that they're sacred, but that's hardly their fault. UML isn't the problem; the step in which UML starts to transfer a "divine like aura" to anything attached to a UML diagram is. If our tools are going to be useful, we can't take them so seriously.

--Mike Loukides
Read the rest in java.net: Death by UML-more [April 25, 2004]

Saturday, May 8, 2004

About ten years ago I read Bjarne Stroustrup's The Design and Evolution of C++. It's a wonderful book that I highly recommend. Stroustrup explains how C++ came to be how it is (or was, at that time), including rejected ideas, rationales, goals and priorities, etc.

The fascinating and troubling thing about it is that Stroustrup began with a language I like -- C -- and made a series of very sensible design decisions, ending up with C++ (a language I don't like). I found myself asking the same question as I finished that book. What went wrong?

Any answer to that question is bound to be too simplistic, but I think it's not far from the truth that the misstep in the case of C++ was the very first one: deciding to implement a strongly typed OO system atop fast-and-loose C.

--Glenn Vanderburg
Read the rest in Glenn Vanderburg: Blog

Friday, May 7, 2004

When I was in junior high school in Southern California, they tried to teach me Spanish by showing us films about "E Man" (a dog, I think), and albondegas (meatballs). That's about all I remember, because I reacted strongly when the teacher would speak Spanish to us and then expect us to reply with something meaningful. I was not conscious enough to see the motivation for learning this, and the effort seemed painful. The same was true for playing the guitar (it makes your fingers hurt!) and any number of other potential abilities that never manifested.

So I am sympathetic with those who resist learning more than one language. I'll probably only ever know a few phrases of non-English languages, and it is only through experience that I've discovered the incredible value of learning more than one programming language. The biggest payoff is this: I am able to think about things in Java or C++ that I was unable to conceive of before I learned Python. And from what I've read and the code that I've seen, very few single-language users have been able to conceive of these things, either. Your language really does constrain your thoughts.

--Bruce Eckel
Read the rest in Bruce Eckel's MindView, Inc: 3-22-04 How to Argue about Typing

Thursday, May 6, 2004

It would also greatly help if Sun stopped muddying the waters and killed its own lame offering called SunONE (earlier called iPlanet). Nobody will buy SunONE. Nobody will take it for free. Even if Sun offers a wad of money with it, people will take the money but ignore the product.

Loud message to Sun: SunONE will not fly. It is distracting and a waste of time and money. Kill it. Help JBoss attain J2EE certification. Make JBoss the reference implementation of J2EE. Arrive at a commercial understanding with JBoss Inc. to provide Sun's support umbrella for the product, at a reasonable price. And trumpet this from the rooftops. No corporate decision-maker must be left unaware of the fact that a fully certified, Open Source application server is available with full support from Sun, all at a much lower cost than any competitor.

That, taken together with J2EE's openness and vendor-independence, is essential to halt the advance of .NET

--Ganesh Prasad
Read the rest in Linux Today - Community: Beyond an Open Source Java

Wednesday, May 5, 2004
my problem with microsoft is that it is as much a conservative force slowing computing to a speed that it can exploit for maximum profit. bill gates claims notwithstanding, i don't feel that computing is very much advanced on where it was in the 80's. it's just more ubiquitous

--Rick Marshall on the xml-dev mailing list, Thursday, 08 Apr 2004

Tuesday, May 4, 2004
Here's a cheap trick to play on an audience - especially one drawn from the business community. Ask them how many use Microsoft software. Virtually every hand in the room will go up. How many use Apple Macs? One or two - at most. How many use Linux? If the audience is drawn from corporate suits, no hands will show. Now comes the punchline: who uses Google? A forest of hands appears. 'Ah,' you say, 'that's very interesting, because it means you're all Linux users.' Stunned looks all round.

--John Naughton
Read the rest in The Observer | Business | The Networker: What can't you find on Google? Vital statistics

Monday, May 3, 2004
Because all open source VMs use GNU Classpath, they are largely identical in their ability to run or not run existing Java code.

--Havoc Pennington
Read the rest in Java, Mono, or C++?

Sunday, May 2, 2004
it's not versus. They're two different axes. There's commercial development versus noncommercial development. And there's proprietary development versus open-source development. Commercial versus noncommercial is about whether you're trying to make money. Proprietary versus nonproprietary is whether you have an open-source or a closed-source license. These are separate axes. And all four categories exist. There is open source for profit, there's open-source nonprofit, there's closed source for profit, there's closed-source nonprofit. All four of these categories exist, and trying to smash those four axes into one, the way Microsoft would like to do, really misrepresents the situation. There's not open source versus commercial; it's open source versus proprietary. Commercial is a different axis.

--Eric S. Raymond
Read the rest in Q&A: Raymond Expounds on Open Letter to Sun, McNealy

Saturday, May 1, 2004

UI development is the hard part. And it’s not the last step, it’s the first step. In my estimation, the difference between:

  • software that performs function X; and
  • software that performs function X, with an intuitive well-designed user interface

isn’t just a little bit of extra work. It’s not even twice the work. It’s an entire order of magnitude more work. Developing software with a good UI requires both aptitude and a lot of hard work.

--John Gruber
Read the rest in Daring Fireball: Ronco Spray-On Usability

Friday, April 30, 2004
the tab is a presentation macro, not a character - the fact that some bearded idiot made it an ascii character is an unfortunate decision we're stuck with. If you're too young to know what ascii is, tab is a bit like the bold or font tag in HTML - also unfortunate decisions. Tab characters don't belong it source code, ever - only idiots put tabs in source code. Map the tab key to multiple whitespaces instead - I don't care how you do it, just get it done.

--Bill de hÓra
Read the rest in Bill de hÓra: Tabs versus Spaces in a nutshell

Thursday, April 29, 2004
There are probably five or six million people trading files at any given moment with Morpheus or Kazaa. And the fact is that the record industry is only off ten percent. In the United States everything is off at least ten percent. We are in a recession. In fact, the record industry is not in anyway dying. It has just to become much more realistic after a long period in which it has seen obscene profits. Because when they first produced the CD they had huge gross margins. The cost of a CD was based on the cost of making a CD, and that cost plummeted immediately. And the cost of selling one and the cost of buying one staid the same. Huge amounts of many was pored into the record companies. They got ridiculously fat and heavy, and now they are having to pay the piper. And they claim it's not their own mismanagement and greed but that they are being attacked by pirates. In fact they had been the most unconsciousness pirate at all.

--John Perry Barlow
Read the rest in Wrapped up in Crypto Bottles

Tuesday, April 27, 2004
More dangerously, code is frequently rewritten in ways that do not change its behaviour. A better algorithm is chosen, or the code is modified to fix a bug. Accepted wisdom is that the continued running of the existing unit-tests is sufficient proof that the code continues to work as intended. However, changing the code is likely to move the important edge-cases in ways that render existing tests pointless, and additional tests necessary.

--Charles Miller
Read the rest in The Fishbowl: Where Bugs Come From

Monday, April 26, 2004

Optimization matters only when it matters. When it matters, it matters a lot, but until you know that it matters, don't waste a lot of time doing it. Even if you know it matters, you need to know where it matters. Without performance data, you won't know what to optimize, and you'll probably optimize the wrong thing.

The result will be obscure, hard to write, hard to debug, and hard to maintain code that doesn't solve your problem. Thus it has the dual disadvantage of (a) increasing software development and software maintenance costs, and (b) having no performance effect at all.

--Joseph Newcomer
Read the rest in Optimization: Your worst enemy

Sunday, April 25, 2004

Lots of Java programmers "know" that they shouldn't do String concatenation by writing x = a + b + c + d + e;, for instance -- that allocates all sorts of extra strings (as in your example above) and is just terribly inefficient.

Only, it doesn't: The compiler actually translates those concatenation into StringBuffer calls invisibly, and it all works just performantly delicious.

So for the past umpty-ump years, I've been dealing with code that's needlessly full of StringBuffer.append() operations, when the programmers could have used simple straightforward concatenation, because they "knew" the assembly that was generated, based on their experience with, I dunno, Java 1.1 or something.

--Mike Kozlowski
Read the rest in Larry's rules of software engineering, part 1: Every software engineer should know roughly what assembly language their code generates.

Wednesday, April 21, 2004

If it doesn't have an open-source reference implementation, the term "standard" is an abuse of the language.

That's still a very strong position by today's standards. But it won't be in three to five years. If it doesn't have an open-source implementation, how do you know what the standard means? There's a technical level to this, and there's a political level. The technical level is that standards always under-specify things. You never learn everything you need to know from reading a standards document. There are always assumptions and stuff that slip in, and you need to go to a reference implementation to compare your behavior with that to be sure that you're conformant with reality as opposed to the theory of the standard. So for that technical reason, if it doesn't have an open-source reference implementation, where are you? You're stuck. You're at the mercy of the vendor again. It might as well not be a standard at all.

--Eric S. Raymond
Read the rest in Q&A: Raymond Expounds on Open Letter to Sun, McNealy

Tuesday, April 20, 2004

Someone should tell SCO that IT customers don't like to be threatened by their vendors. In fact, the increasingly bellicose tone of SCO's communications and the refusal to show any evidence might well suggest that its claims are nothing more than grandiose ravings. To be sure, Microsoft will take advantage of those ravings while it can.

The real story here is the lack of substance to the SCO claims, and the increasingly remote chance that its lawyers will prevail. A similar case alleging plagiarism of Unix by an open-source operating system was litigated in the early '90s. AT&T sued the University of California, claiming that the BSD system infringed upon AT&T's copyrights. Eventually, the court narrowed AT&T's concerns down to only four source files, which the university simply replaced rather than argue about them. AT&T then settled the case by paying the university's court costs. SCO is not likely to do any better.

--Bruce Perens
Read the rest in The fear war against Linux | CNET News.com

Monday, April 19, 2004

At the beginning of ICANN, a promise was made that the community of internet users would be able to elect at least half of ICANN's board of directors. That promise was broken.

Today ICANN/US-DoC has made it plain that under their form of Internet governance, the users of the net are excluded from any role except that of paying the bills. Today, under the "reformed" ICANN those internet users who wish to participate have to first join an ICANN-approved club. That club must, in turn, join a second ICANN-approved club. And that club, in turn, gets to send a few representatives to yet a third level of ICANN-approved club. And that third club, in turn, gets to send a couple of representatives to a pre-stuffed ICANN committee that, in turn, gets to name only a portion of the ICANN board of directors who, in turn, usually rubber-stamp what is put before them by ICANN's "staff".

You and I as internet users will have about as much say in who becomes the next pope as we do in the formulation of policies by the ICANN/Dept of Commerce generation of internet governance bodies.

--Karl Auerbach on the politech mailing list, Wednesday, 7 Apr 2004

Saturday, April 17, 2004
There's no political risk in saying you'll put a man on Mars in 30 years. It's so bold-sounding, but at the same time we're afraid to fly 350 miles to the Hubble to fix it? I won't use the word cowardly, but we're stepping away, we're retreating.

--Michael Paolucci
Read the rest in Wired News: Scientists Clamor to Save Hubble

Friday, April 16, 2004

the main thing about computers is that some things don't change at all, and some things change very rapidly. What changes very rapidly is the top layer, the implementation details, and that's going to keep changing, so there's no sense teaching that. I would simply teach people how to change languages and change operating systems, because what you need to do is keep educating yourself. You need to teach people how to keep teaching themselves, because the operational environment is never going to sit still.

On the other hand, the deeper questions of computing are perennial, and, at heart, operating systems have not really changed. For example, what's considered new these days is Linux, but Linux is based on Unix, so we're talking here, late '60s, early '70s design. There are deeper problems that never go away, that never get solved completely: how do you do multi-processing, how do you trade off between code compactness and the ability to maintain the code? Or tradeoffs between distributed or centralized computing. These things swing back and forth, back and forth.

--Ellen Ullman
Read the rest in ACM: Ubiquity - What's Bugging Ellen Ullman?

Thursday, April 15, 2004
Traditionally, open source projects do not jump version numbers very often. I mean, not as often and for bogus reasons like commercial software does. The paramount case of version-jumping in history being the infamous "Great Microsoft Word version jump", by which the successor to Microsoft Word 2.0 was named Word 6.0, simply because WordPerfect was at version 6 at the time of Word's release. Apparently the marketing androids at the Vole thought people would buy Word Perfect because it was at version 6 instead of Microsoft Word for Windows 3.0 -the logical version number for the 2.0 successor- because "a version 6 is newer than a version 3" - even if they were completely different products. Makes sense? I didn't think so either.

--Fernando Cassia
Read the rest in Xfree86 turns 4.4.0

Wednesday, April 14, 2004
when you have platform software like Linux or the JDK, the platform interface (in the case of Java, the VM and API specifications) divides the world of developers into two groups: those who work under the interface to implement it, and those who work above the interface and build applications based on it. These two communities have needs that conflict. In particular, a blanket freedom for developers under the interface, to do whatever they damn well please, is incredibly disruptive and damaging to developers above the interface. The catch in the Sun Java source license is all about defending the needs of developers who work above the interface. This ends up being constraining to folks who work under the interface, but in a way that is hugely beneficial to those who work above. We believe that for a developer who has built a Java application they have a right to trust that when some other developer says "I have a Java VM for you to use", that their application will work.

--James Gosling
Read the rest in James Gosling: on the Java road...

Tuesday, April 13, 2004
It was shown many years ago through a very simple argument that there's no such thing as an exhaustive test, a test that exercises all possible cases. So we know we can't have an exhaustive test, but we can have systematic tests that have a likelihood of exercising the cases that will fail. For example, if you have a parameter that must be between certain bounds, then you want to test the values close to bounds of the range. You want to test maybe the value in the middle, and maybe a few in-between. So we want to have tests that are systematic in that sense, and contracts help a lot generating such "systematic" tests.

--Bertrand Meyer
Read the rest in Contract-Driven Development

Monday, April 12, 2004
If the value proposition of Java is that you can "write once run anywhere", why doesn't the early access version of Java Studio Creator run on my Mac?

--Daniel H Steinberg
Read the rest in java.net: Run anywhere? [April 11, 2004]

Sunday, April 11, 2004
Java is a great language being destroyed by Rampaging Computer Science. There's a time for elegance, and a time for usability. If developers want to make the internals of packages flexible and extensible, that's all well and good. But the external interfaces should be clean, simple to use, and have wrappers for the most commonly accessed functionality. For example, in a PGP package, I should be able to encrypt or decrypt a file in 5 lines of code or less.

--James Turner
Read the rest in TURNER'S VIEWPOINT: Why Do Java Developers Like to Make Things So Hard? (LinuxWorld)

Saturday, April 10, 2004
In older JVMs (1.1.8) even a simple Object would take about 32 bytes. Now that's down to 8 bytes, for the Sun JVM 1.4.2 on Linux:

--Dennis Sosnoski on the xml-dev mailing list, Wednesday, 07 Apr 2004

Friday, April 9, 2004

There was no checking, because C began as a high level assembly language. When they moved to ANSI C, they decided they would have arguments with types. So you got checking in ANSI C, but only at compile time. You didn't get runtime checking. This compile-time checking was hugely better from what it was before. C++, which forced the hand of ANSI C, improved the checking even more. So as programmers we could easily think in the direction of, "Ah hah, static type checking saves our bacon. That is a really super good thing to have."

With time and experience, however--partly with Java and even more so with Python---I began to realize that when type checking occurs doesn't matter so much as that the type checking occurs at all. I think generally you can say that early type checking is better than late type checking. But late type checking is better than no type checking at all. And sometimes, late type checking is better than early type checking. It's a balance.

Strong static type checking forces the programmer to do a lot of extra work. And we think that's good, because we're whipping that ornery programmer into shape who would otherwise misbehave. But as a result, the programmer's doing a lot more typing...

--Bruce Eckel
Read the rest in Type Checking and Techie Control

Thursday, April 8, 2004
After flirting with it for a year or so, I've been giving Eclipse another try for the past few days and have become convinced that it will end up being the new Emacs: like Emacs, Eclipse is open source and consists of a basic platform that provides a set of standard user interfaces and services that are useful for many things other than software development. Eclipse already has a collection of third-party plugins (both open source and commercial) to rival Emacs' collection of modes, and I'm sure that if it doesn't do e-mail yet, it will soon.

--David Megginson on the XML Developers mailing list, Monday, 05 Apr 2004

Wednesday, April 7, 2004

I'm a Java programmer, but I'm not a Computer Scientist. What that means is that I usually use Java the same way someone else uses Perl or Python. I love discovering great libraries that save me time and let me just wire up a solution, rather than trying to do it all myself. But I love the fact that unlike the original VB which needed OCXes written in C, if I need to drop down to the lowest level possible in my Java app, I can do that as well. And the solution runs everywhere with minimal effort. That's what's so great about Java.

--Russell Beattie
Read the rest in Russell Beattie Notebook

Tuesday, April 6, 2004
I know this is something which the standard somewhere tells me should not be done, but that doesn't seem to stop Microsoft and others, so why should it stop me?

--Peter Kirk on the Unicode mailing list, Tuesday, 30 Mar 2004

Monday, April 5, 2004
One virtue of Java is that it's at least somewhat an open standard; the Java Community Process isn't ideal, but it does cover all the important APIs. The barest core of .NET is an ECMA standard, but the class libraries of note are Microsoft-specific. It's unclear that anyone but Microsoft could have significant influence over the ECMA spec in any case.

--Havoc Pennington
Read the rest in Java, Mono, or C++?

Sunday, April 4, 2004
And here's what's really sad -- the overwhelming majority of so-called "successful" development projects produce mediocre software. Take almost any corporate accounting application, and you'll find it poor in quality, unimpressive in capabilities, difficult to extend, misaligned with other enterprise systems, technologically obsolete by the time of release, and functionally identical to dozens of other accounting systems. Hundreds of thousands of dollars are spent on development, and millions afterwards on maintenance -- and for what? From an engineering standpoint, zero innovation and zero incremental value have been produced.

--Victoria Livschitz
Read the rest in The Next Move in Programming: A Conversation with Sun's Victoria Livschitz

Saturday, April 3, 2004

There’s an old engineering adage: “Fast, good, cheap: pick two.” (Where “fast” regards development time, not performance.) Desktop Linux software is cheap (free) and fast (release early, release often), but it’s not good.

Or, perhaps one could argue that it is cheap, and eventually it’s going to be good, but it’s getting there very slowly.

Windows and Mac OS, on the other hand, are fast and good. For the sake of this discussion, it doesn’t matter which is better and which is improving faster. What matters is that neither is cheap. It’s very difficult to beat the fast/good/cheap rule.

--John Gruber
Read the rest in Daring Fireball: Ronco Spray-On Usability

Friday, April 2, 2004
Currently, a mere 2 percent of releases account for 80 percent of music industry sales. Online distribution could help rebalance that ratio, building careers for hundreds of artists who now linger in obscurity, and drawing in millions of new fans bored and alienated by the industry's star-making machinery.

--Evan Hansen
Read the rest in Steve Jobs' half note | CNET News.com

Thursday, April 1, 2004
Every day around the world, software developers spend much of their time working with a variety of Application Programming Interfaces (APIs). Some are integral to the core platform, some provide access to widely distributed frameworks, and some are written in-house for use by a few developers. Nearly all programmers occasionally function as API designers, whether they know it or not. A well-written API can be a great asset to the organization that wrote it and to all that use it. Good APIs increase the pleasure and productivity of the developers who use them, the quality of the software they produce, and ultimately, the corporate bottom line. Conversely, poorly written APIs are a constant thorn in the developer's side, and have been known to harm the bottom line to the point of bankruptcy. Given the importance of good API design, surprisingly little has been written on the subject.

--Joshua Bloch
Read the rest in OT Session How to Design a Good API and Why it Matters

Wednesday, March 31, 2004
There are certain characteristics that are common to all clean, well-architected applications. Features such as modular design, good separation of concerns, loose coupling, and high cohesion — behavior in one and only one place within an application — are all well-established best practices. Writing applications with testability in mind tends to lead to systems that display these characteristics. For instance, focusing on the ease of black- and white-box testing of individual modules is a sure-fire way to generate cleanly separated functional units. Saying that a module is easy to unit test is the same as saying we know exactly what the module should d, under what circumstances, and that we know (and can prove) its boundary behavior. Saying that a module is easy to integration tests implies that it is easy to deploy and configure. .

--Dan North, Java Developer's Journal, January, 2004, p. 36

Tuesday, March 30, 2004
You walk into Javahut, and ask to sit down. "I'm sorry," says the person at the door. I'm not actually the hostess, I'm a Factory class that can give you a hostess if you tell me what type of seat you want." You say you want a non-smoking seat, and the person calls over a NonSmokingSeatHostess. The hostess takes you to your seat, and asks if you'll want breakfast, lunch, or dinner. You say lunch, and she beckons a LunchWaitress. The LunchWaitress takes your order, brings over your food, but there's no plates to put it on because you forgot to get a CutleryFactory and invoke getPlates, so the Waitress throws a null pointer exception and you get thrown out of the place.

--James Turner
Read the rest in TURNER'S VIEWPOINT: Why Do Java Developers Like to Make Things So Hard? (LinuxWorld)

Monday, March 29, 2004

the best way to prepare is to write programs, and to study great programs that other people have written. In my case, I went to the garbage cans at the Computer Science Center and I fished out listings of their operating system.

--Bill Gates
Read the rest in Programmers at Work, Susan Lammers, 1985

Sunday, March 28, 2004
Most documentation is written for no other purpose than to soothe a bureaucrat. Whenever people insist on documentation, ask them why they want it, what they're going to do with it, and who will actually use it. This will provide insight into what you actually need to write—sometimes, a 50-page document can be shrunk to 10. After you get that vital information, treat it like any other system requirement: Estimate how much it will cost to develop and maintain. Then have the requestors prioritize this and put it unto the list along with the rest of the requirements. If you then implement the requirements in priority order, you'll always be guaranteed to be working on the most important task at any given time, and every so often (though not that often), that will be creating documentation.

--Scott Ambler
Read the rest in Software Development, March 2004, pp. 58-59

Saturday, March 27, 2004
Whenever I see an article supporting the 100% pure Java mindset, I softly whisper to myself 'you just don't get it'. When I'm writing software, nearly everything is negotiable. The language, the development environment, the team size, the development process, the budet, the delivery date. Everything EXCEPT the user-experience. If one of the factors gets in the way of the user experience, it's out. This isn't about what Java UI looks like or how it deploys. This is about whether Java is a viable way to develop great applications.

--David Jeske
Read the rest in unsolicitedDave: 100% pure java, or viable java?

Friday, March 26, 2004
  1. Never underestimate the power of one little test.
  2. There is no such thing as a dumb test.
  3. Your tests can often find problems where you're not expecting them.
  4. Test that everything you say happens actually does happen.
  5. If it's worth documenting, it's worth testing.

--Andy Lester
Read the rest in Journal of petdance (2468)

Thursday, March 25, 2004

The other necessary condition is a reorientation of American thinking about government spending. There seems to be a general impression that government spending harms the economy by taking funds from the private sector, and therefore must always be kept to a minimum. Unlike what is usually called "big science"—orbiting telescopes, particle accelerators, genome projects—sending humans to the moon and Mars is so expensive that, as long as the public thinks of government spending as parasitic on the private economy, this program would interfere with adequate support for health care, homeland security, education, and other public goods, as it has already begun to interfere with spending on science.

My training is in physics, so I hesitate to make pronouncements about economics; but it seems obvious to me that for the government to spend a dollar on public goods affects total economic activity and employment in just about the same way as for government to cut taxes by a dollar that will then be spent on private goods. The chief difference is in the kind of goods produced by the economy—public or private. The question of what kind of goods we most need is not one of economic science but of value judgments, which anyone is competent to make. In my view the worst problem facing our society is not that there is a scarcity of private goods—food or clothing or SUVs or consumer electronics—but rather that there are sick people who cannot get health care, drug addicts who cannot get into rehabilitation programs, ports vulnerable to terrorist attack, insufficient resources to deal with Afghanistan and Iraq, and American children who are being left behind. As Justice Holmes said, "Taxes are what we pay for civilized society." But as long as the public is so averse to being taxed, there will be even less money either to ameliorate these societal problems or to do real scientific research if we spend hundreds of billions of dollars on sending people into space.

--Steven Weinberg
Read the rest in The New York Review of Books: The Wrong Stuff

Wednesday, March 24, 2004

Mono as it currently stands has serious problems, including strategic and intellectual property concerns. Java as provided by Sun is not open source or GPL-compatible and thus a nonstarter.

Looking at the situation realistically, if GNOME started to require a .NET clone you'd see a fork, and if it started to require a proprietary JDK you'd see a fork. There are too many people who would find these directions unacceptable.

The question then is: many strong proprietary companies such as Microsoft are moving full speed ahead on high-level managed language platforms. Can open source compete, or is it too unable to make hard decisions? Rephrased: is there some way we can find to move away from C/C++, without causing massive alienation and forking?

It's time to start the discussion. Rather than fooling around in the background, companies should get involved in a broad community process where we work out a common direction for the open source desktop codebase.

--Havoc Pennington
Read the rest in Java, Mono, or C++?

Tuesday, March 23, 2004
programming is very difficult. To do it well requires a phenomenal amount of commitment. To motivate yourself and keep yourself committed, you need to have pride in what you're doing. If instead you consider yourself a mechanical assembly line worker, whose only job is to take the spec and churn out bytes, then you're not going to have enough interest in what you're doing to do it well. So from the global perspective, it is very important. From a personal perspective, why should you be doing work you don't enjoy? It is important if you are going to commit this much to a job that you enjoy it.

--Dave Thomas
Read the rest in Don't Live with Broken Windows

Monday, March 22, 2004
BSD is more of a cult. You can take my stuff and don’t have to turn it back. The Free Software Foundation leads to stability because everyone has to give back. Under BSD, infrastructure vendors take Tomcat, add a few features and charge $2,000 per CPU. BSD licenses are developer unfriendly and end-user unfriendly. That’s why free software has led to business.

--Marc Fleury
Read the rest in Free, as in for Profit

Friday, March 19, 2004

I'm so *sick* of this culture of fear that we live in here in America.

No, in fact, there are *not* a lot of wackos out there. No, in fact, there are *not* stalkers waiting at every corner. No, in fact, most people are quite fine and good and honest. Even today with the horrible news in Madrid and my personal problems with a single nutter - 99.9999999% of the people in the world are not wackos. Period.

I didn't post that post to give people some sort of justification to hide themselves away or not post pictures of their kids or lock their houses with alarms, load up on amo and assume the worst about their fellow man. That's the way the Republicans think of the world: Gated communities and those weird "don't touch my child" people at the park. Fuck that. That's not how I'm going to live my life, thank you.

Remember back when we were kids in the 70s and suddenly Halloween became a Life or Death sport? Some ridiculous event happened in some random part of the U.S. and suddenly every neighbor was just waiting to slip razor-blades and poison into the candy of unsuspecting trick-or-treaters. It ruined the holiday and all you heard for years was how society is just going down the drain and this was a perfect example. It had nothing to do with razor blades, but hysteria. So yeah, when you cave in to those random idiots out there, society *does* in fact go downhill.

--Russell Beattie
Read the rest in Russell Beattie Notebook

Tuesday, March 16, 2004
when you can break systems down to pre conditions, post conditions, transfer functions, and the algorithms that implement them you can go a long way towards reliable systems and specs.

--Rick Marshall on the xml-dev mailing list, Tuesday, 06 Jan 2004

Monday, March 15, 2004
When I started at Sun in 1999, I didn't want to be outed for using a Mac at home, and was told not to mention it if I wanted to be taken seriously. That was the thing about Sun in those days... you didn't have any trouble with credibility as a *female* engineer, but your Macness could definitely hurt you ; ) Today, you can't attend a technical meeting without half the group pulling out their new Powerbooks (where I get, "Oh, I see you're still using an old Titanium?") and the biggies like James Gosling and Bill Joy now all rave publicly about OSX.

--Kathy Sierra on the cbp mailing list, Monday, 23 Feb 2004

Sunday, March 14, 2004
Also from RubyConf, one more answer to where we went wrong with J2EE, and Java in general. Matz -- the inventor of Ruby -- titled his keynote address How Ruby Sucks. Java folk have always taken the language too seriously. It's too late now -- it would incite an irrational panic among Java developers -- but we might be in a much better place today if, about five or six years ago, James Gosling had been able to deliver a talk about Java in that same spirit.

--Glenn Vanderburg
Read the rest in Glenn Vanderburg: Blog

Saturday, March 13, 2004
The classic Sun attitude is, "Hey, we've given you this cool core technology. Now you build the development tools and implementations to make it production strength." Jini/JavaSpaces is an example that springs to mind. This technology was doomed to remain an interesting academic research tool by Sun's own attitude toward it, not through any technological weaknesses. In fact, the JavaSpaces event-based programming model is probably one of the simplest and most powerful available today.

--Humphrey Sheil
Read the rest in In pursuit of perfection

Friday, March 12, 2004

I want to explain why I think not open-sourcing Java is dumb. It's not because of idealism. I'm not here to talk about idealism. I think not open-sourcing Java was dumb because back in 1995 and 1996 when they were putting out the idea of the whole write-once, run-anywhere thing, they put out a design that I think was a very strong design. I was actually involved in the technical review of the first round of the Java documentation. I really like the language. I still like the language. It's one of the better and more credible language designs we've seen in the last 15 years. But, speaking as a developer, I don't want to be a peon on Sun's plantation.

So there came a point where they had to make a choice between ubiquity and control, and when it became clear that they were going to make the choice for control, my reaction and the reaction of a lot of developers out there was, "I'm out of here."

--Eric S. Raymond
Read the rest in Q&A: Raymond Expounds on Open Letter to Sun, McNealy

Thursday, March 11, 2004

So if we write generic code that actually takes a "type of anything," that type can only be an Object, and our generic code must only call Object methods on it. So really, we are restricted to code that is already "generic to Object," except for casting up to Object and down from Object, which this wonderful new syntax will do for us. Sounds like it's a solution for collection classes and not much else, doesn't it? The conclusion that the Silicon Valley Patterns Group came to was that these so-called Generics seem to only solve the problem of automatically casting in and out of containers.

There seems to be an argument that if <T> could really use an "anything" argument, it wouldn't be type-safe. This is obviously incorrect because C++ catches such errors at compile-time. "Aha," they say, "but we (chose to)/(were forced to) implement Java Generics in a different way because of noisy meaningless words. And besides, we warned you that Java Generics wouldn't be like C++ templates. Naturally, because they're Java, it's better than C++, trust us on this."

Guess what. I really don't care. You want to call it "generics," fine, implement something that looks like C++ or Ada, that actually produces a latent typing mechanism like they do. But don't implement something whose sole purpose is to solve the casting problem in containers, and then insist that on calling it "Generics."

--Bruce Eckel
Read the rest in Generics Aren't

Wednesday, March 10, 2004

Tests are a way to find errors. You may have removed enough errors that your tests pass, and therefore you think you're OK. But if you don't want to abstract more into the general case, then you are really in trouble. This is where the professional responsibility aspect of our work comes in. Many of the major catastrophes of the history of software were caused by stupid details, extreme cases that should not have occurred. These cases were ignored during development and testing because no one thought of them, because they were so baroque, so unlikely, or outside of the box. This is the kind of thing that really often plagues systems: the list that happened to be tested only when it was not empty. But once in a while the list is empty and everything crashes.

You need to abstract a little bit and ask yourself, "What do I expect of this particular data structure? Is it OK if the list is empty, or is it an erroneous case? If it's an erroneous case, whose responsibility is it to make sure the list is not empty?" If you don't do this abstraction, which doesn't require a PhD in mathematics but does require care and generalization, then you're not really fulfilling your duty even if all your tests have passed with flying colors.

--Bertrand Meyer
Read the rest in Contract-Driven Development

Tuesday, March 9, 2004

I used to use this command-oriented word processor called Volkswriter. And other people used Emacs. It had all these powerful commands you could type in. And along came the WYSIWYG word processors. They were cooler and they printed much better, but I lost half the power I had. I could no longer say search for everything that contains this and then when you find it modify this part to include this note—things I could've said in the old command-oriented language. And no one ever went back. To this day word processors don't let you do that. Because it turned out there were 10 times as many people that needed the ease of use as needed the custom stuff.

That's what's happening with apps. There are some people for some apps that need really custom UI because they use them everyday day in and day out and they need that kind of productivity of a custom tool and a custom toolbar. For most of us most of the time the browser works well enough, particularly if you do some of the tricks people are doing with the HTML. And the training costs are zero and that's huge. And the deployment costs are zero and that's huge. And I don't think anyone will ever accept that being taken away again.

--Adam Bosworth, BEA
Read the rest in BEA's Bosworth: The World Needs Simpler Java

Monday, March 8, 2004
In our fight for our nation to make the world a safe place, we must not turn our backs on our own freedoms. Expanding the use of administrative subpoenas and threatening our system of checks and balances is a step in the wrong direction.

--Congressman Butch Otter, R-Idaho
Read the rest in Congress Expands FBI Spying Power

Sunday, March 7, 2004
The "synchronization is slow" myth is a very dangerous one, because it motivates programmers to compromise the thread-safety of their programs to avoid a perceived performance hazard. In fact, they often think they are being very clever by doing so. It was the fear of this very myth that inspired developers and writers to promote the clever-seeming, but fatally flawed "double-checked locking" idiom, which appears to eliminate synchronization from a common code path, but in fact compromises the thread-safety of your code. Thread-safety problems are time bombs in your code just waiting to go off, and when they do, they will go off at the worst possible time -- when your program is under heavy load. Legitimate performance concerns are a bad reason to compromise the thread-safety of your programs; fear of performance myths is an even worse reason.

--Brian Goetz
Read the rest in Java theory and practice: Urban performance legends

Saturday, March 6, 2004
I guess my home language is C. I can program in C++ and Java, but I don't like them. It's like learning foreign languages: some of them come to you very easily and some of them don't. I think C++ always felt ugly to me, because it's a language that never could decide whether it was a high- or a low-level language. I just don't find it very elegant. One of my former bosses calls it "the Winchester mystery house," because of all the under-the-code magic going on. I'd never feel at home in it, whereas I used to be able to debug C on the phone. Someone would call me up and read me some code and I'd just solve the problem for them. That's only possible when you speak a language fluently. I don't think I'll ever have that kind of fluency in C++.

--Ellen Ullman
Read the rest in ACM: Ubiquity - What's Bugging Ellen Ullman?

Friday, March 5, 2004

Applets are to Java as underpants are to Superman. Applets helped to launch awareness, adoption and acceptance of Java in the early days. To the non-hardcore, they're as much a part of the Java brand as Java itself. And yet, these days Sun treats applets as if they're the mutant offspring that they want everyone to forget existed; locked away in the basement, fed through a grill in the door, doomed to watch reruns of "I Love Lucy" in near-darkness for the next 20 years.

The general consensus seems to be that Java WebStart (JWS) has superseded applets. But applets still have a function to fill: dynamic content embedded directly in a web page. The trouble is (apart from the fact that Sun seem almost ashamed of this "hideous monster") that for a web designer, it just isn't very easy to create dynamic web content using applets. For these people, Flash is a much more compelling option. Flash MX makes it as easy as drag & drop to create dynamic movies or interactive "rich client" user interfaces that are deployed in the web browser.

--Matt Stephens
Read the rest in Java Swing Survival Guide - Software Reality

Thursday, March 4, 2004

technology should be as easy to use as it is on Star Trek. You need to download a database from an alien ship's computer and you've never encountered this particular brand of alien before? No problem! Just punch a few buttons and the data is transferred through a high-speed subspace link to your system and mysteriously translated into English.

Neither Windows nor Linux is anywhere close...

--Jim Boyce on the cbp mailing list, Wednesday, 28 Jan 2004

Wednesday, March 3, 2004
I consider this to be the greatest threat to our democracy of anything we have ever faced in this country. There is so much possibility of fraud that there has to be a voting system that is verifiable with paper trails. Absent that we're totally at the mercy of whoever controls this equipment.

--Allen Michaan
Read the rest in Wired News: E-Voting Activists: Vote Absentee

Tuesday, March 2, 2004

One thing that I always find a bit sickening is how many developers talk about "the real world" and one thing that repulsed me from reading TSS for the first several years of its existence was all of those "real world" developers. To me, the real world is this hell hole where everyone is so far behind they'll never catch up, head-deep in spaghetti code, putting out more spaghetti code while they're waiting for their job to be outsourced to the next country down the food chain.

I used to live in the real world. I was always the guy beating his head up against the wall, adding wikis, code generators and revision control systems. I'd rewrite the build, go fix bugs (while seriously angering the author of those bugs) that weren't my responsibility. Half the time folks would say "why did you do all of that but not meet *your* deadline" and I'd say "because if I met my deadline without doing all of that then the system would have crashed" and the inevitable reply would be a shrug of the shoulders indicating that the software actually working was of less importance than the political concerns.

--Andrew C. Oliver
Read the rest in Hacking Log 4.0: Phase II

Monday, March 1, 2004
Character literals are crocky anyhow. IMHO modern programming languages should not have a Character type, but deal only in Strings.

--John Cowan on the Unicode mailing list, Wednesday, 15 Oct 2003

Sunday, February 29, 2004

Companies were originally invented as a group of companions sharing risks in order to discharge a vital economic and social function from which they maximised profits. They would petition the crown for a licence to trade, promise that their intent and vocation was to do X and accept reciprocal obligations in return. The company thus accepted that society imposed obligations along with the right to trade and placed that above the quest for profits. For example, the East India Company in 1600 was granted a licence to trade with the proviso that it carried its cargoes in English vessels and paid duties to the crown. It then set out to maximise profits for its shareholders. It built a great business around a central vocation, accepted reciprocal obligations, and additionally made a lot of money.

This classic conception of the company, at the heart of Anglo Saxon capitalism at its best, has been wrecked by the pernicious notion, incubated by the American Right, that a company is no more than a network of contracts that maximises returns for its shareholders. The idea that it should have an organisational purpose, earn a licence to trade or accept obligations to the society of which it is part is 'socialist'. Yet a capitalism run along these allegedly purist principles soon loses its bearings and its companies degenerate. At their worst, like Black's Hollinger or Enron and WorldCom, they collapse under the weight of individual greed.

--Will Hutton
Read the rest in The Observer | Comment | Black day for capitalists

Saturday, February 28, 2004
We have been looking at the idea of testing all our animals for some time. This moved to the forefront with the most recent episode in Washington State. The problem we're having now is that the U.S.D.A. is not wanting to do this. They don't want to test. They don't want to recognize B.S.E. is a problem. They are not going to allow anyone to test until they decide how or when. We believe that may be never

--John Stewart, Creekstone Farms
Read the rest in One Producer of U.S. Beef Wants to Test All Its Cattle

Friday, February 27, 2004

Sun needs to address the problem of J2EE's anaemic user interface very quickly. In the year 2004, it's no longer acceptable to thread a client-side needle by operating levers from the safety of a web server. It's clumsy, inefficient and a lousy user experience. But that's what every Java-based web framework does, including Sun's new JavaServer Faces (JSF). Just because Microsoft once beat back Sun by poisoning the Java Virtual Machine on Internet Explorer doesn't mean Sun should keep licking its wounds in its server-side cave forever.

--Ganesh Prasad
Read the rest in Linux Today - Community: Beyond an Open Source Java

Friday, February 27, 2004
Character literals are crocky anyhow. IMHO modern programming languages should not have a Character type, but deal only in Strings.

--John Cowan on the Unicode mailing list, Wednesday, 15 Oct 2003

Thursday, February 26, 2004
I often interview university students applying for jobs at Microsoft. They're usually excellent people and very talented, although we have to turn away most of them. One thing that always intrigues me is when I am interviewing people who want to be a developer or tester. If I ask them to write a little code, most of them can. Then I ask them to prove to me that their code works. The responses I get to this vary so widely it is remarkable. Usually people run the example values I gave them through their algorithm and if it comes out correctly, they say it works. Then I tell them, "OK, let's say I told you this code is for use in a firewall product that is going to be shipped to millions of customers, and if any hackers get through, you get fired". Then they start to realize that they need to do a little more. So they try a few more numbers and some even try some special numbers called "boundary conditions" - the numbers on either side of a limit. They try a few more ideas. At some point they either say they're now sure, or they get stuck. So I then ask them if they think it is perfect now. Well, how do you know?

--Chris Pratley
Read the rest in Chris_Pratley's WebLog

Tuesday, February 24, 2004
The two parties are ferociously competing to see who is going to go to the White House and take orders from their corporate paymasters.

--Ralph Nader
Read the rest in Guardian Unlimited | US elections 2004 | Nader's raid upsets the applecart

Monday, February 23, 2004

Here's the problem with computers: it's just so much work to think about programs that people treat the details of software as if they were acts of God. When you go to school and learn how to program, you are taught about an idea like a computer file as if it were some law of nature. But if you go back in history, files used to be controversial. The first version of the Macintosh before it was released didn't have files. Instead, they had the idea of a giant global soup of little tiny primitives like letters. There were never going to be files, because that way, you wouldn't have incompatible file formats -- right?

The important thing to look at is how files became the standard. It just happened that UNIX had them, IBM mainframes had them, DOS had them, and then Windows. And then Macintosh came out with them. And with the Internet, because of the UNIX heritage, we ended up thinking in terms of moving files around and file- oriented protocols like FTP. And what happened is that the file just became a universal idea, even though it didn't start out as one.

So, now, when you learn about computer science, you learn about the file as if it were an element of nature, like a photon. That's a dangerous mentality. Even if you really can't do anything about it, and you really can't practically write software without files right now, it's still important not to let your brain be bamboozled. You have to remember what's a human invention and what isn't. And you have to think about files in the same way you think about grocery carts. They are a particular invention with positive and negative elements. It's very important to keep that sense of skepticism alive. If you do that, it will really have an influence on the quality of code that you create today.

--Jaron Lanier
Read the rest in Coding from Scratch: A Conversation with Virtual Reality Pioneer Jaron Lanier, Part One

Sunday, February 22, 2004

Until Java can deliver bounded maximum pause times, it will remain unacceptable for many applications. It's tempting to belittle this is as only affecting a small number of applications, but if you try to use something as simple as a Java word processor or file manager you will see that it affects almost all interactive GUI apps.

I recently rejected Java for a large high-performance web application and used Python/C instead because of problems with Java garbage collection pauses. Python is dog-slow, and it's pretty ironic that the resulting application meets our requirements in Python but didn't in Java. This is a testament to the simplicity of reference counting and the power of a large core library written in C.

--David Jeske
Read the rest in unsolicitedDave: 100% pure java, or viable java?

Friday, February 20, 2004

In a dynamically typed language, you do an operation and basically hope the object is of the type where the operation makes some sense, otherwise you have to deal with the problem at runtime. Now, that may be a very good way to find out if your program works if you are sitting at a terminal debugging your code. There are nice quick response times, and if you do an operation that doesn't work, you find yourself in the debugger. That's fine. If you can find all the bugs, that's fine when it's just the programmer working—but for a lot of real programs, you can't find all the bugs that way. If bugs show up when no programmer is present, then you have a problem. I've done a lot of work with programs that should run in places like telephone switches. In such environments, it's very important that unexpected things don't happen. The same is true in most embedded systems. In these environments, there's nobody who can understand what to do if a bug sends them into a debugger.

With static typing, I find it easier to write the code. I find it easier to understand the code. I find it easier to understand other people's code, because the things they tried to say are expressed in something with a well-defined semantics in the language. For example, if I specify my function takes an argument of type Temperature_reading then a user does not have to look at my code to determine what kind of object I need, looking at the interface will do. I don't need to check if the user gave me the wrong kind of object, because the compiler will reject any argument that is not a Temperature_reading. I can directly use my argument as a Temperature_reading without applying any type of cast. I also find that developing those statically typed interfaces is a good exercise. If forces me to think about what is essential, rather than just letting anything remotely plausible through as arguments and return values, hoping that the caller and the callee will agree and that both will write the necessary runtime checks.

--Bjarne Stroustrup
Read the rest in Abstraction and Efficiency

Thursday, February 19, 2004
Strong typing isn't the same thing as manifest typing. Smalltalk, for instance, has strong, dynamic typing - an object simply will respond to an inappropriate message in a completely predictable way. Take Java though - you can make the compiler completely happy with a cast, and then end up with a system that falls down at runtime. Languages like Java and C encourage casting - the rigidity of their libraries, the "final" declarations, the way the collection libraries work - you can walk yourself into trouble with MNU handlers in Smalltalk, but you are picked up and driven there by many existing libraries in Java.

--James Robertson
Read the rest in Smalltalk Tidbits, Industry Rants

Wednesday, February 18, 2004

In object-oriented systems, "object" is the one and only basic abstraction. The universe always gets reduced to a set of pre-defined object classes, some of which are structural supersets of others. The simplicity of this model is both its blessing and its curse. Einstein once noted that an explanation should be as simple as possible, but no simpler. This is a remarkably subtle point that is often overlooked. Explaining the world through a collection of objects is just too simple! The world is richer than what can be expressed with object-oriented syntax.

Consider a few common concepts that people universally use to understand and describe all systems -- concepts that do not fit the object mold. The "before/after" paradigm, as well that of "cause/effect," and the notion of the "state of the system" are amongst the most vivid examples. Indeed, the process of "brewing coffee," or "assembling a vehicle," or "landing a rover on Mars" cannot be decomposed into simple objects. Yes, they are being treated that way in OO languages, but that's contrived and counter-intuitive. The sequence of the routine itself -- what comes before what under what conditions based on what causality -- simply has no meaningful representation in OO, because OO has no concept of sequencing, or state, or cause.

--Victoria Livschitz
Read the rest in The Next Move in Programming: A Conversation with Sun's Victoria Livschitz

Tuesday, February 17, 2004

I believe that the Bush administration is using the fear of terrorism as a political tool. That being said, I'm not sure a Democrat would do anything different in Bush's place. Fear is a powerful motivator, and it takes strong ethics to resist the temptation to abuse it. I believe the real problem with America's national security policy is that the police are in charge; that's far more important than which party is in office.

--Bruce Schneier
Read the rest in Schneier.com: Crypto-Gram: February 15, 2004

Monday, February 16, 2004

An important programming concept is knowing when you need to be specific, and when you should be abstract, or generic. Java already gives us one way of doing this, in the form of interface inheritance.

  • Interface inheritance allows us to be specific (about implementation) when implementing a class, but generic (about implementation) when using it.
  • For example, the implementation of ArrayList is all about growing and shrinking arrays (as it needs to be). But code that wants to keep track of a list of widgets needs to know nothing about those implementation details, it can just use the more generic List interface.

Whether you need to be specific or generic depends on the context, and there is more than one type of context. Interface inheritance fits one context, and Generics (JSR 14) fits another, orthogonal, context.

  • Generics (JSR 14) allows us to be generic (about types) when implementing a class, but specific (about types) when using it.
  • For example, List only needs to be defined as a list of some type <T>. But when using it, you care very-much what it is a list of.

--Matt Quail
Read the rest in madbean.com: Talking Tiger, generically speaking

Sunday, February 15, 2004

The other side of my laziness, however, lies in the “Fifteen Minute Test”. This was never a conscious decision, I didn't turn around one day and impose this test on new software, it just came from having a full-time job, and wanting to spend at least some time away from the computer. The Fifteen Minute Test. I'll install a demo and play with it, but if after about a quarter of an hour I haven't found something impressive that the application will do for me, something interesting and novel that promises to streamline my nerd-life, I'll turn it off, and probably won't ever try it again.

One of the reasons I switched from Linux to OS X as my primary platform was because I don't have time to play around with software any more. I want it to work in predictable, obvious ways, and OS X (mostly) does that for me. I don't have time to spend all day messing with my Apache configuration file or installing a new MTA just to see if it will rescue me from Sendmail, and I don't have the time to submit myself to a new GUI application with an unfamiliar metaphor and confusing interface in the vain hope that it might eventually become easier.

--Charles Miller
Read the rest in The Fishbowl: The Fifteen Minute Test

Saturday, February 14, 2004

Today, the big issue is Java. Sun's insistence on continuing tight control of the Java code has damaged Sun's long-term interests by throttling acceptance of the language in the open-source community, ceding the field (and probably the future) to scripting-language competitors like Python and Perl. Once again the choice is between control and ubiquity, and despite your claim that "open source is our friend" Sun appears to be choosing control. Sun's terms are so restrictive that Linux distributions cannot even include Java binaries for use as a browser plugin, let alone as a standalone development tool.

Mr. CEO, tear down that wall. You have millions of potential allies out here in the open-source community who would love to become Java developers and users if it didn't mean ceding control of their future to Sun. If you're serious about being a friend of open source, if you're serious about preparing Sun for the future we can all see coming in which code secrecy and proprietary lock-in will no longer be viable strategies, prove it. Let Java go.

--Eric S. Raymond
Read the rest in Title

Friday, February 13, 2004
Ce n'est pas le prix que l'on aime dans l'open source, c'est la transparence.

--Frederic Glorieux on the xml-tech mailing list, Sunday, 08 Feb 2004

Thursday, February 12, 2004

Abstractions live longer than details. Details are volatile. Because details are going to change, put the details where changing them will create the least amount of friction. Typically that's outside the code base--in a database, a properties file, or XML--something acting as metadata. We suggest an overall architecture where you put your energy into creating the right abstractions in the code. And as much as possible, push the details out somewhere else where they are easier to change, because that is what's going to change.

Our philosophy contrasts with eXtreme Programming's (XP) attitude of trying to not look very far ahead, to just do the absolute minimum required at any point in time. We think where you put the details is a matter of investment. You're taking some risk when you make details easy to change that it will wind up not being necessary. But for me personally, almost every time I've taken that extra care to make a system flexible, it has saved me.

--Andy Hunt
Read the rest in Abstraction and Detail

Wednesday, February 11, 2004
Single inheritance is good because the whole class inheritance structure forms a single tree with a single root, named Object, and that is very easy to understand. In languages with multiple inheritance, the classes form a network, which is harder to understand.

--Yukihiro Matsumoto
Read the rest in Dynamic Productivity with Ruby

Tuesday, February 10, 2004

WITH A GROAN , I peeled the transparent sticker off my brand-new iPod. In the clean, cute font for which Apple is known, it read, "Don't steal music." Even the wrapping paper on my smooth little machine was full of antipiracy propaganda. But the software wrappings Apple places around the music the iPod plays are far worse than propaganda: they enforce, with no subtlety or charm, the licensing preferred by corporate copyright holders.

Once upon a time, Apple's slogan "Rip. Mix. Burn." meant "make as many copies as you want of your legally purchased music." Now it means "make the limited number of copies we deem appropriate." All that's being ripped, mixed, and burned are fair-use laws.

If you buy music from the Apple iTunes store, which is what Steve Jobs hopes you'll do, you pay 99¢ for a song but can only copy it onto three computers. What if those computers become obsolete or unusable in a few years? Too bad – no more copies for you. Your music dies with your computers. If you want to create a mix CD with your songs, you may burn only 10 copies, even though fair-use laws grant you permission to burn as many copies as you like for educational use. Ah, you say, but at least you can save iTunes songs onto as many iPods as you want! Isn't that fair? Not really – once you put music onto your iPod, you can delete it but you can't copy it anywhere else. The iPod is a one-way music device: music files go in but don't come out. It's all part of Apple's digital rights management (DRM) scheme ironically known as Fairplay.

--Annalee Newitz
Read the rest in sfbg.com | A and E

Monday, February 9, 2004
The U.S. already has plans in place to jam GPS information when and as needed, and in fact is trying to persuade the EU not to deploy its Galileo system on the same frequency as the encrypted version of GPS they are getting ready to deploy, because (koff, koff) it will not be "interoperable", by which they mean that jamming Galileo will also jam military GPS.

--John Cowan on the xml-dev mailing list, Thursday, 5 Feb 2004

Sunday, February 8, 2004
First it was fat, now it's carbs. People see these foods that are being labeled as being low in carbs and they think they're being issued a free pass. They're not paying attention to calories, and they're being duped once again by the food industry into thinking they're doing something positive.

--Dr. Kelly D. Brownell, director of the Center for Eating and Weight Disorders at Yale University
Read the rest in They Come to Praise the Carb, Not Bury It

Saturday, February 7, 2004
Looking at the formula, the JCP looks to be playing very much the same role for IBM in creating de facto J2EE standards that OASIS (Organization for the Advancement of Structured Information Standards) plays in creating de facto Web services standards. They are both regimes with an intellectual property policy in place (always necessary for any specification where other industry members are invited to participate) and, to eyes of undiscerning customers, regulators, trustbusters, conspiracy theorists (but not this one), naysayers, and the press, the connection of their names with specifications creates the perception that an attempt at domination isn't afoot when it really is.

--David Berlind
Read the rest in Turf wars on the Java front - TechUpdate - ZDNet

Friday, February 6, 2004
There was a point in time where Java and Web services were orthogonal to each other. Now they're synonymous with one another. Additionally, Microsoft is doing a lot more outside of the WS-I, focusing on efforts that are more strategic to Windows, such as the evolution of Longhorn and their application server infrastructure. It's all about driving Microsoft, not the WS-I. So, right now, there's only one cross-platform organization driving Web development, and that's the JCP.

--Jonathan Schwartz
Read the rest in Unplugged interview: Sun software czar Jonathan Schwartz - TechUpdate - ZDNet

Thursday, February 5, 2004

Do the best programmers know how to Keep It Simple Stupid? Is simplicity itself a desirable goal? I didn't used to subscribe to the idea that simple was always best. I thought that sometimes complexity was the only answer. After a year spent learning Java enterprise programming, I'm beginning to change my mind.

I think I'm suffering from J2EE fatigue. It's characterised by an inability to comprehend the myriad of XML configuration files, some of which override others, and by a weary indifference to whatever new open source whizz-bang designed to simplify J2EE development is.

--John Topley
Read the rest in Learning To K.I.S.S.

Wednesday, February 4, 2004

When you're around really serious professional programmers, this code jockey stuff really falls away, and there is a recognition that the best programmers spend a lot of time thinking first, and working out the algorithms on paper or in their heads, at a white board, walking. You dream about it, you work it out -- you don't just sit there and pump out code. I've worked with a lot of people who pumped out code, and it's frightening. Two weeks later, you ask them about it, and it's like it never happened to them.

So the motive of a true program is a certain compact beauty and elegance and structuredness. But the reality of programming is that programs get old and they accumulate code over the years -- that's the only word I can use to describe it, they accumulate modifications. So old programs, after they've been in use 10 or 15 years, no one person understands them. And there is a kind of madness in dealing with this.

--Ellen Ullman
Read the rest in Salon | 21st

Tuesday, February 3, 2004
For me JavaDoc doesn't just serve as a way to document the design, it serves as a way to visualize the design. If I see huge classes with 300 public methods, or dozens of packages with only few classes in each, I know there's a problem. It's more obvious when you're looking at the JavaDoc than at the source.

--Bill Venners
Read the rest in Analyze this!

Monday, February 2, 2004
The problem with programmers as reviewers, and especially programmers that have been involved in the program for a while, is that they are kind of oblivious to the complexity. And lots of engineers are complexity junkies. Complexity is in many ways just evil. Complexity makes things harder to understand, harder to build, harder to debug, harder to evolve, harder to just about everything. And yet complexity is often much easier than simplicity. There's that really famous Blaise Pascal letter, where he starts, "I apologize for this long letter. I didn't have the time to make it any shorter." And that's really true.

--James Gosling
Read the rest in Analyze this!

Sunday, February 1, 2004
If we'd just pick "protectionism" or "free trade", and not waffle in between, things would be better. But the sad fact of lobbying is that it's just too easy to bend a Senator's ear and get trade restrictions advantageous to your own industry, all the while crying "free markets!" and "trade liberalization!"

--Colin macAllister on the wwwac mailing list, Tuesday, 25 Nov 2003

Saturday, January 31, 2004

Performance advice often has a short shelf life; while it was once true that allocation was expensive, it is now no longer the case. In fact, it is downright cheap, and with a few very compute-intensive exceptions, performance considerations are generally no longer a good reason to avoid allocation. Sun estimates allocation costs at approximately ten machine instructions. That's pretty much free -- certainly no reason to complicate the structure of your program or incur additional maintenance risks for the sake of eliminating a few object creations.

Of course, allocation is only half the story -- most objects that are allocated are eventually garbage collected, which also has costs. But there's good news there, too. The vast majority of objects in most Java applications become garbage before the next collection. The cost of a minor garbage collection is proportional to the number of live objects in the young generation, not the number of objects allocated since the last collection. Because so few young generation objects survive to the next collection, the amortized cost of collection per allocation is fairly small (and can be made even smaller by simply increasing the heap size, subject to the availability of enough memory).

--Brian Goetz
Read the rest in Java theory and practice: Garbage collection and performance

Friday, January 30, 2004

Java's generics implementation was based on a project originally called Pizza, which was done by Martin Odersky and others. Pizza was renamed GJ, then it turned into a JSR and ended up being adopted into the Java language. And this particular generics proposal had as a key design goal that it could run on an unmodified VM [Virtual Machine]. It is, of course, great that you don't have to modify your VM, but it also brings about a whole bunch of odd limitations. The limitations are not necessarily directly apparent, but you very quickly go, "Hmm, that's strange."

For example, with Java generics, you don't actually get any of the execution efficiency that I talked about, because when you compile a generic class in Java, the compiler takes away the type parameter and substitutes Object everywhere. So the compiled image for List<T> is like a List where you use the type Object everywhere. Of course, if you now try to make a List<int>, you get boxing of all the ints. So there's a bunch of overhead there. Furthermore, to keep the VM happy, the compiler actually has to insert all of the type casts you didn't write. If it's a List of Object and you're trying to treat those Objects as Customers, at some point the Objects must be cast to Customers to keep the verifier happy. And really all they're doing in their implementation is automatically inserting those type casts for you. So you get the syntactic sugar, or some of it at least, but you don't get any of the execution efficiency. So that's issue number one I have with Java's solution.

Issue number two, and I think this is probably an even bigger issue, is that because Java's generics implementation relies on erasure of the type parameter, when you get to runtime, you don't actually have a faithful representation of what you had at compile time. When you apply reflection to a generic List in Java, you can't tell what the List is a List of. It's just a List. Because you've lost the type information, any type of dynamic code-generation scenario, or reflection-based scenario, simply doesn't work. If there's one trend that's pretty clear to me, it's that there's more and more of that. And it just doesn't work, because you've lost the type information.

--Anders Hejlsberg
Read the rest in Generics in C#, Java, and C++

Thursday, January 29, 2004
If you're a bad guy and you want to frustrate law enforcement, use a Mac.

--F.B.I. agent Dave Thomas
Read the rest in SecurityFocus HOME Columnists: A Visit from the FBI

Wednesday, January 28, 2004
Well, Steve, I think there's more than one way of looking at it. I think it's more like we both had this rich neighbor named Xerox and I broke into his house to steal the TV set and found out that you had already stolen it.

--Bill Gates
Read the rest in Folklore.org: Macintosh Stories: A Rich Neighbor Named Xerox

Tuesday, January 27, 2004
my economics is simple - the cost of implementation should never be more than the anticipated 6 month saving - ie you're ahead after 12 months. arbitrary but it's simple and satisfying for the customers. then it doesn't matter how big or how long it takes to put a system in place because the savings keep accumulating.

--Rick Marshall on the xml-dev mailing list, Monday, 05 Jan 2004

Monday, January 26, 2004
I'm personally convinced that there were not large stockpiles of newly produced weapons of mass destruction. We don't find the people, the documents or the physical plants that you would expect to find if the production was going on. I think they gradually reduced stockpiles throughout the 1990's. Somewhere in the mid-1990's, the large chemical overhang of existing stockpiles was eliminated.

--Dr. David A. Kay, former chief weapons inspector in Iraq
Read the rest in Ex-Inspector Says C.I.A. Missed Disarray in Iraqi Arms Program

Sunday, January 25, 2004
Debugging: what an odd word. As if "bugging" were the job of putting in bugs, and debugging the task of removing them. But no. The job of putting in bugs is called programming. A programmer writes some code and inevitably makes the mistakes that result in the malfunctions called bugs. Then, for some period of time, normally longer than the time it takes to design and write the code in the first place, the programmer tries to remove the mistakes. One by one: find a bug, fix it. Bug: supposedly named for an actual moth that found its way into an early computer, an insect invader attracted to the light of glowing vacuum tubes, a moth that flapped about in the circuitry and brought down the machine. But the term surely has an older, deeper origin. Fly in the ointment, shoo fly, bug infested, bug ridden, buggin' out, don't bug me—the whole human uneasiness with the vast, separate branch of evolution that produced the teeming creatures who outnumber us, plague us, and will likely survive our disappearance from the earth. Their mindless success humbles us. A parallel universe without reason. From the Welsh: a hobgoblin, a specter.

--Ellen Ullman, The Bug, p. 71

Saturday, January 24, 2004

Windows isn't well architected. There's a simple way to find out if an operating system has been well designed. When you get an error message, go to the help system and look up the exact words in that message to see if there was enough of a concept of an architecture that they have a consistent vocabulary to talk about what's broken.

All you have to do is try it on a Mac and on a PC to see the difference. Apple took the time to come up with a concise vocabulary, but in Windows the designers of the help system used different terminology from the programmers. That reflects a lack of design discipline, which means that as the system grows, so does the ambiguity of the software itself. The result is a system encrusted with multiple layers of things that weren't really designed in so much as bolted on. Plus there are inessential artifacts of DOS from 20 years ago that still peek through and make trouble.

--Bill Joy
Read the rest in Fortune.com - Technology - Joy After Sun

Friday, January 23, 2004

The real significance of File Vault is that it makes the Mac the first OS that protects privacy, rather than just security. For those who have not considered the difference, security is a scheme that ensures that only your corporate masters can find out what you are up to. Privacy means that only you can see what you are up to.

Perhaps the biggest difference between Apple and Microsoft has traditionally been that Microsoft supports corporations and Apple supports individuals. File Vault once again brings that difference into sharp focus. It actually has the potential to hurt sales to corporations that reserve their right to spy on you—hence the marketing spin that this is to protect corporate secrets on the road—but it once again clearly illuminates Apple as one of the good guys, a force in the world to slow down the seemingly inevitable advance of our Brave New World.

--Bruce Tognazzini
Read the rest in AskTog: Panther: The Good, the Bad, and the Ugly

Thursday, January 22, 2004
I'm no longer entirely convinced about the need to hide the database tier behind layers of abstraction and indirection. After all, how often do companies change their enterprise database? Once every five years? Every ten years? Fifteen years? By that time the rest of the code will almost certainly need to be rewritten anyway. A lot of modern development seems to be taking the time to go the extra mile initially and put code in that will make change less painful later on. Having to change and maintain the code is almost inevitable, but who can predict what form it will take? One of the philosophies behind Extreme Programming is that you should build as little as you can get away with and try not to anticipate and incorporate future enhancements.

--John Topley
Read the rest in Learning To K.I.S.S. - John Topley's Weblog

Wednesday, January 21, 2004

In many cases, it is much more important that a choice be made so that we as a society can benefit from the network effects, than it matters which choice is made. I don't actually much care whether the wire that connects my machine to the power grid here in Montreal is running 110 volts or 109 volts, or 220. What I care about is that my machine and the generators here are working to a prearranged standard, so that they can be in agreement. It's very handy, of course, that there's only a small adapter needed when I go into 220-volt land. In that sense, the choice between technologies is often of much smaller significance for us as a society than that there be a choice. Networks effects have their role in this and provide many of the benefits.

--C. M Sperberg-McQueen
Read the rest in What matters?

Tuesday, January 20, 2004

Building a new tool to solve a problem sounds cool, and sometimes it's actually the right solution (as AntBuilder is, I believe). But reinventing something that's already been solved, even if it hasn't been solved that well, is something that should be avoided if possible. I have consulted on projects where the technologists decided that they want to solve a much broader problem than what was assigned, and usually it's a disaster. In fact, I would characterize the desire to solve a bigger problem than necessary to be an important flaw in the technical management of the project, whereas a desire to "do the simplest thing that could possibly work" is an indication, to me anyway, of a depth of understanding of how hard it is to just get something working, and how likely it is that you'll fail.

Let's consider a well-known example. This group of techies sets out to program TV set-top boxes, but they decide that C++ is too lame a language to accomplish such a challenging task, and that they can come up with something way better. Fortunately, they work for a company that rewards them by turning the result into a cult (the only cult the company has left, so they're now applying the name of the language to everything, even when it doesn't make sense). Unfortunately, the product hasn't been a big moneymaker, unlike, say, set-top boxes might have been, or any number of products they might have made if they had gotten a real-time operating system and started building something with C++ (I know it's difficult, but it's not that bad). Yes, we got Java out of the deal but a smaller company with less-deep pockets cannot afford to do anything but solve the problem at hand, as expediently as possible.

--Bruce Eckel
Read the rest in Bruce Eckel's MindView, Inc: 1-1-04 Why we use Ant (or: NIH)

Monday, January 19, 2004

I have a two-pronged approach to efficiency. First, when you're designing the application, you have to consider efficiency. I'm assuming that you, as the designer, are designing something you know something about. You must make some educated guesses about where you think performance bottlenecks will and will not exist. That means efficiency might appear early in the design, just because you know certain things about the application in general. I don't think it's inappropriate to keep efficiency in mind when you design. You don't want to design something that will be inherently inefficient.

The first prong of my two-pronged approach, then, is to keep efficiency in mind from the beginning. Don't completely ignore efficiency up front in favor of fine tuning later. You shouldn't bend over backwards for efficiency up front. Design so things will be efficient enough most of the time. Shoot for clear, straightforward, and maintainable code, but try to avoid introducing gratuitous inefficiencies.

The second prong is fine tune later with profiling. If you find some bottlenecks in the program by running it and profiling, then go back and rewrite the presumably localized parts of the code to improve efficiency.

Serious efficiency problems arise when people design systems with the attitude that, "We're just going to worry about correctness first. We won't even think about efficiency until later." The results have been pretty disastrous.

--Scott Meyers
Read the rest in Const, RTTI, and Efficiency

Sunday, January 18, 2004

Perhaps the most curious and troubling facet of this confounding puzzle was everybody's failure to pursue the most obvious solution: if the factory had just let Caroline work day shifts, her problem would have disappeared. She asked a supervisor and got brushed off, but nobody else -- not the school principal, not the doctor, not the myriad agencies she contacted -- nobody in the profession of helping thought to pick up the phone and appeal to the factory manager or the foreman or anybody else in authority at her workplace.

Indeed, this solemn regard for the employer as untouchable and beyond the realm of persuasion unless in violation of the law permeates the culture of American antipoverty efforts, with only a few exceptions. The most socially minded physicians and psychologists who treat malnourished children, for example, will advocate vigorously with government agencies to provide food stamps, health insurance, housing and the like. But when they are asked if they ever urge the parents' employers to raise wages enough to pay for nutritious food, the doctors express surprise at the notion. First, it has never occurred to them, and second, it seems hopeless. Wages and hours are set by the marketplace, and you cannot expect magnanimity from the marketplace. It is the final arbiter from which there is no appeal.

--David K. Shipler
Read the rest in A Poor Cousin of the Middle Class

Saturday, January 17, 2004
it's a big world out there. You're never the first person to have this problem.

--Joel Spolsky
Read the rest in Joel on Software - Working on CityDesk, Part IV

Friday, January 16, 2004
I don't think Sun makes enough money from Java. This is potentially the most disturbing weakness of all. What motivation does Sun have to continue to invest in the Java platform? Personally, I would like to see Sun garner greater monetary rewards for its role as "benevolent dictator" presiding over Java's future not from developers or end users but from companies like BEA, IBM, HP, et al. I worry that in any shake-up at Sun initiatives such as Java could suffer. A healthy, strong Sun Microsystems bodes well for Java; a shaken, sickly Sun Microsystems must mean change in how Java is developed and governed, and there's no guarantee in changes for the better.

--Humphrey Sheil
Read the rest in In pursuit of perfection

Thursday, January 15, 2004
Instead of thinking from the implementation out, people need to think from the user in. As a designer, you may have two data structures that the user could merge to get a result, but do you understand that users don't care about your data structures? They just want to get the result. That is a revelation for many designers. Someone may have very good aesthetics if the problem is how to merge two data structures to get a result. But you can show them that that is not the question. The first step on the road, which many people miss, is asking, "What is the other person trying to do?"

--Ken Arnold
Read the rest in Taste and Aesthetics

Wednesday, January 14, 2004
Given that the initial marketing pitch was as a language to animate Web pages, and that the initial implementations were severely bad, it has to be seen as remarkable that Java has proved to be as important as it has. The position that Java has established at the center of Enterprise Computing has probably become unassailable, and its influence, near as as I can tell, is still on the up-curve.

--Tim Bray
Read the rest in ongoing · TPSM 1: Technology Winners

Tuesday, January 13, 2004

Something that I'm convinced of is that the processors are going to migrate to where the transducers are. Thus, every display will be intelligent; every NIC will be intelligent; and, of course, every disk will be intelligent. I got the "smart disk" religion from you, Dave. You argued that each disk will become intelligent. Today each disk has a 200-megahertz processor and a few megabytes of RAM storage. That's enough to boot most operating systems. Soon they will have an IP interface and will be running Web servers and databases and file systems. Gradually, all the processors will migrate to the transducers: displays, network interfaces, cameras, disks, and other devices. This will happen over the next decade. It is a radically different architecture.

What I mean by that is it's going to have a gigahertz or better processor in it. And it will have a lot of RAM. And they will be able to run almost any piece of software that you can think of today. It could run Oracle or Exchange or any other app you can think of.

In that world, all the stuff about interfaces of SCSI and IDE and so on disappears. It's IP. The interface is probably Simple Object Access Protocol (SOAP) or some derivative of SOAP; you send requests to it and get back responses in a pretty high-level protocol. The IP sack does security and naming and discovery. So each of these "disks" will be an IP version 6 (IPv6) nodeor IPv9.

--Jim Gray
Read the rest in ACM Queue - Content

Monday, January 12, 2004
When you say, "template type T," that is really the old mathematical, "for all T." That's the way it's considered. My very first paper on "C with Classes" (that evolved into C++) from 1981 mentioned parameterized types. There, I got the problem right, but I got the solution totally wrong. I explained how you can parameterize types with macros, and boy that was lousy code. Fortunately, it's more important to have the right problem than to have the right solution, because at least when you have the right problem you can eventually solve it. We understand how to use parameterization so much better now than I did then. I mean, I could only glimpse part of the solution and part of the importance of the problem. Fortunately, I glimpsed enough. Today, we casually do things that would have been almost impossible in C++ in the eighties or nineties, before the generic style was first directly supported in C++ by templates.

--Bjarne Stroustrup
Read the rest in Modern C++ Style

Sunday, January 11, 2004
we have only a limited need for people who can create an algorithm to do a computation in Olog(n) instead of On(log(n)), but we have an enormous need for people who can track changing requirements and userscapes and refactor code violently and continuously to match them, and we have an even bigger need for people who help build consensus and communities of users. It's mostly flexibility and unscientific grunt work that brings success.

--David Megginson on the XML Developers List mailing list, Saturday, 03 Jan 2004

Saturday, January 10, 2004
To put the Internet into electoral politics, you have to have a 100 percent guarantee of no breakdowns, no viruses, no hackers, no violations of privacy -- and that's not going to happen. Maybe some day our technology will be so superior that we'll never have a hacker or virus or breakdown. But until that comes, you cannot use it for our electoral system.

--Curtis Gans, Committee for the Study of the American Electorate
Read the rest in Online vote triggers worry - 10/14/03

Friday, January 9, 2004

A programmer needs mathematics because the brain must be trained through learning it, including calculus, topology, sets theory, algebra and other topics.

Too many programmers think that they don't need linear algebra because they are not going to compute eigenvalues. It is like thinking that one does not need to be taught classical literature or poetry because he/she is not going to become a writer.

--David Tolpin on the xml-dev mailing list, Tuesday, 6 Jan 2004

Thursday, January 8, 2004

Performance is a tricky topic to complain about, because it's easy to rely on speed increases thanks to hardware improvements, particularly when doing so guarantees obsolescence and encourages Mac users to buy new computers every few years. If older Macs didn't seem slow running the latest software, many people would stick with them even longer than they do now, which would reflect poorly on Apple's bottom line.

Mac OS X's performance was nearly unusable in 10.0, distinctly usable in 10.1, and perfectly reasonable in 10.2, and Apple seems to have decided that perfectly reasonable is all that's necessary. On some machines, Panther seems a little faster than Jaguar, but on my dual-processor 1 GHz Power Mac G4, I see the spinning pizza of death far more frequently in Panther than I ever did in Jaguar, and overall, the Mac just feels more sluggish. Either way, I'm disappointed because Mac OS X has never achieved the snappiness of Mac OS 9, and given the kind of hardware we have in today's computers, I expect blazing speed.

So as much as I'd like to see Mac OS X increase in speed significantly, I don't expect it to happen, since I don't think Apple wants to spend the engineering resources necessary to do it, particularly when maintaining the status quo keeps money from hardware upgrades flowing in.

--Adam Engst on the TidBITS mailing list, Monday, 5 Jan 2004

Wednesday, January 7, 2004

Every language or system has its own culture. In the background of every language or system are some central ideas. Most of these ideas are good, but they are different. By learning many languages and systems, you get exposed to different ideas—and that enhances your point of view.

If you don't know Prolog, for example, you may not know the power of goal directed programming—programming by describing the problem to solve through specifying rules to apply. This is a very interesting concept. It is a very different way of thinking. And if you don't know Prolog, or the predicate logic, it's very difficult to discover this way of thinking by yourself. Knowing other systems and paradigms expands the world inside your brain. That's why I advise learning multiple languages.

--Yukihiro Matsumoto
Read the rest in Matz on Craftsmanship

Tuesday, January 6, 2004
JavaDoc is a funny thing. When I did the original JavaDoc in the original compiler, even the people close around me pretty soundly criticized it. And it was interesting, because the usual criticism was: a good tech writer could do a lot better job than the JavaDoc does. And the answer is, well, yeah, but how many APIs are actually documented by good tech writers? And how many of them actually update their documentation often enough to be useful?

--James Gosling
Read the rest in Analyze this!

Sunday, January 4, 2004

The question is whether the quality of justice envisaged for the prisoners at Guantánamo Bay complies with minimum international standards for the conduct of fair trials. The answer can be given quite shortly: It is a resounding No.

The term kangaroo court springs to mind. It conveys the idea of a preordained, arbitrary rush to judgment by an irregular tribunal which makes a mockery of justice. Trials of the type contemplated by the United States government would be a stain on United States justice. The only thing that could be worse is simply to leave the prisoners in their black hole indefinitely.

--Johan Steyn
Read the rest in IHT: Search

Saturday, January 3, 2004
Each platform has interesting native features that may or may not have analogues on other platforms. Java was originally designed with cross-platform wrappers around everything for two reasons: to ease the life of developers (you don't have to code something twice) and to stop people from writing Windows only Java apps. I agreed at the time but I now thing this reasoning is flawed. Given a choice between more coding to conditionally use a native features versus not having access to the feature at all, I'll take the extra work.

--Joshua Marinacci
Read the rest in Swing has failed. What can we do?

Friday, January 2, 2004
UML reminds me a lot of the old OSI seven-level network model: Everybody learned it, everybody referred to it, and everybody knew why it didn't apply to their particular situation.

--Ed Nisley, Dr. Dobbs Journal, December, 2002, p. 74

Thursday, January 1, 2004
In my point of view, efficiency and productivity are the same thing, because we focus on programming efficiency, not runtime efficiency. I don't care about runtime efficiency. The computer goes faster and faster every year, so I don't really care about performance. Actually, I care about performance when I'm implementing the Ruby interpreter, but not when I'm designing Ruby. The implementer should care about performance, but the designer shouldn't. If you care about performance, you will focus on machines in design instead of on humans. So you shouldn't focus on performance in design.

--Yukihiro Matsumoto
Read the rest in Dynamic Productivity with Ruby

Earlier quotes:


[ Cafe au Lait | Books | Trade Shows | FAQ | Tutorial | User Groups ]

Copyright 2004 Elliotte Rusty Harold
elharo@metalab.unc.edu
Last Modified at Saturday, January 1, 2005 7:18:03 AM