March 2003 Archives

William Grosso

AddThis Social Bookmark Button

I’ve been really distressed lately, about the Iraq war. It seems to me that there were ways to avoid the war, and that the debate which occured in this country was a confusing debate, which mostly focused on the wrong issues.


This is my attempt to think things through.


First. Let’s stipulate a few things, just to get them out of the way:

  • Saddam is a bad person and the current Iraqi regime is evil.
  • France is not evil, and was simply acting in its own best interest. No shame there.
  • “No blood for oil” is a vast over-simplification. So vast as to be utterly useless for reasoning.
  • The war will almost certainly be a great thing for Iraq. There won’t be that many civilian deaths (from coalition troops at least), and the net number of civilian deaths (e.g. when you factor in the regime’s known history of cannibalizing its population and the effect of the sanctions) will decrease. From a humanitarian point of view, the war is a good thing.
  • Iraq has chemical and biological weapons.
  • It is possible to be for the war and still be a good person.
  • It is possible to be against the war and still be a good person.
  • Most people who are either for or against the war are good people.


Now, there are three basic justifications being given for the war:

  1. Humanitarian. This is the “let’s free the Iraqi people from their shackles” argument, in all its forms.
  2. Self Defense. This is the “Iraq would eventually use chemical and biological weapons against the US.
  3. Dominos of Freedom. This is the “Freeing Iraq is the cornerstone of a profound change in the mideast, and will lead to a wave of regime change that will improve the lives of everyone in the area” argument.


The question is: are any of these any good? Let’s look at them in order.

The Humanitarian Defense.


This one fails in the short term for a very simple reason: the war will cost some $75 billion. The question is not whether Iraq will be better off as a result of the war (we’ve stipulated that it will be), but whether we could do better things (from a humanitarian perspective) with that $75 billion. And the answer is: yes, we could do much better. You don’t have to think very hard to find problems in the world today where the money could make a profound difference.


Of course, I’m being simplistic here, and assuming Saddam wasn’t about to spread his evil past his borders. It seems reasonable to assert that he was “mostly contained” (e.g., he could send rogue agents out to cause emotionally significant but statistically neglible events to occur, but that he wasn’t about to invade other countries again) though. That is, I’m assuming we know the scope of Saddam’s evil, and it’s not that big compared to the other problems we could solve (or at least work on).


In the long term, it’s a harder question. Suppose we no longer have to enforce the sanctions (costing $x a year). That money gets freed up. And suppose that Saddam and his regime are no longer draining the Iraqi economy of all vitality (so that not only Iraq is helped, but the Iraqi people become more productive members of the world’s economy). Maybe this is such a good thing that making war on Iraq turns out to be the best humanitarian investment. I doubt it, and I think no-one seriously believes it, but I also have to say I’ve never heard anyone seriously do a cost-benefit analysis of the war on Iraq from this perspective.


I find that last point particularly disturbing. If you’re going to claim humanitarian reasons for the war, aren’t you obligated to say why this use of funds is the best use of funds from a humanitarian perspective? I haven’t seen any attempts to do that, and my conclusion is that, while the war will be good for Iraq, the humanitarian effects won’t spread beyond the Iraqi borders and aren’t particularly impressive, given the amount of money being spent. The humanitarian argument is mostly an emotional red-herring.


As a side note, I also find the idea of sending the US Army out on a large-scale humanitarian mission disturbing. It’s one thing to tell a soldier to fight to defend the nation (that’s in the job description), it’s quite another to tell someone to fight on behalf of a third party for humanitarian reasons (that’s not what the soldiers signed up for).

Self Defense


This argument basically says that the world changed after 9/11. That terrorism (terrorist tactics) and modern weaponry are so potent a combination that we are obligated to eradicate potential combatants. It’s an interesting claim, and one that scares me because it relies on such an overwhelming assumption of knowledge: in order to make this claim effectively, you really have to know a lot, and be very confident of your deductions.


But, it seems to me that the proper response to an event like 9/11 is a combination of the following three things:

  1. Immediate and overwhelming retaliation. Whomever did this, must be punished. And punished in a large-scale and somewhat irrational way, so that people understand the basic point: actions have consequences and actions like 9/11 have enormous consequences (think Rome and Carthage. Did Rome really need to salt the earth? No. But, what the hell, it made the point clear). I think the ongoing work in Afghanistan, and the continued hunting of terrorists, satisfies this.
  2. Long term investigation and destabilization. It’s not enough to retaliate locally. You need to press the investigation and disrupt the organizations that planned and arranged for the attack. And I think the US has been doing a good job at this as well.
  3. Make sure that conflicts stay at the right level and prevent conflicts from escalating Every conflict has its natural level, and an appropriate set of participants. And almost every conflict starts out small (Hannibal Lecter, in the Silence of the Lambs, points out to Clarice Starling that coveting beings at home: we first begin to covet the things we see every day. So too with conflicts: conflicts begin with daily interactions, and local ones. Friction followed by border skirmish followed by …..).

    It follows that, if Iraq had chemical or biological weapons, Iraq would use them locally first (and, indeed, such weapons were deployed against the Kurds, to crush an uprising). It also follows that, from the point of view of self-defense, the problem is mostly a local or regional one. The countries in the area mostly likely to be affected are the countries with the most at stake, and are the countries that ought to be taking ownership of the problem. US policy ought to encourage local ownership of problems, not rely on the US military as a cudgel to solve them.


    As an added bonus, nearby countries are likely to be much better at assessing the problem (they understand the culture much better, frequently speak the same language, have significant ethnic overlaps, etcetera). When they take action, they’ll have greater knowledge and be more confident of their deductions.


    This dovetails nicely with my basically isolationist beliefs– I would much rather problems be solved at the regional level than at the global level.

Dominos of Freedom


I haven’t seen any serious arguments for, or against, this. It’s mostly brought up in the tail end of debates, as a sort of ginsu-style added bonus. “And, if you act now, we’ll throw in the eventual liberation of Iran and Syria via popular actions at no extra cost.”


As you can tell by my summary, I’m skeptical of this argument.

Got Information?


I’m not sure there are any conclusions here. I don’t know how much the sanctions were costing each year to enforce, and that matters for a cost-benefit analysis of the humanitarian effort.


If there were evidence (or even strong arguments) that Iraq was planning on invading its neighbors in the near term, that would sway things as well (and I know of very little evidence about that).


In addition, if Syria really was helping Iraq hide chemical weapons (as some reports have indicated), then that’s an indication that war was probably a right decision as well.


And, of course, now that we’re in it, there’s really no option but to win it. And then evaluate whether it was a good idea, and vote appropriately.

Got information? Please share.

Steve Anglin

AddThis Social Bookmark Button

Related link: http://conferences.oreillynet.com/etcon/

Here’s a 2003 O’Reilly Emerging Technology Conference guide for Java programmers, developers, IT managers, and other participants.

Java Tutorials

The following are some Java tutorials to attend.

Understanding the Web Services Stack

Track: Emerging Technology Tutorial
Date: Tuesday, April 22
Time: 8:30am - 12:00pm
Location: Stevens Creek

In this tutorial presented by Sam Ruby and James Snell of IBM’s Emerging Technologies Group, Ruby walks the audience through the entire stack of Web services specifications, starting from the bottom and working up. Topics include XML, SOAP, WSDL, UDDI, WS-Inspection, WS-Security (and all related specs), WS-Transactions, WS-Coordination, BPEL4WS, and a survey of things to come. He focuses on answering common questions, debunking myths, bringing the universe into alignment, and explaining exactly why the various specifications exist and how they complement one another. And, if nothing else, at least one audience member will walk away with a free book.

Building Rich Internet Applications with Flash

Track: Emerging Technology Tutorial
Date: Tuesday, April 22
Time: 1:30pm - 5:00pm
Location: Stevens Creek

In this tutorial, learn to transform a regular HTML interface into a more effective and interactive user experience using Macromedia Flash MX. Specifically, Stallons covers:

  • The Flash authoring environment and the ActionScript language
  • Using, manipulating, and customizing pre-built Flash user interface components
  • Retrieving dynamic data using Flash Remoting MX – to access your own ColdFusion, Java, or .NET server-side functionality
  • Using Flash Remoting MX to access web services from Flash
  • Adding rollovers and drag and drop to your interfaces
  • Persist data on the client using local shared objects

    Aspect-Oriented Programming with AspectJ

    Track: Emerging Technology Tutorial
    Date: Tuesday, April 22
    Time: 1:30pm - 5:00pm
    Location: Camino Real

    AspectJ (http://eclipse.org/aspectj) is a seamless aspect-oriented extension to Java. It can be used to cleanly modularize the crosscutting structure of concerns such as exception handling, security enforcement, testing, synchronization, performance optimizations, and resource sharing.

    When implemented in a non-aspect-oriented fashion, the code for these concerns typically becomes spread out across entire programs. AspectJ controls such code-tangling and makes the underlying concerns more apparent, so programs are easier to develop and maintain.

    Bodkin’s tutorial introduces Aspect-oriented programming and shows how to use AspectJ to implement crosscutting concerns in a concise, modular way. He also demonstrates and uses AspectJ’s integration with IDEs such as JBuilder, NetBeans, Emacs, and Eclipse, in addition to the core AspectJ tools.

    Attendees should have experience doing object-oriented design and implementation, and should be able to read Java code. No prior experience with aspect-oriented programming or AspectJ is required.

    Java Sessions

    Currently, there are no specific Java sessions available to attend. However, there are several interesting Web services sessions that may of be use to Java Web services developers in the following tracks.

    These tracks contain sessions on Amazon Web services and more. While I am disappointed that there are currently no specific Java sessions, maybe there will be when the conference starts. Certainly, there are emerging Java technologies such as JavaServer Faces, emerging JAX API, emerging Java Web services API other than JAX, JMX Remote, etc.

    Certainly, the 2003 O’Reilly Emerging Technology Conference is worth attending as a Java developer these days. I hope this guide or preview helps you in your decision to attend. For more on tutorials and sessions in general beyond Java, click here.

    Will you be attending this conference? As a Java developer, what would you like to see and do there?

  • AddThis Social Bookmark Button

    Some programmers simply refuse to test. This baffles me but it’s true. Here are some of their excuses:

    • It’s too hard
    • I don’t know how
    • I have to get this done now
    • The code I am writing is simple
    • It takes too long

    I hear at least one of these excuses per week on my current project. Unfortunately we are not pair-programming, so individual programmers must be self-motivated to write tests. There are only a handful of programmers (less than 3 out of about 30) that actually write tests. I believe pair programming bridges the gap between the testers and non-testers, forcing non-testers to become testing ninjas.

    I agree that testing is hard and often takes longer to complete a feature. The benefit of having a complete test suite outweighs the alternative, which is not to write tests at all.

    Here are a few ways I try to motivate programmers to write tests (with some success):

    • When they ask for help, I ask them to explain it with a test
    • Sit down with them (temporarily pair up) to implement the feature test-first
    • Constantly praise (to programmers and management) how writing tests makes programming easier and more fun
    Steve Anglin

    AddThis Social Bookmark Button

    Related link: http://java.oreilly.com

    The following are new and upcoming Java books edited and published by O’Reilly & Associates in March and anticipated for April:

    1. Java Extreme Programming Cookbook

    Brimming with over 100 “recipes” for getting down to business and actually doing XP, the just released Java Extreme Programming Cookbook doesn’t try to “sell” you on XP; it succinctly documents the most important features of popular open source tools for XP in Java–including Ant, Junit, HttpUnit, Cactus, Tomcat, XDoclet–and then digs right in, providing recipes for implementing the tools in real-world environments.

    Each recipe offers solutions that help you put an extreme programming environment together: then provides code for automating the build process and testing. Although the time saved using any one of these solutions will more than pay for the book, Java Extreme Programming Cookbook offers more than just a collection of cut-and-paste code. Each recipe also includes explanations of how and why the approach works, so you can adapt the techniques to similar situations.

    2. Java Data Objects (April)

    This book, written by the JDO Specification Lead and one of the key contributors to the JDO Specification, is the definitive work on the JDO API. Java Data Objects gives you a thorough introduction to JDO, starting with a simple application that demonstrates many of JDO’s capabilities. It shows you how to make classes persistent, how JDO maps persistent classes to the database, how to configure JDO at runtime, how to perform transactions, and how to make queries. More advanced chapters cover optional features such as nontransactional access and optimistic transactions. The book concludes by discussing the use of JDO in web applications and J2EE environments.

    3. Mac OS X for Java Geeks (April)

    Mac OS X for Java Geeks delivers a complete and detailed look at the Mac OS X platform, geared specifically at Java developers. Programmers using the 10.2 (Jaguar) release of Mac OS X, and the new JDK 1.4, have unprecedented new functionality available to them. Whether you are a Java newbie, working your way through Java Swing and classpath issues, or you are a Java guru, comfortable with digital media, reflection, and J2EE, this book will teach you how to get around on Mac OS X. You’ll also get the latest information on how to build applications that run seamlessly, and identically, on Windows, Linux, Unix, and the Mac.

    As a Java developer focusing on GUI design and development myself, I am very much looking forward to this book. This along with O’Reilly’s Java Swing, 2nd Ed. will provide a more complete library for client-side Java development for Mac OS X. It certainly is a good start.

    What other Java books would you like to see from O’Reilly in the near term?

    Dion Almaer

    AddThis Social Bookmark Button

    Related link: http://www.freeroller.net/page/rickard/20030319

    What is with companies trying to patent silly things. I think I could patent “breathing” in the US, and would be able to charge everyone for doing so.

    Xerox - involved in AspectJ - is now trying to patent AOP. Shoot. I should have patented OOP!

    I know large companies like Xerox have lawyers on retainer, and hence need to get them to do work… but come on guys. There are better ways to go about this.

    Rickard has looked at some of the verbiage too, so check out his comments on the matter

    William Grosso

    AddThis Social Bookmark Button

    Related link: http://www.cs.sonoma.edu/cs_dept/events/colloquium.html

    One of California’s least appreciated resources is the California State University (CSU) system. It’s a network of local colleges which offer high quality education at a great price (both for traditional undergraduates and for life-long dabblers like me).


    I also like to give colloquium talks at them. This time ’round, I’ll be talking about some underappreciated aspects of Java, and why I think it’s currently the best programming language around.


    P.S. Want me to speak to your college or user group? As long as you’re in Northern California, I’d be glad to.

    Marc Hedlund

    AddThis Social Bookmark Button

    Related link: http://www.mirror.co.uk/news/allnews/page.cfm?objectid=12713155&method=full&site…

    This article from a British paper (via interesting people) claims that President Bush pulled out of a speech to the EU Parliament because organizers refused to guarantee him a standing ovation. Here’s hoping this is a false report, but it would certainly fit the pattern of Mayberry Machiavellism.

    When Bush was campaigning, much was made about his MBA and experience in the corporate world. Apparently he’s making a classic mistake from that world, much as corporate managers do: confusing obedience for respect. Many managers believe it is their job to get an employee to do what they say; that is, to obey them. In fact the best managers resort to direct orders only when all else has failed. It is far more effective to earn the respect of the people who work for you, and tell them what you want them to do. If employees respect the manager enough, they will make the manager’s goals their own goals, and do a better job than if ordered.

    President Bush “manages” the world’s most powerful nation. If he pushes hard enough and bribes aggressively enough, perhaps he can compel the EU Parliament to stand and slap their hands together for him. A standing ovation, though, can only be earned.

    Dion Almaer

    AddThis Social Bookmark Button

    Tom Copeland has written a nice piece on the open source CPD (copy/paste detector). Having tools like this can really help out, and seeing the amount of copy/paste in the JDK source itself is scary.
    However, what do I *really* want tools to find out…

    I want them to go above and beyond “this code exists in Foo.java and Bar.java”. I want it to tell me “This piece of functionality has been duplicated”. In large projects, many core utilities get rewritten by different people.

    For example, when working on a system that interfaced with a COBOL application on some of IBMs big iron, we found that a function that cleared the screen had been rewritten more times that you could believe. Over the many years, when new employees came in, they just wrote their own functions to work with.

    It would be great if you wrote some code for an app, and were told by a program “*ahem*, I know what you are writing here, but just use the functionality that Bob wrote 5 years ago located here”, and “Interesting, how about you refactor code X instead of reinventing the wheel there mate”.

    Now that will be cool!

    Marc Hedlund

    AddThis Social Bookmark Button

    I was reading a computer science research paper today in which the authors frequently referred to how Linux operated with respect to their thesis. They explicitly stated in several places, and left implicit in others, that they were assuming other Unices or even all other OSes worked the same way, when in fact that assumption was wrong in at several cases (Windows being the obvious “outlier,” if you can call it that, calling their ideas about operating system security into question). I found myself wondering how much the existence of Linux as a mainstream, open-source operating system is affecting computer science research, at least with respect to operating systems?

    Linux is freely available and runs on commodity hardware, suiting academic budgets well. Its source is available, so a question about OS underpinnings can easily and definitively be discovered. And as a UNIXy system, it is familiar to and comfortable for computer science academics in a way Windows is not. Together these qualities make it very attractive to a researcher trying to prove a point.

    (Of course a lot of these things are not new — look at the availability of Berkeley UNIX and others long before Linux. Yet as more and more commercial entities — even OS vendors like IBM — adopt Linux, its credibility as a “reference implementation” will grow. )

    In general I think this is a good trend and one very well suited to, for instance, the goals of the Free Software Foundation — providing source provides education. I hope, though, researchers remember that there are other OSes, and other ways of thinking, than the ones most readily available to them.

    Owen Densmore

    AddThis Social Bookmark Button

    Introduction: Why Java GIS?

    The other day I had a treat: a senior researcher at Los Alamos dropped by for a chat.  He showed me the latest work on project he’s working on, Terrorism Modeling.  This is done via Agent Modeling systems like Ascape, Swarm, and RePast.  These agent modeling systems build “worlds” populated by mobile entities (agents) having their own rule sets for establishing their behavior.  The also live in “spaces”, environments that they move around in and interact with.

    Typically the spaces the agents occupy are simple grids, or graphs with edges and nodes.  So imagine my surprise when he showed me the latest model where the agents were moving around on a globe of the earth!  He could zoom in on a country where the cities were marked and the agents were visible, occupying a “layer” within the cartographic model.

    I was hooked!  I looked at the various Java based systems (there are several) and decided to focus initially on two of them: OpenMap  and GeoTools.  This reports on OpenMap ..  we’ll do GeoTools (and possibly others) in following reports.

    OpenMap: Beans Based Map Hacking

    The OpenMap Project is an open source, JavaBeans based programmers toolkit by BBN Technologies.  It is freely available, downloadable from their website.  They have an active mail list with very fast and friendly responses to difficulties you may run into.  Due to its being Beans based, it has a very clean “plug-in” model.

    Programmers use OpenMap in one of two ways: by augmenting the OpenMap Viewer application or by incorporating the OpenMap components directly into their own applications. You can see how people are using OpenMap.  

    A Tour: Planning a trip to Italy

    Here I’ll show just a few snapshots of using the OpenMap viewer to look at a trip to Italy from Santa Fe.  Note that I downloaded the viewer .. but you can also access it as an applet  or using Java Web Start via the OpenMap Demo page.

    OpenMap Viewer Gallery .. click on images for full size image



    OpenMap Viewer Initial View



    Zoomed into Santa Fe


    Orthographic View


    Distance Mode: Santa Fe to Italy


    Day/Night Layer


    Day/Night Mercator View

    The first image above is the OpenMap viewer just after startup.  In order to check the flight to Italy from Santa Fe, I first zoom into Santa Fe. Note the state boundaries are not present but I can add them by downloading the state boundaries from the Census database.  We’ll see a bit of this sort of map data later.  In the third image I’ve used the Navigation->Projection menu to select Orthographic view.  I rotated the map in the 5th image by clicking the mouse right around the tip of Greenland in order to get both the US and Europe in the same view.  I then chose MouseMode->Distance to measure the flight from Santa Fe to Rome.  This is done by clicking once on Santa Fe, dragging, and double-clicking on Rome.  The double-click ends the transaction, you can create several “hops” by clicking once, dragging again, and so on, creating a polygon.  Finally in the last two images I use the Layers->Day/Night item to see the time separation between Santa Fe and Rome, both with the Orthographic view and the “flat” Mercator view.

    Modifying OpenMap: Adding Your Layers and Diagrams

    You can do a great deal more with the viewer without actually programming.  For example, you can add new layers.  This is done by downloading the new layer’s data and JavaBean into the system and then modifying the openmap.properties file to include the new layer.  One example layer is the ETopo layer, adding depth imaging to the map’s oceans. I’ve also added the New Mexico counties to OpenMap using the free map data from the US Census Office. (Its a bit tricky: you need to run an OpenMap utility to create an index to the map data) You can also draw geographic figures on the map which remain after saving your map view.  In the drawing example I’ve also turned on the Cities layer.  Click the images for full size images.



    ETopo Layer

    New Mexico Layer


    Drawing Tool

    Programming with OpenMap

    Our examples above use the Viewer, both as it comes “out of the box”, and with minor configuration.  The OpenMap API is also very useable, either for writing beans/layers that integrate into the Viewer, or for including the OpenMap package into your own application directly.

    The OpenMap download is quite complete, with full JavaDoc for the API.  In terms of support, I’ve been impressed both with the sophistication of the user community and the promptness of the response to help requests on the OpenMap mail list.

    The Viewer itself is considered a sample application, com.bbn.openmap.app.OpenMap, consisting of only 79 lines of code.  The source for this and a similar layer sample, bbn.openmap.layer.test.TestLayer, is in the downloaded bundle. Both are well documented in the JavaDocs.  OpenMap also comes with a HelloWorld application in the examples directory.

    Summary

    What a nifty system!  OpenMap and other open source GIS systems show the maturity of GIS, and that it is becoming so universally available that it can be used in wildly different applications than originally envisioned.  We’re looking at a distributed PeerPhoto system, for example, that would allow a view of your pictures by where they were taken, or possibly where they are on the peer network.  Think of the Mac Finder having a “sort by place” as well as “sort by time”, or your Windows OutLook addressbook sorted spatially.  Google could add a “place” search criterion that you specified by dragging out a circle on the globe.   EBay could let you limit your searches to places you can drive to.  AOL could add a map to show where your buddies actually are.  Jon Udell shows a nice example with Marc Eisenstadt’s BuddySpace.

    Download OpenMap, and let me know what you think, both about it, and GIS applications you can think of.  I’ll press on into other systems and let you know what I find out.

    Your homework: Help us think of new and interesting uses of GIS and tell us about it!

    William Grosso

    AddThis Social Bookmark Button

    Related link: http://www.sdforum.org/p/calEvent.asp?CID=1010

    SDForum, a Silicon Valley based organization (that I volunteer for), is holding another Web Services Expo. Clocking in at a little over 6 hours, this one features talks from Intel, Oracle, Microsoft, Infravio, IBM, SUN, BEA, SAP, and a whole lot more. Basically, one-stop shopping to catch up on the latest wave in web services.

    Dion Almaer

    AddThis Social Bookmark Button

    I have been using Hibernate recently. It works, its simple, its powerful, XDoclet supports it, and of course… it is free. How can JDO compete with the likes of Hibernate and Castor on the “free” end, and CocoBase/TOPLink on the “not so free” end.

    I really want JDO to succeed. People have complained about the first spec, and most of it came down to the fact that OO database guys wrote it, and we need input from the OR mappers.

    I think the future of JDO will come down to JDO 2.x. So many people *want* to be able to use JDO. It is such a nice idea isn’t it? How can we make it work?

    • Get all of the parties involved
    • Work out the tough issues (TX, power queries, quality OR mapping)
    • Get buy in from the likes of Hibernate/Castor/Cocobase

    If these project supported JDO, and implemented the spec, I think it would be HUGE. If we don’t have support from at least some of these camps, then JDO will not reach its potential. What a shame that would be.

    Advertisement