I love deadlines. I love the sound they make as they go whooshing by.
--Douglas Adams
There was a funny incident at a recent developer event where some folks had a booth where they where demo-ing a high end industrial strength C compiler and had a benchmark that they had transliterated into Java. They were comparing their compiler to GCC and Java. GCC was running at about 2/3 the performance of this high end compiler; the Java version was running at about 2/3 the performance of the GCC version. Folks were gathered around the booth and someone noticed that the script they were using to run the Java version didn't have optimisation turned on. A few seconds with vi to add the "-server" switch and Java's performance jumped up to match the fancy C compiler. This got the pro-GCC crowd all excited, so a bunch of them started fiddling with its command line switches. They got a bit of improvement, but not much (the original selection had been pretty good).
--James Gosling
Read the rest in Java Urban Performance Legends
As the Israelis have found, if you cause huge queues for security checks you merely create prime targets for terrorists. They just detonate their bombs in the queues.
--Philip Baum
Read the rest in Body scan machines to be used on Tube passengers - Personal Tech
Despite the claims of its critics, Intelligent Design is indeed a scientific theory that can be-- indeed is--contradicted by evidence. Examples are the human appendix and the inverted construction of the human retina—bad design with good evolutionary explanations. The real objection to Intelligent Design is not that it is not a theory, nor that it is a theory that we have reason to reject. The real objection is that its supporters are driven by religious, not scientific, motives. Somewhere in the world there must exist someone who was persuaded of its truth by scientific arguments—but looking at those arguments makes it clear that they were generated by people who knew what conclusion they wanted and were doing their best to fudge up reasons to believe it.
--David Friedman,
Read the rest in Faith Based Science
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.
--Humphrey Sheil
Read the rest in In pursuit of perfection
I'd like to see the war on Iraq ended and the troops brought home. The US has spent half a trillion dollars in the last three years, which has produced as a result more civilian deaths in that time than Saddam Hussein was responsible for in the last twenty years, has inflamed the hatred of millions of otherwise fairly sympathetic Muslims around the world, has come no closer to securing US oil interests in the region, has led to a "democracy at gunpoint" which has still resulted in the election of a government far less sympathetic to US interests and much more tied with a newly militant Iranian government (one that had, less than five years ago, been tending towards a somewhat moderately theocratic democracy in the mold of Turkey), and that has, in general, been a failure on just about every front imaginable.
Additionally, to put this into perspective, half a trillion dollars would pay for twenty million full scholarships at $25,000 a piece, or four times that in the form of low interest loans. If that had been plowed into business development in Iraq, it would have resulted in a country that would be far more prosperous than it is now, would have the middle class infrastructure necessary to support educational and societal reforms, and would have been well on its way to replacing an aging tyrant on its own. Let our leaders see that sometimes the wisest thing that you can do is recognize when you are throwing good money after bad, and the most courageous is to stop when so many corporations have a vested interest in seeing it continue.
--Kurt Cagle
Read the rest in All I want for Christmas ...
I vividly remember during my first college class my fascination with the relational database—an information oasis that guaranteed a constant flow of correct, complete, and consistent information at our disposal. In that class I learned how to build a schema for my information, and I learned that to obtain an accurate schema there must be a priori knowledge of the structure and properties of the information to be modeled. I also learned the ER (entity-relationship) model as a basic tool for all further data modeling, as well as the need for an a priori agreement on both the general structure of the information and the vocabularies used by all communities producing, processing, or consuming this information.
Several years later I was working with an organization whose goal was to create a large repository of food recipes. The intent was to include recipes from around the world and their nutritional information, as well as the historical and cultural aspects of food creation.
I was involved in creating the database schema to hold this information. Suddenly the axioms I had learned in school collapsed. There was no way we could know in advance what kind of schema was necessary to describe French, Chinese, Indian, and Ethiopian recipes. The information that we had to model was practically unbound and unknown. There was no common vocabulary. The available information was contained mostly in natural language descriptions; even with significant effort, modeling it using entities and relationships would have been impossible. Asking a cook to enter the data in tables, rows, objects, or XML elements was unthinkable, and building an entry form for such flexible and unpredictable information structures was difficult, if not impossible. The project stopped. Years later I believe we still do not have such information available to us in the way we envisioned it.
Many projects of this kind are all around us. While the traditional data modeling and management techniques are useful and appropriate for a wide range of applications—as the huge success of relational databases attests—in other cases those traditional techniques do not work. A large volume of information is still unavailable and unexploited because the existing data modeling and management tools are not adapted to the reality of such information.
--Daniela Florescu
Read the rest in ACM Queue - Managing Semi-Structured Data
The conventional view of Santa Claus posits a centralized operation run by a bearded fanatic in an undisclosed Arctic location. His agents are everywhere, and this spy ring provides the raw data that allow him to calculate the details of each year's mission. He then enters America illegally, plants packages in homes around the country, and returns to his base, from which he issues occasional communiqués urging peace, good will, and our presence at various post-Christmas sales.
--Jesse Walker
Read the rest in Reason: Santa Claus Conquers the Martians: The war on Christmas is over. Guess who won?
If you look at Engelbart’s demo, then you see many more ideas about how to boost the collective IQ of groups and help them to work together than you see in the commercial systems today. I think there’s this very long lag between what you might call the best practice in computing research over the years and what is able to leak out and be adapted in the much more expedient and deadline-conscious outside world.
--Alan Kay
Read the rest in ACM Queue - A Conversation with Alan Kay - Big talk with the creator of Smalltalk—and much more.
To be sure, Darwin's theory of evolution is imperfect. However, the fact that a scientific theory cannot yet render an explanation on every point should not be used as a pretext to thrust an untestable alternative hypothesis grounded in religion into the science classroom or to misrepresent well-established scientific propositions.
--Judge John E. Jones III
Read the rest in Judge Rejects Teaching Intelligent Design
You would think, that with all the customer service problems they have been having, Dell would not want another customer out there saying "Dell strung me along for a month and then dumped me on the computer market five days before Christmas." You would think, in fact, that they would be falling all over themselves to fedex me the closest thing they could find to what we ordered at no extra cost to myself. Or maybe you wouldn't think that. Maybe I'm some sort of woeful naif with an outsized sense of entitlement who believes that just because Dell's colossal screwups threaten to leave my family without a present under the tree for my much-put-upon Aunt come Christmas morning, that Dell should try to fix it.
I am currently holding for a supervisor. I have now been on the phone with Dell for well over an hour, and so far all I know is that I should have bought the damn computer somewhere else. I'll know better next time.
--Jane Galt
Read the rest in Asymmetrical Information: Dell hell
The president has stated a doctrine that he can just make up the law and create whatever other powers he wants on his own.
--Senator Russ Feingold
Read the rest in Guardian Unlimited | Special reports | Defiant Bush defends wiretapping powers
We now know that EJB 1 & 2 were based on an entirely flawed set of use cases. Because of the damage this (still slowly dawning) realization has wrought to Sun's reputation, it's hard to know whether EJB3, which probably should have been called something else to disassociate it with the failures of its predecessors, will succeed, despite the fact that EJB3 is like a breath of fresh air. You look at the code and it makes sense; no bizzarre and obscure interfaces and concepts to puzzle over while thinking, "I wonder why I have to do this? Well, these guys are clearly smarter than I am." (I tried to understand EJB1, but when I first heard that entity beans didn't actually work, my brain refused to let me invest any more time, which turned out to be the right choice). As a result of all this, someone said "hey, all I want to do is create a database and use it from the web. Why should I do all that work?" As it turns out, such activities seem to be about 90% of all we ever do in "Enterprise" programming, and EJB 1/2 were solving an entirely different problem, and making the 90% incredibly difficult in the process.
--Bruce Eckel
Read the rest in The departure of the hyper
After 9/11 I heard a lot of people say that we should be ready to sacrifice some freedoms in the interest of national security. I wonder how the heroes who made the ultimate sacrifice to win those freedoms would feel to see us so willingly give them away.
--Paul Conover on the LABIRD-L mailing list, Sunday, Tue, 12 Jul 2005 11:03:26
When writing listeners, you should always be aware of the environment in which they will execute. Not only must you pay attention to thread-safety issues, but you need to remember that a listener can mess things up for its caller in other ways, too. One thing that a listener should not do is block for any perceptible amount of time; it has likely been called from an execution context that is expecting to get control back quickly. If a listener is going to perform a potentially time-consuming operation like processing a large document or doing something that may block, such as performing socket IO, it should arrange to do that work in another thread so it can return to its caller quickly.
--Brian Goetz
Read the rest in Java theory and practice: Be a good (event) listener
For the other disabilities, access is via an assistive technology (AT) that mediates the user experience. This is where our the accessibility challenges lie. The challenges stem from the fact that Microsoft Windows doesn't provide a real accessibility infrastructure - as compared to UNIX systems with GNOME, the Java platform, or Macintosh OS X. In Windows, virtually all of the information needed by assistive technologies has to be obtained by patching the operating system, replacing/chaining video drivers, reverse engineering applications, and/or using proprietary COM interfaces to get at the data within an application. The first accessibility API Microsoft put forth for accessibility - Microsoft Active Accessibility (MSAA) - fails to provide most of the information needed for screen reading and other AT uses, and is being supplanted in future Windows releases. What this means is that for an application to be accessible in Microsoft Windows via a particular assistive technology, that AT vendor has to have made a significant investment in customizing their product to that application. The greater the customization investment, the "more accessible" an application is deemed to be, at least via that particular AT. For example, the Windows screen reader with the largest market share, JAWS, has made a huge investment in customization of their product to Microsoft Office (and in contrast made a much smaller investment in customization for WordPerfect). For this reason blind folks generally feel that Microsoft Office is "accessible" (and that WordPerfect "isn't as accessible") - not because of work done by Microsoft or Corel, but work done (or not done) by Freedom Scientific, the creator of JAWS.
--Peter Korn
Read the rest in Peter Korn's Weblog
JBR's postulate 1. For every testable design that requires exposing elements "just for testing", there exists an equivalent testable design that does not require exposing elements "just for testing".
In other words, if I add a method "just for testing", I can usually find a way to restructure the design so that that method either earns its keep or goes away.
--J. B. Rainsberger on the junit mailing list, Wednesday, 31 Aug 2005 14:50:56
The principles of the common law, standing alone, in my opinion compel the exclusion of third-party torture evidence as unreliable, unfair, offensive to ordinary standards of humanity and decency and incompatible with the principles which should animate a tribunal seeking to administer justice.
--Lord Bingham of Cornhill
Read the rest in Guardian Unlimited Politics | Special Reports | Torture evidence inadmissible in UK courts, Lords rule
there is a bigger problem with dynamic languages in general, and this problem has been completely underestimated so far, which probably explains why dynamic languages are not making fast progress in developer mindshare.
This problem is the lack of IDE support.
Auto-completion in IDE's has become extremely smart these past years. Refactoring is also a practice that modern developers have become completely hooked on, and for good reasons.
IDE's for dynamic languages come nowhere close to this level of functionality, and whenever I program in Ruby or Groovy, having to leave my IDE of choice is not only hard, it sometimes makes me decide against using the dynamic language, even if it's a clear winner on paper.
--Cedric Beust
Read the rest in Vanward Technologies [ Interview with TestNG's Cedric Beust ]
One of the "crossing the Rubicon" moments in learning TDD is when you learn to define the interface of a class inside the unit test. That’s right, use the unit test to define the intended function of a new piece of code, and then write the code to make the unit test compile and pass (ReSharper will very happily create the method stub for you). I still do some paper and pencil work before coding, but by and large I’ve found that I have better results when you are determining a class’s signature while writing the unit tests. Writing unit tests first will inevitably simplify the usage of a class (because you’ll want to minimize the mechanics of creating the unit tests). I certainly don't think that you throw away traditional design techniques when you do TDD, but you can't ever let the code and design get very far ahead of the unit tests.
--Jeremy D. Miller
Read the rest in Jeremy D. Miller -
KISS. Keep it (the design) simple and stupid. Complex systems tend to fail. They are hard to tune. They tend not to scale as well. They require smarter people to keep the wheels on the road. In short, they are a pain in the you-know-what. Conversely, simple systems tend to be easy to tune and debug and tend to fail less and scale better and are usually easier to operate. This isn’t news. As I’ve argued before, spreadsheets and SQL and PHP all succeeded precisely because they are simple and stupid—and forgiving. Interestingly, standards bodies tend to keep working on standards long after they should have been frozen. They forget these lessons and add a million bells and whistles that would, if adopted, undoubtedly cause the systems to fail. Luckily this doesn’t happen because by then there is a large body of installed code (and even hardware) out there that assumes the simpler spec and cannot handle the new bells and whistles. Therefore, no one uses them and we are all protected.
--Adam Bosworth
Read the rest in ACM Queue - Learning from THE WEB
what's the "scripting language mystique" all about? You don't have to run javac? Rubbish--I don't believe that's a big issue. You don't have to write declarations? Bull--writing declarations means (to me) that it's easier to debug misspelled variable names. That's a HUGE time saver. As Brett McLaughlin has often said, "whenever you can get the compiler to do the debugging, it's a win." Is it that scripting languages are better "glue" languages for calling UNIX utilities and other external programs? Well, I don't see why it's so difficult to call Runtime.exec(). The fact is--if you have some documentation, you can use Java to call into the guts of other Java programs, not just their external command-line interfaces. That's some pretty powerful glue. If you understand reflection or have been watching what's going on with lightweight containers like Spring, you've got real computation superglue.
Or is it that this could have been written in fewer lines? I'm sure this program could have been compressed into a single line of Perl, or maybe a dozen lines of Python. Sorry, I just don't see "number of lines" as a good metric of anything. When I was in high school, I loved APL because just about anything could be compressed into a single, inscrutable line. I didn't believe in comments then, either. When I was a child, I thought as a child... I admit to being biased--as an O'Reilly editor, I read much more code than I write. So being readable (and I think Java is very readable) is very valueable to me.
--Mike Loukides
Read the rest in Mike Loukides's Blog: The Problem with Scripting
Exactly two things have made airline travel safer since 9/11: reinforcement of cockpit doors, and passengers who now know that they may have to fight back. Everything else -- Secure Flight and Trusted Traveler included -- is security theater. We would all be a lot safer if, instead, we implemented enhanced baggage security -- both ensuring that a passenger's bags don't fly unless he does, and explosives screening for all baggage -- as well as background checks and increased screening for airport employees.
Then we could take all the money we save and apply it to intelligence, investigation and emergency response. These are security measures that pay dividends regardless of what the terrorists are planning next, whether it's the movie plot threat of the moment, or something entirely different.
--Bruce Schneier
Read the rest in Wired News: Airline Security a Waste of Cash
Sun just came out of this really weird patent case with Kodak, where Kodak admitted that we did not violate their patent. They weren’t accusing us of violating their patent, they were accusing us of building a system that caused other people to violate their patent. So they had an expert who wrote software that violated their patent, and he actually got up in court and said that every program ever written does the following completely stupid stuff, and therefore Java induced people to violate their patent. And the jury made up of housewives bought it. And it’s like, “What is this, you know, Shakespeare with rights? It’s like five hundred years later, why didn't we pay attention and just shoot all the lawyers?”.
--James Gosling
Read the rest in James Gosling Q & A: Builder AU: Program: At Work
Over the years I have come to describe Test Driven Development in terms of three simple rules. They are:
- You are not allowed to write any production code unless it is to make a failing unit test pass.
- You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.
- You are not allowed to write any more production code than is sufficient to pass the one failing unit test.
You must begin by writing a unit test for the functionality that you intend to write. But by rule 2, you can't write very much of that unit test. As soon as the unit test code fails to compile, or fails an assertion, you must stop and write production code. But by rule 3 you can only write the production code that makes the test compile or pass, and no more.
If you think about this you will realize that you simply cannot write very much code at all without compiling and executing something. Indeed, this is really the point. In everything we do, whether writing tests, writing production code, or refactoring, we keep the system executing at all times. The time between running tests is on the order of seconds, or minutes. Even 10 minutes is too long.
--Bob Martin
Read the rest in ArticleS.UncleBob.TheThreeRulesOfTdd
One common reason for the proliferation of options in open source software is that (news flash) people often disagree about how things should be done, often violently and vocally in threads that can drag on for weeks on development mailing lists. (It is frustrating for many people that these option flame wars draw more discussion than useful topics or questions.) Few like fighting about things, and project leaders pull the proverbial car to the side of the road and declare “Screw it! We’ll do both!” To satisfy a handful of developers a burden is put on countless users.
--Matthew Mullenweg
Read the rest in Photo Matt » Should We Have Hidden Options?
Both threads and processes are methods of parallelizing an application. However, processes are independent execution units that contain their own state information, use their own address spaces, and only interact with each other via interprocess communication mechanisms (generally managed by the operating system). Applications are typically divided into processes during the design phase, and a master process explicitly spawns sub-processes when it makes sense to logically separate significant application functionality. Processes, in other words, are an architectural construct.
By contrast, a thread is a coding construct that doesn't affect the architecture of an application. A single process might contains multiple threads; all threads within a process share the same state and same memory space, and can communicate with each other directly, because they share the same variables.
Threads typically are spawned for a short-term benefit that is usually visualized as a serial task, but which doesn't have to be performed in a linear manner (such as performing a complex mathematical computation using parallelism, or initializing a large matrix), and then are absorbed when no longer required. The scope of a thread is within a specific code module—which is why we can bolt-on threading without affecting the broader application.
--Alan Zeichick
Read the rest in Ready for Threading: Five Easy Steps for Making Your Code Run Faster
So most folks think Struts is Dead, huh? I've got news for you folks. Struts has been dead since 2002. For that matter, most Java frameworks have been dead for the last year. Most folks think Struts is dead because there won't be any new and whiz-bang features added in future releases. I'm willing to bet the other Java Web Frameworks won't add any whiz-bang features in the next few years either. Sure, WebWork might get a little XMLHttpRequest lovin' for client-side validation, and Tapestry might get pretty URLs - but both of these are features that these frameworks should've had in the first place. So what's the big deal? At least the Struts Developers have the guts to stand up and say "we're in maintenance mode". Shouldn't all framework developer's be able to say this? It's really quite an accomplishment.
--Matt Raible
Read the rest in Raible Designs ~ So Struts is Dead, huh?
The key advantage that TDD gives you is feedback. You write a failing test case, make it pass, and then you formulate the next test case. The wonderful thing is that when you get to that next test case, you have the feedback from getting the first one to pass to draw upon. Often that feedback will lead you to formulate the next test case in a different way. It could even lead you to produce a different interface for the class you were writing.
Now, what I've described might sound bad. It might sound like, well, maybe the decisions that you make during development will drift a bit. Drifting might not sound very good but the fact is it is good in this case. It's good because we control it. We are able to incorporate the things that we learn immediately when we learn them. The alternative is to ignore things that we learn or not learn them at all, and that's not a very clever strategy.
--Michael Feathers
Read the rest in Test Driven Development?!
the guts of the new consoles are geared to make the gaming equivalent of dumb blondes. It has to do with the fact that both the XBox 360 and the PS3's Cell CPU use "in-order" processing, which, to greatly simplify, means they've intentionally crippled the ability to make clever A.I. and dynamic, unpredictable, wide-open games in favor of beautiful water reflections and explosion debris that flies through the air prettily. That means the next generation of games will likely play just like this generation. Only shiny.
--David Wong and Haimoimoi
Read the rest in A Gamers' Manifesto
I think that when a novice asks us a question, it's OK for us to provide a simple, dogmatic-sounding answer. This person is learning, and is therefore not well-informed about the consequences of the choices he has in front of him. As a result, we have a responsibility to suggest the course we think is right and ask him to try it so he can learn the way we did. In this case, a little dogma doesn't hurt. Notice, though, that it's dogma from the learner's perspective, and only due to a lack of experience. For me, at least, it's a heuristic.
--J. B. Rainsberger on the junit mailing list, Monday, 23 May 2005 09:01:54
EVERYWHERE you look, the electronics industry seems to be playing its own mutant variations of limbo. But the question isn't "How low can you go?" At Dell, it's "How cheap can you go?" At Apple, it's "How cool can you go?" And at Microsoft's Windows division, it's "How slow can you go?"
--David Pogue
Read the rest in A Tiny Windows Laptop With a Sense of Fashion
None of the people who are likely to be hit by a terrorist attack voted for Bush. But the heartland people seemed to be saying, "We're not affected by it if there would be another terrorist attack."
--Joseph Zito
Read the rest in The New York Times > New York Region > A Blue City (Disconsolate, Even) Bewildered by a Red America
extreme caution is warranted when designing and building multi-threaded applications, particularly those which have a GUI component. Use of threads can be very deceptive. In many cases they appear to greatly simplify programming by allowing design in terms of simple autonomous entities focused on a single task. In fact in some cases they do simplify design and coding. However, in almost all cases they also make debugging, testing, and maintenance vastly more difficult and sometimes impossible. Neither the training, experience, or actual practices of most programmers, nor the tools we have to help us, are designed to cope with the non-determinism. For example, thorough testing (which is always difficult) becomes nearly impossible when bugs are timing dependent. This is particularly true in Java where one program can run on many different types of machines and OS platforms, and where each program must work under both preemptive or non-preemptive scheduling. As a result of these inherent difficulties, we urge you to think twice about using threads in cases where they are not absolutely necessary.
--Scott E. Hudson and Ian Smith
Read the rest in subArctic User's Manual
if the GPL is a one-way street, then closed-source commercial add-ons are a one-way superhighway. One shouldn't complain about a GPL add-on product, and then distribute a closed-source add-on. Something seems illogical about that combination. The GPL is a lot more open and less viral than proprietary code.
--Paul Everitt
Read the rest in Zope Dispatches
Family-values types often deplore the brutality of today's action titles. But have they ever closely examined who's committing this carnage?
Nine times out of 10, when you're blowing people's chests open with hollow-point bullets, you aren't playing as a terrorist or criminal. No, you're playing as a cop, a soldier or a special-forces agent -- a member of society's forces of law and order.
Consider our gaming history. In Doom, the game that began it all, you were a Marine. Then came a ceaseless parade of patriotic, heart-in-hand World War II games, in which you merrily blow the skulls off Japanese and German soldiers under the explicit authority of the U.S. of A. Yet anti-gaming critics didn't really explode with indignation until Grand Theft Auto 3 came along -- the first massively popular modern game where the tables turned, and you finally played as a cop-killing thug.
Why weren't these detractors equally up in arms about, say, the Rainbow Spear series? Because games lay bare the conservative logic that governs brutal acts. Violence -- even horrible, war-crimes-level stuff -- is perfectly fine as long as you commit it under the aegis of the state. If you're fighting creepy Arabs and urban criminals, go ahead -- dual-wield those Uzis, equip your frag grenades and let fly. Nobody will get much upset.
--Clive Thompson
Read the rest in Wired News: The Bad Lieutenant
I‘d like to say to the good citizens of Dover: if there is a disaster in your area, don‘t turn to God, you just rejected Him from your city,. And don‘t wonder why He hasn‘t helped you when problems begin, if they begin. I‘m not saying they will, but if they do, just remember, you just voted God out of your city. And if that‘s the case, don‘t ask for His help because he might not be there,
--Pat Robertson
Read the rest in Televangelist Robertson warns town of God‘s wrath
Normal users don't use bugzilla. Only power users & developers do. Besides, no one likes spending time to register.
--Eugenia Loli-Queru
Read the rest in Editorial: OSS Software, Deaf Developers & Unsatisfied Users - OSNews.com
Apple tends to be a very difficult company to work with. On the one hand, they do lovely stuff, on the other hand, their corporate secrecy is just mind-numbing, and to have to work with them on an engineering level is very, very difficult. We don’t have like a special relationship with them where we get early access versions of their work. In fact, the current, 1.4, is a lot shakier than it ought to be, and if you join the Apple developer program and you pay them enough money, you start getting early releases of Tiger, which I do. I’m not actually allowed to say anything about the fact that it’s flaking.
--James Gosling
Read the rest in James Gosling Q & A: Builder AU: Program: At Work
I see two main roles for validation:
(a) to protect the system from data that it cannot handle. If the system can only handle 7 values for the "colour" attribute of a car, then it should validate incoming data to check that it has one of those 7 values. It would be better to design the system to handle more colours, but if you can't afford to do that, then you must check that the incoming data fits within the design limits of your system.
(b) to enforce a contract. If you have a contract with the supplier of a news feed that all articles sent will carry either today's or yesterday's date, then you should check that your supplier is keeping to the contract. (You need to be very clear about what you plan to do when validation fails.)
There is also scope for reasonableness checks to catch data input errors. But they belong as close to the user interface level as possible, not at the information management level.
--Michael Kay on the xml-dev mailing list, Monday, 23 Aug 2004
Sun has a long history of innovative operating system work, and it's really great to see them starting to get parts of Solaris out under an open source license. Sun has obviously long depended on and interacted with the open source community, and their ability to work this through Sun Legal is impressive :-). An interesting question for Sun will be whether they can build a community around OpenSolaris that extends beyond Sun-employed developers in the same way that Apple has started to see success in building a community around Darwin.
--Robert N M Watson
Read the rest in Interview: Looking at FreeBSD 6 and Beyond
Program testing can be quite effective for showing the presence of bugs, but is hopelessly inadequate for showing their absence.
--Edsger W. Dijstra
Read the rest in Wired News: Battling Bugs: A Digital Quagmire
If you like eclipse, you'll love IDEA -- once you get accustomed to the keystrokes. All its refactoring and completion is just that bit smarter than Eclipse. The only thing Eclipse does better IMHO is CVS synchronisation (and IDEA is fine, just not as neat)
--Tom Davies on the java-dev mailing list, Wednesday, 4 May 2005 00:33:17
SWT is a good competitive force I think, but they are really having trouble being cross platform.
--Henry Story on the java-dev mailing list, Monday, 6 Jun 2005 11:38:13
While I recognize their value, my experience with coverage tools is that they tend to make you obsessive about things that don't necessarily matter. Coverage tools can be a distraction- you obsess over the last 10% of code that isn't covered and you forget to test some essential functionality that your users depend on every day.
--Cedric Beust
Read the rest in Vanward Technologies [ Interview with TestNG's Cedric Beust ]
There's just one problem: Covering large expanses of real estate with painstakingly processed silicon is expensive. Without what the industry coyly calls "incentives" - government subsidies, rebates, tax credits, and the like - photovoltaic panels wouldn't have much of a market. Even in sunny places like California, the pre-rebate cost of PV-generated electricity is roughly 21 cents per kilowatt-hour. Coal (from 4.74 cents per kilowatt-hour), natural gas (5.15 cents), nukes (5.92 cents), even windmills (5.15 cents) offer cheaper ways to keep the lights on.
But PV's price differential isn't quite as bad as it seems, thanks to one huge advantage: Solar panels are small enough to fit on rooftops, which is darn close to the electricity user. By bringing energy production and consumption together - something coal, nukes, and gas can't do - solar has the potential to cut out the middleman, along with his markup. That is, instead of competing with wholesale power from distant power plants, rooftop solar competes with retail kilowatt-hours delivered by the local electric company, which often are marked up as much as 1,000 percent over their original generating cost. What's more, retail prices typically peak on hot, sunny summer days, when air conditioners suck every last electron from the grid - precisely when solar panels are most productive. Add a final boost from government handouts, and solar can get over the hump, especially with homeowners and other customers whose motives might not be purely economic.
--Spencer Reiss
Read the rest in Wired 13.07: The Dotcom King & the Rooftop Solar Revolution
if you have 50K lines of code in 200 Java files and almost 300 unit tests, you don't want to go over each class over and over again to confirm that nothing important remains untested. So then you need a separate administration for that. Conclusively, it's in some situations much easier and more cost-effective to just reach 100% coverage.
--Ernst de Haan on the cobertura-devel mailing list, Monday, 26 Sep 2005 09:32:15
A key way to encourage this behavior oriented approach is to only use an objects, globally, public interface in the tests. One objection I have heard to this approach is that you will miss bugs because you correctness checks will, inevitably, be made at a higher level. This argument is just wrong. Any bug that is undetectable from the public interface does not matter. Of course, detecting some bugs via the public interface might be a bit more difficult than immediately reaching into the guts of your objects but it will be better because you will be testing the intended behavior of those objects, not their implementations. As a side benefit you will be implicitly documenting the public interface with is a Good Thing.
--Peter Williams
Read the rest in Peter Williams’ Weblog » Blog Archive » Test Anti
Every once in a while, you just have to go down to the native code to really feel like a real programmer. Those garbage collections and bytecode verifications are all great, but it's just not so fun to live in an environment where you can't even shoot yourself.
--Kohsuke Kawaguchi
Read the rest in Kohsuke Kawaguchi's Blog: New version of com4j posted
Unlike the bug database at Sun and bug databases on numerous projects, Apple insists on keeping their Java bug reports locked up tight. This leads to frustration and a sense of pointlessness among those who are spending (unpaid) time to do quality testing for Apple and those people can't even tell (a) if their bug report was helpful, (b) if they're alone in seeing a problem, and (c) if the cluster their problem relates to is fixed internally and just waiting for the next release.
When you run an opaque process but rely on the kindness of strangers, you get frustration and annoyance and drive people to just give up. For a company that's so good at designing user interfaces, this should be a no-brainer. Apparently, they still don't get it.
--Todd O'Bryan on the java-dev mailing list, Sunday, 23 Oct 2005 21:53:24
If ID really were a scientific theory, positive evidence for it, gathered through research, would fill peer-reviewed scientific journals. This doesn't happen. It isn't that editors refuse to publish ID research. There simply isn't any ID research to publish. Its advocates bypass normal scientific due process by appealing directly to the non-scientific public and - with great shrewdness - to the government officials they elect.
The argument the ID advocates put, such as it is, is always of the same character. Never do they offer positive evidence in favour of intelligent design. All we ever get is a list of alleged deficiencies in evolution. We are told of "gaps" in the fossil record. Or organs are stated, by fiat and without supporting evidence, to be "irreducibly complex": too complex to have evolved by natural selection.
In all cases there is a hidden (actually they scarcely even bother to hide it) "default" assumption that if Theory A has some difficulty in explaining Phenomenon X, we must automatically prefer Theory B without even asking whether Theory B (creationism in this case) is any better at explaining it. Note how unbalanced this is, and how it gives the lie to the apparent reasonableness of "let's teach both sides". One side is required to produce evidence, every step of the way. The other side is never required to produce one iota of evidence, but is deemed to have won automatically, the moment the first side encounters a difficulty - the sort of difficulty that all sciences encounter every day, and go to work to solve, with relish.
--Richard Dawkins and Jerry Coyne
Read the rest in Guardian Unlimited | Life | One side can be wrong
Companies do work when it is profitable, either immediately or eventually. There's no sense that you are increasing the general wealth of the locality by working on a Swhahili version. From the perspective of the company, the business case for delivering obscure products to a niche market is a difficult argument to make. And from the niche market's perspective, the gift is a trojan horse, for every purchase of the Swahili version of the product made by company X, which may be located in, say, the USA, represents a loss of local money.
This is arguably a version of colonialism The remote proprietor is the one who's gaining the rent here. It is not benefiting the locality as meaningfully as in the case of the open source example, where the ownership of the code stays local and the developer, the training courses, what have you, benefit the local economy both directly and indirectly, through the production of valuable cultural capital.
We see an understanding of this dynamic in Brazil, where the government is behind OpenOffice.org and open source in general. We see this in India and elsewhere, where governments understand that they can support OpenOffice.org and they can support open source, and the people who are benefiting are the localities. It is a politically inexpensive but valuable logic.
--Luis Suarez-Potts
Read the rest in :: Interviews : OpenOffice.org 2.0: An Office Suite With No Horizons
Neither Intel nor Motorola nor any other chip company understands the first thing about why that architecture was a good idea.
Just as an aside, to give you an interesting benchmark—on roughly the same system, roughly optimized the same way, a benchmark from 1979 at Xerox PARC runs only 50 times faster today. Moore’s law has given us somewhere between 40,000 and 60,000 times improvement in that time. So there’s approximately a factor of 1,000 in efficiency that has been lost by bad CPU architectures.
The myth that it doesn’t matter what your processor architecture is—that Moore’s law will take care of you—is totally false.
--Alan Kay
Read the rest in ACM Queue - A Conversation with Alan Kay - Big talk with the creator of Smalltalk—and much more.
Most variables are rather temporary in nature. Some parts of your program are like little houses. You walk in and they have their own variables. In one house, you may have adadthat represents Archie, a travelling salesman and skeleton collector. In another house,dadcould represent Peter, a lion tamer with a great love for flannel. Each house has its own meaning fordad
-- why the lucky stiff
Read the rest in Why's (Poignant) Guide to Ruby :: 3. A Quick (and Hopefully Painless) Ride Through Ruby (with Cartoon Foxes)
Whenever a new technology has disrupted copyright, we've changed copyright. Copyright isn't an ethical proposition, it's a utlititarian one. There's nothing *moral* about paying a composer tuppence for the piano-roll rights, there's nothing *immoral* about not paying Hollywood for the right to videotape a movie off your TV. They're just the best way of balancing out so that people's physical property rights in their VCRs and phonographs are respected and so that creators get enough of a dangling carrot to go on making shows and music and books and paintings.
Technology that disrupts copyright does so because it simplifies and cheapens creation, reproduction and distribution. The existing copyright businesses exploit inefficiencies in the old production, reproduction and distribution system, and they'll be weakened by the new technology. But new technology always gives us more art with a wider reach: that's what tech is *for*.
Tech gives us bigger pies that more artists can get a bite out of. That's been tacitly acknowledged at every stage of the copyfight since the piano roll. When copyright and technology collide, it's copyright that changes.
Which means that today's copyright -- the thing that DRM nominally props up -- didn't come down off the mountain on two stone tablets. It was created in living memory to accommodate the technical reality created by the inventors of the previous generation. To abandon invention now robs tomorrow's artists of the new businesses and new reach and new audiences that the Internet and the PC can give them.
--Cory Doctorow
Read the rest in Cory Doctorow: Microsoft Research DRM talk
Not all MS employees are evil, but some are. I once had the opportunity to read several MS internal marketing documents (and no, they DIDN'T put me under an NDA, thanks) regarding their Linux strategy. Those people were every bit as evil as the Linux community thinks. Just because you're paranoid, doesn't mean someone is not out to get you.
--Mary E. Tyler on the computer book publishing mailing list, Friday, 30 Sep 2005 14:40:36
You can dress up intelligent design and make it look like science, but it just doesn't pass muster. In science class, you don't say to the students, "Is there gravity, or do you think we have rubber bands on our feet?"
--Steven Stough
Read the rest in A Web of Faith, Law and Science in Evolution Suit
Custom development is that murky world where a customer tells you what to build, and you say, "are you sure?" and they say yes, and you make an absolutely beautiful spec, and say, "is this what you want?" and they say yes, and you make them sign the spec in indelible ink, nay, blood, and they do, and then you build that thing they signed off on, promptly, precisely and exactly, and they see it and they are horrified and shocked, and you spend the rest of the week reading up on whether your E&O insurance is going to cover the legal fees for the lawsuit you've gotten yourself into or merely the settlement cost. Or, if you're really lucky, the customer will smile wanly and put your code in a drawer and never use it again and never call you back.
--Joel Spolsky
Read the rest in Joel on Software
It doesn't take a lot of tests to realize that using package and class names to categorize your tests doesn't scale and quickly leads to very complicated code bases.
There is also the fact that some categories transcend (or should I say cross-cut?) packages and class names, and you give a pretty good example yourself: slow and fast tests. Let's say I have a database and a gui package, and on top of that, each of these categories has slow and fast tests. How do you solve this problem?
This is precisely why we have annotations: to attach additional meaning to Java elements (packages, classes and methods) that cannot easily be conveyed otherwise.
--Cedric Beust on the junit mailing list, Sunday, 4 Aug 2005 14:28:31
Motor vehicles have to be safe, and there are rules and regulations governing their development and production which, by and large, keep the roads safe from exploding cars.
It does not stop accidents caused by driver error or poor maintenance, but it does make us safer.
And if a group of people build their own cars then they have to follow those same rules in order to be allowed to use public roads, even if they gave their cars away.
It should be the same for software, especially in our networked world where other people's insecure computers host spambots and other malware that can cause damage to all network users.
--Bill Thompson
Read the rest in BBC NEWS | Technology | Taking on software liability
Sometime around my early thirties I stumbled upon evolutionary biology, particularly in the form of Richard Dawkins’s books The Selfish Gene and then The Blind Watchmaker and suddenly (on, I think the second reading of The Selfish Gene) it all fell into place. It was a concept of such stunning simplicity, but it gave rise, naturally, to all of the infinite and baffling complexity of life. The awe it inspired in me made the awe that people talk about in respect of religious experience seem, frankly, silly beside it. I'd take the awe of understanding over the awe of ignorance any day.
--Douglas Adams
Read the rest in An Interview with Douglas Adams, Winter 1998
often the program density and comprehensibility are inversely related. It’s always funny to talk to people who are like real Perl freaks, because they love to make these magic pieces of Perl code, and there’s no detectable flaws or anything in there, it’s just randomly assembled characters, or it looks pretty random. It’s a sort of “write once, never look at it again”.
--James Gosling
Read the rest in James Gosling Q & A: Builder AU: Program: At Work
There are two sorts of people in the world: those who believe Joss Whedon is a genius and those who are wrong.
--Connie Ogle
Read the rest in Herald.com | 09/30/2005 | A sci
There is a built-in incentive to demolish. The first instinct after natural disasters is almost always to demolish buildings. It is almost always wrong.
--Richard Moe, president of the National Trust for Historic Preservation
Read the rest in 9th Ward has history, but does it have a future? - washingtonpost.com Highlights
I'm troubled by the use of "better" in this conversation. Would it make more sense to say "optimized for X", where "X" is something a little more specific.
--Nathan Young on the xml-dev mailing list, Monday, 3 Oct 2005 14:48:59
Oh lord the damned NS*ScriptError messages...is there anything that makes me want to lock a dev in a room with 4000 pokemon cards, a bulimic fruit bat, and my son right AFTER he's drank two liters of Mountain Dew to wash down a pound of chocolate covered espresso beans?
I swear, it makes me want to file bug reports that say "Got one of those " NSReceiverEvaluationScriptError: 4" errors again, and when I get the "can you be more informative" emails, reply back with "I don't know, can YOU?"
Why even bother with error messages if they're meaningless? Just pop a dialog that says, "Didn't work, won't tell you why, sucks to be you". At least that's more descriptive.
--John C. Welch on the applescript-users mailing list, Sunday, 02 Oct 2005 11:20:48
There is no issue of democracy here. You don't get to vote on the design of the 757 engine and you don't get to vote on the means and processes of evolution. You can investigate, hypothesise, experiment, observe, record, publish and repeat, but otherwise, take your faith to your church, synagogue, mosque or temple and I am with you, but push it into a science curriculum, and I am here with the carpenter, board in hand to ram it up your collection plates.
--Claude L (Len) Bullard, on the xml-dev mailing list, Friday, 12 Aug 2005 08:27:02
it's hard to create highly reusable frameworks. They become complex, hard to learn, and even harder to maintain. I was on both the framework consumer and the framework producer side, and it can be hard from either perspective. A key challenge in framework development is how to preserve stability over time. The more miles a framework gets the better you understand how you should have built it in the first place. Therefore you would like to tweak and improve it. However, since your framework is heavily used you are highly constrained in what you can change. At this point it is crucial to have well defined APIs and to make it clear to the clients what is published API and what internal code is. For published APIs you should commit to stability and for internal code you have the freedom to change it.
--Erich Gamma
Read the rest in Erich Gamma on Flexibility and Reuse
there are really two things we mean by open source: we mean the licensing/distribution of software, but also the community that is built around it. Key to the success of an open source project is both of these elements, and creating and maintaining that community requires easily as much investment as the software development itself. However, once achieved, the pay-offs for everyone involved can be huge.
--Robert N M Watson
Read the rest in Interview: Looking at FreeBSD 6 and Beyond
Abbot is, like linux, free if your time is worth nothing :-) Abbot has only volunteer support, but is OSS so you may fix whatever you can. Abbot tests only Java applications: its support for AWT/Swing is mature and solid, but its support for SWT is much more {underdeveloped, under development}. It is "pure Java," and thus should work on whatever platform your target window system is supported; in practice there are known problems on Macs due to Apple's Java support (or lack thereof). It is API-oriented (and therefore plays well with JUnit and whatever SCM you wanna use) but also has nice record/edit/play support (Costello) for Swing but not SWT (at least, not yet).
--Thomas L Roche on the java-gui-testing mailing list, Sunday, 28 Aug 2005 13:24:48
XP has some really deep, deep tacit assumptions going on, and I think the deepest tacit assumption is that we have a significant organizational problem, but we can't fix the organization. Essentially, the crap rolls downhill and ends up rolling right into the programmer's lap. When the product or the program turns out to be unsatisfactory, the fingers point to the programmer. XP is very well-intentioned; it's the software-development community beginning to say, "Hey, this is not only unfair to us, but it's not productive as a discipline and we can do a lot better." I applaud that sentiment and I agree with that sentiment, but then XP says, "OK, so, I can't change the organizational failings, so, I'm going to build my own internal defenses." I suppose this is probably better than nothing, but I'm interested in changing the way organizations are constructed. I believe that in order to create quality software, you have to change the organization. We can change the organization, and it strikes me that the assumption underlying XP is that the organization's structure is a given.
--Alan Cooper
Read the rest in Extreme Programming vs. Interaction Design
The truth is, a trade show is not a very cost-effective way to reach potential customers. Given the cost of travel, hotels, the booth, a thousand bucks for nice brochures, and everybody taking a week off of work, it's a really expensive way to get in front of prospects, especially since I can write an article on my website and get in front of 1000 times as many people.
But that's not really the point: the point is to have interactive experiences with your customers. You can try out lots of different pitches and really listen to how people respond to them, which is something you can't do in non-interactive marketing like web sites and magazine ads.
--Joel Spolsky
Read the rest in Joel on Software
science isn't about something being true or not true: that's a humanities graduate parody. It's about the error bar, statistical significance, it's about how reliable and valid the experiment was, it's about coming to a verdict, about a hypothesis, on the back of lots of bits of evidence.
--Ben Goldacre
Read the rest in Guardian Unlimited | Life | Don't dumb me down
President Bush doesn't often find common cause with Cuba, Zimbabwe, Iran, Syria and Venezuela. But this month the Bush administration joined with those countries and others to eviscerate a forthright U.N. statement that nations have an obligation to respond to genocide.
It was our own Axis of Medieval, and it reflected the feckless response of President Bush to genocide in Darfur. It's not that he favors children being tossed onto bonfires or teenage girls being gang-raped and mutilated, but he can't bother himself to try very hard to stop these horrors, either.
--Nicholas D. Kristof
Read the rest in A Wimp on Genocide
I begged him to let me continue. People were dying, and I was the only doctor on the tarmac where scores of nonresponsive patients lay on stretchers. Two patients died in front of me. I showed him my medical credentials. I had tried to get through to FEMA for 12 hours the day before and finally gave up. I asked him to let me stay until I was replaced by another doctor, but he refused. He said he was afraid of being sued. I informed him about the Good Samaritan laws and asked him if he was willing to let people die so the government wouldn't be sued, but he would not back down. I had to leave.
--Dr. Mark N. Perlmutter
Read the rest in 2theadvocate.com: News
It would almost be embarrassing to listen to the JavaOne keynotes from seven, eight or nine years ago. We absolutely underhyped it. We had no clue what this technology was going to do.
--Scott McNealy
Read the rest in Gosling: A closer look at Java | Tech News on ZDNet
We are still in a world where an attack like the slammer worm combined with a PC BIOS eraser or disk locking tool could wipe out half the PCs exposed to the internet in a few hours. In a sense we are fortunate that most attackers want to control and use systems they attack rather than destroy them.
--Alan Cox
Read the rest in O'Reilly Network: The Next 50 Years of Computer Security: An Interview with Alan Cox
I will say there's no shortage of dissent in America - it's just that it's largely impotent. Challenges to the White House narrative continue to be reframed as unpatriotic. And fear-mongering has disabled civil public discourse. Before the last election, our friends abroad could say the problem was Bush, not the American people. No longer.
--Garry Trudeau
Read the rest in Guardian Unlimited | Newsroom | Welcome back, BD
I think if I hear one more “You can give a man a fish, and feed him for one day, or you can teach a man to fish and …” parable from a donor I will puke. Aside from all the evident problems around funding people to fish for fish that are rapidly disappearing because we are funding so many people to fish them, the basic truth is that you need more than knowledge to fish, you need a rod, a boat, a net, a bucket, a knife, and not least of all, a full belly while you try. Aside from that, realistically you need a home to come back to, and a market to trade your fish for clothing, shelter, and vegetables. If you are poor you have to rent these things: its expensive being poor. By and large, in my experience, and I have a lot of experience, people that need help generally have a pretty clear idea of what kind of help they need, and its rarely a new paradigm or puritan work ethic or any other notional thing, its mostly capital, both financial and social
--Rob Bray
Read the rest in Taking a Long View: GAAP: The Leaky Ceiling
the adoption of programming languages has very often been somewhat accidental, and the emphasis has very often been on how easy it is to implement the programming language rather than on its actual merits and features. For instance, Basic would never have surfaced because there was always a language better than Basic for that purpose. That language was Joss, which predated Basic and was beautiful. But Basic happened to be on a GE timesharing system that was done by Dartmouth, and when GE decided to franchise that, it started spreading Basic around just because it was there, not because it had any intrinsic merits whatsoever.
This happens over and over again. The languages of Niklaus Wirth have spread wildly and widely because he has been one of the most conscientious documenters of languages and one of the earlier ones to do algorithmic languages using p-codes (pseudocodes)—the same kinds of things that we use.
--Alan Kay
Read the rest in ACM Queue - A Conversation with Alan Kay - Big talk with the creator of Smalltalk—and much more.
In the 1990s, we learned to grok objects. The revolution in mainstream software development from structured programming to object-oriented programming was the greatest such change in the past 20 years, and arguably in the past 30 years. There have been other changes, including the most recent (and genuinely interesting) naissance of web services, but nothing that most of us have seen during our careers has been as fundamental and as far-reaching a change in the way we write software as the object revolution.
Until now.
Starting today, the performance lunch isn’t free any more. Sure, there will continue to be generally applicable performance gains that everyone can pick up, thanks mainly to cache size improvements. But if you want your application to benefit from the continued exponential throughput advances in new processors, it will need to be a well-written concurrent (usually multithreaded) application. And that’s easier said than done, because not all problems are inherently parallelizable and because concurrent programming is hard.
--Herb Sutter
Read the rest in The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
If you don't unit test then you aren't a software engineer, you are a typist who understands a programming language.
--Moses Jones
Read the rest in An Early Look at JUnit 4
Mr. President, this job can't be fun for you any more. There's no more money to spend--you used up all of that. You can't start another war because you used up the army. And now, darn the luck, the rest of your term has become the Bush family nightmare: helping poor people. Listen to your Mom. The cupboard's bare, the credit cards maxed out. No one's speaking to you. Mission accomplished. "Now it's time to do what you've always done best: lose interest and walk away. Like you did with your military service and the oil company and the baseball team. It's time. Time to move on and try the next fantasy job. How about cowboy or space man? Now I know what you're saying: there's so many other things that you as President could involve yourself in. Please don't. I know, I know. There's a lot left to do. There's a war with Venezuela. Eliminating the sales tax on yachts. Turning the space program over to the church. And Social Security to Fannie Mae. Giving embryos the vote.
But, Sir, none of that is going to happen now. Why? Because you govern like Billy Joel drives. You've performed so poorly I'm surprised that you haven't given yourself a medal. You're a catastrophe that walks like a man. Herbert Hoover was a shitty president, but even he never conceded an entire city to rising water and snakes.
On your watch, we've lost almost all of our allies, the surplus, four airliners, two trade centers, a piece of the Pentagon and the City of New Orleans. Maybe you're just not lucky. I'm not saying you don't love this country. I'm just wondering how much worse it could be if you were on the other side.
So, yes, God does speak to you. What he is saying is: "Take a hint."
--Bill Maher
If I see only a certification without a general C.S. or Computer Engineering degree, I move on to the next résumé. After we advertise a position there are just too many to go through without quickly culling down the amount of résumés that get a closer look. If you do have a degree from a decent school, why bother with the far less impressive certification? If you have a degree and you feel you still need a certification to prove you can learn Java, I just don't get it. If anything, I look for Java experience (professional or "on your own"), not Java certifications. But normally I don't care much about the language specifics, they are such a small part of the job. The exception is people with VB or JavaScript and "HTML" experience and no other languages mentioned, they go straight to the bin.
--Scott Palmer on the java-dev mailing list, Monday, 5 Sep 2005 23:54:51
Rails is opinionated software. It eschews placing the old ideals of software in a primary position. One of those ideals is flexibility—the notion that we should try to accommodate as many approaches as possible, that we shouldn't pass judgement on one form of development over another. Well, Rails does, and I believe that's why it works.
With Rails, you trade flexibility at the infrastructure level to gain flexibility at the application level. If you are happy to work along the golden path that I've embedded in Rails, you gain an immense reward in terms of productivity that allows you to do more, sooner, and better at the application level.
--David Heinemeier Hansson
Read the rest in O'Reilly Network: Ruby on Rails: An Interview with David Heinemeier Hansson
"Run everywhere" isn't very everywhere, is it? Some days it's just "Windows and maybe Linux or Mac." If J2SE isn't worth running on set-top boxes and game consoles, and if it's always behind or half-baked on Mac and Linux, is it ultimately just a "me too" way to write Windows applications?
--Chris Adamson
Read the rest in Chris Adamson's Blog: New Platforms, No Java
Before Hurricane Katrina breached a levee on the New Orleans Industrial Canal, the Army Corps of Engineers had already launched a $748 million construction project at that very location. But the project had nothing to do with flood control. The Corps was building a huge new lock for the canal, an effort to accommodate steadily increasing barge traffic. Except that barge traffic on the canal has been steadily decreasing.
--Michael Grunwald
Read the rest in Money Flowed to Questionable Projects
If our system did such a poor job when there was no enemy, how would the federal, state and local governments have coped with a terrorist attack that provided no advance warning and that was intent on causing as much death and destruction as possible?
--Senator Susan Collins, R-Maine
Read the rest in Flooding Recedes in New Orleans; U.S. Inquiry Is Set
I'm going home even if it comes down to walking to New Orleans. It's my life, and I prefer to be in Louisiana, period. And it doesn't matter what's left there. I'm going to rebuild even if I have to hold a shovel and a horn at the same time.
--Glen Andrews
Read the rest in Putting Down New Roots on More Solid Ground
What I'm hearing which is sort of scary is they all want to stay in Texas. Everyone is so overwhelmed by the hospitality. And so many of the people in the arena here, you know, were underprivileged anyway, so this is working very well for them.
--Barbara Bush
Read the rest in Guardian Unlimited | Special reports | Cheney called in as Bush says he will lead his own inquiry into Katrina
I took the classic approach to software development:
- encounter a bug
- blame the tool
- post to the mailing list and complain about it
- read the docs
- find own mistake and crawl back into my corner
--Ralph Scheuer on the java-dev mailing list, Tuesday, 30 Aug 2005 15:38:11
The sad bottom line however is that customer service in general is just a lost art. I am dealing with nightmare issues right now with my health insurance company, my cell phone company (Cingular), my car insurance company, my bank, and probably a few others I am forgetting. Everyone is trying to rip you off all the time and they all hire complete morons who have no interest in helping you if it takes longer than 2 minutes. It makes me want to sell my car, put my money under my mattress, disconnect my cable/internet/phone, and just buy a flock of sheep and tend to them.
--Adam Fialkov on the wwwac mailing list, Monday, 29 Aug 2005 16:25:04
Among the controversies that students of evolution commonly face, these are genuinely challenging and of great educational value: neutralism versus selectionism in molecular evolution; adaptationism; group selection; punctuated equilibrium; cladism; "evo-devo"; the "Cambrian Explosion"; mass extinctions; interspecies competition; sympatric speciation; sexual selection; the evolution of sex itself; evolutionary psychology; Darwinian medicine and so on. The point is that all these controversies, and many more, provide fodder for fascinating and lively argument, not just in essays but for student discussions late at night.
Intelligent design is not an argument of the same character as these controversies. It is not a scientific argument at all, but a religious one. It might be worth discussing in a class on the history of ideas, in a philosophy class on popular logical fallacies, or in a comparative religion class on origin myths from around the world. But it no more belongs in a biology class than alchemy belongs in a chemistry class, phlogiston in a physics class or the stork theory in a sex education class. In those cases, the demand for equal time for "both theories" would be ludicrous. Similarly, in a class on 20th-century European history, who would demand equal time for the theory that the Holocaust never happened?
--Richard Dawkins and Jerry Coyne
Read the rest in Guardian Unlimited | Life | One side can be wrong
A year ago the US army corps of engineers proposed to study how New Orleans could be protected from a catastrophic hurricane, but the Bush administration ordered that the research not be undertaken. After a flood killed six people in 1995, the Congress created the Southeast Louisiana Urban Flood Control Project. Operated by the corps of engineers, levees and pumping stations were strengthened and renovated. In 2001, when George Bush became president, the Federal Emergency Management Agency issued a report stating that a hurricane striking New Orleans was one of the three most likely potential disasters - after a terrorist attack on New York City. But by 2003 the federal funding essentially dried up as it was drained into the Iraq war. By 2004, the Bush administration cut the corps of engineers' request for holding back the waters of Lake Pontchartrain by more than 80%. By the beginning of this year, the administration's additional cuts, reduced by 44% since 2001, forced the corps to impose a hiring freeze. The Senate debated adding funds for fixing levees, but it was too late.
--Sidney Blumenthal
Read the rest in Guardian Unlimited | Special reports | Katrina comes home to roost
One thing that scares me about the future of New Orleans is that FEMA and OSHA have gained a reputation in other disasters for single-handedly bulldozing property in order to pave the way for rebuilding and relocation. They're considered extremely high-handed and imperious, and I'm worried that they will simply declare entire neighborhoods "uninhabitable" and bulldoze them, paving the way for "re-development," which would reduce New Orleans to a ranch-style carbon copy of the rest of America -- combine that with the recent Supreme Court decision on eminent domain for commercial viability, and it seems like a likely enough scenario. Such an outcome would be a fate worse than death for a city with the (now waterlogged) beauty of New Orleans. Although it's not a priority YET, I hope soon enough that there's a campaign to prevent FEMA and OSHA from doing such violence to our great city.
--Nabil Al-tikriti
Read the rest in TruthTalkzIRAQ
I always found it irritating if new software required my customers to upgrade their JRE: if you balance the inconvenience of upgrading for several thousand customers against the inconvenience of developing in a slightly older version for a handful of developers, you may come to the conclusion that the customer interest carries more weight.
--Stephen Winnall on the Java Developers mailing list, Saturday, 27 Aug 2005 23:25:08
Sony acquired a relatively tiny entertainment company and it started to massively screw up. When MP3 rolled around and Sony's walkman customers were clamoring for a solid-state MP3 player, Sony let its music business-unit run its show: instead of making a high-capacity MP3 walkman, Sony shipped its Music Clips, low-capacity devices that played brain-damaged DRM formats like Real and OpenAG. They spent good money engineering "features" into these devices that kept their customers from freely moving their music back and forth between their devices. Customers stayed away in droves.
Today, Sony is dead in the water when it comes to walkmen. The market leaders are poky Singaporean outfits like Creative Labs -- the kind of company that Sony used to crush like a bug, back before it got borged by its entertainment unit -- and PC companies like Apple.
That's because Sony shipped a product that there was no market demand for. No Sony customer woke up one morning and said, "Damn, I wish Sony would devote some expensive engineering effort in order that I may do less with my music." Presented with an alternative, Sony's customers enthusiastically jumped ship.
--Cory Doctorow
Read the rest in Cory Doctorow: Microsoft Research DRM talk
Evolution is a robust theory, in the scientific sense, that has been tested and confirmed again and again. Intelligent design is not a theory at all, as scientists understand the word, but a well-financed political and religious campaign to muddy science. Its basic proposition - the intervention of a designer, a k a God - cannot be tested. It has no evidence to offer, and its assumptions that humans were divinely created are the same as its conclusions. Its objections to evolution are based on syllogistic reasoning and a highly selective treatment of the physical evidence.
--Verlyn Klinkenborg
Read the rest in Grasping the Depth of Time as a First Step in Understanding Evolution
More than 825 million Java-enabled smart cards have been issued. Java is also a key player in the mobile space with 579 million Java-enabled mobile devices shipped. On the desktop, Sun claims that there are more than 650 million desktops with Java software. On the development side there are 4.5 million Java developers and 22 Java-compatible application servers.
--Sean Michael Kerner
Read the rest in Java Turns 10
Actually, SWT was largely born of a desire to create decent client- side applications, period. Client-side applications that exhibited standard platform behaviour.
--Bill Hutten on the java-dev mailing list, Sunday, 5 Jun 2005 19:04:23
I think it's pretty obvious that the Java community lacks creativity when it comes to product names. We really should stop naming our products "JSomething" or "Something4j".
--Janek Schwarz
Read the rest in The Wannabe Java Rockstar: Alternatives to Java Native Interface (JNI)
In programming these days, cheaper isn't about price, it's about mental effort.
--Jason Hunter
Read the rest in Servlets.com Weblog: The Innovator's Dilemma: It's Happening to Java
It's my experience that neither users nor customers can articulate what it is they want, nor can they evaluate it when they see it.
Neither the people who buy software nor the people who use it have the capability of visualizing something as complex as the behavior of software. They also don't have the ability to analyze what appropriate behavior is.
Now, I think that there are two sides to software—there's the side that touches the hardware, the central processing unit and peripherals, and it has one type of defining behavior—you know, it's fast and error-free and deterministic. Then on the other side, there's the human side, and humans are slow and error-prone and they're inferential and judgmental and emotional. In my experience, the skills that make you good at one of those things are no help at all on the other thing.
So, what happens is you take professional logicians—programmers—and they will look at the problem from that logical point of view. They'll look at it from, "How do we structure this code? They'll look at, "What is the code that I have to build?" Then when they say, "Let's look at the human issues," they bring those same logical tools to the party.
On the other side, you have the customer and/or user, and they tend to do what we call "automating the pain." They say, "What is it we're doing now? How would that look if we automated it?" Whereas, what the design process should properly be is one of saying, "What are the goals we're trying to accomplish and how can we get rid of all this task crap?"
When you put those two constituencies together, they come up with a solution that is better than not having those two constituencies together, I grant that. But I don't believe that it is a solution for the long term; I believe that defining the behavior of software-based products and services is incredibly difficult. It has to be done from the point of view of understanding and visualizing the behavior of complex systems, not the construction of complex systems.
--Alan Cooper
Read the rest in Extreme Programming vs. Interaction Design
I don’t accept the currently fashionable assertion that any view is automatically as worthy of respect as any equal and opposite view. My view is that the moon is made of rock. If someone says to me “Well, you haven’t been there, have you? You haven’t seen it for yourself, so my view that it is made of Norwegian Beaver Cheese is equally valid” - then I can’t even be bothered to argue. There is such a thing as the burden of proof, and in the case of god, as in the case of the composition of the moon, this has shifted radically. God used to be the best explanation we’d got, and we’ve now got vastly better ones. God is no longer an explanation of anything, but has instead become something that would itself need an insurmountable amount of explaining. So I don’t think that being convinced that there is no god is as irrational or arrogant a point of view as belief that there is. I don’t think the matter calls for even-handedness at all.
--Douglas Adams
Read the rest in An Interview with Douglas Adams, Winter 1998
SLOC is the most misused metric. I understand the desire for managers to be able to measure productivity, but SLOC basically measures typing volume. It doesn't factor in reuse, defects or design quality.
--Brian Sletten
Read the rest in Vanward Technologies [ Interview with Bosatsu Consulting's Brian Sletten ]
A few programmers like to put their public API in one package and their private implementation in another. They attempt to hide the "private" package from the client by not publishing its API. From a security viewpoint, exposing your private package to your public package inherently exposes it to everyone else (including the client). This may fly for application code, but you must hold reusable libraries to a higher standard. Java provides no way to say, "make foo public, but only for this one other package." In addition, splitting your public API and implementation into two different packages confines you to class granularity, whereas package scoping enables you to mix public and package-private members in the same class.
--Bob Lee
Read the rest in Bob Lee's Blog: Package Scoping And Unit Testing
the fact that SWT embraces the operating systems makes it attractive to people who believe that native widgets are essential. Windows programmers who were considering C, C++, MFC, ATL or even C# for their next project are looking at Java and SWT. Open source programmers also like the fact that when they use SWT, they are really leveraging technologies like GTK and their work can be compiled easily to native code using GCJ.
--Steve Northover
Read the rest in Desktop Java with SWT: an interview with Steve Northover
When I was at Microsoft, the prevailing internal assumption was that:
1) Platforms were great because they were "black holes" meaning that the more functionality they had, the more they sucked in users and the more users they had the more functionality they sucked in and so, it was a virtuous cycle.
2) To get this functionality, they had to be as extensible as possible so that extensibility, not ease of development was the priority for the API's.
3) Since the rest of us often found aforesaid API's complex/arcane, and since the rest of us built the "apps" that the corporations used, there needed to be a layer above the API's called a Framework which hid the complexity and provided a kindler simpler gentler programming paradigm. (Think VB or MFC)
4) If everyone who could code could use this Framework, then they would build a plethora of applications locked into the platform and, hey presto, "stickiness". Thus building an IDE and a Framework was the sine qua non of a platform even if it lost tons of money.
--Adam Bosworth
Read the rest in Adam Bosworth's Weblog: What is the platform?
the Java bridge is a wonderous piece of software. Enabling developers to write Cocoa apps in Java was a hard problem, and the programmers who created the bridge are among the best in the world. I think that it was a clever move for Apple to develop it and that it makes a nice bullet-point on a PowerPoint presentation. That said, I would never advise a client to write a Cocoa application in Java. Cocoa is a very elegant framework when used with Objective-C. Everything becomes buggy, slower, larger, and less documented when you write it in Java.
--Aaron Hillegass
Read the rest in Big Nerd Ranch
gratuitous use of HashMaps has always been a sign of a weak design.
--Rick Carson
Read the rest in Ken Arnold's Blog: Generics Considered Harmful
"hi" or "low" ASCII are misleading terms for "not ASCII". When someone says "high ASCII" what they most often meant historically was specifically some character set, such as "the Commodore 64 character set", "the MS-DOS character set", "the Atari character set", or "the MacRoman character set". ie., it is an ambiguous term that can lead to misunderstanding.
Worse, in the case of Mac programming, the speaker often really meant "I'm assuming it's MacRoman" when they in fact were wrong.
Furthermore, most of the interesting modern character sets / encodings do not store all characters in a single byte, yet the term "high ASCII" at least historically almost always implied "the values 128-255, and stored in a single 8-bit byte, which, conveniently, could also store all of the ASCII values".
In this day-and-age we have some really useful and commonly available character sets and encodings with specific names, and it's more useful to know exactly which one is under discussion and to remove room for erroneous assumptions about the encoding or the storage size. Or, at the very least, it's important to say "non-ASCII" when you mean "anything other than ASCII".
--Chris Page on the applescript-users mailing list, Wednesday, 22 Jun 2005 01:32:33
Look for places where the program does the same conceptual thing, in different ways (say, by iterating versus by recursion, or by columns versus by rows, doing steps in different orders, etc). Pick what seems the cleanest way, and change all the other places to use it. Doing the same thing the same way several times, is clearer than doing the same thing different ways multiple times.
--Steven J. DeRose on the xml-dev mailing list, Saturday, 5 Mar 2005 10:11:19
It is amazing and sad that picking between Linuxes is based on something as narrow as support for graphics chips. And it also explains why so many just get Macs.
--Paul Hoffman on the cpb mailing list, Sunday, 8 May 2005 13:51:50
At Atlassian, the policy is that you're allowed to develop using whichever tools you feel work best for you. Everyone in the office ends up using IDEA. Occasionally, someone will start who prefers (and uses) Eclipse, but they usually switch after a few weeks.
--Charles Miller
Read the rest in Smalltalk Tidbits, Industry Rants: Why progress is so slow
The continuing growth in on-die cache sizes is an incredibly important and highly applicable benefit for many applications, simply because space is speed. Accessing main memory is expensive, and you really don’t want to touch RAM if you can help it. On today’s systems, a cache miss that goes out to main memory often costs 10 to 50 times as much getting the information from the cache; this, incidentally, continues to surprise people because we all think of memory as fast, and it is fast compared to disks and networks, but not compared to on-board cache which runs at faster speeds. If an application’s working set fits into cache, we’re golden, and if it doesn’t, we’re not. That is why increased cache sizes will save some existing applications and breathe life into them for a few more years without requiring significant redesign: As existing applications manipulate more and more data, and as they are incrementally updated to include more code for new features, performance-sensitive operations need to continue to fit into cache. As the Depression-era old-timers will be quick to remind you, “Cache is king.”
--Herb Sutter
Read the rest in The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
With respect to other open source projects -- FreeBSD remains both a large producer and consumer of open source, generating open source foundations for many other open source projects, as well as consuming the output of many other open source projects. In the closed source world, competition is a powerful force for change, as it is in the open source world. However, in open source world, the opportunities for collaboration and cooperation are far greater than in the closed source world, so we have the opportunity to share ideas and code much more easily, and as a result benefit from that exchange. A point that is sometimes lost when the "Open Source Community" and "Open Source Software Stacks" are discussed is the importance of both competition and cooperation in its success. Open source makes possible a market place of ideas and the incarnation of those ideas in source code. We're all better off for the existence of many competing (and cooperating) software projects, and let's hope we never move away from a world where that is the case.
--Robert N M Watson
Read the rest in Interview: Looking at FreeBSD 6 and Beyond
Our goal was really more to create a healthy market for software into which we could sell hardware. And if you go back seven or eight years, the sort of nightmare scenario for us was one where every machine was required to run Windows NT and there was no way that, for a variety of reasons, we could really build Windows NT machines in any sort of competitively useful way. And what Java has done for Sun is really make the market for hardware and the market for software somewhat decoupled so that you can make a software decision independent of a hardware decision. We had many decision points along the road as to whether we should do things that would further direct revenue gain from selling software versus indirect revenue through making the software market healthy. And we tended to predominantly favor making the market healthy because there's the general strategic view, that having a small part of a big pie is better than having a big part of a small pie. And so we tend to do whatever we can to make the pie bigger even if we don't own the whole thing. And I think that that has actually worked well.
--James Gosling
Read the rest in Sun's Gosling On the Java Evolution - VARBusiness.com - 5/8/03 10:22:42 AM
Unfortunately, many people are using JUnit for more than unit testing, and some of JUnit's design decisions (such as not maintaining state between method invocations and not supporting dependent test methods) make it really hard to use JUnit for integration or acceptance testing.
--Cedric Beust on the junit mailing list, Wednesday, 4 May 2005 07:37:19
I was really shocked about Cisco’s patent for their ‘fix’ of the issue. It was a clever idea for a fix but it really broke my trust in them. The vendors (like Cisco) want Security Researchers to notify them about vulnerabilities before going public. But Cisco took advantage of this ‘blackout’ period when they should have been fixing the issue, they decide to issue a patent. It is almost like insider trading on Wall Street and it has bugged me more and more as time goes on.
--Paul Watson
Read the rest in Whitedust: Interview: Paul Watson
The movie opens July 29, in Los Angeles and New York, then in a few other cities. If you have only AMC theaters in your town, you're out of luck, because that chain — soon to become the country's second largest — won't show it. The limited release has less to do with the iron fist of censorship than with mass-market taste and media concentration. AMC and its competitors have done to movies what ConAgra has to farming, dispensing cinematic corn and soybeans to multiplexes across the continent and world. Small, strange films like "The Aristocrats" are shown mostly on America's coasts, at least until it's time for the DVD.
--Lawrence Downes
Read the rest in You'll Laugh. You'll Cry. You'll Look Puzzled.
If you're producing a public API, something for people to extend, you really should make everything final that doesn't have a reason to be non-final: It's a genie you can't put back in the bottle - you can't final something that wasn't final when you first published your API, without risking making people's subclasses uncompilable. You can un-final it if there's a reasonable use-case for overriding a method that was final before. In short, not finaling methods in your API means you may box yourself in later - to the point of needing to do things like check if a subclass overrides a method or not and do something different depending on the result.
--Tim Boudreau on the java-dev mailing list, Friday, 04 Feb 2005 18:16:11
If you give the record companies a DRM scheme that goes from 1 (open) to 10 (unusably locked down), they will start at 14 and lobby Congress to mandate that it can be turned up higher by default.
--Charlie Demerjian
Read the rest in Intel to cut Linux out of the content market
Please remember that the design of a programming language consists not just in a laundry list of features, but also in making judicious choices of what to *omit* and, more importantly, in establishing design principles that are easy to understand.
Java does not support decimal arithmetic well, nor classic coroutines, nor full IEEE 754 floating-point arithmetic, nor computed GOTO, nor Fortran-style (or Common Lisp-style) FORMAT operations, nor automatic backtracking, nor pattern matching, nor unification of PROLOG-style expressions, nor tail calls, nor a host of other features. I've been beat up pretty hard over some of these. Some of them I even argued for myself in the early days of Java (such as tail calls). But others simply aren't needed for the clientele Java is trying to serve.
--Guy Steele
Read the rest in Re: bindings and assignments was: Re: continuations
During the late 1980s and early 1990s we let Solaris get encumbered as we were trying to build features and compete with mainframe OSes. Plus the fact that we did the AT&T Unix System V Release 4 base, which required us to buy our way out of the SCO license. It just occurred to us, probably six or seven years ago, that we can't do what we want to do with the source code here. We spent a long, long time getting the encumbrances out. They kind of spaghettied themselves deeply into the operating environment. The one thing we learned was just don't let the stuff get encumbered again. That was the mistake we made, by going too fast too quick. By going a little slower and letting the community help, we wouldn't have gotten encumbered. We would have been in better shape if we'd kept it open source along the way.
--Scott McNealy
Read the rest in McNealy on message
I've used both SWT and Swing to develop client-side Java applications on and for the Mac - although nothing particularly complicated. Swing is complex as hell for anything other than trivial applications, and has a deserved reputation for bugs, performance problems, and lack of platform fidelity. SWT is much simpler, faster, and has the enormous advantage of actually using native UI widgets. This advantage is less obvious on the Mac, interestingly, because Apple uses native peers in it's Swing implementation.
--Bill Hutten on the java-dev mailing list, Sunday, 5 Jun 2005 19:04:23
I tell you, freedom and human rights in America are doomed. The U.S. government will lead the American people in -- and the West in general -- into an unbearable hell and a choking life.
--Osama bin Laden
Read the rest in CNN.com - Bin Laden's sole post-September 11 TV interview aired - February 5, 2002
The most important aspect of any module is not how it implements the facilities it provides, but the way in which it provides those facilities in the first place. If the module's API is too awkward, or too complex, or too extensive, or too fragmented, or even just poorly named, developers will avoid using it. They'll write their own code instead. In that way, a poorly designed module can actually reduce the overall maintainability of a system.
Designing module interfaces requires both experience and creativity. Perhaps the easiest way to work out how an interface should work is to "play test" it: to write examples of code that will use the module before implementing the module itself. These examples will not be wasted when the design is complete. You can usually recycle them into demos, documentation examples, or the core of a test suite. O'Reilly Open Source Convention 2005.
The key, however, is to write that code as if the module were already available, and write it the way you'd most like the module to work
--Damian Conway
Read the rest in Perl.com: Ten Essential Development Practices
I don't know how to ease into this gently. So I'll just spit it out.
Generics are a mistake.
This is not a problem based on technical disagreements. It's a fundamental language design problem.
Any feature added to any system has to pass a basic test: If it adds complexity, is the benefit worth the cost? The more obscure or minor the benefit, the less complexity its worth. Sometimes this is referred to with the name “complexity budget”. A design should have a complexity budget to keep its overall complexity under control.
Generics are way out of whack. I have just finished (well, nearly) my work in the fourth edition of The Java Programming Language. I am glad to say that David Holmes, not I, was the one who covered generics. Just reviewing it and reading the specifications was enough to put my brain through a cuisinart stuck on “pulse”.
--Ken Arnold
Read the rest in Ken Arnold's Blog: Generics Considered Harmful
one of the fundamental problems that some coders have with scoping declarations actually stems from poor planning of their package hierarchy. In fact, conceptualizing a package system as a hierarchy seems like the start of the problem, because "child" packages have the same relationship to their "parent" packages that any other package has -- in other words, it's not a hierarchy in anything more than name. Classes in com.example.ui.util don't have any special privileged access to classes in com.example.ui that any other class in any other package might have. But because the package naming conventions look like a hierarchy, it can be tempting to just start creating a hierarchy of folders/packages and start throwing classes into them based on where they "feel" like they belong.
--Erik Price
Read the rest in Bob Lee's Blog: Package Scoping And Unit Testing
If ever there was a time to learn Swing, its probably now. Most of the bugs have been cleared up for you, the speed problems are mostly gone (though there are still issues), and things work mostly the way they are advertised to do so. Also the documentation is excellent.
--Henry Story on the java-dev mailing list, Monday, 6 Jun 2005 11:38:13
The best way to start an open source project is with code. Working code. Hack away at home on weekends, maybe get a couple of friends to help you out, and don’t go public until you have something to show people that does something interesting, and that other people can use to build more interesting stuff on top of. You need this for a bunch of different reasons: it establishes the original contributor’s bona fides in the open-source meritocracy, it shortcuts all sorts of damaging debates about coding styles and architecture that can stop a project before it starts, and so on.
Most importantly, though: working code attracts people who want to code. Design documents attract people who want to talk about coding.