text:
Consistent abnormalities in peripheral indicators of autonomic activity, ie, skin conductance (SC) and heart rate (HR), have been reported in adult-onset schizophrenia. Herein, we use these markers to test the hypothesis of continuity between childhood-onset schizophrenia and adult-onset schizophrenia.
Skin conductance and HR were recorded from 21 severely ill children and adolescents (mean age, 14.1 years) with childhood-onset (>12 years) schizophrenia (patient group) and from 54 age-matched controls (control group) during a rest period, a series of innocuous tones, reaction time insructions, and a simple warned reaction time task.
During rest, patients had higher rates of spontaneous SC responses (SCRs) and HRs than controls, but their SC level was marginally lower and declined more slowly over time. Half of the patients, compared with 4% of the controls, failed to give SC-orienting responses to the first 2 tones. Patients who responded had impaired SCR magnitudes, and their habituation was more erratic than that of controls. The increase in SC level and SCR frequency at the onset of the task period was greatly attenuated in the patients, so that both variables were higher in controls. Patients had smaller SCRs and anticipatory HR responses to the reaction time stimuli. Skin conductance nonresponding was associated with negative and total symptoms, and spontaneous SCR frequency was associated with positive symptoms.
The findings show similar abnormalities in autonomic nervous system activity in childhoodonset schizophrenia to those found in adult chronic schizophrenia, thus supporting the hypothesis of continuity of the childhood and adult forms of the illness. Comparisons with data from other childhood disorders suggest that the combination of low-elicited SC activity with high levels of spontaneous SC activity may be specific to schizophrenia.
Thank you for submitting a comment on this article. It will be reviewed by JAMA Psychiatry editors. You will be notified when your comment has been published. Comments should not exceed 500 words of text and 10 references.
Do not submit personal medical questions or information that could identify a specific patient, questions about a particular case, or general inquiries to an author. Only content that has not been published, posted, or submitted elsewhere should be submitted. By submitting this Comment, you and any coauthors transfer copyright to the journal if your Comment is posted.
* = Required Field
Disclosure of Any Conflicts of Interest*
Indicate all relevant conflicts of interest of each author below, including all relevant financial interests, activities, and relationships within the past 3 years including, but not limited to, employment, affiliation, grants or funding, consultancies, honoraria or payment, speakers' bureaus, stock ownership or options, expert testimony, royalties, donation of medical equipment, or patents planned, pending, or issued. If all authors have none, check "No potential conflicts or relevant financial interests" in the box below. Please also indicate any funding received in support of this work. The information will be posted with your response.
Some tools below are only available to our subscribers or users with an online account.
Download citation file:
Customize your page view by dragging & repositioning the boxes below.
More Listings atJAMACareerCenter.com >
Enter your username and email address. We'll send you a link to reset your password.
Enter your username and email address. We'll send instructions on how to reset your password to the email address we have on record.
Need assistance?
Athens and Shibboleth are access management services that provide single sign-on to protected resources. They replace the multiple user names and passwords necessary to access subscription-based content with a single user name and password that can be entered once per session. It operates independently of a user's location or IP address. If your institution uses Athens or Shibboleth authentication, please contact your site administrator to receive your user name and password.


text:
Milwaukee's young soulful rapper Klassik already has some pretty big things to cheer about: in 2014, he was named as a "Top 10 Wisconsin Artist to Watch" by the Milwaukee Journal Sentinel and won a Wisconsin Area Music Industry award for "Hip Hop Artist of the Year" in 2013. He has opened for artists such… Read more »
Listen Back: Local/Live with the Brian Wurch Band
Local/Live this week brought WMSE listeners tunes from Milwaukee's rock veterans , the Brian Wurch Band. Remember the days of the Psychobunnies? Yeah, we do, too… The Brian Wurch Band released the excellently sappy Say Yes last year and it's a couple parts Tom Waits, a couple parts Lou Reed and some sweetness from Paul… Read more »
Local/Live: April 7 – The Brian Wurch Band
"The Brian Wurch Band started out as 'The Gigolo's" playing on Water Street in the 90's for tips and laughs. Phil the "human jukebox" Baldus aka Pilo B lead the way on lead vocals and Dennis "Daredevil" Dykstra on drums and vocals, Brian on guitar and vocals, Add Tom "Ironman" Plutshack on the bass. "Brian… Read more »
Listen Back: Local/Live with Soup Moat
Local/Live this week brought WMSE listeners the sludge-y goodness of Milwaukee quartet, Soup Moat. The band is celebrating a new release — Enjoy Your Hobbies — on Milwaukee's Triple Eye Industries and has been out and about on the Milwaukee scene, playing shows at Cocoon Room, Borg Ward and more, recently. Thanks to the band for swinging… Read more »
Local/Live: March 31 – Soup Moat
In the belly of the cosmic squirrel-beast there stands a castle. Around the castle flows a moat. Once per week the castle's occupants party in the heavy jam that fills the moat. In their revelry they sing and they yell. This is Soup Moat. The four members: Scott Emmerich on drums and vocals, Frank Knaebe… Read more »
Listen Back: Local/Live with Volcanos
Local/Live this week brought WMSE listeners tune-age from Milwaukee's Volcanos. The band rocked it up with their impassioned vocals and heavy riffage, leaning on some pretty sinewy bass lines. Thanks to the band for swinging by and enjoy a track from their session — "Parasite" — below.
Local/Live: March 24– Volcanos
Volcanos began in the latter half of 2014, when Russell, Chris and Jim (who had been playing together in the Black Sabbath tribute 'Hand of Doom') felt the call to create original material together again. Chris and Jim had already worked together in 'Xolotl', and had known Russell for years from his work in 'Irock-Z',… Read more »
Local/Live: March 17 – Ara
Ara is a four-piece progressive/technical death metal band, featuring members of the bands Northless and Concentric. Ara began in early 2012 as a culmination of the desires of one Jerry Hauppa and Erik Stenglein to play in a death metal project that borrowed from their influences, without being mere carbon copies. Both Jerry and Erik have/had… Read more »
Listen Back: Local/Live with Greatest Lakes
Local/Live this week brought WMSE listeners winsome tunes from Milwaukee's Greatest Lakes who had the studios ringing out with their lovely harmonies and uplifting folk-pop instrumentation. Thanks to the band for swinging by and enjoy a track from their session — "Best Days" — below.
Local/Live: March 10 – Dryhouse Ruins
Dryhouse Ruins parts are more recognizable than their sum: Damian Strigens currently of Testa Rosa and formerly of Field Report and many more, Jim Warchol, formerly of Sometime Sweet Susan and currently of Death Blues, and Jeff Mitchell, formerly of Field Report and known around town for his solo material, all come together to form… Read more »

subset: commoncrawl


text:
Top Definition
an important person, a president etc., VIP, someone who know what time it is, a leader of a group
Barry is a big wig in Gulf Oil - a vice president or something.
by VAKI5 May 09, 2005
Trending Now
Can you define these popular missing words?
Someone who is very important, powerful, and influential -a president, for example-
At the Grammy awards the other week, an unusual note was struck by Michael Greene, a record industry bigwig.
by mrtt May 29, 2006
Another name for a boss
Everyone is freaking out at work, cause the bigwigs are in today
by JAH87 January 13, 2010
An aficionado of trucker hats and trucker hat related accessories.
The Bigwig's face was obscured from view, making identification all but impossible.
by Jimithy Jones May 23, 2009
The greatest fucking band ever.
I went to see Bigwig last night, and it was fucking awesome
by Ben October 03, 2003
A know-it-all on rotten tomatoes OT forums
Thinks speeding while drunk should be legal
by Derek Elmore March 29, 2004
old black women who donot mind their own biz
tha big wig dis my ass fo' loudin the new ludacris CD in ma Crib
by ''U Fat MotherFucker'' March 12, 2004


text:
Hygiene CO Real Estate & Homes for Sale
0 Properties Found
Hygiene real estate listings include condos, townhomes, and single family homes for sale.
Commercial properties are also available.
If you see a property you're interested in, contact a Hygiene real estate agent to arrange a tour today!
Sort Results:
There are currently no properties in Hygiene CO. Please click the Refine Your Search button below to find other properties in the area.
Refine Property Search
80533 Real Estate Listings Provided By:
Real Living CO Real Estate
How can we help you?
Have a question or need assistance? Please fill out the information below and we'll be glad to assist you.
Hygiene ZIPs80533 Homes for Sale


text:
• A randomized evaluation of 44 malnourished patients, wherein 24 were used as controls and 20 received immediate postoperative parenteral hyperalimentation, indicated that five days of nutritional therapy had no notable effect on the morbidity and mortality experienced by the malnourished patients, in comparison to a third, nonmalnourished group of similar patients. Although central venous nutrition was safely administered without complications immediately after cardiac operations, clinical efficacy of this therapy could not be demonstrated. The inability to establish a dose-response relationship, and hence administer the "optimum" amount of nutrients, may have accounted for the negative results reported. Although preoperative malnutrition is associated with a poorer result after cardiac surgery, postoperative repletion of nutrients appears to be ineffective in reversing this relationship.
(Arch Surg 111:45-50, 1976)
Thank you for submitting a comment on this article. It will be reviewed by JAMA Surgery editors. You will be notified when your comment has been published. Comments should not exceed 500 words of text and 10 references.
Do not submit personal medical questions or information that could identify a specific patient, questions about a particular case, or general inquiries to an author. Only content that has not been published, posted, or submitted elsewhere should be submitted. By submitting this Comment, you and any coauthors transfer copyright to the journal if your Comment is posted.
* = Required Field
Disclosure of Any Conflicts of Interest*
Indicate all relevant conflicts of interest of each author below, including all relevant financial interests, activities, and relationships within the past 3 years including, but not limited to, employment, affiliation, grants or funding, consultancies, honoraria or payment, speakers' bureaus, stock ownership or options, expert testimony, royalties, donation of medical equipment, or patents planned, pending, or issued. If all authors have none, check "No potential conflicts or relevant financial interests" in the box below. Please also indicate any funding received in support of this work. The information will be posted with your response.
Some tools below are only available to our subscribers or users with an online account.
Download citation file:
Customize your page view by dragging & repositioning the boxes below.
More Listings atJAMACareerCenter.com >
Enter your username and email address. We'll send you a link to reset your password.
Enter your username and email address. We'll send instructions on how to reset your password to the email address we have on record.
Need assistance?
Athens and Shibboleth are access management services that provide single sign-on to protected resources. They replace the multiple user names and passwords necessary to access subscription-based content with a single user name and password that can be entered once per session. It operates independently of a user's location or IP address. If your institution uses Athens or Shibboleth authentication, please contact your site administrator to receive your user name and password.


text:
Implementing an Audio Driver
As discussed in the chapter Audio Family Design, writing an audio driver using the Audio family requires, in object-oriented terms, that you do some certain things in your code:
Create a subclass of
IOAudioDevicewhich, among other things, initializes the hardware and registers for sleep/wake notifications.
Create a subclass of
IOAudioEnginewhich, among other things, initializes the I/O engine and stops and starts it.
Create, configure, and attach to the
IOAudioEngineobject the number of
IOAudioControlobjects appropriate to your driver.
Respond to value changes in the
In a separate code module (but as part of the
IOAudioEnginesubclass implementation), implement the driver's clipping and converting routines.
This chapter will guide you through these implementation steps. It uses as a code source the SamplePCIAudioDriver example project (located in
/Developer/Examples/Kernel/IOKit/Audio/Templates when you install the Developer package). In the interest of brevity, this chapter does not use all the code found in that project and strips the comments from the code. Refer to the SamplePCIAudioDriver project for the full range of code and comments on it.
Setting Up the Project
Even before you create a project for your audio driver, you should consider some elemental facets of design. Examine the audio hardware and decide which Audio-family objects are required to support it. Of course, your driver must have one
IOAudioDevice object (instantiated from a custom subclass), but how many
IOAudioStream, and
IOAudioControl objects should you create?
Table 3-1 provides a decision matrix for determining how many Audio-family objects of each kind that you need.
What to create
Are there sample buffers of different sizes?
Create a custom
How many I/O or DMA engines are there on the device?
Create a custom
How many separate or interleaved sample buffers are there?
Create an
How many controllable attributes are there (volume, gain, mute, and so on)?
Create an
The SamplePCIAudioDriver project requires one custom
IOAudioEngine subclass object, two
IOAudioStream objects (input and output), and six
IOAudioControl objects (left and right output volume, left and right input gain, and input and output mute).
You also should decide what properties your driver must have to match against your provider's nub and specify those properties in your driver's
IOKitPersonalities dictionary. In the SamplePCIAudioDriver personality (see Figure 3-1), the provider is the PCI family and the nub class is
IOPCIDevice. In addition, a PCI audio driver would usually specify the vendor and device ID registers (primary or subsystem) as the value of the
IOPCIMatch key. (Note that in the SamplePCIAudioDriver example, the vendor and device ID registers are specified as zeros; for your driver, you would substitute the appropriate values.) Finally, for your
IOClass property, append the name of your
IOAudioDevice subclass to the standard reverse-DNS construction
_; in the case of the SamplePCIAudioDriver project, the
IOClass value is
Of course, if your driver's provider is different (say, USB or FireWire), the matching properties that you would specify in an
IOKitPersonalities dictionary would be different.
As Figure 3-1 suggests, also make sure that you specify other necessary properties in your driver's
Info.plist file, including the versioning and dependency information in the
OSBundleLibraries dictionary.
Implementing an IOAudioDevice Subclass
Every I/O Kit audio driver must implement a subclass of
IOAudioDevice. One instance of this class is created when the driver is loaded. An
IOAudioDevice object is the central, coordinating object of the driver; it represents the audio hardware in an overall sense.
Despite its central role, an
IOAudioDevice subclass generally does not do as much as an
IOAudioEngine subclass. It merely initializes the hardware at startup and creates the custom
IOAudioEngine objects required by the driver. It may also create the
IOAudioControl objects used by the driver and respond to requests to change the values of these controls, but the
IOAudioEngine subclass could do these tasks instead. In the example used for this chapter (SamplePCIAudioDriver), the
IOAudioDevice subclass creates and manages the device's controls.
Begin by adding a header file and an implementation file for the
IOAudioDevice superclass you are going to implement. In the header file, specify
IOAudioDevice as the superclass and provide the necessary declarations.
Listing 3-1 shows the beginning of
Listing 3-1 Partial class declaration of the IOAudioDevice subclass
#include <IOKit/audio/IOAudioDevice.h>
typedef struct SamplePCIAudioDeviceRegisters {
UInt32 reg1;
UInt32 reg2;
UInt32 reg3;
UInt32 reg4;
} SamplePCIAudioDeviceRegisters;
class IOPCIDevice;
class IOMemoryMap;
#define SamplePCIAudioDevice com_MyCompany_driver_SamplePCIAudioDevice
class SamplePCIAudioDevice : public IOAudioDevice
friend class SampleAudioEngine;
IOPCIDevice *pciDevice;
IOMemoryMap *deviceMap;
SamplePCIAudioDeviceRegisters *deviceRegisters;
// ...
Hardware Initialization
I/O Kit audio drivers do not need to override the
start method. Instead, the default
IOAudioDevice implementation of
start first invokes the superclass implementation and then calls the
initHardware method of the subclass. Your
IOAudioDevice subclass must override the
initHardware method.
Your implementation of
initHardware must do two general things:
It must perform any necessary hardware-specific initializations (on both the provider and the audio sides), such as mapping resources and setting the hardware to a known state. It also involves creating and initializing the necessary Audio family objects.
It must set the names by which the driver is to be known to the Audio HAL and its clients.
If the
initHardware call succeeds, the
IOAudioDevice superclass (in the
start method) sets up power management if the family is supposed to manage power and then calls
registerService to make the
IOAudioDevice object visible in the I/O Registry.
Listing 3-2 shows how the SamplePCIAudioDevice class implements the
initHardware method.
Listing 3-2 Implementing the initHardware method
bool SamplePCIAudioDevice::initHardware(IOService *provider)
bool result = false;
IOLog("SamplePCIAudioDevice[%p]::initHardware(%p)\n", this, provider);
if (!super::initHardware(provider)) {
goto Done;
pciDevice = OSDynamicCast(IOPCIDevice, provider);
if (!pciDevice) {
goto Done;
deviceMap = pciDevice->mapDeviceMemoryWithRegister(kIOPCIConfigBaseAddress0);
if (!deviceMap) {
goto Done;
deviceRegisters = (SamplePCIAudioDeviceRegisters *)deviceMap->getVirtualAddress();
if (!deviceRegisters) {
goto Done;
setDeviceName("Sample PCI Audio Device");
setManufacturerName("My Company");
#error Put your own hardware initialization code here...and in other routines!!
if (!createAudioEngine()) {
goto Done;
result = true;
if (!result) {
if (deviceMap) {
deviceMap = NULL;
return result;
The first part of this method does some provider-specific initializations. The implementation gets the provider, an
IOPCIDevice object, and with it, configures a map for the PCI configuration space base registers. With this map, it gets the virtual address for the registers. Then it enables PCI memory access by calling
Next, the SamplePCIAudioDevice implementation sets the full and short name of the device as well as the manufacturer's name, making this information available to the Audio HAL.
The last significant call in this implementation is a call to
createAudioEngine. This method creates the driver's
IOAudioEngine and
IOAudioControl objects (and, indirectly, the driver's
IOAudioStream objects).
Creating the IOAudioEngine Objects
In the
initHardware method, create an instance of your driver's
IOAudioEngine subclass for each I/O engine on the device. After it's created and initialized, call
activateAudioEngine to signal to the Audio HAL that the engine is ready to begin vending audio services.
The SamplePCIAudioDevice subclass creates its sole
IOAudioEngine object in a subroutine of
initHardware named
createAudioEngine (see Listing 3-3).
Listing 3-3 Creating an IOAudioEngine object
bool SamplePCIAudioDevice::createAudioEngine()
bool result = false;
SamplePCIAudioEngine *audioEngine = NULL;
IOAudioControl *control;
audioEngine = new SamplePCIAudioEngine;
if (!audioEngine) {
goto Done;
if (!audioEngine->init(deviceRegisters)) {
goto Done;
// example code skipped...
// Here create the driver's IOAudioControl objects
// (see next section)...
result = true;
if (!result && (audioEngine != NULL)) {
return result;
In this example, the
IOAudioDevice subclass creates a raw instance of the driver's subclass of
IOAudioEngine (SamplePCIAudioEngine) and then initializes it, passing in the device registers so the object can access those registers. You can define your
init method to take any number of parameters.
Next, the
IOAudioDevice implementation activates the audio engine (
activateAudioEngine); this causes the newly created
IOAudioEngine object's
start and
initHardware methods to be invoked. When
activateAudioEngine returns, the
IOAudioEngine is ready to begin vending audio services to the system. Because the
IOAudioDevice superclass retains the driver's
IOAudioEngine objects, be sure to release each
IOAudioEngine object so that it is freed when the driver is terminated.
Creating and Adding the IOAudioControl Objects
A typical I/O Kit audio driver must instantiate several
IOAudioControl objects to help it manage the controllable attributes of the audio hardware. These attributes include such things as volume, mute, and input/output selection. You can create and manage these control objects in your
IOAudioEngine subclass or in your
IOAudioDevice subclass; it doesn't matter which.
As summarized in Table 3-2, the Audio family provides three subclasses of
IOAudioControl that implement behavior specific to three functional types of control. Instantiate a control from the subclass that is appropriate to a controllable attribute of the device.
For controls such as volume, where a range of measurable values (such as decibels) is associated with an integer range.
For controls such as mute, where the state is either off or on.
For controls that select a discrete attribute, such as input gain.
Each subclass (or control type) has a
create method and a convenience method specific to a subtype of control. The
IOAudioTypes.h header file, which defines constants for control type and subtype, also defines other constants intended to be supplied as parameters in the control-creation methods. Table 3-3 summarizes the categories that these constants fall into.
Examples and comments
General function of control
Level, toggle, or selector (each corresponding to an
Purpose of the control
Volume, mute, or input/output; subclass convenience methods assume a subtype.
Channel ID
Common defaults for channels
Default right channel, default center channel, default sub woofer, all channels.
How the control is to be used
Output, input, or pass-through.
IOAudioTypes.h for the complete set of audio-control constants.
After you create an
IOAudioControl object you must take two further steps:
Set the value-change handler for the control.
The value-change handler is a callback routine that is invoked when a client of the Audio HAL requests a change in a controllable attribute. See Implementing Control Value-Change Handlers for more on these routines.
Add the
IOAudioControlto the
IOAudioEngineobject they are associated with.
In the SamplePCIAudioDriver example, the
IOAudioDevice subclass creates and initializes the driver's
IOAudioControl objects. This happens in the
createAudioEngine method; Listing 3-4 shows the creation and initialization of one control.
Listing 3-4 Creating an IOAudioControl object and adding it to the IOAudioEngine object
// ... from createAudioEngine()
control = IOAudioLevelControl::createVolumeControl(
65535, // initial value
0, // min value
65535, // max value
(-22 << 16) + (32768), // -22.5 in IOFixed (16.16)
0, // max 0.0 in IOFixed
0, // control ID - driver-defined
if (!control) {
goto Done;
volumeChangeHandler, this );
/* Here create more IOAudioControl objects for right output channel,
** output mute,left and right input gain, and input mute. For each, set
** value change handler and add to the IOAudioEngine
// ...
In this example, the
IOAudioDevice subclass creates a left output volume control with an integer range from 0 to 65535 and a corresponding decibel range from –22.5 to 0.0. A channel must always be associated with an
IOAudioControl object. You do this when you create the object by specifying constants (defined in
IOAudioDefines.h) for both channel ID and channel name. You must also specify a "usage" constant that indicates how the
IOAudioControl will be used (input, output, or pass-through).
Once you have added an
IOAudioControl to its
IOAudioEngine, you should release it so that it is properly freed when the
IOAudioEngine object is done with it.
Handling Sleep/Wake Notifications
As the power controller for your device, it is necessary to register for sleep/wake notifications. At a minimum, your handlers should stop and restart any audio engines under their control. Depending on the device, this may not be sufficient, however.
In general—and particularly for PCI devices—device power will be cycled during sleep, but the device will not disappear from the device tree. This means that your driver will not be torn down and reinitialized. Thus, for these devices, it is crucial that you register for sleep/wake notifications and reinitialize your device registers to a known state on wake. Otherwise, unexpected behavior may result.
For information about how to register for sleep/wake notifications, see the Power Management chapter of IOKit Fundamentals.
Implementing Control Value-Change Handlers
For each
IOAudioControl object that your driver creates, it must implement what is known as a value-change handler for it. (This doesn't imply that you need you need to create a separate handler for each control; one handler could be used to manage multiple controls of similar type.) The value-change handler is a callback routine that is invoked when the controllable device attribute associated with an
IOAudioControl object needs to be changed.
The header file
IOAudioControl.h defines three prototypes for control value-change handlers:
typedef IOReturn (*IntValueChangeHandler)(OSObject *target,
IOAudioControl *audioControl, SInt32 oldValue, SInt32 newValue);
typedef IOReturn (*DataValueChangeHandler)(OSObject *target,
IOAudioControl *audioControl, const void *oldData, UInt32
oldDataSize, const void *newData, UInt32 newDataSize);
typedef IOReturn (*ObjectValueChangeHandler)(OSObject *target,
IOAudioControl *audioControl, OSObject *oldValue,
OSObject *newValue);
Each prototype is intended for a different kind of control value: integer, pointer to raw data (
void *), and (
libkern) object. For most cases, the integer handler should be sufficient. All of the existing
IOAudioControl subclasses pass integer values to the
IntValueChangeHandler object.
The essential task of the value-change handler is to update the proper attribute of the audio hardware to the new control value. Listing 3-5 shows how one might implement a value-change handler (excluding the actual attribute-setting code).
Listing 3-5 Implementing a control value-change handler
IOReturn SamplePCIAudioDevice::volumeChangeHandler(IOService *target,
IOAudioControl *volumeControl, SInt32 oldValue, SInt32 newValue)
IOReturn result = kIOReturnBadArgument;
SamplePCIAudioDevice *audioDevice;
audioDevice = (SamplePCIAudioDevice *)target;
if (audioDevice) {
result = audioDevice->volumeChanged(volumeControl, oldValue,
return result;
IOReturn SamplePCIAudioDevice::volumeChanged(IOAudioControl *volumeControl,
SInt32 oldValue, SInt32 newValue)
IOLog("SamplePCIAudioDevice[%p]::volumeChanged(%p, %ld, %ld)\n", this,
volumeControl, oldValue, newValue);
if (volumeControl) {
IOLog("\t-> Channel %ld\n", volumeControl->getChannelID());
// Add hardware volume code change
return kIOReturnSuccess;
The reason for the nested implementation in this example is that the value-change callback itself must be a straight C-language function (in this case, it's a static member function). The static function simply forwards the message to the actual target for processing.
Implementing an IOAudioEngine Subclass
In addition to implementing a subclass of
IOAudioDevice, writers of audio drivers must also implement a subclass of
IOAudioEngine. This subclass should define the attributes and behavior of the driver that are specific to the hardware's I/O engine. These include specifying the size and characteristics of the sample and mix buffers, getting the current sample frame on demand, handling interrupts to take a timestamp, handling format changes, and starting and stopping the I/O engine upon request.
Start by defining the interface of your
IOAudioEngine subclass in a header file. Listing 3-6 shows the main contents of the
SamplePCIAudioEngine.h file.
Listing 3-6 Interface definition of the SamplePCIAudioEngine class
class SamplePCIAudioEngine : public IOAudioEngine
SamplePCIAudioDeviceRegisters *deviceRegisters;
SInt16 *outputBuffer;
SInt16 *inputBuffer;
IOFilterInterruptEventSource *interruptEventSource;
virtual bool init(SamplePCIAudioDeviceRegisters *regs);
virtual void free();
virtual bool initHardware(IOService *provider);
virtual void stop(IOService *provider);
virtual IOAudioStream *createNewAudioStream(IOAudioStreamDirection
direction, void *sampleBuffer, UInt32 sampleBufferSize);
virtual IOReturn performAudioEngineStart();
virtual IOReturn performAudioEngineStop();
virtual UInt32 getCurrentSampleFrame();
virtual IOReturn performFormatChange(IOAudioStream *audioStream,
const IOAudioStreamFormat *newFormat, const IOAudioSampleRate
virtual IOReturn clipOutputSamples(const void *mixBuf, void *sampleBuf,
UInt32 firstSampleFrame, UInt32 numSampleFrames, const
IOAudioStreamFormat *streamFormat, IOAudioStream *audioStream);
virtual IOReturn convertInputSamples(const void *sampleBuf, void *destBuf,
UInt32 firstSampleFrame, UInt32 numSampleFrames, const
IOAudioStreamFormat *streamFormat, IOAudioStream *audioStream);
static void interruptHandler(OSObject *owner, IOInterruptEventSource
*source, int count);
static bool interruptFilter(OSObject *owner, IOFilterInterruptEventSource
virtual void filterInterrupt(int index);
Most of the methods and types declared here are explained in the following sections—including (for example) why there is a cluster of interrupt-related methods.
Hardware Initialization
As you did in your
IOAudioDevice subclass, you must implement the
initHardware method in your
IOAudioEngine subclass to perform certain hardware initializations. The
initHardware method is invoked indirectly when the
IOAudioDevice object calls
activateAudioEngine on an
IOAudioEngine object.
In your implementation of
initHardware, you should accomplish two general tasks: configure the I/O engine and create the
IOAudioStream objects used by the engine. As part of initialization, you should also implement the
init method if anything special should happen prior to the invocation of
initHardware; in the case of the SamplePCIAudioEngine class, the
init method calls the superclass implementation and then assigns the passed-in device registers to an instance variable.
Configuring the I/O Engine
Configuring the audio hardware's I/O engine involves the completion of many recommended tasks:
Determine the current sample rate and set the initial sample rate using
setNumSampleFramesPerBufferto specify the number of sample frames in each buffer serviced by this I/O engine.
setDescriptionto make the name of the I/O engine available to Audio HAL clients.
setInputSampleLatency(or both methods, if appropriate) to indicate how much latency exists on the input and output streams. The Audio family makes this information available to the Audio HAL so it can pass it along to its clients for synchronization purposes.
setSampleOffsetto make sure that the Audio HAL stays at least the specified number of samples away from the I/O engine's head. This setting is useful for block-transfer devices.
Create the
IOAudioStreamobjects to be used by the I/O engine and add them to the
IOAudioEngine. See Creating IOAudioStream Objects for details.
Add a handler to your command gate for the interrupt fired by the I/O engine when it wraps to the beginning of the sample buffer. (This assumes a "traditional" interrupt.)
Perform any necessary engine-specific initializations.
Listing 3-7 illustrates how the SamplePCIAudioEngine class does some of these steps. Note that some initial values, such as
INITIAL_SAMPLE_RATE, have been defined earlier using
#define preprocessor commands.
Listing 3-7 Configuring the I/O engine
bool SamplePCIAudioEngine::initHardware(IOService *provider)
bool result = false;
IOAudioSampleRate initialSampleRate;
IOAudioStream *audioStream;
IOWorkLoop *workLoop;
if (!super::initHardware(provider)) {
goto Done;
initialSampleRate.whole = INITIAL_SAMPLE_RATE;
initialSampleRate.fraction = 0;
setDescription("Sample PCI Audio Engine");
workLoop = getWorkLoop();
if (!workLoop) {
goto Done;
interruptEventSource = IOFilterInterruptEventSource::filterInterruptEventSource(this,
OSMemberFunctionCast(IOInterruptEventAction, this,
OSMemberFunctionCast(Filter, this,
if (!interruptEventSource) {
goto Done;
outputBuffer = (SInt16 *)IOMalloc(BUFFER_SIZE);
if (!outputBuffer) {
goto Done;
inputBuffer = (SInt16 *)IOMalloc(BUFFER_SIZE);
if (!inputBuffer) {
goto Done;
audioStream = createNewAudioStream(kIOAudioStreamDirectionOutput,
outputBuffer, BUFFER_SIZE);
if (!audioStream) {
goto Done;
audioStream = createNewAudioStream(kIOAudioStreamDirectionInput,
inputBuffer, BUFFER_SIZE);
if (!audioStream) {
goto Done;
result = true;
return result;
The following section, Creating IOAudioStream Objects, describes the implementation of
createNewAudioStream, which this method calls. A couple of other things in this method merit a bit more discussion.
First, in the middle of the method are a few lines of code that create a filter interrupt event source and add it to the work loop. Through this event source, an event handler specified by the driver will receive interrupts fired by the I/O engine. In the case of SamplePCIAudioEngine, the driver wants the interrupt at primary interrupt time instead of secondary interrupt time because of the better periodic accuracy. To do this, it creates an
IOFilterInterruptEventSource object that makes a filtering call to the primary interrupt handler (
interruptFilter); the usual purpose of this callback is to determine which secondary interrupt handler should be called, if any. The SamplePCIAudioEngine in the
interruptFilter routine (as you'll see in Taking a Timestamp) calls the method that actually takes the timestamp and always returns
false to indicate that the secondary handler should not be called. For the driver to receive interrupts, the event source must be enabled. This is typically done when the I/O engine is started.
Second, this method allocates input and output sample buffers in preparation for the creation of
IOAudioStream objects in the two calls to
createNewAudioStream. The method of allocation in this example is rather rudimentary and would be more robust in a real driver. Also note that
BUFFER_SIZE is defined earlier as:
In other words, compute the byte size of your sample buffers by multiplying the number of sample frames in the buffer by the number of the channels in the audio stream; then multiply that amount by the bit depth and divide the resulting amount by 8 (bit size of one byte).
Creating IOAudioStream Objects
IOAudioEngine subclass should also create its
IOAudioStream objects when it initializes the I/O engine (
initHardware). You should have one
IOAudioStream instance for each sample buffer serviced by the I/O engine. In the process of creating an object, make sure that you do the following things:
Initialize it with the
IOAudioEngineobject that uses it (in this case, your
IOAudioEnginesubclass instance).
Initialize the fields of a
IOAudioStreamFormatstructure with the values specific to a particular format.
setSampleBufferto pass the actual hardware sample buffer to the stream. If the sample buffer resides in main memory, it should be allocated before you make this call.
SamplePCIAudioEnginesubclass allocates the sample buffers (input and output) in
initHardwarebefore it calls
addAvailableFormatfor each format to which the stream can be set. As part of the
addAvailableFormatcall, specify the minimum and maximum sample rates for that format.
Once you have added all supported formats to an
IOAudioStream, call
setFormatto specify the initial format for the hardware. Currently,
performFormatChangeis invoked as a result of the
Listing 3-8 shows how the SamplePCIAudioEngine subclass creates and initializes an
IOAudioStream object.
Listing 3-8 Creating and initializing an IOAudioStream object
IOAudioStream *SamplePCIAudioEngine::createNewAudioStream(IOAudioStreamDirection
direction, void *sampleBuffer, UInt32 sampleBufferSize)
IOAudioStream *audioStream;
audioStream = new IOAudioStream;
if (audioStream) {
if (!audioStream->initWithAudioEngine(this, direction, 1)) {
} else {
IOAudioSampleRate rate;
IOAudioStreamFormat format = {
2, // number of channels
kIOAudioStreamSampleFormatLinearPCM, // sample format
BIT_DEPTH, // bit depth
BIT_DEPTH, // bit width
kIOAudioStreamAlignmentHighByte, // high byte aligned
kIOAudioStreamByteOrderBigEndian, // big endian
true, // format is mixable
0 // driver-defined tag - unused by this driver
audioStream->setSampleBuffer(sampleBuffer, sampleBufferSize);
rate.fraction = 0;
rate.whole = 44100;
audioStream->addAvailableFormat(&format, &rate, &rate);
rate.whole = 48000;
audioStream->addAvailableFormat(&format, &rate, &rate);
return audioStream;
Starting and Stopping the I/O Engine
IOAudioEngine subclass must implement
performAudioEngineStart and
performAudioEngineStop to start and stop the I/O engine. When you start the engine, make sure it starts at the beginning of the sample buffer. Before starting the I/O engine, your implementation should do two things:
Enable the interrupt event source to allow the I/O engine to fire interrupts as it wraps from the end to the beginning of the sample buffer; in its interrupt handler, the
IOAudioEngineinstance can continually take timestamps.
Take an initial timestamp to mark the moment the audio engine started, but do so without incrementing the loop count.
By default, the method
takeTimeStamp automatically increments the current loop count as it takes the current timestamp. But because you are starting a new run of the I/O engine and are not looping, you don't want the loop count to be incremented. To indicate that, pass
false into
Listing 3-9 shows how the SamplePCIAudioEngine class implements the
performAudioEngineStart method; the actual hardware-related code that starts the engine is not supplied.
Listing 3-9 Starting the I/O engine
IOReturn SamplePCIAudioEngine::performAudioEngineStart()
IOLog("SamplePCIAudioEngine[%p]::performAudioEngineStart()\n", this);
// Add audio - I/O start code here
#error performAudioEngineStart() - add engine-start code here; driver will
not work without it
return kIOReturnSuccess;
performAudioEngineStop, be sure to disable the interrupt event source before you stop the I/O engine.
Taking a Timestamp
A major responsibility of your
IOAudioEngine subclass is to take a timestamp each time the I/O engine loops from the end of the sample buffer to the beginning of the sample buffer. Typically, you program the hardware to throw the interrupt when this looping occurs. You must also set up an interrupt handler to receive and process the interrupt. In the interrupt handler, simply call
takeTimeStamp with no parameters; this method does the following:
It gets the current (machine) time and sets it as the loop timestamp in the
IOAudioEngineStatus-defined area of memory shared with Audio clients.
It increments the loop count in the same
IOAudioEngineStatus-defined area of shared memory.
The Audio HAL requires both pieces of updated information so that it can track where the I/O engine currently is and predict where it will be in the immediate future.
The SamplePCIAudioEngine subclass uses an
IOFilterInterruptEventSource object in its interrupt-handling mechanism. As Hardware Initialization describes, when the subclass creates this object, it specifies both an interrupt-filter routine and an interrupt-handler routine. The interrupt-handler routine, however, is never called; instead, the interrupt-filter routine calls another routine directly (
filterInterrupt), which calls
takeTimeStamp. Listing 3-10 shows this code.
Listing 3-10 The SamplePCIAudioEngine interrupt filter and handler
bool SamplePCIAudioEngine::interruptFilter(OSObject *owner,
IOFilterInterruptEventSource *source)
SamplePCIAudioEngine *audioEngine = OSDynamicCast(SamplePCIAudioEngine,
if (audioEngine) {
return false;
void SamplePCIAudioEngine::filterInterrupt(int index)
Note that you can specify your own timestamp in place of the system's by calling
takeTimeStamp with an
AbsoluteTime parameter (see Technical Q&A QA1398 and the "Using Kernel Time Abstractions" section of Kernel Programming Guide for information on
AbsoluteTime). This alternative typically isn't necessary but may be used in cases where the looping isn't detectable until some time after the actual loop time. In that case, the delay can be subtracted from the current time to indicate when the loop occurred in the past.
Providing a Playback Frame Position
IOAudioEngine subclass must implement the
getCurrentSampleFrame to return the playback hardware's current frame to the caller. This value (as you can see in Figure 2-5) tells the caller where playback is occurring relative to the start of the buffer.
The erase-head process uses this value; it erases (zeroes out) frames in the sample and mix buffers up to, but not including, the sample frame returned by this method. Thus, although the sample counter value returned doesn't have to be exact, it should never be larger than the actual sample counter. If it is larger, audio data may be erased by the erase head before the hardware has a chance to play it.
Implementing Format and Rate Changes
If an audio driver supports multiple audio formats or sample rates, it must implement the
performFormatChange method to make these changes in the hardware when clients request them. The method has parameters for a new format and for a new sample rate; if either of these parameters is
NULL, the
IOAudioEngine subclass should change only the item that isn't
Although the SamplePCIAudioDriver driver deals with only one audio format, it is capable of two sample rates, 44.1 kilohertz and 48 kilohertz. Listing 3-11 illustrates how
performFormatChange is implemented to change a sample rate upon request.
Listing 3-11 Changing the sample rate
IOReturn SamplePCIAudioEngine::performFormatChange(IOAudioStream
*audioStream, const IOAudioStreamFormat *newFormat,
const IOAudioSampleRate *newSampleRate)
IOLog("SamplePCIAudioEngine[%p]::peformFormatChange(%p, %p, %p)\n", this,
audioStream, newFormat, newSampleRate);
if (newSampleRate) {
switch (newSampleRate->whole) {
case 44100:
IOLog("/t-> 44.1kHz selected\n");
// Add code to switch hardware to 44.1khz
case 48000:
IOLog("/t-> 48kHz selected\n");
// Add code to switch hardware to 48kHz
IOLog("/t Internal Error - unknown sample rate selected.\n");
return kIOReturnSuccess;
Clipping and Converting Samples
Arguably, the most important work that an audio device driver does is converting audio samples between the format expected by the hardware and the format expected by the clients of the hardware. In OS X, the default format of audio data in the kernel as well as in the Audio HAL and all of its clients is 32-bit floating point. However, audio hardware typically requires audio data to be in an integer format.
To perform these conversions, your audio driver must implement at least one of two methods, depending on the directions of the audio streams supported:
clipOutputSamplesif your driver has an output
convertInputSamplesif your driver has an input
In addition to performing clipping and conversion, these methods are also a good place to add device-specific input and output filtering code. For example, a particular model of USB speakers might sound better with a slight high frequency roll-off. (Note that if this is the only reason for writing a driver, you should generally use an
AppleUSBAudio plug-in instead, as described in the SampleUSBAudioPlugin example code.)
Because these methods execute floating-point code, you cannot include them in the same source file as the other
IOAudioEngine methods you implement. The compiler, by default, enables floating-point emulation to prevent floating-point instructions from being generated. To get around this, create a separate library that contains the floating-point code and compile and link this library into the resulting kernel module. The separate library for the SamplePCIAudioDriver project is
A common mistake that people make when developing an audio driver is either failing to write these methods or failing to include this additional library when linking the KEXT. When this occurs, you will execute the
clipOutputSamples and
convertInputSamples methods that are built into the base class. These methods are just stubs that return
kIOReturnUnsupported (
0xe00002c7, or
-536870201). If you see this error returned by one of these methods, you should make sure you are linking your KEXT together correctly.
clipOutputSamples method is passed six parameters:
A pointer to the start of the source (mix) buffer
A pointer to the start of the destination (sample) buffer
The index of the first sample frame in the buffers to clip and convert
The number of sample frames to clip and convert
A pointer to the current format (structure
IOAudioStreamFormat) of the audio stream
A pointer to the
IOAudioStreamobject this method is working on
Your implementation must first clip any floating-point samples in the mix buffer that fall outside the range –1.0 to 1.0 and then convert the floating-point value to the comparable value in the format expected by the hardware. Then copy that value to the corresponding positions in the sample buffer. Listing 3-12 illustrates how the SamplePCIAudioDriver implements the
clipOutputSamples method.
Listing 3-12 Clipping and converting output samples
IOReturn SamplePCIAudioEngine::clipOutputSamples(const void *mixBuf,
void *sampleBuf, UInt32 firstSampleFrame, UInt32 numSampleFrames,
const IOAudioStreamFormat *streamFormat, IOAudioStream *audioStream)
UInt32 sampleIndex, maxSampleIndex;
float *floatMixBuf;
SInt16 *outputBuf;
floatMixBuf = (float *)mixBuf;
outputBuf = (SInt16 *)sampleBuf;
maxSampleIndex = (firstSampleFrame + numSampleFrames) *
for (sampleIndex = (firstSampleFrame * streamFormat->fNumChannels);
sampleIndex < maxSampleIndex; sampleIndex++) {
float inSample;
inSample = floatMixBuf[sampleIndex];
const static float divisor = ( 1.0 / 32768 );
// Note: A softer clipping operation could be done here
if (inSample > (1.0 - divisor)) {
inSample = 1.0 - divisor;
} else if (inSample < -1.0) {
inSample = -1.0;
outputBuf[sampleIndex] = (SInt16) (inSample * 32768.0);
return kIOReturnSuccess;
Here are a few comments on this specific example:
It starts by casting the
void *buffers to
float *for the mix buffer and
SInt16 *for the sample buffer; in this project, the hardware uses signed 16-bit integers for its samples while the mix buffer is always
float *.
Next, it calculates the upper limit on the sample index for the upcoming clipping and converting loop.
The method loops through the mix and sample buffers and performs the clip and conversion operations on one sample at a time.
It fetches the floating-point sample from the mix buffer and clips it (if necessary) to a range between -1.0 and 1.0.
It scales and converts the floating-point value to the appropriate signed 16-bit integer sample and writes it to the corresponding location in the sample buffer.
The parameters passed into the
convertInputSamples method are almost the same as those for the
clipOutputSamples method. The only difference is that, instead of a pointer to the mix buffer, a pointer to a floating-point destination buffer is passed; this is the buffer that the Audio HAL uses. In your driver's implementation of this method, do the opposite of the
clipOutputSamples: convert from the hardware format to the system 32-bit floating point format. No clipping is necessary because your conversion process can control the bounds of the floating-point values.
Listing 3-13 shows how the SamplePCIAudioDriver project implements this method.
Listing 3-13 Converting input samples.
IOReturn SamplePCIAudioEngine::convertInputSamples(const void *sampleBuf,
void *destBuf, UInt32 firstSampleFrame, UInt32 numSampleFrames,
const IOAudioStreamFormat *streamFormat, IOAudioStream
UInt32 numSamplesLeft;
float *floatDestBuf;
SInt16 *inputBuf;
// Note: Source is offset by firstSampleFrame
inputBuf = &(((SInt16 *)sampleBuf)[firstSampleFrame *
// Note: Destination is not.
floatDestBuf = (float *)destBuf;
numSamplesLeft = numSampleFrames * streamFormat->fNumChannels;
const static float divisor = ( 1.0 / 32768 );
while (numSamplesLeft > 0) {
SInt16 inputSample;
inputSample = *inputBuf;
if (inputSample >= 0) {
*floatDestBuf = inputSample * divisor;
return kIOReturnSuccess;
The code in Listing 3-13 does the following things:
It starts by casting the destination buffer to a
float *.
It casts the sample buffer to a signed 16-bit integer and determines the starting point within this input buffer for conversion.
It calculates the number of actual samples to convert.
It loops through the samples, scaling each to within a range of –1.0 to 1.0 (thus converting it to a float) and storing it in the destination buffer at the proper location.
Debugging and Testing the Driver
Many of the techniques you would use in debugging and testing an audio driver are the same ones you'd use with other types of device drivers. After all, any I/O Kit driver has a structure and a behavior that are similar to any other I/O Kit driver, regardless of family.
For example, it's always a good idea when a driver is under development to make
IOLog calls at critical points in your code, such as before and after an I/O transfer. The
IOLog function writes a message to the console (accessible through the Console application) and to
/var/log/system.log. You can format the message string with variable data in the style of
Similarly, you can examine the I/O Registry with the I/O Registry Explorer application or the
ioreg command-line utility. The I/O Registry will show the position of your driver's objects in the driver stack, the client-provider relationships among them, and the attributes of those driver objects. In Figure 3-2, the I/O Registry Explorer shows part of the objects and their attributes in a USB audio device driver.
However, as Custom Debugging Information in the I/O Registry explains, your driver can insert information in the I/O Registry to assist the testing and debugging of your driver.
Tools for Testing Audio Drivers
The OS X Developer package provides two applications that are helpful when you're testing audio driver software. These items are not shipped as executables, but are instead included as example-code projects installed in
/Developer/Examples/CoreAudio/HAL. The two projects that are of interest are HALLab and MillionMonkeys. To obtain the executables, copy the project folders to your home directory (or any file-system location where you have write access) and build the projects.
The HALLab application helps you verify the controls and other attributes of a loaded audio driver. With it, you can play back sound files to any channel of a device, check whether muting and volume changes work for every channel, test input operation, enable soft play through, view the device object hierarchy, and do various other tests.
Figure 3-3 and Figure 3-4 show you what two of the HALLab windows look like.
The MillionMonkeys application was designed for performance profiling of your driver. In particular, it allows you to determine latency at various steps of audio processing while the system is under load. This can aid in tracking down performance-related issues with audio drivers. Figure 3-5 and Figure 3-6 show the two panes of the MillionMonkeys application window.
Custom Debugging Information in the I/O Registry
Another way you can test and debug your audio device driver is to write custom properties to the I/O Registry. For example, you may want to track hardware register state or internal driver state (if the driver has any). Whenever your driver makes a change to the hardware state, it could read the hardware register values and call
setProperty with the current value. Then, when testing the driver, run the I/O Registry Explorer application and note what the I/O Registry shows this value to be. This technique allows you to easily determine if the driver is putting the hardware in the correct state.
Copyright © 2001, 2009 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2009-03-04


text:
By Kevin Davies
February 1, 2013 | Whatever happened to NetApp? When Bio-IT World launched in 2002, NetApp was one of the big names in big data storage in the biotech and life sciences arena. But over the past decade, while brand names such as Isilon, EMC, BlueArc, Quantum, Panasas, DDN and many others have cashed in on the data deluge, NetApp kept at best a very low profile in the space. That is not to say that it was not in use or the technology does not have its supporters: on the contrary, many data center managers could point to trusted NetApp installations. NetApp storage is used at Genentech and several other major biotech firms headquartered in California and beyond. For some, however, it was less of a pain to integrate their old NetApp systems than replace them with new.
But there are strong signs that NetApp is turning things around. For example, the company has introduced flash-based storage solutions (such as FlashCache and SSD based architectures) to meet extreme performance requirements. These technologies have also been integrated with NetApp's Virtual Storage Tiering solution in order to help customers leverage flash to improve performance while still utilizing cost effective storage.Bio-IT World reached out to Dave Nesvisky, who joined NetApp in September 2010 as senior director of health care sales, for an update on NetApp's new technology and rekindled interest in the health care and life sciences sector. Bio-IT World: Dave, what's been going on at NetApp over the past few years as the life sciences has been swamped with data?
Dave Nesvisky: There's been significant change over the past couple of years and it continues to evolve. Health care's obviously a very broad area and includes a lot of different segments—you've got providers, research, regulatory, device manufacturers, health insurance, and distributors. There's almost no limit to what you could include in the health care segment.
When I joined NetApp a couple of years ago, NetApp had several thousand customers in health care. Customers were using our products for the kind of things that every NetApp customer uses our products for: Exchange and SharePoint and virtualized data centers, general IT, not anything specific to health care. But many of those clients, especially hospitals, clinics, providers, were very interested in solving bigger problems. They were enjoying the benefits that NetApp brings in terms of storage efficiency and total cost of ownership and operational efficiency. They said, 'you're solving that problem for us at a small level because the data you're managing represents a fraction of our overall data problem. Our bigger data storage expense is around diagnostic imaging, electronic medical records. Can you help us with that?'
A couple of years ago, NetApp was not fully prepared to help our customers in that market… We did not necessarily have the skill set around the applications that health care customers were running. My first step in joining the company was to start building a team—bring in people that had come from big application companies that serve the provider market—companies like McKesson and Siemens—and brought in a former health system CIO to help us better understand the market. We're now in a much better position to support our customers around their bigger data problems.
Last year, we pulled together the payers and providers and a select number of software vendors and created the health care vertical that I lead today. That includes all stripes of providers—for profit, not-for-profit, academic medical centers, all that falls under our domain. Pharma and biotech is largely run out of a dedicated district that's part of our Americas group, not part of the health care group today. As I said, different companies define health care differently. We've defined it around payers, providers, and some ISVs… It remains to be seen what's going to make the most sense for NetApp, whether the existing structure is good, or whether it should have an expanded definition. But that's our definition today.
What are the shifts in medicine, the impetus driving this growth in volume? And how is NetApp meeting that demand?
Nesvisky: One element is in the basic research itself. They're mapping more and more genomes and it's obviously driving much greater data requirements within that industry itself. But we're seeing effects on the rest of health care… Today medicine is delivered reactively and episodically. You get sick. You go to the doctor. They treat you. That's a very expensive way to treat people.
The push under the Affordable Care Act and ACOs (Accountable Care Organizations) is more in preventive medicine—the promotion of wellness rather than treating sickness. If you've got people with asthma or diabetes or high blood pressure, it's really about proactively getting these people into programs to maintain their wellness so that they don't get into the health care system any deeper than they're already in.
Where the future and the alignment is with bio-IT is predictive medicine—the opportunity to look at somebody's genetic makeup and be able to predict with some level of accuracy you have the markers that indicate that in 20 years you're likely to get these things. What can we do now? And then, in line with the pharma companies that are starting to be able to create custom-made pharmaceuticals for individuals, to treat them more effectively and target their disease more accurately. That's where the convergence is…
What is NetApp doing in the space? We acquired a company called Engenio from LSI a year or so ago to create a cost-effective and dense storage platform ideal for high throughput workloads, for object content repositories, for unstructured data, and for other use cases where you've got either high volumes or very large databases or very large object containers.
Actually, that was a part of the portfolio that we didn't previously have. We had a broad product portfolio that could essentially do that function, but this is a platform that took it to the next level. It had very high throughput and very dense storage—obviously when you talk about very large data sets there are physical constraints to the data center before you have to expand it, so you want to be able to pack as much storage into the smallest possible space. We've been very successful with that E-Series product. It's a product that we work into the space as well as it's a very large OEM product for us.
What was it about that technology that particularly appealed to NetApp?
Nesvisky: The footprint density. It's a very dense storage platform and it had very high throughput for use cases like full motion video where typical SAN or NAS was not built to handle that effectively. It's finding its way into a lot of different application areas. From the health care perspective, the two most interesting things are big data analytics and also very large object content repositories in the multiple petabyte range.
In terms of the actual data that you're supplying solutions for, what are you seeing?
Nesvisky: There may be a future application telemedicine with video and image data. But that's a little bit of a future state for us, not top-of-mind right now. Another emerging area is digital pathology. Today, the typical imaging modalities that you see—X-ray, CT, PET, MRI—as those modalities become more powerful and the images are more refined, they're requiring more storage themselves. 3-D mammography was approved by the FDA last year. It uses almost ten times more storage per image than 2-D. The typical modalities are taking up a tremendous amount of storage. In digital pathology, some of these things can run into a terabyte per study, which is an incredible amount of storage.
But we also see, on the genomics side, it's taking up a lot of space and it requires high bandwidth. We have clients who moved to NetApp because they're getting a lot of efficiency out of a capability in our FAS product line called flexible volumes, or FlexVol. That allows a lot of researchers to be allocated a lot of storage as far, say several terabytes. The administrator is really only carving up a smaller amount, but it gives the appearance to the user that they have all they need.
In a typical environment without NetApp, you would have to physically provision that amount of storage to each user. If ten researchers each needs 10 terabytes, you would physically have to provision 100 terabytes to those people, even though those guys might only be using one or two terabytes at any given time. With flexible volumes, you can tell them that they have access to ten but you know they're not going to use that. You're able to physically provision a lot less, which saves a lot on the storage.
The other part that people are finding with NetApp is it's just easier to manage. We consistently find that our administrators can manage a lot more volumes of data, a lot larger arrays with a lot fewer people.
Are there a couple of installations in the last 12 months in your health care arena that you can point to as good examples?
Nesvisky: One that comes to mind is the Duke Institute for Genomic Sciences, which is a NetApp FAS customer. They were getting more and more grants and research projects and it was stressing their systems because they had more and more researchers on it. The way they were adding people and trying to manage things, it was just runaway data growth and they needed a new platform that was more efficient, that could work into their environment.
The two things they found with NetApp is NetApp works very well in a virtualized environment. And the way of doing it before is you'd get a grant and you'd stand up a new system so you've got tons and tons of really underutilized servers and storage. And this is not a unique thing to genomics… They made an architecture decision to move to NetApp in a heavily virtualized environment and it gave them several tremendous advantages. It allowed them to reduce the footprint on the floor, which enabled them to extend the life of how long they could stay in their data center—if you can compress into a smaller footprint, that means your data center's got more room to grow over time. That was really good. With fewer physical devices running, you can run it with a much more efficient staff… They were able to continue with the current staff and handle bigger workloads efficiently. And they were getting tremendous throughput from the system. Some really good benefits from making a move to NetApp.
What's your competitive advantage these days?
Nesvisky: There are a couple of areas. Clearly there are very successful top tier players in the space, but the features of NetApp software, the flexible volume, the ability to provision virtually a lot more storage to the users than they had to physically provision, was very efficient to them, and the ease of management compared to other solutions.
Every other vendor tends to offer a portfolio of storage solutions—a particular solution for backup, another for production. And they have families of systems so when you outgrow one of them you have to forklift upgrade to the next bigger series of equipment and it has a different operating system. And so you've got to do a data migration, you've got to literally physically remove the system that was in there, put in the new system, migrate the data, retrain the staff, all that. And that comes into account.
When people assess the long-term impact of their storage decision, NetApp runs one operating system. We have an 'agile data infrastructure.' This is important: our agile data infrastructure means that from a single operating environment, Data ONTAP, we can offer people non-disruptive operation, which means that literally any upgrade of systems, software, adding equipment, retiring disk out of warranty or out of service or for whatever reason, anything you need to do in the maintenance of an array is done non-disruptively. You don't have to schedule downtime, which is a huge advantage. Nobody wants to schedule downtime!
We have non-disruptive operation. We have intelligence which means that we can put—we have different types, different performance profiles of disks, so we can put the data where it makes the most sense for the performance you need… In the agile data infrastructure you can build into the multiple tens of petabytes in single volumes. If you have to store large volumes of genomic data, you're really never going to run out of steam.
The agile data infrastructure is something unique that no other company can offer. They all offer a family of products that require you to literally retire one, forklift it out, migrate the data. It's an expensive, complex process that's time consuming and costly. We eliminate that. And when people recognize what NetApp is doing, it's absolutely revolutionary. You can literally build a storage architecture now with us with a single operating environment that goes from the smallest array, whatever you want to start with is just some very small system, to scale literally infinitely and without ever having to forklift anything out. That's a big advantage.
What other innovative and exciting developments do you foresee?
Nesvisky: Wow, a lot of things! For me, on the health care part of the business, the future is really around analytics, whether it's to pave the way for predictive medicine or manage populations of people. I think the Hadoop/E-Series combination is going to be very powerful.
There are a lot of companies in the space taking a lot of interest in how to go about doing analytics for health care in various areas. Some of them are taking very broad approaches, some narrow approaches. Being able to do analytics in hospitals around the outbreak of, say, sepsis; they want to track that. Sepsis is very expensive to a hospital… Analytics around predicting is somebody likely to get that based on or are they showing the indications, can we treat it early before it fully evolves? That's a big one for us.
We're seeing more private clouds, organizations operating clouds on behalf of the rest of their organization or other organizations that they're affiliated with. We are also working with some public cloud providers also that have some great solutions out there.
Aren't there fundamental issues with putting patient data in the public cloud?
Nesvisky: Once you explain how the system is architected, it's really not an issue. Frankly, a professionally managed, well-architected cloud data center, the patient information is much more secure than paper files laying around in a hospital. Once people understand how the data are encrypted at rest, in motion, how the physical environment is secured, that really becomes a non-issue.
What challenges do you face in finding new customers?
Nesvisky: As you might imagine, health care is a fairly conservative business in terms of their decisions because they're entrusted with protecting patients' lives. And so, our biggest challenge is just the status quo; hey, we've always bought from these guys. Why would we change? We just need to be in front of people.
One of my favorite quotes is from Woody Allen: "Eighty percent of success is showing up." When we get our opportunity to present, people get very comfortable with us. We win our share of business. I think we have an absolutely superior solution for our industry… this vertical is a very new venture for NetApp. We just have to tell our story and effectively message and let them know what we have. Our biggest challenge is just really inertia.
250 First Avenue, Suite 300
Needham, MA 02494
E: email@example.com
Life Science Portals
Biological Therapeutic Products
Biomarkers & Diagnostics
Biopharma Strategy
Bioprocess & Manufacturing
Clinical Trials &
Translational Medicine
Drug & Device Safety
Drug Discovery & Development
Drug Targets
IT & Informatics
Technology & Tools For
Life Science
Therapeutic Indications
CHI Divisions
Reports & Market Research
Barnett Educational Services
News & Advertising
Knowledge Foundation
Professional Services
Corporate Information
Cambridge Innovation Institute
Executive Team
Mailing List
Request Information
Privacy Policy


text:
Learn how MacUpdate Desktop can install apps on MacUpdate with the simple click of the icon. Plus, keep all your apps updated.
My IP Hide is an lightning fast proxy service to unblock websites and hide your real IP by encrypted traffic. It is stable, fast and easy to use. With our enhanced proxy technology, My IP Hide is much faster than other hide-IP technology such as VPN, SSH proxy and web proxy. Meanwhile it is more secure than ordinary proxy because of its encrypted traffic.
With My IP Hide, you can visit any site (such as Facebook, Twitter, Youtube and BBC iPlayer) anytime and anywhere. Your account can be used on the Windows, Mac and Android version of My IP Hide.
The quoted price is the cost of one month's service. Additional plans can be
What's New
Note: Now requires OS X 10.6 or later
- Now the users can mark IP addresses as favorite
- Support reloading IP addresses in the IP List dialog
- Improve the speed of changing IP address on Mac
- Fix that sometimes the proxy setting is not correct on Mac
- Fix the link controls in the program for Mac
- OS X 10.6 or later
- Requires a Hide IP subscription


text:
I downloaded and installed GNV 1.6-2 from sourceforge but I'm not able
to une mnt to create a mount point (neither from DCL nor from bash). I
run OVMS 8.3 on alpha, and executed GNV$STARTUP
HP site ([url]http://h71000.www7.hp.com/opensource/gnvreadme_first.html[/url])
talks about GNV 2.1 but sourceforge only have PCSI for 1.6
must I install 2.1 to use mnt ? if so, where can I get this 2.1
version ? if not, where am I wrong in my mnt usage atempt ?


text:
Photo courtesy of foodandnutrition.org
Plantains are oftentimes a forgotten fruit. As they can be green, yellow or black and quite hard, customers may assume they're under-ripe or overripe and pass them by. Customers may also not understand how to cook them, knowing perhaps of only the fried methods. With a little in-store education, you can introduce your customers to an under-appreciated fruit and sell larger quantities of plantains. Continue reading


text:
- 27disability,
- 19advocacy,
- 19politics,
- 18alaska,
- 15federal,
- 14government,
- 10regulations,
- 9news,
- 8ngo,
- 8Healthcare
"The legislative process on the Senate floor is governed by a set of standing rules, a body of precedents created by rulings of presiding officers or by votes of the Senate, a variety of established and customary practices, and ad hoc arrangements the Senate makes to meet specific parliamentary and political circumstances. A knowledge of the Senate's formal rules is not sufficient to understand Senate procedure, and Senate practices cannot be understood without knowing the rules to which the practices relate."
2015 US Senate contact list
"Research bill histories and subjects by entering a bill number (hb1, sjr5) or subject (oil exploration) in the search box and clicking the "Display" button.
Receive email updates on the status of specified bills.
Find information on bills, committee or floor schedules, minutes or journals, and legislative members.
Listen to committee hearings or floor sessions (via Gavel to Gavel).
Contact Legislators. "
"We must pass the disabilities treaty to reaffirm our global leadership in setting an example and promoting principles and rights for people everywhere. Our exceptionalism requires us to be leaders. Being a true leader necessarily involves supporting your own example worldwide — that's a no-brainer.
We know that equality of individual ability has never existed and never will, but we do insist that equality of opportunity still must be sought." -- Franklin D. Roosevelt
to pursue a Master's Degree in Public Advocacy and Activism at the National Universi
Whether it's a day trip or a long excursion, looking to explore or unwind, traveling in a wheelchair requires advanced planning. wheelchairtraveling.com exists to give YOU the tools to plan your adventure accordingly. It is an international resource built by other wheelchair travelers on accessible destinations and activities. Take the fear out of the unknown.
Top Tags
Diigo is about better ways to research, share and collaborate on information. Learn more »Join Diigo


text:
[http://youtu.be/Gr-0ulGgcHc] (YouTube link)John C... ...the opportunity to watch -and record- a family of beavers repairing their lodge right in front of him. They...http://www.neatorama.com/2014/04/15/The-Best-beaver-Experience-of-My-Life/
Betty the Beaver lives at the OC Zoo, where she got all spruced up for the holidays along with many of her fellow residents. You can see a few more, along with ample other adorable critters over at Cute Overload.Link...http://www.neatorama.com/pet/2012/12/25/Better-the-Beaver-Makes-a-Great-Reindeer/
In 1948, the Idaho Fish and Game Department hatche... ...and Game Department hatched a scheme to relocate beavers by airdropping them into "generally inacces...http://www.neatorama.com/2012/11/27/The-Great-Beaver-Drop/
Instructables has a detailed set of how to's to let you convert your computer case into a taxidermy beaver. Nothing says quality technology like dead animals. It's pretty easy, just look at step one: Purchase a beaver...http://www.neatorama.com/2009/07/19/turn-your-computer-into-a-beaver/
After watching a movie about beavers a few weeks ago, I became highly interested by th... ...ntinually playing the sound of running water. The beavers built up their dams by the speaker until it effec... ...ad. Source Those darn dams We all know beavers love their d...http://www.neatorama.com/2009/06/18/interesting-facts-about-beavers/
People aren't the only ones who build things. In... ...fact, some animals are better at it than we are! Beavers , moles, birds, many insects, and spiders are natu...http://www.neatorama.com/2009/01/06/natures-architects/


text:
Investigators waiting on forensics in fatal shooting in The Village
Amber Dawn Stokke, 22, slain
Homicide investigators are waiting on forensics they say could help solve the shooting death of a 22-year-old woman.
Amber Dawn Stokke, of The Village, died after she was shot while driving her car near her home in the 10300 block of Sunnymeade Place. Witnesses reported seeing two men running from the scene, but so far, no one has been arrested.
On Tuesday, police told KOCO Eyewitness News 5 that this is an "ongoing investigation" and there's still some work that needs to be done before an arrest is made.
"Still trying to track down any leads we can find," said Deputy Chief Steve Jagosh. "We interviewed witnesses and now we are waiting for some forensics to be processed at this point."
Copyright 2013 by KOCO.com All rights reserved. This material may not be published, broadcast, rewritten or redistributed.


text:
Keywords, Relevancy, Authority learn more
The SEO business is full of broken promises. Search engines are ferociously guarded about their algorithms. No-one knows exactly what they are and even if they did, they change all the time.
So any search engine optimization company that tells you they can guarantee you top spot all the time is not exactly being truthful. We won't make claims we can't meet.
We give you strategies to get you up the search engines. The same ones as we use ourselves for our chosen search terms and we test them to check that they are effective.
We also give you great advice about how to get involved with social media. Facebook,Twitter and Linkedin are all ways to increase your digital footprint and get yourself known. Transparent SEO that works.
ProSEO is a service of Too Pixel Sàrl -
Quote/Information+41 22 566 70 88


text:
Skip to comments.Texas high school to open $60M football stadium
Posted on 08/30/2012 1:56:51 PM PDT by C19fan
Call it the palace of high school football: A gleaming $60 million facility with seats for 18,000 roaring fans, a 38-foot-wide high-definition video screen, corporate sponsors and a towering upper deck. Welcome to the new home of Eagles Football. As school districts across the country struggle to retain teachers, replace outdated textbooks and keep class sizes from ballooning, the wealthy, burgeoning Dallas suburb of Allen is preparing to christen its new stadium with a sold-out Friday night matchup against defending state champions Southlake Carroll.
(Excerpt) Read more at sportsillustrated.cnn.com ...
That's a separate point and also valid.
I don't know what the TX State Constitution says on such matters.
But I do know that the US Constitution doesn't have anything in there about subsidizing High School football stadiums.
Seems like the GB packers trained in the Southlake Carroll HS stadium, and thought that it was a better facility than what they trained in.
I find it amusing that an "ostensible" conservative would have any problem with local folks voting to fund whatever they want. I can assure you ten years from now the good local Texans are much more likely to pass another bond issue to improve the facility than cry about "excesive" funding Texans are like that.
I think you are a bit bored with nothing to watch on the tube tonight as I cant believe any conservative would really care how local taxpayers vote to spend their own money...a lib on the other hand would have plenty of problems with it...
I'll remember that, in case you and I ever find ourselves discussing "stimulus" packages. /s
As Louis Armstrong once said when someone asked him to describe Jazz "If you have to ask, you'll never understand the answer."
Of course, we built a state-of-the-art breweries for both fine spirits and beer... before we turned the first spade of dirt on Eagle Stadium.
Now, that is having your priorities in order... isn't it?
Sure is, Bendy... sure is!
When I look down from space, Bend, I can see both... but then again, I may be seeing double as Happy Hour up here is an all day affair--
What, Bender... no state-of-the-art shooting range?
Of course, they have a shooting and skeet range, Clint... Bendy had both built under the stadium parking lot.
Thanks, Sarah, now... you want another beer?
Bendy, here in Spain they combine a winery, Nunnary and bull fighting ring... that you can get do just about anything there just as long as it is done in black & white.
I was going to film my next black & white master piece, Nuns there, Michael Caine in Spain, but Google posted me... in color. That destroyed all my creditability... as an authentic 'Auteur' film director!
Here to that new high school library... Bend!
Yeah, Dean, but before we build that it we need to build a fine cigar factory... complete with a bevy 18-year old virgins to roll the Churchills and Gran Coronas on their well toned, tanned thighs.
"The school district decided to build it in a down economy, knowing full well it will never recoup the costs"
That's fine if that's what the local taxpayers want to take out of their own personal funds. Anyone is free to invest their own personal money into a losing investment if they so wish. They voted on it at the LOCAL level. That's SMALL GOVERNMENT in action.
But I would bet that's not the whole story and other people are subsidizing this who didn't get a chance to vote on it. I'll keep digging.
I wouldn't worry too much about it . . . no one's minds will be changed (nor do I care if they are not). I simply wanted to see if there are any fiscal conservatives among Texas HS football fans.
This was a LOCAL decision, affecting the LOCAL voters and their school. As far as I'm concerned, LOCAL elections take care of those who WASTE tax dollars from LOCAL people....they're not spending the tax dollars of people who are not involved/don't live there.
I have been to MANY Southern Football events, and those people LIVE for it.
I'm not impressed with wimpy supposed-sports like soccer, or other unpopular festivities masquerading as "sports".
I have been to MANY Southern Football events, and those people LIVE for it.
Complete non-sequitur.
I'm not impressed with wimpy supposed-sports like soccer, or other unpopular festivities masquerading as "sports".
Even worse of one.
Here we go:
The city [of Allen] is applying for a federal grant to develop transit strategies to get people from elsewhere to their retail and hotel jobs. (other stuff in the requests for Federal grants)
You can bet if the local people voted to tax themselves to build bike trails and bike lanes or a bus system, the tea party small government types would be apoplectic about it. Nevermind that government on the city or county level is just about as "small government" as you can get.
We played Lawton Eisenhower, Altus, and Duncan before entering into the district with Brownwood, Stephenville, Iowa Park, and Vernon. You cannot tell me the Okie boys don't play just as hard. Our coach had the longest winning streak in Oklahoma HS football at Lindsay back in the early 60's.
The taxpayers approved it.
What is an ISD?
I wouldn't. I was one of them. Up in northern Oklahoma in the fifties. Class C it was at the time.
And, during an away game, you could've laid an artillery barrage on downtown Medford...and hit nobody.
I imagine it was much the same at Burkburnett.
ISD=Independent School District.
Now about those free tickets Bend...
"Whats wrong with the people in an area spending money on football, if its theirs?"
Nothing at all. If anything they provide a public service - folks who don't want their local tax dollars flushed down the toilet will stay far away.
Put on some clothes... big!
And the ticket are in the mail... along with some of my Jewish friends and Obama's kept promises to anyone besides unions or folks who gave his campaign big money--
Independent School District
Even at half the price.
Well, no. Being against federal matching grants would fit with the tea party small government mantra.
But you can bet if the federal matching funds are for roads or other things they want, there will be not a wimper about "small government".
That's what is happening in Allen too. I posted above about Federal grants they are applying for.
Sort of. The election was not well publisized. It was held during at an off-cycle date, knowing full well turn out would be low. Iirc turn out was approximately 2000 voters, in other words low single digits.
The skrewl board new exactly what they were doing. Those who knew of the election for the most part knew exactly they were demanding the rest of the tax subsidize their bread and circuses.
Nope, I have lived outside Texas in the south, and in Texas. There is a difference. There is a reason Friday Night Lights was based here.
Trust me... I'm still shaking my head, too. I live in Allen and pay taxes here. When I drive by that thing, I wonder how in the world this could have happened.
Kind of like the hopey/changy thing, I guess.
I live in Texas and I think this is insane
The money belongs to the taxpayers, the school district spent it, it doesn't belong to government
How long will it take for them to make $60 MILLION with a high school stadium?
Go SU!
Sorry, as a Syracuse fan, alumni, married to a lacrosse player I must say this every time Lacrosse is mentioned!
Just so you know, the City of Allen is NOT the same thing as Allen ISD. Allen ISD has it's own board of directors and does NOT take orders from the City Council or the Mayor or City Manager (depending on the type of government which exists).
So, the City of Allen requesting grants has NOTHING to do with Allen ISD.
Thanks for the background. My only thought is that it is way too hot to wear full FB gear in Texas, but I'm a northerner so what do I know.
"Its seen as a man-thing; as opposed to limp-wristed soccer up North, where non-athletes can compete in a game (not really a sport for athletes or men)."
We have hockey up here; it makes football look like a bunch of men using any pretense to repeatedly hug each other...
I lived in Allen, Texas around 17 years ago when my son was starting Kindergarten. They said they didn't have the money for a Kindergarten teacher, but had the money to lay astroturf in the stadium and hire 18 more coaches. When it hit the Dallas Morning News and the local television news, they finally came up with the money for my son to have a teacher. Allen is all about football.
I'd also like to add that my eldest son played on that astroturf for the Eagles that year. When we registered him, his jaw fell to the floor when he was asked by the pretty lady doing his schedule, "Was you in health class?" He took all the honors courses they had, none of which was near the level of his regular courses in another district. My son never had to crack a book that year and claimed education in Allen to be a joke. Homeschooling my younger children became the only answer.
That stadium is larger than the one at my college alma mater and we've got an FCS (Division I-AA) championship under our belts. I know high school football is the second-biggest religious denomination in Texas behind Southern Baptist (and I'm not so sure it's in second anymore) but a $60 million stadium seems insane, especially if it's being funded with other school districts' property tax money.
Plano already has a stadium, behind Clark High School:
I don't know if it would cost 60 million, but it appears to be adequate.
Yep, state and county officials believe they have a "right" to confiscate taxpayer dollars to build multi-million dollar facilities such as this.
Monumental waste of dollars that could go to help our kids compete in math and sciences.
Now, before folks fire back, "it was voter approved bonds", typically local elections such as this realize very low voter turnout and more times than not are heavily weighted with folks that have skin in the game such as teachers, coaches, developers, county supervisors, administrators.
60 million for a football stadium? Should not have happened in my opinion.
Football is the engine that drives the train for so many extracurricular activities: cheerleading, drill team, band (Allen's band is 600+ strong).
I no longer have a problem with wealthier districts acting in their own interest. Allen ISD likely sends 40% (or more) of their local property tax dollars to poorer districts throughout Texas under the Robin Hood plan. The stadium is being funded by local taxpayers.
I've had kids in the Coppell ISD for over 15 years. Half of my property taxes are sent elsewhere. In addition to that, I've shelled out hundreds for "activity fees" for my children to participate in an extracurricular activity. These activities are expensive to run, ask any drill team or band parent.
I don't expect outsiders to understand. Just stay out of our bidness. BTW, Allen ISD is a highly rated school district academically, so they're doing something right.
typically local elections such as this realize very low voter turnout and more times than not are heavily weighted with folks that have skin in the game such as teachers, coaches, developers, county supervisors, administrators.
It seems to me that the voters are searching for an excuse. They are the ones that didn't vote. Perhaps if they took a vested interest in voting in EVERY election and not just every four years, they could have had a say in the matter. Using the excuse that the teachers, coaches etc were the only ones to vote seems very lame.
Agree....Hockey is a MAN'S sport.
Dayton High School, TX has 1,400 students and this stadium that seats 8,500:
No Pro Lacrosse League in the USA? Nobody cares? Well a small niche do.
The indoor game http://www.nll.com/
The outdoor game http://www.majorleaguelacrosse.com/
ALMOST nobody cares....a gay following exists, but real men don't play Lacrosse, or soccer, for that matter.
Collin County residents have the highest medium income in the state and Collin County is one of the 25 wealthiest in the country.
Approximately 7,500 reserved, chair-back seats will be sold on a season basis each year. Officials also are reserving 5,000 seats for fans of the visiting team, 4,000 for Allen students and 1,000 for the school's band. That leaves a mere 500 for general admission each week.
Click for a slie show of the stadium;
Disclaimer: Opinions posted on Free Republic are those of the individual posters and do not necessarily represent the opinion of Free Republic or its management. All materials posted herein are protected by copyright law and the exemption for fair use of copyrighted works.


text:
Now that much of the new 2011 kiteboarding gear is on the market, it's time to think about upgrading your old busted gear to something new and shiny.Read More »
Home / Tag Archives: used
Tag Archives: used
Save the World: Recycle Your Old Kites
Will that be paper or plastic? When asked this on your next trip to the grocery store, you might have a unique answer: "Neither. I brought my kite."Read More »


text:
After months of silence on the issue, Gov. Christie said Thursday that he was moving forward on regulations to install sports betting in Atlantic City casinos and at New Jersey's racetracks.
The addition of sports gambling would "further enhance the experience of people in Atlantic City," the Republican governor told a Boardwalk crowd during a visit to tout Shore tourism. "I know it's something people have been waiting for for a long time."
A ballot referendum to change New Jersey's constitution to allow wagering on certain NFL and collegiate sports at the state's casinos and racetracks passed 2:1 in November. The state Legislature moved swiftly to pass a measure to legalize the activity and Christie signed it into law in January, but the governor had taken little to no action since. This prompted criticism from some leading Democrats, including state Sen. Ray Lesniak (D., Union) and people involved in the gaming industry to speculate that presidential politics might be involved. The New Jersey governor was a no-show in Atlantic City last week for a gaming industry conference in which he was the scheduled keynote speaker.


text:
DETROIT – Most NFL players will tell you they're against the idea of extending the regular season from 16 games to 18 games, as has been discussed by NFL owners.
But Detroit Lions offensive linemen Jeff Backus and Dominic Raiola might be the exceptions – at least for the 2010-11 season. Winning their last four games, leaves both wishing there were still games left on the schedule.
Backus and Raiola have seen more than their fair share of misery – and taken, oh, a lump or two – in the 10 years since the Lions selected them in the 2001 NFL draft. Before this season, Detroit was 33-110. They haven't experienced so much as a two-game winning streak to end a season, let alone four.
"The last four weeks have been great," Raiola said after Sunday's 20-13 win over Minnesota. "It was a different feeling in this locker room today. It was exciting, but it was expected to do this. We kind of learned how to win. I mean, the last time I won four games (in a row), I was in college.
"We're heading in the right direction, and I think me saying this is a different team, a different feeling in the locker room, I think it's finally happening."
Raiola certainly hasn't forgotten the team's history while he's been in Detroit. The last time the Lions closed out a season with back-to-back wins was in 1997, when they won five of their last six before falling to Tampa Bay, 20-10, in the playoffs. The last time they won four straight games was in 1999, and the last time they closed out a season with four straight wins was in 1995, when they won seven straight to finish 10-6 and make the playoffs, where they got trounced, 58-37, by the Philadelphia Eagles.
Others may think a 6-10 season is nothing to be proud of, but Backus likes how this team responded to the adversity it faced all season. Even when asked about how he felt about becoming the 10th offensive lineman since 1970 to start 160 consecutive games, he was focused on the team's accomplishments.
"I'm really more proud of (the four consecutive wins) than anything," Backus said. "Just with how the first half of the season – really the first three-quarters of the season – to be able to persevere through it and get it turned around and finish the season strong. It's a pretty awesome thing because I've been around long enough to see (just) about everything. I've never seen a (Lions) team finish this strong as this team has after struggling early. It's something that I'm extremely proud of."
All of the momentum that the Lions built at the end of the season makes these two veteran lineman wish there were more games left to the season – something they probably couldn't say in years past.
"It's a shame the season's ending because we're playing our best football right now," Backus admitted. "It's a little sad to see the season end right now. At the same time, it's all positive feeling going forward."
Raiola felt the same way, though he had to correct himself from sounding too negative.
"It's kind of depressing that it has to end like this," he said, "but it has to end, I guess.
"Not 'end like this' – this is a great way to end it. But it is going to be fun taking all this momentum into the offseason, and expectations are going to be high, as expected."
Finally, though, those high expectations will be based on the Lions' tangible, on-field performance rather than just hope and potential.


text:
Prince of Wales hails Green Ambassadors
5 July 2012
His Royal Highness The Prince of Wales has greeted young champions of the environment today at the first ever WWF Green Ambassador Summit at Highgrove House in Gloucestershire.
Over 60 young environmental ambassadors from nine UK primary schools are attending the two-day event along with teachers, WWF representatives and special guests such as Tim and Thom from Channel 4's television series 'Three Hungry Boys'.
Today the children met His Royal Highness at Highgrove and presented the plaster pandas they've been decorating. Incorporating a range of techniques - from painting and collage to paper 'quilling' - their designs were chosen to represent the future the children would like to see.
Tomorrow the Green Ambassadors will take part in a series of creative workshops, including a food-growing session and art and writing workshops, aimed at encouraging visions for a sustainable future.
The schools will also be given a special tour of the Highgrove gardens and experience the Prince of Wales' own personal vision of a sustainable environment there.
Prince Charles has long been a champion of environmental issues, and last year announced his presidency of WWF-UK.
WWF's chief executive David Nussbaum says: "We are grateful to His Royal Highness The Prince of Wales for offering to host today's event. His interest in education and ambition to help young people realise their full potential is matched by the commitment he has shown to the environment over many years.
"We are delighted he can be a part of this first Green Ambassadors Summit."
The Prince of Wales is hosting children from schools all over the UK - these 'Champion Schools' were specially chosen by us for their commitment to environmental action and willingness to help other schools get involved.
The schools chosen were: All Saints CofE Primary School, Bishop's Stortford; Alphington Primary School, Exeter; Alwoodley Primary School, Leeds; Brynhyfryd Junior School, Swansea; Edwalton Primary School, Nottingham; St Annes CE Primary School, Bishop Auckland; St Bartholomews Primary School, Haslemere; St Marys RC Primary School, Edinburgh; and West Wittering Parochial Primary School, Chichester.
Green Ambassadors, WWF, BT and HRH
WWF has long recognised the importance of young people and the Green Ambassador scheme is specifically designed to empower, engage and enable young people to take a leadership role while developing skills in teamwork and communication.
The involvement of HRH The Prince of Wales has been an enormous boost to those involved directly with the programme – the young Green Ambassadors, teachers and schools.
We're also very grateful to BT for supporting the Green Ambassadors Scheme, both financially and through their educational volunteers who link up with schools to provide additional on-the-ground support.
Update: watch these two short video of the Green Ambassadors meeting HRH The Prince of Wales at Highgrove...