text:
An in-memory storage manager represents XML-compliant documents as a collection of objects in memory. The storage manager allows real-time access to the objects by separate processes operating in different contexts. The data in the objects is stored in memory local to each process and the local memories are synchronized by means of a distributed memory system that stores the data in the same data region, but maps the data region to the address space of each process. Data corruption in the data region is prevented by a locking mechanism that prevents the processes from simultaneously modifying same data.
1. Apparatus for representing and managing an XML-compliant document in a memory, the XML-compliant document being updated concurrently by a first process having a first address space in the memory and second process having a second address space in the memory, the apparatus comprising:
a first storage manager controlled by the first process that constructs, from class code in the first address space, at least one document object including first data representing a part of the XML-compliant document and stored in a region mapped into the first address space;
a second storage manager controlled by the second process that constructs, from class code in the second address space, at least one document object including second data representing a part of the XML-compliant document and stored in the same region as the first data, but mapped into the second address space;
a synchronization mechanism that locks the region data when the first process is changing the region data in the first address space.
2. Apparatus as recited in
3. Apparatus as recited in
4. Apparatus as recited in
5. Apparatus as recited in
6. Apparatus as recited in
7. Apparatus as recited in
8. Apparatus as recited in
9. Apparatus as recited in
10. Apparatus as recited in
11. Apparatus as recited in
12. Apparatus as recited in
13. A method for representing and managing an XML-compliant document in a memory, the XML-compliant document being updated concurrently by a first process having a first address space in the memory and second process having a second address space in the memory, the method comprising:
(a) using a first storage manager controlled by the first process to construct, from class code in the first address space, at least one document object including first data representing a part of the XML-compliant document and stored in a region mapped into the first address space;
(b) using a second storage manager controlled by the second Process to construct, from class code in the second address space, at least one document object including second data representing a part of the XML-compliant document and stored in the same region as the first data, but mapped into the second address space; and
(c) locking the region data when the first process is changing the region data in the first address space.
14. A method as recited in
15. A method as recited in
16. Apparatus as recited in
17. A method as recited in
18. A method as recited in
19. A method as recited in
20. A method as recited in
21. A method as recited in
22. A method as recited in
23. A method as recited in
24. A method as recited in
25. A computer program product for representing and managing an XML-compliant document in a memory, the XML-compliant document being updated concurrently by a first process having a first address space in the memory and second process having a second address space in the memory, the computer program product comprising a computer usable medium having computer readable program code thereon, including:
program code for using a first storage manager controlled by the first process to construct, from class code in the first address space, at least one document object including first data representing a part of the XML-compliant document stored in the first address space and stored in a region mapped into the first address space;
program code for using a second storage manager controlled by the second process to construct, from class code in the second address space which class code is identical to the class code in the first address space, at least one document object including second data representing a part of the XML-compliant document stored in the second address space and stored in the same region as the first data, but mapped into the second address space; and
program code for locking the region data when the first process is changing the region data in the first address space.
This invention relates to storage and retrieval of information and, in particular, to storage and retrieval of information encoded in Extended Markup Language (XML).
Modern computing systems are capable of storing, retrieving and managing large amounts of data. However, while computers are fast and efficient at handling numeric data they are less efficient at manipulating text data and are especially poor at interpreting human-readable text data. Generally, present day computers are unable to understand subtle context information that is necessary to understand and recognize pieces of information that comprise a human-readable text document. Consequently, although they can detect predefined text orderings or pieces, such as words in an undifferentiated text document, they cannot easily locate a particular piece of information where the word or words defining the information have specific meanings. For example, human readers have no difficulty in differentiating the word "will" in the sentence "The attorney will read the text of Mark's will.", but a computer may have great difficulty in distinguishing the two uses and locating only the second such use.
Therefore, schemes have been developed in order to assist a computer in interpreting text documents by appropriately coding the document. Many of these schemes identify selected portions of a text document by adding into the document information, called "markup tags", which differentiates different document parts in such a way that a computer can reliably recognize the information. Such schemes are generally called "markup" languages.
One of these languages is called SGML (Standard Generalized Markup Language) and is an internationally agreed upon standard for information representation. This language standard grew out of development work on generic coding and mark-up languages, which was carried out in the early 1970s. Various lines of research merged into a subcommittee of the International Standards Organization called the subcommittee on Text Description and Processing Languages. This subcommittee produced the SGML standard in 1986.
SGML itself is not a mark-up language in that it does not define mark-up tags nor does it provide a markup template for a particular type of document. Instead, SGML denotes a way of describing and developing generalized descriptive markup schemes. These schemes are generalized because the markup is not oriented towards a specific application and descriptive because the markup describes what the text represents, instead of how it should be displayed. SGML is very flexible in that markup schemes written in conformance with the standard allow users to define their own formats for documents, and to handle large and complex documents, and to manage large information repositories.
Recently, another development has changed the general situation. The extraordinary growth of the Internet, and particularly, the World Wide Web, has been driven by the ability it gives authors, or content providers, to easily and cheaply distribute electronic documents to an international audience. SGML contains many optional features that are not needed for Web-based applications and has proven to have a cost/benefit ratio unattractive to current vendors of Web browsers. Consequently, it is not generally used. Instead, most documents on the Web are stored and transmitted in a markup language called the Hypertext Markup Language or HTML.
HTML is a simple markup language based on SGML and it is well suited for hypertext, multimedia, and the display of small and reasonably simple documents that are commonly transmitted on the Web. It uses a small, fixed set of markup tags to describe document portions. The small number of fixed tags simplifies document construction and makes it much easier to build applications. However, since the tags are fixed, HTML is not extensible and has very limited structure and validation capabilities. As electronic Web documents have become larger and more complex, it has become increasingly clear that HTML does not have the capabilities needed for large-scale commercial publishing.
In order to address the requirements of such large-scale commercial publishing and to enable the newly emerging technology of distributed document processing, an industry group called the World Wide Web Consortium has developed another markup language called the Extensible Markup Language (XML) for applications that require capabilities beyond those provided by HTML. Like HTML, XML is a simplified subset of SGML specially designed for Web applications and is easier to learn, use, and implement than full SGML. Unlike HTML, XML retains SGML advantages of extensibility, structure, and validation, but XML restricts the use of SGML constructs to ensure that defaults are available when access to certain components of the document is not currently possible over the Internet. XML also defines how Internet Uniform Resource Locators can be used to identify component parts of XML documents.
An XML document is composed of a series of entities or objects. Each entity can contain one or more logical elements and each element can have certain attributes or properties that describe the way in which it is to be processed. XML provides a formal syntax for describing the relationships between the entities, elements and attributes that make up an XML document. This syntax tells the computer how to recognize the component parts of each document.
XML uses paired markup tags to identify document components. In particular, the start and end of each logical element is clearly identified by entry of a start-tag before the element and an end-tag after the element. For example, the tags <to > and </to > could be used to identify the "recipient" element of a document in the following manner:
The form and composition of markup tags can be defined by users, but are often defined by a trade association or similar body in order to provide interoperability between users. In order to operate with a predefined set of tags, users need to know how the markup tags are delimited from normal text and the relationship between the various elements. For example, in XML systems, elements and their attributes are entered between matched pairs of angle brackets (< . . . >), while entity references start with an ampersand and end with a semicolon (& . . . ;). Because XML tag sets are based on the logical structure of the document, they are easy to read and understand.
Since different documents have different parts or components, it is not practical to predefine tags for all elements of all documents. Instead, documents can be classified into "types" which have certain elements. A document type definition (DTD) indicates which elements to expect in a document type and indicates whether each element found in the document is not allowed, allowed and required or allowed, but not required. By defining the role of each document element in a DTD, it is possible to check that each element occurs in a valid place within the document. For example, an XML DTD allows a check to be made that a third-level heading is not entered without the existence of a second-level heading. Such a hierarchical check cannot be made with HTML. The DTD for a document is typically inserted into the document header and each element is marked with an identifier such as <!ELEMENT>.
However, unlike SGML, XML does not require the presence of a DTD. If no DTD is available for a document, either because all or part of the DTD is not accessible over the Internet or because the document author failed to create the DTD, an XML system can assign a default definition for undeclared elements in the document.
XML provides a coding scheme that is flexible enough to describe nearly any logical text structure, such as letters, reports, memos, databases or dictionaries. However, XML does not specify how an XML-compliant data structure is to be stored and displayed, much less efficiently stored and displayed. Consequently, there is a need for a storage mechanism that can efficiently manipulate and store XML-compliant documents.
In accordance with one embodiment of the invention, an in-memory storage manager represents XML-compliant documents as a collection of objects in memory. The collection of objects allows the storage manager to manipulate the document, or parts of the document with a consistent interface and to provide for features that are not available in conventional XML documents, such as element attributes with types other than text and documents that contain binary, rather than text, information. In addition, in the storage manager, the XML-compliant document is associated with a schema document (which is also an XML document) that defines the arrangement of the document elements and attributes. The storage manager can operate with conventional storage services to persist the XML-compliant document. Storage containers contain pieces of the document that can be quickly located by the storage manager.
In accordance with another embodiment, the storage manager also has predefined methods that allow it to access and manipulate elements and attributes of the document content in a consistent manner. For example, the schema data can be accessed and manipulated with the same methods used to access and manipulate the document content.
In accordance with yet another embodiment, the schema data associated with a document can contain a mapping between document elements and program code to be associated with each element. The storage manager further has methods for retrieving the code from the element tag. The retrieved code can then be invoked using attributes and content from the associated element and the element then acts like a conventional object.
In all embodiments, the storage manager provides dynamic, real-time data access to clients by multiple processes in multiple contexts. Synchronization among multiple processes accessing the same document is coordinated with event-driven queues and locks. The objects that are used to represent the document are constructed from common code found locally in each process. In addition, the data in the objects is also stored in memory local to each process. The local memories are synchronized by means of a distributed memory system that continually equates the data copies of the same element in different processes.
In still another embodiment, client-specified collections are managed by a separate collection manager. The collection manager maintains a data structure called a "waffle" that represents the XML data structures in tabular form. A record set engine that is driven by user commands propagates a set of updates for a collection to the collection manager. Based on those updates, the collection manager updates index structures and may notify waffle users via the notification system. The waffle user may also navigate within the collection using cursors.
The above and further advantages of the invention may be better understood by referring to the following description in conjunction with the accompanying drawings in which:
The client computer 100 includes a central processing unit (CPU) 105, which may include a conventional microprocessor, random access memory (RAM) 110 for temporary storage of information, and read only memory (ROM) 115 for permanent storage of information. A memory controller 120 is provided for controlling system RAM 110. A bus controller 125 is provided for controlling bus 130, and an interrupt controller 135 is used for receiving and processing various interrupt signals from the other system components.
Mass storage may be provided by diskette 142, CD-ROM 147, or hard disk 152. Data and software may be exchanged with client computer 100 via removable media, such as diskette 142 and CD-ROM 147. Diskette 142 is insertable into diskette drive 141, which is connected to bus 130 by controller 140. Similarly, CD-ROM 147 can be inserted into CD-ROM drive 146, which is connected to bus 130 by controller 145. Finally, the hard disk 152 is part of a fixed disk drive 151, which is connected to bus 130 by controller 150.
User input to the client computer 100 may be provided by a number of devices. For example, a keyboard 156 and a mouse 157 may be connected to bus 130 by keyboard and mouse controller 155. An audio transducer 196, which may act as both a microphone and a speaker, is connected to bus 130 by audio controller 197. It should be obvious to those reasonably skilled in the art that other input devices, such as a pen and/or tablet and a microphone for voice input, may be connected to client computer 100 through bus 130 and an appropriate controller. DMA controller 160 is provided for performing direct memory access to system RAM 110. A visual display is generated by a video controller 165, which controls video display 170.
Client computer 100 also includes a network adapter 190 that allows the client computer 100 to be interconnected to a network 195 via a bus 191. The network 195, which may be a local area network (LAN), a wide area network (WAN), or the Internet, may utilize general-purpose communication lines that interconnect multiple network devices.
Client computer system 100 generally is controlled and coordinated by operating system software, such as the WINDOWS NT� operating system (available from Microsoft Corp., Redmond, Wash.). Among other computer system control functions, the operating system controls allocation of system resources and performs tasks such as process scheduling, memory management, networking and I/O services.
As illustrated in more detail in
The inventive system operates with conventional XML files. A complete XML file normally consists of three components that are defined by specific markup tags. The first two components are optional, the last component is required, and the components are defined as follows:
If all three components are present, and the document instance conforms to the document model defined in the DTD, the document is said to be "valid." If only the last component is present, and no formal document model is present, but each element is property nested within its parent elements, and each attribute is specified as an attribute name followed by a value indicator (=) and a quoted string, document instance is said to be "well-formed." The inventive system can work with and generate well-formed XML documents.
Within the storage manager 206, XML documents are represented by means of data storage partitions which are collectively referred to by the name "Groove Document" to distinguish the representation from conventional XML documents. Each Groove document can be described by a DTD that formally identifies the relationships between the various elements that form the document. These DTDs follow the standard XML format. In addition, each Groove document has a definition, or schema, that describes the pattern of elements and attributes in the body of the document. XML version 1.0 does not support schemas. Therefore, in order to associate a Groove schema document with an XML data document, a special XML processing instruction containing a URI reference to the schema is inserted in the data document. This processing instruction has the form:
Some elements do not have, or require, content and act as placeholders that indicate where a certain process is to take place. A special form of tag is used in XML to indicate empty elements that do not have any contents, and therefore, have no end-tag. For example, a <ThumbnailBox> element is typically an empty element that acts as a placeholder for an image embedded in a line of text and would have the following declaration within a DTD:
Where elements can have variable forms, or need to be linked together, they can be given suitable attributes to specify the properties to be applied to them. These attributes are specified in a list. For example, it might be decided that the <ThumbnailBox> element could include a Location and Size attributes. A suitable attribute list declaration for such an attribute would be as follows:
This tells the computer that the <ThumbnailBox> element includes a required Location entity and may include a Size attribute. The keyword #IMPLIED indicates that it is permissible to omit the attribute in some instances of the <ThumbnailBox> element.
XML also permits custom definition statements similar to the #DEFINE statements used with some compilers. Commonly used definitions can be declared of within the DTD as "entities." A typical entity definition could take the form:
Within the storage manager, each document part is identified by a Uniform Resource Identifier (URI) which conforms to a standard format such as specified in RFC 2396. URIs can be absolute or relative, but relative URIs must be used only within the context of a base, absolute URI. When the document is stored in persistent storage, its parts may be identified by a different STORAGEURI that is assigned and managed by the particular file system in use.
In accordance with the principles of the invention, within each document part, in the storage manager internal memory is represented by a collection of objects. For example, separate elements in the XML document are represented as element objects in the storage manager. This results in a structure that is illustrated in FIG. 3. In
In the storage manager 302, the elements, ElementA—ElementE, are represented as element objects arranged in a hierarchy. In particular, ElementA is represented by ElementA object 322. Each element object contains the text and attributes included in the corresponding XML element. Therefore, element object 322 contains the text 318. Similarly, ElementB 310 is represented by element object 324 and elements ElementC, ElementD and ElementE are represented by objects 326, 328 and 330, respectively. Element object 328, which represents element ElementD, also includes the attribute ID that is included in the corresponding element. Each element object references its child element objects by means of database pointers (indicated by arrows between the objects) into order to arrange the element objects into a hierarchy. There may also be attribute indices, such as index 332 that indexes the ID attribute in element object 328.
The representation of the XML document 300 by means of an object collection allows the storage manager 302 to manipulate its internal representation of the document 300 with a consistent interface that is discussed in detail below. The storage manager 302 can also provide features that are not available in conventional XML documents, such as collection services that are available via a collection manager that is also discussed in detail below.
As described above, Groove documents that contain XML data may have a definition, or schema document, that describes the pattern of elements and attributes in the body of the document. The schema document is stored in a distinct XML document identified by a URI. The schema document has a standard XML DTD definition, called the meta-schema, which is shown below:
Each of the elements in the schema defines information used by the storage manager while processing the document. The "Registry" section forms an XML representation of a two-column table that maps XML element tags to Windows ProgIDs. (In the Common Object Model (COM) developed by Microsoft Corporation, a ProgID is a text name for an object that, in the COM system, is "bound" to, or associated with, a section of program code. The mapping between a given ProgID and the program code, which is stored in a library, is specified in a definition area such as the Windows™ registry.)
This arrangement is shown in
XML document 400 includes the normal XML processing statement 414 that identifies the XML version, encoding and file references. A schema XML processing statement 416 references the schema document 402 which schema document is associated with document 400 and has the name "urn:groove.net:sample.xml" defined by name statement 426. It also includes a root element 418 which defines a name "doc.xml" and the "g" XML namespace which is defined as "urn:groove.net".
Document 400 has three other elements, including element 420 defined by tag "urn:groove.net:AAA", element 422 defined by tag "urn:groove.net:BBB" and element 424 defined by tag "urn:groove.net:NoCode". Element 424 is a simple element that has no corresponding bound code and no corresponding tag-to-ProgID mapping in the schema document 402.
Within the "registry" section defined by tag 428, the schema document 402 has two element-to-COM ProgID mappings defined. One mapping is defined for elements with the tag "urn:groove.net:AAA" and one for elements with the tag "urn:groove.net:BBB." The bound code is accessed when the client application 404 invokes a method "OpenBoundCode( )." The syntax for this invocation is given in Table 15 below and the steps involved are illustrated in FIG. 4B. Invoking the OpenBoundCode( ) method on a simple element, such as element 424 generates an exception. The process of retrieving the bound code starts in step 434 and proceeds to step 436 in which the OpenBoundCode( ) is invoked. Invoking the OpenBoundCode( ) method on an element with the element tag "urn:groove.net:MA" causes the storage manager 406 to consult the registry element 428 in the schema document 602 with the element tag as set forth in step 438. From section 430, the storage manager retrieves the ProgID "Groove.Command" as indicated in step 440. In step 442, the storage manager calls the COM manager 408 in instructs it to create an object with this ProgID. In a conventional, well-known manner, in step 444, the COM manager translates the ProgID to a CSLID using a key in the Windows Registry 410. In step 446, the COM manager uses the CSLID to find a dynamically loadable library (DLL) file in the code database 412 that has the code for the object. Finally, in step 448, the COM manager creates the object and returns an interface pointer for the object to the storage manager 406 which, in turn, returns the pointer to the client application 404. The routine then finishes in step 450. The client application 404 can then use the pointer to invoke methods in the code that use attributes and content in the associated element. The element then behaves like any other COM object. A similar process occurs if the OpenBoundCode( ) method is invoked on elements with the tag "urn:groove.net:BBB."
The "AttrGroup" section defines non-XML characteristics for attributes. An attribute's data type can be defined as some type other than text and the attribute may be indexed to facilitate fast retrieval of the elements that containing it.
The "ElementDecl" section provides a form of element definition similar to the DTD <!ELEMENT> declaration, but allows for extended attribute characteristics and the definition of non-containment element references.
The following example shows the sample portions of a schema document for an XML document that defines a "telespace" that is previously described.
In this example, there are two entries in the Tag to ProgID mapping table. The first maps the tag "g:Command" (which, using XML namespace expansion, is "urn:groove.net.schema.:Command") to the ProgID "Groove.Command." In the section defining attributes, the "ID" attribute is indexed, the data type of the NKey attribute is binary, and so on.
This schema data is represented by element objects and can be accessed and manipulated by the same storage manager element and attribute interface methods used to manipulate documents as described in detail below. In particular, the information that describes a document can be manipulated using the same interfaces that are used for manipulating the document content.
In accordance with another aspect of the invention, sub-documents can be associated with a primary document. Any document may be a sub-document of a given document. If a document contains a sub-document reference to another document, then the referenced document is a sub-document. If two documents contain sub-document references to each other, then each document is a sub-document of the other document. Each sub-document is referenced from the primary document with conventional XML XLink language, which is described in detail at http://www.w3.org/TR/xlink/. Links may also establish a relationship between an all-text XML document and a binary sub-document. Binary documents do not have links to any kind of sub-document. If the link is to a document fragment, a subdocument relationship is established with the document that contains the fragment. The relationship of documents and sub-documents is illustrated in FIG. 5.
For example, main document 500 contains links 502 which include a link, represented by arrow 510, to document 504 and a link, represented by arrow 508, to a binary document 506. Documents 504 and 506 are thus sub-documents of document 500. Document 504, in turn, contains links 512 which include a link, represented by arrow 514 to document 516 with content 518. Document 516 is a sub-document of document 500. Document 506 contains binary content 520 and, therefore, cannot have links to sub-documents.
Sub-document links follow the standard definition for simple links. An exemplary element definition of a link is as follows:
It is also possible to establish a sub-document relationship without using the above definition by adding to a document an XML link which has an xml:link attribute with a value "simple", and a href attribute. Such a link will establish a sub-document relationship to the document identified by a URI value in the href attribute.
Given the relationships from a document to its sub-documents, it is possible to make a copy of an arbitrary set of documents and sub-documents. Within a single storage service, it may be possible to directly perform such a copy. To cross storage services or to send multiple documents to another machine, the entire hierarchy of such documents must be "describable" in a serialized fashion. The inventive Storage Manager serializes multiple documents to a text representation conforming to the specification of MIME Encapsulation of Aggregate documents, such as HTML (MHTML) which is described in detail at ftp://ftp.isi.edu/in-notes/rfc2557.txt/.
The following data stream fragment is an example of a document and a referenced sub-document as they would appear in an MHTML character stream. In the example, "SP" means one space is present and "CRLF" represents a carriage return-line feed ASCII character pair. All other characters are transmitted literally. The MIME version header has the normal MIME version and the Groove protocol version is in a RFC822 comment. The comment is just the word "Groove" followed by an integer. The boundary separator string is unique, so a system that parsed the MIME, and then each body part, will work correctly. The serialized XML text is illustrated in UTF-8 format, but it could also be transmitted in WBXML format. The XML document has a XML prefix, which includes the version and character encoding. The binary document is encoded in base64.
Unlike most XML processors, such as document editors or Internet browsers, the storage manager provides for concurrent document operations. Documents may be concurrently searched, elements may be concurrently created, deleted, updated, or moved. Copies of element hierarchies may be moved from one document to another. In most XML processors, all of the updates to a document are driven by a single user, who is usually controlling a single thread within a single process on a single computer.
The storage manager maintains XML document integrity among many users updating the same document, using multiple threads in multiple processes. In a preferred embodiment, all of the updates occur on a single computer, but, using other different, conventional inter-processor communication mechanisms, other operational embodiments are possible.
Each application program 606 and 616 interfaces with a storage manager designated as 605 and 615, respectively. In process 600, the storage manager comprises a storage manager interface layer 608 which is used by application program 608 to control and interface with the storage manager. It comprises the database, document, element and schema objects that are actually manipulated by the application. The API exported by this layer is discussed in detail below. The storage manager 605 also includes distributed virtual object (DVO) database methods 610, DVO methods for fundamental data types 612, DVO common system methods 609 and distributed shared memory 614. Similarly, the storage manager operating in process 602 includes transaction layer 618, DVO database methods 620, DVO methods for fundamental data types 622, DVO common system methods 617 and distributed shared memory 624.
The two processes 600 and 602 communicate via a conventional message passing protocol or inter-process communication (IPC) system 604. For processes that run in a single computer, such a system can be implemented in the Windows� operating system by means of shared memory buffers. If the processes are running in separate computers, another message passing protocol, such as TCP/IP, can be used. Other conventional messaging or communications systems can also be used without modifying the operation of the invention. However, as is shown in
A number of well-known DSM systems exist and are suitable for use with the invention. In accordance with a preferred embodiment, the DSM system used with the storage manager is called a C Region Library (CRL) system. The CRL system is an all-software distributed shared memory system intended for use on message-passing multi-computers and distributed systems. A CRL system and code for implementing such as system is described in detail in an article entitled "CRL: High-Performance All-Software Distributed Memory System", K. L. Johnson, M. F. Kaashoek and D. A. Wallach, Proceedings of the Fifteenth Symposium on Operating Systems Principles, ACM, December 1995; and "CRL version 1.0 User Documentation", K. L. Johnson, J. Adler and S. K. Gupta, MIT Laboratory for Computer Science, Cambridge, Mass. 02139. August 1995. Both articles are available at Web address http://www.pdos.lcs.mit.edu/crl/.
Parallel applications built on top of the CRL, such as the storage manager, share data through memory "regions." Each region is an arbitrarily sized, contiguous area of memory. Regions of shared memory are created, mapped in other processes, unmapped, and destroyed by various functions of the DSM system. The DSM system used in the present invention provides a super-set of the functions that are used in the CRL DSM system. Users of memory regions synchronize their access by declaring to the DSM when they need to read from, or write to, a region, and then, after using a region, declaring the read or write complete. The effects of write operations are not propagated to other processes sharing the region until those processes declare their need for it. In addition to the basic shared memory and synchronization operations, DSM provides error handling and reliability with transactions. The full interface to inventive DSM is shown in Table 1.
Each storage manager 605 and 615 comprises a DSM node that uses one or more DSM regions (not shown in
Consequently, within the DSM synchronization protocol, a single node is identified as a "home node" for each region. Within the many processes running the storage manager on a single computer, one process, called the "home process", is the process that performs all disk I/O operations. To reduce the amount of data movement between processes, the home process is the home node for all regions. Other implementations are possible, in which any node may be the home for any region and any process may perform disk I/O. However, for personal computers with a single disk drive, allowing multiple processes to perform disk I/O introduces the need for I/O synchronization while not alleviating the main performance bottleneck, which is the single disk.
In accordance with the DSM operation, if a process has the most recent copy of a region, then it can read and write into the region. Otherwise, the process must request the most-recent copy from the home process before it can read and write in the region. Each DSM system 614, 624 interfaces with the message passing system 604 via an interface layer called an internode communication layer (615, 625) which isolates the DVM system from the underlying transport mechanism. It contains methods that send messages to a broadcast group, and manipulate addresses for the corresponding process and the home process.
The inventive storage manager uses shared objects as the basis for XML objects. Many systems exist for sharing objects across processes and computers. One such object-sharing model is based on the use of the shared memory facilities provided by an operating system. One of the biggest drawbacks of such a shared memory model is unreliability due to memory write failures that impact the integrity of other processes. For example, if one process is in the process of updating the state of an object and the process fails before setting the object to a known good state, other processes will either see the object in an invalid state or may blocked indefinitely waiting for the failed process to release its synchronization locks. The shared memory model also suffers from the locality constraints of shared memory in a tightly coupled multi-computer—it provides no way to share objects over a network.
Another model that provides distributed object sharing and remote method invocation is the basis for the distributed object management facilities in Java or the Object Management Group's CORBA system. Although providing the ability to share objects over a computer network, clients of such systems need to be aware of whether an object is local or remote—objects are not location independent. Performance is another drawback of this approach. All operations on an object need to be transmitted to the object server, since the server contains the only copy of the object state and serves as the synchronization point for that data.
In order to overcome these drawbacks, the inventive storage manager uses a distributed virtual object (DVO) system to provide the primitive data types that XML object types are built upon. The DVO system also provides its callers with the illusion that all data is reliably contained in one process on a single computer node, even though the data may be in multiple processes on many computers or may truly be just in one process on a single computer node.
The DVO object-sharing model is shown in FIG. 7. All processes, on all computers, that are sharing an object have the same method code. For example, process 700 and process 702 in
The DVO system provides basic objects that may be used as building blocks to manage XML documents for the storage manager and is divided into three functional pieces. The DVO database 610 contains objects that handle the DVO local context in each process and the shared tables that contain information about open databases and documents contained within those databases. In DVO, "databases" are conceptual storage containers and may channel objects that are ultimately stored in any kind of storage service 609. DVO documents are associated with XML or binary documents, which are visible to a client of the storage manager. DVO documents are also used to contain the indices and metadata associated with a collection.
DVO types 612 is a set of object classes that can be used within DVO documents to implement higher-level data model constructs. DVO types range from simple data containment objects through complex, scalable index structures. Each DVO type is implemented with two classes—one is a "non-shared class" that uses memory pointers in object references and the other is a "shared class" that uses logical addresses, called database pointers, for object references. The "shared class" has two sub-forms—one is the representation of the object in a shared DSM region and the other is the representation of the object stored on-disk in an object store database. The DVO system 607 provides methods to transfer objects between their shared and non-shared implementations.
The different DVO types are shown in Table 2.
The DVO system 607 objects isolate the upper levels of DVO from physical storage and process locality issues. The DVO system objects use DSM for invoking and handling requests to and from the home process. Requests include operations such as opening, closing, and deleting a database, finding documents in a database, and opening, closing, deleting, and writing database documents. The DVO system 607 in the master process 600 can also retrieve DVO objects from a storage service 609. A storage service, such as service 609, is a utility program that stores and retrieves information from a persistent medium and is responsible for the physical integrity of a container, database or file. It ensures that all updates are durable and that all internal data structures (e.g., redirection tables, space allocation maps) are always consistent on disk. Other processes, such as process 602 cannot access the storage service 609 directly, but can access the system indirectly via its DSM regions 624.
The storage manager 605 can operate with different types of physical storage systems, including container or object stores, stream file systems and ZIP files. In order to achieve atomic commits, the object store storage service can be implemented using page-oriented input/output operations and a ping-pong shadow page table.
Individual storage manager methods are atomic. Multiple storage manager operations, even operations on different documents, may be grouped into "transactions." Transactions not only protect XML data integrity, but they also improve performance because they enable the storage manager to reduce the number of region lock operations and reduce the amount of data movement over the message passing system.
The storage manager supports both read-write and read-only transactions built on DSM synchronization primitives described in the DSM documentation referenced above, which primitives insure consistency in multiple processes or computers. Read-write transactions provide for the atomicity and consistency of a set of database read and write operations. Each region that is changed as part of a transaction will be kept in a "locked" state until the transaction is committed or aborted. This prevents operations that are not part of the transaction from seeing the changes. Further, each transaction stores a "before image" of the regions it modifies so that, if the transaction is aborted (as a result of an explicit API call or an exception), the effects of the transaction can be undone. Depending on the performance requirements, an alternative implementation would write undo information rather than storing the full "before image." A read-only transaction uses the same interface as a read-write transaction. A read-only transaction ensures that multiple read operations are consistent. Like other transactions, it uses DSM functions to keep all read regions in a "read state" until it is finished.
In addition, checkpoints can be used to ensure that changes are persistent and provide durability for storage manager operations. A checkpoint may be performed at any time. Checkpoints are used in conjunction with data recovery logging. All operations write "redo" information to a sequential recovery log file when they are committed. When the checkpoint is committed, the recovery log file will be flushed to persistent storage and will ensure that the operations can be recovered. Since transactions do not write "redo" information until they are committed, if a checkpoint operation is commenced in the middle of a transaction, the transaction operations will not be flushed.
Transactions are scoped to a thread and a database. Once a transaction is started on a thread for a particular database, that transaction will be automatically used for all subsequent storage manager operations on that database and thread. An extension of conventional operating system threads is used, so that transactions correctly handle calls that need to be marshaled to other threads, for example, a user interface thread, using the Groove system's simple marshaler. Storage manager calls made on a thread and database that doesn't have a transaction started will cause the storage manager to create a "default transaction" that will be committed just before the call ends. Alternatively, starting a new transaction on a thread and database that already has an existing transaction in progress will cause the new transaction to automatically "nest" in the existing transaction. Nested transactions provide the ability to roll back the system within the outer transaction. In particular, inner, nested transactions are not finally committed until the outermost transaction is committed. For example, if a nested transaction is committed, but the containing transaction is later aborted, the nested transaction will be aborted.
In a preferred embodiment of the invention, the storage manager is implemented in an object-oriented environment. Accordingly, both the storage manager itself and all of the document components, such as documents, elements, entities, etc. are implemented as objects. These objects, their interface, the underlying structure and the API used to interface with the storage manager are illustrated in FIG. 8. The API is described in more detail in connection with
Other client components may need to be aware of when documents are created in or deleted from storage manager. Accordingly, the storage manager provides an interface to an interest-based notification system for those client components via notification API 800. The notification system 806 provides notifications to client components that have registered an interest when a document is created or deleted.
Document data is represented by a collection of objects including database objects, document objects, element objects and schema objects 808. The objects can be directly manipulated by means of the document manipulation API 802.
The document related objects 808 are actually implemented by the distributed virtual object system 810 that was discussed in detail above. The distributed virtual object system 810 can also be manipulated by element queue and RPC objects 812 under control of the queue and RPC API 804.
The distributed virtual object system 810 communicates with the distributed shared memory via interface 814 and communicates with the logging operations via interface 816. Similarly, the distributed virtual object system can interact with the storage services via interface 818.
The following is a description of the interfaces for each of the objects used to implement a preferred embodiment of the inventive storage manager. These object are designed in accordance with the Common Object Model (COM) promulgated by Microsoft Corporation, Redmond, Wash., and can be manipulated in memory as COM objects. However, COM is just one object model and one set of interface methodologies. The invention could also be implemented using other styles of interface and object models, including but not limited to the Java and CORBA object models.
Another interface 902 (IGrooveStorageURISyntax) is used by a client of a storage manager that needs to perform operations on parts of standard names, which are in the form of Uniform Resource Identifiers (URIs). Table 4 includes the methods for the IGrooveStorageURISyntax interface.
Another interface 1002 (IGrooveRPCServerCallback) is used by a client of a storage manager that needs to handle remote procedure calls (RPCs) on elements within XML documents. RPC server callbacks are a sub-class of the "util" base class (described below), that is, all of the methods for IGrooveElementUtilBase also apply to IGrooveRPCServerCallback. Table 6 defines the methods used in the storage manager RPC server callback interface.
FIGS. 11,12 and 13 illustrate the document manipulation interfaces and the queue and RPC interfaces. In particular,
Table 8 illustrates the methods for an interface 1102 (IGrooveCrossProcessSemaphore) for a client of a storage manager that needs to synchronize access among processes.
Table 9 illustrates an interface 1104 (IGrooveTransaction) for a client of a storage manager that needs to group operations within a database. Transactions are a subclass of cross-process semaphores, that is, all of the methods for IGrooveCrossProcessSemaphore also apply to IGrooveTransaction. The storage manager transaction interface includes the following methods:
Table 11 illustrates an interface 1202 (IGrooveXMLDocument) for a client of a storage manager that needs to manage XML documents within a database. XML documents are a sub-class of documents, that is, all of the methods for IGrooveDocument also apply to IGrooveXMLDocument. The storage manager XML document interface includes the following methods:
Table 12 illustrates the methods for an interface 1204 (IGrooveBinaryDocument) for a client of a storage manager that needs to manage binary documents within a database. Binary documents are a sub-class of documents, that is, all of the methods for IGrooveDocument also apply to IGrooveBinaryDocument.
Table 13 illustrates an interface 1206 (IGrooveLocator) for a client of a storage manager that needs to search for elements using locator queries as defined in a specification called XSLT. Details of the XSLT specification can be found at http://www.w3.org/TR/xslt. The storage manager locator interface includes the following methods:
Table 14 illustrates an interface 1208 (IGrooveTransform) for a client of a storage manager that needs to perform XML document transformations as defined in XSLT. The storage manager transform interface includes the following methods:
Table 15 illustrates an interface 1210 (IGrooveElement) which allows a client of a storage manager to manipulate elements within XML documents. The storage manager element interface includes the following methods:
Table 16 illustrates the methods for an interface 1212 (IGrooveReadOnlyElement) for a client of a storage manager that needs to manipulate read-only elements within XML documents. Read-only elements are a sub-class of elements, that is, all of the methods for IGrooveElement also apply to IGrooveReadOnlyElement.
Table 17 illustrates an interface 1214 (IGrooveElementReference) for a client of a storage manager that needs to manipulate element references within XML documents. The storage manager element reference interface includes the following methods:
An interface 1216 (IGrooveElementUtilBase) for use within the storage manager's other interfaces is shown in Table 18. The IGrooveElementUtilBase is not an interface for commonly-used objects, but is intended to serve as the base class for other sub-classes (shown in
Table 19 illustrates an interface 1218 (IGrooveBoundCode) for a client of a storage manager that needs to handle executable code associated with elements within XML documents. The storage manager bound code interface includes the following methods:
Table 21 illustrates an interface 1306 (IGrooveElementReferenceQueue) for a client of a storage manager that needs to manipulate queues on element references within XML documents. Element reference queues are a sub-class of the "util" base class, that is, all of the methods for IGrooveElementUtilBase also apply to IGrooveElementReferenceQueue. The storage manager element reference queue interface includes the following methods:
Table 22 illustrates an interface 1310 (IGrooveMultiReaderElementQueueReader) for a client of a storage manager that needs to remove elements from multi-reader queues on elements within XML documents. Multi-reader element queues are a subclass of the "util" base class, that is, all of the methods for IGrooveElementUtilBase also apply to IGrooveMultiReaderElementQueueReader. The storage manager multi-reader element queue reader interface includes the following methods:
Table 23 illustrates an interface 1314 (IGrooveMultiReaderElementQueueWriter) for a client of a storage manager that needs to add elements to multi-reader queues on elements within XML documents. Multi-reader element queues are a sub-class of the "util" base class, that is, all of the methods for IGrooveElementUtilBase also apply to IGrooveMultiReaderElementQueueWriter. The storage manager multi-reader element queue writer interface includes the following methods:
Table 24 illustrates an interface 1318 (IGrooveMultiReaderElementReferenceQueueWriter) for a client of a storage manager that needs to add element references to multi-reader queues on elements within XML documents. Multi-reader element reference queues are a sub-class of the "util" base class, that is, all of the methods for IGrooveElementUtilBase also apply to IGrooveMultiReaderElementReferenceQueueWriter. The storage manager multi-reader element reference queue writer interface includes the following methods:
Table 25 illustrates an interface 1316 (IGrooveMultiReaderElementReferenceQueueReader) for a client of a storage manager that needs to remove element references from multi-reader queues on elements within XML documents. Multi-reader element reference queues are a sub-class of the "util" base class, that is, all of the methods for IGrooveElementUtilBase also apply to IGrooveMultiReaderElementReferenceQueueReader. The storage manager multi-reader element reference queue reader interface includes the following methods:
Table 26 illustrates an interface 1304 (IGrooveRPCClient) for a client of a storage manager that needs to perform remote procedure calls (RPCs) on elements within XML documents. RPC clients are a sub-class of the "util" base class, that is, all of the methods for IGrooveElementUtilBase also apply to IGrooveRPCClient. The storage manager RPC client interface includes the following methods:
An interface 1308 (IGrooveRPCServerThread) for a client of a storage manager that needs to handle remote procedure calls (RPCs) on elements within XML documents is shown in Table 27. RPC server threads are a sub-class of the "util" base class, that is, all of the methods for IGrooveElementUtilBase also apply to IGrooveRPCServerThread. The storage manager RPC server callback interface has no methods of its own, only those inherited from IGrooveElementUtilBase. It is provided as a distinct interface for type checking.
Table 28 illustrates an interface 1312 (IGrooveRPCServer) for a client of a storage manager that needs to handle remote procedure calls (RPCs) on elements within XML documents. RPC servers are a sub-class of the "util" base class, that is, all of the methods for IGrooveElementUtilBase also apply to IGrooveRPCServer. The storage manager RPC server interface includes the following methods:
The following tables illustrate allowed values for the enumerated data types listed in the above interfaces. In particular, Table 29, illustrates allowed values for the GrooveSerializeType enumerated data type.
Table 30 illustrates the allowed values for the GrooveSerializeOptions enumerated data type.
Table 31 illustrates the allowed values for the GrooveParseOptions enumerated data type.
Table 32 illustrates the allowed values for the GrooveContentType enumerated data type.
Table 33 illustrates the allowed values for the GrooveXLinkShow enumerated data type.
Table 34 illustrates the allowed values for the GrooveXLinkActuate enumerated data type:
Table 35 illustrates the allowed values for the GrooveXLinkSerialize enumerated data type.
Table 36 illustrates the allowed values for the GrooveMultiReaderQueueOptions enumerated data type.
The fundamental data model of the storage manager is XML. XML is a semi-structured, hierarchical, hyper-linked data model. Many real world problems are not well represented with such complex structures and are better represented in tabular form. For example, spreadsheets and relational databases provide simple, tabular interfaces. In accordance with one aspect of the invention, in order to simplify the representation, XML structures are mapped to a tabular display, generally called a "waffle". The waffle represents a collection of data. This mapping is performed by the collection manager, a component of the storage manager.
Collections are defined by a collection descriptor, which is an XML document type description. Like a document schema, the collection descriptor is a special kind of document that is stored apart from the collection data itself. There are many sources of collection data, but the primary source of collection data is a software routine called a record set engine. Driven by user commands, the record set engine propagates a set of updates for a collection to the collection manager. Based on those updates, the collection manager updates index structures and may notify waffle users via the notification system. When a waffle user needs updated or new collection data, the waffle user will call the collection manager to return a new result array containing the updated data. The waffle user may also navigate within the collection using cursors.
The following list shows the XML DTD contents for a collection descriptor document:
Every Collection has a name that is used to reference the collection. The Start attribute specifies how to find the "root" of the collection. A collection with a record root is just a set of records, whereas a collection that starts with an index is navigated through the index and then the set of records. An index may be a concordance or full-text. The optional Location attribute is a relative URL that identifies where in the root to actually begin.
A Level defines the contents of part of the output hierarchy. A level consists of the columns in the level, the ordering or grouping of records in the level, and definitions of sub-levels. A level is associated with records in the source record stream through the Mapping attribute. If the mapping is Direct, a level represents a single source record type. If the mapping is Flatten, the level contains a source record type and all descendants of that record. The Flatten mapping may only be specified on the only or lowest level in the collection. The Links attribute specifies how records with link attributes should handled. If links are Traversed, the record will be output as a distinct level. If links are Embedded, the child record of the source record will appear as though it is part of the source record.
A Column defines the mapping between a source field and the output array column. The Source attribute is a XSLT path expression in the source records. The Result attribute is a name of the field in the result array. The MultiValue and MultivalueSeparator attributes define how multi-valued source values are returned in the result.
Every collection must have at least one defined order. The order can be sorted collation or multi-level grouping with aggregate functions.
The SortColumn element defines the collation characteristics within a SortDescription. The Source attribute defines the name of the output column to be sorted. The Order must be either Ascending or Descending. The Strength and Decomposition values are input parameters that have the same meaning as defined in Unicode.
The two kinds of grouping are by unique values and by units. When a collection is grouped by unique values, all records with the same GroupColumn values will be together in the same group—breaks between groups will occur at the change of GroupColumn values. When a collection is grouped by units, all records with the same GroupColumn values, resolved to the value of GroupUnits, will be together in the same group. For example, if GroupUnits is "Days", all records for a given day will be in the same group. If AtGroupBreak is specified, a synthetic row will be returned that contains the result of the aggregate function at each value or unit break value.
The GroupColumn identifies the result column to be grouped.
The Interval identifies the two fields in each record that define a range. The datatypes of the Start and End columns must be either numeric or datetime.
The following example shows a collection descriptor document for a simple document discussion record view with six collation orders:
As is the basic storage manager, the collection manager is implemented in an object-oriented environment. Accordingly, both the collection manager itself and all of the collection components including collections, waffles, cursors, result arrays and the record set engine are implemented as objects. These objects, their interface, the underlying structure and the API used to interface with the collection manager are illustrated in FIG. 14. The API is described in more detail in connection with FIG. 15. Referring to
Other client components may need to be aware of changes within components, such as waffles, managed by the collection manager. Accordingly, the collection manager provides an interface 1400 to an interest-based notification system 1406 for those client components. The notification system 1406 provides notifications to client component listeners who have registered an interest when values within objects 1408 that represent a collection change.
Collection data is represented by a set of objects including collection objects, record objects, waffle objects, cursor objects and result array objects 1408. The objects can be directly manipulated by means of the collection manipulation API 1402. The collection related objects 1408 are actually implemented by the distributed virtual object system 1410 that was discussed in detail above.
FIG. 15 and the following tables comprise a description of the interfaces for each of the objects used to implement a preferred embodiment of the inventive collection manager. As with the storage manager implementation, these objects are designed in accordance with the Common Object Model (COM), but could also be implemented using other styles of interface and object model.
Table 37 illustrates an interface 1500 (IGrooveCollectionManager) for a collection manager that encapsulates the basic framework for the major operations performed on a collection. The collection manager interface includes the following methods:
Table 38 illustrates an interface 1502 (IGrooveCollection) for a collection that encapsulates the basic framework for the major operations performed on a collection. The collection interface includes the following methods:
Table 39 illustrates an interface 1504 (IGrooveCollectionListener) for a client of a collection manager that wishes to be notified whenever "significant" events happen within the collection. Significant events may occur at any time and include updating, addition, deletion, reparenting, or a change in ordinal position of a collection element. The collection manager listener interface includes the following methods:
Table 40 illustrates an interface 1506 (IGrooveCollectionCursor) for a client of a collection manager that wants to move a cursor within the collection. A collection may have one or more cursors active at any time. The collection manager cursor interface includes the following methods:
The following tables illustrate allowed values for the enumerated data types listed in the above interfaces. In particular, Table 41, illustrates allowed values for the GrooveCollationOrder enumerated data type:
Table 42 illustrates the allowed values for the GrooveCollectionNavigationOp enumerated data type:
Table 43 illustrates the allowed values for the GrooveCollectionCursorPosition enumerated data type:
Table 44 illustrates the allowed values for the GrooveCollectionRowType enumerated data type:
Table 45 illustrates the allowed values for the GrooveCollectionSynthType enumerated data type:
Table 46 illustrates the allowed values for the GrooveCollectionUpdateOp enumerated data type:
Table 47 illustrates the allowed values for the GrooveCollectionWaffieSystem enumerated data type:
Table 48 illustrates the allowed values for the GrooveCollectionRecordID enumerated data type:
Table 49 illustrates the allowed values for the GrooveSortOrder enumerated data type:
A software implementation of the above-described embodiment may comprise a series of computer instructions either fixed on a tangible medium, such as a computer readable media, e.g. a diskette, a CD-ROM, a ROM memory, or a fixed disk, or transmissible to a computer system, via a modem or other interface device over a medium. The medium can be either a tangible medium, including, but not limited to, optical or analog communications lines, or may be implemented with wireless techniques, including but not limited to microwave, infrared or other transmission techniques. It may also be the Internet. The series of computer instructions embodies all or part of the functionality previously described herein with respect to the invention. Those skilled in the art will appreciate that such computer instructions can be written in a number of programming languages for use with many computer architectures or operating systems. Further, such instructions may be stored using any memory technology, present or future, including, but not limited to, semiconductor, magnetic, optical or other memory devices, or transmitted using any communications technology, present or future, including but not limited to optical, infrared, microwave, or other transmission technologies. It is contemplated that such a computer program product may be distributed as a removable media with accompanying printed or electronic documentation, e.g., shrink wrapped software, pre-loaded with a computer system, e.g., on system ROM or fixed disk, or distributed from a server or electronic bulletin board over a network, e.g., the Internet or World Wide Web.
Although an exemplary embodiment of the invention has been disclosed, it will be apparent to those skilled in the art that various changes and modifications can be made which will achieve some of the advantages of the invention without departing from the spirit and scope of the invention. For example, it will be obvious to those reasonably skilled in the art that, although the description was directed to a particular hardware system and operating system, other hardware and operating system software could be used in the same manner as that described. Other aspects, such as the specific instructions utilized to achieve a particular function, as well as other modifications to the inventive concept are intended to be covered by the appended claims.
Patent Citations
Non-Patent Citations
Referenced by
Legal Events
Original Image


text:
Speaker recommendations for e-kits
View Single Post
Senior Member
Join Date: Nov 2012
Location: Toronto, Canada
Posts: 195
Re: Speaker recommendations for e-kits
I did a similar thing at home. I bought a small Behringer 8 channel mixer and a pair of Mackie TH-15a Thump powered speakers. Cost about $800 Canadian dollars. Don't forget you also need cables. The mackies can take a single line in directly. I get pretty good sound, although to really get the bass going I'd pick up a subwoofer somewhere down the line. I bought one speaker and the mixer for my e-drums, and added the second one later.
If you don't need to have speakers, I use a jamhub for band practices at my house now. Every one runs their instruments and mics directly into the jam hub, and you play listening to headphones. You have individual volume control over all the other instruments/musicians.
It's transformed jamming at home for my band. You could have one e-kit panned left, and one right in your headphones for playing together. They have a couple different models, depending on the number of inputs you need.
Or finally you could pick up a keyboard amp, many of them have a couple input channels, but the sound quality can vary a lot, so I'd try them with drums plugged in to see if you like the sound.
The link above to the vdrums site the othe poster mentioned is excellent information.
Gretsch Catalina Maple Amber 7 pc, Sabian HHX Evolution cymbals
Yamaha DTX950K
Last edited by whiteknightx; 10-15-2013 at
View Public Profile
Send a private message to whiteknightx
Find all posts by whiteknightx

subset: commoncrawl


text:
Designer Erin Feasby of Feasby & Bleeks shows off an updated galley kitchen with modern, graphic appeal. See how she created impact with high-contrast paint, a marble chevron backsplash, matte black fixtures and burnished gold hardware.
Design, Feasby & Bleeks; carpenter and general contractor, Andy Schollig, Lakeland Millwork (416) 427-9050; backsplash, Creekside Tile Company; paint, Cloud Cover OC-25, Wrought Iron 2124-10, Benjamin Moore; faucet, Solna Single Handle Single Hole Pull-Down Kitchen Faucet With Smarttouch, Brizo; fabric by Kelly Wearstler for Groundworks, Lee Jofa; custom sewing, Blinds, Drapes & Bedding; painter, Kyle Barber, INDIANA Painting (416) 303-3053; pendant light above sink, Universal Lamp; hardware, Lee Valley.
Lynda Reeves
Sheri Graham Delagran
Jason Stickley
Ryan Louis
Patrick Malone
Erin Gulas
Michael Zimmermann
Julie Whyte
Thanks to
Erin Feasby
Copyright 2013


text:
Answer Keys To The Lorax Worksheets
Free shipping! Shop boots, sandals and more. Non-food, chewable surface for practicing biting and chewing skills. Wish, you may view the north carolina general statute. The pga tour hyundai tournament of champions each january answer keys to the lorax worksheets. At homefully automated benchtop x-ray for small molecule 3d. Hair to dry naturally or curl them answer keys to the lorax worksheets.


text:
Generic BSN
Why a BSN from the University of Florida?
The Bachelor of Science in Nursing (BSN) degree is the critical first step for a career in professional nursing. The American Association of Colleges of Nursing (AACN), the national voice for baccalaureate and graduate nursing programs, recognizes the BSN degree as the minimum educational requirement for professional nursing practice.
Nurses with BSN degrees are well-prepared to meet the demands placed on today's nurse. BSN nurses are prized for their skills in critical thinking, leadership, case management, and health promotion, and for their ability to practice across a variety of inpatient and outpatient settings.
The UF College of Nursing offers the flagship nursing program in the state of Florida and gives nursing students access to a unique variety of educational and clinical experiences as well as a wealth of expert nursing faculty and technological resources. UF nursing students have excellent opportunities to explore nursing research and science, be professionally involved with student and professional governance, and have access to clinical experiences with patients across the life and cultural span.
The baccalaureate program at the University of Florida College of Nursing is accredited by the
Commission on Collegiate Nursing Education, One Dupont Circle, NW, Suite 530, Washington, DC 20036, (202) 887-6791.


text:
Lake Michigan College is committed to providing students and families with the best information and processing alternatives available regarding student borrowing. In an effort to rule out any perceived or actual conflict of interest between the College and education loan lenders, LMC has adopted the following student lending code of conduct.
Lake Michigan College:
1 (800) 252-1562 or (269) 927-1000


text:
Gold Cup: US ready for Panama rematch in semifinals
WASHINGTON — The United States men's national team is through to the semifinals of the Gold Cup, where they will face upstarts Panama on Wednesday in Houston. It's a rematch of the Americans' opening-round defeat, a shocking 2-1 score line that was the first group-stage loss ever for the US.
You might think the Yanks want revenge, but they sound more focused on reaching the final in Los Angeles than exacting a victory against the Central American squad.
"You know, I don't really mind who wins," Sacha Kljestan told MLSsoccer.com after his side's 2-0 victory over Jamaica at RFK Stadium. "I don't really care. We're just looking to get stronger as the tournament moves on."
The US played their best match of the Gold Cup on D.C. United's home pitch, dominating control and creating a number of chances against their quick but overmatched opponents. It was the type of performance Bob Bradley needed to see from his team, one they can build on while progressing to the next round.
In Tim Howard's mind, another game against the Panamanians presents a chance for the US to show they can be better than they were a week ago in Florida.
"We didn't perform to our standard against Panama in Tampa and it's an opportunity to put things right," the American goalkeeper said. "If they are in front of us, we'll do the business. If it's not them, we're solely focused on getting to LA. No matter who stands in our way, we're very confident. Although they played well on the night, they're going to have to do it again and we're up for it."
The first goal, of course, is finding a way to Pasadena. But the US players probably won't complain if they end Panama's Gold Cup quest while accomplishing that task.


text:
IntelliGenesis LLC
7164 Columbia Gateway Drive, Suite 120
Columbia, Maryland 21046
Web Home Page:
Angie Lienert
Chuck Mosser
Staffing Manager:
Alicia Belanger
Business Focus:
About IntelliGenesis IntelliGenesis LLC is a veteran-owned, woman-owned company established in 2007. We provide Intelligence Analysis, Artificial Intelligence, Computer Network Operations, and Cyber related Internal Research and Development (IR&D) services that result in higher efficiency, automation, and improved analysis, protection, and defense of National Security missions. Growing Fast Our employee force has more than tripled since we started in April 2007. Our office space has expanded from 100 square feet to 10,000 square feet of brand new office space in Columbia Gateway. Company Strengths -Skilled and innovative people -Broad and deep relevant skill sets -Solid recruitment, management and program controls in place -Measurable Outcomes Mission To improve the analysis, protection, and defense of National Security missions through our partnership with the customer, our commitment to the mission, and our dedication to our employees. Vision IntelliGenesis strives to be THE small business to work for in MD, GA, and TX by maximizing staffing on our existing contracts; aggressively pursuing prime and teaming opportunities supporting the IC; making corporate investments to improve our technical IR&D capabilities; and providing the best customer service possible to our employees, teammates, and customers.
Products/ Services:
Technologies & Services We are in a niche business. Some companies' strength is in data mining; others specialize in direct support to mission; we bridge the gap and bring the two strengths together with operationally relevant technologies. We understand the needs of our clients so we make sure that our products are designed, deployed and improved with the intelligence analyst in mind from the beginning. Just part of what we do is technology; the other part is education, teaching people to use our tools at an optimum level. Technologies We have made a corporate investment in research and development to meet customer needs and challenges with emerging technologies. Our team of Engineers, Analysts and Interns collaboratively meet customer needs and challenges using emerging technologies. 2013 IR&D: Fusion in a Cloud Distributed semantic text processing and bayesian inference for real-time situational awareness scenarios 2012 IR&D: Cyber "Common Cold" Using Artificial Intelligence techniques to detect network intrusions 2012 IR&D: Cyber Anti-Hacking Techniques Protection against reverse engineering using software obfuscation Services We provide intelligence analysis, software development, artificial intelligence, and computer network operations that result in higher efficiency, automation, and improved analysis, protection, and defense of National Security missions. Intelligence Analysis -Analysts directly support the cryptologic posture of the warfighter -Support cyber infrastructure and vulnerability analysis with non-kinetic solutions in a Digital Network environment -Geospatial targeting and mapping support -SIGINT Research & Target Development -GSM Collection Analysis -All Source & All Source SIGINT Software Engineering and Integration We provide full life-cycle software development capabilities from test-driven development to agile methodologies -Cloud Development (Hadoop MapReduce, HDFS, Accumulo, Pig, Hive, Mahout) -Software Development (Java, C++, C, Python, Ruby, Scala) -Artificial Intelligence Development (HMM, Genetic Algorithms, Expert Systems, NLP, Machine Learning) -Database Development (Oracle, SQL, PL/SQL, MySQL) Artificial Intelligence We apply Artificial Intelligence techniques (AI) in both IR&D and contract programs to automate new and existing manual processes in operational environments -Expert Systems--Simulate human decision process -Natural Language Processing--Extract meaning from text -Evolutionary Algorithms--Optimization of complex systems through evolution -Unstructured text classification and extraction CNO We perform Computer Network Operations (CNO) comprising of Computer Network Attack (CNA), Computer Network Defense (CND), and related Computer Network Exploitation (CNE) enabling operations.
Memberships & Affiliations We partner with some top ranking organizations. Our education support gives employees great opportunities to work closely with local and national networks. Employees can become certified in a number of fields, volunteer with an organization in their field of expertise, or become involved in the local community. It is important to IntelliGenesis to be a good neighbor. AFCEA AFCEA Central Maryland Chapter Anne Arundel Community College Chesapeake Regional Tech Council Cloudera Fort Meade Alliance Gemstone Greater Baltimore Technology Council IASBA - Information Assurance Small Business Association Maryland Marketing Oracle Partner Network
Business Categories:
Analytic Services
App Development
Artificial Intelligence
Business Information Services/Systems
Cloud Computing
Communications Systems
Computer Graphics
Data Communications
Data Storage
Engineering & Technical Support
Homeland Security
Information Management
Information Security
Information Systems
Intelligence Support Systems
Intelligent Networks
Internet Technologies
Intrusion Detection
Market Research
Mission Planning
Network Management
Open Systems
Operations & Maintenance
Product Installation & Maintenance
Secure Communications
Security Assessments
Security Devices
Security Management
Software Engineering
Systems Engineering/Technical Assistance
Systems Integration
Tactical Data Systems
Threat Assessment
Small Business Status:
Small Business
Veteran Owned
Woman Owned
NAICS Industry:
All Other Professional, Scientific, and Technical Services
Computer Systems Design Services
Custom Computer Programming Services
Reseach and Development in the Physical, Engineering, and Life Sciences (except Biotechnology)
Software Publishers


text:
Click Here to Watch the Whole Video in HD at Cocky Boys
It's Hotter in Southern California: Kyle Majors Cocky Boys! The Men are hotter in Southern California: COCKYBOYS.COM
Tommy Defendi and Mason Star Are Back for Their Continued Bromance! This Time, I Flew Them to New York for Some Site-seeing and Cockyboys Parties. They Spend Pretty Much All Their Time Together, and It's No Wonder Everyone Thinks They're Dating. Whatever It Is, They Definitely Have Some Kind of Romantic Fling Going. They Were Hanging Out on My Couch One Day After a Night of Heavy Club Promotions, Just Chillin' Naked While Cruising for Some Local Dudes In the Area. Apparently All the Cruising Got Mason Hot and Bothered, so They Decided to Fuck Each Other Right Then and There! After Brutally Pounding Mason's Ass on the Couch, Tommy Decided He Wanted Some of Mason's Giant Cock In His Hole. so He Sat on That Mason's Dick and Rode It Like a Pro Till He Came All Over Mason's Chest! This Is a Flip-fuck That'll Go Down In History!
Pixels: 320X240 | Bitrate: 350K
Pixels: 640X480 | Bitrate: 700K


text:
Battle Command Hack cheat engine
The application is 100% authentic and works without any problems. This Battle Command Hack hack is the key cheat to give you any number of resources and funds. Be a superstar in the game with the aid of Battle Command Hack cheat. This is the quintessential hack tool to help you mod the game for the ultimate domination. As soon as you load the game, open program and the Battle… Read More »


text:
By Ann Oldenburg, USA TODAY
Baby needs a new crib, right?
But the place isn't quite up to snuff. Kimye plans to remodel and renovate the place. TMZ says the couple are planning an Italian-style villa "with a gym, movie theater, full hair and makeup salon, bowling alley, basketball court, indoor and outdoor pool" and, of course, a nursery.
Among their famous neighbors will be Jennifer Aniston and Justin Theroux, who were said to have bought a $21 million mansion in Bel Air in May.
And apparently, Kim and Kanye can afford the property without any worry because TMZ also reports they turned down a $3 million paycheck from a British outlet for the baby's first pictures. The buzz is that they'll probably hold out for much more than that. After all, Brad Pitt and Angelina Jolie raked in $14 million for photos of twins Knox and Vivienne in 2008.
How much do you think the Kimye baby photos are worth?


text:
New Two Rivers Elementary School Principal: 'I love this school' posted 8 hours ago
'Deja Vu all over again' for Leslie Sargent at Leroy Greene Academy Meet-and-Greet posted 9 hours ago
State law requires incoming 7th graders to obtain Tdap booster shot posted 3 days ago
New Principals at Two Rivers, Leroy Greene Academy schedule Meet-and-Greet sessions posted 5 days ago
New NGMS Principal Schedules Meet-and-Greet for Campus Community posted 5 days ago
First-graders give Heron teacher Lisa MacMillan a group hug after she was named Natomas Unified Teacher of the Year.
District launches the B. Teri Burns Health Clinic.
Inderkum High School's commencement exercise was a reminder that more than 150 Natomas Unified graduating seniors this year have been accepted into four-year colleges.
A student in Natomas High School's auto technology class discusses the intricacies of engines with visiting seventh-graders from Natomas Gateways Middle School.
These students exemplify the NUSD Vision that, "All students graduate as college and career ready, productive, responsible, and engaged global citizens."
Natomas MIddle School students honor Cesar Chavez by pledging peace and non-violence,
Witter Ranch fourth-graders dissect owl pellets in science experiment while Supt. Chris Evans looks on.
Celebrating reading at Hight Elementary School read-a-thon.
Inderkum High School color guard performs at Sacramento's Martin Luther King Jr. parade.
Paid Advertisement
View All Events
1901 Arena Blvd. | Sacramento, CA 95834


text:
Gail Porter
Looking for something on my site? Not found it? Try here... it's working now!
In the bar on the afternoon of Saturday 16th, somewhat tired and emotional (enough to arouse the concern of the waiters), talking about her chest puppies (apparently she has to have her bras specially made at �60 a pop). She had to be escoreted to a taxi.
taffski :: 2001 :: Comment / reply
Paul Clarke's - I work and live in Seabrook near Folkestone, Kent. wed to Clare and father to Harry and Tommy, I am a software engineer, and I do js, Node, php, and ruby. I like Folkestone Gerald, pubbing, restaurants, home automation and other diy jiggery-pokery, history, genealogy, TV, popbitch, squirrels, pirates ☠, and time travel...
Also from the same week
Some more blog posts from the same week as .
Limp Bizkit Cancel Dates Mass ticket giveaways fail to make Fred's back any better... [Monday 18 June 2001]
Barfly Cardiff presents Seafood Seafood, "Katatonia", and Patrick Jones lovely poetry at Barfly Cardiff this month... [Wednesday 20 June 2001]
Barfly Camden presents Captain Soul This months highlights are Captain Soul, the fantastic Mika Bomb and Kat Bjelland's Katastrophy... [Wednesday 20 June 2001]


text:
Click Here to Watch the Whole Video in HD at Naked Frat House
College was never like this! Naked beer pong ends with big bros getting sucked off by pledges. Fall rush means hot college guys getting hazed before they're admitted to the fraternity.
What Do You Get When You Combine Old School Games, a Cute Blonde Twink Bottom and a Hot, Tanned Muscular Top? Hot, Sweaty, Rough Sex That's What! Jeremy Jordan Is a Hot Little Twink With a Nice Hard Cock and a Smooth, Tight Hole. Speaking of Nice Cocks Jason Hawke Has Nothing to Be Ashamed of With His Sizeable Uncut Meat. Our Two Boys Start With a Hot Make Out Session, Groping Each Other and Tweaking the Other's Nipples. Hardly Able to Resist Ripping Each Other's Clothes Off, Jeremy Gets Jason Naked and Starts Sucking Away.
Pixels: 320X240 | Bitrate: 350K
Pixels: 640X480 | Bitrate: 700K
Jeremy is my favorite twinky of all time. He is one lucky boy who got a chance to have Jason's dick for a while. They made a cute couple.


text:
Manchester, N.H. (November 5, 2010) - Southern New Hampshire University's Papoutsy Lecture Series in Environmental Ethics and Social Responsibility will host Ray Sirois on Thursday, Nov. 11, at 6:30 p.m. in the Dining Center Banquet Hall with a reception to follow. Sirois is one of 3,000 presenters trained by Al Gore's Climate Project. Like many others, he was motivated after watching Gore's documentary "An Inconvenient Truth" to become more environmentally aware.
The Climate Project's goal is to educate the public about the dangerous changes that are taking place in our environment. The presentations given by The Climate Project shows how and why our world is changing and what individuals can do on a small scale to help.
"Those of us who are in the know have a big job ahead of us to get everybody else in the know," Sirois said.
The Papoutsy Lecture Series in Environmental Ethics and Social Responsibility was created to fulfill a goal of the present Chair to promote an environmental ethic on SNHU's campus and across the community to help move us towards a sustainable future. Over the next two years, the Series will host speakers whose lives and work extend the traditional boundaries of ethics by examining the role of humans in the environment with the hope of finding socially responsible ways to improve this relationship.


text:
Keep up-to-date with all of the latest news and information
Today at the supermarket we saw rather a lot of very smart convertible cars. Drop-top jaguars and mercedes, roaring porsche and TVR. I'm sure I read somewhere that there's a recession on.
Is the good presentation the one that follows the rules, or the one that informs?
Would it be unfair to suggest a certain naivety? Since BCCI, and probably before then, the saying "if it looks too good to be true . . ." has marked a common-sense approach to money. Putting it simply, charities should steward the money in their trust, not try to profit from it. What has happened here could happen to anyone.
I went to a benefits workshop on implementing a new IT service within a big organisation. We looked at the features of the solution offered, and were asked to identify benefits for each stakeholder. Over 4 hours we brainstormed, and focussed, and documented, and planned how to measure.
Then it struck me – this is all the wrong way around! Granted, I usually examine benefits in front-line (health and care) environments not in back office functions, but many of the enablers are back office.
"All bets are off" as David Nicholson tells NHS to prepare for cuts (HSJ 4June - updated Pulse 27Nov09). Massive investment over the last 8 years hasn't improved productivity (HSJ 28May). PCTs aren't making use of the wealth of experience and enthusiasm available through Practice Based Commissioning (PBC) (Primary Care Today May/June 09). The same old ideas are put forward as the solutions to all our problems - more care out of hospital, more innovation, more work led by nurses, more Health centres, more salaried GPs. Why haven't these 'obvious' solutions delivered?
Dear friends
Are you using a Benefits Approach? How does this compare with other organisations?
Steve Jenner (the driving force behind the development of UK Criminal Justice System IT approach to Portfolio and Benefits Management, that was referred to by Gartner, the European Commission's economics of e-Government project and by the UK Government report to the OEDC as "UK Best Practice" and which won the 2007 Civil Service award for Financial Management). Steve was described by the UK Government CIO as "the rottweiller of benefits management"
With savings like these, NHS could become a net contributor to the Treasury! £50,000 per QALY (Quality Adjusted Life Year - the value assigned by statisticians that an individual puts on being healthy for a year) is a reasonable figure, but lets not get mixed up - nobody gets £50,000 in their hand, least of all government (who may have to pay for statins or insulin during that extra year of life).
A major cost in many businesses is project failure, due to using unqualified and inexperienced project managers. We include the highest qualification internationally, RPP, to deliver leadership to keep you profitable and successful.Learn more
Do you know what the return will be on your investment? What about hard to measure things like Quality of Service, Staff Well Being, Quality of Life, Digital Inclusion? How do you know the right amount to invest? How can you convince your sponsors or get government grants? Learn more
Many organisations struggle to write the bids and proposals that win them the business they need. It isn't rocket science, but it's often a job that nobody wants to do. Our expert team can help you find opportunities, open doors, qualify bids in or out, and then prepare the paperwork that propels you to success. Learn more
People come to work to do a good job – if only they knew what a good job is … What if your employees, volunteers and others were fully committed to your organisation's objectives, and could see day by day how much contribution they were making.Would you be more successful? Learn more
The Social Return Company is a trading name for Minney.org Ltd, Company number 6287126 registered in England.


text:
What a great way to recycle an old bathtub! When we renovate our bathroom I'd like to do this with our old tub.
Does anyone know how bathtubs are currently disposed of or recycled? Are the considered C+D waste and landfilled?
We've been doing lots of home projects and I really get carried away looking at before and after pictures like John Peters 1950's home reno on Flickr.
Bathtub pond
Labels: At home
1 comment:
- BlackBerry App Development said...
Finally I found what I was looking for.
How did you guys found this information? Thank you for your article I saw it on Google And I saved it. You have my email guys, so can you please send me an email when you post some new blogs on your site!!! Thank you and have a nice day. iPad App Developer
- September 27, 2011
Subscribe to: Post Comments (Atom)


text:
April 27: Where the Wild Things Run 5K. Caw Caw Interpretive Center, 8:30 a.m. Explore your wild side on a scenic run through the trails of this 654-acre site rich in natural and historical resources. Online registration ends April 26. Ages 10-15 may register, but must be accompanied by an adult chaperon. Fee: $34/$28 CCR Discount.
April 27: Shaggin' on the Cooper. 7-11 p.m. Spend an evening danc- ing on the scenic Mount Pleasant Pier to live music performed by Groove Train. Beverages available for purchase on site. Series passes also available. Call 795-4386. Age: 3 & up. Fee: $10/$8 CCR Discount/$10 on-site if still available.
May 4: Charleston County Waterparks open. Splash Island in Mount Pleasant, Splash Zone on James Island, and Whirlin' Waters in North Charleston open for weekends only in May. Visit www.splashparks.com.
Preregistration is required for many CCPRC programs. To register, call 795-4386 or visit www.ccprc.com.
April 26: Bird Walks at Beachwalker Park. 8:30-11 a.m. The southwestern end of Kiawah Island is an excellent place to spot seabirds and shorebirds. Group will hike nearly two miles of pristine beach looking for a variety of birds, including raptors and songbirds. The program is free; preregistration required. A registered chaperon is required for participants ages 15 and under. Age: 12 & up.
April 27: Family Outdoor Adventure Sampler: Archery at Palmetto Islands County Park. 9-11 a.m. Learn the basics and have a friendly accuracy competition. A registered and paid chaperon is required for participants ages 15 and under. Age: 10 & up. Fee: $12/$10 CCR Discount. Preregistration required.
April 27: Local Sea Kayak Trips: Coburg Creek Kayak Exploration. 9:30 a.m.-1:30 p.m. This fun tour that passes by an old dairy while wind-ing through a salt marsh creek. End up on the Stono River, then paddle Wappoo Cut back to the boat landing. Age: 16 & up. Fee: $48/$40 CCR Discount. Preregistration is required.
April 27: Family Outdoor Adventure Sampler: Archery at Palmetto Islands County Park. Noon-2 p.m. Archery is an age-old activity that has become a fast-growing sport for youth. Learn the basics and have a friendly accuracy competition. A registered and paid chaperon is required for participants ages 15 and under. Age: 10 & up. Fee: $12/$10 CCR Discount. Preregistration required.
April 27: Carolina Tea at Caw Caw Interpretive Center. 1-4 p.m. Explore the history behind tea cultivation in South Carolina over a cup of local tea and light snacks. Before the tea party, group will visit the 100-plus-year-old Tea Farm site and harvest tea from naturalized plants. Take tea leaves you collect home to make your own green and black tea. A registered and paid chaperon is required for participants ages 15 and under. Age: 9 & up. Fee: $15/$12 CCR Discount. Preregistration required.
April 27: Early Morning Bird Walks at Caw Caw Interpretive Center. 8:30-11:30 a.m. This walk through many distinct habitats will allow group to view and discuss a variety of birds, butterflies and other organisms. Preregistration is encouraged, but walk-in registrations at Caw Caw are welcome. A chaperon is required for participants ages 15 and under. The fee: $5/Free for Gold Pass Holders.
April 28: Stand-Up Paddleboard (SUP) Instructional Classes: Intro to SUP-Level 1 at James Island County Park. 1-3 p.m. This fun and relaxed class will get you started with instruction on safety and the proper paddling technique that will allow you to progress comfortably at your own pace. Age: 16 & up. Fee: $24/$20 CCR Discount. Preregistration required.
April 30: How to Belay at James Island County Park. 5:30-7 p.m. Learn to belay in this abbreviated version of the popular Introduction to Climbing class. Age: 14 & up. Fee: $18/$15 CCR Discount. Preregistration required.
April 30: After-School Adventures: Stand-Up Paddleboarding at Palmetto Islands County Park. 4:30-6 p.m. After school ends for the day, come to the park and have some fun on Stand-Up Paddleboards. Learn basic paddling skills and then have some fun on the water. Age: 8-12. Fee: $6/$5 CCR Discount. Preregistration required.
April 30-May 5: Rock Climbing Trips: Gym to Crag Weekend. 5:30-6:30 p.m. (Tuesday), departs noon (Saturday) and returns 8 p.m. (Sunday). Join group for two days of top rope climbing at Crowders Mountain, N.C. The high-friction routes offer an aesthetic setting for learning outdoor movement skills and top rope anchoring techniques. At the conclusion of the weekend, climbers will have the skills necessary to climb independently outdoors, as well as the background to take the next step into more technical climbing. Belay skills are a prerequisite. Age: 16 & up. Fee: $154/$140 CCR Discount. Preregistration required.
Notice about comments:
The Post and Courier is pleased to offer readers the enhanced ability to comment on stories. Some of the comments may be reprinted elsewhere in the site or in the newspaper. We ask that you refrain from profanity, hate speech, personal comments and remarks that are off point.
We do not edit user submitted statements and we cannot promise that readers will not occasionally find offensive or inaccurate comments posted in the comments area. If you find a comment that is objectionable, please click the X that appears in the upper right corner when you hover over a comment. This will send the comment to Facebook for review. Please be reminded, however, that in accordance with our Terms of Use and federal law, we are under no obligation to remove any third party comments posted on our website. Read our full terms and conditions.


text:
Corey Rossi
I hope to get more information about the career I want to pursue.
Great job on your Roadtrip Project! You've been working hard, and for that we just have one thing to say...You're awesome. Keep it up!
Snap Happy
(2-5 photos) Sometimes pictures say 1,000 words, so it's no wonder why you love snapping away on your camera. Congrats on building your photo collection!
Digital Media 2
James Brown
Home Base:
New Technology High School
Attribution Creative Commons
Leader: Lacy Kosanke
Occupation: Digital media 1 and design
Company: New Technology high
Industry: Media and Entertainment
Interests: Music, Art/Design, Film/TV/Radio, Entertainment, Science/Technology
Interview Reflection: I felt that what I got from this interview was that I really got to see what kind of person she is, and she is a...(read more)
It isn't that hard to call someone and ask for an interview. It's not in person so there is no need to really shy away. The first person I asked, I asked in person. I felt that if I did it (read more)
Written on May 30, 2012 at 2:25pm
I hope that everything will go well, all I am worried about is how the shots will turn out. I really want things to look good, and I don't want to miss anything. I am excited to hear what the (read more)
Written on May 30, 2012 at 2:33pm
The things I want to know is what the work life was like for Ms. Kosanke, but I also need to answer the question for my road trip. I am hoping she can help me make sure what I want to do is really (read more)
Written on May 30, 2012 at 2:36pm
What did I learn?
So I learned a lot about the person I interviewed and a lot about my future career. I had already known that what I enjoy doing, is what my career will be, but I love doing a lot of things that I can (read more)
Written on May 30, 2012 at 2:54pm
Start Date: 05/22/2012
Start Location: Napa, CA
Total Interviews: 1
Miles Logged:
End Date: 05/22/2012
End Location: Napa, CA
Displaying 2 of 2 | View Slideshow
Total Views: 482
Inspiring (0)
Helpful (0)
Entertaining (0)