text:
Difference between revisions of "OSEE/Developers Guide"
(→Build Steps)
(→Build Module Hierarchy (from highest to lowest))
|Line 744:
|Line 744:
====OSEE System Requirements====
====OSEE System Requirements====
*System with at least 1GB of RAM
*System with at least 1GB of RAM
Revision as of 20:26, 3 April 2012
- 1 Architecture
- 2 Configuration Properties
- 2.1 Datastore Preferences (via Global Preferences artifact)
- 2.2 Common Java System Properties
- 2.3 Application Server Java System Properties
- 2.4 Client Java System Properties
- 2.5 Developer Workspace Configuration
- 3 Database Connection Information
- 4 Custom Data Model
- 5 Importing an OSEE Data Model
- 6 OSEE Branches
- 7 Workspace Setup
- 8 Downloading and Configuring Eclipse
- 9 Working with GIT
- 10 Testing
- 11 Location of OSEE Bundles
- 12 Migrating Branches to Another OSEE Database (including from previous OSEE version)
- 13 Configuring ATS for Change Tracking
- 14 Custom OSEE Operations using BLAM
- 15 Event Handling
- 16 Use Cases
- 17 Building OSEE using Tycho/Maven
- 18 Database Schema
- 19 How to Define Classes for Coverage Importing
- 20 Helpful links
- 21 Design Questions
- 21.1 I have strange eclipse/osee issues can I delete stuff from my configuration folder?
- 21.2 Is OSEE an application framework or an application?
- 21.3 Other products sound similar. Why OSEE?
- 21.4 Is OSEE only for Avionics Engineering?
- 21.5 What is Skynet?
- 21.6 What are Artifact Framework types?
- 21.7 What is the Action Tracking System (ATS)?
- 21.8 Why build yet another bug tracking tool like the Action Tracking System (ATS)?
- 21.9 How does OSEE handle traceability?
- 21.10 What is Define?
- 22 What is an HRID and how is it used?
Client Architecture
The central feature of OSEE is an extensible framework called the OSEE Application Framework. Default applications distributed with the OSEE framework are OSEE Define (for requirements management) and OSEE ATS (the Action Tracking System, for configuration management).
The Application Framework provides all the necessary services to allow the applications to persist and share data in a common, version controlled object database. Just as Eclipse provides the ability to add a plugin to the existing Eclipse environment, so OSEE allows other applications to add plugins and share the common data store.
And just like Eclipse RCP allows an application to be built and deployed using the Eclipse framework but not include all the standard applications like JDT, OSEE allows an application to be built and deployed using the OSEE Application Framework without including such applications as OSEE Define and OSEE ATS.
Client/Server Architecture
In order to attain a greater degree of scalability, the Open System Engineering Environment (OSEE) has been slowly migrating into a distributed architecture where clients interact with an application server, which is in charge of managing access to an OSEE data store.
Additionally, in an effort to provide load balancing, failure recovery, and code compatibility, clients consult an arbitration server before connecting to an application server. The arbitration server's responsibility is to keep track of all the application servers interacting with a common data store and direct clients to a healthy application server compatible with the client's OSEE code version. In this arrangement, arbitration servers act as the initial access points into the OSEE server cloud where a collection of application servers manage client requests to access and operate on a common OSEE data store. Figure 1 shows an example of the OSEE Client/Server network.
In Figure 1, three application servers interact with a single OSEE data store. The data store is comprised of a relational database and a remote file system used to store binary data. It is not necessary for the database and the binary data to exist on the same machine; the only requirement is that the application servers have access to both resources. Upon start-up, each application server registers himself on the data store's server lookup table by entering its host address, port, supported code versions, and its unique id. When the arbitration server receives a request to find an application server to support a client connection, the arbitration server reads the data store's server lookup table and selects the best match for the client. The client requests this information from the arbitration server upon start-up or whenever it can't communicate with an application server. It is important to note that the arbitration server does not have to be a different server than an application server. All application servers are able to act as an arbitration server. An application server is referred to as an arbitration server when clients interact with it in this context. Figure 2 depicts the sequence of events involved in the arbitration process.
Once a client receives an application server's address and port information, the client must authenticate with the application server before it can gain access to the OSEE data store. During the authentication process, a client submits to the application server the current user's credential information and the authentication protocol id to use during the process. The application server verifies the user via the selected protocol and grants access to the data store by creating a session for the user. From this point forward, the application server will be responsible for managing access to the data store by identifying the user via the session id. Whenever a client wants to interact with the application server, it will need to submit its session id in order to gain access to the OSEE data store. Figure 3 shows the sequence of events involved in the authentication process.
Data Model
The OSEE framework is built around a user configurable and extensible data model consisting of attributes, artifacts, and relations. An attribute is a key-value pair representing a single data element such as a description, a date, a number, or a file. These basic data elements are grouped into artifacts. Artifacts can be configured to have any number of attributes. By default, an artifact will always have an attribute of type name. In addition, artifacts can be related to one another via relations. By default, an artifact will always have a default hierarchy relation type. This allows artifacts to be connected together in a tree. In the example below, two instances of the basic artifact type are shown. Artifact 1 has an attribute of type name set to string data "X". Artifact 2 has an attribute of type name set to string data "Y". These two artifact instances are related via the default hierarchy relation type. Artifact 1 is Artifact 2's parent artifact.
Now that we have a basic understanding of the model, lets take a closer look at attributes and how they are defined.
An attribute is defined through its attribute type. The attribute type is a blue print for constructing attribute instances. It defines the type of data the will be held by the attribute, the data source or who provides it, how many instances can be created, default value to use during creation, whether the attribute can be tagged for word searches, and if the attribute holds file data, its file extension.
By default, data contained in the attribute can be represented through OSEE's basic data types:
- String Attribute
- Boolean Attribute
- Integer Attribute
- Floating Point Attribute
- Date Attribute
- Enumerated Attribute
OSEE provides three attribute data providers: the default attribute data provider, URI attribute data provider, and the Clob attribute data provider.
- The default attribute data provider is used for data containing less than 4000 characters in length. Data is stored and retrieved from the OSEE relational database. Most attribute types will use this data provider to handle its data content.
- The URI attribute data provider is used for large data. The provider communicates to the OSEE application server to store and retrieve data.
- The Clob attribute data provider is a hybrid provider using both the OSEE relational database and the application server to retrieve and store data. When the data contained by the attribute has less than 4000 characters, the provider uses the relational database. If the data exceeds the 4000 character limit, then the application server is used.
Configuration Properties
OSEE can be configured by setting certain Java system properties when launching Eclipse and by setting various attribute values on the Global Preferences artifact in the datastore. Java system properties are key/value pairs and can be passed as launch arguments in the form of -D<key>=<value> (i.e. -Dosee.authentication.protocol=trustAll). These -D options can be specified directly in the command to launch Eclipse or in the corresponding .ini file for the eclipse executable used.
Datastore Preferences (via Global Preferences artifact)
Do a Quick Search on the Common branch for "Global Preferences" and open the resulting artifact in the artifact editor. The available attribute types for this artifact define what can be configured. Each attribute is self-documenting, because the attribute tip text documents how to use each one.
Common Java System Properties
|System Property Name
|File system path or uri containing custom database connection information.
<db identifier>
|Default from db.connection file
|Specifies which database OSEE should connect to. This id references connection information specified in the ...db.connection.xml file. Refer to the Database Connection Information section for more information.
true, false
|If true, adds the lookupList to the global lookup list such that a refresh will try to locate the service again
|user defined group name
|the Jini Group that all OSEE provided Jini services will register with
|the default logging level for all loggers
1 - 65535
|the first port number to test for availability when a new port is needed
Application Server Java System Properties
|System Property Name
1 - 65535
|Port the client will use to communicate with the OSEE Application Server
|User Home
|A directory on the file system to be used by the application server to store and serve artifact binary data.
|When specified, this system property sets the URL used to launch an embedded database server.
|User Home
|A directory on the file system to be used by the application server to store and serve artifact binary data.
[<"version 1">;<"version 2">]
|When specified, this system property sets the application server's supported client versions. NOTE: version string can use regular expressions
true, false
|When specified, this system property allows the application server to check the tag queue and begin tagging and pending tag jobs.
Client Java System Properties
|System Property Name
|When specified, this system property sets the URL used to reference the application server and arbitration is bypassed.
|The arbitration server address and port to use. This system property must be specified for the system to gain access to OSEE data. If the application server property is set then that address takes precedence and arbitration is bypassed.
|protocol name
|protocol to be used by the client to authenticate with the server
|choice name
|the predefined database initialization choice
true, false
|Specifies whether OSEE database initialization should use the schema names specified in the schema.xml files instead of using the connection schema. Using the connection specified schema is the default behavior.
|Specifies where table data should be imported from during OSEE database initialization. The default is to use the database connection id specified in the schema.xml files.
true, false
|Specifies whether OSEE database initialization should import database data as part of its tasks.
true, false
|When set to true launches an application server upon start up. Uses org.osgi.service.http.port arg to determine port to use.
Port Scan starting from 18000
|Port to use for local worker server.
true, false
|Specifies whether to interactively prompt the user during database initialization for init choice
true, false
|Specifies whether user activity should be logged
true, false
true, false
|Specifies whether to enable the OTE command console
|free text name
|name given to the OTE server which is displayed in the test manager
true, false
Developer Workspace Configuration
Import Java Code Auto Formatting Preferences
- Start OSEE
- File-->Import...
- Select General/Preferences
- Click Next >
- Click Browse and navigate to (and select) the file [workspace_root]\org.eclipse.osee\plugins\org.eclipse.osee.support.config\osee_team_preferences.epf
- Click Open
- Check Import all
- Click Finish
Configure New Code Template Preferences
- Window-->Preferences
- Java/Code Style/Code Templates
- Code/New Java Files
- Click Edit...
- Paste the following (or some variant). Be careful not to modify the template variables, i.e.: "${package_declaration}":
/******************************************************************************* * Copyright (c) 2012 Boeing. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Boeing - initial API and implementation *******************************************************************************/ ${package_declaration} /** * @author Joe P. Schmoe */ ${typecomment} ${type_declaration}
- Code/Catch block body
- Click Edit...
- Paste the following (or some variant):
OseeLog.log(Activator.class, Level.SEVERE, ${exception_var});
Database Connection Information
To define a custom database connection for the application server, a path to an xml with the following format is required when launching the application server. This path will need to be specified using the osee.connection.info.uri and osee.db.connection.id JVM arguments on launch.
<?xml version="1.0" encoding="UTF-8" ?> <DbConnection> <DatabaseInfo id="postgresqlInfo" > <DatabaseHome key="#DBHOME#" value="DATABASE HOME LOCATION" /> <DatabaseName key="#DBNAME#" value="DATABASE NAME" /> <DatabaseType key="#TYPE#" value="postgresql" /> <Prefix key="#PREFIX#" value="jdbc:postgresql" /> <UserName key="#USERNAME#" value="DATABASE USERNAME" /> <Password key="#PASSWORD#" value="DATABASE PASSWORD" /> <Host key="#HOST#" value="@AvailableDbServices.hostAddress" /> <Port key="#PORT#" value="@AvailableDbServices.port" /> </DatabaseInfo> <ConnectionDescription id="postgresql" > <Driver>org.postgresql.Driver</Driver> <Url>#PREFIX#://#HOST#:#PORT#/#DBHOME##DBNAME#</Url> </ConnectionDescription> <AvailableDbServices> <Server id="ANY NAME" dbInfo="postgresqlInfo" hostAddress="DATABASE IP ADDRESS" port="DATABASE PORT" connectsWith="postgresql" isProduction="false" /> </AvailableDbServices> </DbConnection>
The sample file above defines PostgreSql connections but it can be changed easily to define oracle or H2 connections.
The file is divided as follows:
- Database Info: This entry describes the database to connect to by defining the database name, database home location and user name (or schema) and password to use during connection. When using the OSEE PostgreSql installation instructions, the fields should be set to the following:
- DATABASE HOME LOCATION: not used therefore remove the value field from this attribute
- DATABASE USERNAME: osee
- DATABASE PASSWORD: osee
- Connection Description: This entry describes how the database connection url should be assembled. At connection time, the fields enclosed in ## are substituted with the information defined in the database info section. There shouldn't be a need to change this unless you want to connect to a database other than PostgreSQL.
- Available Database Services: This section contains entries for each database server and connection option needed at launch time. An entry is referenced at launch time by calling out the entry id in the osee.db.connection.id argument. When using a local OSEE PostgreSql install, the attributes on a server entry should be set to the following:
- id: any meaningful name to identify this entry
- hostAddress: localhost
- port: 5432 (the default PostgreSql port)
- isProduction: false unless you want to prevent clients from initializing the database
Custom Data Model
The data model in OSEE is extensible and user configurable. Users can define new artifact, attribute, and relation types and their constraints such as multiplicity and applicability. Type inheritance allows similar types to be defined and modified without tedious redundancy because similar types inherit what is common from their super type.
The OSEE data model is defined using a tabular format involving 5 tables. See the following link for an example.
The full data model can be defined using a single spreadsheet or be divided among multiple spreadsheets that can reference types defined in any spreadsheet.
Artifact Type Table
|Column Name
|Artifact Type Name
|any valid UTF-8 characters with a max length of 75 bytes
|Super Type Name
|The super artifact type from which this type will inherit associated attributes and relations. Another concrete artifact type or an abstract one that exists only in data model definition.
Artifact Factory
When defining new artifact types, by default, the Java class used to create the artifact at runtime is
org.eclipse.osee.framework.skynet.core.artifact.Artifact. When a specialized subtype of Artifact is desired, the extension point
org.eclipse.osee.framework.skynet.core.ArtifactFactory can be used to contribute an artifact factory that extends the class
org.eclipse.osee.framework.skynet.core.artifact.ArtifactFactory. The factory's
isResponsibleFor(String artifactTypeName) method determines if a particular factory will be used to construct an artifact of a given artifact type. Thus the artifact factory extension point can be used to case user defined artifact types to be constructed at runtime using a custom Java class that extends Artifact.
Attribute Type Table
|Column Name
|Attribute Base Type
Fully qualified java class name of a class that extends
If a custom java type that extends
|Attribute Data Provider
| The attribute data provider is responsible for storing and retrieving attribute data. Fully qualified java class name of a class that implements
org.eclipse.osee.framework.skynet.core.DefaultAttributeDataProvider may be used when the data to be stored does not exceeded 4000 bytes, otherwise
org.eclipse.osee.framework.skynet.core.UriAttributeDataProvider may be used.
|Attribute Type Name
|Any valid UTF-8 characters with a max length of 500 bytes
|File Extension
| Any valid UTF-8 characters with a max length of 50 bytes; only applies when using the
|Tagger ID
| If the attrbiute's content is to be included in the search index for the quick search, use
DefaultAttributeTaggerProvider, otherwise leave blank.
|Default Value
|The initial value given an attribute upon initialization, this may be left blank
|Validity Xml
| For the attribute base type
org.eclipse.osee.framework.skynet.core.EnumeratedAttribute, specifies the valid enumerations. For example, <Page_Type><Enum>Portrait</Enum><Enum>Landscape</Enum></Page_Type>
|Min Occurrence
|The framework with prevent having lest than this number of this attribute type on a single artifact
|Max Occurrence
|The framework with prevent adding more than this number of this attribute type to a single artifact
|Tip Text
|Text to describe an attribute. Any valid UTF-8 characters with a max length of 4000 bytes
Artifact Type / Attribute Type Mapping Table
|Column Name
|Artifact Type Name
|Exact name of an artifact type defined above (or previously)
|Attribute Type Name
|Exact name of an attribute type defined above (or previously) to be associated with the corresponding artifact type
Relation Type Table
|Column Name
|Relation Type Name
|Any valid UTF-8 characters with a max length of 50 bytes
|Side A Name
|Descriptive name for the A side of the relation. Any valid UTF-8 characters with a max length of 50 bytes
|A to B Phrase
|An optional phrase that describe the relation between the artifacts from the side A perspective. Any valid UTF-8 characters with a max length of 50 bytes
|Side B Name
|Descriptive name for the B side of the relation. Any valid UTF-8 characters with a max length of 50 bytes
|B to A Phrase
|An optional phrase that describe the relation between the artifacts from the side B perspective. Any valid UTF-8 characters with a max length of 50 bytes
|Short Name
|Five or less characters is typical. This abbreviated name is used in the user interface when space is at a premium
Yes to have artifacts on the same side of this relation type use a user defined ordered, otherwise
Artifact Type / Relation Type Mapping Table
|Column Name
|Artifact Type
|Exact name of an artifact type defined above (or previously)
|Relation Type
|Exact name of an relation type defined above (or previously)
|Side A Max
|An artifact of type "Artifact Type" can be on side "A", "Side A Max" number of times for relation links of type "Relation Type"
|Side B Max
|An artifact of type "Artifact Type" can be on side "B", "Side B Max" number of times for relation links of type "Relation Type"
Importing an OSEE Data Model
To import changes to the data model for an existing OSEE database:
- In Package Explorer, Select a file(s) containing the OSEE data model to import. If there are any enum overrides, you must select them either explicitly or by import statement (hierarchically).
- Right click and select
- Under the
OSEEcategory, select
OSEE Types
- Ensure that all types files are included in
Resolved dependenciesand
Report Changesis checked. Select Finish.
- Review all tabs to ensure that all changes are expected.
Osee Default Enumwill always show up on
OseeEnum Typestab
- Ensure each column's data is correct. All "true" values are what is being changed.
- When ready to persist changes, you must restart the client (Still Necessary??) and only run import once with
Persist Changeschecked
To automatically import the data model during database initialization use the extension point
OSEE Branches
Workspace Setup
Downloading and Configuring Eclipse
Downloading and Configuring Eclipse
Working with GIT
JUnit Method Rules:
|Rule class
| Checks if the Artifact Cache is clean
... public class MyTest { @Rule public MethodRule oseeHousekeepingRule = new OseeHousekeepingRule(); @Test public void testArtifactChangeName() throws Exception { //Arifact change name code } }
Location of OSEE Bundles
Migrating Branches to Another OSEE Database (including from previous OSEE version)
- From the source application server's osgi console: export_branch myExportFolder
- The results will be placed in <user home>\Exchange\myExportFolder
- Zip the resulting folder and save it for possible reuse
- Run database initialization on destination database
eclipsec -application org.eclipse.osee.framework.database.init.configClient -vmargs -Xmx512m -Dosee.log.default=INFO -Dosee.application.server=http://localhost:8089 -Dosee.authentication.protocol=trustAll -Dosee.prompt.on.db.init=false -Dosee.choice.on.db.init="Base - for importing branches"
- Import any custom types into the destination database
- From the destination application server's osgi console: import_branch <user home>\Exchange\myExportFolder
- From the application server run
- Restart destination application server
- Start corresponding OSEE client
Configuring ATS for Change Tracking
Configuring ATS for Change Tracking
Custom OSEE Operations using BLAM
the extension point
org.eclipse.osee.framework.ui.skynet.BlamOperation can be used to contribute a custom OSEE operation that provides the developer a very quick way to define the graphical interface that supplies the operation with the user specified parameters.
org.eclipse.osee.framework.ui.skynet.blam.operation.ChangeArtifactTypeBlam provides a simple example.
Event Handling
General Design Considerations
- Event Handlers should run VERY quickly
- A private implementation is more secure
- Separate classes == maintainable but potentially costly
- Ensure each listener is safeguarded from other listeners (wrap in event handling)
- Need local client events and remote events to other clients
- Local event model should be abstracted from remote model so app code doesn't change
- Remote events should be versioned so event service can know how to handle
- Need to handle events where artifact or relation is not in client's cache, but event may still matter
- Client can't load every artifact to determine if it's desired
- Registration needs to be at base level guid,artTypeId,branchId so these can be filtered out without loading all artifact data.
- Need to provide lowest level registration (branch, artType and possibly even attrType) so event msgs reduced
- Need to support versions of remote events so remote event model can change without causing exceptions
- MUST have regression tests that are light-weight and easy to run so event service doesn't break
- Since Artifact, Relation, Attribute types are dynamic, can't create static message model/brokers
- Since artifact/relation/branch caches must be updated PRIOR to events propagate to GUI
- Need priority listeners for caches to update prior to UI updates
- Applications should be able to define their own higher level events while still listening to lower level events
Event Handling Revelations
- Reduce the necessity of events as much as possible - Restful
- Data injection to keep caches up-to-date a complex/impossible solution for enterprise, multi-client, multi-server operations
- All clients MUST be connected to event service if connected to database/app service
- Applications shouldn't have to know what events to handle, but instead presented all the events to handle
- Don't have separate purge, modified, change type events, but instead Artifact listener that has change types of purge, modified, deleted, change type, etc
- Since artifacts/relations are cached, application to application events are prone to errors if cache not updated yet
Event Handling Ideas / Goals
- How could we have a version for each artifact so clients could know if they are up-to-date or missed an update and reload-all. This would allow for self-healing.
- Reduce the items in the cache by improving our use of weak references. Anything not in the cache, doesn't have to get updated
- Move configurations that have to be loaded by all clients to the server. Branch and type caches already there. Users and ATS Config could go there.
- Is there a way to have events go straight to UIs (Editors, Views) to see if anyone cares that the cache is updated before updating the cache?
OSEE Event Handling - Current
- Design Issues
- Communication mechanism - Jini
- Clients are not connecting
- Clients not staying connected
- Event System
- Events are at the data level; applications are required to turn high level operations (eg: save, transition) into low level data events (30 attributes modified, 10 relations added, 5 deleted) which are sent across the wire to another client to re-assemble into a high level operation.
- Registration is for too high a level, each editor,view has to process through all events to find ones they care about
- Have to filter between loaded and unloaded artifacts and handle them differently so as not to accidentally load everything
- Have to register/handle separately for deleted versus purged
- Two levels of registration for artifacts/attributes/relations, by transaction and by dirty. By dirty is too much information, but necessary sometimes. By transaction is ok, but have to filter through all un-necessary stuff to find what want. Dangerous and costly.
- Access control is not handled in events
- Not extensible, so applications can't create/propagate their own events
- Communication mechanism - Jini
- Registration
- ArtifactPurgedEvent
- FrameworkTransactionEvent
- RelationModifiedEvent
- BranchEvent
OSEE Event Handling - New
- Registration - Need lower level registration of framework events
- By Artifact (branch, guid)
- By Object Type (artifact, attribute, relation) - include inheritance
- By Mod Type (added, modified, deleted, purged)
- By Transaction (persist to DB of group of changes)
- By Combinations (Artifact type and relation type or Artifact type and attribute type)
- ArtifactEventManager
- Sends BasicGuidArtifact for each mod type
- Modification Types: Purged, Added, Modified, Deleted, Change Type, Access Control
- Allow registration with filters
- ArtifactGuidFilter - only sends event if artifact is affected
- BranchGuidFilter - only send event if artifact on this branch is affected
- ArtifactTypeGuidFilter - only sends event if artifact of one of these types is affected
- BranchEventManager
- Modification Types: Added, Deleted, Purged, Access Control, Renamed
- Allow registration with same filters as Artifact
- Remote events are different and versioned classes so abstract from framework events
- Created via jaxb
Event Model
Remote Events
- Remote events classes are auto-generated via jaxb which keeps toXml, fromXml implementation hidden and thus requires less junit tests for base clasess.
- Each class is versioned by name (1, 2, 3). When RemoteBranchEvent1 changes, will create RemoteBranchEvent2 so there is no conflicts and implement backward compatibility that will
- Create RemoteBranchEvent2 events when RemoteBranchEvent1 are received - for old clients
- Create RemoteBranchEvent1 events when RemoteBranchEvent2 are received - for new clients
- Current classes:
- RemoteAccessControlArtifactsEvent1.java
- RemoteAttributeChange1.java
- RemoteBasicGuidArtifact1.java
- RemoteBasicModifiedGuidArtifact1.java
- RemoteBranchEvent1.java
- RemoteBranchRenameEvent1.java
- RemoteBroadcastEvent1.java
- RemoteChangeTypeArtifactsEvent1.java
- RemoteNetworkSender1.java
- RemotePurgedArtifactsEvent1.java
- RemoteTransactionDeletedEvent1.java
- RemoteTransactionEvent1.java
Framework Events / Listeners
- ArtifactEvent
- BranchEvent
- BroadcastEvent
- AccessControl?? - Potentially roll into ArtifactEvent
- TransactionDeleted?? - Potentially roll into ArtifactEvent
Use Cases
- Artifact Editor
- Current Design
- Registration = All Branches, Mod Types, Object Types
- Handling
- If not branch, throw away
- If unloaded, ignore
- If loaded refresh/update all
- If relation, refresh relation tree
- If attribute, refresh attribute tab
- New Design
- Registration = One guid and relations for that guid
- Handling
- If relation, refresh relation tree
- If attribute, refresh attribute tab
- Current Design
- Artifact Explorer
- Current Design
- Registration = All Branches, Mod Types, Object Types
- Handling
- If not branch, throw away
- If unloaded, ignore
- If loaded refresh/update all
- If relation, get parent and call tree.refresh()
- If attribute (name only), call tree.update(element)
- New Design
- Registration = One branch, One relation type, All Object Types
- Handling = About the same, but don't have to filter through un-necessary stuff
- Current Design
- SMA Editor - Edits single team workflow, but watches related tasks, reviews, user assignments, etc
- Current Design
- Registration = purged, relation modified, framework transaction, branch event. NOTE: Should register by branchId (Common), guids of workflows, artifact types (eg. don't care about general document artifact type changes on common)
- Handling
- If not Common branch or in transition, ignore all artifact/relation/attribute changes
- If is purged/deleted, close editor
- If is modified, deleted, relChanged, relDeleted, relAdded of main artifact, redraw pages
- If related review is any of above, redraw pages
- If relation modified, dirty editor
- If branch event and working branch added, deleted, purged, committed, redraw pages
- New Design
- Registration - One branch, 12 artifact types
- Handling = About the same, but don't have to filter through un-necessary stuff
- Current Design
Building OSEE using Tycho/Maven
Build Requirements
- Java Runtime Environment (JRE) 1.6 or higher
- Maven 3.0 or higher
Build Steps
- Download and install Maven. See http://maven.apache.org for installation details.
- Download the OSEE source code from Git Web Client (see clone section for more information] or https://github.com/eclipse/osee
- Note: Tycho/Maven build support available for source code versions 0.9.9_SR6 and higher.
- Download and unzip 3rd party dependency P2 archived site: http://code.google.com/p/osee-external/downloads/detail?name=org.eclipse.ip.p2_1.0.0.v201203200040-DEV.zip&can=2&q=
- Build commands:
- cd org.eclipse.osee/plugins/org.eclipse.osee.parent
- mvn clean verify -Declipse-ip-site="file:<PATH TO 3rd PARTY P2 SITE>"
- If you run into any problems (to display debug and stack trace info)
- mvn -e -X verify -Declipse-ip-site="file:<PATH TO 3rd PARTY P2 SITE>"
Assuming the following layout:
machine@user /UserData/org.eclipse.osee/plugins/org.eclipse.osee.parent:
$mvn clean verify -Declipse-ip-site="file:../../../org.eclipse.ip.p2_1.0.0.v201203200040-DEV"
Build Module Hierarchy (from highest to lowest)
- org.eclipse.osee.parent
- org.eclipse.osee.ide.parent
- org.eclipse.osee.client.all.parent
- org.eclipse.osee.client.parent
- org.eclipse.osee.ote.parent
- org.eclipse.osee.runtime.parent
- org.eclipse.osee.x.parent
- org.eclipse.osee.x.server.parent
- org.eclipse.osee.orcs.parent
- org.eclipse.osee.x.core.parent
- org.eclipse.osee.ide.parent
Build Artifacts
|OSEE IDE Client P2 Site
|OSEE IDE Client P2 Archived Update Site
|OSEE Build Information
|OSEE Client IDE All-In-One Linux x86
|OSEE Client IDE All-In-One Linux x86 64-bit
|OSEE Client IDE All-In-One Win32 x86
|OSEE Client IDE All-In-One Win32 x86 64-bit
|OSEE Application Server P2 Site
|OSEE Application Server
|OSEE Application Server Archived Update Site
|OSEE Application Server Zipped Runtime
OSEE System Requirements
- System with at least 1GB of RAM
- Relational database. H2 is included by default. If you wish to use something else such as PostgreSQL or Oracle, please see instructions for installing Supported Databases to complete this step.
Database Schema
Each row in an item table (osee_artifact, osee_attribute, and osee_relation) has an id and a version (GAMMA_ID). The version is unique across all rows of all item tables.
How to Define Classes for Coverage Importing
The following steps walk a developer through defining the classes necessary to begin importing coverage data into the OSEE application. Please keep in mind that these are meant to be simplified examples and developers are encouraged to 'get creative' when adapting these examples to their own particular context.
1. Write a class that extends AbstractCoverageBlam
public class MyCoverageImportBlam extends AbstractCoverageBlam { public static String COVERAGE_IMPORT_DIR = "Coverage Import Directory"; public static String NAMESPACE = "Code Namespace"; @Override public String getName() { return "My Coverage Import"; } @Override public Collection<String> getCategories() { return Arrays.asList("Blams"); } @Override public String getDescriptionUsage() { return "Import coverage from coverage directory."; } @Override public void runOperation(final VariableMap variableMap, IProgressMonitor monitor) throws Exception { try { final String coverageInputDir = variableMap.getString(COVERAGE_IMPORT_DIR); if (!Strings.isValid(coverageInputDir)) { throw new OseeArgumentException("Must enter valid filename."); } final String namespace = variableMap.getString(NAMESPACE); if (!Strings.isValid(namespace)) { throw new OseeArgumentException("Must enter valid namespace."); } File file = new File(coverageInputDir); if (!file.exists()) { throw new OseeArgumentException("Invalid filename."); } MyCoverageImporter myCoverageImporter = new MyCoverageImporter(coverageInputDir, namespace); CoverageImport coverageImport = myCoverageImporter.run(monitor); setCoverageImport(coverageImport); } catch (Exception ex) { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); } } @Override public String getXWidgetsXml() { StringBuffer buffer = new StringBuffer("<xWidgets>"); buffer.append("<XWidget xwidgetType=\"XDirectorySelectionDialog\" " + getDefaultDirectory() + " displayName=\"" + COVERAGE_IMPORT_DIR + "\" />"); buffer.append("<XWidget xwidgetType=\"XText\" displayName=\"" + NAMESPACE + "\" />"); buffer.append("</xWidgets>"); return buffer.toString(); } private String getDefaultDirectory() { if (CoverageUtil.isAdmin()) { return " defaultValue=\"C:\\UserData\" "; } return ""; } }
2. Define a class that implements ICoverageImporter
public class MyCoverageImporter implements ICoverageImporter { private final String coverageInputDir; private final String namespace; private final CoverageImport coverageImport = new CoverageImport("My Coverage Import"); public MyCoverageImporter(String coverageInputDir, String namespace) { this.coverageInputDir = coverageInputDir; this.namespace = namespace; } @Override public String getName() { return "My Coverage Importer"; } @Override public CoverageImport run(IProgressMonitor progressMonitor) throws OseeCoreException { /* * Use any member variables to populate coverageImport */ return coverageImport; } }
3. Add extension point declaration to package's plugin.xml
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.4"?> <plugin> <extension point="org.eclipse.osee.framework.ui.skynet.BlamOperation"> <Operation className="com.my.coverage.MyCoverageImportBlam"> </Operation> </extension> </plugin>
Helpful links
- http://rcpquickstart.com/2007/06/20/unit-testing-plug-ins-with-fragments/
- http://junit.sourceforge.net/
- http://junit.sourceforge.net/doc/cookbook/cookbook.htm
- Build and Test Automation for plug-ins and features
- Eclipse Documentation Online
- Using the Eclipse GUI outside the Eclipse Workbench
- Understanding Layouts in SWT
- Eclipse - a tale of two VMs (and many classloaders)
- Strong Lesson About OSGI Modularity
Design Questions
I have strange eclipse/osee issues can I delete stuff from my configuration folder?
yes. Everything except:
config.ini org.eclipse.equinox.simpleconfigurator
Is OSEE an application framework or an application?
The simple answer is BOTH. OSEE Application Framework is created to allow applications to be built on top and share the common data model. This can be used independently of any OSEE applications. In addition, there are applications that are delivered with and use the OSEE Application Framework. This includes a full featured Requirements and Document Management System (OSEE Define), a powerful change tracking and configuration management application (OSEE ATS - Action Tracking System), a fully customizable peer-review module and other project, reporting and metrics tools. These application can be used out-of-the-box and new applications can be created or integrated on the framework to share and contribute to the same data.
Other products sound similar. Why OSEE?
- Open Source Extensible Platform
- Open Eclipse Project w/ Collaboration
- Tight Integration Around A Common Data Model
- Full Lifecycle Engineering Environment
Is OSEE only for Avionics Engineering?
No. OSEE's was created by The Boeing Company in support of the Apache AH-64 Attack Helicopter flight control software. Although it was created to handle the complexity of a large US Department of Defense program, it was architected to support any systems engineering project from a simple application built for a single customer to a large complex application like the Apache flight controls. In addition, since OSEE is an independent application, the OSEE development team uses OSEE to develop, deploy and maintain OSEE.
What is Skynet?
Skynet is a legacy term for the persistence portion of the OSEE Application Framework.
What are Artifact Framework types?
OSEE provides Artifacts, Attributes and Relations that are strongly typed. This means that the user can create their own artifact type, for example a "Software Requirement" to represent the requirements at a software level and their own attribute types, for example a "Qualification" attribute or a "Safety Criticality" attribute and event their own relations, for example a "Software Requirement to Allocation" relation. These types are defined in the Artifact Framework and can be created dynamically in the system during database creation or while running. This allows the end user to expand the data that is being stored in OSEE without providing a new release.
What is the Action Tracking System (ATS)?
The Action Tracking System is the tightly integrated configuration management system built in OSEE and very tightly integrated with the OSEE Application Framework. It uses a powerful workflow engine to provides a fully customizeable workflow to track improvements, problems and support for any number of teams/tools/programs simultaneously. This gives the user a single point view into all the work that they are required to do.
Why build yet another bug tracking tool like the Action Tracking System (ATS)?
Although there are a number of open source and commercial bug tracking systems available, OSEE's goal to integrate workflow management and provide a tight integration with the Application Framework, and the applications built on top, required us to develop ATS. ATS is meant to be more than simple bug tracking since it can be used to manage multiple teams working on multiple products or support simultaneously. This means that you can create a single "Action" to "Fix the XYZ capability" that will create the necessary workflows for all the teams that need to perform work. For example, a workflow may be created for not only the Software Development team, but also the test team, documentation team, integration team and even facilities like labs or conference rooms. Each team then moves independently through its workflow to perform the work necessary for the common "Action". In addition, ATS enables complete customization of different workflows for each configured team. This means that the documentation team can follow their own "process" which may contain 5 different states while the application developers can follow their own more complex "process" which may contain 30 different states.
How does OSEE handle traceability?
Traceability is handled in OSEE through the use of Relations. These relations can be defined in OSEE according to their need and the users can then add and remove these relations throughout the lifecycle of the requirements or other artifacts. Deliverable documents or any report generation would also use this traceability.
What is Define?
OSEE Define is OSEE's advanced Requirements and Document Management System. OSEE Define can be used to track a simple application's requirements, code and test or configured to support a large program doing concurrent development with multiple parallel builds and manage requirements for multiple product lines simultaneously. Although any application file (document) can be stored and managed, OSEE Define is tightly integrated with Microsoft Word(c) to store and manage individual requirement objects (stored in XML) and provide advanced features like index based searching and showing differences between historical changes. Integrated tightly with the Action Tracking System, OSEE Define can be configured to provide advanced configuration management for any set of requirements object.
What is an HRID and how is it used?
The HRID creation, storage and use are currently under re-design. Below are the notes.
- HRID = Human Readable ID
- HRID Provider = provides the HRID when the artifact is constructed
To have a unique, short, constant, communicatable and customizable number that artifacts in the system can be referenced by. By definition, this number is database dependent which means it may occur in another database.
Note: All artifacts currently have a GUID. This number id long, constant, un-consomizeable, un-communicatable, database independent number and thus could not work as the HRID.
<character sequence><numeric sequence>
where TBD <character squence> - Alpha numeric, All caps, > 1 and < 6 characters <numeric sequence> - blank or unique numeric number, not zero padded TBD by default, the framework will provide a unique 6 character Alpha-numeric number
ATS is one of the main consumers of this number and is thus an important portion of the design considerations.
- Each provider will have a unique sequence number available
- One HRID Provider can be used by multiple ATS Team Definitions
- Each Artifact will have at least TBD 0,1 HRID
- Question still remains as to whether every artifact should have at least one HRID.
- Reasons for always having
- Users will always be able to reference HRID instead of switching between GUID and HRID
- Code won't have to check if HRID is null if trying to get an ID for display
- UI's don't have to show both GUID and HRID
- Reasons against
- Users don't often reference non-ats artifacts by HRID
- ATS Action will have it's own provider and provide something like ACT1234. Team Workflows will provide their own sequence related to their team like CODE9233, TEST2345, REQ3243.
- ATS will automatically designate the first workflow as the "driving workflow". The displayed action number will be <action hrid>-<driving workflow hrid>. Example: ACT123-REQ1134
- HRID will be stored in database. TBD either in current HRID column in artifact table or as attribute on artifact
- Reasons for attribute
- No special queries to get at HRID
- Tagging framework already works for attributes
- Reasons for hrid column
- Minimal framework/query changes
- Searching by HRID is faster than by attribute value
- Would need to limit users/API/UI from changing that special attribute
- Migration of HRIDs to existing artifacts would require pushing HRID to parent branch and migrating it down to all children
- Attribute value would be branched and add addressing information to all database and all branches
- Attributes are for data that can be changed by user. HRID can't
- Reasons for attribute
- Need tagging rules to enable numbers to be split apart and searched by either number alone or character sequence number. Example REQ3243 and 3243 should both work. Keep in mind that 3243 may return 2 objects cause prefix is what makes it unique.
- ATS, and other places, will need specialized sorter to make sure REQ31 comes after REQ4
- ATS will need to programatically set first workflow to "driving workflow" and allow user to change.
- UI to configure for ATS and framework
- TBD keep same HRID for existing and start with new now or save HRID in ATS actions / static ids and change all historical ids using new sequence

subset: commoncrawl


text:
In his Thanksgiving proclamation, President Washington began with the following words:
"Whereas it is the duty of all Nations to acknowledge the providence of Almighty God, to obey his will, to be grateful for his benefits, and humbly to implore his protection and favor."
This week, we should stop and give thanks to God for the many blessings we enjoy as Americans. I am thankful that despite the policy failings in Washington, we still live in the greatest nation on the face of the earth.
After gathering with family and friends to celebrate traditions, make memories, and give Thanks this week, your mind may shift to Christmas shopping. As you do, I want to call attention to key members of the small towns we call home - our small businesses. Not only do small business owners create jobs across the First District, but they are often our community leaders and our little league coaches as well.
Most small businesses employ fewer than 10 people. Many small business owners do their books late at night at the kitchen table after their kids have gone to sleep. They do not have an army of lawyers, accountants and lobbyists to keep up with all of the changing rules and regulations coming out of Washington.
And far too often, Washington is more interested in what happens on Wall Street - rather than Main Street. And that is just backwards. Small businesses account for about half of the total economic activity in America. They create nearly two out of every three new jobs. They have historically led our nation back from recession. Strengthening our small businesses is vitally important to get our economy moving forward and putting millions of Americans back to work, many of whom have given up on finding a full-time job.
As a member of the Small Business Committee, that's why I am sponsoring a bipartisan resolution in Congress to call attention to the importance of small businesses in our communities. It would denote the Saturday after Thanksgiving as "Small Business Saturday." It is only a symbolic measure, but it would serve as a reminder as to how important our small businesses are to our nation.
I also encourage you to join me in doing something more than symbolic. After giving thanks on Thursday, please join me in shopping at a small business this Small Business Saturday. These businesses, their owners and employees, are the backbone of our American economy. Not big businesses. Not special interest lobbyists. And certainly not Washington.
May God bless and protect you, your family and our entire nation - both on Small Business Saturday and the entire year.
Congressman Tim Huelskamp represents the First District of Kansas in the U.S. House of Representatives. He serves on the Veterans' Affairs and Small Business Committees, as well as the Subcommittese on Agriculture, Energy & Trade, Health & Technology and Contracting & Workforce.


text:
Bugs and limitations
- Compiling large files takes too much time.
- If a known procedure has unused arguments, but is always called without those parameters, then the optimizer repairs the procedure in certain situations and removes the parameter from the lambda-list.
- port-position currently works only for input ports.
- Leaf routine optimization can theoretically result in code that thrashes, if tight loops perform excessively many mutations.
Previous: Data representation
Next: FAQ


text:
[it is the SWINGING 60's]
Audrey Hepburn: Croissants and diamonds really go together well. Nom nom.
[she GOES home to her SWEET brownstone and is ASSAULTED by a NERD]
Nerd: Where'd you go, baby? I gave you money for the powder room! You owe meeeee.
[she BUZZES her NEIGHBOR'S buzzer and things get pretty RACIST]
Mickey Rooney: I am Japanese! Miss GoRiiiiiiiiiiigtry!!!
Audrey Hepburn: Hello DARLING! Don't be cross with me!
[he FORGIVES her, as EVERYONE does]
George Peppard: Hi, I'm new here. Sorry I buzzed you, but I didn't pick out this apartment for a mysterious reason. Where's your furniture?
Audrey Hepburn: I'm naked! And sleeping in the middle of the day. Hello, cat! The phone's in the suitcase! Oh no, I have to go to Sing Sing!
[she RUNS around QUIRKILY]
George Peppard: I am intrigued by this woman- child.
Audrey Hepburn: My DARLING friend Sally has to give me the weather report. It's innocent! Bye!
[she RUNS off in a GIVENCHY GOWN]
Patricia Neal: Paaaaaul daaaaarling. Do you loooove the house? I couldn't resiiiiiist.
[she is OLD and LEAVES money on his DRESSER, after they DO IT]
Audrey Hepburn: Hi. I saw your lady john leave money on your dresser. Can I come and lay in bed with you, since we are both subtly whores? I will call you Fred now.
George Peppard: Uh, ok.
Audrey Hepburn: You're a writer. Why aren't you writing more? I can't imagine what could possibly inspire you here.
George Peppard: Keeping my hair perfectly shellacked takes a lot of time. But maybe something around here could be inspirational…
Audrey Hepburn: Darling! Come to my sexy party!
[there is a PERFECT party SCENE involving CAFTANS and GAYS and EYE PATCHES and CRYING into MIRRORS, while Hepburn DUMPS booze on people UNWITTINGLY]
The Guy Who Gets Face-Slashed in Psycho: Ah, that tomato really is something. A real genuine phony.
[the PARTY ends with COPS and Mickey Rooney RACISM, as ALL good PARTIES do]
Audrey Hepburn: [sits on FIRE ESCAPE and sings "Moon River" to SHOW how PERFECT and WOUNDED she is]
George Peppard: Gaaaaaaaze. Oh, my lady john is here.
Patricia Neal: Daaaaarling…there is a strange maaaaan outside your apartment building. I think my husband hired goons to waaaaatch you.
George Peppard: I'll put a stop to this!
[he GOES to MENACE the MAN though he could not be LESS menacing]
Man in Stetson: Hi there, son. I'm here for my wife, Lulu Mae. Let me tell you the backstory, while I eat this Cracker Jack.
[he tells a LONG and BORING story about how Hepburn was a HICK and MARRIED an OLD when she was like NINE, but RAN AWAY to be a CITY SLUT]
Man in Stetson: Also, I've been takin' care of her retard brother, and I can't do that no more. He'll have to go into the army.
George Peppard: Though I have known Holly for roughly five minutes, I am somehow personally betrayed by this story. I will bring you to her!
Audrey Hepburn: I just CAN'T go back with you, darling! Here's some money for my beloved, retarded brother. Take care of him.
[they put Stetson on a BUS to the STRAINS of "Moon River"]
Audrey Hepburn: I feel guilt and want to get drunk. Let's go watch some 60s-bodied strippers.
[they DO and she acts like a JERK]
Audrey Hepburn: Sorry I was a jerk last night. It's just my jam. Let's spend the day doing new things! Isn't it great how we are both whores and don't have to worry about day jobs?
[they STEAL from a five-and-ten, go to the LIBRARY and harass Mr. Banks at TIFFANYS where they get a CRACKER JACK ring ENGRAVED]
George Peppard: Everything is amazing. Now I will kiss her into a camera smeared with Vaseline. And break up with my lady john.
Patricia Neal: Oh, so it's like thaaaaat, huh?
[she BURNS him in an ELEGANT way and you SUDDENLY wish the WHOLE movie was about HER]
George Peppard: I love you, Holly!
Audrey Hepburn: Oh darling, don't be silly, I couldn't possibly be with you. I have to marry for money!
[she GETS herself ENGAGED to a HOT, RICH Brazilian dude]
George Peppard: Nerd rage!
[an UNSPECIFIED amount of TIME later…]
Audrey Hepburn: AAAAAAAAAAAAAAAAAAAAAAAA
Hot Brazilian Dude: Please to help, man resembling Ken doll! The weird woman-child is loco!
[he FINDS her DESTROYING her APARTMENT because her BROTHER is DEAD and it is SAD, but also, maybe Audrey Hepburn isn't SUPER great at ACTING?]
George Peppard: I'm sorry about your brother. Let's hang out one more time before you go to Brazil.
[they have a PLEASANT time, but then she gets ARRESTED for the MOB thing that happened like, HOURS ago]
George Peppard: I bailed you out of jail because I am a classic "nice guy" who thinks he's being a great friend but is really just trying to blackmail you into loving him. Anyway, your filthy foreign fiancé is dumping you because you are scandalous.
Audrey Hepburn: Whatever. I'll go to Brazil anyway and have an adventure.
George Peppard: No! You have to stay here, because you belong to me, because I am a creep!
Audrey Hepburn: No! I am free, just like the nameless cat!
[she LETS the CAT out of the CAB and then INSTANTLY runs after it]
Audrey Hepburn: This rain-soaked cat has made me realize that I love you.
[they MAKE out and I hope that he SELLS a STORY or SOMETHING, because they are STILL both WHORES]


text:
MTV's new show "Failosophy" falls somewhere between "Tosh.0" and Buzzfeed.com -- as in it takes all that bizarre, cyber-based dirty laundry and airs it out big time. This pop-culture, social-network-driven show boasts a live audience and a fresh face, host Hasan Minhaj.
In this exclusive clip, Hasan is highlighting all those social-networking moments that are more like "social not working" -- and there are plenty. #HonestHour is normally a Twitter venue to dish the truth about life (e.g., "I hate my roommate #HonestHour"), but some tweeps take this confessional outlet and turn it into a "PostSecret" moment: "Sometimes I like to cover myself in Vaseline, and pretend I'm a slug. #HonestHour." Well, at least he/she is honest (maybe).
The "social not working" segment moves beyond the Twitterverse and enters the realm of text confusion -- particularly when a mom mistakes the meaning "lol" for "lots of love." It's an especially egregious error when texting the family something like "Your great aunt just passed away. LOL." Yikes.
"Failosophy" premieres on Thursday, 2/14 at 10:30 PM on MTV.


text:
* First genomic map of mutations that lead to tumours
* Findings help explain mutations found in 30 cancer types
* "Profound implications" for cancer treatment, prevention
By Kate Kelland
LONDON, Aug 14 (Reuters) - Researchers in Britain have set
out the first comprehensive map of mutational processes behind
the development of tumours - work that should in future lead to
better ways to treat and prevent a wide range of cancers.
In a study published in the journal Nature on Wednesday,
researchers who analysed more than 7,000 genomes, or genetic
codes, of common forms of cancer uncovered 21 so-called
"signatures" of processes that mutate DNA.
"(This) is an important step to discovering the processes
that drive cancer formation," said Serena Nik-Zainal of the
Wellcome Trust Sanger Institute who worked on the research.
"Through detailed analysis, we can start to use the
overwhelming amounts of information buried deep in the DNA of
cancers to our advantage in terms of understanding how and why
cancers arise."
All cancers are caused by mutations in DNA occurring in
cells of the body during someone's lifetime.
Scientists are clear about some things, such as that
chemicals in tobacco smoke cause mutations in lung cells that
lead to lung cancers, or that ultraviolet light triggers
mutations in skin cells that lead to skin cancers.
But they have yet to figure out the biological processes
that cause mutations behind most common cancers.
"We're beginning to know quite a lot about what the
consequences of those mutations are. But actually we have a
really rudimentary understanding of what is causing the
mutations in the first place," said Mike Stratton, the Sanger
Institute's director and the lead researcher on this study.
"And after all, the things that are causing those mutations
are the causes of cancer."
The team analysed the genetic codes of 7,042 cases of cancer
in people from around the world, covering 30 different types of
the disease, to see if they could find patterns, or signatures,
of mutational processes.
They discovered that all the cancers contained two or more
signatures - a finding that shows the variety of processes that
work together when a cancer develops.
They also found that different cancers have different
numbers of mutational processes. While two mutational processes
underlie the development of ovarian cancer, there are six behind
the development of liver cancer, the researchers said
And some signatures are found in multiple cancer types,
while others are only found in one type. Out of the 30 cancers,
25 had signatures from mutational processes linked to ageing.
In a suggestion of what might be behind many common cancers,
the team also discovered that a family of enzymes called
APOBECs, known to mutate DNA, was linked to more than half of
the cancer types studied.
APOBECs can be activated when the body is responding to a
viral infection. The researchers said it may be that the
resulting "signatures" are collateral damage on the human genome
caused by the enzymes acting to protect cells from viruses.
Stratton described the results as like uncovering the
"archaeological traces" of the many mutational processes that
lead to most cancers.
"This compendium of mutational signatures and the consequent
insights into the mutational processes underlying them has
profound implications for the understanding of cancer."
(Editing by Mark Heinrich)


text:
Maino On Joe Budden! "Ice Packs On Their Eyes Making Blogs! How You Gonna Say You Want A Fair One With A Ice Pack On Your Face. What Kind Of Shit Is That" + Says He Beat Some Dude Up So Bad They Never Talked Smack Again On Camera
Sub-0 DVD EXCLUSIVE! New DVD for sale everywhere
Please click the "Report" button below if the video on this page is not working properly.
Comments will only be displayed by verified emails. No Spamming or Racism.


text:
Sioux Falls Promoting Neighborhood Groups
SIOUX FALLS - Officials in South Dakota's largest city are asking neighborhoods to form associations.
Sioux Falls officials say the idea would foster community development and help people connect to city services. It would also help the city address neighborhood problems.
The Argus Leader reports that about 40,000 residents in four core neighborhoods have begun receiving robocalls promoting the benefits of neighborhood associations.
The city has set aside $10,000 for a new neighborhood improvement grant program. Applicants must be a member of are registered neighborhood association to qualify for the grant.
Copyright 2013 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.


text:
About Us
Contact Us
Add Your Business
Bookmark Us
Website Design
Email Us
Deer Park Business Directory New York
Take your business to the next level with 24/7 advertisment on the internet.
If your Deer Park Business, Store or Shop is not included in our Deer Park Business New York
Directory, please take a moment and fill out our
Free Basic Listing
now. Don't be left out!
Parking Systems
Parking Sytems
Deer park
Deer Park, NY 11729
Phone (631) 243-1979
Back to Directory
Don't forget to mention the Deer Park Business Directory the next time you go shopping locally.
Back to Top
Home |
About Us |
Contact Us |
Add Your Business |
Bookmark Us
| Website Design
| Email Us
| Link to Us
| Site Map
Copyright 2006 -


text:
July 11, 2018
A Slovakian couple is $1,000 richer after their drone video took home the prize in a weekly video contest.
Martin Víglaský and his girlfriend uploaded their video "" to AirVuz.com. After being selected as a nominee for the , the couples' footage of Montenegro was voted as the best of the week and earned them $1,000.
Víglaský said the couple both quit their office jobs to pursue a life of travel. In December of 2017, they bought a DJI Mavic Pro drone to help enhance their travel footage. Now the duo can say they are award-winning aerial cinematographers.
The winning video was the culmination of a month-long trip through Montenegro. Víglaský said they had been wanting to visit the Balkan States for quite some time and finally made the trip in May of 2018. To avoid large crowds while flying the drone, Víglaský said he woke up early in the mornings to be able to fly without the worry of other people.
This video of Montenegro is just one of many from the Balkans that is featured in a curated collection on AirVuz.com. More aerial footage of the Balkans, including Croatia, Greece, Bosnia and Herzegovina, and more can be seen .
As the winner of the Drone Video of the Week contest, this video of Montenegro is automatically eligible to win the for the month of July. The monthly contest awards a total of $2,500 in prize money, including $1,000 to the winner.
The Drone Video of the Week contest follows the success of the inaugural , which selected the best drone videos and photos of 2017. Voters chose winners in 13 categories from a total of more than 33,000 videos.
For more information about the contest, contact Tyler Mason, Director of Public Relations, at .
About AirVuz
Since its launch in 2015, has become the world's leading drone video and photography sharing platform and global community for drone pilots and aerial media enthusiasts. Drone enthusiasts worldwide can upload and share videos and photos in unlimited quantity and at no cost. Site users have free access to an ever-growing library of drone media content including easily browsable categories such as travel, extreme sports, golf courses, drone racing, landmarks and more. AirVuz users also have access to original AirVuz content, including the weekly AirVuz News program, profiles of top content creators, product reviews, and how-to information for drone pilots on how to take and edit high quality drone video.
Information contained on this page is provided by an independent third-party content provider. This Site make no warranties or representations in connection therewith. If you are affiliated with this page and would like it removed please contact support [at] perpetualwire.com.


text:
RichesonLinenArt Panels
Cretacolor MonolithWoodless Pencils
BlickMasterstrokeInterlockingBristle Brushes
BlickFrenchEasel byJullian
Blick ChelseaMetal GalleryFrames
BlickWater-SolubleBlock PrintingInks
BlickPencil Case
UtrechtColor WheelGuide
10% Off Orders of $59 or More + Free Shipping
Available Offers
Today's Deal
Free Shipping
On Orders of $35 or More**
10% Off
Orders of $59 or More*
Use Code: CEUK
*Exclusions apply**After discounts taken
On Orders of $45 or More**
**After discounts taken
Browse more:
Old Holland has been making artist colors since 1664, as one of the oldest continuously operating companies in the art supply industry. The company is known for uncompromising adherance to its techniques and standards. All color making is done by hand
Color Swatches created using heavy application/medium application/50% tint and were applied on acrylic primed canvas (7 oz) material.
iron oxides
Burnt Sienna is a warm, mid-brown color formed by burning the yellow-brown limonite clay called Raw Sienna. It ranges from semi-opaque to semi-transparent due to the combination of its opaque, red-brown mass tone and its transparent, orangey undertone. It is an excellent mixing complement for blues and greens and creates salmon or peach colored tints when mixed with white. It can be useful for subduing bright colors and does not get chalky in dark mixtures.
Burnt Sienna has good permanence and is considered one of the most versatile of the permanent pigments.
Burnt Sienna has no significant hazards.
Burnt Sienna has been used as a pigment since prehistoric times, but its current name came about during the Renaissance. It comes from the city of Siena, in Italy, and is short for terra di Siena, meaning earth of Siena. Sienna was famous for the mining and production of earth pigments from the Renaissance until World War II. Due to the depletion of clay deposits in Tuscany, Italian siennas now come from other areas, including Sicily and Sardinia.
Caput Mortuum, Italian Earth, Natural Brown Iron Oxide, Sienna, Spanish Red, Vandyke Brown.
hydrated iron, magnesium, aluminum and potassium silicates
Green earth is a natural pigment that varies from yellow and olive to blue-green in its composition and hues. It is semi-transparent, has low hiding power and tinting strength, muddies and darkens in oil, and is particularly good for tempera and fresco painting.
Green Earth has excellent permanence and lightfastness, although some varieties can be developed by light calcining. It is one of the most permanent pigments because Earths are not affected by sunlight or atmospheric conditions.
Green Earth has no significant hazards.
Terre verte is French for green earth. It was discovered in antiquity, and its use has been traced to the Ajanta caves in India and a variety of Roman sites, including Pompeii. Green Earth was very popular for underpainting flesh tones in medieval paintings because this green was the compliment to pink on the medieval color wheel. Its use declined after the Renaissance. The natural supplies of the pigment are mostly depleted, and manufacturers currently duplicate the hue using mineral bases like Viridian, iron oxide, or chromium oxide, or artificial ceramic colorants. Pigments sold under this name can also be the result of mixing Sienna and Phthalo Green.
Celadon Green, Celadonite. Green Bice, Holly Green, Stone Green, Terra Verte, Verdeterra, Verdetta, Veronese Green. Bohemian Earth is a high quality, clear, middle-green variety. Cyprus Green Earth, or Cyprian, is a high quality yellowish variety. Tyrolean and Verona Earth are high quality bluish varieties. Verona Brown is a calcinated variation of Green Earth. Burnt Green Earth is similar to Transparent Brown
Zinc White is the coolest white, and it has a cold, clean masstone and a slightly bluish tint. It has less hiding power and is more transparent than other whites. It dries slowly and is good for painting wet into wet and for glazing and scumbling. Zinc White is neither as opaque nor as heavy as Lead White, its covering power is not as good, and it takes much longer to dry. However, it does not blacken when exposed to sulfur in the air as Lead White does. It is very valuable for making tints with other colors. Unmixed Zinc White dries to a brittle and dry paint film that may crack over the years, so it is not good for frescoing. It is more transparent in acrylic form than Titanium White and is the most commonly used white with gouache. Chinese White is a version of Zinc White appropriate for opaque watercolor techniques.
Zinc White has great permanence and lightfastness.
Zinc White is moderately toxic if ingested and slightly toxic if inhaled.
Though historians are divided on who first isolated the element zinc, they agree that it was first suggested as a white pigment in 1782. Zinc White was accepted as a watercolor in 1834 and was called Chinese White due to the popularity of oriental porcelain in Europe at the time. Ten years later, a suitable oil form was produced. By the early 20th century, it had improved to the point where it was an acceptable alternative to Flake White.
Chinese White, French White, Permanent White, Silver White, Snow White, Zinc Oxide.
Your cart is currently empty.
Your cart currently contains N item.
® Old Holland is a registered trademark.


text:
- England news
Saker chose 'exciting' England over Warks
England bowling coach David Saker has admitted that the fear of walking away from a golden age in English cricket stopped him from taking the helm at Warwickshire.
The Bears were hoping Saker would succeed new England limited-overs coach Ashley Giles at Edgbaston after enhancing his reputation while working with the national team since 2010.
Saker was in talks with Warwickshire about the position, but decided that the challenge of fulfilling his contract with the ECB, which takes in a string of mouth-watering contests, was too great to give up.
"I had a little meeting with some people at Warwickshire and we talked about it," said Saker, currently with the England squad for their ODI series in India, which begins on Friday.
"I was very interested in it but in the long run I am committed to getting this England team through to the 2015 World Cup.
"I think there is something special coming up. Obviously there is a double Ashes, a Champions Trophy in England and then the World Cup. It's a pretty exciting time to be with England so it just wasn't the right timing."
Saker also played down concerns about the side's form after a humbling warm-up defeat by India A on Sunday.
"We have a pretty clear plan about selection for warm-ups and I don't think that will have changed after yesterday's result," Saker added. "We have a fairly good idea of how our team will look in the first ODI.
"Warm-ups are just that, it's about getting people right for the series."


text:
Lincoln College of New England is partnering with area community groups, students and local residents to "jam a Van" with food to help those who might otherwise go hungry over the upcoming 2012 holiday season.
In conjunction with Terryville High School, the Plymouth Community Feed Project and "Kids Against Hunger," the college is inviting local resident to help Jam the Van full of non-perishable food to help feed families locally, national and globally. Monetary contributions will also be accepted.
Donations can be made at the college's Southington campus, in front of LeConche Hall until Dec. 15. On Dec. 15 the van will be driven to Plymouth, where the college, along with Terryville High students will help distribute donations and packaged meals for families locally and in other countries.


text:
Tag Archive for: Professor Extreme
TheDWM – now with encryption!
Look for the secured padlock up in your URL bar, only sites with a secure connection have them!
We do not sell or collect tracking data. We're also 100% ad free!
TheDWM - come for the secure content, stay for the free mimosas! (Disclaimer: theDWM does not serve free mimosas.)
Newest | Active | Popular | Alphabetical
active 6 months, 2 weeks ago
active 1 year, 7 months ago
active 1 year, 7 months ago


text:
This post is part of our annual Christmas Card-a-Day series! If you would like to submit your card, please click here for more details.
Today's featured card is by Kay Williamson of Club Scrap Inc., from Appleton, Wi, USA. Kay made this card with the Club Scrap Gnomes Unmounted Rubber Stamp Set. She tells us, "It's actually a set, the unmounted stamps and a stencil for coloring in the Gnome."
Club Scrap Green, Red and White Cardstock
Club Scrap Hybrid Carnation, Earth, Moss, Peridot and India Black Inks
Peach and Light Blue Watercolor Pencils
Club Scrap Gnomes Unmounted Rubber Stamps, the collection can be found here
Stamp Gnome and Holly Leaves onto white card front.
Use foam tip tool and Gnome Stencil to color in Gnome and Leaves.
Use Peach WaterColor Pencil to color in Gnome Face
Use Light Blue Water Color Pencil to color in snow base.
Thank you, Kay!
Please visit Kay's blog here.


text:
After J. Godwin's commentaries on books IV and VI (Warminster, 1986 and 1991), P. Michael Brown, who previously edited the first book of Lucretius for Bristol Classical Press in 1984, continues the Aris & Philipps series of Lucretius with this new edition of book III. He largely keeps to his predecessor's format (preface, introduction, text and translation, commentary, bibliography and indices), but his commentary comprising 130-odd pages is much fuller than Godwin's (who devotes about ninety pages each to the longer books IV and VI). Further English commentaries on Lucretius, chiefly designed for students, are on hand for books III (E.J. Kenney, Cambridge, 1971) and V (C.D.N. Costa, Oxford, 1984). It is therefore slightly disappointing to have an additional commentary on book III rather than II, which was last treated by the somewhat dated work of Cyril Bailey (Oxford, 1947). Moreover, Brown's commentary, although better than Kenney's at illuminating Lucretius' philosophical argument, is at best complementary to Kenney's, but nowhere nearly replaces it.
The introduction comprises six sections, of which four constitute rewritten and expanded, yet hardly updated1 versions of Brown's previous introduction to book I. I find particularly useful the philosophical sections III ("Epicurean Philosophy and Lucretius"), a brief but crisp survey of Epicurean logic, physics and ethics and their application in Lucretius, and IV ("The Epicurean Soul"), which helps to clear up in advance the difficulties with the central terms of the book, animus and anima. In both sections, however, as well as in the introductory notes in the commentary (on which more below), a philosophy student might have wished to see the extant Epicurean sources more fully integrated, with at least a reference to the major collections (if not Usener's Epicurea and Arrighetti's Epicuro, then Long & Sedley's Hellenistic Philosophers, all absent from the bibliography). Section II ("The Poet") presents the sparse biographical evidence on Lucretius with the requisite caution. After a broad outline of the structure and content of the six books of the De Rerum Natura in section I ("The Poem"), Brown connects Lucretius' personal appeal to his addressee Memmius with the missionary aims of the Epicurean school and refers to Epicurus' own practice in his letters to his disciples; yet this aspect of the poem is much more plausibly explained as a generic constituent of didactic poetry, on which Brown has disappointingly little to say in the complementary section V ("Lucretius' Poetic Medium and Achievement"). In this section, he rightly concludes from 1.921-950 that Lucretius regards his poetry as a tool to propagate the difficult Epicurean doctrine more widely and attractively; he then argues strongly for the poetic unity of the De Rerum Natura by focussing primarily on the stylistic qualities of its expository passages. Although Brown's approach is rather opposite to that chosen by Kenney, it is encouraging to see that both reach roughly the same conclusions. Section VI ("The Manuscripts") is insufficient. Brown does not mention the recently-deciphered Lucretian papyri from Herculaneum, which are of great significance to the reception of Lucretius in the Epicurean school and to the earliest period of the Überlieferungsgeschichte. The survey of the humanistic manuscripts takes no account of Michael D. Reeve's fundamental investigation of the Italian tradition of Lucretius (IMU 23, 1980, 27ff.), and even before Reeve, the Codex Monacensis, Clm 816a, which Brown vaguely calls "a valuable Italian manuscript," was much more adequately assessed by Munro, who disregarded the manuscript itself as being "of no importance whatever" (p. 25 in the fourth edition of his Lucretius [Cambridge, 1886]), but carefully collected its marginal notes, which (among other witnesses) contain the emendations of the renaissance scholar Michael Marullus. Constituting a "new text", as the back cover proclaims, Brown's edition aims to provide "as complete and continuously readable a version as possible without resort to extravagant conjecture". The resulting text, I think, is conservative to an extent which has been thoroughly undermined by the appearance of Konrad Mueller's authoritative critical edition (Zuerich 1975), which Brown ignores throughout. Brown's accompanying notes, rather than tackling seriously the problems, tend to smooth away real difficulties with 'neat' explanations and parallels which are not, or not quite, germane. For example, see on 196-199 (where in 199 not aura, but aura suspensa levisque should be supplied), 244 (contrast Kenney), 415 (where a parallel for the omission of the copula in a subordinate clause is needed), 717 (see Mueller, Gnomon 46, 1974, 760), 820 (see Madvig, Op. ac. [2. edition] 235, n. 2) and 969 (contrast Heinze). Brown strongly holds the view that the poem lacks a final revision by its author (cf. p. 2 and e.g. the notes on 806-829 and on 969, where he refuses to accept Cipelli's antehac for ante haec, which overcomes the difficulties).2 An alternative explanation, that the text might have suffered extensively from later revisions, is nowhere taken into account, neither, for instance, at 806-818, an interpolation so obvious to scholars such as Munro and Housman (CP II, 426) that they saw no need for even a single word of argument, nor at 474-475, which are simply excluded without remark.
I am well aware that the format of the series forces the editor to print a highly selective apparatus criticus. Yet an editor who has space for palaeographic trivialities such as pietate and piaetate (84) and the readings of codices descripti at 1, 702 and 856, must be blamed for omitting readings which are almost certainly correct from the ancient secondary tradition at 676 (longiter) and from the Quadratus at 1017 (carnificis, which depends on verbera, not on robur; cf. Mueller's parallels in Gnomon 46, 1974, 760 and in his critical apparatus a.l.). In at least two instances Brown prints highly doubtful emendations without indicating the manuscripts' readings: in 735f. sed tamen his (scil. animis) esto quamuis facere utile corpus | cum subeant the corrupt cum is replaced by Bernays' cui, with cui subeant being unhappily translated as 'in which to take refuge'. Yet the locative dative instead of the accusative is hardly possible in pre-Augustan poetry (cf. OLD s.v. subeo, No. 10b-c, where the quotations seem to confirm the slight difference in meaning between the two constructions felt by Williams on Verg. Aen. 3.292), and writing quod with the 'amicus Fabri', for which Vitr. 2.1.2 provides a very suitable parallel, is a far more plausible solution. In 742 cervis is the wrong emendation of the Venetian edition for the correct cervos of the manuscripts (743 being an obvious interpolation). The difficult lines 79-84 are inadequately treated: indicating a lacuna after 82, which makes the fear of death the subject of 83f. hunc uexare pudorem, hunc uincula amicitiai | rumpere (...) suadet, Brown translates: 'it persuades one man to betray his sense of honour, another to break the bonds of friendship', but in pre-Virgilian hexameter poetry hic ... hic etc. never means 'one ... another'; contrast in Lucretius e.g. 3.75f., 3.311ff. and see Clausen on Verg. ecl. 4.56. The corrupt suadet has to be replaced by either fundo (Lambinus) or foede (Mueller). New and incorrect punctuation is introduced at 663, where icta for simple reasons of syntax can belong only into the ut clause, and at 1044, where Brown deletes the comma behind restinxit and bizarrely makes Epicurus outshine all stars!3
In his notes on prosody, metre, grammar and poetic diction, Brown largely follows Kenney, incorporating some additional help for the less advanced student. In contrast to Kenney, he often confines himself to describing the metrical, grammatical or stylistic phenomenon under discussion, without seeing it, as Kenney does, in the wider context of Latin poetry and language. Compare, e.g., their notes on the omission of quod in 183, on the diminutive tantillus in 189, on the rhythm of 527 (the really remarkable feature is the word-end after the second spondaic element not followed by a monosyllable), on the hysteron proteron in 787, on the word-order in 843f., and on the indicative respondemus in 950. A student who has worked through Kenney will read his next Latin poet with greater understanding and with less need for help, whereas Brown, I fear, does not provide this benefit to the same extent. His additional remarks are not always reliable: in his note on suadet (84), he contends that suadere with accusative and infinitive is the replacement of 'the prose construction of dative and an ut clause', but both Ennius in his Annales (278f. Skutsch) and Lucretius (4.1157f.) actually use this alleged prose construction. The note on the spelling of seorsum (499-501) hardly derives from an autopsy of the Lucretian manuscripts. To Clark's conjecture in 694 et lapis oppressus subsit si (subitis e codd.) frugibus asper he objects "on metrical grounds, as Lucretius would more probably have written si subsit to secure coincidence of ictus and stress in the fourth foot". But see, e.g., 3.76, 94, 101, 108 and, for si being the postponed monosyllable, 3.408, 4.298 and 300.4
The true value of the book is to be found in its thorough illumination of the philosophical argument. Where the text is sound, the prose translation, as far as I can judge as a non-native English-speaker, fulfils its endeavour to be "as literal as the aim to produce a reasonably idiomatic version allowed", and it is certainly inevitable that it should sometimes miss the vividness of the Latin (e.g. at 356) and abandon the syntax of the original (e.g. at 1053ff.). In the commentary, discrete passages are headed by informative introductory notes, which do not merely sum up the content of each passage, but also show its specific relevance to the book and its connection with the preceding and following argument. Taken together, these introductions form a sound interpretation of the whole third book and, incidentally, revise Bailey's numeration of the proofs for the mortality of the soul. After the lengthy introductions, the line-by-line notes are sometimes a bit repetitive, but often improve the reader's understanding of the consistently Epicurean spirit of Lucretius' argument by illuminating his allusions to, or anticipations of, other aspects of the Epicurean doctrine. Brown's superior understanding of the philosophical argument enables him to correct or improve upon Kenney in his notes on e.g. 249-251, 269-272, 580f. and 776f.
These virtues, to my mind, do not outweigh the shortcomings of a book, from which the student of ancient philosophy will certainly profit, even though Heinze's commentary, which provides the full source-material on the background of Lucretius' argument, remains indispensible. The student of Latin poetry is certainly better served by Kenney.5
1. The very selective bibliography lists remarkably few items published after 1985; for an up-to-date research survey, covering all aspects of Lucretian scholarship and comprising extensive bibliographies, see M. Erler's chapter Lukrez in: H. Flashar (ed.), Die Philosophie der Antike. Band 4: Die hellenistische Philosophie, Basel 1994, 381-490. 2. On Francesco Bernardini Cipelli's emendations of Lucretius see my paper in Hermes 128 (1998), 370ff, I was not the first to argue, in my Pseudo-Lukrezisches im Lukrez, Berlin-New York, 1996, that textual difficulties must not be excused by proclaiming that a final revision was not applied by the author. 3. Misprints must be corrected at 180 (read factum for factam) and, more disturbingly, at 583 (read animae for animi and delete the consequent note in the commentary). In the apparatus criticus the note on 823 is transposed behind the note on 853. Further misprints in the commentary: p. 204 (on 941) read offensa for offensus, p. 216 (on 1036) read lepos for lepor. 4. Bailey's treatment of the subject (p. 112f.) needs to be revised. 5. I thank John Turner for improving the English of this review.


text:
Kids Furniture | Smart Modular Bed |
SM010 Modular Single /Super Single Bed Showroom Locatin
How Modular Beds Work (hundreds of options):
Made from 100% Solid Finland Pine Wood;
EN71-3 standard certified;
Up to five years warranty;
Modular design, Transformable for future demands;
Free Delivery & Assembly;
Natural color or whitewash color available for modular series bed.
All Pictures & colors are used for illustration only. Please visit showroom for practical products you are interested to.
Without explicitly request, Bed Base are all wooden color.
Please kindly note whitewash color may have slight visual color difference due to the nature of whitewash painting craftworks and natural wood textures inside.
Please visit showroom for more information.
Certified By SGS.
Welcome to choose our 100% Solid Finland Pine wood furniture.
All our beds are designed well to fit for standard adult size mattress.
Mattresses are sold separately.
We supply certified high quality pure latex mattress Originally made in Belgium for matching sales of beds.
Please kindly approach our showroom for more information.
100% latex mattress directly imported from Belgium latex manufacturer with certified quality to cater for different sleep demands. interested customer may approach showroom to check all original documents.
Please leave your message,we will reply to you in 24 hours


text:
02. October 2012
Invitation for the final conference of ForeStClim
It is with great pleasure that we invite you to the final EU Funded Interreg IVb ForeStClim Conference which will be held in Liverpool, England from Tuesday 13th - Thursday 15th November 2012.
The conference will start with an opening of a "Trees, people and Climate Change" photographic exhibition at Risley Moss, in Warrington.
The final conference will then take place on Wednesday 14th November, with a field trip to look at the ForeStClim funded interventions at Sefton Coast on Thursday 15th November.
Further information regarding the conference programme, speakers and online booking information can be found at


text:
- Subscribe now!... Get rid of ADs!Support Power Line...VIP MembershipPresentsPower Line
Most Read on Power Line
Our Favorites
- American Greatness
- American Mind
- American Thinker
- Ann Althouse
- Belmont Club
- Churchill Project
- Claremont Institute
- Dartblog
- Federalist
- Gatestone Institute
- Hoover Institution
- Hot Air
- Hugh Hewitt
- InstaPundit
- Jewish World Review
- Legal Insurrection
- Library of Law and Liberty
- Lileks
- Lucianne
- Michael Ramirez Cartoons
- Michelle Malkin
- RealClearPolitics
- Ricochet
- Roger L. Simon
- Steyn Online
- Tim Blair
- Urgent Agenda
Subscribe to Power Line by Email
Find us on Facebook
"Arise and take our stand for freedom as in the olden time." Winston Churchill
"Proclaim Liberty throughout All the land unto All the Inhabitants Thereof." Inscription on the Liberty Bell
Monthly Archives: July 2007
A fair and politic assessment
As liberal analysts like Michael O'Hanlon and Kenneth Pollack and MSM reporters like John Burns describe the major progress we're making in Iraq, what does General Petraeus have to say? Here's what he told Michael Yon (via an NRO symposiuim): Our assessment at this point is that we have begun to achieve a degree of momentum on the ground in going after AQI sanctuaries and in disrupting the activities of »
U.S. Deaths in Iraq Down in July
The number of U.S. servicemen killed in Iraq in July was 74, the lowest total in eight months. That's good news, obviously, but it's hard to know what to make of it. The "surge" was expected to increase, not decrease, American deaths, as the strategy was to engage more closely with the enemy. It is hard to believe that after only a couple of months, enough progress has been made »
The latest power play at Dartmouth
Joe Malchow reports on the latest power play at Dartmouth. As we have noted, the powers-that-be are considering plans to strip alumni of their longstanding right to elect half of Dartmouth's trustees. The decision follows (a) an unbroken string of victories in trustee elections by independent candidates critical of the status quo at Dartmouth and (b) the defeat of a constitutional amendment designed to make such victories more difficult to »
Still young, and oh so accomplished
Bill Bennett turns 64 today. Hearing this news put me in mind of an old story. A father tells his lazy son, "What's the matter with you; when George Washington was your age he had already thrown a silver dollar across the Potomac and was making his mark as a surveyor." The son replies, "Yeah, and at your age he had already defeated the British." It's amazing to realize how »
Judge Southwick as "super-precedent"
I've written here and here about the smear tactics being employed by Senate Democrats as they continue to block Judge Leslie Southwick, President Bush's nominee for the Fifth Circuit Court of Appeals. Centrist legal analyst Stuart Taylor has noticed too. As Taylor explains, Southwick has a distinguished record and "wins high praise from Democrats, African-Americans, and others who know him." In addition, Southwick "wears a distinctive badge of courageous service »
A liberal's futile advice to Senate Democrats
Ruth Marcus, one of the fair-minded liberals at the Washington Post, defends Alberto Gonzales from the bogus perjury accusations lodged by Senate Democrats regarding his testimony from last week. Marcus also finds that these allegations are without merit, and that "the calls by some Democrats for a special prosecutor to consider whether Gonzales committed perjury have more than a hint of maneuvering for political advantage." She invites Congress to focus »
An Ideology of Hate
Chief Justice John Roberts, in my view the most extravagantly qualified Supreme Court nominee in my lifetime, had a "benign idiopathic seizure" today. He's fine, but might be placed on anti-seizure medication since he also had one in 1993. This is how the prominent liberal web site Wonkette covered the news: Chief Justice John Roberts has died in his summer home in Maine. No, not really, but we know you »
Defending Alberto Gonzales — why we bother
None of us at Power Line is a fan of Alberto Gonzales. Not that long ago, we dreaded the prospect that he would be nominated for the Supreme Court, and I don't recall any of us being enthusiastic when President Bush named him Attonrey General. Nor do I believe he has distinguished himself in that job. Why then do we bother to defend him when we believe he's being unfairly »
Is the tide turning in Washington?
I'm not yet persuaded that it is, but this piece by Dan Balz and Chris Cillizza in the Washington Post provides some grounds for optimism. They report that House Majority Whip James Clyburn (D-S.C.) says a strongly positive statement progress in Iraq by General Petraeus likely would split Democrats in the House and impede his party's efforts to press for a timetable to end the war. According to Clyburn, Petraeus »
Reporting live from Jerusalem
I'm on a whirliwind four-day, three-city tour of Israel as a guest of America's Voices in Israel. It's the first-ever bloggers tour sponsored by America's Voices. My traveling companions include Jim Hoft of Gateway Pundit, Jeff Emanuel of Redstate and Jeff Emanuel, Andrew Breitbart of The Drudge Report, Breitbart and Breitbart TV, and Andrew's attorney Larry Solov. Our host from America's Voices is the lovely Fern Oppenheim. The friendship between »
What did Sen. Feingold know and when did he know it?
Washington Post reporters Dan Eggen and Amy Goldstein continue their effort to assist congressional Democrats in smearing Attorney General Gonzales by questioning his truthfulness in another front-page story. The only news on this front from the past few days is the confirmation that Gonzales testified truthfully about which surveillance was the subject to his visit to John Ashcroft at the hospital. As John has noted, even the New York Times »
Global Optimism, American Pessimism
At Real Clear Politics, Michael Barone dissects the latest Pew Global Attitudes survey. There is some specific good news about attitudes in Muslim countries: [T]he Pew Global survey showed sharply reduced numbers of Muslims saying that suicide bombings are often or sometimes justified as compared with 2002. That's still the view of 70 percent in the Palestinian territories. But that percentage has declined from 74 percent to 34 percent in »
"A War We Just Might Win"
That's the title of an opinion piece by Michael O'Hanlon and Kenneth Pollack of the Brookings Institution in today's New York Times. They have returned from a visit to Iraq, and report that conditions there are much improved: Here is the most important thing Americans need to understand: We are finally getting somewhere in Iraq, at least in military terms.*** After the furnace-like heat, the first thing you notice when »
The Times Ponders the Calendar
Today's New York Times Corrections section discourses on an obscure bit of newspaper history. It fails to address, though, a more fundamental question: don't its editors know how many days there are in February? An article on Thursday about the arraignment of three men in the shooting of two New York police officers, one of whom died, misstated the schedule set by a judge for a trial in the case. »
Iraq — soccer champions of Asia
Yesterday, I noted that the Iraqi national soccer team — which includes Sunnis, Shi'ites, and Kurds — had advanced to the finals of the Asian Cup competition. Today the Iraqi team added to that already remarkable accomplishment by defeating heavily favored Saudi Arabia 1-0 in the final. Sometimes a 1-0 victory can be a fluke. However, the report of this match suggests that Iraq clearly deserved its victory and would »
"Same Old Question, Different Answer"
That's the title of this report in the New York Times. The Times did some polling on Hillary Clinton, in the course of which they asked the same question about Iraq that they've asked many times before: "Looking back, do you think the United States did the right thing in taking military action against Iraq, or should the United States have stayed out?" A funny thing happened; the numbers seemed »
Media Alert
Paul and I will be on Bill Bennett's radio show tomorrow morning, starting at 7:30 Eastern, 6:30 Central. No doubt Bill's first question will be, "What happened to your site yesterday?" From there we'll go on to the news of the day. Scott, by the way, is in Israel. He arrived this morning (U.S. time), and will be meeting with a number of media and political figures. We're counting on »


text: GCS Paving Company is one of Massachusetts' most experienced paving contractors and provides expert asphalt paving repair services to commercial and residential customers in Haverhill, Massachusetts. We are experienced in all types of asphalt paving repairs including parking lot repairs, driveway repairs, sidewalk repairs, asphalt paving patching, pot hole repairs, playground construction repairs, tennis court repairs, basketball court repairs and virtually any type of asphalt paving installation or repair imaginable. Contact us for a free quote on your asphalt paving repairs and pavers in Haverhill, MA.