text:
Chris Brown's Latest Role Is Problematic
Story from Entertainment News
Chris Brown's Latest Role Is Raising A Lot Of Eyebrows
Madison Medeiros
Earlier this week, Variety broke the news that Chris Brown would be starring in Nick Cannon's latest directorial project, She Ball, a film about a group of skilled basketball players who help save the Inglewood Community Center. Not many other details have yet to be released, but that didn't prevent many people online from dragging Cannon's decision to cast Brown, who plead guilty in 2009 to physically assaulting then-girlfriend Rihanna.
In the subsequent years, Brown has been accused of pushing a woman in a nightclub and becoming violent during a taping of Good Morning America. More recently, the Las Vegas Metropolitan Police Department investigated one woman's claim that Brown assaulted her and stole her phone in 2016.
People took to Twitter to share their thoughts on Brown's casting, which many were uncomfortable with — especially because the film is about women excelling in a sport often dominated by men.
A movie about a badass women's basketball team that focuses on mostly men and stars known abuser Chris Brown is the embodiment of everything women have been fighting against the past few months.
Hard no on this one. https://t.co/wYahROvX6Y
— Alex Berg (@AlexfromPhilly) December 20, 2017
This seems ill advised.
— Michael De Rose (@MichaelCDeRose) December 19, 2017
pic.twitter.com/Kqwy08Ip6q
— Marcelle "A Margarita Debayle" Pallais♐ (@marcelleissweet) December 19, 2017
Well I can't forsee any problems here. Say, who wants to drink some of my refreshing gasoline?
— Ian Fortey (@IanFortey) December 19, 2017
What is the target audience for this movie? pic.twitter.com/qE1JHF5Knn
— Momthra (@Momthra) December 19, 2017
The past year has been incredibly taxing for women. We started out the year marching against inequality and we finished it by coming forward with painful, deeply personal stories of sexual harassment and assault in hopes of empowering other survivors, holding sexual predators responsible for their actions, and eradicating rape culture.
As men like Harvey Weinstein and Kevin Spacey have lost their jobs (and in Spacey's case, been replaced in a film and written out of a TV series) it seems inappropriate to cast a man known for being physically violent to tell a story largely about women.
How are women supposed to feel as if their voices are heard if the same men who have tried to silence them are rewarded by being put in the spotlight?
While there is no easy solution to reckoning with predators, it's on all of us to continue to fight for change. This includes, but is not limited to, telling survivors we believe them, calling for high-profile men to be held accountable for their actions, and accepting the reality that an apology or confession doesn't absolve reprehensible behaviour.
Rather than cast someone like Brown, why not create a role for a woman of colour? It's time we focus our energy and money on people who can effectively change the narrative, or, at the very least, not make the women who want to see an empowering story feel conflicted.
Refinery29 reached out to reps for Cannon and Brown.
The Story Behind The Meme: Overly Attached Girlfriend
Where Are They Now: 15 Of Your Favourite Celebs From 15 Years Ago
The Hottest Movie Sex Scenes, Ever (NSFW)
Chris Brown Casting Nick Cannon Film She Ball Reactions
Entertainment News • Movies
written by Madison Medeiros
Photo: Allen Berezovsky/WireImage
The New Lion King Gives Its Female Characters Actual Thi...
The Come-Up: Shahadi Wright Joseph Just Can't Wait To Be Queen
Disney has no shortage of princesses: There's Cinderella, Aurora, Jasmine, Belle, Tiana, Elsa. They span decades and continents and (finally) races.
by Morgan Baila
17 Things You Didn't Know About When Harry Met Sally
In an alternate universe, When Harry Met Sally stars Tom Hanks and Molly Ringwald as Harry and Sally, and the movie ends with them parting ways forever.
by Elena Nicolaou
The Alternative Version Of Midsommar Is Probably Even Mo...
Whether or not you can handle Ari Aster's brutal cult movie Midsommar depends on a lot of factors, such as your tolerance for gore as well as truly
Here's Your First Look At J.Lo, Lizzo & Cardi B As Con Artis...
More money, more problems? Probably, but the new teaser for Jennifer Lopez's upcoming film Hustlers shows one of the many, many perks of having a ton of
The Time-Bending Plot Of Netflix's Cities Of Last Things...
Warning: This post contains spoilers for Cities of Last Things on Netflix. Cities of Last Things begins at the end, and it begins with a shock. A man
R29's Official Ranking Of The Best Netflix Original Romcoms
We tend to be reluctant to admit how much we enjoy romantic comedies, but the love is very much there. Whether in need of a comforting hangover remedy or
by Jazmin Kopotsha
Scarlett Johansson Sparks Backlash By Saying She's Allowed To Pla...
Update, July 14, 2019, 3 p.m. ET: Scarlett Johansson further clarified remarks on Sunday she made about her controversial casting decisions in an
by Tara Edwards
The Next James Bond Film Is Getting Its First Black & Female 007
The internet may have wanted a Black Bond, or a female Bond, but it looks like we're getting both. And neither. Lashana Lynch has been tapped to play
My Dallas Apartment Costs £940 A Month—Here's How Big It Is
What It's Really Like To Work As A Cam Girl
I Got Ready With YouTube Sensation Nikita Dragun
I Pay £1,240 For My Brooklyn Apartment—Here's What It Looks ...


text:
The Climate Justice Alignment Process Begins
Jan 1, 2009 | Timeline
Our roots are embedded across the environmental justice movement landscape of Turtle Island (North America), 500+ years of struggle against settler colonialism, and the vision, values and principles formulated and raised up by grassroots climate justice leaders, such as the 1991 Principles of Environmental Justice, and the 1996 Jemez Principles of Democratic Organizing.
Recognizing the need to strengthen democratic representation of frontline community leadership at national climate movement tables, U.S. federal climate policy arenas and UN climate conferences, we drew on the groundwork of the Indigenous Environmental Network (IEN), the Environmental Justice Climate Change Initiative (EJCC), the Just Transition Alliance (JTA), Global Alliance for Incinerator Alternatives (GAIA) and the Environmental Justice Leadership Forum on Climate Change (EJLF) to conduct a deep climate justice power analysis and organizing strategy prior to founding CJA.
Ecojustice People's Movement Assembly, Detroit, 2010
Several meetings were held, leading up to a national Mobilization for Climate Justice in 2009, and a grassroots community delegation and allies to the UN climate conference in Copenhagen (COP15). CJA Co-Founders IEN, EJCC, GAIA, Ruckus Society, Movement Generation, and Grassroots Global Justice Alliance (GGJ) also worked with the East Michigan Environmental Action Council, Rising Tide and the Zero Waste Detroit Coalition to initiate a 400-person Ecojustice People's Movement Assembly and the March for "Clean Air, Good Jobs & Justice for All" at the 2010 US Social Forum in Detroit.
March for "Clean Air, Good Jobs & Justice for All"
Through these assemblies, it became clear that we needed to strengthen alignment among environmental organizations, social justice organizations, and frontline communities and develop a unified vision, shared principles, and the transformative strategies necessary to address the need for real economic and social remedies to the ecological and climate crises. The founders of CJA recognized that only by weaving our efforts together would we be able to create a force powerful enough to counter the ''jobs vs. environment'' and "climate deniers" frame while providing a visionary pathway forward for our communities, for Mother Earth, and for future generations.

redpajama_set_name: RedPajamaCommonCrawl


text:
Northern win in Logan's sights
Lacustre on his way to winning the Pakuranga Hunt Cup (4900m).
Kristin Ledington
Fledgling trainer Samantha Logan will hunt her first Network Visuals Great Northern Steeplechase (6400m) win at Ellerslie on Saturday but don't presume this has been anything but meticulously planned.
Logan, a daughter of leading trainer Donna Logan and her late husband and training partner Dean, has been training professionally for just four years but the 27-year-old has already impressed astute judges with her success rate.
She will saddle last-start Pakuranga Hunt Cup (4900m) winner Lacustre in Saturday's jumping showpiece, happy she has the Postponed eight-year-old gelding in perfect order.
"Winning the Pakuranga (Hunt Cup) was probably the best day I've had, just for a long-term plan to come to fruition," Logan said.
"We've been aiming at this double for 18 months and for it to start coming together like that, it was huge."
Logan learned much of her training craft from her mum, best known for preparing the likes of Group One flat stars Habibi, Rising Romance, Volkstok'n'barrel and Victory Smile, but also doing the early work with Great Northern Hurdles (4190m) runner-up Seeking The Silver.
"I've just learned how to train jumpers from watching Mrs (Anne) Brown and Craig Thornton, Harvey and Ann Wilson, and Paul Nelson. I watched how they placed their horses," she said.
"I looked up past winners of the Great Northern Steeples such as Amanood Lad and Hypnotize and spoke to Garry Cossey and we've just followed similar campaigns to them.
"He's travelled as few miles as possible and we haven't had to expose him too much."
That means Lacustre, a winner of two of his eight steeplechases and placed in the McGregor Grant Steeples (4150m) at Ellerslie in June, goes into the Great Northern on the 65kg minimum, with Pakuranga Hunt Cup-winning jockey Shaun Phelan retaining the ride.
"He's really well. I haven't done a lot with him since Pakuranga and he's ticking along nicely," Logan said.
"That race brought him along nicely and he's a happy horse. He's just as well as he was going into Pakuranga and it's a very similar field.
"I'm looking forward to it but I'm a bit nervous. I just want it to be over now. You just get worried about small silly things but he's 100 percent and we've got to keep him that way."
Logan said she had no special formula for training jumpers and prepared Lacustre for the Great Northern Steeples just as she would prepare any flat galloper for an upcoming race.
"You've just got to get them fit and keep them sound and then it's just down to whether they are the right type of horse," Logan said.
"He didn't win his maiden till he got to 1900m and he's just got an economical galloping style. His heart rate never gets too high, even from going up Brownes' hill. He's just got that natural stamina.
"He wasn't a great jumper early on. That's why we messed around with him over hurdles for so long, improving his jumping, which has really helped."
While her recent success with jumpers has raised Logan's profile, she's just as adept with a flat galloper.
"I'll take on whatever comes through the gate," she said.
"I love jumps racing and love the people in jumps racing but my real passion is flat racing."
TAB bookmakers have Lacustre as a $2.70 favourite for the Great Northern Steeples ahead of Max and The Arabian Duke, both at $4.40. - NZ Racing Desk


The folks at Littlbug support "Leave No Trace" camping principles. If you are at a campsite that does not have a designated fire pit, we recommend you use the optional Littlbug Fire Bowl or build a mound fire. For a mound fire, collect soil, sand or gravel from an already disturbed source, lay a ground cloth on the fire site and then pack the gathered material into a circular, flat-topped mound at least 5 inches thick.
Tinder - easily ignitable fuel such as birch bark, dry leaves, pine needles, newspaper or commercial firestarters.
Kindling - small sticks about the diameter of your finger.
Firewood - pieces from finger to wrist diameter.
Remove dry grass, small twigs and anything else that could catch fire from around the stove.
Loosely fill the stove with a mix of tinder and kindling.
Light the tinder at the top of the stove.
Slowly add kindling as the tinder burns down. Hold the sticks upright and drop them into the stove.
As the fire grows slowly add larger sticks.
The Littlbug Stove is designed to increase the flow of air through the fire. Over packing the stove with fuel can choke the flames and make a smoky fire. Smaller sticks make a hotter fire and larger firewood burns slower. If the stove generates a lot of smoke when you place the pot on it, check to make sure you have assembled the stove with the pot supports up (pot support tabs down).
Under wet and windy conditions, turn the stove so the vents are protected from the wind or lay the stove on its side to keep your tinder dry as you start the fire. Once the kindling is burning, place the stove upright. A pot grabber works well for this. The stove gets hot quickly. Do not touch it with your bare hands.
For those times when you have an obstinate campfire, you can make a Littlbug Fireblaster to blow air without getting your face close to the fire. The directivity provided by the fireblaster will put the air right where you want it. You can make it from a 3/8" vinyl tube 2 – 3 feet long and a copper water faucet supply tube. Cut the supply tube about 1/3 from the enlarged end. Insert each piece in opposite ends of the vinyl tube. The enlarged end is the mouthpiece and the other end can be bent however you want. If you use it in winter conditions, consider replacing the metal mouthpiece with a plastic supply tube.
When you are finished with the stove, make sure your fire is completely out. Scatter the ashes (which should be cold to the touch) to lessen your impact. If a mound fire was constructed, replace the gathered material where you found it. Please practice "Leave No Trace" camping principles - for the earth and those who follow you.
Remember that the most important fire is the next one. Carrying dry tinder with you can make that next fire easier to light.
The Littlbug Stove will accommodate a wide variety of pressurized and nonpressurized alcohol burners.
An alcohol flame can be hard to see. Make sure the stove is cool before handling it and never pour alcohol near a flame.
Denatured alcohol can usually be purchased where paint is sold.
Assemble the stove with the pot supports in the down position (pot support tabs up).
Center the stove over the alcohol burner.
You can increase the efficiency of your alcohol burner by replacing the pot supports with the Littlbug Pot Sling.
For a durable, lightweight water tote, put a 2 – 2.5 gallon ziplock bag in a string shopping bag. You'll be hard pressed to find a large capacity water bag that collapses to such a small package. Its wide opening makes filling a snap. Let the bag rest in the water while you close the top – this helps hold the bag and minimize spilling. The bag can be partially opened to form a pour spout. Hang it from a tree. For even greater convenience, you can have running water by clipping a 3/8" vinyl tube to the inside of the bag and siphoning the water out. To stop the water flow, raise the free end of the tube above the water level in the bag. If you want to increase the water flow, just hang the bag higher. Makes a great shower, too.
You can waterproof strike anywhere matches by coating them in nail polish, shellac, or paraffin.
You can freshen up a water bottle by putting three teaspoons of baking soda into it along with one cup of water. Swish, let sit, then rinse.
Ever been bothered by one end of your bootlace being longer than the other? Try tying a knot in the middle of the lace. This keeps the lace centered between the bottom eyelets, hence the ends you work with will remain close to equal.


text:
Glyphipterix acronoma is a species of sedge moth in the genus Glyphipterix. It is endemic to New Zealand and is found in the North and South Islands. It's preferred habitat is open fields on mountain sides and adults are on the wing in December and January.

Taxonomy
This species was first described in 1888 by Edward Meyrick under the name Glyphipteryx acronoma.  Meyrick used two specimens collected in January at approximately 4000 ft up Mount Arthur to describe the species. George Hudson also used this name when describing and illustrating this species in 1928. In 1986 the genus Glyphipteryx was judged an unjustified emendation of Glyphipterix Hübner so this species is now known as Glyphipterix acronoma.

The lectotype specimen is held at the Natural History Museum, London.

Description

Meyrick described this species as follows:
Alfred Philpott studied the maxillae parts of lepidoptera including this species and stated that the genus to which this species belongs had palp that were three or four segmented and were smaller than other genera studied.

Distribution
G. acronoma is endemic to New Zealand. As well as the type locality of Mount Arthur, this species has been found at Waimarino and Gollan's Valley in Wellington both in the North Island, as well as  in Fiordland, near the Mararoa River in Southland, and in the Queenstown Lakes District, all in the South Island.

Lifecycle and behaviour

This species is on the wing in December and January.

Habitat
The preferred habitat of this species is open fields on mountain sides.

References

Moths described in 1888
Glyphipterigidae
Moths of New Zealand
Taxa named by Edward Meyrick
Endemic fauna of New Zealand
Endemic moths of New Zealand

redpajama_set_name: RedPajamaWikipedia


text:
Q: Visual Studio 2012 - location of Conditional Compilation Symbols settings I cannot for the life of me find the field where I'm meant to input the conditional compilation symbols for a project in Visual Studio 2012. I'm new to this feature so I don't know if it's been renamed something else, but I'm trying to follow this guide but I get stuck at picture #4. I can't find a Build tab in the project properties, let alone the conditional compilation symbols field. I'm in a C++ project if that makes a difference.
I've looked in documentation and Googled it to no avail. Thanks!

A: Ok so someone else I asked has found the solution:

*

*Go to Project properties > Configuration Properties > C/C++ > Preprocessor

*In Preprocessor Definitions click the drop-down arrow on the right and do <edit>.

*Add the new definition to the text box on a new line.

Credit to user Steve.

redpajama_set_name: RedPajamaStackExchange


Published: "The North Shoreian Magazine," The Writer's Issue, Volume 1, Issue 9, September 2008.
The forest watched Jared run. He could feel their eyes on him, even if he didn't believe it. He had grown to love these woods, and today he felt a part of them. He moved among them. Under branch, over fallen tree, around bush, and across stream, he ran, more akin to the forest than a passenger under its shadowy gaze.
He never ventured so deep before this. His heart raced. The taste of forbidden sweetened his lips. He wouldn't be able to return before dark. He laughed at the sense of freedom.
The sky was closing. Branch intertwined with twig and trunk, becoming a barrier between him and the sky. Jared squinted as his eyes adjusted, but didn't slow his prideful steps. Nothing would stop him. He would see the heart of the forest, of which the townspeople spoke in haunted whispers and dark corners. A forbidden place, and he would be there. His determined heart beat to the rhythm of his goal.
"I'm coming," he called to the trees, speaking with them as naturally as ever he did his own family. After all, he spent equally as much, and often more pleasurable, time amidst the woods.
He stumbled, but regained his balance. Where did that root come from?
Some said the forest was alive, old, and angry in its age. Jared shook off the thought. "Just more of their scary tales," he told himself. "Fairy tales to keep children from going so far." Shadows shifted from behind two large trees he passed between. My imagination. The feeling of being watched persisted, prickling at the nape of his neck. He glanced over his shoulder so frequently he ran face-first into a branch.
Jared shoved it aside and sprinted deeper into the forest. That branch…wasn't there. He swiped leaves from his hair, and his hand came back red. He remembered the path, there had been nothing in his way before he glanced over his shoulder. His resolve wavered. A root caught his foot and he tripped, stopping his fall with his hands. He shoved himself upward to regain his balance, but vines ensnared his right hand.
Jared crashed to the ground, ripped his hand free, and tumbled into a bush. Propelled by momentum, he passed through the thick foliage and rolled into a dry clearing. Towering trees raised their trunks to unimaginable heights to form a canopy of interwoven branches and leaves. Pallid light squeezed through, as if exhausted from its travel to the clearing. Around him, a wall of old trunks, thick roots, and tangled vines caged him. He couldn't even tell how or where he'd entered.
In frustration, he tried to force his way between two trees, but the opening proved too narrow and seemed to close all the more tightly with his efforts.
Searching the perimeter of the clearing, he examined the brush and even tried to make an opening, but only came away with a handful of crushed leaves and no progress toward making or finding an exit. He set the leaves on the ground.
"Sorry. I need to get out," he murmured from habit.
"Yes, he does confuse, sunfuse, concuse." A rustling, breezy voice responded.
Jared fell to the ground, staring up into the talking branches. Certainly it seemed they were talking. They have to be, he told himself. They even sounded like trees, though he couldn't explain what precisely that meant.
"…will always keep watch for the Lost." Oak, a large towering tree in front of Jared, seemed to bend with age and sadness, as if the steady crawl of the ages had worn deep into its bark.
The vines covering each tree coiled slowly down to the edge of the clearing. It made him think of a snake with no end. He shuddered with a sudden aversion to the thought.
Oak glared down at him as if considering what to say. Jared couldn't explain how he knew the tree looked at him, but he decided not to question it. Enough was strange already.
"He understands us. It has been a long since one has understood." Oak's leaves rustled as if releasing a long held tension.
"A sign! It must be! Right, Oak? It must be, must. Yup must." Pine creaked, evidently quite giddy.
"Are you, young sapling?" Oak asked.
Jared didn't understand what they were asking and inched backward, but heard the vines moving close behind. What did they want of him?
"Am I what?" He almost shouted, barely holding back tears. Sweat chilled his neck and he shivered.
Jared's heart quickened with fear. All he could see were vines, root, and trunk. No escape.
"Your silence is an answer. Do you want to keep it?" Oak rumbled.
"Maybe I don't remember." Jared wasn't sure where he was going with this, but if he stalled long enough he might be able to figure something out or find a way to escape.
"Umm…" Jared had no answers. His time was up. I'm dead.
"Not yet." Vine coiled closer, covering the dry ground of the clearing.
On instinct, Jared said the first thing which flew into his mind. "Last year, I buried one of my favorite toys, a wooden gargoyle my grandfather carved for me. I did it because my older brother kept saying he would break it. Later when my brother was away I went to dig it up and play with the gargoyle, but I couldn't remember where I put it. I looked and looked and looked." Tears welled in his eyes and he wiped them away with the back of his fist, but not before a few drops salted his lips.
"No, but he still is my favorite. I can't remember where it is. Just because I can't remember doesn't mean it isn't there." Jared dried his face on his sleeve and waited.
The vines circled closer and Jared brought his feet in close to his body and huddled against his knees. He tried to peel his eyes from the slithering mass and failed.
Pine gave its agreement in a whistle of wind through the tower of its needles.
Silence covered the clearing. Nothing stirred aside from the small movements of Vine as it made sudden shifts around the boy.
No, please don't let Vine have me. Jared stood as the vines writhed with even more vigor.
"Shut up!" The vines tightened around Pine. "Those times are gone. You will listen to me. I riddle. It has been such since they left and it will be till they return." Vines knotted around the trees, but Jared noticed they also caressed and soothed.
The trees calmed and whistled with the wind.
Vine lurched toward Jared's face and stopped within inches before retreating. Jared was sure he went too far.
"I will say it in my own words. Agreed, Trees of Evermore, Forevermore, Nevermore?" Vine gave emphasis to the last word.
Tendrils closed about Jared and wrapped around his ankles, waist, and arms.
In front of him, roping vines coalesced into the shape of a man, clothed in leaves, flesh of root, and smile of embittered age. It spoke, but its lips did not move. "Your time has come fleshling. Are you ready to be riddled?" With the last word, the vines tightened around Jared, making him gasp for air.
"This is their riddle, but I will say it." Vine paused as if gathering a breath. "We are the Trees of Evermore, Forevermore, Nevermore. Branch, root, and trunk make us one. We are Evermore. Bug, claw, and feather are akin. We are Forevermore. Betrayal, slavery, and yearning marks the Lost. We are Nevermore. Who are we?" The vine man smiled down on him with malice and surety.
Jared had no idea. It could be the names of the trees. But, that would be too easy.
The vines constricted and he struggled to breath. His vision blurred from lack of air and panic began to take him, but anger conquered his fear. This was too much like what his brother did to him. He wouldn't be bullied. "My name isn't…fleshling. My name is Jared!" Suddenly, the vines fell away and he took in a full gasp of air.
The vine man glared at him and pounced, gnarled hands going for Jared's throat.
Loud cracks and snaps reverberated through the clearing and Vine reared up in surprise. The vines on the trees broke away to fall in a rain of broken root and twisted leaf. The trees straightened, as if casting away a long held weight. Their leaves straightened with new vibrancy.
"You are done, Vine. Leave the Trees. Your riddles are no longer needed." Oak's deep voice boomed through bark and flesh.
Jared smiled, but hid it when Vine looked back at him.
"I will remember this, fleshling." Vine unraveled and slithered from the clearing, revealing exits among the trees.
"You have done well. One of the Lost is Found. Welcome home." Old, muscular roots parted soil and lifted Jared to the sky, passing him from one thick branch to another till he perched above the trees elevated on a nest of soft leaves. The forest came alive with song and celebration.
Wind, rustle, and creak comprised the tune and it brought tears of joy to Jared's eyes, washing away all fear. He could see the green floor roll away into the hazy distance, forever alive, forever there.
Jared grinned and held tight to a branch, enjoying the view as the sun worked its golden fingers on the green landscape. Home.
That was awesome! I really enjoyed it, nice work.
I'm glad you enjoyed it. The ending was partly yours. Thank you for the idea.
Fun story. At first, I didn't think I would enjoy it, but it caught me and held me to the end.
Nice story! I enjoyed reading it.
What a delightful story. it wrms my heart to read it.
Awesome Judah! That was really fun to read. Great job!
I liked your story, the world you created made me think of the woods back home, even if we do not have the hardwood trees. It brought me feelings of mystery and suspense with an ending to please.


text:
Home » Series » Bookmarks »
Steve Almond On 'Stoner'
Listen now Download file
Your browser does not support HTML5 audio. Please update your browser to hear this media content.
Author Steve Almond recommends "Stoner" by John Williams.
My name is Steve Almond and the book I want you to read as soon as possible — actually, you could actually be reading it while I'm talking to you, it's that good. And I'm that boring. That's a novel called "Stoner."
It was given to me many years ago by a friend of mine, and I can tell you that I thought it was about something very different from what it actually turns out to be about —the book is not actually about any kind of drug fueled exploits, and may be the quietest and most restrained book I've ever read.
It's about a man named William Stoner. The first couple of paragraphs essentially announced to the reader that he was an academic, that he studied medieval literature and he taught for many years at the same school. He did not go off to World War I and become a war hero. He was not involved in any major intrigue. He is mostly a forgotten figure, forgotten to his colleagues and his students. They don't think about him at all.
It's the strangest opening to a novel I've ever experienced. And it's also completely hypnotic. The book is about one man's life. And it really represents those of us who are really which is most of us who are going to be forgotten by history — which is most of us — and the message it sends is that if you pay really careful attention to any life, it is absolutely gripping. And that's the kind of book that "Stoner" is.
William Stoner suffers through a terrible marriage. He has a beautiful, amazing, rescuing love affair. He engages in an absolutely crazy, silly, passive-aggressive academic feud that really ruins his life for a number of years. And he grapples with trying to be a good parent. "Stoner" is simply a story that grabs him at the crucial moments in his life, when he's having to make huge decisions they going to change the course of his life and that deeply moved him inside, and really slows down during those moments.
We see all the internal turmoil that it is to be a human being. Even a human being who's completely forgotten by history and not even that well regarded by his colleagues.
And it's a really profound message because I think in this era especially, we tend to think that what makes something exciting is how famous you are, how much attention you're able to win from the world. That's what social media is all about. That's what so much of the media is about. How much attention can we suck from the world?
"Stoner" is suggesting just the opposite, that what makes our lives blessed and holy and worth living is the attention that we pay to our own lives and to those moments in our lives that are most exciting, exalted, terrifying, and beautiful.
It's an amazing novel.
Interview Details 📻
Discussed In This Interview
stevealmondjoy.com
Stoner (New York Review Books Classics)
Doug Gordon
Original Air Date:
Does Philosophy Still Matter In The Age Of Coronavirus?
Emily Parker on 'Conversation in the Cathedral'
Could the Internet Be The World's Greatest Piece of Collaborative Art?
'This Novel Has Hurt Everyone Around Me': A Frank Conversation with Karl Ove Knausgaard
Ayelet Waldman Talks about Depression, LSD, and Her Marriage With Michael Chabon


text:
site: media | arena: mlb | pageType: stories | section: | slug: home-run-derby-2019-odds-players-surprising-picks-from-dialed-in-mlb-expert-who-nailed-bryce-harpers-win | sport: baseball | route: article_single.us | 6-keys: media/spln/mlb/reg/free/stories
Home Run Derby 2019 odds, players: Surprising picks from dialed-in MLB expert who nailed Bryce Harper's win
SportsLine's Mike McClure nailed the 2018 Home Run Derby and has revealed his picks for 2019
by CBS Sports Staff
Jul 8, 2019 at 6:57 pm ET • 3 min read
One of the most popular fan-friendly events of MLB All-Star week will be the 2019 MLB Home Run Derby. Progressive Field in Cleveland will be no match for eight of the most exciting sluggers in baseball on Monday as they try to launch as many balls out of the park as possible. The action starts at 8 p.m. ET and the eight 2019 MLB Home Run Derby participants have been seeded 1-8 for what should be an awe-inspiring display of power. Mets rookie Pete Alonso has already made history this year, as his 27th home run on June 23 set the franchise rookie record for a single season. The 24-year-old is listed at 5-1 in the latest 2019 Home Run Derby odds, but despite having home run exit velocities of 118.3 and 117.1 m.p.h. this season, he's not the favorite. That honor goes to Pirates slugger Josh Bell, who's at 7-2 MLB Home Run Derby odds 2019 after Christian Yelich bowed out with a back injury. Before you make any 2019 Home Run Derby picks, be sure to see the baseball predictions from SportsLine data scientist Mike McClure.
McClure, a daily Fantasy pro and predictive data engineer, has won almost $2 million in his career. He was recognized in the book "Fantasy Football (and Baseball) for Smart People: How to Turn your hobby into a Fortune" as a top Daily Fantasy Baseball Player. Additionally, his wOBA projection model returned $2,236 to $100 bettors on MLB picks over the past three seasons.
Furthermore, McClure crushed his Home Run Derby picks in 2018. He confidently locked in Bryce Harper as his projected winner, calling him "the easy choice" to win. The result: Harper rolled to the title, and anybody who followed McClure's advice cashed in huge.
Now, McClure has analyzed the Home Run Derby 2019 field and locked in his best bets only over at SportsLine.
We can tell you that McClure is fading Blue Jays rookie Vladimir Guerrero Jr., one of the top Vegas favorites at 9-2. The 20-year-old son of a Hall of Famer hasn't put up the same titanic numbers that he did in the minor leagues to make him the consensus top prospect in baseball, but he's still shown flashes this season. After hitting 25 home runs in just 357 at-bats last season, Guerrero has eight home runs so far this year and has five batted ball events with exit velocities of 114.9 m.p.h. or higher.
However, consistency hasn't been there, as he's not in the top 50 in average exit velocity this season. Guerrero is slashing .247/.326/.414 for the season and a .278 BABIP suggests he's not getting extraordinarily unlucky by any means. Quality of contact has been an issue for Guerrero, who has a 21.2 percent soft contact rate that is nearly 62 percent higher than Yelich's 13.1 percent this season.
And even when he does make solid contact, launch angle has been an issue, as he's profiled as more of a line-drive hitter. So even though he's more than capable of hammering the baseball, he may not generate the lift needed to be a factor on Monday.
McClure has locked in his pick to win as well as a colossal long shot you need to jump on now. You can only see who he's backing for every single matchup over at SportsLine.
So who wins the 2019 Home Run Derby? And which huge long shot is a must back? Check out the latest 2019 Home Run Derby odds below, and then visit SportsLine now to see who to back, all from the renowned MLB expert who nailed Harper's win in 2018.
Josh Bell 7-2
Vladimir Guerrero 9-2
Joc Pederson 5-1
Pete Alonso 5-1
Carlos Santana 7-1
Matt Chapman 8-1
Alex Bregman 8-1
Ronald Acuna 10-1
CBS Sports HQ Daily Newsletter
Get the best highlights and stories - yeah, just the good stuff handpicked by our team to start your day.
I agree that CBS Sports can send me the "CBS Sports HQ Daily Newsletter" newsletter.
Please check the opt-in box to acknowledge that you would like to subscribe.
Keep an eye on your inbox for the latest sports news.
There was an error processing your subscription.
MLB Midseason Awards
See who our experts pick for MVP, Cy Young, Rookie of the Year and more.
Top 10 trade targets for the Yankees
From Stroman to Syndergaard, here are the top 10 trade targets for the Yankees
MLB trade deadline: Top 10 pitchers
These are the 10 best pitchers who are expected to be available
Neris yells expletive at LAD after save
Muncy also had some words for Neris
Aaron Boone goes off on rookie ump
'I feel bad for you,' Boone told Brennan Miller
Roundup: Phillies earn split vs. Dodgers
Here is everything you need to know about the day in baseball
Top Picks: Three MLB best bets tonight
Also, watch SportsLine on CBS Sports HQ live at 6 p.m. ET for all today's best bets


This year's Canada Day may be over, but the Canada 150 celebration keeps on going everywhere you go. For a young country, 150th Birthday is more than just a tribute to what Canada has gone through in history, but to cherish what we have as a country and to cheer for the mere fact that we are Canadians. As wine lovers, we should toast to the pioneers who laid the foundations to grow the Canadian wine countries. To folks who planted the first vine and dug the first acre to establish vineyards and built wineries with sweats and foresights, hardworks and determinations, we salute you!
In no particular order, here are a few of my favourite wines from proud and eminent wineries in the making of BC wine industry.
Mission Hill Quatrain 2013. $65 – From over 30 years of crafting fine wine came Quatrain, one of Mission Hill Winery's top tier Legacy Collection of wines paying tribute to their dedication to showcase the true quality of BC wines. A blend of Merlot, Syrah, Cabernet Franc and Cabernet Sauvignon (45/21/18/16) sourced from vineyards in Osoyoos and the Black Sage Bench in Oliver, Quatrain 2013 is oak fermented and aged in French oak for 14 months before release. This full-bodied wine is rich, dense and layered with beautiful tannins. Look for dark fruits and plum aroma with a dash of herbs and a slight hint of licorice and minty flavour.
Hester Creek Judge 2012. $45 – Back in 1968, Hester Creek Winery's original owner built a vineyard just south of Oliver, a sundrenched area what is now known as the Golden Mile Bench. A blend of Merlot, Cabernet Sauvignon and Cabernet Franc formed the foundation for the Judge. Each varietal was fermented separately and oak-aged for 14 months; then blended and oak-aged again for an additional 12 months, 80% French oak and 20% American oak before release. The Judge is a robust wine with substances and soft tannins with juicy plum and dry prune aroma and a hint of sage and spices on the finish.
Steller's Jay Sparkling Brut 2010. $26 – First crafted by Sumac Ridge Winery's original owner Harry McWatters in the eighties, Steller's Jay is now a separate label on its own due to its popularity and deliciousness. Always a blend of Pinot Blanc, Chardonnay and Pinot Noir with luring aroma and very food-friendly, Steller's Jay is a dry sparkling wine with subtle citrus and stone fruits notes. One of the first Brut that claimed worldwide fame, this is a sparkling wine BC can be proud of.
A blend of Merlot, Malbec, Cabernet Sauvignon and Cabernet Franc from one of the oldest family winery in the Okanagan, this unpretentious wine is crafted with tradition and passion. Aged in premium French oak, the body is smooth and the tannins delicate. Flows of dark plum, cocoa and vanilla with a hint of fine herbs to round the finish.
Colona Vineyards Artist Series Gewurztraminer 2012. $13.
The oldest operating winery in BC, Calona Vineyards created the Artist Series as a tribute to the finer things in life. Gently pressed and cool fermented in stainless steel tank to retain the freshness, this wine is light and breezy with attractive bouquet of lychee and kiwi. The residual sugar is nicely balanced to give this wine the well-deserved sweetness. .


Topping the sale at 182.5p/kg was British Blue cross cow from Messrs Blades, Scarr House, Muker, Richmond.
Topping at £1248.59 was Limousin cross cow from Messrs Rukin, Park Lodge Farm, Keld, Richmond.
Trade for all classes of cast & OTM cattle was as dear as it's been seen for some time and numbers fell well short of buyer's requirements.
Per Kilo – British Blue 182.5p Scarr House: Limousin 168.5p Park Lodge Farm; 151.5p Pikestone Farm; 151.5p New Hall; 146.5p Sowerthwaite Farm: Black & Whites 135.5p, 129.5p, 114.5p Crossfell House Farm; 123.5p Duckintree Farm; 113.5p Bank View.
Per Head – Limousin £1248.59 Park Lodge Farm; £1133.22 New Hall; £993.27 Sowerthwaite Farm: British Blue £1195.38 Scarr House: Black & Whites £975.14, £913.27; £840.43 Crossfell House Farm; £892.11 Bank View.


Radovish is a small but very beautiful town with so many attractive places that must be seen during your stay here.
The Square is situated in the centre of the town which makes it easily accessible and available for all. It is spacious and modern with a beautiful fountain in the middle and many desks where you can relax. The Central Square is also surrounded by tall buildings and various stores for clothing, books, shoes, accessories, beauty products, stores for decorative elements and many others. Because of the big number of stores you can have unforgettable shopping experience with your family. After the splendid shopping time, relax on the desks and observe the dynamic way of life in Radovish or visit some of the cafes, restaurants and bars which are near and relish strong coffee, icy-cold drinks and traditional Macedonian dishes at very affordable prices.
The warmth and positive energy that fulfills the town will make you feel completely laid-back so you can forget about all stressed everyday situations.


text:
package httl.spi.formatters;

import httl.Resource;
import httl.Template;
import httl.ast.Expression;
import httl.spi.Formatter;
import httl.util.*;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.util.Collections;
import java.util.Date;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;

/**
 * MultiFormatter. (SPI, Prototype, ThreadSafe)
 *
 * @author Liang Fei (liangfei0201 AT gmail DOT com)
 * @see httl.spi.translators.CompiledTranslator#setFormatter(Formatter)
 * @see httl.spi.translators.InterpretedTranslator#setFormatter(Formatter)
 */
public class MultiFormatter implements Formatter<Object> {

    private final Map<Class<?>, Formatter<?>> formatters = new ConcurrentHashMap<Class<?>, Formatter<?>>();

    private Map<Class<?>, Formatter<?>> sortedFormatters;

    private Formatter<Object> formatter;

    private Formatter<Boolean> booleanFormatter;

    private Formatter<Number> byteFormatter;

    private Formatter<Character> charFormatter;

    private Formatter<Number> shortFormatter;

    private Formatter<Number> intFormatter;

    private Formatter<Number> longFormatter;

    private Formatter<Number> floatFormatter;

    private Formatter<Number> doubleFormatter;

    private Formatter<Number> numberFormatter;

    private Formatter<Date> dateFormatter;

    private String nullValue;

    private String trueValue;

    private String falseValue;

    private char[] nullValueChars;

    private char[] trueValueChars;

    private char[] falseValueChars;

    private byte[] nullValueBytes;

    private byte[] trueValueBytes;

    private byte[] falseValueBytes;

    private String outputEncoding;

    public MultiFormatter() {
    }

    public MultiFormatter(Formatter<?> formatter) {
        setFormatters(new Formatter<?>[]{formatter});
        init();
    }

    public void init() {
        if (nullValue == null) {
            setNullValue("");
        }
        if (trueValue == null) {
            setTrueValue("true");
        }
        if (falseValue == null) {
            setFalseValue("false");
        }
        this.numberFormatter = get(Number.class);
        this.booleanFormatter = get(Boolean.class);
        this.byteFormatter = getFormatter(Byte.class, numberFormatter);
        this.charFormatter = get(Character.class);
        this.shortFormatter = getFormatter(Short.class, numberFormatter);
        this.intFormatter = getFormatter(Integer.class, numberFormatter);
        this.longFormatter = getFormatter(Long.class, numberFormatter);
        this.floatFormatter = getFormatter(Float.class, numberFormatter);
        this.doubleFormatter = getFormatter(Double.class, numberFormatter);
        this.dateFormatter = get(Date.class);
    }

    /**
     * httl.properties: output.encoding=UTF-8
     */
    public void setOutputEncoding(String outputEncoding) {
        this.outputEncoding = outputEncoding;
    }

    /**
     * httl.properties: null.value=null
     */
    public void setNullValue(String nullValue) {
        this.nullValue = nullValue;
        this.nullValueChars = nullValue.toCharArray();
        this.nullValueBytes = toBytes(nullValue, nullValue);
    }

    /**
     * httl.properties: true.value=true
     */
    public void setTrueValue(String trueValue) {
        this.trueValue = trueValue;
        this.trueValueChars = trueValue.toCharArray();
        this.trueValueBytes = toBytes(trueValue, trueValue);
    }

    /**
     * httl.properties: false.value=false
     */
    public void setFalseValue(String falseValue) {
        this.falseValue = falseValue;
        this.falseValueChars = falseValue.toCharArray();
        this.falseValueBytes = toBytes(falseValue, falseValue);
    }

    /**
     * Add and copy the MultiFormatter.
     *
     * @param formatters
     */
    public MultiFormatter add(Formatter<?>... formatters) {
        if (formatter != null) {
            MultiFormatter copy = new MultiFormatter();
            copy.formatters.putAll(this.formatters);
            copy.setFormatters(formatters);
            return copy;
        }
        return this;
    }

    /**
     * Remove and copy the MultiFormatter.
     *
     * @param formatters
     */
    public MultiFormatter remove(Formatter<?>... formatters) {
        if (formatter != null) {
            MultiFormatter copy = new MultiFormatter();
            copy.formatters.putAll(this.formatters);
            if (formatters != null && formatters.length > 0) {
                for (Formatter<?> formatter : formatters) {
                    if (formatter != null) {
                        Class<?> type = ClassUtils.getGenericClass(formatter.getClass());
                        if (type != null) {
                            this.formatters.remove(type);
                        }
                    }
                }
            }
            return copy;
        }
        return this;
    }

    /**
     * httl.properties: formatters+=httl.spi.formatters.NumberFormatter
     */
    public void setFormatters(Formatter<?>[] formatters) {
        if (formatters != null && formatters.length > 0) {
            for (Formatter<?> formatter : formatters) {
                if (formatter != null) {
                    Class<?> type = ClassUtils.getGenericClass(formatter.getClass());
                    if (type != null) {
                        this.formatters.put(type, formatter);
                    }
                }
            }
            Map<Class<?>, Formatter<?>> sorted = new TreeMap<Class<?>, Formatter<?>>(ClassComparator.COMPARATOR);
            sorted.putAll(this.formatters);
            this.sortedFormatters = Collections.unmodifiableMap(sorted);
        }
    }

    @SuppressWarnings({"unchecked", "rawtypes"})
    private <T> Formatter<T> get(Class<T> type) {
        return (Formatter) formatters.get((Class) type);
    }

    @SuppressWarnings("unchecked")
    private Formatter<Number> getFormatter(Class<? extends Number> type, Formatter<Number> defaultFormatter) {
        Formatter<Number> formatter = get((Class<Number>) type);
        if (formatter == null) {
            return defaultFormatter;
        }
        return formatter;
    }

    public String toString(String key, boolean value) {
        if (booleanFormatter != null)
            return booleanFormatter.toString(key, value);
        return value ? trueValue : falseValue;
    }

    public String toString(String key, byte value) {
        if (byteFormatter != null)
            return byteFormatter.toString(key, value);
        return String.valueOf(value);
    }

    public String toString(String key, char value) {
        if (charFormatter != null)
            return charFormatter.toString(key, value);
        return String.valueOf(value);
    }

    public String toString(String key, short value) {
        if (shortFormatter != null)
            return shortFormatter.toString(key, value);
        return String.valueOf(value);
    }

    public String toString(String key, int value) {
        if (intFormatter != null)
            return intFormatter.toString(key, value);
        return String.valueOf(value);
    }

    public String toString(String key, long value) {
        if (longFormatter != null)
            return longFormatter.toString(key, value);
        return String.valueOf(value);
    }

    public String toString(String key, float value) {
        if (floatFormatter != null)
            return floatFormatter.toString(key, value);
        return String.valueOf(value);
    }

    public String toString(String key, double value) {
        if (doubleFormatter != null)
            return doubleFormatter.toString(key, value);
        return String.valueOf(value);
    }

    public String toString(String key, Boolean value) {
        if (value == null)
            return nullValue;
        if (booleanFormatter != null)
            return booleanFormatter.toString(key, value);
        return value.booleanValue() ? trueValue : falseValue;
    }

    public String toString(String key, Byte value) {
        if (value == null)
            return nullValue;
        if (byteFormatter != null)
            return byteFormatter.toString(key, value);
        return value.toString();
    }

    public String toString(String key, Character value) {
        if (value == null)
            return nullValue;
        if (charFormatter != null)
            return charFormatter.toString(key, value);
        return value.toString();
    }

    public String toString(String key, Short value) {
        if (value == null)
            return nullValue;
        if (shortFormatter != null)
            return shortFormatter.toString(key, value);
        return value.toString();
    }

    public String toString(String key, Integer value) {
        if (value == null)
            return nullValue;
        if (intFormatter != null)
            return intFormatter.toString(key, value);
        return value.toString();
    }

    public String toString(String key, Long value) {
        if (value == null)
            return nullValue;
        if (longFormatter != null)
            return longFormatter.toString(key, value);
        return value.toString();
    }

    public String toString(String key, Float value) {
        if (value == null)
            return nullValue;
        if (floatFormatter != null)
            return floatFormatter.toString(key, value);
        return value.toString();
    }

    public String toString(String key, Double value) {
        if (value == null)
            return nullValue;
        if (doubleFormatter != null)
            return doubleFormatter.toString(key, value);
        return value.toString();
    }

    public String toString(String key, Number value) {
        if (value == null)
            return nullValue;
        if (value instanceof Byte)
            return toString(key, (Byte) value);
        if (value instanceof Short)
            return toString(key, (Short) value);
        if (value instanceof Integer)
            return toString(key, (Integer) value);
        if (value instanceof Long)
            return toString(key, (Long) value);
        if (value instanceof Float)
            return toString(key, (Float) value);
        if (value instanceof Double)
            return toString(key, (Double) value);
        if (numberFormatter != null)
            return numberFormatter.toString(key, value);
        return value.toString();
    }

    public String toString(String key, Date value) {
        if (value == null)
            return nullValue;
        if (dateFormatter != null)
            return dateFormatter.toString(key, value);
        return value.toString();
    }

    public String toString(String key, byte[] value) {
        if (value == null)
            return nullValue;
        if (value.length == 0)
            return "";
        if (outputEncoding == null)
            return new String(value);
        try {
            return new String(value, outputEncoding);
        } catch (UnsupportedEncodingException e) {
            return new String(value);
        }
    }

    public String toString(String key, char[] value) {
        if (value == null)
            return nullValue;
        return String.valueOf(value);
    }

    public String toString(String key, String value) {
        if (value == null)
            return nullValue;
        return value;
    }

    public String toString(String key, Template value) {
        try {
            return toString(key, value.evaluate());
        } catch (ParseException e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }

    public String toString(String key, Resource value) {
        try {
            return IOUtils.readToString(value.openReader());
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }

    @SuppressWarnings("unchecked")
    public String toString(String key, Object value) {
        if (value == null)
            return nullValue;
        if (value instanceof String)
            return (String) value;
        if (value instanceof Boolean)
            return toString(key, (Boolean) value);
        if (value instanceof Character)
            return toString(key, (Character) value);
        if (value instanceof Number)
            return toString(key, (Number) value);
        if (value instanceof Date)
            return toString(key, (Date) value);
        if (value instanceof byte[])
            return toString(key, (byte[]) value);
        if (value instanceof Template)
            return toString(key, (Template) value);
        if (value instanceof Resource)
            return toString(key, (Resource) value);
        if (formatter != null)
            return formatter.toString(key, value);
        Class<?> cls = value.getClass();
        Formatter<Object> formatter = (Formatter<Object>) formatters.get(cls);
        if (formatter != null) {
            return formatter.toString(key, value);
        } else if (sortedFormatters != null) {
            for (Map.Entry<Class<?>, Formatter<?>> entry : sortedFormatters.entrySet()) {
                if (entry.getKey().isAssignableFrom(cls)) {
                    formatter = (Formatter<Object>) entry.getValue();
                    formatters.put(cls, formatter);
                    return formatter.toString(key, value);
                }
            }
        }
        return StringUtils.toString(value);
    }

    public char[] toChars(String key, boolean value) {
        if (booleanFormatter != null)
            return booleanFormatter.toChars(key, value);
        return value ? trueValueChars : falseValueChars;
    }

    public char[] toChars(String key, byte value) {
        if (byteFormatter != null)
            return byteFormatter.toChars(key, value);
        return String.valueOf(value).toCharArray();
    }

    public char[] toChars(String key, char value) {
        if (charFormatter != null)
            return charFormatter.toChars(key, value);
        return String.valueOf(value).toCharArray();
    }

    public char[] toChars(String key, short value) {
        if (shortFormatter != null)
            return shortFormatter.toChars(key, value);
        return String.valueOf(value).toCharArray();
    }

    public char[] toChars(String key, int value) {
        if (intFormatter != null)
            return intFormatter.toChars(key, value);
        return String.valueOf(value).toCharArray();
    }

    public char[] toChars(String key, long value) {
        if (longFormatter != null)
            return longFormatter.toChars(key, value);
        return String.valueOf(value).toCharArray();
    }

    public char[] toChars(String key, float value) {
        if (floatFormatter != null)
            return floatFormatter.toChars(key, value);
        return String.valueOf(value).toCharArray();
    }

    public char[] toChars(String key, double value) {
        if (doubleFormatter != null)
            return doubleFormatter.toChars(key, value);
        return String.valueOf(value).toCharArray();
    }

    public char[] toChars(String key, Boolean value) {
        if (value == null)
            return nullValueChars;
        if (booleanFormatter != null)
            return booleanFormatter.toChars(key, value);
        return value.booleanValue() ? trueValueChars : falseValueChars;
    }

    public char[] toChars(String key, Byte value) {
        if (value == null)
            return nullValueChars;
        if (byteFormatter != null)
            return byteFormatter.toChars(key, value);
        return value.toString().toCharArray();
    }

    public char[] toChars(String key, Character value) {
        if (value == null)
            return nullValueChars;
        if (charFormatter != null)
            return charFormatter.toChars(key, value);
        return value.toString().toCharArray();
    }

    public char[] toChars(String key, Short value) {
        if (value == null)
            return nullValueChars;
        if (shortFormatter != null)
            return shortFormatter.toChars(key, value);
        return value.toString().toCharArray();
    }

    public char[] toChars(String key, Integer value) {
        if (value == null)
            return nullValueChars;
        if (intFormatter != null)
            return intFormatter.toChars(key, value);
        return value.toString().toCharArray();
    }

    public char[] toChars(String key, Long value) {
        if (value == null)
            return nullValueChars;
        if (longFormatter != null)
            return longFormatter.toChars(key, value);
        return value.toString().toCharArray();
    }

    public char[] toChars(String key, Float value) {
        if (value == null)
            return nullValueChars;
        if (floatFormatter != null)
            return floatFormatter.toChars(key, value);
        return value.toString().toCharArray();
    }

    public char[] toChars(String key, Double value) {
        if (value == null)
            return nullValueChars;
        if (doubleFormatter != null)
            return doubleFormatter.toChars(key, value);
        return value.toString().toCharArray();
    }

    public char[] toChars(String key, Number value) {
        if (value == null)
            return nullValueChars;
        if (value instanceof Byte)
            return toChars(key, (Byte) value);
        if (value instanceof Short)
            return toChars(key, (Short) value);
        if (value instanceof Integer)
            return toChars(key, (Integer) value);
        if (value instanceof Long)
            return toChars(key, (Long) value);
        if (value instanceof Float)
            return toChars(key, (Float) value);
        if (value instanceof Double)
            return toChars(key, (Double) value);
        if (numberFormatter != null)
            return numberFormatter.toChars(key, value);
        return value.toString().toCharArray();
    }

    public char[] toChars(String key, Date value) {
        if (value == null)
            return nullValueChars;
        if (dateFormatter != null)
            return dateFormatter.toChars(key, value);
        return value.toString().toCharArray();
    }

    public char[] toChars(String key, byte[] value) {
        if (value == null)
            return nullValueChars;
        if (value.length == 0)
            return new char[0];
        if (outputEncoding == null)
            return new String(value).toCharArray();
        try {
            return new String(value, outputEncoding).toCharArray();
        } catch (UnsupportedEncodingException e) {
            return new String(value).toCharArray();
        }
    }

    public char[] toChars(String key, char[] value) {
        if (value == null)
            return nullValueChars;
        return value;
    }

    public char[] toChars(String key, String value) {
        if (value == null)
            return nullValueChars;
        return value.toCharArray();
    }

    public char[] toChars(String key, Template value) {
        try {
            return toChars(key, value.evaluate());
        } catch (ParseException e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }

    public char[] toChars(String key, Resource value) {
        try {
            return IOUtils.readToChars(value.openReader());
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }

    @SuppressWarnings("unchecked")
    public char[] toChars(String key, Object value) {
        if (value == null)
            return nullValueChars;
        if (value instanceof char[])
            return (char[]) value;
        if (value instanceof Boolean)
            return toChars(key, (Boolean) value);
        if (value instanceof Character)
            return toChars(key, (Character) value);
        if (value instanceof Number)
            return toChars(key, (Number) value);
        if (value instanceof Date)
            return toChars(key, (Date) value);
        if (value instanceof String)
            return toChars(key, (String) value);
        if (value instanceof Template)
            return toChars(key, (Template) value);
        if (value instanceof Expression)
            return toChars(key, (Expression) value);
        if (value instanceof Resource)
            return toChars(key, (Resource) value);
        if (formatter != null)
            return formatter.toChars(key, value);
        Class<?> cls = value.getClass();
        Formatter<Object> formatter = (Formatter<Object>) formatters.get(cls);
        if (formatter != null) {
            return formatter.toChars(key, value);
        } else if (sortedFormatters != null) {
            for (Map.Entry<Class<?>, Formatter<?>> entry : sortedFormatters.entrySet()) {
                if (entry.getKey().isAssignableFrom(cls)) {
                    formatter = (Formatter<Object>) entry.getValue();
                    formatters.put(cls, formatter);
                    return formatter.toChars(key, value);
                }
            }
        }
        return toChars(key, StringUtils.toString(value));
    }

    public byte[] toBytes(String key, boolean value) {
        if (booleanFormatter != null)
            return booleanFormatter.toBytes(key, value);
        return value ? trueValueBytes : falseValueBytes;
    }

    public byte[] toBytes(String key, byte value) {
        if (byteFormatter != null)
            return byteFormatter.toBytes(key, value);
        return toBytes(key, String.valueOf(value));
    }

    public byte[] toBytes(String key, char value) {
        if (charFormatter != null)
            return charFormatter.toBytes(key, value);
        return toBytes(key, String.valueOf(value));
    }

    public byte[] toBytes(String key, short value) {
        if (shortFormatter != null)
            return shortFormatter.toBytes(key, value);
        return toBytes(key, String.valueOf(value));
    }

    public byte[] toBytes(String key, int value) {
        if (intFormatter != null)
            return intFormatter.toBytes(key, value);
        return toBytes(key, String.valueOf(value));
    }

    public byte[] toBytes(String key, long value) {
        if (longFormatter != null)
            return longFormatter.toBytes(key, value);
        return toBytes(key, String.valueOf(value));
    }

    public byte[] toBytes(String key, float value) {
        if (floatFormatter != null)
            return floatFormatter.toBytes(key, value);
        return toBytes(key, String.valueOf(value));
    }

    public byte[] toBytes(String key, double value) {
        if (doubleFormatter != null)
            return doubleFormatter.toBytes(key, value);
        return toBytes(key, String.valueOf(value));
    }

    public byte[] toBytes(String key, Boolean value) {
        if (value == null)
            return nullValueBytes;
        if (booleanFormatter != null)
            return booleanFormatter.toBytes(key, value);
        return value.booleanValue() ? trueValueBytes : falseValueBytes;
    }

    public byte[] toBytes(String key, Byte value) {
        if (value == null)
            return nullValueBytes;
        if (byteFormatter != null)
            return byteFormatter.toBytes(key, value);
        return toBytes(key, value.toString());
    }

    public byte[] toBytes(String key, Character value) {
        if (value == null)
            return nullValueBytes;
        if (charFormatter != null)
            return charFormatter.toBytes(key, value);
        return toBytes(key, value.toString());
    }

    public byte[] toBytes(String key, Short value) {
        if (value == null)
            return nullValueBytes;
        if (shortFormatter != null)
            return shortFormatter.toBytes(key, value);
        return toBytes(key, value.toString());
    }

    public byte[] toBytes(String key, Integer value) {
        if (value == null)
            return nullValueBytes;
        if (intFormatter != null)
            return intFormatter.toBytes(key, value);
        return toBytes(key, value.toString());
    }

    public byte[] toBytes(String key, Long value) {
        if (value == null)
            return nullValueBytes;
        if (longFormatter != null)
            return longFormatter.toBytes(key, value);
        return toBytes(key, value.toString());
    }

    public byte[] toBytes(String key, Float value) {
        if (value == null)
            return nullValueBytes;
        if (floatFormatter != null)
            return floatFormatter.toBytes(key, value);
        return toBytes(key, value.toString());
    }

    public byte[] toBytes(String key, Double value) {
        if (value == null)
            return nullValueBytes;
        if (doubleFormatter != null)
            return doubleFormatter.toBytes(key, value);
        return toBytes(key, value.toString());
    }

    public byte[] toBytes(String key, Number value) {
        if (value == null)
            return nullValueBytes;
        if (value instanceof Byte)
            return toBytes(key, (Byte) value);
        if (value instanceof Short)
            return toBytes(key, (Short) value);
        if (value instanceof Integer)
            return toBytes(key, (Integer) value);
        if (value instanceof Long)
            return toBytes(key, (Long) value);
        if (value instanceof Float)
            return toBytes(key, (Float) value);
        if (value instanceof Double)
            return toBytes(key, (Double) value);
        if (numberFormatter != null)
            return numberFormatter.toBytes(key, value);
        return toBytes(key, value.toString());
    }

    public byte[] toBytes(String key, Date value) {
        if (value == null)
            return nullValueBytes;
        if (dateFormatter != null)
            return dateFormatter.toBytes(key, value);
        return toBytes(key, DateUtils.format(value));
    }

    public byte[] toBytes(String key, byte[] value) {
        if (value == null)
            return nullValueBytes;
        return value;
    }

    public byte[] toBytes(String key, char[] value) {
        if (value == null)
            return nullValueBytes;
        return toBytes(key, String.valueOf(value));
    }

    public byte[] toBytes(String key, String value) {
        if (value == null)
            return nullValueBytes;
        if (value.length() == 0)
            return new byte[0];
        if (outputEncoding == null)
            return value.getBytes();
        try {
            return value.getBytes(outputEncoding);
        } catch (UnsupportedEncodingException e) {
            return value.getBytes();
        }
    }

    public byte[] toBytes(String key, Template value) {
        try {
            return toBytes(key, value.evaluate());
        } catch (ParseException e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }

    public byte[] toBytes(String key, Resource value) {
        try {
            return IOUtils.readToBytes(value.openStream());
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }

    @SuppressWarnings("unchecked")
    public byte[] toBytes(String key, Object value) {
        if (value == null)
            return nullValueBytes;
        if (value instanceof byte[])
            return (byte[]) value;
        if (value instanceof Boolean)
            return toBytes(key, (Boolean) value);
        if (value instanceof Character)
            return toBytes(key, (Character) value);
        if (value instanceof Number)
            return toBytes(key, (Number) value);
        if (value instanceof Date)
            return toBytes(key, (Date) value);
        if (value instanceof String)
            return toBytes(key, (String) value);
        if (value instanceof Template)
            return toBytes(key, (Template) value);
        if (value instanceof Expression)
            return toBytes(key, (Expression) value);
        if (value instanceof Resource)
            return toBytes(key, (Resource) value);
        if (formatter != null)
            return formatter.toBytes(key, value);
        Class<?> cls = value.getClass();
        Formatter<Object> formatter = (Formatter<Object>) formatters.get(cls);
        if (formatter != null) {
            return formatter.toBytes(key, value);
        } else if (sortedFormatters != null) {
            for (Map.Entry<Class<?>, Formatter<?>> entry : sortedFormatters.entrySet()) {
                if (entry.getKey().isAssignableFrom(cls)) {
                    formatter = (Formatter<Object>) entry.getValue();
                    formatters.put(cls, formatter);
                    return formatter.toBytes(key, value);
                }
            }
        }
        return toBytes(key, StringUtils.toString(value));
    }

}

redpajama_set_name: RedPajamaGithub


text:
Q: Sub-domain DNS records not transferring from BIND to W2k8 R2 We're in the process of migrating from Bluecat Adonis (BIND) DNS appliances to Windows 2008 R2 DNS servers.
I configured company.com to transfer from the BIND appliance, and all of the records in it appear to transfer successfully.  However, there are several sub-domains which transfer, but the records within them do not.  For example, albuquerque.company.com transfers, but does not contain any records.
If I configure one of the sub-domains as a top-level forward lookup zone, the records transfer successfully.
The ACLs on the BIND appliance appears to be correct.
Any suggestions would be greatly appreciated.

A: A zone transfer will only copy records in the zone that's being queried.  The appliance seems to have a separate zone configured in BIND for the subdomains; those records will not be included in a transfer request for the parent domain.
In order to populate the Windows servers via zone transfers, you'd need to mirror the zone configuration exactly; if the BIND server has a zone defined for the subdomain, the Windows server will need to have its own secondary zone configured to transfer it.


text:
module.exports = configuration;
configuration.list = list;

// TODO - would be nice to get the destinations from the FeedHenry API
var destinations = ['studio', 'android', 'embed', 'iphone', 'ipad', 'blackberry', 'windowsphone7', 'nokiawrt'];
configuration.desc = "Manage client app configuration properties";
configuration.usage = "\nfhc configuration [list] <app-id>"
           + "\nfhc configuration [list] <app-id> <destination>"
           + "\nfhc configuration set <app-id> <destination> <key> <value>"
           + "\nwhere destination can be one of: " + destinations.join(', ') + " or 'all'";

var log = require("../../utils/log");
var fhc = require("../../fhc");
var fhreq = require("../../utils/request");
var util = require("util");
var common = require('../../common.js');
var async = require('async');

// main configuration entry point
function configuration (argv, cb) {
  var args = argv._;
  if (args.length < 1 || args.length > 5) {
    return usage(cb);
  }

  // defaults.. 'list all' operation if 1 args passed, 'list <dest>' if 2..
  if (args.length === 1) {
    return list(fhc.appId(args[0]), 'all', cb);
  }

  var action = args[0];
  if (action === 'list') {
    if (args.length !== 2 && args.length !== 3) return usage(cb);
    list(fhc.appId(args[1]), args[2], cb);
  } else if (action === 'set'){
    if (args.length !== 5) return usage(cb);
    set(fhc.appId(args[1]), args[2], args[3], args[4], cb);
  } else if (args.length === 2) {
    return list(fhc.appId(args[0]), args[1], cb);
  } else {
    return usage(cb);
  }
}

// list our destination props
function list (appId, destination, main_cb) {
  if(destination === undefined) destination = 'all';
  // helper func for async
  function listForDestination(d, cb) {
    var payload = {payload:{"template":appId, destination: d}};
    var uri = "box/srv/1.1/ide/" + fhc.curTarget + "/config/list";
    common.doApiCall(fhreq.getFeedHenryUrl(), uri, payload, "Error listing destination config: ", cb);
  }

  if(destination === "all") {
    async.map(destinations, listForDestination, function (err, results){
      if (err) return main_cb(err);
      var data = {};
      for (var i=0; i<results.length; i++) {
        data[destinations[i]] = results[i];
      }
      return main_cb(undefined, data);
    });
  } else {
    listForDestination(destination, main_cb);
  }
}

//
// In order to set a property, you must first get all the properties, change the property you want, then re-submit them all
//
function set (appId, destination, k, v, main_cb) {
  // helper func for async
  function setForDestination(d, cb) {
    list(appId, d, function(err, config){
      if(err) return cb(err);
      var payload = {payload:{"template":appId, destination: d, config: config}};
      payload.payload.config[k] = v;
      var uri = "box/srv/1.1/ide/" + fhc.curTarget + "/config/update";
      common.doApiCall(fhreq.getFeedHenryUrl(), uri, payload, "Error setting destination config: ", cb);
    });
  };

  if(destination === "all") {
    async.map(destinations, setForDestination, main_cb);
  } else {
    setForDestination(destination, main_cb);
  }
}

function usage(cb) {
  cb("Usage:\n" + configuration.usage);
}

// bash completion
configuration.completion = function (opts, cb) {
  var argv = opts.conf.argv.remain;
  if (argv[1] !== "configuration") argv.unshift("configuration");
  if (argv.length === 2) {
    var cmds = ["list", "set"];
    if (opts.partialWord !== "l") cmds.push("list");
    return cb(null, cmds);
  }

  var action = argv[2];
  switch (action) {
    case "list":
    case "set":
      common.getAppIds(cb);
      break;
    default: return cb(null, []);
  }
};


text:
The Angry Staff Officer
Of history, warfare, leadership, and alcohol
Warfighter Exercises
War Stories Podcast
The NCO Club
Posted on June 12, 2017 June 12, 2017 by Angry Staff Officer
Wonder Woman & the Great War: How WWI gets the Heroine it's Always Needed
WARNING: SPOILERS FOLLOW
Wonder Woman struck the big screen in a blaze of action and glory last week, depicting the heights to which people will go for each other – and the lows of which humanity is capable. The settings for the film could not have been more different – a paradise island where the Amazons rule in peace, and the world of 1918, wracked and gutted by the First World War. The movie manages to encapsulate much of the American experience of World War I – and why we don't remember much about it anymore.
As wars go, World War I doesn't get a lot of coverage with American audiences. We are generally aware that we did something, perhaps very little or perhaps we saved the world; depends on who you talk to. We know that the British and Germans fought each other, in trenches, and that it was generally fairly dreadful. If asked what the war was about, or why we entered it, the answer is generally a shrug. And yet, World War I changed the entire fabric of our world – politically, culturally, geographically, and economically. That the war ended in a negotiated Armistice without settling any of the scores certainly didn't help – it served to lead up to round two of the world wars.
The character of Diana – played magnificently by Gal Gadot – enters the world of men after American pilot Steve Trevor (Chris Pine) crash lands on her island. Diana, although brought up for war, is shocked by the Great War. For her, warfare is noble, it is fought to bring about peace, non-combatants are spared, and fighting takes place on a personal level. Thus, the inhumanity of World War I shakes her to her very core, half-goddess that she is.
Diana is not unlike the United States of 1917. Young, idealistic, semi-naive, the U.S. finally took up the rifle on April 6, 1917 to "make the world safe for democracy," as President Woodrow Wilson said. And that was no mere political catchphrase; by and large, the millions of young American men who went off to war believed that they were fighting for something larger than themselves – for a higher cause. These young, vibrant Americans – especially the volunteers who went into combat early in 1918 – pitched joyfully into battle, sometimes described by their shocked French allies as "singing while they used the bayonet."
When Diana arrives on the Western Front in the British trenches in Belgium, she confronts the great stalemate of the war: a line of fortifications running from the North Sea to the Alps. Steve Trevor tells her that it is useless to go into No-Man's Land, that no one can survive out there. But Diana hears that there are women and children in danger, so she scorns the men's warnings and takes off out into the deadly space between the lines. Sure enough, a German machine gun – a Maschinengewehr 08 – opens up, minenwerfer mortar rounds arc towards her, and the young and idealistic heroine is caught in a maelstrom of fire. Using her shield, Diana deflects the incoming fire, holds her ground, and finally leaps into the trenches – destroying the machine gun with the edge of her shield. Where men cannot survive, she can. Emboldened, the British battalion in the opposite trenches storm through and take the German front-line trench.
(Image courtesy Warner Bros)
Diana was half-goddess, so that definitely helped her survive the deadly charge. But remember the yanks I described earlier, singing while they went into battle with bayonets fixed? American command was not fond of trench warfare, and instructed its soldiers in open warfare – that is, movement and maneuver outside the trenches. By that point in the war, the French, Germans, and British had almost all figured out – through millions of losses – that open warfare merely resulted in high body counts. Thus they were dismayed when they saw the Americans charge into battle in 1918 using the same tactics they had used in 1916. Echoing Steve Trevor, they told the U.S. Soldiers and Marines that it was useless to advance in the face of such heavy fire. Yet, advance they did. Far more Americans died in the less than a year of combat than needed to; it wasn't until the end of the war that the U.S. finally began to pick up on the operational art of war.
But what the Americans brought was numbers, spirit, and a renewed desire to see this thing through to the end. Like Diana, they crossed No-Man's Land – many falling in the process – and shoved the German line backwards. With her, they hated the German machine guns and made it a point to capture them and their gunners. They fought for a people whom they did not know, crossing an ocean to fight for an abstract principle.
Wonder Woman is a fairly realistic film, at least as it relates to human nature, so of course this idealism does not last. Diana confronts her perceived antagonist, German General Erich Ludendorff and kills him, expecting that it will end the war. It does not, and Diana is forced to come to terms with the broken and flawed nature of humanity and free will. She briefly turns away from humanity, before finally coming back to its rescue because of the self-sacrificial act of Steve Trevor. So too were the American combatants of the First World War forced to come to terms with their conflict. The blood and brutality of battles such as Château-Thierry, Champagne-Marne, St. Mihiel, and the Meuse-Argonne – America's single most costly battle, ever – sapped the vitality and optimism out of the combatants.
Worse still was what followed the war's end. After all the blood and sacrifice, the Armistice solved nothing. Democracies failed around the world. America slid into Depression, Europe revolved back into conflict, and it all seemed to have been for nothing. It was as if Ares – the Greek god of war, who Diana eventually fights to conclude the movie – had won.
And yet, World War I presented Americans with an honest picture of reality. The world was a brutal place. America stepped onto the world stage, put over two million men in uniform on the continent of Europe, helped drive the Germans to the negotiating table, and suddenly found themselves a major player on that stage. We had finally made it. But now that we were there, we didn't really like what we saw. So we stepped back. We returned to isolationist-like policies and left Europe to itself, only to have to go back again two decades later.
And this is where our similarity with Diana ends, because rather than shy from the brutal messiness of the world, she realizes that the world needs her and that there is much worth fighting for. And so she stays, to continue to fight for justice and that which is good. She is the heroine that the Great War deserves, but never really got.
For our part, between the Great Depression and World War II, the War to End All Wars slipped into oblivion. There were no neatly tied ends to the story; no clear good guys and bad guys. And so we decided that we didn't want to think about it. In not thinking about World War I, we have committed some grievous military and foreign policy errors since then.
Beyond the allegory of a young America in World War I, Wonder Woman contains some interesting nuggets of World War I history, some good and some less so. For example, the film focuses a lot on the British experience of World War I. And while Britain did play a major role in the war, it pales in comparison to the French. Being that we are an English speaking society, and that our cultural heritage comes mainly from England, the United States generally seems to forget that France was the most significant combatant of the Great War for the Allied side. It is made all the more frustrating when one realizes that the French have not forgotten our contributions. While it was disappointing not to see French or American soldiers in Wonder Woman, the film did capture the cosmopolitan makeup of the British Commonwealth at the time, with appearances of Canadian, Indian, and Australian soldiers.
We are also given a glimpse into the backstory of Steve Trevor, where a photo of him leaning against a biplane with the iconic "hat in the ring" markings reveals that he had been a member of the 94th Aero Squadron, one of the most successful U.S. flying outfits in World War I. The squadron boasted eight aces – pilots who had shot down five or more aircraft – including Eddie Rickenbacker, whose 26 kills earned him the Medal of Honor. The photo also shows Trevor wearing a small metal cross, which appears to be the French Croix de Guerre (Cross of War), an honor presented for valor in combat.
There is one other hidden easter egg of the Great War in this film: the character of Erich Ludendorff. While many viewers might just assume that he was created as a villain for the movie, Ludendorff was in fact a very real and very senior officer of the German army. And while he did not maniacally kill his fellow generals and try to scrap the Armistice, Ludendorff did his damnedest to pull out a win in the last year of the war. In the spring of 1918, Ludendorff launched Operation Michael – a series of offensives that were aimed to knock the Allies out of the war before the Americans could arrive in force. And it almost worked. In the film, Ludendorff's reign of terror is ended when Diana pins him to the roof of a guard tower with her sword. In reality, Ludendorff's undoing was the American 2nd and 3rd Divisions, which blocked his way to Paris in 1918. Indeed, the U.S. Army's 3rd Division's nickname is still "Rock of the Marne." The German juggernaut was stopped, and then set back on its heels by attacks from the U.S. Marine Brigade at Belleau Wood, and then from the offensives of the 26th "Yankee" Division, the 42nd "Rainbow Division," the 1st Division, and the 28th Division. Americans poured into the Aisne-Marne region to deliver pummeling blow after blow against Ludendorff, ending the final German offensive of the war.
The movie sadly left out Ludendorff's silly mustache and pickelhaube.
After the war, Ludendorff continued to be active, but this time in politics. He espoused the "stabbed in the back" theory, that the military could have still won the war but that the politicians gave up. An ardent nationalist, he believed that he and his comrades had been undermined by communists and Jews. It should then come as no surprise that Ludendorff teamed up with Adolf Hitler in the failed "Beer Hall Putsch," an attempt to overthrow the German government. Needless to say, he wasn't a very nice fellow. Therefore, the schadenfreude of watching Ludendorff get turned into a pincushion by Diana, played by the granddaughter of Holocaust survivors – and who was in the Israeli Defense Forces herself – is just absolutely delicious.
The best part? This is how Ludendorff will be remembered now in popular culture. Forever. Which is only fitting.
Go see Wonder Woman. It's fantastic.
Enjoy what you just read? Please share on social media or email utilizing the buttons below.
About the Author: Angry Staff Officer is an Army officer who is adrift in a sea of doctrine and staff operations and uses writing as a means to retain his sanity. He also collaborates on a podcast with Adin Dobkin entitled War Stories, which examines key moments in the history of warfare.
CategoriesHistory, World War I TagsErich Ludendorff, First World War, Gal Godot, Wonder Woman, Wonder Woman and WWI, World War I, WWI
3 Replies to "Wonder Woman & the Great War: How WWI gets the Heroine it's Always Needed"
Alex Lund says:
Quote: " helped drive the Germans to the negotiating table"
Could you please tell me when the negotiations happened after WW I, at which place and date?
You are wrong. There where no negotiations. The Germans were given the articles of Versailles and then told they could write down their Position but it didnt change any of the articles of Versailles..
Please tell me how this is negotiating?
Negotiazting is a continous Exchange of opinions that may take a few hours or more.
If you look at the negotiations after Napoleon they took far longer than Versailles.
Michal Thim says:
It is quite obvious that the author means negotiations leading up to the armistice. The armistice did not just happen out of thin air. Ludendorff's offensive was stopped with the crucial help of Americans, which led to negotiations that lead to the armistice. Not too difficult to follow, eh?
There is also this: "That the war ended in a negotiated Armistice without settling any of the scores certainly didn't help – it served to lead up to round two of the world wars."
If only people read with the same care that they dedicate to expressing their opinions.
Sariah Z. says:
One of the best write-ups on this movie, thank you! I expected you to mention the "Bonus Army" and march by veterans after WWI, and I really loved all the historical bits. Especially the part about America in1916 that failed the French in 1913, and how they took out machine guns. It is such a nice change to read a piece on this film that does not lecture or fixate on one aspect or another. I also appreciate the objective acknowledgement of Gadot's military service.
"Hell hath no fury like an internet comments section" Cancel reply
Previous PostPrevious Impenetrable Terrain – Isn't
Next PostNext We Need a Universal Veteran Symbol for America's Recent Conflicts
Follow The Angry Staff Officer on WordPress.com
Army Unit Numerical Designations: Where do they come from?
The Case Against Starbuck: Why Talent is Not Enough
Warfighter: Helm's Deep
The Real Failure at Winterfell
Warfighter: Middle Earth
A Fantastical Council of War
Want to build a combat focused culture in your unit? Start with your language
The Importance of Being a Self-Aware Leader
Fixing Veterans Day
Get you Twitter on
barefootboomer
combatcavscout
David Dixon
donachaidh
eamonh
Jay Rogers
Matthew Ader
Angry Staff Officer
Puff Rolsen
David Bruns
The Savory NCO
XOofXOs


This luxury 1 bedroom is available for you! Located in the heart of downtown Champaign, it is easily walkable to dozens of shops and restaurants, parks, theaters, and public transportation. Minutes from campus. Find your home in this elegant condo, complete with Wifi and most utilities included.


An app that costs more than the iPhone can provide highly secure encrypted phone calls around the world.
"Cellcrypt's encryption technology has been certified to FIPS 140-2 security standard, approved by the US National Institute of Standards and Technology. Cellcrypt's cryptography includes industry-standard high-strength algorithms including 2048-bit RSA for authentication, Elliptic Curve Diffie-Hellman and RSA protocols for key exchange, and 256-bit AES for voice encryption. For added security, the data is encrypted twice using 256-bit RC4 and AES.
The VoIP service is similar to Skype, except it's encrypted. It meets US government's 140-2 FIPS (Federal Information Processing Standards), which can be used for certain classified communications. Both phones need to connect to the internet, and the service is also available on BlackBerry.
Perfect for James Bond, other secret agents, and heads of state?
Cellcrypt Mobile [App Store] for iPhone and iPod touch (iPad compatible too) is free, but its service costs "£2,500 per annum", or about $4000 USD per year. (Some sites such as app advice miscalculated it to $1600).
This entry was posted on Sunday, July 17th, 2011 at 11:00 am	and is filed under iPhone Apps. You can follow any responses to this entry through the RSS 2.0 feed.
Great news as one can never have enough security now-a-days!


Message from John Cannon: "I am delighted to announce that Mark Campbell has accepted the position of Centre Manager, Bonaly Scout Centre, and will join South East Scotland Scouts on 6th May 2019.
Mark joins us from his role as Centre Manager at Broomlee Centre, a Scottish Outdoor Education Centre, located in West Linton. Mark has a degree in outdoor studies and brings with him a wealth of experience of working in the outdoor education sector in both instructor and management positions. Mark has also developed an understanding and practice of business management while running his own monumental masonry business earlier in his career.
Mark was also a Cub, Scout and Venture Scout, going on to become an Assistant Scout Leader before being caught up with the demands of his business. Mark said to me that it was his time in Scouting that led him to seek a career in the outdoors and when he saw the opportunity to join South East Scotland Scouts, he felt it was an opportunity too good to miss!
I'm sure everyone in the Region will join me in welcoming Mark and wish him every success in his new challenge!
Bonaly is a 24-acre site to the South of Edinburgh at the foot of the Pentland hills. Situated in Colinton Village with easy access from the City Bypass and only five miles / eight kilometres from the city centre, Bonaly Scout Centre is an ideal base for a visit to Edinburgh or as a stopping place when visiting Scotland. The site has both indoor accommodation and camping facilities. Many activities are available both on and off site. From the slopes above the site there is a magnificent panoramic view across Edinburgh to the Firth of Forth and beyond.
The McCallum Lodge contains the Reception and offices. The Reception offers tourist information and souvenirs. The opening times vary throughout the season but are displayed at the reception.
It is not always necessary to stay overnight. Day visitors are welcome throughout the day and evening to enjoy the facilities at Bonaly.
All bookings are done through the Bonaly General Office. It is recommended that you contact the Centre to check availability before sending in a Booking Form. Contact can be done by telephone or email. For further details and forms please see the Booking section of the Contact page.
Win a free weekend in the new Bell Tents at Bonaly!
Bonaly SCOUT Centre Is Back!
Let's showcase Scouting in our Region!
More and better activities at Bonaly?


Star Wars Birthday Invitations. This amazing picture selections about Star Wars Birthday Invitations is available to save. We collect this wonderful image from internet and select the top for you. Star Wars Birthday Invitations photos and pictures selection that posted here was carefully selected and uploaded by atlanticpoloteam after choosing the ones that are best among the others.
So, ultimately we make it and here these list ofbest image for your ideas and information reason regarding the Star Wars Birthday Invitations as part of atlanticpoloteam.com exclusive updates collection. So, take your time and find the best Star Wars Birthday Invitations images and pictures posted here that suitable with your needs and use it for your own collection and personal use.
Regarding Photo brief description: Graphic has been submitted by atlanticpoloteam and has been tagged by 1st birthday invitation template birthday invitations free birthday invitations online birthday invitations wording editable birthday invitations templates free free online birthday invitations free printable birthday invitations for kids online birthday invitations maker Star Wars Birthday Invitations Watermelon Birthday Invitations in Ideas Birthday Invitations field. You might leave your opinion as feed back to our site quality.
There're ready for transfer, if you'd prefer and wish to get it, click save symbol on the post, and it'll be instantly saved in your laptop. For most upgrades and latest news about Star Wars Birthday Invitations images, please kindly follow us on tweets, path, Instagram and google plus, or you mark this page on book mark area, We try to present you up-date periodically with all new and fresh photos, like your searching, and find the perfect for you.