%%% -*-BibTeX-*-
%%% ====================================================================
%%%  Bibtex-file{
%%%     author          = "Nelson H. F. Beebe",
%%%     version         = "3.19",
%%%     date            = "23 March 2007",
%%%     time            = "08:51:35 MDT",
%%%     filename        = "dr-dobbs-2000.bib",
%%%     address         = "University of Utah
%%%                        Department of Mathematics, 110 LCB
%%%                        155 S 1400 E RM 233
%%%                        Salt Lake City, UT 84112-0090
%%%                        USA",
%%%     telephone       = "+1 801 581 5254",
%%%     FAX             = "+1 801 581 4148",
%%%     URL             = "http://www.math.utah.edu/~beebe",
%%%     checksum        = "12873 17910 69923 638012",
%%%     email           = "beebe at math.utah.edu, beebe at acm.org,
%%%                        beebe at computer.org (Internet)",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "bibliography, BibTeX, Dr. Dobb's Journal,
%%%                        programming, software",
%%%     license         = "public domain",
%%%     supported       = "yes",
%%%     docstring       = "This is a bibliography of publications in
%%%                        Dr. Dobb's Journal: Software Tools for the
%%%                        Professional Programmer (CODEN DDJOEB, ISSN
%%%                        1044-789X) (formerly: Dr. Dobb's Journal of
%%%                        Computer Calisthenics and Orthodontia),
%%%                        published by Miller Freeman.
%%%
%%%                        This file covers the decade 2000--2009.  The
%%%                        companion files dr-dobbs-19*.bib cover
%%%                        earlier decades.
%%%
%%%                        From version 2.00 of this file, article
%%%                        coverage should be complete from 1982--date,
%%%                        although individual entries may have missing
%%%                        information.
%%%
%%%                        At version 3.19, the year coverage looked
%%%                        like this:
%%%
%%%                             2000 ( 272)    2003 ( 110)    2006 (   1)
%%%                             2001 ( 273)    2004 (   0)
%%%                             2002 ( 233)    2005 (   0)
%%%
%%%                             Article:        889
%%%
%%%                             Total entries:  889
%%%
%%%                        For subscription information, contact
%%%
%%%                             Dr. Dobb's Journal
%%%                             P.O. Box 56188
%%%                             Boulder, CO 80322-6188
%%%                             USA
%%%                             Tel: +1 800 456 1215, +1 303 678 0439
%%%                             FAX: +1 303 661 1885
%%%                             E-mail: editors at ddj.com
%%%                             WWW URL: http://www.ddj.com/
%%%
%%%                        Dr. Dobb's Journal has recently issued CD
%%%                        ROMs with the articles and software from
%%%                        1988--date, and also offers
%%%                        subject-specialized CD ROMs; see
%%%                        http://www.ddj.com/cdrom for ordering
%%%                        details.
%%%
%%%                        This bibliography has been collected largely
%%%                        from the publisher's Web site, with manual
%%%                        correction of article titles, and addition of
%%%                        page numbers.
%%%
%%%                        Spelling has been verified with the UNIX
%%%                        spell and GNU ispell programs using the
%%%                        exception dictionary stored in the companion
%%%                        file with extension .sok.
%%%
%%%                        BibTeX citation tags are uniformly chosen as
%%%                        name:year:abbrev, where name is the family
%%%                        name of the first author or editor, year is a
%%%                        4-digit number, and abbrev is a 3-letter
%%%                        condensation of important title
%%%                        words. Citation tags were automatically
%%%                        generated by software developed for the
%%%                        BibNet Project.
%%%
%%%                        In this bibliography, entries are sorted in
%%%                        publication order, using bibsort -byvolume.
%%%
%%%                        The checksum field above contains a CRC-16
%%%                        checksum as the first value, followed by the
%%%                        equivalent of the standard UNIX wc (word
%%%                        count) utility output of lines, words, and
%%%                        characters.  This is produced by Robert
%%%                        Solovay's checksum utility.",
%%%  }
%%% ====================================================================

@Preamble{
    "\hyphenation{
        COMM-WHIZ
        Cogs-well
        DISK-DOC
        Gran-uzzo
        Ku-ma-ra-swa-my
        Mil-in-ko-vich
        Mitch-ell
        OPT-LINK
        data-bases
    }"
}

%%----------------------------------------------------------------------
%% Acknowledgement abbreviations:

@String{ack-nhfb = "Nelson H. F. Beebe,
                    University of Utah,
                    Department of Mathematics, 110 LCB,
                    155 S 1400 E RM 233,
                    Salt Lake City, UT 84112-0090, USA,
                    Tel: +1 801 581 5254,
                    FAX: +1 801 581 4148,
                    e-mail: \path|beebe@math.utah.edu|,
                            \path|beebe@acm.org|,
                            \path|beebe@computer.org| (Internet),
                    URL: \path|http://www.math.utah.edu/~beebe/|"}

%%----------------------------------------------------------------------
%% Journal abbreviations:

@String{j-DDJ                   = "Dr. Dobb's Journal of Software Tools"}

%%----------------------------------------------------------------------
%% Bibliography entries:

@Article{Erickson:2000:EBR,
  author =       "Jonathan Erickson",
  title =        "Editorial: It's Better To Be Rich and Famous, Than To
                 Live Near an Airport",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "8--8",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
  xxnote =       "Comment on Larry Ellison's jet airplane and the San
                 Jose Airport landing time rules.",
}

@Article{Tucker:2000:LEP,
  author =       "Andrew Tucker and Edoardo Comar and Scott Meyers and
                 Yves Piguet and Kevin Ruland and Greg Hadaller and
                 Jonathan Erickson and Mike Zhilin and Todd Stephan",
  title =        "Letters: Editor Preferences; {Java} Enums; Labor Union
                 Harassment; Smart Pointer Update; Traveling Salesman;
                 Granting Block Grant; Porting to {CE}; Analyzing
                 Algorithms",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "10, 12",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Baran:2000:NVV,
  author =       "Nicholas Baran",
  title =        "News and Views: Volunteers Needed for Weather
                 Simulation Model; {Bill Gates} Meets {Bill Blass} ---
                 Not!; Computer Lemon Law May Debut in {Pennsylvania};
                 Inventor of {Huffman} Encoding Dies; Green Cards, Not
                 Guest Visas; Online Forums on Electronic Recycling",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "18--18",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{McCoy:2000:SP,
  author =       "John H. McCoy",
  title =        "Scripting for {Pnuts}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "21--22, 24, 26",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/pnuts.txt;
                 http://www.ddj.com/ftp/2000/2000_01/pnutdemo.zip",
  abstract =     "Pnuts is a language, API, and interpreter that
                 provides a thin procedural wrapper with an interactive
                 interface for manipulating Java objects. Additional
                 resources include pnuts.txt (listings) and pnutdemo.zip
                 (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:RMS,
  author =       "Michael Swaine",
  title =        "{Rebol} and {E}-Mail Services",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "28, 30, 32--34",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/rebol.txt",
  abstract =     "When rebuilding his web sites, Michael looked at a
                 number of scripting languages -- and settled on Rebol.
                 He found it easier to use than many other scripting
                 tools, and the kinds of tasks it makes easy are those
                 involving Internet programming. Additional resources
                 include rebol.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Johnson:2000:DSC,
  author =       "Steve Johnson",
  title =        "A Dynamic Select Component for {JavaScript}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "36, 38--42",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/dselect.txt;
                 http://www.ddj.com/ftp/2000/2000_01/dselect.zip",
  abstract =     "Designing a GUI component in JavaScript is different
                 than developing a custom widget in more traditional
                 object-oriented environments. Steve shows you how to do
                 it. Additional resources include dselect.txt (listings)
                 and dselect.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Angell:2000:PSPa,
  author =       "Kirby W. Angell",
  title =        "{Python} Server Pages: Part 1",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "44, 46--47, 50",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/psp1.txt;
                 http://www.ddj.com/ftp/2000/2000_01/psp100.zip",
  abstract =     "Python Server Pages (PSP) is a server-side scripting
                 engine designed along the lines of Microsoft's Active
                 Server Pages (ASP) and Sun's Java Server Pages (JSP).
                 Additional resources include psp1.txt (listings) and
                 psp100.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Savchenko:2000:TFS,
  author =       "Sergei Savchenko",
  title =        "Tools for Flexible Scripting",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "52, 54--55",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/flexscrp.txt;
                 http://www.ddj.com/ftp/2000/2000_01/flexscrp.zip",
  abstract =     "Building scripting languages can be a time-consuming
                 tasks. Sergei presents a pair of tools to simplify
                 development. Additional resources include flexscrp.txt
                 (listings) and flexscrp.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Yam:2000:EEC,
  author =       "Michael Yam",
  title =        "{EC}: {A} {Euro} Calculator for the {Palm} Platform",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "56, 58, 60, 62, 64",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/palmeuro.zip",
  abstract =     "EC, the Euro calculator Michael presents here,
                 involves a number of advanced Palm programming topics,
                 including database and memory management, and the
                 synchronization of data between the device and the
                 desktop. Additional resources include palmeuro.zip
                 (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Thomas:2000:EOS,
  author =       "Gary Thomas",
  title =        "{eCos}: An Operating System for Embedded Systems",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "66, 68--72, 74",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/ecos.txt",
  abstract =     "The Embedded Configurable Operating System (eCos) is a
                 royalty-free, open-source, real-time kernel, targeted
                 at high-performance small embedded systems. As such,
                 eCos has been specifically designed and tuned to run on
                 32- and 64-bit microprocessors. Additional resources
                 include ecos.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Munro:2000:UHJ,
  author =       "Charlie Munro and Mark Nelson",
  title =        "The Ultimate Home Jukebox",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "76, 78--82",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/jukebox.txt",
  abstract =     "Our authors describe how they used MP3 to encode and
                 store on hard disk nearly 300 audio CDs, then networked
                 the music server to create the ultimate home jukebox.
                 Additional resources include jukebox.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{McMillan:2000:PTE,
  author =       "Mike McMillan",
  title =        "Programmer's Toolchest: Examining {PerlCOM}: {Perl}
                 Meets {Microsoft}'s {COM}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "84, 86--87",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/perlcom.txt",
  abstract =     "PerlCOM, from O'Reilly and Associates, lets you use
                 Perl in any language or application that supports
                 Microsoft Component Object Model (COM) objects. Mike
                 shows you how to use it to extend Visual Basic.
                 Additional resources include perlcom.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:PPCa,
  author =       "Michael Swaine",
  title =        "Programming Paradigms: Change is Good, but Folding
                 Money is Better",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "89, 90--92",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "It's more than a change in the weather that has
                 Michael scratching his head this month.",
  acknowledgement = ack-nhfb,
}

@Article{Stevens:2000:CPSa,
  author =       "Al Stevens",
  title =        "{C} Programming: Spinning Purple Larks, Swirling
                 Leaves, Rotating Ellipses",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "95--98",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/cprog120.zip",
  abstract =     "Al continues his development of the graphics template
                 library. This month, he adds an ellipse shape to the
                 library implemented as a template class in ellipse.h.
                 Additional resources include cprog120.zip (source
                 code).",
  acknowledgement = ack-nhfb,
}

@Article{Travers:2000:JQW,
  author =       "Michael Travers",
  title =        "{Java Q\&A}: What is Interactive Scripting?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "103, 105--111",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/jqa120.txt",
  abstract =     "What is interactive scripting and what does it have to
                 do with Java? Michael answers this question, as he
                 presents Skij, an interactive scripting language for
                 the Java environment. Additional resources include
                 jqa120.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Rolfe:2000:AAR,
  author =       "Timothy Rolfe",
  title =        "Algorithm Alley: Randomized Shuffling",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "113--114",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_01/aa120.txt;
                 http://www.ddj.com/ftp/2000/2000_01/aa120.zip",
  abstract =     "Card shuffling is an example of putting a fixed number
                 of items into completely random order. Timothy examines
                 a couple of randomizing algorithms -- one that does not
                 generate all permutations with equal probability, and
                 another that does. Additional resources include
                 aa120.txt (listings) and aa120.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Shasha:2000:DEOa,
  author =       "Dennis E. Shasha",
  title =        "{Dr. Ecco}'s Omniheurist Corner: Stars and Starlets",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "116--116",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Ecco and Liane do lunch and go Hollywood, as they look
                 for ways to keep a low-budget just that.",
  acknowledgement = ack-nhfb,
}

@Article{Woehr:2000:PBA,
  author =       "Jack J. Woehr and Lou Grinzo",
  title =        "Programmer's Bookshelf: All the World's {A} Database",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "119--120",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Feb 15 16:26:16 2001",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Databases are the focus this month, as Jack examines
                 the latest edition of C. J. Date's classic {\em An
                 Introduction to Database Systems}, while Lou looks at
                 MySQL and mSQL, by Randy Jay Yarger, George Reese, and
                 Tim King.",
  acknowledgement = ack-nhfb,
}

@Article{Baran:2000:Ia,
  author =       "Nicholas Baran and Amy Lincicum",
  title =        "Of Interest",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "126--127",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:SFB,
  author =       "Michael Swaine",
  title =        "{Swaine}'s Flames: Being a Blip",
  journal =      j-DDJ,
  volume =       "25",
  number =       "1",
  pages =        "128--128",
  month =        jan,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ddj/privacy.htm",
  acknowledgement = ack-nhfb,
}

@Article{Erickson:2000:EWS,
  author =       "Jonathan Erickson",
  title =        "Editorial: Worker Shortage a Tall Tail?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "10--10",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Samwel:2000:LDS,
  author =       "Bart Samwel and Jiri Soukup and Glenn Crist and Evan
                 Easton and Ron Ruble and David A. Rogers and Al Stevens
                 and Bruce MacDonald and Scott Venckus",
  title =        "Letters: Data Structures as Objects; Real ({Netscape})
                 Time; Riding the {XML} Bandwagon; Porting to {CE};
                 Nothing New About {Open Source}; {Y2K} Worries?;
                 Version Control",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "12, 14",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Baran:2000:NVE,
  author =       "Nicholas Baran",
  title =        "News and Views: {ERP} Can Spell Disaster; {Linux} Goes
                 Super; Dot-com Companies Bet the Farm; The Tiniest
                 Transistor; And Speaking of Tiny\ldots{}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "18--18",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  URL =          "http://www.ieee.org/conference/iedm",
  acknowledgement = ack-nhfb,
  keywords =     "Chenming Hu; FenFet",
}

@Article{Wadler:2000:GGJ,
  author =       "Philip Wadler",
  title =        "{GJ}: {A Generic Java}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "23--26, 28",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/gj.txt",
  abstract =     "Generic Java (GJ) adds generic types to the Java
                 language. GJ is compatible with Java, the Java Virtual
                 Machine, and existing libraries. It is also efficient,
                 in that information about generic types is maintained
                 only at compile time, not run time. Additional
                 resources include gj.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Fox:2000:CAJ,
  author =       "Joshua Fox",
  title =        "Collaborative Applications and the {Java Shared Data
                 Toolkit}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "32, 34--40",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/jsdt.txt;
                 http://www.ddj.com/ftp/2000/2000_02/jsdt.zip",
  abstract =     "The Java Shared Data Toolkit is designed to help you
                 write distributed collaborative applications so that
                 groups of users can work simultaneously on a common
                 task. Additional resources include jsdt.txt (listings)
                 and jsdt.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Amsterdam:2000:JR,
  author =       "Jonathan Amsterdam",
  title =        "{Java} References",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "42, 44, 46, 48, 50, 52",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/jrefer.txt",
  abstract =     "Java lets a program refer to objects without
                 preventing those objects from being garbage collected.
                 Jonathan explains how references work and presents
                 useful abstractions that make working with them easier.
                 Additional resources include jrefer.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Angell:2000:PSPb,
  author =       "Kirby W. Angell",
  title =        "{Python} Server Pages: Part {II}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "54, 57--61",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/psp2.txt",
  abstract =     "Last month, Kirby introduced Python Server Pages and
                 looked at how HTML pages with embedded scripts are
                 translated into compilable JPython code. This month, he
                 examines the Java Servlet side of PSP. Additional
                 resources include psp2.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Dwelly:2000:JXL,
  author =       "Andrew Dwelly",
  title =        "{Java}, {XML}, and Literate Programming",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "62, 64--66, 68",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/litjava.txt;
                 http://www.ddj.com/ftp/2000/2000_02/litjava.zip",
  abstract =     "Marius, the system Andrew presents here, implements
                 some of Donald Knuth's ideas about literate programs,
                 but uses Java as its programming language, with HTML as
                 the output. In the process, Marius leverages the power
                 of XML. Additional resources include litjava.txt
                 (listings) and litjava.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Hassler:2000:OFA,
  author =       "Vesna Hassler and Oliver Fodor",
  title =        "{OpenCard Framework} Application Development",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "70, 72, 74--76",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/ocfjava.txt;
                 http://www.ddj.com/ftp/2000/2000_02/ocfjava.zip",
  abstract =     "The Personal Computer/Smart Card Interface (PC/SC) and
                 OpenCard Framework emphasize the interoperability of
                 smartcards and card terminals, and the integration of
                 those card terminals into Microsoft Windows. Additional
                 resources include ocfjava.txt (listings) and
                 ocfjava.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Hardin:2000:RTS,
  author =       "David Hardin",
  title =        "The Real-Time Specification for {Java}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "78, 80--82, 84",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/rtjava.txt",
  abstract =     "The Real-Time Specification for Java promises to bring
                 the benefits of Java to real-time developers. David
                 examines the requirements and design decisions that led
                 to the Real-Time Specification for Java, and provides
                 practical examples of its use. Additional resources
                 include rtjava.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Zhang:2000:WMH,
  author =       "Peter Zhang",
  title =        "{Webrelay}: {A} Multithreaded {HTTP} Relay Server",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "86, 88, 90--94, 96",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/webrelay.txt;
                 http://www.ddj.com/ftp/2000/2000_02/webrelay.zip",
  abstract =     "Webrelay is a freely available multithreaded HTTP
                 relay server that authenticates that clients are
                 legitimate users before they are connected to vendor
                 web servers. Additional resources include webrelay.txt
                 (listings) and webrelay.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Trueman:2000:VNR,
  author =       "Chris Trueman",
  title =        "Visualizing Network Resources Using {Visio}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "98, 100--102",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/visioviz.txt;
                 http://www.ddj.com/ftp/2000/2000_02/visioviz.zip",
  abstract =     "Visio is a generic diagram construction tool that just
                 happens to include a powerful visualization engine.
                 Chris uses that engine to write a C++ tool that
                 generates diagrams to represent all the available
                 resources on a Windows network. Additional resources
                 include visioviz.txt (listings) and visioviz.zip
                 (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:PPPa,
  author =       "Michael Swaine",
  title =        "Programming Paradigms: The Palm, the Nose, and Other
                 Computing Platforms",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "105, 107--108",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "You won't need to go to the state of ``iDenmark'' to
                 know that something smells. And you can bet Michael
                 nose what he's talking about this month.",
  acknowledgement = ack-nhfb,
}

@Article{Stevens:2000:CPP,
  author =       "Al Stevens",
  title =        "{C} Programming: The {S} Programming Language",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "110--113",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  note =         "See comment on another {S} language
                 \cite{Kautz:2000:LLI}.",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/cprog220.txt",
  abstract =     "Al resurrects S, a homebrew C variant he implemented a
                 decade ago -- back before the days of JavaScript and
                 VB. His updated version is written in C++, and includes
                 a shell program that tests the interpreter by loading
                 and executing text source-code files written in the S
                 language. Additional resources include cprog220.txt
                 (listings).",
  acknowledgement = ack-nhfb,
  xxnote =       "This is NOT the statistics programming language that
                 predated S-Plus; I wrote to the author and pointed out
                 the name conflict.",
}

@Article{Henry:2000:JQH,
  author =       "Ethan Henry and Ed Lycklama",
  title =        "{Java Q\&A}: How Do You Plug {Java} Memory Leaks?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "115--119, 121",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/jqa220.txt",
  abstract =     "Our authors show what you can do when Java exhibits
                 classic memory leak behavior -- unbounded memory growth
                 leading to poor performance and eventually crashing.
                 Additional resources include jqa220.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Wiener:2000:AAH,
  author =       "Michael J. Wiener",
  title =        "Algorithm Alley: High-Speed Cryptography with the
                 {RSA} Algorithm",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "123--126",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_02/aa220.txt",
  abstract =     "Michael presents some key optimizations (with
                 source-code examples) that can be made to make RSA
                 algorithm as fast as possible. Additional resources
                 include aa220.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Shasha:2000:DEOb,
  author =       "Dennis E. Shasha",
  title =        "{Dr. Ecco}'s Omniheurist Corner: Sticks",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "131--132",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Landmines are a nasty piece of work, indeed. Ecco and
                 Liane need to come up with ways to make removing them a
                 safer proposition.",
  acknowledgement = ack-nhfb,
}

@Article{Wilson:2000:PBA,
  author =       "Gregory V. Wilson",
  title =        "Programmer's Bookshelf: All This, and Frequent Flyer
                 Miles, Too!",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "135--136",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "This month, Greg examines Mastering Algorithms with
                 Perl, by Jon Orwant, Jarkko Hietaniemi, and John
                 Macdonald, Programming for the Java Virtual Machine, by
                 Joshua Engel, Java for Engineers and Scientists, by
                 Stephen J. Chapman, Introductory Java for Scientists
                 and Engineers, by Richard Davies, the C++ Toolkit for
                 Scientists and Engineers, by James T. Smith, Quantum
                 Computing and Communications, by Michael Brooks, and
                 Steven Roman's Learning Word Programming.",
  acknowledgement = ack-nhfb,
}

@Article{Baran:2000:Ib,
  author =       "Nicholas Baran and Amy Lincicum",
  title =        "Of Interest",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "142--143",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:SFS,
  author =       "Michael Swaine",
  title =        "{Swaine}'s Flames: Scaffolding",
  journal =      j-DDJ,
  volume =       "25",
  number =       "2",
  pages =        "144--144",
  month =        feb,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:13 MST 2000",
  URL =          "http://www.ddj.com/ddj/privacy.htm",
  acknowledgement = ack-nhfb,
}

@Article{Erickson:2000:EOS,
  author =       "Jonathan Erickson",
  title =        "Editorial: {Open Source}, Open Projects",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "10--10",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Patten:2000:LLE,
  author =       "Michael Patten and Jonathan Erickson and Eliezer S.
                 Yudkowsky and Larry Sollman",
  title =        "Letters: {Larry Ellison}'s Jet; The True Name of the
                 Singularity; The Sixth Sense;",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "12, 14",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Baran:2000:NVM,
  author =       "Nicholas Baran",
  title =        "News and Views: More on Tiny Transistors; {Open
                 Source} Repository Launched; Design Contest Promotes
                 New Software Tools; And Then There's a Decryption
                 Contest; {Fred Brooks} Wins {ACM Turing Award}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "18--18",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  URL =          "http://sourceforge.net/",
  acknowledgement = ack-nhfb,
}

@Article{Cole:2000:WBT,
  author =       "Oliver Cole",
  title =        "White-Box Testing",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "23--26, 28",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_03/wboxtest.txt",
  abstract =     "Traditionally, there are two main approaches to
                 testing software: ``black-box'' (or functional)
                 testing, and ``white-box'' (or structural) testing.
                 White-box testing strategies include designing tests
                 such that every source line of code is executed at
                 least once, or requiring every function to be
                 individually tested. Additional resources include
                 wboxtest.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Horwood:2000:DMA,
  author =       "Peter Horwood and Shlomo Wygodny and Martin Zardecki",
  title =        "Debugging Multithreaded Applications",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "32, 34--37",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_03/dbgmulti.txt",
  abstract =     "It is often significantly harder to locate and test
                 for bugs in multithreaded and multiprocess applications
                 than for nonthreaded, single process situations. Our
                 authors describe some of the problems with
                 multithreaded applications and discuss common debugging
                 techniques. Additional resources include dbgmulti.txt
                 (listings).",
  acknowledgement = ack-nhfb,
}

@Article{DiMaggio:2000:TUD,
  author =       "Len DiMaggio",
  title =        "Testing {UNIX} Daemons",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "38, 40, 42, 44",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "UNIX daemons are programs that run in the background,
                 letting you do other work in the foreground. Len
                 presents a ``recipe'' for testing them.",
  acknowledgement = ack-nhfb,
}

@Article{Cohen:2000:BTF,
  author =       "Noam Cohen",
  title =        "Building a Testpoint Framework",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "46, 48--50",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_03/testpont.txt;
                 http://www.ddj.com/ftp/2000/2000_03/testpont.zip",
  abstract =     "Noam presents a framework for creating and using
                 testpoints. He originally designed and implemented this
                 framework while developing VideoClick, a video
                 distribution and management system. Additional
                 resources include testpont.txt (listings) and
                 testpont.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Robison:2000:CR,
  author =       "Arch D. Robison",
  title =        "Considering Recursion",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "52, 54--55, 57--58",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_03/recurs.txt",
  abstract =     "Granted, recursion means different things to different
                 people. But for Arch, recursion means trouble because
                 recursive code entangles control flow, which hurts
                 readability, reuse, and optimization. Additional
                 resources include recurs.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Wilson:2000:IBP,
  author =       "James Y. Wilson and Jason A. Krontz",
  title =        "Inside {Bluetooth}: Part {I}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "62, 64--66, 68, 70",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Bluetooth technology is an open specification for
                 wireless communication and networking. In the first of
                 a two-part series, Jim and Jason lay out the basics.",
  acknowledgement = ack-nhfb,
}

@Article{Epplin:2000:IRT,
  author =       "Jerry Epplin",
  title =        "Inside {Real-Time Linux}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "72, 74, 76, 78",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_03/rtlinux.txt;
                 http://www.ddj.com/ftp/2000/2000_03/rtlinux.zip",
  abstract =     "Real-Time Linux is based on the same model as the
                 NT-based systems, but, since it is freely available,
                 doesn't have the associated cost overhead. To
                 illustrate how you can use RTLinux, Jerry presents a
                 data-acquisition application. Additional resources
                 include rtlinux.txt (listings) and rtlinux.zip (source
                 code).",
  acknowledgement = ack-nhfb,
}

@Article{Yun:2000:MNS,
  author =       "James K. Yun",
  title =        "Measuring Network Software Performance",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "80, 82--91",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_03/netperf.txt;
                 http://www.ddj.com/ftp/2000/2000_03/netperf.zip",
  abstract =     "The network performance measurement techniques James
                 discusses here are especially useful in projects where
                 the network interface is encapsulated in a class
                 library or network middleware. Additional resources
                 include netperf.txt (listings) and netperf.zip (source
                 code).",
  acknowledgement = ack-nhfb,
}

@Article{Wanner:2000:SEY,
  author =       "James F. Wanner",
  title =        "{SourceMonitor}: Exposing Your Code",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "92, 94--98",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_03/sourcemonitor.zip;
                 http://www.ddj.com/ftp/2000/2000_03/sourcemonitorv0163.exe",
  abstract =     "SourceMonitor is a programmer's metrics tool that Jim
                 wrote to expose the size and quality of his source
                 code. To parse source code, Jim used Sandstone's Visual
                 Parse++; to create reports, he turned to Stingray's
                 Objective Chart. Additional resources include
                 sourcemonitor.zip (source code) and
                 sourcemonitorv0163.exe (executable in self-extracting
                 zip archive).",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:PPAa,
  author =       "Michael Swaine",
  title =        "Programming Paradigms: Atom by Atom",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "101--102, 104--105",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "When we look back at it, 1999 might have been a
                 breakthrough year for nanotechnology, as big advances
                 were made in tiny computers.",
  acknowledgement = ack-nhfb,
}

@Article{Stevens:2000:CPI,
  author =       "Al Stevens",
  title =        "{C} Programming: Iterating the Days Until {Y2K}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "107--108, 110",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Smart iterators might not be such a dumb idea, but, as
                 Al points out, there are costs associated with them.",
  acknowledgement = ack-nhfb,
}

@Article{Jennings:2000:JQC,
  author =       "Mike Jennings",
  title =        "{Java Q\&A}: Can You Write {NT} Services in {Java}?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "113--116, 118",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_03/jqa300.txt;
                 http://www.ddj.com/ftp/2000/2000_03/jqa300.zip",
  abstract =     "A service in Windows NT (or ``daemon'' in UNIX
                 parlance) is a program that runs in the background to
                 do a specific task. Can you write NT services in Java?
                 Sure, and Mike shows you how. Additional resources
                 include jqa300.txt (listings) and jqa300.zip (source
                 code).",
  acknowledgement = ack-nhfb,
}

@Article{Gong:2000:AAA,
  author =       "Mingfu Gong",
  title =        "Algorithm Alley: An ${N}\log {N}$ Adaptive Group Sort
                 Algorithm",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "123--124, 126--127",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_03/aa300.txt",
  abstract =     "Group sorting algorithms are well suited for
                 applications where recursion is either not allowed or
                 inefficient. In this month's column, Mingfu presents an
                 N*logN adaptive group sort algorithm. Additional
                 resources include aa300.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Shasha:2000:DEOc,
  author =       "Dennis E. Shasha",
  title =        "{Dr. Ecco}'s Omniheurist Corner: Simple",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "128--128",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Benjamin Baskerhound has turned over a new leaf, this
                 time coming to Ecco and Liane for help, rather than
                 mischief.",
  acknowledgement = ack-nhfb,
}

@Article{Wilson:2000:PBH,
  author =       "Gregory V. Wilson",
  title =        "Programmer's Bookshelf: How Matters More than What",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "135--136",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "This month, Greg examines Extreme Programming
                 Explained, by Kent Beck, and the recently released The
                 Pragmatic Programmer: From Journeyman to Master, by
                 Andrew Hunt and David Thomas.",
  acknowledgement = ack-nhfb,
}

@Article{Baran:2000:Ic,
  author =       "Nicholas Baran and Amy Lincicum",
  title =        "Of Interest",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "142--143",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:SFI,
  author =       "Michael Swaine",
  title =        "{Swaine}'s Flames: Invention or Hack?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "3",
  pages =        "144--144",
  month =        mar,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ddj/privacy.htm",
  acknowledgement = ack-nhfb,
}

@Article{Erickson:2000:EGL,
  author =       "Jonathan Erickson",
  title =        "Editorial: Getting the Lead Out",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "8--8",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Kautz:2000:LLI,
  author =       "Frederick Kautz and Dimitrios Souflis and Robert
                 Carbonari and DDJ and Al Gettier and Tina Femia and
                 Andrew D. Todd and Anonymous and Alan Horn and
                 Anonymous and Brad Clawsie and Samuel Pearlman",
  title =        "Letters: The {S} Language; {IP} Security; {Pnuts}
                 Pointer; Flyby; Worker Shortage?; Design by Interface",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "10, 12",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  note =         "See \cite{Stevens:2000:CPP}.",
  acknowledgement = ack-nhfb,
}

@Article{Baran:2000:NVIa,
  author =       "Nicholas Baran",
  title =        "News and Views: {Internet} Security in ``Infantile
                 State''; {Hedy Lamarr}: Spread Spectrum Pioneer; New
                 Weather Supercomputer Not So Super; Researchers Like
                 Armies of Cheap Robots; {Kurzweil} Predicts Human Brain
                 Uploads",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "18--18",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
  keywords =     "National Weather Service IBM Processor 786 System
                 Parallel Supercomputer",
}

@Article{Erickson:2000:DDE,
  author =       "Jonathan Erickson",
  title =        "{Dr. Dobb's Excellence In Programming Award}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "20--21",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Through his research and writings, Jon Bentley has
                 made significant contributions to the art and science
                 of computer programming. And he's the recipient of this
                 year's Dr. Dobb's Excellence in Programming Award.",
  acknowledgement = ack-nhfb,
}

@Article{Levitin:2000:NRM,
  author =       "Anany Levitin",
  title =        "A New Road Map of Algorithm Design Techniques",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "23--24, 26--28",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Before outlining a new taxonomy, Anany reviews the
                 four most general algorithm design techniques: brute
                 force, divide-and-conquer, decrease-and-conquer, and
                 transform-and-conquer.",
  acknowledgement = ack-nhfb,
}

@Article{Ginsberg:2000:MCM,
  author =       "Matthew Ginsberg",
  title =        "{Monte Carlo} Methods",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "34, 36--37",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_04/mc.txt",
  abstract =     "Bridge is one of a handful of classic games that have
                 thus far eluded competent computer play. However, GIB,
                 the Bridge program Matthew wrote and discusses here,
                 proves to be a worthy competitor. Additional resources
                 include mc.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Nilsson:2000:FSA,
  author =       "Stefan Nilsson",
  title =        "The Fastest Sorting Algorithm?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "38, 40, 42, 44--45",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_04/fastsort.txt;
                 http://www.ddj.com/ftp/2000/2000_04/fastsort.zip",
  abstract =     "Which sorting algorithm is the fastest? Stefan
                 presents his answer to this age-old question.
                 Additional resources include fastsort.txt (listings)
                 and fastsort.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Burton:2000:GCR,
  author =       "Joshua W. Burton",
  title =        "Garbage Collection On the Run",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "46, 48--49, 51--53",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Joshua examines several incremental memory-management
                 algorithms, including simple user-defined reference
                 counts, before turning to analyzing the global
                 connectedness of pointer structures.",
  acknowledgement = ack-nhfb,
}

@Article{Manivannan:2000:EAM,
  author =       "S. Manivannan",
  title =        "An Efficient Algorithm for Magnitude Operation",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "54, 565",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_04/mag.txt",
  abstract =     "Magnitude operation is widely used in signal and data
                 processing for signal detection and power estimation in
                 systems such as real-time displays for sensors, radars,
                 sonars, and scanners for medical-imaging systems.
                 Additional resources include nag.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Wilson:2000:BSP,
  author =       "James Y. Wilson and Jason A. Kronz",
  title =        "The {Bluetooth} Spec: Part {II}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "58, 60, 62--64",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Bluetooth technology is an open specification for
                 wireless communication. In Part I, Jim and Jason
                 examined the voluminous specification. This month, they
                 focus on the features of the Baseband specification.",
  acknowledgement = ack-nhfb,
}

@Article{Ledin:2000:DFO,
  author =       "Jim Ledin",
  title =        "Digital Filtering and Oversampling",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "66, 68--70, 72--74",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_04/filter.txt;
                 http://www.ddj.com/ftp/2000/2000_04/filter.zip",
  abstract =     "Compared to analog filtering, digital filtering can
                 provide higher overall system performance and reduce
                 circuit complexity. Jim examines the technique of
                 oversampling, which can be used to gain these seemingly
                 contradictory benefits. Additional resources include
                 filter.txt (listings) and filter.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Goldman:2000:LDM,
  author =       "Roy Goldman and Jason McHugh and Jennifer Widom",
  title =        "{Lore}: {A} Database Management System for {XML}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "76, 78--80",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_04/lore.txt",
  abstract =     "Lore is a DBMS designed specifically for XML. In the
                 same way that SQL queries relational DBMSs, Lore
                 provides the query language Lorel for issuing
                 expressive queries over XML data. Additional resources
                 include lore.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Chapman:2000:EPT,
  author =       "Mitch Chapman and Brian Kelley",
  title =        "Examining the {PyGtk} Toolkit",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "82, 84, 86, 88",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_04/pygtk.txt",
  abstract =     "PyGtk brings the benefits of a high-level programming
                 language to Gtk+ developers, and gives Python
                 programmers access to a modern, high-performance GUI
                 toolkit. Additional resources include pygtk.txt
                 (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:PPM,
  author =       "Michael Swaine",
  title =        "Programming Paradigms: Misinformation",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "91--93, 95",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Michael ain't misbehavin' as much as he's
                 misinformin'. Of course, that's not his fault.",
  acknowledgement = ack-nhfb,
}

@Article{Stevens:2000:CPSb,
  author =       "Al Stevens",
  title =        "{C} Programming: Speaking of Rambling",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "97--99",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Ramblin' Jack Elliot has nothing on Al this month, as
                 our man in C rambles from one topic to another.",
  acknowledgement = ack-nhfb,
}

@Article{Epstein:2000:JQ,
  author =       "David Epstein and Joseph Kiniry and John Motil",
  title =        "{Java Q\&A}: What is ``{JJ}''?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "101--106",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_04/jqa400.txt",
  abstract =     "JJ is a Java implementation originally designed as an
                 educational programming language and environment.
                 Although it's a subset of Java, JJ includes advanced
                 programming features such as support for Design by
                 Contract. Additional resources include jqa400.txt
                 (listings).",
  acknowledgement = ack-nhfb,
  annote =       "JJ is a subset of Java, designed for learning Java.",
}

@Article{Bentley:2000:AAB,
  author =       "Jon Bentley",
  title =        "Algorithm Alley: Binary Search: Algorithm, Code, and
                 Caching",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "111--112, 114, 116",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_04/aa400.txt",
  abstract =     "Caching often works well, but sometimes fails utterly.
                 In this column, Jon examines why that happens and what
                 you can do about it. Additional resources include
                 aa400.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Shasha:2000:DEOd,
  author =       "Dennis E. Shasha",
  title =        "{Dr. Ecco}'s Omniheurist Corner: Blood",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "119--120, 122",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "There's bad blood around Ecco's flat, as the good
                 doctor and his sidekick Liane lend a hand to medical
                 science.",
  acknowledgement = ack-nhfb,
}

@Article{Taylor:2000:PBS,
  author =       "Jeffrey L. Taylor",
  title =        "Programmer's Bookshelf: Second Time Around",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "127--128, 130",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Jeffrey examines the second editions of Radia
                 Perlman's Interconnections: Bridges, Routers, Switches,
                 and Internetworking Protocols, and Bruce
                 Powel-Douglass' Real-Time UML: Developing Efficient
                 Objects for Embedded Systems.",
  acknowledgement = ack-nhfb,
}

@Article{Baran:2000:Id,
  author =       "Nicholas Baran and Amy Lincicum",
  title =        "Of Interest",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "134--135",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:SFDa,
  author =       "Michael Swaine",
  title =        "{Swaine}'s Flames: The Death and Resurrection of {Rudy
                 Doone}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "136--136",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  URL =          "http://www.ddj.com/ddj/privacy.htm",
  acknowledgement = ack-nhfb,
}

@Article{Bykov:2000:AYJ,
  author =       "Alex Bykov",
  title =        "Ace Your Job Interview",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "??--??",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "If you're in the market for a job, be prepared to
                 answer a lot of technical questions during the job
                 interview. Alex shares some of the questions you'll
                 face and gives you answers you'll need.",
  acknowledgement = ack-nhfb,
}

@Article{Ellis:2000:ILS,
  author =       "Richard Ellis",
  title =        "The {IT} Labor Shortage: Fact Or Fiction?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "??--??",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Current reports present conflicting views of the job
                 market for information technology workers. Richard goes
                 below the surface to uncover the real story.",
  acknowledgement = ack-nhfb,
}

@Article{Simcox:2000:WYW,
  author =       "Susan Simcox",
  title =        "What Are You Worth?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "4",
  pages =        "??--??",
  month =        apr,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:14 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "A recent dice.com career and salary survey on the IT
                 industry gave some surprising (and some not so
                 surprising) results. Susan reports on this study.",
  acknowledgement = ack-nhfb,
}

@Article{Erickson:2000:EHM,
  author =       "Jonathan Erickson",
  title =        "Editorial: Hey, {Mr. Postman}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "8--8",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Cromwell:2000:LWS,
  author =       "Jeff Cromwell and Jim North and J. Stephen Riley
                 Silber and Graham M. Sherrington and John Gegus",
  title =        "Letters: Worker Shortage; The Sixth Sense, Redux;
                 Kryptos Message; Data Structures as Objects",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "10, 12",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Baran:2000:NVD,
  author =       "Nicholas Baran",
  title =        "News and Views: Does ``Reading'' Have a Future?; Trade
                 Secrets Compromising Academic Research?; Optical
                 Optimism; Call to All Programmers: Prepare for {Y5K};
                 Software Safety Researcher [Nancy {G}. Leveson] Gets
                 {ACM}'s {Newell Award}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "18--18",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{deCarmo:2000:MGC,
  author =       "Linden deCarmo",
  title =        "The {Media Gateway Control Protocol}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "23--24, 26--28, 32",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "The Media Gateway Control Protocol is a lightweight
                 telephony protocol that promises reduced complexity and
                 increased reliability for digital Internet phones.",
  acknowledgement = ack-nhfb,
}

@Article{Stallings:2000:GE,
  author =       "William Stallings",
  title =        "Gigabit {Ethernet}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "34, 36--37",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Although it defines a new medium and transmission
                 specification, the Gigabit Ethernet spec is based on
                 the same strategy as 100-Mbits/sec. Ethernet.",
  acknowledgement = ack-nhfb,
}

@Article{Karim:2000:WNC,
  author =       "Jawed Karim",
  title =        "A {Win32} Network Crawler",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "38, 40, 42--43",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_05/voyeur.txt;
                 http://www.ddj.com/ftp/2000/2000_05/voyeur.zip",
  abstract =     "MP3 Voyeur is a freely available Win32 program that
                 automates the task of finding MP3 files on the shared
                 folders of local area networks. It works like a network
                 crawler, querying each computer on the network and
                 traversing each computer's hierarchy of shared folders
                 to find MP3 files. Additional resources include
                 voyeur.txt (listings) and voyeur.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Calbucci:2000:LSF,
  author =       "Marcelo A. F. Calbucci",
  title =        "{LDAP} Search Filters",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "44, 46, 48, 50--51",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_05/ldapsrch.txt;
                 http://www.ddj.com/ftp/2000/2000_05/ldapsrch.zip",
  abstract =     "The Lightweight Directory Access Protocol is a
                 transport mechanism for Directory Service transactions.
                 Marcelo focuses on the search filter that's part of
                 LDAP search functionality. Additional resources include
                 ldapsrch.txt (listings) and ldapsrch.zip (source
                 code).",
  acknowledgement = ack-nhfb,
}

@Article{Fishburne:2000:MPG,
  author =       "William Fishburne",
  title =        "Margination and {Project Gutenberg}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "52, 54--56",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Fri Nov 10 05:30:30 2000",
  note =         "See letter \cite{Gantz:2000:LM}.",
  URL =          "http://www.ddj.com/ftp/2000/2000_05/gutenbg.txt;
                 http://www.ddj.com/ftp/2000/2000_05/gutenbg.zip",
  abstract =     "The goal of Project Gutenberg is to distribute a
                 million books electronically by the end of the year. To
                 that end, project organizers have identified some
                 unusual requirements on the margins of the lines.
                 Additional resources include gutenbg.txt (listings) and
                 gutenbg.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Chasin:2000:PSM,
  author =       "Andrew Chasin",
  title =        "Predication, Speculation, and Modern {CPUs}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "58, 60--61, 63--64",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_05/ps_cpu.txt",
  abstract =     "Predication and speculation are viable techniques for
                 improving software performance, and the emerging class
                 of processors and compilers are supporting it.
                 Additional resources include ps\_cpu.txt (listings)",
  acknowledgement = ack-nhfb,
}

@Article{Smyth:2000:ICY,
  author =       "Gavin Smyth",
  title =        "Infrared Control of Your {PC}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "66, 68, 70, 72",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_05/infrared.txt;
                 http://www.ddj.com/ftp/2000/2000_05/infrared.zip",
  abstract =     "Infrared devices are used to remotely control consumer
                 electronic systems -- TVs, VCRs, stereos, and the like.
                 Gavin shows you how you can add your PC to that list.
                 Additional resources include infrared.txt (listings)
                 and infrared.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Tucker:2000:WCC,
  author =       "Andrew Tucker",
  title =        "{Window CE}'s {CESH} Utility",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "74, 76--78, 80",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_05/cecesh.txt;
                 http://www.ddj.com/ftp/2000/2000_05/cecesh.zip",
  abstract =     "CESH, a utility included with the Windows CE
                 development tools, lets you automate test suites to
                 download and run on a device, while logging results on
                 the desktop machine. Additional resources include
                 cecesh.txt (listings) and cecesh.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Gemmell:2000:SMF,
  author =       "Jim Gemmell",
  title =        "Scalable Multicast File Distribution",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "82, 84--89",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Fcast, the file distribution mechanism Jim presents
                 here, uses IP multicast and forward error correction
                 (FEC) to serve extremely large numbers of clients with
                 minimal loads for servers and networks.",
  acknowledgement = ack-nhfb,
}

@Article{Barker:2000:BBA,
  author =       "John S. Barker",
  title =        "Building the {Bell Atlantic Tariff Management
                 System}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "90, 92--95, 97",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Bell Atlantic's Tariff Management System is a
                 web-based, collaborative system for generating and
                 managing tens of thousands of pages of documents. What
                 made building the system difficult is that it had to be
                 capable of delivering the product in multiple formats
                 -- paper, PDF, and HTML -- while obeying strict,
                 legislated rules regarding page layout.",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:PPe,
  author =       "Michael Swaine",
  title =        "Programming Paradigms: Oh Behave!",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "99--100, 102",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Michael reports on Eazel, a Linux startup for Macs,
                 and gets small with nanotechnology.",
  acknowledgement = ack-nhfb,
}

@Article{Stevens:2000:CPSc,
  author =       "Al Stevens",
  title =        "{C} Programming: Slamming, Compilers, {E}-Books",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "105--107, 109",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Al considers the upside and downside of using classes
                 and functions from the Standard C++ library.",
  acknowledgement = ack-nhfb,
}

@Article{Reilly:2000:JQH,
  author =       "David Reilly",
  title =        "{Java Q\&A}: How Do {I} User Servlets for State and
                 Session Management?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "111--115",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_05/jqa500.txt;
                 http://www.ddj.com/ftp/2000/2000_05/jqa500.zip",
  abstract =     "How do you use Servlets for state and session
                 management? David shows you how. Additional resources
                 include jqa500.txt (listings) and jqa500.zip (source
                 code).",
  acknowledgement = ack-nhfb,
}

@Article{Missaghi:2000:AA,
  author =       "Moheb Missaghi",
  title =        "Algorithm Alley: How Many Subscribers Should Share a
                 Modem?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "119--121",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_05/aa500.zip",
  abstract =     "How many ISP subscribers should share a modem? That's
                 the question Moheb was faced with, and he presents and
                 implements the algorithm that proved to be the answer.
                 Additional resources include aa500.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Shasha:2000:DEOe,
  author =       "Dennis E. Shasha",
  title =        "{Dr. Ecco}'s Omniheurist Corner: Centimillionaire",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "123--124",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Ecco and Liane find out it's better to be rich and
                 healthy than sick and poor.",
  acknowledgement = ack-nhfb,
}

@Article{Wilson:2000:PBS,
  author =       "Gregory V. Wilson",
  title =        "Programmer's Bookshelf: Stirring the Gene Pool",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "127, 130",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Greg's roundup this month includes Objects
                 Unencapsulated: Java, Eiffel, and C++?, by Ian Joyner;
                 The Logic Programming Paradigm, by Krzysztof R. Apt,
                 Victor W. Marek, Mirek Truszczynski, and David S.
                 Warren; Quantum Computing and Communications, edited by
                 Michael Brooks; Cambrian Intelligence, by Rodney A.
                 Brooks; Intellectual Property in the Age of Universal
                 Access, by the ACM; Database Design for Smarties, by
                 Robert J. Muller; Designing Maintainable Software, by
                 Dennis D. Smith; and (finally) Automating Windows with
                 Perl, by Scott McMahan.",
  acknowledgement = ack-nhfb,
}

@Article{Baran:2000:Ie,
  author =       "Nicholas Baran and Amy Lincicum",
  title =        "Of Interest",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "134--135",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:SFNa,
  author =       "Michael Swaine",
  title =        "{Swaine}'s Flames: Nag, Nag, Nag",
  journal =      j-DDJ,
  volume =       "25",
  number =       "5",
  pages =        "136--136",
  month =        may,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ddj/privacy.htm",
  acknowledgement = ack-nhfb,
}

@Article{Erickson:2000:EMC,
  author =       "Jonathan Erickson",
  title =        "Editorial: Money Can't Buy Me Love",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "10--10",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Collins:2000:LMW,
  author =       "Terry Collins and Geoff Davis and Tarjei Tjxstheim
                 [sic] Jensen and Raj Dash and DDJ and Rick Box and
                 Dimitrios Souflis and James K. Yun and Guy Hammond and
                 DDJ",
  title =        "Letters: More Worker Shortage; Music City; Sorting
                 Through Sorts; Buy the Book; {E}-Address Change; {Open
                 Source} Debate",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "10, 12",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Baran:2000:NVf,
  author =       "Nicholas Baran",
  title =        "News and Views: {Freenet}: More Anarchy for the
                 {Internet}?; Magnetic Properties Key to
                 Nanoengineering; Nanoseconds Not Fast Enough? Here Come
                 Femtoseconds; {Caltech} Leads {U.S.} Field in {ACM}
                 Programming Contest; Robotic Surgeons May Make Fewer
                 Mistakes; Free Software for Designing {ICs}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "18--18",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  acknowledgement = ack-nhfb,
}

@Article{Perez:2000:MDM,
  author =       "C{\'e}sar A. Gonzalez Perez and Pablo Criado Boado",
  title =        "The {Metis} Design Methodology",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "21--22, 24--26",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Metis is an object-oriented development methodology
                 that includes all the usual tasks found in a generic
                 software project lifecycle.",
  acknowledgement = ack-nhfb,
}

@Article{Beckman:2000:OSM,
  author =       "Pete Beckman and Gregory V. Wilson",
  title =        "{Open Source} Meets Big Iron",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "30, 32, 34--35",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "The aim of the Software Carpentry project is to create
                 a new generation of easy-to-use software engineering
                 tools, and to document those tools and the working
                 practices they are meant to support.",
  acknowledgement = ack-nhfb,
}

@Article{Macri:2000:SPC,
  author =       "Julian Macri",
  title =        "State Patterns and {C++}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "36, 38, 40, 42, 44--45",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_06/statepat.txt",
  abstract =     "In object-oriented design, objects can modify their
                 behavior based on the current state of their
                 attributes. State patterns abstract the ability for an
                 object to change its behavior. Julian presents two ways
                 the State design pattern can be implemented in C++.
                 Additional resources include statepat.txt (listings and
                 source code).",
  acknowledgement = ack-nhfb,
}

@Article{Dwelly:2000:XRP,
  author =       "Andrew Dwelly",
  title =        "{XML}, Reflective Pattern Matching, and {Java}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "46, 49--52, 54",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_06/xmljava.txt;
                 http://www.ddj.com/ftp/2000/2000_06/marius05.zip",
  abstract =     "Although the pattern matching available in Hex, the
                 program Andrew presents here, is relatively simple, it
                 is still powerful enough to perform sophisticated XML
                 document processing. Additional resources include
                 xmljava.txt (listings) and marius05.zip (source
                 code).",
  acknowledgement = ack-nhfb,
}

@Article{Kiesling:2000:OOU,
  author =       "Robert Kiesling",
  title =        "An Object-Oriented {UI} for {Perl}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "58, 60--61",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_06/perlooui.txt;
                 http://www.ddj.com/ftp/2000/2000_06/worksp.zip",
  abstract =     "If you work with object-oriented languages, you are
                 likely accustomed to user-interface objects that
                 highlight the object-oriented features of a language's
                 internal structures. Robert shows one way Perl's
                 features can contribute to its usefulness in
                 object-oriented projects. Additional resources include
                 perlooui.txt (listings) and worksp.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Ni:2000:WVC,
  author =       "Ping Ni and Mark Nelson",
  title =        "{Win32} Version Control",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "62, 64--66",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_06/win32ver.txt",
  abstract =     "Faced with the problems created by scattered
                 development teams, distributed objects, and dozens of
                 DLLs and executables, Ping and Mark turned to Perl and
                 C++ to give some muscle to the Visual Source Safe
                 source-code version control system. Additional
                 resources include win32ver.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Davis:2000:OOD,
  author =       "Thomas E. Davis",
  title =        "Object-Oriented Design In Procedural Environments",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "68, 70--72",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_06/oodesign.txt",
  abstract =     "Tom shows how you can apply some of the inherent
                 cleanliness of object-oriented design to your
                 procedural language projects. To illustrate, he designs
                 an application for Motorola's PageWriter two-way pager.
                 Additional resources include oodesign.txt (listings).",
  acknowledgement = ack-nhfb,
}

@Article{Roelofs:2000:JCC,
  author =       "Brian Roelofs",
  title =        "{Java} Custom Class Loaders",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "74, 76, 78, 80, 82",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_06/javaload.txt;
                 http://www.ddj.com/ftp/2000/2000_06/javaload.zip",
  abstract =     "Custom class loaders create new possibilities for
                 dynamic applications. Brian discusses how you can
                 create your own class loader to read and load classes
                 into the Java VM from any data source. Additional
                 resources include javaload.txt (listings) and
                 javaload.zip (source code).",
  acknowledgement = ack-nhfb,
}

@Article{Ritke:2000:IT,
  author =       "Ronn Ritke",
  title =        "An {Internet} Toolbox",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "84, 86--87, 89",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Ronn examines a number of useful Internet tools,
                 including packet-collection software,
                 Internet-throughput software, ISP-measurement software,
                 and the like.",
  acknowledgement = ack-nhfb,
}

@Article{Gorman:2000:PCT,
  author =       "Ian E. Gorman",
  title =        "Parsing Complex Text Structures",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "90, 92--98",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_06/parse.txt;
                 http://www.ddj.com/ftp/2000/2000_06/parse.zip",
  abstract =     "A pattern language that includes recursive patterns
                 and conditional pattern matching can handle complex
                 text structures without supplementary programming. Ian
                 uses the OmniMark pattern language from OmniMark
                 Technologies to do a job that might otherwise be done
                 with tools like lex and yacc. Additional resources
                 include parse.txt (listings) and parse.zip (source
                 code).",
  acknowledgement = ack-nhfb,
}

@Article{Swaine:2000:PPB,
  author =       "Michael Swaine",
  title =        "Programming Paradigms: Breadth-First Search",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "100, 102, 105",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Michael looks to the future of technology and society,
                 and wonders if it will really be as bleak as a joyless
                 Bill Joy thinks it will be.",
  acknowledgement = ack-nhfb,
}

@Article{Stevens:2000:CPR,
  author =       "Al Stevens",
  title =        "{C} Programming: Retreading {Quincy}",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "106, 108, 110, 112, 114",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "While sitting by the side of the road, Al gets into
                 his Quincy 2000 port and further considers using the
                 Borland BCC32 C/C++ compiler as Quincy's compiler.",
  acknowledgement = ack-nhfb,
}

@Article{Gsoedl:2000:JQC,
  author =       "Jacob Gsoedl",
  title =        "{Java Q\&A}: Can You Implement {COM} Components Using
                 {Java}?",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "119--120, 122, 124, 126",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_06/jqa600.txt",
  abstract =     "Can you implement COM components using Java? Yes, and
                 Jacob shows you how. Additional resources include
                 jqa600.txt (listings)",
  acknowledgement = ack-nhfb,
}

@Article{Keogh:2000:AAL,
  author =       "John Keogh",
  title =        "Algorithm Alley: Layout Management",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "131--134, 136",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  URL =          "http://www.ddj.com/ftp/2000/2000_06/aa600.txt;
                 http://www.ddj.com/ftp/2000/2000_06/aa600.zip",
  abstract =     "John presents and implements an algorithm for scaling
                 child windows when the parent is resized. Although the
                 example runs under the Win32 API, the algorithm and
                 data structure are generally useful for scaling child
                 windows on other platforms. Additional resources
                 include aa600.txt (listings) and aa600.zip (source
                 code).",
  acknowledgement = ack-nhfb,
}

@Article{Shasha:2000:DEOf,
  author =       "Dennis E. Shasha",
  title =        "{Dr. Ecco}'s Omniheurist Corner: Microvirus",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "139, 141",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Are Ecco and Liane the antidote for a deadly new
                 strain of microvirus? Read and find out.",
  acknowledgement = ack-nhfb,
}

@Article{Cromwell:2000:PBA,
  author =       "Jeff Cromwell",
  title =        "Programmer's Bookshelf: The Art and Science of
                 Software Architecture",
  journal =      j-DDJ,
  volume =       "25",
  number =       "6",
  pages =        "143--144",
  month =        jun,
  year =         "2000",
  CODEN =        "DDJOEB",
  ISSN =         "1044-789X",
  bibdate =      "Thu Nov 9 08:25:15 MST 2000",
  bibsource =    "http://www.ddj.com/",
  abstract =     "Jeff reviews Applied Software Architecture, by
                 Christine Hofmeister, Robert Nord, and Dilip Soni;
                 Software Architecture in Practice, by Len Bass, Paul
                 Clements, and Rick Kazman; and Software Architecture:
                 Perspectives of an Emerging Disc