Richard has been on staff at Gateway since 2002. He is a graduate of Sam Houston High School and Mid-America Christian University. Richard is married to Tarrah and they have two children. Richard has a passion for child and student spiritual development and currently serves as the Louisiana Church of God Youth Director.
Lucas has been part of the Gateway staff since 2017. He is a graduate of McNeese State University. Lucas is married to Elizabeth and they have two children. He is passionate about the powerful role music plays in the church. He enjoys building strong teams and helping others grow in their passions and talents.
Gabby has a heart for children and works to fill them with the knowledge of God. She works at Kid's Place during the week and prepares the monthly curriculum and activities for both First Look and 252 Basics, our pre-k and elementary curriculum.


Students and staff embraced their cultural diversity during the "It's a Small World" event orchestrated by the world language department on Feb. 7. The event celebrated the various ethnicities that the student body represents as well as highlighted the different foreign languages the school offers.
"Today I'm planning on coming to "It's A Small World" event. I'm going to be at the Chinese booth and I'm going to introduce Chinese culture to the students," said sophomore Jennifer Fu.
Students brought in samples of traditional foods from their home country to share during both lunches. They also showcased their cultural customs during the assembly in the blue dungeon. Students and professionals performed live music, slam poetry, dances, and much more.
"I'm doing the traditional Cai Dai Wu Dao for China. It's a ribbon dance. [The ribbon] is made out of silk," said freshman Margaret Miao.
Each foreign language set up a booth in the Blue Dungeon to engage students. The new booth for the language portuguese promoted the IB class that the school will offer next year.
"We are going to show something about the Brazilian culture, the food, the places in Brazil, and about Carnival. We have Portuguese IB which is a very important thing that's going to begin next year so it's the time for promoting the language," said Portuguese representative Julianna Castor Nevez.


text:
Tel: 0344 251 0070 - Email: [email protected]
A + A -
Personal Law
Personal injury and accident claims
Holiday accident
Injuries caused by animals
Injuries caused by faulty goods
Consumer contract: small, fast and multi-track claims
Contract & construction
Property and neighbour disputes
Clinical and medical negligence
Clinical and medical negligence: types of claim
Guide to timescales
Conveyancing law: tips for buying a property
Employment law advice for employees
Settlement agreements: a guide
Employment Law locations
Employment Law: Bristol
Employment Law: Leeds
Care Proceedings and adoption
Prenuptial, post-nuptial and cohabitation agreements
Advoca
Fatal road traffic accident claims
Fatal accident claims: useful links
Head and spinal injury claims
Head and spinal injury claims: legal costs
Choosing the right head and spinal injury solicitor
Head and spinal injury: FAQs
What we've achieved for clients
Head and spinal injury: useful links
Motor offences
Private client services: wills and probate
What we've achieved for head and spine injured clients
In the past, we have obtained the following settlements for clients:
M v Aird [2014]
£5 million award for a cyclist hit by a car who sustained a serious head injury and was left in a minimally conscious state. Recovered a lump sum of £2 million pounds and periodical payments of £250,000 pa while in a specialist unit, rising to £330,000 pa once he was in his own property.
RRR v MIB [2014]
£5.049 million for a pedestrian hit by a car and sustained a serious head injury. Received a lump sum award of £1.6 million and staged periodical payments for the rest of his life. Award reduced for contributory negligence.
C v Hall [2014]
£1.6 million lump sum award for a woman who sustained a serious head injury in a road traffic accident when her car was hit from behind. Claimant was only able to return to work on a part-time basis in a reduced capacity.
W v J A LEE WINDOWS [2014]
£1.45 million lump sum award for a man who sustained a serious head injury and subsequent loss of sight following a road traffic accident. Causation strongly disputed.
W v Terry [2013]
£475,000.00 for a cyclist hit by a car who sustained a head injury, orthopaedic injuries and ophthalmic injuries.
B v Toby [2012]
£1.78 million for a woman who sustained a serious head injury in a road traffic accident. Lump sum award of £802,000 plus future periodical payments of £32,500 per annum.
B v Simon [2012]
£1.54 million for a 71-year-old claimant who sustained a serious spinal cord injury in a road traffic accident which left her paralysed.
P v Owen and T Alun Jones Ltd [2012]
The claimant sustained a serious head injury in a road traffic accident. Liability was strongly disputed and there was a significant reduction for contributory negligence. Settled for £585,000 (seven figure claim on full liability basis).
E v James [2011]
70-year-old man sustained a serious head injury in a head-on collision. Settled for £500,000 on a full-liability basis. Liability agreed on a 50/50 basis.
W v MIB [2010]
£1.38 million for a man who sustained a serious head injury when hit by an uninsured driver and was unable to return to his pre-accident job. Awarded lump sum of £450,000 plus periodical payments of £50,000 pa to age 50 and then £35,000 pa thereafter.
W v Wilkinson and McIlvaine [2009] Court of Appeal
Acted on behalf of a motorcyclist who was involved in a collision with a vehicle in front when seeking to overtake a parked caravan. Liability apportioned on a 60/40% basis. The defendants appealed and the judgment was upheld by the Court of Appeal. Settled for £512,500 (£1.28 million on a full-liability basis).
£2.25 million for a schoolgirl hit by a car sustaining a serious head injury and subsequent psychiatric problems/schizophrenia, which we proved were caused by the head injury.
£1.072 million in 2008 for a man who received a head injury when he was hit by an untraced lorry. Settlement with the MIB included an award for provisional damages if the claimant ever developed post-traumatic epilepsy.
O v Birakos [2008]
Obtained a six-figure sum for a claimant who was paralysed when he fell from a fire exit when trying to leave the defendant's premises after an altercation in the bar. Liability was strongly contested and there was a significant reduction for contributory negligence.
£1.2 million in 2007 for a woman who sustained a serious head injury in a road traffic accident.
£2.27 million for a severely injured child left with brain damage at birth.
S v Bird [2005]
£1.36 million for a 70-year-old man who was rendered paraplegic in a road traffic accident.
A v W Potrafke (UK) Ltd
The claimant crashed his car after falling asleep at the wheel and was rendered paraplegic. Successfully sued the claimant's employers for operating an unsafe system of work, which required long hours and overnight working with no breaks. (Reported in The Lawyer).
Chapman v London Borough of Barking and Dagenham
A successful liability claim against the local authority for failing to properly inspect trees after a decayed branch from a tree fell onto the claimant's car during storms, causing him to crash and rendering him paraplegic. (Reported in The Lawyer and on Lawtel).
For more information, please get in touch.
Client Extra Login
Get access to our dedicated online portal to check the progress of your case and contact your case handler.
Laura Merry
Senior Manager/Partner
Direct Dial: 0117 904 5718
Further Details >>
Katie Charlesworth
Headway Head Injury Solicitors List 2020
Please pass wide and safely
Brain injury and Covid -19 : the challenges
FA guidelines change to protect children against possible future increased risk of brain injury.
Brain Injury Awareness Week – Brain drain: wake up to fatigue
LD Extra login
LD Dictation

redpajama_set_name: RedPajamaCommonCrawl


The Genesis G80 incorporates the industry's latest safety features.
The Genesis G80's exclusive shopping and servicing experience is one facet of its unique value proposition in today's luxury segment.
Shoppers are gravitating toward the new Genesis G80 for many other reasons too—including its impressive suite of standard safety features.
Where numerous competitors bundle top-line safety equipment into pricey packages, the Genesis G80 comes standard with a suite of the very best safety systems the brand has on offer. The suite of networked safety technologies is called Genesis Smart Sense, and it's been exhaustively developed to improve confidence, awareness, and peace of mind on any drive.
Additionally, the features that comprise the Smart Sense system have helped the Genesis G80 earn the highest safety scores in the industry from two independent safety authorities. Here's a closer look.
Using a camera, G80's position relative to visible lane markings is being scrutinized constantly—meaning that Lane Keep Assist can detect un-signaled departures from the lane of travel, and even apply slight steering, to help keep the vehicle centered in its lane, or to correct its position. This improves safety and reduces the need for driver inputs. Should the driver experience a lapse in attention, Lane Keep Assist can act as an electronic guardian angel, ensuring that the G80 stays within its lane.
Dial in your desired cruise control set speed and following distance, and signals from G80's forward-facing radar maintain your speed and position in traffic, with no need to touch the pedals. With this system in action, the G80 slows and speeds up in response to changing traffic. It can even come to a complete stop, and restart itself, in stop-and-go situations—all while maintaining a safe distance between drivers and their fellow motorists.
The Genesis G80 has its driver's back, front, and sides, too. Using radars mounted in the rear corners of the vehicle, Blind Spot Detection with Rear Cross-traffic Alert provides a visible warning if another vehicle is hiding in the G80's blind spot, via an illuminated icon on the rearview mirror. Able to detect cars, trucks, motorcycles and more, this clever technology makes it crystal clear whether it's safe, or not, to change lanes.
When the vehicle is placed in reverse, the same sensors extend their detection sweep down into the laneway that drivers are backing into. Here, the sensors are scanning the area behind and perpendicular to the vehicle, and can alert drivers of another motorist approaching in the laneway as they back up. Especially useful when backing out from behind a tall snow bank or between two large trucks, this system adds tremendous peace of mind in low-visibility reversing.
This life-saving system interprets data from the G80's existing camera and radar systems with an eye for stopping the vehicle automatically when faced with certain hazards. The Genesis G80 can apply its own brakes and come to a complete stop with no driver input required, to prevent an impact with a slower or stopped vehicle up the road, or with a pedestrian crossing carelessly ahead. In situations where drivers may be overwhelmed by their surroundings, Genesis G80's Automatic Emergency Braking with Pedestrian Detection keeps an extra set of eyes (and radar) trained on the road ahead, for added protection.
Designed to ensure drivers have optimal output from the headlight system at all times, High Beam Assist uses the G80's forward-facing cameras to detect vehicles up the road. When the way is clear, high beams are activated automatically. When an oncoming car is detected, or when the G80 is closing in on other nighttime traffic, the low beams are activated instead. The system is fully automatic and facilitates a higher degree of focus on the road, and less mental workload for the driver, during a nighttime drive.
Capitalizing on the latest in camera and image processing technology, the Genesis G80 utilizes a rear-view camera with Parking Guidelines to provide high-resolution coverage of its surroundings while drivers reverse in tight quarters. With the ability to see what's behind you in vivid detail, the Rear-view Camera System makes the G80, and its surroundings, safer.
For more information on the advanced safety features that come standard on the Genesis G80, CLICK HERE.


Advertising to Baby Boomers: It's okay to be gray.
Botox! Hair coloring! These are the answers to that creepy, disingenuous image staring back at them.
"The graying of america is at the root of the problem for the $1 billion-plus mass-market hair-coloring business. The category has cooled from double-digit growth the past two decades to more than 4% declines the past two years..."
Diana Lewis Jewell is the author of Going Gray, Looking Great! The Modern Woman's Guide to Unfading Glory (Fireside, 2004) and a former marketing director of Vogue.
"Look at this generation, our generation," says Jewell, who is in her 50s. "We always wanted to be ourselves."
The number of gray heads is growing, she says, because of "that boomer individualistic attitude: It's okay to be gray."
In her book she cites a poll commissioned by the AARP that shows 53 percent of boomer women and 6 percent of men in that age group color their hair.
"That means 47 percent of women and 94 percent of men don't."
Also check out the adjunct article with quotes from a bunch of old, creaky, silver-haired geezers.


text:
Olivia Kim
Garments inspired by vintage London and sportswear from recycled bottles – Katie Ann McGuigan AW20 a
On the 16th of February Katie Ann McGuigan returned to London Fashion Week with her Autumn/Winter 2020 collection at 180 The Strand – the LFW Discovery Lab. As soon as the audience entered the venue, they were exposed to the simultaneously vibrant and homely setting of this season's presentation. Eight different models exhibited equally dynamic energy through the vivid colours and the printed patterns of the brand's newest fashion wear.
Photos: Rory James, British Fashion Council
The AW20 collection displayed Katie Ann McGuigan's inspiration from Tom Woods – an Irish-born photographer who records the ordinary lives of North London in the late 1970s and 1980s, with a focus on the domestic life and people's occasional excursion around town. This inspiration was evident in both the physical setup of the presentation and the intricate design of her fashion; the use of white doors, staircase, sofas, and houseplants established a scene of a typical living room. The integration of bright colour schemes and the experimental transformation of a classic chevron print into a modernised pattern illuminated Kati Ann McGuigan's success of integrating a series of retro-styles into contemporary composition. The brand's way of embracing divergent geometric sequences bridged the past fashion trends with the present-day styles, with touches of modern technology apparent in the digitally printed dresses.
Photos: Getty, British Fashion Council
McGuigan's aim for more sustainable production in fashion was visible through her incorporation of recycled yarns in her knitwear, recycled plastic bottles in puffer jackets, and locally sourced screen prints. The environmental consciousness of her design was an applaudable aspect of this season's collection, as it displayed her alertness to the ongoing environmental troubles of the fashion industry. She aptly worked with recycled materials to create a harmonic mixture of vintage and a trendy look.
Another notable feature of the brand's recent collection was the multiple layers of textiles that were used to produce intricate fashion pieces. For instance, one model wore a hooded silk crepe top and a loosely hanging sleeveless knit, coupled with a pair of straight-line knit trousers and a thin layer of organza skirt. Her look was completed with an additional collar and a bow, integrating elements of casual sportswear with hints of femininity. Such a combination of diverse layers of fashion generated unique garments, which accentuated McGuigan's typical merging of traditionally masculine sportswear with an elegant form of female fashion.
The latest AW20 presentation hosted by Katie Ann McGuigan highlighted her thrive in creating luxury sportswear that enhances grace and style of women. McGuigan's appreciation for the ordinary, everyday aesthetics undoubtedly made this season's collection exceptionally distinctive in style, and her next collection will be very much anticipated.
Social Media of the brand:
Instagram: @katieannmcguigan | Website: www.katieannmcguigan.com
Edited by Liza Mikhaleva, Fashion Editor


John T. Edge has served as an Oxford American columnist since 1998. He directs the Southern Foodways Alliance at the University of Mississippi and teaches in the MFA program in narrative nonfiction at the University of Georgia's Grady College of Journalism.
"At first, I couldn't come in a place like this," Helen Summerville told me one recent afternoon as she forked into a mound of cornbread dressing and giblet gravy at Kairos Kafe on the south side of Birmingham, Alabama. "And then, for a while, I wouldn't come in," she said. "None of that matters now." Prior to passage of the Civil Rights Act of 1964, Summerville, who is black, would not have been served in most white-owned dining rooms in Birmingham. Back then, Ollie's Bar-B-Q—which was open from 1926 through 2001 and claimed three locations in this neighborhood, including the one now occupied by Kairos—was among the staunchest defenders of the Jim Crow laws and practices that dictated separate eating facilities for whites and blacks.
From the archive, an appreciation of cookbook-memoirist Vertamae Smart-Grosvenor.
Vertamae is the sort of person who, while struggling to find work in the broad creative world, came to know James Baldwin as "Jimmy," played the part of Big Pearl in the infamous Broadway play Mandingo, catered a record-release party for David Bowie, danced and chanted with Sun Ra & his Solar-Myth Arkestra, and inspired her daughter, who was nine at the time, to publish a volume of poems with Doubleday.
An installment in Local Fare, a food column by John T. Edge.
We've now entered the abstract phase of this culinary rebirth, in which the idea of Southern food is as fungible and bankable as the food itself.
Grasping a starched napkin in his left hand and twirling a pair of mod eyeglasses in his right, Goren Avery shepherds the flocks who seek purchase nightly at Highlands Bar & Grill, this reliquary of a restaurant, the most vaunted in the South. This place, and, by extension, this city, is his domain.
Integration came early to barbecue. (And it remained, after the Civil Rights Movement came and went, while schools and other public accommodations re-segregated.) That's the story we chowhounds tell, with a whiff of self-satisfaction.
In 1995, when the late Larry Brown first published (in the Oxford American) the essay "Billy Ray's Farm" about his son's farm in Lafayette County, Mississippi, he was both realistic and optimistic about the challenges of farm life. He could not have known that one day his friend, the renowned chef John Currence, would open Big Bad Breakfast, a new kind of diner featuring local ingredients, including dairy products from Billy Ray's heifers. John T. Edge recently visited Billy Ray and his milking cows at the Brown Family Dairy.
Reminisces of eating rat-trap cheese: "We ate it in the parking lot, with sleeves of crackers and tins of sardines, its hue a not-of-this-world orange, with a texture that straddled cheddar and polyester. And a red wax rind. Stored beneath a see-through plastic dome. Sliced into wedges with a countrified guillotine."
The South has diversified over the last twenty years. And so has my palate.


text:
Q: Android set default device theme I've an app which may be ran from 2.2 to 4.x devices.
When I run this app on 4.x it looks cool, holo style. But when I run it on older devices, it seems to be so much "lighty".
There's a screenshot so you can compare:

This is my manifest:
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

And my styles:
<resources>

<!--
    Base application theme, dependent on API level. This theme is replaced
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.NoActionBar.Fullscreen">

</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

It's obvious that holo doesn't exist in 2.3, but then it should render its default device theme, right?
So the input is correct, but the TextView looks too grey.
Any idea?

A: As someone suggested, I finally created a new folder:
res/values-v11/
On this folder, I've put a file named styles.xml, which is the following:
<resources>

<!--
    Base application theme, dependent on API level. This theme is replaced
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.NoActionBar.Fullscreen">

</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

And the folder res/values/ which will be called for android with api lower than 11, contains a styles.xml and there I've changed the parent template, like this:

<!--
    Base application theme, dependent on API level. This theme is replaced
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="MyTheme" parent="@android:style/Theme.Light">

</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

This ends up like this:

*

*Devices with api higher than 11 -> holo theme

*The rest: Theme.Light ("Normal theme")

redpajama_set_name: RedPajamaStackExchange


text:
Q: remove elements from sub-array mongo document I`m trying to remove a subarray element from a mongo document. My document(record) is something like this:
{
    "_id" : 1,
    ...,
    "team" : {
        "players" : [{
            "name" : "A B",
            "birthday" : new Date("11/11/1995")
          }, {
            "name" : "A C",
            "birthday" : new Date("4/4/1991")
          }],
        "matches" : [{
            "against" : "Team B",
            "matchDay" : new Date("11/16/2012 10:00:00")
          }]
      }
}

Now I want to remove "A B" player from my document. I tried this:
$result = $collection->update(
    array('_id' => 1),
    array('$pull' => array('team.players.name' => 'A B'))
);

The result seems to be OK
(
    [updatedExisting] => 1
    [n] => 1
    [connectionId] => 8
    [err] =>
    [ok] => 1
)

but the player still exists in the document.
Thanks!

A: Your update object should be like that:
{
    "$pull": {
        "team.players": {
            name: "A C"
        }
    }
}

So in php it will be:
$result = $collection->update(
    array('_id' => 1),
    array('$pull' =>
        array('team.players' => array('name' = > 'A B'))
    )
);


text:
Boat the Everglades and Discover Natural Wonders in Paradise
By Eric Snider
Florida's Paradise Coast is known worldwide for its upscale resorts, fine restaurants and luxury experiences, but what occasionally gets overlooked is our wealth of eco-tourism. The destination definitely has its wild side — in fact, 80 percent of the land area in Collier County is designated as parkland or nature preserves.
The most convenient way for vacationers to take in the wide array of natural wonders on Florida's Paradise Coast is to call upon one of the many eco-tourism operators who offer guided experiences. There are hiking tours, boating tours in the Everglades, jet ski tours, kayaking and other paddling tours. For those who favor more submersive experiences, you can take scuba and snorkel tours, and even get waist deep in water on a swamp walk in the Everglades.
Of course, guides aren't mandatory. Many visitors hike or take leisurely strolls along one of our many trails or boardwalks.
Here are a handful of favorite eco-tourism activities on the Paradise Coast:
World-renowned Wetlands
Any discussion of the Paradise Coast's eco-tourism begins with The Everglades. These world-renowned tropical wetlands are surprisingly accessible to visitors staying in Naples or Marco Island. In fact, if you drive southeast from downtown Naples on U.S. 41, in just 25 miles you'll begin to see the swamplands; another 15 miles and you'll be in the thick of it. The largest chunks of The Everglades in Collier County are the Big Cypress National Preserve and the Fakahatchee Strand Preserve State Park.
Glide through the Everglades on a Pole Boat
As you progress along U.S. 41, you'll encounter numerous turnoffs to a variety of places to experience the full, natural beauty and ultimate serenity of The Everglades. It might be as peaceful as a picnic or as hair-raising as an airboat ride. You can also kayak, canoe and hire a guide to take you on a primitive poleboat excursion.
"The best way I can describe it is, it's primeval out here in the Everglades," says Trish Elzer, who guides swamp walk tours behind the gallery of renowned nature photographer Clyde Butcher. "Some people may think of palm trees and the beach as their paradise, but I think about cypress trees and fresh water — as well as alligators and snakes."
Too Many Islands to Count
Paddle the Ten Thousand Islands
Just a brief boat ride from Marco Island puts you in another Paradise Coast marvel: The Ten Thousand Islands, a chain of small mangrove islets that are both gorgeous and calming — and where the fishing is out of this world. The islands actually number in the hundreds, but local lore says that decades ago people just got tired of counting them and settled on 10,000.
A boat captain can take you through this vast system (fishing optional). After a short ride from the dock you'll be immersed in a picturesque wilderness, where only wildlife sounds hold court. There are many access points to the Ten Thousand Islands, ranging from Marco Island to Goodland to Chokoloskee when taking boats in The Everglades.
A Trail Runs Through It
The Gordon River Greenway is an ideal way to get a taste of natural Naples inside the city limits. A series of short boardwalks and paved pathways take you through rich greenery. It's a great place for birding, not to mention hiking, jogging, biking and rollerblading. The Greenway has playgrounds, restrooms, viewing areas and a kayak launch. There's easy access from major roadways — one is next to the Naples Zoo. And in certain parts of the Greenway, you're just a short hop to a terrific restaurant, gallery or store.
Gordon River Greenway
"The Gordon River Greenway is a slice of natural paradise in the heart of Naples, and a lot of people don't know it exists," says Melissa Hennick, a senior environmental specialist with Conservation Collier. "It's a great way to see the southwest Florida environment without necessarily getting your feet dirty."
Environmentalism, Education, Fun
Centrally located just south of the Naples Zoo, the Conservancy of Southwest Florida Nature Center offers a stimulating day trip that mixes fun, education and environmental consciousness. The large green space is fronted by the Dalton Discovery Center, which offers an array of animal and plant exhibits and hands-on interactive experiences. You can also get an underground look at the area's unique water flow ways.
The Nature Center is listed as Site #69 on the Great Florida Birding & Wildlife Trail.
You can take kayak tours and, probably most popular, a guided electric boat tour through a winding waterway.
Visitors to the Nature Center are apt to see manatees, turtles, snakes, innumerable bird species, and maybe even spot a gator or two.
The Total Paradise Package
Enjoy the day at Delnor-Wiggins Pass State Park
Delnor-Wiggins Pass State Park, about 12 miles north of downtown Naples, features one of the most pristine stretches of beach you'll find anywhere. While there, you can mingle with wildlife, bird-watch, stroll the shore, fish, picnic, swim, or simply lounge in a beach chair and take in the gorgeous blue-green water of the Gulf of Mexico. The park is one of the best spot on Florida's Paradise Coast for shelling. There are even spots to launch boats. Guided tours and interpretive programs, led by experienced rangers and volunteers, occur on a regular basis.
Delnor-Wiggins has trails, an observation tower and a pavilion you can rent out. A concessionaire sells food and beverages, and rents paddleboards, kayaks, canoes, umbrellas and beach chairs.
It is, indeed, the total paradise package.
"My favorite thing about Delnor-Wiggins Pass State Park is it lets me get away from the hustle-bustle urban part of Naples," says park manager Terrance Torvund. "Naples has a beautiful downtown, with lots of restaurants and stores, but here you can step away from that, hit pause for a little bit."
Big Cypress National Preserve
Oasis Visitor Center
52105 Tamiami Trail E.
Ochopee, FL 34141
Chokoloskee Island Park and Marina
1150 Hamilton Ln.
Chokoloskee, FL 34138
City of Marco Island
50 Bald Eagle Dr.
Clyde Butcher's Swamp Cottage
52388 Tamiami Trl. E.
Conservancy of Southwest Florida Nature Center
1495 Smith Preserve Way
Delnor-Wiggins Pass State Park
11135 Gulfshore Dr.
815 Oyster Bar Ln.
Everglades City, FL 34139
Fakahatchee Strand Preserve State Park
137 Coastline Dr.
Copeland, FL 34137
1596 Golden Gate Pkwy.
Naples Zoo at Caribbean Gardens
1590 Goodlette-Frank Rd.
Ten Thousand Islands National Wildlife Refuge
Port of the Islands Marina (boating location),
525 Newport Drive
Village of Goodland
Goodland, FL
Kid Events in Naples: The Best of Summer Family Vacations in Paradise
Family Fun in Naples, Marco Island & the Everglades
Get Easy Access to Nature With Trails, Boardwalks and Viewing Areas
Social Distancing in Paradise
Hidden Gems of Florida's Paradise Coast
Shelling on Naples & Marco Island Beaches


We would like to thank ZOTAC for providing us with a review sample of their ZOTAC 1080 Mini. Without their generosity, this graphics card review would not be possible.
Originally announced back in December of 2016, showcased at CES, and then released in January, the ZOTAC 1080 Mini is the veritable King of graphics cards among SFF enthusiasts. At present, there doesn't exist a single more powerful GPU capable of fitting into the some of the smallest chassis around.
The ZOTAC packaging includes their trademark black and yellow color scheme.
Opening up the box we see a rather simple interior with the graphics card adequately surrounded by medium density foam.
Included inside the box is a ZOTAC branded black envelope, a generic dual 6-pin to 8-pin PCIe adapter, and the ZOTAC 1080 Mini neatly secured inside a bubble-wrap lined anti-static bag.
A premium (thick metal) ZOTAC case badge.
A CD that includes graphics drivers, the ZOTAC Firestorm overclocking software, and user Manual.
Advertising material for various ZOTAC product such as their low-profile ZOTAC Sonix PCIe SSD.
As touted on their landing page, ZOTAC has listened to their loyal fanbase and they have produced a slick looking graphics card that will look right at home in any computer.
You really cannot go wrong with the understated gunmetal and black theme that they have chosen.
As mentioned in the specifications, the rear IO consists of 3 x DisplayPort 1.4, 1 x HDMI 2.0b, and 1 x DL-DVI.
The PCI slot cover is also well ventilated with a unique pattern of triangles to optimize airflow without compromising rigidity of the bracket.
The back of the graphics card includes a stylish matte black aluminum backplate that is well ventilated and mounted to the PCB on standoffs.
As we have seen in the past, an improper backplate would rest directly atop the PCB trapping in the heat- that is definitely not the case here.
ZOTAC was smart to included decently sized gap between the PCB and the aluminum backplate, we'll touch more on that later.
Visible here are the series of copper heatpipes that assist in keeping the GPU cool.
The 8-pin PCI power connector features a cutout to help make removal of the PCIe power cable that much easier.
When the graphics card is powered on, the ZOTAC logo lights up in a soft white color that is evenly lit and not overbearing.
The 90mm, 9-blade fan (below, left picture, left fan) is designed for higher static pressure.
The 100mm, 9-blade fan (below, right picture, right fan) is designed for a higher volume of airflow.
You can really tell the difference between the two blade profiles in the following picture.
Looking at the bottom of the heatsink we can see the flawless placement of the aqua colored thermal pads atop the memory modules.
Here you can get a nice feel for the smooth finish of the aluminum backplace as well as the gap between it and the PCB below.
Showcasing some nice attention to detail, here you can see that the aluminum heatsink goes around the components on the PCB, touching only the components it needs to.
The highlight of this picture was supposed to be, "Yup, that's an 8-pin power connector" but would you just look at the texture in the plastic shroud? It has a very fine graininess to it that feels good to the touch.
The left connector powers the two fans.
The right connector powers the small handful of white LEDs in the plastic shroud.
The left fan is accurately listed as a 90mm fan.
The right fan is accurately listed as a 100mm fan.
The overall thickness of the card, with the stock shroud and fans, is a little over 40mm.
The PCB of the GTX 1080 Mini is an impressive 173mm in length.
The height of the PCB matches the aluminum backplate at just 110mm.
The high density aluminum fins at the end of the heatsink stick out an additional 30mm from the PCB.
Note: The angle of this photo makes it look like it's not being measured correctly. Rest assured that I fixed that little hiccup with the next photo.
Including the plastic shroud, the heatsink sticks out from the PCB just a little over 35mm.
The copper heatpipes used to distribute heat are 6mm thick, just as the advertising material said.
The aluminum backplate is 1.5mm thick.
This may not matter to most but if you require the removal of this backplate to fit the GPU into your chassis, there ya go!
With the stock shroud and fans removed, the GPU is just 26.64mm thick.
If you absolutely need to cut this card down to fit it into your case, and are willing to void your warranty, you can safely use a Dremel tool to cut off 8.25mm of the excess aluminum.
Measuring flush from the rear bracket to the end of the last copper heatpipe, I ended up with 197.28mm in length.
From the bottom of the PCI bracket to the top of the PCB, the card is 137.91mm in height.
The beginning of the 8-pin power connector is located 156.28mm from the back of the PCI bracket (not the PCB).
The end of the 8-pin power connector is located 176.83mm from the back of the PCI bracket (not the PCB).
For anyone brave enough to cut off that last copper heatpipe, flush to the tip of the 2nd to the last heatpipe, the card would measure roughly 180mm in length. Just don't expect to use the plastic shroud and fans after making this mod.
There are 4 small screws that keep the plastic shroud attached.
Each fan is held in place by 3 small screws.
Here you see the mounting points for the shroud and the fans.
If you look closely, you can also see the guides that protrude outwards (near the top) to help keep the fan and LED cables neatly organized. It's a really nice touch that some other manufactures would have ignored.
Note: To separate the shroud and fans from the graphics card, the heatsink needs to be removed.
Here you can see the 5 meticulously crafted copper heatpipes that are flattened and then sandwiched into the aluminum heasink.
Here is a closeup of the cables that provide power to the LEDs in the shroud. It's neatly glued to the PCB to prevent the metal from oxidizing and becoming brittle.
The LED connector cannot be removed without first removing the entire heatsink from the PCB.
In fact, the removal of either connector requires the heatsink to be removed.
The 100mm fan is an Apistek GAA8S2U. I couldn't find much information about it but I believe that it is a sleeve bearing fan.
The sticker reads DC 12v 0.45A.
As you might have already noticed, it connects to the PCB using a 4-pin fan header for PWM control. I'll mention it now, for anyone that might overlook it later, but the fans on this GPU are always on.
They are extremely quiet during operation, but none the less they are always on, unlike other Pascal based GPUs.
The 90mm fan is an Apistek GA92S2H. I couldn't find much information about this fan either, but I believe that it too is a sleeve bearing fan.
The sticker reads DC 12v 0.35A, 0.10A less than the 100mm fan.
Here we can see the high density of electrical components stacked neatly at the back of the card.
Here you can see the decently sized gap between the backplate and the PCB (this is a good thing).
The aluminum backplate on the ZOTAC 1080 Mini has a thin plastic shroud adhered to the backside to prevent an electrical short, and possibly heatsoak, from occurring.
The thermal pads are strategically placed to cool the MOSFETs and each of the eight(8) 1GB DDR5X memory modules.
There is more than enough thermal interface material applied to the GPU.
The heatsink uses a copper base to help pull heat off the GPU, directly into the 5 heatpipes sandwiched on the other side.
Here we can see that the thermal pads have an even amount of pressure being applied to the MOSFETs to ensure proper heat transference.
The thermal pads for the GDDR5x memory ICs are also evenly distributed.
In a 5+1 phase design (matching the power delivery of NVIDIA's founders edition GPUs), each R22 choke has its own mosfet. The 4R7 choke near the top could possibly be used for the memory but I'm no engineer, so this is just a guess on my part.
The memory being used is Micron's D9TXS which decodes to MT58K256M32JA-100. They are specified to run at 1250 MHz (10 GHz GDDR5X effective).
The R22 chokes have a very unique shape to them. I'm curious if this design helps to prevent coil whine or if it's just a look AIO (A10?) has chosen. I'm used to seeing them as bland cubes.
Slightly disappointing to see on this card, the 8-pin power connector appears to have additional room to be recessed into the PCB so that the 8-pin PCIe power connector would sit flush to the top of the PCB.
I'm not entirely sure what the electrical keep out area is for this connector but even just a few millimeters deeper would make a big difference.
The DVI connector is shielded and as usual, heatsink aside, it is the only reason why the card occupies 2 expansion slots at the back of the case.
For anyone interested (and brave enough) in desoldering the DVI connector from the PCB, there appears to be plenty of room to play with even if you don't have the most steady of hands.
The test bench we have set up is a middle to high end system.
This is designed to help showcase the kind of computer that would be considered attainable to most, without bottlenecking the GPU.
Synthetic benchmarks are an excellent way to utilize the full strength of a graphics card. These tools help to showcase how powerful a GPU can really be, but are not an accurate representation of the kind of the performance you can expect in-game.
It was 75.79% faster than the GTX 970.
The ZOTAC 1080 Mini on average was 13.7% faster than the GTX 980 Ti.
It was 72.45% faster than the GTX 970.
Based on the benchmark, the ZOTAC 1080 Mini on average was 8.36% faster than the GTX 980 Ti.
It was 78.15% faster than the GTX 970.
The ZOTAC 1080 Mini on average was 19.06% faster than the GTX 980 Ti.
It was 75.33% faster than the GTX 970.
The ZOTAC 1080 Mini on average was 15.46% faster than the GTX 980 Ti.
It was 92.39% faster than the GTX 970.
The ZOTAC 1080 Mini on average was 2.78% faster than the GTX 980 Ti.
It was 44.70% faster than the GTX 970.
The ZOTAC 1080 Mini on average was 16.17% faster than the GTX 980 Ti.
It was 104.75% faster than the GTX 970.
The ZOTAC 1080 Mini on average was 9.21% faster than the GTX 980 Ti.
It was 87.96% faster than the GTX 970.
The ZOTAC 1080 Mini on average was 9.52% faster than the GTX 980 Ti.
It was 81.44% faster than the GTX 970.
In DirectX11, the ZOTAC 1080 Mini on average was 13.42% faster than the GTX 980 Ti.
It was 98.44% faster than the GTX 970.
In Vulkan, the ZOTAC 1080 Mini on average was 13.59% faster than the GTX 980 Ti.
It was 96.23% faster than the GTX 970.
The ZOTAC 1080 Mini on average was 9.4% faster than the GTX 980 Ti.
It was 103.79% faster than the GTX 970.
In synthetic benchmarks, the ZOTAC 1080 Mini on average was 12.78% faster than the GTX 980 Ti. It was 75.43% faster than the GTX 970.
In game benchmarks, the ZOTAC 1080 Mini on average was 10.85% faster than the GTX 980 Ti. It was 87.63% faster than the GTX 970.
On the test bench, the noise levels for this card were quite impressive, especially for a card of this size. When I had the test bench setup approximately 2′, or around 61cm from my current seating position, the fans were just barely audible at idle and entirely within the range of, "Wow, that's still impressively quiet!" at load. Both the GTX 970 and GTX 980 Ti were louder than the ZOTAC 1080 Mini in testing.
However, when stuffed into a tiny case (and once the GPU surpassed ~70 degrees Celsius) the 1080 Mini's fans would ramp up swiftly, causing a slightly obnoxious tonal reverb. The best analogy I can use to describe the sound would be like a slightly unbalanced case fan. It wasn't unbearable but it was no longer what I would consider a pleasant fan hum. If you're an open headphone user, you might barely notice the fan noise in the background but over time, depending on how sensitive you are, you may find it slightly annoying.
I will admit though, I was a little disappointed to discover that ZOTAC has opted not to support a semi-fanless design like other Pascal based GPUs. I am going to guess that this is a result of trying to keep the card as small and affordable as possible but none the less, the fans are always on as silent as they may be (under ~70c).
The thermals for this card were decently impressive for an enthusiast-grade graphics card that has been shrunk down to this size.
On the test bench, the highest temperature recorded was 69c (non-overclocked).
Under high stress loads inside a case, the highest temperature was 74c (non-overclocked).
Overclocking the card had very little impact on the temperature.
To illustrate how well the heatsink was capable of dissipating heat, I recorded a short video using a Seek Thermal CompactPro. During this video, the highest internal GPU temperature recorded was 69c. As you can see, if you absolutely need to cut off some of the excess heatsink to be able to fit the 1080 Mini into your favorite chassis, I don't think that would be an issue.
If you have a cramped case, as many SFF enthusiasts do, I think it's safe to say that this GPU is better suited in a case with decent ventilation. That being said, if you're comfortable with adjusting the the fan curve, there is more than enough headroom afforded by the beefy heatsink to reduce the speed of the fans throughout the temperature range.
Power Consumption was measured by plugging the test system into an unoccupied CyberPower CP1500PFCLCD PFC Sinewave UPS 1500VA 900W UPS. Accurate to within a single watt and able to display values in real-time, it's the most accurate tool that I have for this job.
In increments of 25MHz, I slowly overclocked the GPU using EVGA Precision XOC and ran several stress tests to ensure stability. Once I happened upon even the slightest artifact or hint of instability, I backed the card down 25MHz until I found a frequency that could be maintained throughout testing. The end result is a 200MHz overclock, not astronomical but certainly respectable on a card where overclocking wasn't its first priority.
All games were benchmarked at 2560×1440 resolution, arguably the most common resolution of the three we benchmarked.
In synthetic benchmarks, an overclock of 200MHz netted an average additional 6.33% in performance.
In game benchmarks, an overclock of 200MHz netted an average additional 2.62% in performance.
I define "Pros" as things that I really liked about the GPU; things that made me sit back and really appreciate the quality or how unique the product is.
The ZOTAC 1080 Mini is an extremely well-designed and terrific looking card that can handle absolutely anything you throw at it. The best part is that it can do all that and still fit into the some of the smallest of cases.
On our bench, the GPU was capable of a decent 200MHz overclock without much effort and the heatsink does a terrific job keeping the GPU temperature down.
I really liked (and appreciated) the extra attention to detail that I feel other manufacturers would have neglected.
The card has a 5 year warranty once it is registered with ZOTAC (2 year warranty offered without registering).
It costs a considerable amount of R&D to create such a unique GPU so major kudos go out to ZOTAC for taking that leap when no one else would.
If possible, I would like to see the 8-pin power connector recessed further into the PCB so that the inserted power cable would sit flush to the top.
I would have liked to see the semi-fanless feature available on this card but with the fans being so quiet at idle, it's not a deal-breaker.
If my IR measurements are any indication, I believe that a slightly shorter version (1080 MINIer?) could have been possible without sacrificing thermal performance.
The overclock is likely being bottlenecked by the 5+1 phase design. While I understand that this card isn't built for the overclocking market, an improved power delivery system over reference, while more expensive, would have made a big difference.
For anyone daring enough to remove the stock fans and shroud, the entire heatsink needs to be removed from the PCB in order to disconnect the fan headers. I know that this isn't a normal activity for most consumers but if the headers were facing 90-degrees outwards, they would be far easier to disconnect (especially if the series of fans required manual replacement well after the warranty expired).
Finding a con was really difficult with this card when it does so much right. Unfortunately, I did find a relatively small con, and it has to do with the irregular fan noise that occurred past ~70c. At lower temperatures the fan is impressively quiet but at higher speeds there is a slightly obnoxious tonal reverb that noise sensitive users will find annoying.
The conclusion: At present, the ZOTAC 1080 Mini is the undisputed King of SFF graphics cards.
If you want to build the most compact system without compromise, this is the card to get. It's lightning fast and provides plenty of horsepower to last you for several years while DX12 continues to mature.
Overall my experience with the card has been nothing short of impressive. It will be interesting to see if any other manufacturer will rise up to challenge ZOTAC on their home field.
Please let us know what you think about the ZOTAC 1080 Mini on the forums here.


On October 7th, it was time for the new participants of the Executive MBA Programme 2010-2012 to begin their 21-month programme. The programme has an international outlook and is characterised by novel thinking and a progressive spirit, emphasising on emerging markets in Asia. The Executive MBA class of 2012 is a diverse group with experienced managers. The participants contribute with experiences from a wide range of educational and professional backgrounds, such as pharmaceutics, engineering, IT, healthcare and media.
The first day of the programme consisted of a full day with introduction, seminars and workshops, followed by a welcome dinner in the evening where participants gathered with faculty and programme direction.
The curriculum of the Executive MBA Programme at the School of Business, Economics and Law reflects the challenges of today¿s knowledge society with increased international elements with lecturers from our partner universities and from international business life. During their first days of the programme, the participants will meet with faculty from the Indian Institute of Management Bangalore (IIMB), one of the partner universities of the School and one of the most prestigious business schools in India. In the beginning of the fourth term, the participants will spend an intensive week at the school in Bangalore. Prior to the India week, already during the second term, the Executive MBA class of 2012 will also spend one week at our partner university in Hangzhou, China.
The Executive MBA Programme benefits from the International Visiting Professor Programme at the School of Business, Economics and Law, where some 25 visiting professors from 15 esteemed universities and business schools from around the world will be associated with the School at a part-time basis.
Do you want to learn more about the Executive MBA Programme? Please visit www.handels.gu.se/emba for further information. On the site you can also sign up for information sessions.


text:
/* -*- Mode: C++; indent-tabs-mode:nil; c-basic-offset:4;-*- */

/*Copyright (c) 2005-2006 Dodji Seketeli
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this
 * software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute,
 * sublicense, and/or sell copies of the Software, and to permit
 * persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies
 * or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS",
 * WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO THE
 * WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE
 * AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE,
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 */
#include "config.h"
#include <glibmm.h>
#include "nmv-libxml-utils.h"
#include "nmv-exception.h"
#include "nmv-plugin.h"
#include "nmv-env.h"

namespace nemiver {
namespace common {

struct Plugin::EntryPoint::Loader::Priv {
    UString plugin_path;
};//end struct Plugin::EntryPoint::Loader::Priv

Plugin::EntryPoint::Loader::Loader (const UString &a_plugin_path) :
    m_priv (new Plugin::EntryPoint::Loader::Priv)
{
    THROW_IF_FAIL (m_priv);

    config_search_paths ().clear ();
    if (!Glib::file_test (a_plugin_path, Glib::FILE_TEST_IS_DIR)) {
        THROW ("Couldn't find directory '" + a_plugin_path + "'");
    }
    config_search_paths ().push_back (a_plugin_path);
    m_priv->plugin_path = a_plugin_path;
}

Plugin::EntryPoint::Loader::~Loader ()
{
    LOG_D ("delete", "destructor-domain");
}

const UString&
Plugin::EntryPoint::Loader::plugin_path ()
{
    THROW_IF_FAIL (m_priv);
    return m_priv->plugin_path;
}

//**********************
//<class Plugin::EntryPoint>
//**********************
struct Plugin::EntryPoint::Priv {
    bool is_activated;
    Plugin::EntryPoint::LoaderSafePtr entry_point_loader;
    DescriptorSafePtr descriptor;

    Priv () :
        is_activated (false)
    {
    }
};//end Plugin::EntryPoint::Priv

Plugin::EntryPoint::LoaderSafePtr
Plugin::EntryPoint::plugin_entry_point_loader ()
{
    return m_priv->entry_point_loader;
}

void
Plugin::EntryPoint::plugin_entry_point_loader
                        (Plugin::EntryPoint::LoaderSafePtr &a_loader)
{
    THROW_IF_FAIL (m_priv);
    m_priv->entry_point_loader = a_loader;
}

Plugin::EntryPoint::EntryPoint (DynamicModuleSafePtr &a_module) :
    DynModIface (a_module),
    m_priv (new Plugin::EntryPoint::Priv)
{
}

Plugin::EntryPoint::EntryPoint (DynamicModule *a_module) :
    DynModIface (a_module),
    m_priv (new Plugin::EntryPoint::Priv)
{
}

Plugin::EntryPoint::~EntryPoint ()
{
    LOG_D ("delete", "destructor-domain");
}

void
Plugin::EntryPoint::activate (bool a_activate,
                              ObjectSafePtr &a_ctxt)
{
    if (a_ctxt) {}
    THROW_IF_FAIL (m_priv);
    m_priv->is_activated = a_activate;
}

bool
Plugin::EntryPoint::is_activated ()
{
    THROW_IF_FAIL (m_priv);
    return m_priv->is_activated;
}

const UString&
Plugin::EntryPoint::plugin_path ()
{
    THROW_IF_FAIL (plugin_entry_point_loader ());

    return plugin_entry_point_loader ()->plugin_path ();
}

bool
Plugin::EntryPoint::build_absolute_resource_path
                            (const UString &a_relative_resource_path,
                             string &a_absolute_path)
{
    string relative_path = Glib::locale_from_utf8 (a_relative_resource_path);
    string plugin_dir_path = Glib::locale_from_utf8 (plugin_path ());
    string absolute_path = Glib::build_filename (plugin_dir_path, relative_path);
    bool result (false);
    if (Glib::file_test (absolute_path,
                         Glib::FILE_TEST_IS_REGULAR
                         | Glib::FILE_TEST_EXISTS)) {
        result = true;
        a_absolute_path = absolute_path;
    }
    return result;
}

Plugin::DescriptorSafePtr
Plugin::EntryPoint::descriptor ()
{
    THROW_IF_FAIL (m_priv);
    return m_priv->descriptor;
}

void
Plugin::EntryPoint::descriptor (Plugin::DescriptorSafePtr &a_desc)
{
    THROW_IF_FAIL (m_priv);
    m_priv->descriptor = a_desc;
}

//**********************
//</class Plugin::Entry>
//**********************

//**********************
//<class Plugin>
//**********************

struct Plugin::Priv {
    Plugin::EntryPointSafePtr entry_point;
    Plugin::DescriptorSafePtr descriptor;
    DynamicModuleManager &module_manager;

    Priv (Plugin::DescriptorSafePtr &a_desc,
          DynamicModuleManager &a_manager) :
        descriptor (a_desc),
        module_manager (a_manager)
    {}

};//end Plugin::Priv

void
Plugin::load_entry_point ()
{
    THROW_IF_FAIL (m_priv && m_priv->descriptor);

    try {
        EntryPoint::LoaderSafePtr loader
                (new EntryPoint::Loader (m_priv->descriptor->plugin_path ()));
        m_priv->entry_point =
            m_priv->module_manager.load_iface<Plugin::EntryPoint>
                                (m_priv->descriptor->entry_point_module_name (),
                                 m_priv->descriptor->entry_point_interface_name(),
                                 *loader);
        THROW_IF_FAIL (m_priv->entry_point);
        LOG_REF_COUNT (m_priv->entry_point,
                       m_priv->descriptor->entry_point_interface_name ());

        LOG_REF_COUNT (loader, "plugin-entry-point-loader");
        m_priv->entry_point->plugin_entry_point_loader (loader);
        LOG_REF_COUNT (loader, "plugin-loader");

        m_priv->entry_point->descriptor (m_priv->descriptor);
    } catch (...) {
        THROW ("failed to load plugin entry point '"
               + m_priv->descriptor->entry_point_module_name ()
               + " for plugin '" + m_priv->descriptor->name () + "'");
    }
}

Plugin::Plugin (Plugin::DescriptorSafePtr &a_desc,
                DynamicModuleManager &a_manager) :
    m_priv (new Plugin::Priv (a_desc, a_manager))
{
    THROW_IF_FAIL (m_priv);
    THROW_IF_FAIL (a_desc);
    THROW_IF_FAIL (Glib::file_test (a_desc->plugin_path (),
                                    Glib::FILE_TEST_IS_DIR));
    load_entry_point ();
}

Plugin::~Plugin ()
{
    LOG_D ("delete", "destructor-domain");
}

Plugin::DescriptorSafePtr
Plugin::descriptor ()
{
    THROW_IF_FAIL (m_priv && m_priv->descriptor);
    return m_priv->descriptor;
}

void
Plugin::descriptor (const Plugin::DescriptorSafePtr &a_desc)
{
    THROW_IF_FAIL (m_priv);
    m_priv->descriptor = a_desc;
}

Plugin::EntryPoint&
Plugin::entry_point ()
{
    THROW_IF_FAIL (m_priv && m_priv->entry_point);
    return *m_priv->entry_point;
}

Plugin::EntryPointSafePtr
Plugin::entry_point_ptr ()
{
    THROW_IF_FAIL (m_priv && m_priv->entry_point);
    return m_priv->entry_point;
}

void
Plugin::activate (bool a_activate,
                  ObjectSafePtr &a_ctxt)
{
    entry_point ().activate (a_activate, a_ctxt);
}

bool
Plugin::is_activated ()
{
    return entry_point ().is_activated ();
}

//**********************
//</class Plugin>
//**********************

//***********************
//<class PluginManager>
//**********************

struct PluginManager::Priv {
    vector<UString> plugins_search_path;
    map<UString, UString> deps_descs_loaded;
    map<UString, PluginSafePtr> plugins_map;
    DynamicModuleManager &module_manager;

    Priv (DynamicModuleManager &a_in) :
        module_manager (a_in)
    {}
};//end struct PluginManagerPriv

PluginManager::PluginManager (DynamicModuleManager &a_in) :
    m_priv (new PluginManager::Priv (a_in))
{
    plugins_search_path ().push_back (env::get_system_plugins_dir ());
}

PluginManager::~PluginManager ()
{
    LOG_D ("delete", "destructor-domain");
}

UString
PluginManager::find_plugin_path_from_name (const UString &a_name)
{
    UString result;

    vector<UString>::const_iterator cur_path;
    string path;
    for (cur_path = plugins_search_path ().begin ();
         cur_path != plugins_search_path ().end ();
         ++cur_path) {
        path = Glib::build_filename (Glib::locale_from_utf8 (*cur_path),
                                     Glib::locale_from_utf8 (a_name));
        if (Glib::file_test (path, Glib::FILE_TEST_IS_DIR)) {
            result = Glib::locale_to_utf8 (path);
            break;
        }
    }
    return result;
}

bool
PluginManager::parse_descriptor (const UString &a_path,
                                 Plugin::DescriptorSafePtr &a_out)
{
    Plugin::DescriptorSafePtr desc (new Plugin::Descriptor);

    if (a_path == "") {
        THROW ("Got path \"\" to modules config file");
    }

    using libxmlutils::XMLTextReaderSafePtr;
    using libxmlutils::XMLCharSafePtr;

    XMLTextReaderSafePtr reader;
    XMLCharSafePtr xml_str;

    reader.reset (xmlNewTextReaderFilename (a_path.c_str ()));
    if (!reader) {
        LOG_ERROR ("could not create xml reader");
        return false;
    }

    UString dirname =
        Glib::locale_to_utf8
                (Glib::path_get_dirname (Glib::locale_from_utf8 (a_path)));

    desc->plugin_path (dirname);

    if (!goto_next_element_node_and_check (reader, "plugindescriptor")) {
        THROW ("first element node should be 'plugindescriptor'");
    }
    xml_str.reset (xmlTextReaderGetAttribute (reader.get (),
                                             (const xmlChar*)"autoactivate"));
    UString autoactivate = xml_str.get ();

    if (autoactivate == "yes") {
        desc->auto_activate (true);
    } else {
        desc->auto_activate (false);
    }

    desc->can_deactivate (true);
    if (desc->auto_activate ()) {
        xml_str.reset (xmlTextReaderGetAttribute (reader.get (),
                                                  (const xmlChar*) "candeactivate"));
        UString candeactivate = xml_str.get ();
        if (candeactivate == "no") {
            desc->can_deactivate (false);
        }
    }

    if (!goto_next_element_node_and_check (reader, "name")) {
        THROW ("expected element 'name', got: "
               + UString (xmlTextReaderConstName (reader.get ())));
    }

    xml_str.reset (xmlTextReaderReadString (reader.get ()));

    desc->name (xml_str.get ());

    if (!goto_next_element_node_and_check (reader, "version")) {
        THROW ("expected element 'version', got: "
               + UString (xmlTextReaderConstName (reader.get ())));
    }

    xml_str.reset (xmlTextReaderReadString (reader.get ()));
    desc->version (xml_str.get ());

    if (!goto_next_element_node_and_check (reader, "entrypoint")) {
        THROW ("expected element 'entrypoint', got: "
               + UString (xmlTextReaderConstName (reader.get ())));
    }

    if (!goto_next_element_node_and_check (reader, "modulename")) {
        THROW ("expected element 'modulename', got: "
               + UString (xmlTextReaderConstName (reader.get ())));
    }

    xml_str.reset (xmlTextReaderReadString (reader.get ()));
    desc->entry_point_module_name (xml_str.get ());

    if (!goto_next_element_node_and_check (reader, "interfacename")) {
        THROW ("expected element 'interfacename', got: "
               + UString (xmlTextReaderConstName (reader.get ())));
    }

    xml_str.reset (xmlTextReaderReadString (reader.get ()));
    desc->entry_point_interface_name (xml_str.get ());

    if (!goto_next_element_node_and_check (reader, "dependencies")) {
        THROW ("expected element 'dependencies', got: "
               + UString (xmlTextReaderConstName (reader.get ())));
    }

    UString name;
    for (;;) {
        if (!goto_next_element_node_and_check (reader, "plugin")) {
            break;
        }
        if (!goto_next_element_node_and_check (reader, "name")) {
            THROW ("expected element 'name', got: "
                   + UString (xmlTextReaderConstName (reader.get ())));
        }
        xml_str.reset (xmlTextReaderReadString (reader.get ()));
        name = xml_str.get ();
        if (!goto_next_element_node_and_check (reader, "version")) {
            THROW ("expected element 'version', got: "
                   + UString (xmlTextReaderConstName (reader.get ())));
        }
        xml_str.reset (xmlTextReaderReadString (reader.get ()));
        desc->dependencies ()[name] = xml_str.get ();
    }

    a_out = desc;
    return true;
}

const UString&
PluginManager::descriptor_name ()
{
    static UString s_descriptor_name = "plugin-descriptor.xml";
    return s_descriptor_name;
}

bool
PluginManager::load_descriptor_from_plugin_path (const UString &a_plugin_path,
                                                 Plugin::DescriptorSafePtr &a_in)
{
    vector<string> path_elements;
    path_elements.push_back (Glib::locale_from_utf8 (a_plugin_path));
    path_elements.push_back (descriptor_name ());
    string path = Glib::build_filename (path_elements);
    if (!Glib::file_test (path, Glib::FILE_TEST_IS_REGULAR)) {
        return false;
    }
    return parse_descriptor (Glib::locale_to_utf8 (path), a_in);
}

bool
PluginManager::load_descriptor_from_plugin_name (const UString &a_name,
                                                 Plugin::DescriptorSafePtr &a_out)
{
    THROW_IF_FAIL (a_name != "");

    UString path = find_plugin_path_from_name (a_name);
    if (path == "") {return false;}

    return load_descriptor_from_plugin_path (path, a_out);
}

bool
PluginManager::load_dependant_descriptors
                                (const Plugin::Descriptor &a_desc,
                                 vector<Plugin::DescriptorSafePtr> &a_descs)
{
    bool result (true);
    map<UString, UString>::const_iterator cur_dep;
    Plugin::DescriptorSafePtr desc;
    for (cur_dep = a_desc.dependencies ().begin ();
         cur_dep != a_desc.dependencies ().end ();
         ++cur_dep) {
        if (load_descriptor_from_plugin_name (cur_dep->first, desc)
            && desc) {
            a_descs.push_back (desc);
            result = true;
        } else {
            LOG_ERROR ("Could not load plugin dependency: " + cur_dep->first);
            result = false;
            break;
        }
    }
    return result;
}

bool
PluginManager::load_dependant_descriptors_recursive
                                (const Plugin::Descriptor &a_desc,
                                 vector<Plugin::DescriptorSafePtr> &a_full_deps)
{
    vector<Plugin::DescriptorSafePtr> deps;

    if (!load_dependant_descriptors (a_desc, deps)) {
        LOG_ERROR ("failed to load direct dependent descriptors of module '"
                   + a_desc.name () + "'");
        return false;
    }

    if (deps.empty ()) {return true;}

    vector<Plugin::DescriptorSafePtr>::iterator it;
    vector<Plugin::DescriptorSafePtr> sub_deps;
    for (it = deps.begin ();
         it != deps.end ();
         ++it) {
        //if an asked dependency has been loaded already, don't load it
        if (m_priv->deps_descs_loaded.find ((*it)->name ())
            == m_priv->deps_descs_loaded.end ()) {
            m_priv->deps_descs_loaded[(*it)->name ()] = "";
        } else {
            continue;
        }
        if (!load_dependant_descriptors_recursive ((**it), sub_deps)) {
            LOG_ERROR ("failed to load deep dependent descriptors of module '"
                       + a_desc.name () + "'");
            return false;
        }
        a_full_deps.push_back (*it);
        if (sub_deps.empty ()) {
            a_full_deps.insert (a_full_deps.end (),
                                sub_deps.begin (),
                                sub_deps.end ());
            sub_deps.clear ();
        }
    }
    return true;
}

PluginSafePtr
PluginManager::load_plugin_from_path (const UString &a_plugin_path,
                                      vector<PluginSafePtr> &a_deps)
{
    PluginSafePtr result;
    string path (Glib::locale_from_utf8 (a_plugin_path)); ;

    if (!Glib::file_test (path, Glib::FILE_TEST_IS_DIR)) {
        LOG_ERROR ("directory '" + a_plugin_path + "does not exist");
        return result;
    }

    Plugin::DescriptorSafePtr descriptor;
    if (!load_descriptor_from_plugin_path (a_plugin_path,
                                           descriptor)
        || !descriptor) {
        LOG_ERROR ("couldn't load plugin descriptor for "
                   "plugin at path '" + a_plugin_path + "'");
        return result;
    }

    vector<Plugin::DescriptorSafePtr> dependant_descs;
    if (!load_dependant_descriptors_recursive (*descriptor, dependant_descs)) {
        LOG_ERROR ("couldn't load plugin descriptor dependances "
                   "for root descriptor '" + descriptor->name () + "' at '"
                   + descriptor->plugin_path () + "'");
        return result;
    }

    UString ppath;
    vector<Plugin::DescriptorSafePtr>::iterator cur_desc;
    vector<PluginSafePtr> dependances;
    PluginSafePtr plugin;
    for (cur_desc = dependant_descs.begin ();
         cur_desc != dependant_descs.end ();
         ++cur_desc) {
        try {
            THROW_IF_FAIL (*cur_desc);
            ppath = (*cur_desc)->plugin_path ();
            if (plugins_map ().find (ppath) != plugins_map ().end ()) {
                plugin = plugins_map ()[ppath];
            } else {
                plugin.reset (new Plugin (*cur_desc, m_priv->module_manager));
                plugins_map ()[ppath] = plugin;
            }
        } catch (...) {
            LOG_ERROR ("Failed to load dependant plugin '"
                       + (*cur_desc)->name () + "'");
            return result;
        }
        dependances.push_back (plugin);
    }

    try {
        ppath = descriptor->plugin_path ();
        if (plugins_map ().find (ppath) != plugins_map ().end ()) {
            plugin = plugins_map ()[ppath];
        } else {
            plugin.reset (new Plugin (descriptor, m_priv->module_manager));
            plugins_map ()[ppath] = plugin;
        }
    } catch (...) {
        LOG_ERROR ("failed to load plugin '" + descriptor->name () + "'");
        return result;
    }

    a_deps = dependances;
    result = plugin;
    if (result) {
        LOG_D ("plugin '"
                << a_plugin_path
                << "' refcount: "
                << (int) result->get_refcount (),
                "refcount-domain");
    }
    LOG_D ("loaded plugin from path " << Glib::locale_from_utf8 (a_plugin_path),
            "plugin-loading-domain");
    return result;
}

PluginSafePtr
PluginManager::load_plugin_from_name (const UString &a_name,
                                      vector<PluginSafePtr> &a_deps)
{
    PluginSafePtr result;

    vector<UString>::const_iterator cur_path;
    vector<string> path_elements;
    string plugin_path;
    for (cur_path = plugins_search_path ().begin ();
         cur_path != plugins_search_path ().end ();
         ++cur_path)
    {
        path_elements.clear ();
        path_elements.push_back (Glib::locale_from_utf8 (*cur_path));
        path_elements.push_back (Glib::locale_from_utf8 (a_name));
        plugin_path = Glib::build_filename (path_elements);
        if (!Glib::file_test (plugin_path, Glib::FILE_TEST_IS_DIR)) {
            continue;
        }
        try {
            result = load_plugin_from_path (Glib::locale_to_utf8 (plugin_path),
                                            a_deps);
        } catch (...) {}

        if (result) {
            LOG_D ("plugin '"
                    << a_name
                    << "' refcount: "
                    << (int) result->get_refcount (),
                    "refcount-domain");
            break;
        }
    }
    LOG_D ("loaded plugin " << Glib::locale_from_utf8 (a_name),
           "plugin-loading-domain");
    return result;
}

vector<UString>&
PluginManager::plugins_search_path ()
{
    return m_priv->plugins_search_path;
}

bool
PluginManager::load_plugins ()
{
    PluginSafePtr plugin;
    vector<PluginSafePtr> dependances;

    vector<UString>::const_iterator cur_dir;
    string path;
    for (cur_dir = plugins_search_path ().begin ();
         cur_dir != plugins_search_path ().end ();
         ++cur_dir) {
        try {
            Glib::Dir opened_dir (*cur_dir);
            for (Glib::DirIterator it = opened_dir.begin ();
                 it != opened_dir.end ();
                 ++it) {
                path = Glib::build_filename (*cur_dir, *it);
                if (plugins_map ().find (Glib::locale_to_utf8 (path))
                    != plugins_map ().end ()) {
                    continue;
                }
                plugin = load_plugin_from_path (Glib::locale_to_utf8 (path),
                                                dependances);
                if (plugin) {
                    LOG_D ("plugin '"
                            << path
                            << "' put in  map. Refcount: "
                            << (int) plugin->get_refcount (),
                            "refcount-domain");
                }
            }
        } catch (...) {
            continue;
        }
    }
    return true;
}

map<UString, PluginSafePtr>&
PluginManager::plugins_map ()
{
    return m_priv->plugins_map;
}

//***********************
//</class PluginManager>
//**********************

}//end namespace common
}//end namespace nemiver

redpajama_set_name: RedPajamaGithub


text:
Lollipop Chainsaw's Full Soundtrack Revealed with Behind the Scenes video
By Scott Ellison II (@Hawk_SE)
What is the exact soundtrack to a zombie massacre? In scoring the upcoming game Lollipop Chainsaw, artist Jimmy Urine (of Mindless Self Indulgence) and Grasshopper Manufacture Sound Director Akira Yamaoka had to address these types of questions. When Juliet rips through a decaying zombie torso with her trusty chainsaw, would Sleigh Bells fit better than Sinatra? Or should it be an original composition? In this behind the scenes video, Jimmy and Akira discuss the various influences that go into scoring a game with such a strong visual and creative style and the aesthetic basis from which the soundtrack was compiled.
[youtube=http://www.youtube.com/watch?v=AaCxKZSQQTI]
On top of the original music composed by Jimmy and Akira, there is a plethora of music licensed for the game as well. The full tracklist:
Lollipop – The Chordettes
Pac Man Fever – Buckner & Garcia
Rock 'N' Roll (Will Take You To The Mountain) – Skrillex
The Way of the Fist – Five Finger Death Punch
Stop Reading, Start Doing Pushups – Destroy Rebuild Until God Comes
Riot Rhythm – Sleigh Bells
Turtle Crazy – Toy Dolls
1,000 Cigarettes – MSTRKRFT
Heroes Of Our Time – Dragonforce
Nemesis – Arch Enemy
Needled 24/7 – Children of Bodom
Mickey – Toni Basil
You Spin Me Round (Like A Record) – Dead or Alive
Empire State Human – The Human League
Cherry Bomb – Joan Jett and the Blackhearts
Speed – Atari Teenage Riot
Available on June 12th, Lollipop Chainsaw is the 'un-deadly' story of sweet and killer zombie-hunter Juliet Starling and her quest to uncover the root of a colossal zombie outbreak. With her wickedly awesome chainsaw in hand, Juliet slices, dices and splits her way through hordes of the undead, but soon realizes the horde is only the opening act to a festival of zombie rock lords determined to kill the chainsaw-wielding cheerleader. The game will be available on Xbox 360 and PlayStation 3.


text:
The Penetrator #10: The Hellbomb Flight
Thomas Anderson	Reviews	 December 28, 2014 November 1, 2017 10 Minutes
Book Margins, Inc., 1975
Once second in command at NASA, Dr. Orlando Fitzmueller built a secret computer base in the Nevada desert. Through careful planning, diligent calculations, and sheer brilliance, he had developed a strategy that would help him realize his impossible dream of controlling world atomic power. It was up to the Penetrator Mark Hardin to stop Fitzmueller—and time was running out. For if the scientist's demands weren't met, he would ignite a holocaust from space that would kill 150 million people in the first thirty seconds.
I hope everybody had a merry Christmas, where applicable. Mine was nice. I slept on my mom's couch and watched Mythbusters for a few days, so there you go. I'm back now, though, to review yet another book that I wouldn't have looked twice at otherwise.
Well, I fib a bit on that one. See, I'm doing something special for the new year crossover, as well as the anniversary of me starting up this blog. Can you believe I've been at this for two whole years? I can't. It's insane. I've never stuck with a project even remotely this long. To celebrate, I'm doing not one but two Penetrator novels in a row. They're from an omnibus edition that I've had sitting around for a while.
See, the reason this particular edition would have caused me to look twice is because of what the spine says. I scanned it so you can see for yourself. It's unbelievable otherwise.
DOUBLE PENETRATOR
Mwahahahahahaaa
Yes, I have the sense of humor of a child. That's okay.
A few things are noteworthy about this omnibus edition. For one, it doesn't say anywhere where these two books lie in the Penetrator sequence of events. I had to look that up myself. Second, the author byline states "Chet Cunningham" instead of the usual Lionel Derrick. Chet is on record as being one of the two people to use the Lionel Derrick house name, and he did all the even-numbered Penetrator books. These two are, in case you were wondering, numbers 10 and 12. This means that one gets skipped in the meantime. That would annoy me, except #11 is Terror in Taos, so we aren't missing anything. Good.
I have to wonder what led to this publication and Chet getting the credit. There are two more Double Penetrator compilations, both of which also have Chet Cunningham books in them. Mark Roberts kind of gets the shaft here. I wonder if Chet (who has a lot of non-Penetrator books floating around out there) decided he could afford to buy up the rights to the ones he wrote and republish them under his own name. I wonder what led to that decision.
I can't find any reference on the publication page to when this omnibus was released. The cover makes it look, well, 80s. Mark's trademark pencil mustache is replaced with something a little bushier. He's wearing a wristwatch. I don't know about you, but I never imagined Mark Hardin wearing a watch. He wouldn't need one. We know this from the text, this isn't just me being goofy. It's been stated several times that he has a perfect time sense. He can even set a mental alarm clock that will wake him up right on time, all the time. A watch would be a liability.
Also, is he wearing a jumpsuit?
I don't like anything about this cover except that the licence plate on that car reads "ANGIE X." That's what it looks like to me, anyway. Since Angie is the closest thing to a steady girl Mark Hardin seems to have, that's a neat reference, except that we don't meet Angie until book 29, Aryan Onslaught. Deliberate? Coincidence? Who knows?
This book starts hot on the heels of the last one, Dodge City Bombers. In keeping with previous reads, the book begins with Mark recuperating from his last adventure, considering retiring from the business, and being called in to this next adventure.
We jump to some guy on the run from another guy who has a gun. This guy was involved in the plot that makes up this book, but he decided he wants out. The guy with the gun is playing cat-and-mouse with him in a cruel fashion. We learn that the guy is a computer programmer, and I only bring it up because it's so wonderfully dated. This computer programmer is thinking about how he got into this mess and how the pay he was offered, $15,000 over the course of six months, was just too good to be true, even for a programmer of his skill. This dude was flipping out over the promise of $30,000 a year. Amazing.
This book focuses on the bad guys a bit more than I expected. It seems that Dr. Orlando Fitzmueller, formerly of NASA, has a plan. He wants to hijack a Russian satellite filled with weaponry and hold the world hostage with it. He backstory involves being convinced that the Russians are not backing off on their weapons in space the way their treaty with the United States would have dictated they do so. He brought this to the attention of his superiors and was dismissed from government service for his efforts. Now he plans on proving himself right, all the while demanding that the world disarm from all nuclear weaponry. He thinks this will shepherd in a new world of peace. This is the most idealistic villain The Penetrator has yet to face.
And yet most of the book doesn't have Mark facing off against this guy at all. Mark spends most of the book tracking a few leads that don't get him much of anywhere, all the while shacking up with a lady he met in a previous book. She's named Joanna Tabler and she works for the government in some capacity, I don't remember if it was for the FBI or the DOJ or what. All we learn about her is that they met during the "Hijacking Manhattan" incident (verbatim the name of the fourth book), she used to be a model, and she's stone cold foxy. Together, they don't get much done in this book except for each other.
Another lady in this book turns out to be Dr. Fitzmueller's daughter, Hillie. The good doctor, in internal monologue, makes it clear that he's doing all this "for her." She's a college student. Mark meets up with her at one point and demands that she tell him where her father is. She insists that she's not involved and that she doesn't know what he's talking about. In the end, though, she uses her feminine wiles (read: she takes off her shirt) to try to distract Mark, but it doesn't work. He's too professional for something like that. While she's going through these motions, a goon tries to put a bullet in him, but Mark notices this right at the last minute and kicks him in the head so hard his neck snaps.
It seems that the Mafia is also tied in with this scheme, because of course they would be, but Mark overestimates their involvement. It just seems to go as far as Dr. Fitzmueller hiring some Mafia goons to help with guard duty. The guy with the gun at the beginning, Marshall Davis, is one such goon. The Mafia connection leads Mark down a few dead ends, but in the meantime he blows up a building just because it's a Mafia barracks. It was pretty great.
Dr. Fitzmueller gets a lot farther along in his plan than I'd expected, as well. He does, in fact, capture the Russian satellite. He's convinced that it's got nuclear weapons on board, but later events show that it's some kind of virus that could kill off all life on Earth. No matter, it's still good for holding people hostage. He makes his demands known across AM radio (hahahaha) and the government has to react. The clock is ticking.
But wait, something goes wrong for Dr. Fitzmueller! This was the part that surprised me most. There's a coup and the Mafia guy, Davis, takes over. See, though the whole book he's been asking questions about getting more money and how much money will there be and when's the money going to be here and all that. He's convinced for most of the book that this is just a typical hostage thing where money is involved. Dr. Fitzmueller never says anything to convince him otherwise until the demands are met. Fitzmueller's idea of "reward" for all his lackeys is, in fact, a world of peace. Aww.
So Davis throws Fitzmueller in a closet and makes his own demands. Lots of money, diamonds, gold. All that jazz. He gets in contact with the Mafia and tells them they can have a cut if they send some soldiers to keep an eye on the place.
This led to something that amused me. See, up to this point Mark had no idea where Fitmueller's hidden base might be. All he knows is that it's in the Utah desert somewhere (the whole book takes place in and around Salt Lake City). At one point he caught a glimpse of a helicopter that was involved in the operation, so being Mark Hardin he memorized everything about it and collected some information and then just sat at an airport waiting for it to come back so he could follow it. Not a bad plan.
What's funny, though, is that Fitzmueller, before the coup, made an order that the helicopter wasn't to fly out anymore. He didn't want anybody to follow it back to the base after the demands were made. He's a pretty clever idealistic villain. It looks like Mark is just wasting his time.
But the first thing Davis does after he takes over is send out the helicopter to pick up the Mafia soldiers and bring them back. That's what gets Mark on the trail.
Part of the demands Davis comes up with is that the delivery of valuables would also have to include a plane full of women and children. Mark, as he comes up on the place where the delivery is to be made, shoots out the tires on that plane. I'm not certain what that was supposed to accomplish. After that, though, he fights his way into Fitzmueller's compound.
What's interesting about all this is that there are something like thirty pages left in the book. All of the action is back-loaded, with a few exceptions. Mark does what he does best over those next thirty pages, shooting people, strangling them, and so forth. It's not as gory as usual, and there aren't any little backstories that set up a goon's motivations before he gets brain-smashed. Those might be from later books, or they might be something more along the lines of Mark Roberts's writing. There is a reference to a neck snapping like a twig under a Clydesdale's hoof, so that's pretty great.
It's about as quick and simple as you'd expect it to be. Dr. Fitzmueller surrenders to Mark after Mark points out that his daughter is a pretty young thing and that he knows some "white slavers" who might be interested in her until they "wear her out" in "three to six months." I don't know if that was a reference to an earlier book (one seems to deal with white slavery and Vegas showgirls, according to this list I found) or if was just a threat. It wasn't an idle threat, though, I can tell you that much. If anybody knows how to brutally demoralize a person, it's The Penetrator.
Fitzmueller sets the satellite on a collision course with the sun so that no one could ever use it for evil again. Not a bad resolution, although I'm not sure how well that would work. I don't think most satellites would have enough fuel and/or thrust to make it out of Earth orbit.
Mark stops a helicopter full of money from making it to Mexico. I believe he uses a sniper rifle of some sort. I don't know if Davis was supposed to be on board that helicopter, and in fact I don't recall seeing him die or escape at all. I wonder if he shows up in a later book. Whatever the case, Mark heads back to Joanna for some more sexytimes, talks to her boss on the phone who reveals that they never gave up any of the demands (it was lead bars painted gold, for example), and everybody is happy for a while.
Not the best Penetrator novel by any means, but a good one. Oddly enough, even though the plot involved taking over a Russian satellite and holding the world ransom, it had one of the more down-to-earth plots of the ones I've read. And it wasn't even all that evil, at least at first. Dr. Fitzmueller's heart was sort of in the right place. He just wanted a safer, happier world for everyone, including his daughter. It's hard to dislike a villain like that. I do wonder how likely he was to blow up half the world if his demands weren't met. He just didn't strike me as that kind of villain, which takes away a lot of the oomph. Maybe Chet Cunningham felt the same way, which was why he had the Mafia coup take over the whole operation. It upped the stakes, especially since Davis was presented as a stupid person who was more than willing to do some terrible things for money.
The book had one of the less likable female counterparts in the series, though. We're told that Joanna is capable and a skilled agent of whatever she does (and I think we get her doing some stuff in the book where Mark first met her), but in this one she's window dressing, something for Mark to come home to and maybe bounce a few ideas off of. I would have liked to see her get into the action a bit more, or pitch some ideas of her own around, or something. She was a little bit flat.
Mark still doesn't use much in the way of his Cheyenne powers, although his mentor, David Red Eagle, has a bit more prominence in this plot. We get a pretty extended training montage early on.
So yeah, this was a fun one. Next week (next year!) I'll do the other half of this omnibus, the unfortunately named Bloody Boston. In between these two books is #11, Terror in Taos, so if you're new, check that one out before next week. Before long I'll have knocked out this entire series, assuming I can find them.
80s Mark Hardin
Chet Cunningham
Lionel Derrick
Man Fantasy
Margins Inc
The Hellbomb Flight
The Penetrator
Published December 28, 2014 November 1, 2017
Previous Post The Wrong End of Time
Next Post The Penetrator #12: Bloody Boston


Panick slowly began to set in. I had 2 major reasons to panick. One of the reasons was not only did I have to subject him to getting poked in the arm by some stranger, I had to do it that very day! There's no time for planning. No time for preparing. No time to print out an illustrated social story. Getting a shot is definitely not part of the Monday routine.
A second reason I was panicking was because I knew that as soon as Matt figured out he was going to get a shot, he would practically gnaw his own arm off to get away from us all. Think of the anxiety a typical kid has when going to the doctor's to get a shot. Now multiply that by 10. It's an ugly picture and it's the primary reason that we have put it off for so long.
So, do I believe that my son's autism was caused by his childhood vaccines? No. But that's not to say that it isn't a trigger for others. Truth is, we just don't know. It hasn't been proven. Matthew was born in 2002 and I always asked the nurse to show me the ingredients label on his vaccines. I never saw thimerisal. Even with the removal of thimerisal in childhood vaccines, children are increasingly becoming diagnosed with autism. There is also speculation that possibly other ingredients in vaccines besides thimerisal play a role. I am not yet convinced but at the same time, I do space the shots out as far apart as I possibly can.
There are many people in the autism community who are 100% certain that vaccines are responsible for causing their child's and many other children's autism. I respect the feelings and opinions of these parents. It is such a sensitive and personal topic. I just feel personally, that it is not what caused my son's autism. I was actually condemned by one parent in the autism community for giving my child his vaccines. I was accused of not "caring about my son". Then I accused her of being a jerk. This was via internet. Because of that I decided never to join autism message boards.
John convinced me, that we could do this, so he put Matt in a strait-jacket type hold as I held his legs to keep him from kicking the tiny nurse. "All done!", she said.
I've seen many kids freak out and then once the shot was over, they would kind of sigh and sometimes giggle. Not Matt, he began screaming, "I GOT A SHOT! I GOT A SHOT!" You would have thought he was shouting "I'VE BEEN SHOT!". So as we walked through the lobby to head out the door, one woman looked at him and smiled. Clearly she was trying to make him feel better, but he perceived her as laughing at him. "I GOT A SHOT AND IT'S NOT FUNNY!", he shouted at her.
Once we got him in the car, we promised to take him through McDonalds drive-through as a reward for his bravery. After shoveling 10 french fries in his mouth, he promptly threw up in the car. Thank goodness for leather seats. Much easier to clean.


1. At the product page, choose the appropriate size, color etc. and then click the 'Choose" button and Add To Cart .
2. After you have filled your cart and have checked the details, click on 'Proceed to Checkout'.
3. You will be lead to a 'sign up' page. If you have an account, sign in. If not, just set up a free new account with us.
4. Next, fill in your preferred delivery address, your payment method. When you have confirmed your details, click on the 'Place Order Now' button. Make sure you create and enter a password and automatically you be a registered member with us.
5. After checking out, you will receive a confirmation email that your transaction was succesfull.
We are sorry to inform you that this can sometimes happen due to high traffic volume of customers. In the event the ordered item is out of stock our Customer Service Representatives will call to inform you on the affected items and we will return your money or you also can choose other items.
# After payment, please send payment slip to sophanaonline@gmail.com in order to complete your transaction.
PayPal is a payment method for online purchases that allows users to send and receive money online. PayPal offers a fast, safe and easy method of payment without disclosing your credit card or other financial information to the merchant. For more information visit www.paypal.com.
General delivery period is within 3 to 7 days. We aims to deliver within the time frame. However due to reasons beyond our control, we are sometimes unable to guarantee that all orders will be delivered within the stipulated time frame. This could be due to delays by third parties.
My items haven't arrived yet. What can I do?


text:
Things that I learned or heard since last year; things that I am working on for new pieces; things that I was thinking about a long time ago and that suddenly seemed relevant again. They ended up summarizing my own thinking at the moment, in a way representing the voices in my own head that argue over topics that are central to my work. Whiff does it from a radicalist point of view; Alexandra from a humanitarian point of view; Mrs. Malik from an academic point of view; and Max, the consultant, from a reformist or (semi-) scientific point of view. In the piece, I am the person handing the microphones to various characters, indicating who I want to hear at what moment.
As a result of that, perhaps, I simultaneously, and to an equal extent, agree and disagree with each of the characters. To the audience, I want them to be equally sympathetic and unsympathetic. It's a bit like a morality play with rather confused personifications. There is no center to their debate; no plot in the script; nobody wins or loses. In a way that's how thought works (for me, at least) and what makes it productive. I hope that I can extend some of this to the audience, too.
Nicoline van Harskamp, Any Other Business (audience) (Photograph by Willem Sluyterman van Loo)
Some of your works derive from real historical circumstances or characters, such as Yours In Solidarity which centered on the anarchist Karl Max Kreuger. Are any of the characters in Expressive Power Series Part 1 based on real, historical figures?
For all my scripts I use existing audio or video footage that I find or that I produce, myself. I interview people or set up a debate and then use the transcriptions. Or I ask for the recordings of a meeting I have attended or heard about. I also write myself into the scripts, but never from a blank Word file. Instead, I record occasions where I speak in public, and then transcribe my own words in order to get a more distanced account of my own language. I try to avoid books and theory, instead using YouTubed conferences or published conversations and speeches. I also like autobiographies as they are set in the first person and can be very useful. At the moment, I am using an anarchist archive, with personal correspondence also set in the first person. There is an informal, improvised quality to the language that I use. The personalities of speakers come through their statements. An unfinished sentence, for example, can be very telling and productive for a script.
But I never represent a single person directly. I do not make re-enactments of existing moments of the distant or recent past. The characters I create are always collages of lots of different people; their lines made up of lots of different voices. The material is so heavily edited, sometimes with three people in one sentence, that it would be hard to quote anyone directly and I doubt that anyone would recognize my source material.
But since you're asking: in Expressive Power Series Part 1, as I said before, I have gone a bit wild on the source material. I have recycled almost everything I have used in the past, and added new things to it. The script has traces of Emma Goldman, Peter Gelderloos, Gayatri Spivak, Marshall Rosenberg, Mikhail Bakhtin, Grinder and Bandler, Michel Foucault, Margaret Thatcher, Hannah Arendt and a very large number of lesser known individuals.
Nicoline van Harskamp, The Power of Listening (stage) (Video Still)
With Max Bonner's presentation of Personal Dynamics, it seems like part of the Expressive Power Series Part 1 performance will have a corporate workshop element, one that might be not only directed at the fellow actors but the audience as well. What role will the audience play in this performance?
The pieces don't take place in a theatrical setting, but in contexts appropriate to the subject matter: a conference centre, a seminar room, a classroom. They are places where people normally sit and listen and that have of course some theatrical aspect to them already. But I never try to trick people into thinking that the situation is real. I want the impact of the work to go beyond that sense of confusion. The works are announced as 'a scripted debate', 'a scripted conference', and so on. So really, the ideal audience for me is one that simply attends the performance as if it were attending a seminar or a talk.
In many of my works I plant actors in the audience for theatrical, conceptual and perhaps even dialectical reasons. They interfere with the 'performance' on stage in a very precisely timed and fully scripted way. The actors sometimes complain that I don't allow for any improvisation at all, but creating an impromptu situation that still makes sense in terms of content, takes a lot attention to detail. So the performances are very controlled, much more than you'd think when you see them.
Paradoxically, the more effective the pieces are, the more likely it is that actual audience members take them for participatory works. There's been a lot of 'audience contributions' over time, so by now I built an exit strategy in each piece. That is, I appoint one character to bring the interruption to a hold and give a cue to the others where to continue in the script. At the premiere in Rotterdam, we certainly needed that strategy, as we had an angry walk-out situation. But at that same premiere there were people who, despite knowing me or my work, couldn't help themselves whispering encouraging words to characters having a hard time. It's a real achievement of the actors that they managed to make people suspend their disbelief for the duration of the performance. I hope they'll do that again in New York!
You've already staged Expressive Power Series Part 1 at the Witte de With in Rotterdam this May, and after the June 18th event at the New Museum, the performance will take place again at the Stedelijk Museum in Amsterdam in August. You use different cast members in each performance, correct? Does this change or modify the bounds of the performance at all? If so, is that the intent?
The heart of this and all the other performances is the script. A good script can and should be played over and over again, in different versions and interpretations. I've heard actors say that in theater, a piece starts, not ends, with its first performance. That's quite different from an average art production, where you open a show with a work that is finished and done. I would say that the medium of performance has an element of both worlds. The script and concept is unchangeable, but the execution is open to changes. Performance has an element of repetition in it, and restaging it in different contexts is one of its greatest potentials.
Expressive Power Series Part 1 is the first time I work with (partly) different casts for the same piece. Two of the four Dutch cast (native English speakers based in Amsterdam) will be in New York, the other two are local New York actors. Although any skilled and well-cast actor can play this piece, I would never say that actors are interchangeable. Their input makes or breaks the work, I am very well aware. So I think that in New York we might end up with a slightly different piece than in Rotterdam. I am very excited to see what happens.