throbber

`
`APPL-1018 / Page 1 of 10
`Apple v. Uniloc
`
`

`

`—*
`Bentley 3 Scdyawlck's New Surfing Alurltllll
`
`U1
`
`
`
`J J
`
`j
`
`J,
`
`50mm
`
`” J MOISFOA’IHE
`
`M/;j P_A_’____0f£5$/0NAI
`
`V6.
`
`icbuggmg;
`
`:e and
`it L0
`
`:h as
`
`
`
`
`
`EH
`
`MJ0 VII JJUMJ—
`IJJJJJJJJJJ ii
`_
`.
`
`
`
`
`.7
`334111133135qu
`' Drag--and--Drop Ior J35
`. ,.lysine the Win32 Debug API
`
`J
`
`'
`
`
`
`APPL-1018 l Page 2 of 10
`
`APPL-1018 / Page 2 of 10
`
`

`

`to be.
`
`like it used to
`
`like it used to b
`
`Jsed to be.
`
`t used to be.
`
`
`
`
`
`APPL—1018 I Page 3 of 10
`
`APPL-1018 / Page 3 of 10
`
`

`

`D
`
`r 0
`
`0
`
`9
`
`WHHM
`S wasfor rat
`
`Farm/aw!
`
`J
`
`0
`
`U
`
`R
`
`N
`
`A
`
`L
`
`graham/arr
`
`NCSA SYMERA
`by I’m [‘YI'HIIZQUH (uni/meet] Kin-I'm
`.\’ll.\:\ Syntera is a distributed—tthlett and cluster-management system with applitation support libraries
`built on Microsoft's Distributed Component Object Model (DtIUM). Our authors examine fitment. then
`t'om'ett a stand-alone Windows program into a Svtnera application that uses distributed resotirees.
`
`A CORBA BEAN FRAMEWORK
`by Ik/i't‘cl Hort/ding
`David premtts a framework based on the JavaBeans Standard that provides a layer of abstraction over
`(It )ltllA— and. in particular, the CORBA Dynamic Invocation Interface f I )II 1— to encapsulate its
`complexity and facilitate visual rapid application development.
`
`THE MICO CORBA-COMPLIANT SYSTEM
`by Arno I’m/er
`Mltll > is .t freeh atailable CORBA implementation that supports lllL—to-CH mapping. Dynamic
`Invocation Interface (DH), IIOP as native protocol, nested method invocations, and more.
`
`CREATING ELECTRONIC MARKETS
`by Ming Fan, fan Sru/luerl. and Andrew B. “"ht‘rtx/nn
`Our authors describe a \\-'eh-hased Financial Bundle Trading System that lets you access financial
`markets using Java applets embedded in web browsers.
`
`20
`
`34
`
`44
`
`52
`
`60
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`—
`
`.
`
`
`.
`
`THE GEE GENERAL EXCEPTION-HANDLING LIBRARY
`by Hrme lll. Big/{1'
`(Elil: is a general exceptitiii-handling and t‘ontract-prognttntning facility for (I prognnntnet's. With GEF,
`
`its sped-.11 control macros. and other support functions, you can separate the main purpose of a
`function frotn its exceptittn-ltandling. contract-\'alidation. and resouree-reclamation code,
`
`
`WINDOWS CE DEVICE DRIVER DEVELOPMENT, PART II
`lug/runes l'.
`ll"’ils0n.
`
`
`In the second installment of this two-part article, Jim identifies the basic skills you need to develop
`\I'indon's' (3F, device drivers, and implements a driver for an onboard peripheral device.
`
`;'
`
`5'?
`
`3
`
`.
`
`51' ’
`
`
`‘
`_ _
`1"" :11: eimcrket
`lgtmdle trading Sfit‘dOrderf .'
`‘
`1
`
`FILE FORMATS & AUTOMOTIVE DATA ACQUISITION
`84
`by Lee It. cupp
`
`When it ct tines to automotive data acquisition. the files generated while a vehicle is being tested
`are as different and varied as the vehicles themselves. Lee presents a tool that enables viewing.
`
`filtering, or analysis of this disparate data.
`
`THE WIDL SPECIFICATION
`92 l
`' ‘13,
`by Liam .llmrsun
`t
`p03” I
`The \V'eb interface Delinttion Language l\\‘ll)l.t is an XML file format for describing
`
`'
`programmatic interfaces to the \V-‘eh liot'ron'intt from the UlllL'L'l community’s ORB ideas, WIDL
`destrihes an abstract interface to a "Service" existing on the Web.
`Moxmufn
`
`Dr. Dobb’sjournal, November 1998
`
`
`
`
`
`
`
`
`-
`
`‘
`
`RMI
`
`,fi‘
`‘
`read-«rt ,‘
`
`APPL—1018 I Page 4 of 10
`
`APPL-1018 / Page 4 of 10
`
`

`

`ENTS
`
`NOVEMBER 1998
`VOLUME 23, ISSUE 11
`
`PROGRAMMER’STOOLCHEST
`
`EXAMINING THE WIN32 DEBUG API
`by Fritz Lowrey
`The Win32 Debug API is a set of functions that provides a number of useful tools
`for both the debugger and the debugged. Since these functions are supported by
`the operating system, it doesn’t matter whether the program being debugged has
`been compiled or optimized in Debug or Release mode, nor does it make any
`difference what language or tool you opt to use.
`
`98
`
`BUILDING SOLID CODE
`by Wes Faler
`The company Wes works for has refined its development process to produce well-
`structured, clean source code. Wes presents this process, along with notes on the
`tools they use.
`
`l06
`
`COLUMNS
`
`PROGRAMMING PARADIGMS
`by Michael Swaine
`Michael examines Jini, Sun‘s system architecture for distributed computing. Jini
`embodies a model for how devices and software connect on a network and how
`distributed systems can operate.
`
`H3
`
`CPROGRAMMING
`by Al Stet/ens
`Al updates a C++ class template libraIy that implements undo operations of
`interactive programs. The library assumes that the user modifies a document class
`object and might want to undo those modifications in reverse order.
`
`”9
`
`JAVA Q&A
`byjason W. Purdy
`Jason examines the drag-and-drop (DnD) capabilities of both JavaSoft’s Java
`Foundation Classes (IFC) and Microsoft’s Windows Foundation Classes (WFC).
`
`I27
`
`ALGORITHM ALLEY
`byjon Bentley and Robert Sedgewic/e
`Jon and Robert describe a new algorithm for sorting strings that combines the best
`of quicksort and radix sort.
`
`I33
`
`DR. ECCO’S OMNII-IEURIST CORNER
`by Dennis E. Shasha
`Dr. Ecco and Liane use “directed evolution” to cure the ills that all some.
`
`I40
`
`PROGRAMMER’S BOOKSHELF
`by Gregory V. Wilson
`Greg examines a bevy of books this month, including Web Site Usability: A
`Designer’s Guide, Information Architecturefor the World Wide Web, Oflicial
`Guide to Programming with CGIpm, jesse Liberty‘s Clouds to Code, Advanced
`Programming Language Design, and Practical Software Configuration
`Management.
`
`I43
`
`D"- Dobb’sjournal, November 1998
`
`
`
`
`RESOURCE CENTER
`As a service to our readers, source code (and related
`files, back-referenced articles, and relevant links
`are available electronically at http://www ddi com/.
`Individual articles can be purchased electronically
`as ZIP files, also at http://wwwddi com/. Source
`code is also available via anonymous F1? from
`ftpddi com (199.125 85.76), the DD] Forum on
`CompuServe (type GO DDJ), and DD] Online (650—
`358-8857, 14 4 kbps, 8-N-1). Letters to the editor
`and article proposals/submissions should be
`mailed or faxed to the DD] office or sent
`electronically to editors@ddj com Author guidelines
`are available at http://www ddicomfl Send inquiries
`or requests to Dr. Dobb’sjournal, 411 Borel Ave,
`San Mateo, CA 94402 For subscription questions
`(including change of address), call 800-456-1215
`(US. and Canada); other countries, call 303-678-
`0439 or fax 303-661-1885 E-mail subscription
`questions to ddi@neodata com or write to Dr. Dobb’s
`journal, R0. Box 56188, Boulder, CO 80322-6188
`
`zing tested
`viewing,
`
`
`FORUM
`
`EDITORIAL
`byjonalban Eric/(son
`
`LETTERS
`by you
`
`NEWS & VIEWS
`by the DD] staff
`
`OF INTEREST
`by Eugene Eric Kiln
`
`SWAINE’S FLAMES
`by Michael Swaiire
`
`
`NEXT MONTH
`
`In December, we’ll be examining the latest
`in cryptography and computer security.
`
`APPL—1018 I Page 5 of 10
`
`APPL-1018 / Page 5 of 10
`
`

`

` pROGRAMMING PARADIGMS
`
`
`
`Sun Dreams of Jini
`
`Michael Swoine
`
`her
`
`
`
`llhough next month I expect to be
`all over the paradigmatic map with
`my annual stocking stuffers u )Iumn.
`this month I‘m focusing on :1 single
`paradigm.
`It’s Sun’s Jini, a new system architec—
`ture for distributed computing and im—
`proved device connection. I think that’s
`an accurate description, but it certainly
`doesn’t do jini justice. Jim is so revolu-
`tionary a technology that it has appeared
`on the cover of Wired magazine. Oh, sor-
`ry. I forgot to turn on my cynicism filter.
`And I do need to hold my cynicism in
`abeyance, even though Jini is a Sun tech-
`nology and starts with the letter j and is
`therefore fated to be hyped to the heav—
`ens. Because technologically speaking, Jini
`is clearly important, clever, impressive, and
`worthy of serious attention.
`Of course technological merit is seldom
`the deciding factor in the success or fail—
`ure of technologies in certain strata of soft—
`ware development...
`
`The Vision
`Jini is part of a four-year research project
`carried on at Bill Joy’s Sun Aspen Small-
`works R&D lab in the Rockies. Java was
`also a part of that project, but only a part.
`The release of information on Jini this sum-
`mer is the sound of the other shoe drop-
`ping. Jini expands on the Write Once, Run
`Anywhere concept of Java and articulates
`a more ambitious and more complete vi-
`sion for the future of computing. One el-
`ement of that vision is a radical simplifica—
`tion of the way hardware is connected and
`configured. In the Jini model, every de—
`Vice— computer, disk drive, telephone,
`Camera, or coffeepot— has just two cords
`coming out the back— one for power and
`another for the network. (Or just one: The
`network cord might be replaced by a wire—
`
`Mz‘clmc'l L'r editor—(II—lmgujhr DD] He can
`be Con/arm! a! mswainc@su.'uinc.com.
`
`Dr. Dobb ’s journal, November 1998
`
`less link.) You plug it in, it announces it—
`self to the network, and it’s all connected
`and configured and jumpered and regis-
`tered and immediately usable.
`Sounds nifty, but talk is cheap and
`hardware is expensive. Wouldn’t such a
`scheme require all new hardware? Yes,
`although it would be possible for the
`smarts that let the device be a player in
`a Jini system to reside on another de—
`vice. In this way, old devices could join
`a Jini system.
`Another element of the vision is a mod-
`
`el for distributed computing. It’s also an
`ambitious model—in a way. In the Jini
`model, anything can be a service, avail-
`able to clients on the network. A service
`
`might be the printing capability of a print—
`er somewhere on the network, or a math
`routine, or a search engine, or a slice of
`processing power of a mainframe made
`available to underpowered PCs doing
`heavy but decomposable computations.
`In another sense, the Jim model is very
`modest. The core software is 48 KB of
`
`binaries. And it is intended to run on top
`of any OS (although currently has been
`implemented only for Solaris and NT).
`On the less modest hand, while living
`in apparent harmony with any operating
`system,
`it quietly usurps all the interest-
`ing networking functions. And it attempts
`to promote the network to a level of im-
`portance and control currently occupied
`by the operating system. In this respect,
`Jini is clearly another Sun attempt to do
`a technological end run around Microsoft’s
`hegemony.
`Maybe we could call it Sun’s version of
`“Embrace and extend.” Anyway, that’s the
`vision. Oh, and Joy’s boys want you to be
`able to walk up to any device, not just
`any computer but any device connected
`to a Jini system, and have all of the sys—
`tem’s services as available to you as they
`would be if you were sitting in front of
`your own PC; and they want all this to be
`
`so automatic and transparent to the user
`that it is in effect a network dialtone.
`Sure, why not. All this sounds like net-
`work heaven, but is there any reason to
`believe that Sun has the keys to the king-
`dom? That’s the 64-euro question, of
`course. I’ll just spell out some of the de-
`tails of the Jini model and you can decide
`that for yourself.
`
`Joining .Iini
`Jini embodies a model for how devices and
`software connect on a network and how
`
`distributed systems can operate. Sun de-
`scribes the technology underlying this mod—
`el in terms of two areas of software—the
`infrastmcture that defines the connections,
`and the distributed programming model.
`In addition to these, there is the con-
`cept of a network service, a concept that
`runs throughout the entire Jini model.
`A service is, according to Sun’s Jini Ar-
`chitecture Overview white paper (http://
`java.sun.com/products/jini/whitepapers/
`architectureoverview.pdf), “an entity that
`can be used by a person, a program, or
`another service.” It can be “a computa-
`tion, storage, a communication channel
`to another user, a software filter, a hard-
`ware device, or another user.”
`The infrastructure consists of two com—
`
`ponents that, between them, make it pos—
`sible for devices to be hot—plugged into
`the network, manage the process of de—
`vices identifying themselves to the network
`and vice-versa, and allow clients to access
`services anywhere on the network. These
`are “Discovery and Join” (that’s one com—
`ponent with two names) and “Lookup”
`(also referred to as “Boot and Join" and
`“Install"). Discovery and Join is the mech-
`anism by which a device or application
`identifies itself to the network. When a
`
`Jim-enabled device is plugged into a Jini—
`enabled network, the device broadcasts
`a small Discovery packet to the net. This
`512-byte packet contains sufficient
`
`113
`
`ll
`
`vATlONAL Ml u
`
`7200.
`
`Syslcmsv Inc.
`
`
`
`
`
`
`
`APPL—1018 I Page 6 of 10
`
`APPL-1018 / Page 6 of 10
`
`

`

`
`
`information to allow the net to start a di—
`
`alog with the device, which it does, on en—
`countering the packet on a known port,
`by sending the device a packet that de—
`scribes the networ‘k’s characteristics. (The
`device doesn’t need to know anything
`about the network in advance.) That’s Dis—
`covery. Now the device can Join the net—
`work, which it does by sending a more
`comprehensive message back, containing
`all its own characteristics (I print in color,
`I respond to the following voice corn—
`mands, I chop small vegetables). This mes—
`sage can contain more than just device
`characteristics: it can also include code or
`
`code pointers, as for example a printer
`driver, an interface to a printer driver, or
`a help wizard. The medium of communi—
`cation here is a Java interface. Jim is per—
`fectly willing to work with C code at some
`levels, but here it’s built firmly on Java.
`
`Lookup is the component that does
`what I have loosely attributed to the net
`in previous paragraphs. It is a small bul-
`letin board for the net, dynamically stor—
`ing pointers to services, and also code or
`pointers to code provided by services.
`Clients for these services talk to Lookup
`to get, for example, the driver for a print—
`er downloaded when needed. Lookup is
`the main point of contact between the sys—
`tem and its users. What it does is to ruap
`Java interfaces that identify offered func—
`tionality to a set of objects that provide
`that functionality (that is, that service).
`A twist on this Lookup capability is Peer
`Lookup, in which a client can masquer—
`ade as a Lookup if no Lookup is avail—
`able. The client itself then engages in the
`Discovery and Join conversation with the
`service providers, who register with the
`client just as if it were a Lookup.
`
`tu
`
`:I-y
`
`IF"c...v
`
`Beyond Java
`The distributed programming mode]In
`lini brings three lLLIIt‘tt 1101,th to the Pie
`lute—leasing. distributed transactiom
`and distributed cements In leasing. an ob
`ject negotiates for the use of a service to,
`a period of time. This is the basis {(er
`among other things, the system s dis,
`tributed garrgb106 collection. Leases can be
`exclusive or nonexclusive, nonexclusivE
`leases allowing for simultaneous resourcc
`sharing. Java APIs provide the basic dis.
`tributed transaction capability, called "two-
`phase commit.” This allows an object [0
`fire up a transaction manager. Every 0|).
`ject that will take part in the transaction
`has to register with the transaction man-
`ager, and it runs the transaction, holding
`up objects or causing them to backtrack
`or move ahead as needed to ensure that
`the steps of the transaction are properly
`synchronized. Jini also provides for dis—
`tributed events. Specifically, an object can
`allow other objects to register an interest
`in an event that resides in the first object,
`and provide notification to them of the
`occurrence of the event.
`
`Underlying all communication bet“ een
`services in Jim is Java Remote Method In»
`vocation (RMI). Although it might seem
`more like part of the programming mod—
`el, it is regarded as part of the infrastruc»
`tttre. Wherever it falls in the architecture
`of Jim,
`its role is to allow complete ob—
`jects, including code, to be passed among
`objects over the network.
`tol—
`Network services is an open— €11Cl€(
`lection of services that bear somewhat the
`
`same relationship to the infrastructure and
`distributed programming model as a upli-
`cations do to an operating system, run—
`ning on top of these lower—level elements.
`The most important of these is Jzna-
`Spaces, a model for facilitating distr'but—
`ed programming. The JavaSpaces model
`is drawn from work by David Gelernter
`that simplifies the challenge of distr'but-
`ing tasks among multiple processors. Cel-
`ernter’s project, named Linda, creates a
`shared memory space called a TupleS we
`where results of a computer’s processes
`or the processes themselves are stored
`and can be accessed by multiple Cl’Us.
`Contents of a TupleSpace are tagged with
`self— descriptive tags, and effectively push-
`pinned to a bulletin board.
`
`
`
`Jtnt Is Not a Dictatorship
`Jim Waldo, author of the [iitiAicbitct/ttre
`Overview wltite paper characterizes a lifll
`system as a l'eeiduttion. Members of a led-
`eration are peers and are assumed to agree
`on certain basic issues. Trust,
`identifica—
`tion, policy, things like that.
`“A Jini federation should not be [l]( tuyllf
`of as sets of clients and servers, or users
`(continued onpagc {/7}
`
`Dr. Dobb’sfom‘tzal, November N98
`
`Paradigms Past: The End of the Brotherhood
`Doug Carlston was a computer back-
`
`
`
`bund added educational and productiv—
`ity software titles, ultimately becoming
`an educational software company that
`also did games.
`Recently, though, Broderbund has
`been losing money, and this summer it
`agreed to be acquired by The Learning
`Company. But it would be a mistake to
`connect Broderbund's fall with the hack-
`er ethic it still, to some extent, embod—
`ies. Broderbund was the only one of the
`early game companies to survive into
`the late ‘905, and it was the gentlest, most
`generous of those companies. As the
`other game companies ran into hard
`times, they got tougher, refusing to share
`ideas and technology with competitors,
`giving less credit to the actual game de—
`velopers, negotiating stingier deals. But
`although Broderbund changed. too, it
`kept some of that spirit. And as the oth—
`er companies failed. Broderbund pros—
`pered—until quite recently.
`If Broderbund has remained a differ-
`
`er in college in the 19703. and even
`when he started his law practice he
`continued to play with computers. When
`Radio Shack introduced its TRS—80, he
`bought one immediately and stayed
`glued to it all weekend.
`So did others, including the author of
`this column, but something actually came
`of Doug Carlston’s Trashed weekend. He
`wrote a game called Galactic Saga, and
`with his brothers Gary and Don started
`a company that became a leader in a half—
`billion dollar segment of the software in—
`dustry-—- Broderbund (Swedish for broth—
`erhood).
`It wasn’t immediate. This was early
`1980, before Windows, before DOS, be-
`fore the IBM PC, and the brothers were
`down to $24 before Doug took to the
`road, selling copies of Galactic Saga out
`of his car to early computer stores. The
`big breakthrough, though, came when
`a Japanese entrepreneur sold Doug some
`microcomputer versions of popular
`video arcade games.
`It‘s not clear that there wasn't some
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`114
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`ent kind of company, it is probably be—
`cause, like Microsoft, it has been led for
`nearly 20 years by one person. Early in-
`dications are that Doug Carlston will re-
`main in charge of the operation and
`there won’t be many jobs lost. And a
`consolidation that will give the combined
`companies 40 percent of the educational
`software market can‘t exactly be bad
`news for either company. That‘s all true,
`but it‘s also true that one of the pioneer
`software companies is no more. We
`should mark its passing.
`Thanks to Steven Levy’s book HtIc/e-
`ers for refreshing my memory about
`Broderbund’s early days.
`
`infringement of copyright, but the com-
`puter game industry was free and fast-
`moving in the early ’805, and nobody
`cared. Among Broderbund and Sierra
`On-Line and Sirius, the main game com—
`panies of the early 805, there was much
`sharing of technology, much flouting of
`the usual rules of business, much spirit
`of brotherhood.
`
`It has been called the hacker ethic.
`
`Broderbund was built on it, and did well.
`
`In recent years, its stars included Rand
`
`and Robyn Miller, with their intensely
`—M.S.
`popular game Myst. Gradually, Broder—
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`APPL—1018 I Page 7 of 10
`
`APPL-1018 / Page 7 of 10
`
`

`

`tion of companies that all buy into Bill Joy’s
`dream. Hardware companies will have to
`rework their equipment, and software com-
`panies will have to rework their minds if
`they are to buy into this thing.
`But some companies have, to one ex—
`tent or another, bought into the Jini vi-
`sion, including Canon, Computer Asso-
`ciates, Epson, Ericsson, FedEx, Mitsubishi,
`Novell, Oki, Salomon Brothers, Seagate,
`Siemens, and Toshiba. Sun says that the
`source code will be open as in the Mozil—
`la model and that they will enforce com-
`patibility in some way, probably through
`an authorized label for Sun— certified com—
`
`chance of coming to reality. Microsoft
`isn’t about to endorse it, can in fact be
`counted on to embrace it about the same
`way they embraced Java. And other
`companies are being asked, at minimum,
`to make an investment in an unproven
`technology, and at max, to rethink their
`entire business and software develop-
`ment models.
`
`Against that imposing challenge, there
`is this small thought: Something like this is
`going to happen someday. Why not now?
`And why not from the guy who has been
`thinking about it for all his adult life, Mr.
`“The network is the computer” himself? It’s
`Bill Joy’s dream. And it might come true.
`
`I (
`
`What it Means
`This is a powerful vision, but it doesn’t add
`up to a product that Sun can sell
`in
`shrinkwrapped form to consumers with a
`marketing blitz featuring Larry Hagman and
`Barbara Eden. Jim is really an appeal to the
`industry to join Sun in forming a federa-
`
`(a)
`Java VM‘
`RMI'
`Java security model‘
`Discovery and Join
`Lookup
`Distributed security
`
`(b)
`Java APIs*
`JavaBeans‘
`Leasing
`Two-phase commit
`Events
`
`(C)
`JNDI'
`Enterprise Beans‘
`JTS’
`JavaSpaces
`Two-phase commit manager
`Other services
`
`Table 1:flm' java z'nfra- infl‘astmcture.
`(av/int infrastructure; (b) jim'
`programming model; (6)]1'111' services.
`(“java-supplied elements).
`
`Dr. Dobb’s journal, November 1998
`
`am/innerIfi‘onr page / M")
`and prt rgntrrrs. or even prr rgrxrnrs and fries,”
`Waldo says. Instead, you should think of it
`as an open—ended, dynamically changing
`collection of independent services that can
`be arrrrposed together to perform a task.
`Sen'it'cs conrrrrunicute with one anoth—
`er via a service protocol, which is a Java
`interface. There can be any number of
`such protocols; they are, like the services,
`an open—ended collection.
`Security in Jirri follows a provider/access
`control list model. The principal is whomev—
`61' or whatever the service is accessed for—
`ultimately it will probably be some user
`somewhere, but the immediate principal
`may be another object. The access control
`list is associated with and controlled by the
`object that implements the service. In short,
`die owner of the service gets to decide who
`does what with it when. Jini is designed to
`be decoupleable, so that it is possible to
`implement parts of the system and still get
`many of its benefits. I haven’t dug deeply
`enough to know what parts and what ben—
`efits, but the idea is to allow legacy code
`to play a (perhaps limited) role in a Jini
`federation with only minor modification.
`That legacy code would probably be C
`code. Jini itself is built on Java, though,
`and Java underlies all the components of
`Jim. When you lump in that Java infra-
`irrfrastnrcture, those components look like
`Table 1.
`
`KenonlcControlsLtd.Calgary,Canada Ph:403-258-6200. Fx:403-25Hzo1. amallflnbgeryokeyeom
`
`
`patible commercial products.
`It would be easy to dismiss the Jim
`DDJ
`effort as a dream that has very little
`
`Serious Copy Protection and
`
`Software Licensing with No
`
`Hardware Key or Disk Key
`
`Distribute your software via Internet,
`CD or floppy with full security.
`
`CrypKey provides solid copy protection with a
`broad range of features to control all aspects of
`your product's operation. You can offer free,
`automatic one—time trials, turn demos into full multi-
`user network versions, or sell specific options by
`phone, fax or email. Sell usage by time, runs,
`features - the control is all there - easy to implement,
`and even easier to support.
`
`CrypKey also offers choices - integrate our SDK
`into your software, or use CrypKey instant to
`protect your compiled exe in 5 minutes; no coding.
`
`Try it free from our website to see why we're
`rated #1 by professional programmers who seek
`the best combination of security. features, ease
`of use. reliability & price.
`
`100% Satisfaction Guaranteed!
`
`http://www.crypkey.com 4 .
`
`
`
`APPL—1018 I Page 8 of 10
`
`APPL-1018 / Page 8 of 10
`
`

`

`N. MANCHESTER, INDIANA 46962
`
`00-981505
`
`APPL-1018 / Page 9 of 10
`
`

`

`
`
`
`
`APPL-1018 / Page 10 of 10
`
`

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket