text:
Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Aperi Architecture Document
Ted Slupesky (email@example.com) and Todd Singleton (email@example.com)
Latest Update: August 2006
- 1 Architecture of Aperi Storage Manager
- 1.1 Introduction
- 1.2 Technology & Component Model
- 1.3 High Level Architecture
- 1.3.1 Conceptual View
- 1.3.2 Process View
- 1.3.3 Mapping Aperi Function to the OSGi/Eclipse Component Model
- 1.3.4 Platform Layer
- 188.8.131.52 OSGi and Eclipse Container
- 22.214.171.124 Lifecycle Management (Eclipse Updater)
- 22.214.171.124 Servlet Container
- 184.108.40.206 SOAP & WSDL Support
- 18.104.22.168 Common (org.eclipse.aperi.common plug-in)
- 220.127.116.11 AbstractExtensionMgr
- 188.8.131.52 Database (org.eclipse.aperi.database plug-in)
- 184.108.40.206 Jobs & Scheduler (org.eclipse.aperi.jobs plug-in)
- 184.108.40.206 Discovery (org.eclipse.aperi.discovery plug-in)
- 18.104.22.168 Monitoring (org.eclipse.aperi.monitor plug-in)
- 22.214.171.124 Control (org.eclipse.aperi.control plug-in)
- 188.8.131.52 Events (org.eclipse.aperi.events plug-in)
- 184.108.40.206 Authorization (org.eclipse.aperi.authorization plug-in)
- 184.108.40.206 Configuration (org.eclipse.aperi.config plug-in)
- 220.127.116.11 Alerts (org.eclipse.aperi.alerts plug-in)
- 1.3.5 Application Layer
- 1.3.6 User Interface Layer
- 1.3.7 Command Line Interface
- 1.3.8 Web-based Console
- 2 Other Areas
Architecture of Aperi Storage Manager
This document describes the architecture of the Aperi Storage Manager, an open source storage management platform owned by a community of storage vendors. The Aperi Storage Manager is based on an initial contribution from IBM of a large portion of the IBM TotalStorage Productivity Center 3.1 product. Leveraging the Eclipse Platform, the Aperi project intends to develop an extensible storage management application framework and an initial set of exemplary, exploiting applications. The framework will include standards-based services for control, discovery, and monitoring of storage resources. Initial candidate exploiters include file system, fabric, tape, and disk management applications.
The platform should be extensible, so that community members can easily add new features, and sufficiently componentized to allow portions of the platform to be used in other products. In addition, it is expected that the Aperi platform will have a commercially-friendly license that will allow community members to develop commercial offerings that combine open source Aperi code with proprietary, closed source functions. This is intended to support the development of an ecosystem similar to Eclipse, in which it is possible to:
- Download and use the vanilla Aperi Storage Manager as a complete (if basic) application
- If desired, extend the capabilities of Aperi through freely-available (or other) plug-ins
- Alternatively, commercial products can be purchased, which contain Aperi as well as code that is proprietary to a vendor
- In addition, internal components of Aperi, such as the discovery engine, can be included in other products (open or closed source) that have little to do with the Aperi Storage Manager.
This document describes the desired architecture of the Aperi Storage Manager. It will be seen that IBM's initial contribution needs to evolve in various ways to achieve the vision of the desired architecture. At times specific deviations between IBM's contribution and the desired architecture are mentioned, but this is not exhaustive. Further work can be done to provide specific bridging plans between the initial contribution and the desired architecture.
Technology & Component Model
The Aperi Storage Manager is primarily written in Java with some native code (written in C) as required. The intent is that Aperi can run on either IBM or Sun JREs, although the initial IBM contribution has been tested only with the Sun JRE. Compatibility issues are not anticipated between JREs except in the area of encryption libraries. Specific JRE versions are not identified in this document; however, each release of Aperi will be associated with a particular JRE version (e.g. Java 1.5). In general, Aperi should refrain from upgrading from one JRE version to another whenever possible, because upgrading Java versions can require an upgrade on all agent and GUI machines. This should be avoided whenever possible; decisions to upgrade Java versions should be made carefully.
OSGi (Service Model)
The OSGi/Eclipse service platform provides an open and standard architecture to develop, deploy,and manage services in a coordinated fashion. In the OSGi Service platform, bundles are the entities that are utilized for deploying java-based applications. A bundle is comprised of a set of java classes which can provide functionality to end users and can provide components or services to other bundles in the environment.
The following sections will provide more detail on both the OSGi and/Eclipse component models.
OSGi Bundle Lifecycle
A bundle has a prescribed lifecycle as the following diagram shows:
Installed. A bundle is in this state when it is installed in the framework but cannot run. The bundle's code dependencies are not resolved.
Resolved. A bundle is in this state when the framework has successfully resolved the bundle's code dependencies.
Starting. A bundle is in this state when the start method is active. If the start method completes without exception, the bundle has successfully started and will move to the Active state.
Active. A bundle is in this state when it has been successfully started.
Stopping. A bundle is in this state when the stop method is active. When the stop method completes, the bundle is stopped and will move to the "Resolved" state.
Uninstalled. A bundle is in this state after it is uninstalled. The bundle is in an unusable state and all references to the Bundle object should be released immediately.
Eclipse (Lifecycle Management, Extensions)
The Eclipse platform is a universal platform for integrating components. With the release of Eclipse 3.0 the Eclipse architecture and implementation utilizes the OSGi component model as a base for its plug-in architecture. A plug-in represents the smallest unit of function/component that is deployed within the Eclipse platform. In addition, the Eclipse 3.0 plug-in model further extends the base OSGi bundle interfaces with its own features and enhancements. Some of the core features deal with the concepts of "extensions" and "extension points" in addition to an enhanced deployment and installation model.
A plug-in can be described as a JAR file with a plug-in manifest file named plugin.xml. The plug-in manifest describes the plug-in to the framework and enables a plug-in to consume and/or provide extensions from/to other plug-ins. On the other hand, a bundle is a JAR file with a bundle manifest file named MANIFEST.MF. The bundle manifest describes the bundle to the service framework and enables a bundle to consume or provide packages and services from/to other bundles. Since the Eclipse framework is built on the OSGi Service Framework, each component in the applications can be defined as a plug-in, a bundle, or both depending on your requirements
Relative to Aperi's usage, the relationship of an eclipse plug-in to an OSGi bundle can be represented by whether or not extensions and extension points are defined. If so, plug-in capability is leveraged. If not, it is a pure OSGi bundle.
The MANIFEST.MF file below corresponds to the Myapp application, which exports a service definedin the IMyappService Interface and implemented in the MyappServiceImpl class.
The Bundle-Activator header in the bundle manifest file identifies the class to the framework. At startup time, the framework creates an instance of this class and calls its start() method. The Bundle Activator can then publishes services, starts its own threads, and so on. When the bundle shuts down, the framework calls the activator's stop() method. While the bundle shuts down, the Bundle Activator can release resourcesthat are obtained since the start method was called and revoke any services it has published. What follows are some relevant pieces from the MyappPlugin bundle activator class:
public class MyappPlugin extends Plugin { // ServiceRegistration private ServiceRegistration mServRegistration; /** * This method is called upon plug-in activation */ public void start(BundleContext context) throws Exception { super.start(context); // Register the service mServRegistration= context.registerService(IMyappService.class.getName(), new MyappServiceImpl(), null); } /** * This method is called when the plug-in is stopped */ public void stop(BundleContext context) throws Exception { super.stop(context); // Unregister the service mServRegistration.unregister(); } }
The full capability of a service does not need to be delivered as a plug-in. Additional functionality can be delivered as a plug-in fragment. A plug-in fragment is used to provide additional plug-in functionality to an existing plug-in after it has been installed.
Fragments are ideal for shipping features like language or maintenance packs that typically trail the initial products for a few months. Another frequent use of fragments is to deliver OS or windowing system-specific features.
The relationship between the fragment and the Fragment-Host plug-in is defined in the fragment MANIFEST.MF file:
Manifest-Version: 1.0 Bundle-Name: Fragment_A Fragment Bundle-SymbolicName: fragment_A Bundle-Version: 1.0.0 Bundle-ClassPath: fragment_A.jar Fragment-host: pluginHost;bundle-version=[1.0.0,2.0.0) Bundle-Localization: plugin
When a fragment is detected by the platform and its target plug-in is found, the function in the fragment is "merged" with the original function in the target plug-in. If you query the plug-in registry, you will see the features defined in a fragment as if they were contributed by the original plug-in. Fragments do not contain BundleActivator classes. Fragments are only extensions to a plug-in or bundle, therefore fragments cannot be required or imported by another plug-in or bundle.
Features are groups of plug-ins that define a logical product feature. Lifecycle management in the form of patches and fixes are made at the feature level. In other words, features provide a logical entity for remote deployment and updates of plug-ins.
Extension Points
The process of adding some processing element or elements to a plug-in is known as an extension. An extension is defined by an extender plug-in and causes a host plug-in to modify its behavior. Typically, this modification of behavior includes the addition of processing elements to the host plug-in (e.g., the addition of new menu items to the Eclipse workbench), and the customization of the behavior of these additional elements by services provided by the extender plug-in (e.g., the customization of new menu items by specific menu event handlers).
In the context of a particular extension, a plug-in that stands in the host role provides the extension-point and is extended. In addition to providing services in its own right, such a plug-in also acts as the coordinator and controller of a number of extensions.
As an example, the following plugin.xml declares an extension-point element:
<?xml version=1.0 encoding=UTF-8?> <?eclipse version=3.0?> <plugin> <extension-point id=org.aperi.sample.myapp name=MyApp schema=schema/org.aperi.sample.myapp.exsd/> <!Other specifications omitted. -- > </plugin>
In the context of a particular extension, a plug-in that stands in the extender role defines the extension, typically making certain aspects of itself available to a host plug-in through the extension. It also causes the host plug-in to add certain processing elements to its environment. As an example, the following plugin.xml corresponds to a plug-in that consumes the org.aperi.myapp extension.
<?xml version=1.0 encoding=UTF-8?> <?eclipse version=3.0?> <plugin> <extension point=org.aperi.myapp > </extension> </plugin>
In a similar fashion as a plug-in, a fragment can consume or provide extensions from/to other plug-ins. These capabilities are defined in the fragment.xml file, which is similar to the plugin.xml for a plug-in, and is part of every fragment. An example of a fragment.xml that corresponds to a fragment that consumes the org.aperi.myapp extension follows:
<?xml version=1.0 encoding=UTF-8?> <?eclipse version=3.0?> <fragment> <extension point=org.aperi.myapp > </extension> </fragment>
The act of extension is quite a general concept in Eclipse, and to understand its full generality, it is useful to summarize the types of relationships that may exist between plug-in objects, extension-points, and callback objects.
- Multiple extension-points may exist in a host plug-in.
- A plug-in may act both as a host plug-in, exposing some extension-points, and as an extender plug-in, extending some plug-ins.
- Multiple plug-ins may extend a given extension-point.
- A given plug-in may extend a given extension-point multiple times.
- An extender plug-in may include different extensions of different host plug-ins.
- A single act of extension of an extension-point by a particular extension of a particular plug-in may create multiple callback objects.
- A plug-in can define extensions of its own extension-points.
For more information on the Eclipse plug-in architecture, see Notes on the Eclipse Plug-in Architecture (http://www.eclipse.org/articles/Article-Plug-in-architecture/plugin_architecture.html).
High Level Architecture
Conceptual View
The conceptual view of the Aperi architecture consists of two layers:
- The Platform layer provides basic storage management functions such as discovery, monitoring, and control of storage assets. It also includes the basic server infrastructure needed to support an enterprise application (logging, threading, transport, container, etc).
- The Application layer provides high-level functions, such as filesystem capacity reporting, fabric zone control, and so forth.
Process View
At a high level the Aperi Storage Manager consists of the following processes:
- Server
- Host agent
- Database
In addition to the host agent the architecture depends upon SMI-S CIMOMs and SNMP agents to be deployed in the environment. Furthermore, while Aperi includes a rich-client GUI, this is not meant to preclude the development of alternative user interfaces. The components are shown in the image below:
GUI | Renders GUI panels for the user and receives user input |
CLI | Provides scriptable command-line interface for Aperi functions |
Server | Contains core infrastructure, including discovery, control, and monitoring services;
responds to GUI requests; carries out scheduled actions and receives notifications from agents |
Database | Repository of all information collected by Aperi |
Host agent | Provides detailed information about host filesystems and SAN visibility from the host
perspective. May be replaced over time by SMI-S host agents. Responds to requests from the server and generates asynchronous notifications to the server |
SMI-S CIMOM | Provides low-level management and monitoring capability for storage
devices. Responds to requests from server and generates asynchronous notifications to the server |
SNMP Agent | Provides low-level monitoring capability for (some) storage devices and generates
asynchronous notifications to the server |
The following sequence diagrams illustrate various typical flows of communication among the various components.
The first diagram illustrates the flow during a scheduled discovery:
- The server's scheduler kicks off the discovery process
- The server queries the agents (Aperi host agents, SMI-S CIMOMs, or SNMP agents) required as part of the discovery
- The agents query the devices they represent
- The devices return data to the agent
- The agents return data to the server
- The server stores the data in the database
The next sequence diagram illustrates the flow when an agent sends an event that triggers a re-discovery (for example, a switch may broadcast a "configuration changed" event, and Aperi needs to rediscover the configuration):
- The agent sends an event to the server (either because the agent noticed a change or because it received a notification from the device, which is not shown here)
- The server stores a record of the event in the database
- The server queries the agents (Aperi host agents, SMI-S CIMOMs, or SNMP agents) required as part of the re-discovery
- The agents query the devices they represent
- The devices return data to the agents
- The agents return data to the server
- The server stores the data in the database
The next sequence diagram illustrates the flow when a GUI user invokes a configuration operation, such as creating a volume:
- The GUI invokes API on the server (in response to user action not shown here)
- The server invokes API on the appropriate agent, such as an SMI-S CIMOM
- The agent invokes API on the device to execute the change
- The device returns data to the agent
- The agent returns data to the server
- The server stores the data in the database
- The server returns data to the GUI
Mapping Aperi Function to the OSGi/Eclipse Component Model
Each major component of the Aperi platform is represented as an OSGi bundle and/or Eclipse plug-in. The components are organized into logical groupings called features (collections of plug-ins). Many of the plug-ins expose packages or services so that other plug-ins may leverage them. Several plug-ins also define extension points to allow exploiting applications (also plug-ins) to extend the underlying function. Notice that these features correspond to the architectural layers identified above.
Server Plug-ins and Features
Feature | Included Plug-ins | Comments |
org.eclipse.aperi.runtime | javax.help
javax.jms org.apache.derby org.apache.soap org.apache.xerces org.eclipse.aperi.log org.eclipse.equinox.common org.eclipse.equinox.jakarta.common.logging org.eclipes.equinox.jetty org.eclipse.equinox.jetty.http org.eclipse.equinox.registry org.eclipse.equinox.servlet.api org.eclipse.equinox.servlet.bridge.http org.eclipse.osgi org.sblim.cim.client org.sblim.slp org.eclipse.osgi.services org.eclipse.update.scheduler org.eclipse.update.core org.eclipse.update.configurator org.eclipse.aperi.common org.eclipse.aperi.connector |
This feature contains the core Eclipse runtime. That includes the base OSGi container, OSGi service definitions, the plug-in framework, and support for plug-in deployment and updates (lifecycle mgmt). This feature also contains the implementation of the OSGi HTTP Service. This service contains the servlet container and the soap implementation needed to support web services. |
org.eclipse.aperi.server | org.eclipse.aperi.cbe org.eclipse.aperi.database |
This feature provides the platform layer of the Aperi server. Storage applications are built on top of this feature. |
org.eclipse.aperi.app.disk | Contains disk application (server side) | |
org.eclipse.aperi.app.fabric | Contains fabric application (server side) | |
org.eclipse.aperi.app.filesystem | Contains filesystem application (server side) | |
org.eclipse.aperi.app.tape | Contains tape application (server side) |
Agent Plug-ins and Features
Feature | Included Plug-ins | Comments |
org.eclipse.aperi.runtime | see above | see above |
org.eclipse.aperi.agent.fabric | This feature includes the fabric subagent. | |
org.eclipse.aperi.agent.filesystem | This feature includes the filesystem subagent. |
GUI Plug-ins and Features
Feature | Included Plug-ins | Comments |
org.eclipse.aperi.runtime | see above | see above |
org.eclipse.aperi.gui | This feature contains the gui framework | |
org.eclipse.aperi.gui.disk | This feature contains the Disk application GUI | |
org.eclipse.aperi.gui.fabric | This feature contains the Fabric application GUI | |
org.eclipse.aperi.gui.filesystem | This feature contains the Filesystem application GUI | |
org.eclipse.aperi.gui.tape | This feature contains the Tape application GUI |
Standards, particularly storage management standards, are critical to Aperi. The Aperi Storage Manager is intended to be an exemplary consumer of the SNIA SMI-S standard for storage device management. Aperi should use SMI-S to the fullest extent possible and should serve as a model to others on how to use SMI-S successfully. SMI-S should be the first and foremost mechanism used by Aperi, but Aperi can also use other standard mechanisms such as SNMP and GS3. Finally, it is also important that Aperi be a competitive storage management application, and it is possible that there is some important management function that cannot be achieved via SMI-S or other standard; in other words, a proprietary mechanism would have to be used. In these circumstances Aperi should strive to get the needed function implemented in a standard, but can consider using the proprietary mechanism as a stopgap.
Finally, Aperi will provide a set of interfaces between its framework and application levels. The Aperi community will work within SNIA to standardize these interfaces as appropriate.
Platform Layer
The base layer includes the underlying OSGi runtime container and a few generic services for managing components (bundles). The base layer does not include any storage-specific function.
OSGi and Eclipse Container
The current base runtime container is based on the Eclipse Equinox 3.2 release. This release implements the OSGi R4 Specification.
Lifecycle Management (Eclipse Updater)
The Eclipse update functions are leveraged to provide the capability to remotely deploy new or update existing features, plug-ins, or fragments. With this capability, the Aperi server, agent, or console can occasionally download updates from an 'update site' (a well known url). This simplifies deployment and patch management.
Servlet Container
The servlet container is the Jetty implementation of the OSGi HTTP Service. This service provides 2.4 Servlet support.
SSL Support
The HTTP Service support http and https protocols. An X509 certificate may be used to provide SSL communication over https.
SOAP & WSDL Support
Apache Axis 2.0 is a candidate for use to provide SOAP and WSDL Support. In the meanwhile, Apache Soap RPC will be used.
The Axis bundle is an OSGi bundlification of a standard Axis server. The standard Axis server is designed to be running in a servlet version 2.4 environment. In addition to the bundlification of the Axis server the axis-osgi bundle offers the ability to export services, registered on the OSGi framework service registry, as SOAP services. The exported services must not expose any data types not supported by SOAP. In order to export a service object as a SOAP service, the only thing needed is to set a property named "SOAP.service.name" on the registered service. The property value should be of type java.lang.String and its value will be used as the name of the exposed SOAP service.
Out of the box, axis supports the serialization and deserialization of a set number of object types. As far as objects are concerned, objects that conform to the java bean paradigm can easily be serialized using Axis. Since some of the objects sent via Aperi are not Java beans, custom serializers will be needed. Axis gives you the ability to write custom serializers/deserializers, and some tools to help make your life easier when you do so. For more on serialization see, http://ws.apache.org/axis/java/user-guide.html#XMLJavaDataMappingInAxis.
Common (org.eclipse.aperi.common plug-in)
This plug-in contains common code that is shared across implementation plug-ins. Three categories of code are included in this plug-in: service interfaces, data objects, utility classes.
Utility Classes
Utility classes represent helper logic to be exploited by the rest of the platform.
Dynamic Plug-in Support
Given the nature of an extensible architectural, plug-ins and dynamic loading/unloading, it is very important to support dynamic plug-ins. Basically, this refers to the fact that plug-ins must be aware of the fact that different portions of the code (other plug-ins) have different life cycles. As a result, when plug-ins are uninstalled, stale references to its classes must be released throughout the entire application. Aperi will take special care to support dynamic plug-ins by encouraging the following design paradigms:
- Use stateless objects whenever possible (minimize use of instance variables)
- Enforce lifecycle management whenever object caches are used (especially when caching extensions)
Object caches should implement the IDisposable interface.
/** * Provides interface to support cleanup of objects when the defining * plug-in is removed from the container */ public interface IDisposable { /** * Method called to allow the implementing object * to cleanup its instance variables */ void dispose(); }
Bundle activators (which implement plug-in lifecycle calls) should contain the following logic:
import java.util.Vector; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; public class Activator implements BundleActivator { private static Vector disposables = null; public Activator(){ if(disposables == null){ disposables = new Vector(); } } public void start(BundleContext context) throws Exception { //... } public void stop(BundleContext context) throws Exception { //... if(disposables != null){ for(int i = 0; i < disposables.size(); i++){ IDisposable trash = (IDisposable)disposables.get(i); trash.dispose(); } disposables = null; } } public static boolean addDisposable(IDisposable disposable){ boolean willManage = false; if(disposables != null){ disposables.add(disposable); willManage = true; } return willManage; } }
import org.eclipse.core.runtime.IRegistryChangeEvent; import org.eclipse.core.runtime.IRegistryChangeListener; /** * This class should be used to manage extensions. For * every custom extension point, a subclass of this abstract * class should be used to manage a cache of implementing * extensions. The extension point MUST conform to a particular * extension point schema: * <element name="[ELEMENT_NAME]"> <complexType> <attribute name="impl" type="string"> <annotation> <appInfo> <meta.attribute kind="java" basedOn="[CLASS OR INTERFACE NAME]"/> </appInfo> </annotation> </attribute> </complexType> </element> The "impl" attribute must contains the java implementation of a particular interface or parent. An instance of this impl is returned to the client of this subclass. */ public abstract class AbstractExtensionMgr implements IRegistryChangeListener, IDisposable{ /** * @return The extension point id as found in the extension * registry. This represents the extension point to be * managed by this instance. */ public abstract String getExtensionPointId(); /** * This method should be called when attempting obtain a reference * to an extension implementation. Extensions will not be loaded until * this method is called. This method will first check the cache; if * the extension is not found in the cache, the Extension Registry * will be searched. Once found, a reference will be placed in the cache. * * If the extension is removed from the runtime environment (extending * plug-in is removed), the cache will be updated to reflect the * removal. * @param extensionId * @return */ public Object getExtensionImpl(String extensionId){ ... } /** * Called by the container when an extension is changed in the * registry. This object is interested only in extensions * that implement the extension point id found in * getExtensionPointId(). It is also only interested in * removal events. * @param event - the change to the registry. */ public void registryChanged(IRegistryChangeEvent event) { } public dispose(){ //... cleanup cache of extensions } }
Below is an example of an extension point manager that makes use of the abstract helper above:
public class ExampleExtensionMgr extends AbstractExtensionMgr { private static final String EXTENSION_POINT_ID = "aperi.example"; private static ExampleExtensionMgr mgr = null; private ExampleExtensionMgr(){ super(); Activator.addDisposable(this); } public ExampleExtensionMgr getInstance(){ if(mgr == null){ mgr = new ExampleExtensionMgr(); } return mgr; } public String getExtensionPointId() { return EXTENSION_POINT_ID; } public ExampleExtension getExampleExtension(String extensionId){ ExampleExtension ext = null; Object obj = super.getExtensionImpl(extensionId); if(obj != null){ ext = (ExamplExtension)obj; } return ext; } }
Database (org.eclipse.aperi.database plug-in)
The database is an essential component of the overall architecture. In addition to being a respository of information, it is also an essential data transfer mechanism between components. For example, a component can make an entry for a task that needs to be scheduled in the appropriate table; the Scheduler service will then execute the task.
Aperi is designed to support multiple Relational Database Management Systems (RDBMS). The 'vanilla' Aperi offering works with the Derby open source RDBMS. Other RDBMS may work but have not been tested. Although by design Aperi does not include RDBMS vendor-specific code, it is likely that adding new RDBMS will require some modifications to SQL queries. We expect that commercial adopters of Aperi would likely bundle commercial RDBMS with their products.
The schema can be understood conceptually has having three parts:
- Tables that model the entites available on the storage network. As examples, key tables used by the Filesystem component are T_RES_COMPUTER and T_RES_FILESYSTEM, which contain records for each discovered computer (host) and filesystem; the Disk component relies on T_RES_STORAGE_SUBSYSTEM and T_RES_STORAGE_VOLUME; the Fabric component makes heavy use of T_RES_FABRIC, T_RES_PORT, T_RES_SWITCH, and T_RES_ZONE.
- Tables that contain information internal to Aperi. Examples include T_SCHEDULE and T_RUNS, which track schedule entries for jobs and the results of scheduled runs, respectively.
- Indexes and views over the tables
It should be noted that there is not necessarily a strict containment relationship between a given architectural component and a given set of tables. Both the Fabric and Disk components, for example, can update the T_RES_STORAGE_SUBSYSTEM table, since both components can discover storage subsystems (using different means). In most cases, however, it is appropriate to think of a given table as "belonging" to a given functional component.
The schema uses vendor-neutral data definition language (DDL). Specific RDBMS vendor extensions are not used in the DDL.
In many cases, an entity on the storage network has a 'natural' key that would be modeled in SQL as a variable length string (that is, something that might be derived from some combinations of names and serial numbers). For efficiency of database access, the schema provides an autogenerated integer key for such entities, where the necessary information required to generate a user-visible string name of the entity is also available in the database. For example, the user interface may refer to a given subsystem as "IBM-ESS-2105-123456", while the primary key in T_RES_STORAGE_SUBSYSTEM corresponding to that subsystem is an arbitrary integer.
In addition, certain other frequently used string enumeration values (such as 'Vendor' fields) are represented in database keys as numeric values, with translation to strings available as needed.
Database Interface
The Data and Device Servers contain a Database Interface component, which itself consists of three parts.
First, the Database Interface maintains a pool of database connections that are leased by other components as needed.
Second, the 'Helpers' are automatically generated Java code that provide generic access to tables via an object-oriented interface. In other words there is conceptually one Helper per table, with methods corresponding to the fundamental SQL operations of insert, update, delete, and retrieve.
Finally, the 'Mappers' provide a fundamental insulation layer between discovery code and the schema itself. There is, generally speaking, one Mapper for each kind of discoverable entity; the mapper takes as input the data returned by the discovery layer for that kind of component, and efficiently converts that data to the form required by the schema.
The intent of the Helpers and Mappers is minimize the coupling between the details of the schema and the rest of the system. Helpers provide a generic mechanism for general database access; Mappers provide special access for the performance-critical discovery code while still insulating the discovery code itself from the details of the schema. As a general rule, code is expected to use a Helper or Mapper for database access; however, when appropriate, a direct JDBC query can be developed and used for a particular purpose. This would normally be done, say, for a report or some other part of the user interface that has specific characteristics that make it unsuitable for generalization, and for which the generic access provide by the appropriate Helpers does not meet performance requirements. In general it is preferable to create a view for these cases, but some use of 'direct JDBC' does occur.
Jobs & Scheduler (org.eclipse.aperi.jobs plug-in)
The Aperi Job scheduler provides the ability run 'jobs' on a schedule; these jobs are primarily data collection jobs, but can also be long-running control operations. The Scheduler can distribute work among many agents when appropriate. The primary interaction mechanism with the job scheduler is the database itself: clients insert rows describing work to be done, and retrieve status of those jobs from the database as well.
Discovery (org.eclipse.aperi.discovery plug-in)
The Discovery service provides a framework for discovery of entities on a storage network. The Discovery service does not itself prescribe the mechanisms by which discovery is performed: instead, it provides extension points for 'scanners' (that initiate discovery requests) and 'parsers' (that handle the returned data). Applications are expected to extend the Discovery service in appropriate ways. For example, the Disk application adds discovery of storage subsystems using SMI-S; the Fabric application adds discovery of SAN topology information and zone configuration via SNMP and GS3.
Monitoring (org.eclipse.aperi.monitor plug-in)
The Monitoring service receives external notifications such as SNMP traps, GS3 events, and CIM indications. It includes a damping mechanism to resolve an 'event storm', as when many notifications are received that pertain to the same underlying condition. The Monitoring service translates from received notifications (after any damping) to the Aperi Event service: that is, received notifications are posted as events.
Control (org.eclipse.aperi.control plug-in)
The Control service provides a framework for invoking control (change) operations either synchronously or asynchronously. Applications are expected to extend this service: for example, the Disk application adds a "create volume" control operation.
Events (org.eclipse.aperi.events plug-in)
The Event service implements a pub/sub JMS bus that is used for loosely-coupled communication among components. Events can be subscribed to by supplying the name of an Event class and an id for a class that implements MessageListener. Events can be received via onMessage() and sent via createMessage(), as specified by JMS.
Authorization (org.eclipse.aperi.authorization plug-in)
The Authorization service provides a role-based gatekeeper service. All external Aperi APIs are associated with a required role. Users must possess this role in order to invoke the API. The Authorization service determines whether a given user has the authority to invoke a given operation.
Configuration (org.eclipse.aperi.config plug-in)
The Configuration service implements a simple set and get interface for storing and retrieving configuration values, such as log or trace levels, port numbers, and so forth. The Configuration service has no special knowledge of what these parameters are, with one exception: JDBC connectivity information is treated specially, in that it is stored in a .properties file. Other parameters are stored in the database itself. In addition the Configuration service has the ability to encrypt passwords before storing them, and decrypt them on retrieval. This prevents Aperi from storing plain-text passwords in repositories.
Alerts (org.eclipse.aperi.alerts plug-in)
The Alert service is general-purpose mechanism for generating user-visible alerts and delivering them via a variety of mechanisms. A number of mechanisms (e.g., email and SNMP) are included in the Aperi base, and in addition the Alert service provides an extension point so that new event destinations can be added by plug-ins.
Application Layer
Disk Application
The Disk application provides functions that enable discovery, monitoring, and control of storage subsystems (such as disk arrays and block virtualization engines), and asset reporting, through SMI-S. The Disk application extends the Discovery engine to provide SMI-S based discovery of these devices, and extends the Monitoring engine to receive SMI-S indications from the discovered CIMOMs. It also extends the Control service with a limited number of control operations, specifically:
- Create volume
- Assign volume to host
- Unassign volume from host
- Delete volume
The Disk application does not involve the host agent as it relies completely on SMI-S CIMOMs as agents. It does have a server-side component for extending the Discovery, Control, and Monitoring services as described above, and provides a Web Services-based API for those functions as well. In addition, a set of GUI panels that correspond to these functions are also provided.
The Disk application introduces a set of tables that are concerned with maintaining information about the discovered storage subsystems, volumes, and other objects. Some of these tables are shared with Fabric (see below) as, for example, storage subsystems can be discovered by both applications.
Fabric Application
The Fabric application provides functions that enable discovery, monitoring, and control of storage area networks, and asset reporting, through a variety of mechanisms. The Fabric application extends the Discovery engine to provide discovery of SANs, their topology, and zone configurations through SNMP and inband GS3 mechanisms; in the future SAN discovery through SMI-S will be added. In addition extends the Monitoring engine to receive SNMP traps (and in the future SMI-S indications) from the discovered objects. In addition it extends the Control service with a number of control operations relating to creating and updating the zone configuration.
The Fabric application provides a host-based subagent to perform the inband GS3 discovery and control operations; in addition it provides a server-based component to perform equivalent discovery via SNMP. The host agent is not required for fabric function except for zone control operations; zone control is not possible via SNMP. Complete fabric SMI-S support will allow full discovery and zone control without relying on the host-based agent. Note that the current implementation of SNMP support is primarily aimed at the standard fabric MIB, but does include some vendor-specific (but published) calls to handle Cisco Virtual SAN support. Again, full fabric SMI-S support will allow us to sunset this vendor-specific SNMP code. Note also that the Brocade API is not included in Aperi, so zone control of Brocade switches is not possible until fabric SMI-S support is available.
In addition the Fabric application provides a server-side component for extending the Discovery, Control, and Monitoring services as described above, and provides a Web Services-based API for those functions as well. In addition, a set of GUI panels that correspond to these functions are also provided.
The Fabric application introduces a set of tables that are concerned with maintaining information about the discovered storage subsystems, volumes, and other objects. Some of these tables are shared with Disk (see below) as, for example, storage subsystems can be discovered by both applications.
Filesystem Application
The primary functions provided by the Filesystem application are the discovery and collection of capacity information regarding host filesystems.
The Filesystem application completely depends on the host-based Filesystem subagent to perform discovery and data collection. In the future it might be possible to migrate away from this host agent and toward SMI-S based host agents, although the current level of function provided by the Filesystem application is probably beyond what SMI-S based agents provide today.
In addition to the host subagent, the Filesystem application provides a server component for implementing its data collection and GUI panels that provide its functions and reports as well. For legacy reasons, the Filesystem application does not use the Discovery, Control, and Monitoring engine described above. No control operations are performed.
Finally, the Filesystem application manages a significant portion of schema that is unique to it.
Tape Application
The Tape application is very similar to the Disk application, except that its functionality is specifically tied to tape libraries. It introduces new components analogous to the Disk components, but targeted for tape; also, it does not (yet) provide control functions.
User Interface Layer
Graphical Console
The initial contribution includes a GUI that is a rich client, Java Swing-based user interface. We are beginning development of an Eclipse-based GUI alternative; and certainly other, perhaps web-based, alternatives could be developed by the community.
Initial Contribution GUI – External Design
The TPC console framework presents a modified Explorer view, in which most navigation activity is performed through the tree control, and most other interaction is perfomed on the right-hand side "work area."
Items in the tree control are grouped under several top-level navigation nodes. The first node, 'Administrative Services', governs items related to the configuration of TPC itself. The second node is currently labeled TotalStorage Productivity Center, and governs functions that span the functional divisions of the product, such as the topology viewer. This node will need to be relabeled as part of the contribution to Aperi, perhaps to a name like "General" or "Core", or even to "Aperi".
The remaining top-level items correspond to the major functional divisions outlined above, such as Disk, Tape, and Fabric (referred to as the 'Disk Manager', etc.). Note that the commercial TPC product contains a node labeled 'Data Manager' that contains, among other things, the functions referred to as 'Filesystem' here.
Initial Contribution GUI – Internal Design
The GUI is architected to be relatively lightweight. The only process it connects to is the Data Server (see below); it does not connect directly to the RDBMS or to agents. This is to enforce the responsibility of the Data Server to perform the more complex aggregation and analysis that is implied by agent or RDBMS access, and prevent this load from be shifted onto end-user workstations. In addition, allowing the GUI to connect only to a single server process minimizes the potential impact to firewall configuration at customer sites. It uses a private protocol to communicate with the Data Server; a future work item could include redesigning this protocol, although it is possible to host alternative GUIs (such as web-based GUIs) using the protocol as it is.
The GUI uses JavaHelp for its online help framework. The TPC GUI also uses a licensed third-party component for charting; this component will be replaced in the contribution to Aperi with the Eclipse Chart Engine (from BIRT).
The TPC 3.1 GUI offers an extensibility mechanism that interacts closely with its licensing enforcement scheme. Since licensing is not appropriate for open source products, the TPC licensing scheme will be removed prior to contribution.
Eclipse GUI
We are beginning development of alternative GUI for Aperi that uses the Eclipse framework. The initial effort in this area is focused on 'porting' the existing topology viewer to Eclipse, and using Eclipse BIRT as a report designer and viewer. Thus, many existing Aperi reports will be refactored to use BIRT.
Followon work will address the proper Eclipse representation of other functions of Aperi. Our initial thinking is that major functional areas should be organized as distinct Eclipse perspectives, perhaps:
- Topology
- Reporting
- Data Collection
- Server Administration
- Alerting
Much work remains to be done to flesh this out. Naturally, the resulting GUI will be extensible in the normal Eclipse manner.
Aperi includes a graphical topology viewer, written using Swing components, that is specifically designed to redner large storage area networks efficiently. This component has extensive 'special knowledge' of how to render SANs and also makes use of specially-written database queries for efficiency (in other words, it does not go through database 'helpers'). Because of this special knowledge, the topology viewer is not a general-purpose topology viewing component that could be easily included in other applications, although it may well have portions that could be adapted to such purposes.
Command Line Interface
The Aperi Storage Manager should have a command line interface (CLI) program that provides scriptable access to the full functionality of the platform as exposed in the GUI. This CLI is not included in the initial contribution. It can be expected to be a simple Web Services client that invokes Aperi APIs, possibly remotely (it should not be required to run on the server host).
Web-based Console
The presence of the GUI layer in the Aperi platform should not be understood as precluding development of alternative user interfaces, such as a web-based console for Aperi functions. All the functions available in the "fat" Aperi GUI are conceivably able to be implemented in a web-based form, although the GUI layer itself is unlikely to provide much leverage in developing alternative forms. However, the remaining layers of the architecture should be usable by any user interface, and in fact IBM has prototyped web-based access to the TPC 3.1 application, which is the foundation of the Aperi platform.
Other Areas
A general description of security within Aperi is forthcoming.
Installation & Patch Management
Aperi does not include an installer in the traditional sense. At the time of initial contribution, Aperi is distributed as a zip file. After unzipping, the 'cfgaperi' script is run, which configures the system to run properly.
Commercial distributors are expected to develop their own installers, probably using tools like InstallShield.
It is an open question whether Aperi, as an open source project, needs a full-featured graphical installer or if the cfgaperi script is sufficient.
The primary initial development platforms for the Aperi Storage Manager are Windows and Linux. IBM's TPC provides support for these two platforms as well as AIX (for the server) and many others (for the GUI and host agent). It is not anticipated that any Aperi development work would create a technical limitation to supporting the full set of TPC platforms, or to adding additional platforms. However, at the time of initial contribution, build and test are performed only on those two platforms.
Certainly, the Java code that comprises the majority of Aperi is expected to be easily portable to other platforms. There is a fair amount of C code as well that presents a porting challenge, although in all cases the code has already been ported to at least Windows, Linux, and AIX. This should ease the potential burden of porting to new platforms.


text:
Module Summary
The module snmpa_error_logger implements the snmpa_error_report behaviour (see snmpa_error_report) containing two callback functions which are called in order to report SNMP errors.
This module provides a simple mechanism for reporting SNMP errors. Errors are sent to the error_logger after a size check. Messages are truncated after 1024 chars. It is provided as an example.
This module is the default error report module, but can be explicitly configured, see snmpa_error and configuration parameters.
The function is called if an error occurs during the configuration phase, for example if a syntax error is found in a configuration file.
Format and Args are as in io:format(Format, Args).
The function is called if a user related error occurs at run-time, for example if a user defined instrumentation function returns erroneous.
Format and Args are as in io:format(Format, Args).
See Also

subset: commoncrawl


text:
Your Ashland Criminal Lawyer
Your Ashland Criminal Lawyer is Here to Help
We know that it can be scary to face criminal charges. If you or your family member is facing a charge, it is time for you to meet with a local lawyer to talk about your options and to get protection when it comes to your case.
When you hire an attorney with extensive local experience, you will get help that is trustworthy. Criminal charges can be overwhelming, but it will get worse if you wait. Contact an experienced Ashland criminal attorney today.
Our Lawyers in Ashland, Oregon Know the Law
The law is not the same in every city, county or state. Local charges can have very serious consequences and can result in negative information on your criminal record even if jail time is not given. Our Ashland criminal attorneys understand the particular laws in your area and will fight in order to protect your rights in these cases. These attorneys have a great deal of experience with cases just like yours and they are prepared to handle everything from domestic violence and bail hearings to theft and fraud.
Get a Strong Defense for State and Local Criminal Charges
It is important that you act right now. You may already be facing charges or you may expect charges to come down to you. Our Ashland criminal attorneys are waiting for your call and ready to give you the advice you need during a free consultation where you will discuss your charges and be presented with options to fight them.
Each of our local defense attorneys has experience in a wide variety of criminal offenses. A simple traffic violation, for instance, can have a very serious effect on your record if you have had prior convictions. Our attorneys have worked in areas like juvenile crime, theft, assault, manslaughter, sexual offenses and much more.
Your Initial Consultation with Your Lawyer
You should take comfort in the fact that your local criminal attorney is a resident of the same town as you are. They are ready to help. During your first meeting, our attorneys will talk to you about the specific details of your charges and give you advice about your course of action. They will be able to discuss the possibilities of different court appearances and plea bargains. You should make sure that you are being truthful about your side of the story because this is the most effective way your lawyer can build your defense. Once you have had this initial discussion, you will be able to make a decision on how to move forward. You can trust our lawyers for sound advice.
What Your Ashland Lawyer will Expect from You
Working with a trusted and experienced criminal attorney will give you a good defense, but they will need your help at times. Being honest and open with them is a great way to ensure you are getting the defense and protection you need. They will be able to make a difference by using that information. On top of that, it is also recommended that you help your lawyer by keeping your appointments and arriving on time, be able to quickly provide paperwork that is needed, continue to remain patient throughout your case and follow the advice that your lawyer gives you.
When you offer these courtesies to your attorney, it will benefit everyone involved in the case and can help eliminate stress during this process.
Do You Need a Good Defense for a DUI Charge?
One of the most common charges that people get at the city level is a DUI. Some communities will require a night in jail, alcohol awareness classes, large fines and a suspension of your driver's license.
On top of that, a DUI charge can also have some serious consequences outside the courtroom. A DUI can affect your reputation on the job, can bar you from volunteering in your community and can even have an impact on college acceptance. Don't just shrug off a DUI charge! You need an experienced attorney who understands the law and who will provide you with quality representation for your case.
The quicker you get this assistance, the better off you will be. Waiting too long can lead to more fines and will also likely lead to other legal issues down the road. When you meet with one of our experienced Ashland attorneys you will be able to determine if you qualify as a first time offender, you will be able to discuss what penalties you may face, you will learn how a DUI charge may affect your personal life, and you will also begin to plan your defense strategy.
Take the First Step Today
By taking initiative and contacting our lawyers today, you will be able to get started on the process that will give you the options to achieve the most positive result. Local law is complicated and thus only a locally-experienced lawyer can really navigate a case through the system effectively. Our Ashland lawyers have the confidence and expertise to help. Call today for your free consultation.


text:
The weather was sooo nice and springy today (liked this wall for pictures though) and I actually walked somewhere other than school. Yes, that's right. Going through Nesquik withdrawal is difficult so I took it upon myself to walk the full block to the store and buy some.
Growing up every day, I tell ya.When looking at FW runway pictures, I've always paid more attention to the heads of the critics "itching" their noses or looking rather moose-like for a split second while the camera goes off rather than the heads of the models. I don't know why? This editorial makes me think more about hats though..maybe something to try with NINJA STAAA.
(See more here)


text:
We offer a Free quote and UK design service, get in touch today.
So you are wanting the artificial grass prices for nursery play area in Douglas and Angus DD4 8 and if I quickly give you a rate of £85 per m² then you have your answer. However although this is the UK average I am sure you are wanting to know a little more on how contractors get to this price.
get in touch today
SPEAK TO OUR TEAMWell along with the synthetic turf prices to nursery playground projects comes over elements of works which is needed like the groundworks for the synthetic carpet to be fitted onto and then also the installation http://www.artificialgrasscost.co.uk/installation/dundee-city/douglas-and-angus/ of the specialist surfacing. Below I will break down some rates and these can vary from job to job because some projects need a lot less preparation than others, but I need to give you a UK average across the board:
Preparation Works generally cost out at around £35 per m² because majority of the time the existing surface needs to be dug out, infilled with porous stone, edge restraints installed and levelled ready for the synthetic turf.
As you can see when you tally these rates up above then this is where you get to the figure of £85 per m² but please fill in the contact form on this page to discuss further as there really is a whole load of questions and details needed to give a firm written quote.
Artificial safety grass is often used for primary schools and nurseries in Douglas and Angus. For this surfacing type a shockpad is installed prior to laying the synthetic carpet. The shockpad acts as a shock absorbency system, which will make sure the surfacing is safe for low level play equipment. The shockpad can vary in depth in order to meet the required critical fall height that is needed for synthetic safety turf. It is recommended to have safety surfacing like artificial safety grass http://www.artificialgrasscost.co.uk/dundee-city/douglas-and-angus/ installed in nurseries in order to keep young children safe when playing in the playground.
When looking at safety surfaces for nurseries closest to you in Douglas and Angus DD4 8 we are able to provide you with all the information you need to ensure you get exactly what you want. As we have years of experience and extensive specialist knowledge, we are happy to give you a free quote as well as necessary details that can help ensure your nusersy is happy with the end result. Whether you are looking for artificial grass for a nursery or all weather court http://www.artificialgrasscost.co.uk/all-weather-pitch/dundee-city/douglas-and-angus/ we are able to help in any way possible. Simply fill out the enquiry form provided and we will get back to you as soon as we can with everything you need.
If you have read the above rates then I would strongly recommend taking a little more time to read several pages on this website because it shows many other costs of synthetic turf projects in Douglas and Angus DD4 8 like on sports pitches and gardens. This will help you understand the quotes and prices of works because although this is saying the average rate is £85 per m² there is a good chance this figure could be reduced if it falls above budget and other pages explains the various options of sub bases.
When you are filling in the contact form, please be reminded that the following information is extremely important for us to price your project perfectly:
As specialists in Douglas and Angus DD4 8 we are able to install safety grass in your surrounding areas to the highest standards. To do this, we follow these simple steps:
We can offer the best services when installing safety turf for nursery schools in Douglas and Angus. The costs to install safety grass can vary depending on numerous factors and it is important that you make sure that your nursery can afford the synthetic safety turf surfacing prior to the installation. We may alter our designs and specifications to meet your individual needs, so please do not hesitate to get in touch.
If you're interested in having synthetic turf installed in your nursery, please fill in our enquiry form and we will get back to you as soon as possible. We can provide you with more information on artificial grass prices for nursery play area in Douglas and Angus DD4 8 along with details on specifications, so please message our team today.


text:
When the head of the National Transportation Safety Board called for states to pass tough new laws banning drivers from using cellphones or hand-held devices, she said: "No call, no text, no update, is worth a human life."
While Tuesday's statement by NTSB Chairwoman Deborah Hersman is undeniable, there are those who question the advisability of such a ban. Some state lawmakers and transportation experts say it could be difficult to enforce and that there's no real evidence yet that existing laws on hand-held devices have significantly reduced accident rates.
The curious thing is that even as cellphone use has increased exponentially by drivers in vehicles, we see no surge in crashes.
"To date, no state has taken the steps that the NTSB is suggesting," says Jonathan Adkins, communications director for the Governors Highway Safety Association.
The NTSB's recommendation, which is not binding, called for a ban on all portable electronic devices, including hands-free devices, while driving except in emergencies. The sole exception would be devices "designed to support the driving task," such as GPS devices.
Current state laws on cellphone use are a patchwork. Connecticut, New Jersey and Delaware, for example, have some of the strictest laws, banning hand-held devices, cellphones and texting behind the wheel, while states like South Carolina, South Dakota and four others have no ban at all. Local governments may have their own laws.
South Carolina Rep. Bakari Sellers, who has tried unsuccessfully for about four years to ban drivers from using hand-held devices in his state, says the main argument against it revolves around individual freedoms.
"We are a very conservative state that borders on libertarianism," says Sellers, a Democrat. "Not a safety argument, but an argument that the government is trying to take away our rights."
While he applauds the NTSB's proposal for its substance, he thinks it will sink his efforts at home because it has the imprimatur of the federal government.
"It will seal any chance of passing this in South Carolina," he says, chuckling.
That sort of us-against-them attitude is shared by many people in South Dakota, says Republican state Rep. Betty Olson, who has opposed efforts to implement a ban in her state.
She doubts the NTSB's recommendations will cause any of her fellow lawmakers to seriously reconsider the issue. "Most of us don't pay much attention to what the feds are doing," she says. "We're kind of an independent bunch out here."
Olson, a former emergency medical technician, has seen plenty of automobile accidents, most of them attributable to "distracted driving" — of all kinds. That's already against the law in South Dakota, she says, so there's no need for a specific ban to target cellphones and hand-held devices.
"I think using a cellphone while driving is stupid," Olson says. "But the last thing the cops need is another law to try to enforce."
Since Delaware's ban went into effect in January, police officers have issued 9,000 citations for cellphone use while driving, says Sgt. Paul Shavack, a spokesman for the Delaware State Police. During the same period, there have been 139 accidents in which cellphones were cited as a distracting factor, one of which was fatal.
Shavack says the law can be tough for officers to enforce "because it's hard to tell if the driver was using a cellphone unless he or she admits it or a witness says it's happening."
He also notes that it's too soon to know whether the ban has had any effect on the number of accidents. "That might take three years of data," he says.
A National Highway Traffic Safety Administration pilot program in Hartford, Conn., and Syracuse, N.Y., suggested that a combination of aggressive public service advertising ("Phone in One Hand, Ticket in the Other") and stepped-up enforcement can reduce the numbers of distracted drivers, if not the number of accidents.
Each city received $200,000 in federal funds and $100,000 in state funds last year to test whether a crackdown would work. It did. Officials in Hartford say cellphone use and texting declined by a third during the enforcement period. In Syracuse, handheld use dropped by more than one-half and texting by nearly three-quarters, officials report.
"The success of these pilot programs clearly shows that combining strong laws with strong enforcement can bring about a sea change in public attitudes and behavior," says NHTSA Administrator David Strickland.
Russ Rader, a spokesman for the Insurance Institute for Highway Safety, agrees but says there's just one problem: "We don't know if [the demonstration project] had any effect on crashes — and that's a key measure."
The institute's own study shows that states with cellphone bans have seen no real decrease in accident rates.
"The curious thing is that even as cellphone use has increased exponentially by drivers in vehicles, we see no surge in crashes," Rader says. "So as this trend has accelerated, with more and more people having phones in their cars and using them, the number of overall crashes has been declining."
Cellphone use behind the wheel is no doubt a dangerous distraction, Rader says. But the overall problem of distracted driving is much bigger — it's about fiddling with the car radio or eating a sandwich as much as it is cellphones, he says.
Adkins of the Governors Highway Safety Association acknowledges that there is no evidence proving that state bans reduce crashes.
"People in the safety community have been able to show that enforcing the ban has reduced the number of people actually using the phone while they drive," he says. "But we haven't been able to show that that actually reduces accident or crash rates."
Adkins says even though his organization hasn't decided whether to support the NTSB's proposal, "we understand it and think it has a lot of credibility."
Copyright 2023 NPR. To see more, visit https://www.npr.org.


text:
2024 Greater Omaha Heart & Stroke Walk
Saturday, May 11
Team Coach:
Company Affiliation:
We Can Do Hard Things!1 Members
Fundraising Progress $407.55
Fundraising Goal $2,500
We Walk to Save Lives!
2024 Greater Omaha Heart & Stroke Walk
We Can Do Hard Things!
We're a relentless force! Now imagine how much stronger we'll be working as a team! Heart disease is still the no. 1 killer and stroke ranks no. 5 in our nation.
View More
We are walking together - not only for our own health, but also for yours. And for the health of our parents, our children, and our grandchildren.
The Heart Walk is a time of celebration, joy, and inspiration. It's also an event where people work together to support one single goal - to create a world free of heart disease and stroke.
This year, the American Heart Association's centennial is a celebration of the lifesaving achievements and shared vision for a bold second century that will exponentially advance heart and brain health.
Be a relentless force. Be a supporter of critical research. Be a lifesaver. Be a part of an unstoppable team. Join us now and walk to save lives.
Team Progress
of Goal
Team Honor Roll
Katie LeDoux
Andy Murphy
* Boeing (MG)
Justin Ogburn
Top Donors
Katie LeDoux
Andy Murphy
* Boeing (MG)
Justin Ogburn


text:
Saturday, March 3, 2012
Bratwurst with Beer and Cabbage
From the kitchen of One Perfect Bite...There was a period of years, actually decades, when I refused to let sausage of any type cross my lips. I blame that on that on my ill-spent childhood and a completely unplanned encounter with alcohol when I was all of 4 years old. The neighbors had all come together at our house to celebrate V-J Day and my parents were serving a sweet ceremonial-type wine that was commonly offered to guests back in the day. There was an accident in front of the house and they all trooped out to see what was going on. I had been eying their glasses all evening and convinced they were drinking grape juice, proceeded to down every glass in the room. Loved it! At least initially. Mom didn't, but there wasn't much she could do with the house full of guests. So, while glaring at me, she went about her business and readied a spread that included salads and an assortment of grilled sausage and hot dogs. Though I was by this time feeling decidedly unwell, I dared not refuse the hot dog I had been given. I managed to down two or three bites before Bacchus exacted his revenge. It would be another 40 years before I could swallow any type of bun-encased sausage and I still, to this day, haven't had another glass of sweet wine. Now, that bit of my history is what makes today's recipe so unusual. I actually made bratwurst this week and shared it with company, albeit on a beach. I used a recipe that was developed by Emeril LaGasse and I was really pleased with the result. Because we were also feeding children, I used a non-alcoholic beer to cook the sausage and make the cabbage topper. I used O'Doul's Amber, which I often use for cooking when I want the flavor of hops without the bitterness. It is hard to spoil really good bratwurst unless it is overcooked, but the toppings used to smother it can often be problematic. That is not the case here. This would be a wonderful dish for game day or any male gathering, so I'm passing the recipe on to you. Here's how this version of bratwurst with beer and cabbage is made. I really think you'll be pleased.
Bratwurst with Beer and Cabbage...from the kitchen of One Perfect Bite courtesy of Emeril LaGasse
8 links of fresh bratwurst
3 (12-ounce) bottles of beer
8 ounces bacon, chopped
2 cups julienned onions
Freshly ground black pepper
1 small head of cabbage, cored and shredded
2 tablespoons chopped garlic
1/4 cup whole grain mustard
8 egg hot-dog buns
1) Preheat grill. Place beer in a saucepan, over medium heat. Bring liquid to a boil. Add sausages and cook for 10 minutes. Remove sausages from liquid, but reserve liquid. Set sausages aside.
2) Render bacon in a large saute pan set over medium heat, until crispy, about 6 to 8 minutes. Remove bacon and set aside. Discard all bacon fat except for 1/4 cup. Place 1/4 cup of fat back into pan and add onions. Season with black pepper. Saute for 2 to 3 minutes, or until tender. Add cabbage. Season with salt and pepper. Continue to saute for 4 minutes or until cabbage is tender. Stir in garlic, mustard and 2 cups of cooking liquid from sausages. Bring liquid to a simmer and cook for 8 to 10 minutes, stirring occasionally. Re-season with salt and pepper. Place sausages on grill and cook for 2 minutes on each side. To serve, place sausages between each bun. Top each sausage with some of the smothered cabbage. Yield: 8 servings.
Cook's Note: Sausages can also cooked in a grill pan on top of stove.
One Year Ago Today: PDG Cinnamon Rolls
Two Years Ago Today: Julia Child's English Muffins
27 comments :
- Alessandra said...
Just popped bu to wish you a happy weekend Mary!
Alessandra - March 3, 2012 at 12:28 AM
- Ginny Hartzler said...
Phil loves brats and knockwurst, and hot dogs, he would be in heaven!
- March 3, 2012 at 12:38 AM
- carolyn bradford said...
This sounds divine! My oldest son is a huge fan of any sausage but especially bratwurst! I can't wait to make this for him! Hope you are doing well! I've missed reading your recipes and look forward to catching back up!
Carolyn - March 3, 2012 at 12:44 AM
- Pondside said...
The Great Dane will love this. When we go to Germany his first stop is any stand in a market town for a bratwurst in a crusty bun.
- March 3, 2012 at 12:50 AM
- Angie's Recipes said...
Not really a fan of sausages...but I must say that Bratwurst tastes pretty decent.
Have a wonderful weekend, Mary! - March 3, 2012 at 1:11 AM
- Diane said...
I love Bratwurst but they are not so easy to find in France. If I should see them then I fill up the freezer! Diane
- March 3, 2012 at 5:06 AM
- Lynn said...
Sounds great! Now I find myself craving a hot dog at 5AM:@)
- March 3, 2012 at 5:17 AM
- Becki's Whole Life said...
I love that story, Mary..ha ha. I'm not sure if you could have picked a worse food to eat after your "sneaking." I have to admit, I love sausage with Bratwurst ranking very high...this sounds wonderful!
- March 3, 2012 at 5:49 AM
- Big Dude said...
You had me with bratwurst and then it just got better. Your sandwiches look and sound delicious. I had a similar childhood experience with Mounds candy bar. It wasn't the souce, but rather the flavor I recalled and to this day I eat neither them or Almond Joy and very little dried coconut.
- March 3, 2012 at 6:08 AM
- Clint said...
Once more you have my enthusiasm at a high pitch. I love brat and the little lady loves her cabbage. This looks a lot like din-din tonight. Blessings.
- March 3, 2012 at 6:30 AM
- Valerie Harrison (bellini) said...
I only remember having sausage in a bun during Oktoberfest as a child. Some things really do need to be remedies.
- March 3, 2012 at 6:51 AM
- Sprigs of Rosemary said...
You do tell a wonderful story, along with a great recipe. Thanks for sharing both. Brats are a summertime favorite here. Mr. Rosemary just loves to put one on a stick and roast it on an open fire, with a beer in the other hand, of course.
- March 3, 2012 at 7:33 AM
- Sue/the view from great island said...
I could go either way on the bratwurst, but that smothered cabbage with bacon and beer has reeled me in, great idea! It's a good thing your early exploits only turned you off sausage on not wine entirely!
- March 3, 2012 at 7:52 AM
- Unknown said...
Hi Mary, found out about you from Duncan Horne over in Malaysia and will spend more time later. Just wanted to say hi from NC and I love to cook so I will be hopefully using some of your recipes soon. Have a great weekend.
http://odielangley.blogspot.com - March 3, 2012 at 8:16 AM
- From the Kitchen said...
I've got the picture--your mother glowering at you and you ashen and shaky!! So glad you could enjoy this meal. It looks delicious!! I never considered using a non-alcoholic beer in this way. Great idea!
Have a delicious weekend.
Bonnie - March 3, 2012 at 8:41 AM
- Sangeeta Madhav said...
This sounds and looks absolutely lovely! Cant wait to make this:)
www.sangeetamadhav.blogspot.com - March 3, 2012 at 8:43 AM
- Tanna said...
Oh, Mary! Bless your little heart. I, too, maintain a memory like an elephant of anything that makes me veer into the world of Bacchus! LOL!
That said, I have never had a bad experience with sausage of any kind and we LOVE brats and cabbage! Thank you for this version and I hope you have a wonderful weekend! blessings ~ tanna - March 3, 2012 at 9:07 AM
- BeetleBuggy said...
That is such a funny story, Mary! But, I know how foods that make us sick never end up on our tables ever or at least, for a long time. It happens to me too. I've always been intrigued by sausage-making and admire people who make their own. :) Great recipe!
- March 3, 2012 at 9:16 AM
- tasteofbeirut said...
I still cant drink apple juice because a then nephew used to spit it on me at age 11/2. I understand the trauma! However, this meal looks so appetizing I would love to make it and devour it in these cold days we've been having.
- March 3, 2012 at 10:06 AM
- James Brewer said...
Hello Mary. These sound great, and I love the idea of putting cabbage on them as well. Have a great weekend.
- March 3, 2012 at 11:08 AM
- Hamaree Rasoi said...
Delicious and fulfilling rolls.
Hamaree Rasoi - March 3, 2012 at 12:24 PM
- Tracy's Living Cookbook said...
I always find it interesting to see recipes that cook brats in beer before grilling them. I learned from my Michigan Upper Peninsula (brat country) friends that the better way to deal with brats is to grill them first. Then simmer for as long as you want in beer. We have been doing it that way for years. Try it and let me know what you think! :)
- March 3, 2012 at 12:37 PM
- David said...
Mary, Brats with beer and cabbage...hard to beat! Just a touch of stone ground spicy mustard and I'd be ready to go... Take Care, Big Daddy Dave
- March 3, 2012 at 4:33 PM
- pam said...
Love brats and cabbage! And after a particularly celebratory New Years Eve, I will no longer eat Egg McMuffins. Much easier to give up then sausage!
- March 3, 2012 at 8:38 PM
- Chelsea said...
I'm not a huge fan of sausage myself (it's the casings that get me) but this sounds fantastic! And I love cooking anything in beer.
- March 3, 2012 at 8:55 PM
- Esther said...
love love love this! yummy! :)
- March 4, 2012 at 1:47 PM
- Margaret Murphy Tripp said...
Yum! I adore sausages of almost any type and the cabbage made these look irresistible. I am now craving a hot dog, badly!
- March 4, 2012 at 7:50 PM


text: The theatre is most probably built on the site of an earlier Greek theater. It housed 15000 people, and as such was amongst the largest in Anatolia, almost as large as the Aspendos' one. It dates from the 2nd century AD. Instead of theatres in other Anatolian cities it was impossible to dig its cave into a hillside so it was built the way we know from theatres in the western Roman empire. Its frieze has been destroyed so systematically that religious motives (of Christians, who later used it for their services) are suspected. A wall in the orchestra was built at a time the theatre was used to house gladiatorial displays. Shots of the theatre in the night


text:
Exterior Remodeling in Killeen, TX
Exterior remodeling, renovating your home improvement needs
How can I keep a remodel on our basement from bursting our budget?
A good rule of thumb when it comes to affordable remodeling is to go for cosmetic upgrades rather than major renovations. For example, rather than replacing old material in an unfinished basement, consider doing a nice paint job that leaves all the old material looking smooth and new. Another option is to limit how much of your basement you upgrade. It's ok to splurge on half the basement and leave the other half as your unfinished storage/laundry room. See what ideas the remodelers at Outroop have by scheduling an appointment to discuss your next project.


text:
McDonald's to Offer Fruit, Salad as Alternatives to Fatty Fries
By Lisa Baertlein
LOS ANGELES -- Hold the fries, pass the salad. McDonald's says it will offer healthy options as part of its popular value meals, letting customers choose a side salad, fruit or vegetables instead of french fries.
The announcement by the world's largest fast-food chain comes as more companies respond to government and consumer pressure to address the global obesity epidemic.
McDonald's (MCD), which often bears the brunt of criticism over the restaurant industry's penchant for tempting diners with indulgent and often high-calorie food, said it would offer the option in all of its 20 major global markets by 2020.
McDonald's also vowed to promote and market only water, milk and juice as the beverages in its popular Happy Meals for children as part of its announcement Thursday at the Clinton Global Initiative annual meeting in New York.
Waist sizes around the world are increasing, setting off alarms in public health circles.
In recent years, the U.S. food industry has begun yielding to pressure from government, parents and consumers seeking to slim down adults and children. Sugary sodas have been yanked from public schools; sugar, sodium and calorie levels have been reduced in products, and calorie counts have been posted on some restaurant menus.
%VIRTUAL-article-sponsoredlinks%The Center for Science in the Public Interest, a nonprofit that has tangled with McDonald's over everything from fattening food to the marketing of Happy Meals, approved of the company's move to add more fruits and vegetables to the menu. Still, it says the company and its rivals have a long way to go in terms of offering healthier options.
"McDonald's slow march toward healthier meals made a major advance today, but a long road lies ahead for the company," CSPI said in a statement.
McDonald's is seen as something of a trend setter among restaurant chains, but like many of its peers, it has tended to resist external efforts to force change.
About one year ago McDonald's said it would begin listing calorie information on menus in some 14,000 U.S. restaurants and drive-thrus -- ahead of a national rule that would require larger restaurant chains to make such disclosures but months after other chains embraced the idea.
In July 2011 it tweaked its popular Happy Meals for children - reducing the french fries portion by more than half and adding apples to every order. The move came after pressure from CSPI, parent groups and others.
More than one-third of Americans are obese, and about 10 percent of the nation's healthcare bill is tied to obesity-related illnesses, such as Type 2 diabetes, heart disease and hypertension, according to the Organization for Economic Cooperation and Development.
McDonald's said its announcement is part of a plan developed with the Alliance for a Healthier Generation, which was founded by the Clinton Foundation and American Heart Association, to increase customers' access to fruit and vegetables and help families and children to make informed eating and lifestyle choices.


text:
There's new evidence out today that's raising questions about whether women in their 40's and 50's should routinely undergo mammography to detect breast cancer. A new analysis of a big Canadian study found no evidence that regular mammograms save lives. The study even suggests that for many women, regular breast X-rays may do more harm than good.
NPR's Rob Stein joins us now to talk about this report. It appears in the British medical journal BMJ.
And, Rob, let's start with the backdrop to this, because there has been a long-running debate about the effectiveness of mammograms.
ROB STEIN, BYLINE: Yeah. That's right, Melissa. The debate over mammography for breast cancer has been raging for years and it's probably the most intense, emotional debate in women's health. And there's a good reason for that. I mean, for years women had been told that they should start getting regular mammograms once they turn 40. And it's a really important thing they can do to protect themselves from dying from breast cancer, that it will catch breast cancer at its earliest, most treatable stages.
But in recent years, experts have started to question that, especially for women younger women, women in their 40's. They say the evidence has been mounting that routine mammograms for those younger women doesn't really cut the death toll from breast cancer. And it could end up doing more harm than good. And here's how. When women get a mammogram, you know, they often get something that looks like it might be a problem. They get called back for another mammogram or for a biopsy. And it turns out to be nothing.
So that creates a lot of anxiety and a lot of stress. And, even when they find something, they end up getting radiation or chemotherapy which can be toxic; or surgery, including mastectomies, for a thing that may never end up being life-threatening.
BLOCK: And this new study that were talking about seems to offer yet more evidence to support that idea, that we are using mammograms - that women are getting mammograms too much. What did the study find?
STEIN: Yeah, this is a very large study that's been going on in Canada for decades. Researchers have been following nearly 90,000 women who either got a mammogram in their 40's or 50's, or got a physical breast exam and no mammogram. These researchers had previously reported that there was no reduction in deaths among the women getting mammograms. Now they're updating those findings after following these women for 25 years.
And once again they find the same thing: Women who got mammograms were no less likely to die from breast cancer than the women who didn't. And for the first time they're able to calculate the harms. You know, how many women ended up getting treated for things they really did need to get treated for? And they estimate that as many as one in five and perhaps one in three women who were diagnosed with a mammogram get treated unnecessarily.
BLOCK: When you say unnecessarily, again, it's because they're getting treated for cancerous growth that would not have been life-threatening.
STEIN: That's right. There are some very small tumors or pre-cancers that would never progress. They'd never even know that they had it and certainly would never become life-threatening.
BLOCK: Rob, this has been a really confusing issue for a lot of women. Does this new study settle the debate or is the confusion going to be going on in every doctor's office around the country?
STEIN: Yeah, unfortunately I don't think this going to settle this anytime soon. There's still a huge amount of debate about this. I spent the day talking to a lot of experts, the folks at the American College of Radiology, American Cancer Society. And they, you know, dismissed these findings. They say there are huge flaws with the study, that there is still the case, for example, they don't think the mammography that was used in these women was very good.
But a lot of other people support these findings and think they are the reason why we should really be thinking twice about mammograms. So this isn't going away anytime soon, unfortunately.
BLOCK: OK. NPR's Rob Stein. Rob, thanks.
STEIN: Nice to be here. Transcript provided by NPR, Copyright NPR.


text:
Lawsuit Claims Pork Producers Council Scammed $60 Million From Farmers
You know that ad campaign for pork, the one that called it "the other white meat?" There's a fascinating behind-the-scenes story about that slogan, revealed in a new lawsuit that was just filed this morning by the Humane Society of the United States.
The complaint claims that the National Pork Producers Council (NPPC), which ran that ad campaign from 1986 to 2001, has been financing its lobbying efforts in part through the sale of that slogan, at the wildly inflated price of $60 million, back in 2006. (According to the lawsuit, an economist at the time thought that use of the slogan was worth no more than $375,000 a year. And there's an argument that the NPPC didn't have the right to claim that it owned that slogan in the first place.)
So who paid $60 million for the slogan?
You could say it was pork producers. The money came out of their pockets. But it was collected from them by the U.S. Department of Agriculture as part of a so-called "checkoff" program. Under these programs, which also exist for beef, soybeans, and milk, the USDA collects mandatory fees from farmers and uses the money to promote those products. (Many farmers resent these tax-like fees and have mounted legal challenges to them, but the USDA argues that they're good for business.)
On the other hand, the USDA didn't decide that this slogan was worth $60 million. It just turns checkoff money over to industry groups. In this case, it was the National Pork Board, a collection of people from the pork industry, who agreed that $60 million was a fair price — according to the lawsuit, as a way to keep their good friends at the National Pork Producers Council in business.
I won't go into all the juicy details of the story. Read the lawsuit for yourself. And remember, this all comes from the Humane Society, which would love nothing better than to bankrupt the National Pork Producers Council.
In its response, the NPPC accused the HSUS of "bullying tactics" and asserted that "there is no legal merit to this claim."
But the lawsuit does shed a little spotlight on what makes the so-called "checkoff" programs so odd and controversial. They mix up public and private priorities so thoroughly that at the end of the day you have the distinct impression that somebody is getting scammed, but you can't quite tell who it is. Is it the farmers? The government? The Pork Board?
Parke Wilde, a specialist on U.S. food policy at Tufts University, thinks that the checkoff programs are doing their worst damage to the credibility of the government's own policies on nutrition. He writes on his blog that the U.S. government, by sponsoring "contradictory messages for different commodities — while approving each message as "government speech" — serves consumers poorly." For example, through the soybean program, the government sponsors ads promoting soy milk; through the milk program, it casts scorn on the same product.


text:
Breaking Up Big Banks Still Not the Answer, Says Fed
There remains much work to fix the "too big to fail" bank problem, but breaking up big financial institutions is still not the answer, an influential U.S. Federal Reserve official said on Thursday.
In a dinner speech, New York Fed President William Dudley took on those who would simply break up big banks and abandon the more measured approach taken in the 2010 Dodd-Frank financial reform bill, which aims to reduce the likelihood of banks failing and lessen the cost to society if they do.
The wide-ranging law was the U.S. response to the 2007-2009 financial crisis, in which the Fed and other regulators orchestrated a government bailout of major firms that were interconnected in a financial web that put the global system at risk.
So-called too-big-to-fail banks are those perceived to have an implicit government backstop.
"Too big to fail is an unacceptable regime," Dudley told a dinner gathering of financial professionals. "The good news is there are many efforts underway to address this problem. The bad news is that some of these efforts are just in their nascent stages."
Some, including Dallas Federal Reserve Bank President Richard Fisher, have advocated breaking up too-big banks. Fisher has repeatedly argued that the five biggest U.S. banks should be sliced up to protect the economy from another crisis.
Without naming any backers of this plan, Dudley said such a move would be a "complicated business," and warned that limiting banks' size cold sacrifice socially useful benefits that come with operating globally.
Dudley said it would be helpful if advocates of breaking up big banks "put a bit more flesh on the bones and develop detailed proposals that address essential questions of how such downsizing or functional separation would be accomplished, and what benefits and costs could be expected."
He listed seven questions that would need to be answered around the break-up process, adding he was "open-minded."
While breaking up too-big-to-fail banks "could yet prove necessary," he added, "it is premature to give up on the current approach: changing the incentives facing large and complex firms, forcing them to become more resilient, and making the financial system more robust to their failure."
Dudley's comments suggest that regulators are still keenly worried that massive and complex banks can threaten the financial system, four years after the worst of the crisis.
Illustrating the range of approaches within the Fed alone, Fed Governor Daniel Tarullo recently surprised Wall Street when he called on Congress to legislate "an upper bound point of reference" for banks based on their percentage of U.S. gross domestic product.
Copyright 2012 by Reuters. All rights reserved.


text:
It's been a terrible day in Baghdad, where at least 16 explosions in 13 different locations have killed dozens of people and left about 200 wounded, NPR's Sean Carberry reports from the Iraqi capital.
He told Morning Edition host Renee Montagne that the "parked car bombs, suicide car bombs" and improvised explosive devices that all went off between 7 and 8 a.m. local time appeared to target civilians — an ominous contrast to the pattern in recent months of violence aimed at security forces.
In addition, Sean said, 12 of the attacks happened in predominantly Shiite Muslim neighborhoods — which could be a sign of renewed hostility between Sunnis and Shiites in the country.
This comes, of course, less than a week after the departure of the last American combat troops after nearly nine years in the country.
As happens in situations such as this when authorities are still gathering information, accounts vary on the number of people killed and injured. The Associated Press writes that at least 57 people died and "nearly 200" were hurt. The BBC is saying at least 63 people were killed and 185 injured. Al-Jazeera also reports at least 63 deaths, and has the number wounded at 176.
The one thing for certain: the toll is high and the attacks have raised concern that more such violence is to come.
As the AP notes:
"The blasts ... came on the heels of a political crisis between Iraq's Sunni and Shiite factions that erupted this weekend. The political spat, which pits Iraq's Shiite prime minister against the highest-ranking Sunni political leader, has raised fears that Iraq's sectarian wounds will be reopened during a fragile time when Iraq is finally navigating its own political future without U.S. military support.
"While the string of explosions was likely not a direct response to the political Sunni-Shiite confrontation, it will ratchet up tensions at a time when many Iraqis are already worried about security. If continued, it could lead to the same type of tit-for-tat attacks that characterized the insurgency years ago."
Copyright 2021 NPR. To see more, visit https://www.npr.org.


text:
GMB Union
GMB has members in every part of the economy doing every type of job imaginable.
GMB's fundamental approach is that together we can achieve more than we can do on our own.
GMB is here for you - to protect you, to represent you and make a better life for you.
GMB is a campaigning trade union focused on protecting GMB members in their workplaces and growing the number of GMB members in order to strengthen the Union's power.
GMB is a general union - which means that anyone can join us. GMB has almost 630,000 members working in every part of the economy. One in every 32 people at work in UK is a member of GMB.
GMB has members in every part of the economy doing every type of job imaginable. GMB members are men and women, young and old or even retired, working full and part time, and are made up of a wide and diverse cross section of Britain's society.
Every day of the year GMB offers protection at work and solves problems for GMB members. GMB provide back up, representation and advice on every issue related to members life at work.
This system of support can be provided in a number of ways, often through one of many Workplace Organisers: GMB trained individuals who give their time voluntarily to help their workmates.
Backing up the reps are full time GMB Organisers.
GMB employs a team of experts on a range of issues including legal specialists, health and safety experts, pension specialists, human resource management staff and experts on terms and conditions. In fact, if you need advice and support about anything to do with work GMB can help you.
GMB's fundamental approach is that together we can achieve more than we can do on our own.
Whether you're looking for better pay, improved childcare, realistic work-life balance, a change to long working hours, the elimination of poor health and safety or simply a desire for respect from your employer; together our voices are much more powerful than one voice alone.
GMB has been in existence for over 12 decades and has grown to be one of Britain's most powerful and forward looking forces for change. It is made up of a number of unions who have merged over the last 120 years to become GMB - Britain's General Union.
Through peace and war, with and without help from Government, GMB has been winning for our members and protecting people at work. GMB is here for you - to protect you, to represent you and to make a better life for you.


text:
" Our first 'guide' ( they are all indoctrinated, robotic creatures, as we discovered soon enough) in Shanghai, was female, thirty, single and still a virgin (her version). Our second guide in Beijing was female, thirty, single and still a virgin ( again, her version). Our third guide at Xian was - you must have guessed - ditto ditto. That made me wonder whether the tourism board hired ladies who met the same set of criteria, or whether, like everything else in China, this too was a part of the Official China Story.
The word 'propaganda' has a whole different connotation in that part of the world, since the average person does not now the difference between what the top dogs want them to know - even about themselves - and what the truth is. Talking to these earnest young women, who continued to live with their parents and were not 'allowed' to date or even receive calls from males, I found myself comparing their repressed lives to the lives of our urban women back home. Their Chinese counterparts were so totally fire -walled from the outside world, they had absolutely no idea of life beyond their province. Their concerns had to do with making enough money to look after ageing parents, and perhaps, marry some day. With no access via the internet to news or entertainment, their existence was dominated by some 'shadowy' bosses they lived in abject fear of. Clearly, their brief as guides was to stick to a parroted spiel that gave the impression they were fluent in English. This mechanical hard sell came apart swiftly if the questions went even a little beyond their brief. They were totally stumped... and went blank! Obviously , their knowledge of English was restricted to memorising the standard tourist brochure. I felt rather sorry for these lovely ladies, who spent most of their measly income on fairness creams, believe it or not, and wore full sleeved blouses and sun hats to protect them from the sun ( read: tanning). They were like programmed mice, scurrying around doing their jobs... their dreams never extending beyond the next small promotion. Their parents' lives were even worse - they had endured the Cultural Revolution.... just about survived the purge. With no money, no space to live, no education, and no hope, they were dependent on the one single child the state had permitted them to bear - ladies like these guides. It was worse , far worse, than anything back in India. For the construct of their lives was based on a lie. A huge lie engineered by the State, to keep people like them perpetually servile - like obedient worker ants whose sole purpose in life was to ensure the future of the Great Country.
Frankly, I see a very grim future for China. For, not being a worker ant, I dare to dream. As do one billion Indians. The idea of China is so vastly different from the idea of India, that it is inevitable we will clash one day. And that day may not be too far.Today's China relies on illusion to project its greatness to the world. Nothing is as you see it - not even the 'booming' economy, with all those manipulated figures. Our faultlines lie elsewhere. But at least we don't feel the need to hire bright eyed virgins as tourist guides, 'conversing' in a language they don't know and telling those who ask about Tianenmen Square with a straight face that 'nothing happened .... it is all Western propaganda." And yet, before you step even a hundred metres from your hotel room in Shanghai, away from the watchful eyes of those virginal guides, you are instantly surrounded by teenage pimps offering, " girls, boys, drugs...any shape, any age, any kind." Will the real China please stand up???"
I had written this for the 'Asian Age' on sunday. Today is tuesday, and once again China and India are at the 'Who Blinks First' game. Manmohan Singh's recent pre-poll waltz through neglected and semi-abandoned Arunachal Pradesh has little meaning - a case of too little , too late. It's a miracle voters in the state showed up in respectable numbers this morning. Mumbai, once again demonstrated its indifference by treating voting day as another public holiday and cursing the government for ruining the party by shutting bars and pubs. We really do deserve the goons we get as netas.


text:
Comme des Garcons SS96
Rodarte SS10
(SIDENOTE: Hamish is hard at work! Iris Apfel is being observational! Magic is happening!)
Next time I am at the circus (a regular hang out spot, but of course) I will ask for cobwebs and veins on top of my cotton candy, kthhhhhnnnnx.
Oh the thinks I think when I should be thinking about homework. Or, you know, doing it.
Screencaps from the video above, Rodarte video + 1st picture by me, Rodarte 2nd picture via style.com


text:
The death of politics
The Lewisham Green Party has opened a new HQ on Brockley Road, ahead of the elections. Located at 252 Brockley Road, their pop-up venture was formerly Crowley Memorials (now relocated to Stanstead Road, Forest Hill) and will be open from 10am-7pm.
So is the Green Party the first to park its tanks on Lewisham's lawn? Are they going to be the most active campaigners in Brockley?
Please use this thread to let us know about any other political campaigning you see locally.