text:
Things To DoTrip IdeasFavorite TripsStargazing in Southern Oregon's Dark-Sky Territory
Stargazing in Southern Oregon's Dark-Sky Territory
Jen Anderson, Author
July 6, 2020 (Updated September 27, 2021)
Explore the wide open spaces of Lake County! Recreation lovers rejoice in the vast and untamed land and dark skies. Find adventures for every season and every skill level — from downhill skiing, hiking, mountain biking and camping to paddle boarding, canoeing and star gazing. We welcome you to the Oregon Outback — kick your boots off and stay awhile!
There are no crowds, no noise and not much in the way of bright lights in Southern Oregon's Lake County — just a whole lot of quiet (except for the cattle). That makes it a spectacular place for outdoor adventuring — from hiking and biking to camping, fishing, paddling and more. Inhabited by the Burns Paiute Tribe for thousands of years, this remote 8,000-square-mile region — marked by its dry climate and high altitude — is also world-renowned for one of humankind's most ancient pastimes: stargazing.
"The skies are supremely pristine — that is, nearly absent any artificial light — and that's a result of excellent land stewardship by the Paiutes, public land managers and ranchers," says Dawn Nilson, a founding member and former chair of International Dark-Sky Association, Oregon Chapter. Nilson is also a professional natural-resources manager and dark-sky preservation director for the nonprofit Rose City Astronomers. She has lent her expertise to the grassroots Oregon Outback Dark Sky Network effort to nominate a site in Lake County as an International Dark Sky Place, a major distinction for Oregon. It would be one of either 12 International Dark Sky Sanctuaries or 16 Dark Sky Reserves in the world.
Since Lake County is one of the largest contiguous and most pristine dark-sky areas in the continental United States, the nomination "could easily turn into not just the largest such nomination in the world, but one of the naturally darkest," Nilson says. "You have these super-dark skies, and they're needed not just to see stars but to preserve wildlife habitat," making the county both "ecologically and astronomically excellent."
Ready to see some stars? Gather the family for some constellation stories — based on Greek mythology or local tribal heritage — and spend your evenings looking skyward in Lake County. Here's how to do just that, and spend your days hiking, biking, hot springing and wildlife watching in the unspoiled Oregon Outback.
Go bike-packing on the Oregon Timber Trail and camp under a wide-open canopy of stars at night. (Photo by Gabriel Amadeus Tiller)
Lakeview Area
You'll find most of the region's amenities here, including a one-stop shop for outdoor equipment and rentals at Tall Town Bike & Camp. Rent a canoe and head out for a moonlight paddle and stargazing. Cyclists of all stripes won't want to miss the chance to ride a section of the Oregon Timber Trail, which starts at the California border south of Lakeview and runs for 669 miles north through four national forests showcasing a variety of scenic landscapes and terrain. The world-class trail is mostly rugged and dry singletrack, with a mix of off-road and gravel and paved trails throughout. Serious riders enjoy "bike-packing" — bringing everything with them — and camping under the stars.
Where to stay: If you're staying in town, pitch a tent at or pull your camper into the Junipers Reservoir RV Resort, family owned for 30 years at the site of an excellent trout-fishing reservoir, on the edge of a juniper forest. Enjoy access to the nearby hiking and biking trails, lounge at your shaded picnic tables or explore the 175-acre grounds for rock-hounding, horseshoes, volleyball, bird-watching and wildlife viewing — keep an eye out for pronghorn, mule deer, eagles and osprey. Snuggle up for your own campground star party.
Thirty-five miles northeast of Lakeview, camp at Vee Lake Campground, which is perched in between the desert and the forest, and offers a panoramic view of Warner Valley and Hart Mountain as well as the night sky above. The lake is good for fishing and kayak paddling, while the small campground (no fee, no reservations) is rustic with picnic tables, campfire rings and a vault toilet. Lace up your boots and pack your Ten Essentials for a trek along the Fremont National Recreation Trail, which starts here and connects with the Oregon Timber Trail about 14 miles into the junction.
Prefer to stay indoors? Gipson's Warner Valley Lodging in Adel, 30 miles east of Lakeview along Highway 140, features 10 private rooms with a common area, stocked kitchen, bathroom laundry, barbecue grill and even satellite TV available. Enjoy the rustic digs and take in the dark skies from the comfort of your porch.
Glampers may want to consider booking a stay at the seasonally available recreation cabin Drake Peak Lookout (open June 15-Oct. 15) deep in the forest, 25 miles northeast of Lakeview. Reservations can be made six months in advance and fill quickly; 2020 is booked, but plan now for the 2021 season.
Dine: Tall Town Cafe serves breakfast all day, which is great news for those needing a hearty fuel-up or post-adventure fix. El Aguila Real down the street serves authentic Mexican, and Happy Horse Deli features fresh-made soups and decadent treats. TJ's Family Fun Center & Restaurant is a crowd pleaser with nachos, ribs and more classics in a kid-friendly atmosphere, and Eagles Nest Food and Spirits is a great spot for dinner and a dash of nightlife. Cap your night with a Blue Galaxy cocktail at Indian Village lounge, one of many dark-sky-themed drinks popping up around town.
Hiking, fishing and birding are favorite ways to spend the day near Summer Lake. At night, it's all about the stars. (Photo by Jak Wonderly / Travel Southern Oregon)
Summer Lake
The Summer Lake Wildlife Area and Chewaucan Marshes are world-famous for bird-watching; travel the 8.3-mile tour route for spectacular viewing, and check the visitors' guide for maps and best times to visit. Summer Lake Hot Springs is an artesian hot mineral spring in a tranquil setting, focused on healing.
Where to stay: Pitch a tent or pull in the camper van at Moss Meadows Horse Camp (southeast of Paisley) or Farm Well Horse Camp (southeast of Silver Lake). Both have access to the Oregon Timber Trail, which is open for hiking as well as mountain biking and horseback riding. Both have the same rustic amenities as Vee Lake, with no fees or reservations needed. Cozy cabins at The Lodge at Summer Lake offer easy access to hiking, horseback riding and fishing for trophy-size bass from your back porch. It's also a birders' paradise, with more than 200 species of birds visiting the grounds.
Dine: The Flyway Restaurant at The Lodge at Summer Lake offers call-ahead breakfast and lunch to go, for your picnicking pleasure. Or stop into Paisley Mercantile for limited groceries and supplies for your off-grid adventures. Enjoy a sit-down meal and chat up the locals at Pioneer Saloon and Restaurant, formerly known as Paisley Saloon. The Portland-based owners serve fresh, local scratch cuisine, plus a great selection of beer and ciders. Don't miss the house-smoked tri-tip, burgers and pizzas.
The Milky Way is a familiar sight over Hart Mountain Hot Springs, part of one the largest contiguous pristine dark-sky areas in the world. (Photo by Kris Wiktor / Alamy Stock Photo)
Hart Mountain
You'll want to bring everything with you for a day or overnight trip to the Hart Mountain National Antelope Refuge, due to its ultra remoteness. The refuge is home to the world's fastest land mammal, the pronghorn. Keep your eyes peeled in early morning and late evening, when wildlife are most active in the summer heat. Make sure to keep your distance when spotting animals, and hike quietly so you don't scare creatures away. Find a map and guide to fishing, hiking and other activities in the refuge brochure.
On the western edge of the refuge, the Hart Bar Interpretive Site at Warner Wetlands is a great spot for a picnic and a short hike on the 2-mile loop in the wetlands just north of Hart Lake, a 10,000-year-old, dried-up lake bed home to thousands of bird species visiting during their annual migrations.
Just a few miles down the road, rockhounds will want to bring buckets to collect Oregon's state gem, the peachy-orange sunstone, which are free to pick up and take home at the Bureau of Land Management's official Sunstone Collection Area near Plush.
Where to stay: The Adel Store serves a dual purpose as a campground for eight RV sites with full hookups, a great place to stay if you want to spend time in both Lakeview and the refuge. If you make base camp at the refuge, you'll feel the stress melt away at Hart Mountain Hot Springs Campground, where you can soak in the hot springs with ease. The main pool for up to six people is enclosed in a rustic rock and concrete structure with a temperature just above 100 degrees. A more primitive and slightly warmer hot spring is outside, a short walk away, with unobstructed views of the high desert. Know that mosquitoes can be thick in the summer, so bring repellent and wear layers if needed.
Dine: The Adel Store is also a fantastic stop for a breakfast burrito, wrap, burger, cold beer or glass of wine to cap your day. You can also pick up a few camping essentials at the historic country store and fuel up your vehicle. Just north in Plush, the Hart Mountain Store is another grocery store, gas station, and bar and grill — stop in for a burger and chat with the locals.
Two dark-sky measuring kits, donated by the Oregon Outback Dark Sky Network (ODSN), are available for check-out at the Lakeview County libraries in Lakeview and Christmas Valley. Each kit includes a map of the Oregon Outback, a Unihedron Sky Quality Meter, a data log and dark-sky information. Visit the Lake County Chamber of Commerce for more resources. When adventuring in the remote Oregon Outback, make sure to Take Care Out There and check for wildfire conditions and closures before you go.
Jen Anderson
Jen Anderson is a longtime journalist and travel writer/editor who is now Travel Oregon's Content & Community Manager, helping to align content for visitors via social media, print and web. She's called Oregon home for 25 years and loves finding the latest places to eat, drink and play around the state with her husband and two boys. Brewpubs, beaches and bike trails top the list.
More Trip Ideas
Meet 'n' Greet Oregon's Greatest Athlete
Only the African cheetah can outpace the pronghorn, the second-fastest land animal in the world. Pronghorn spring into motion with easy grace, able to accelerate to speeds of more than 60 miles per hour. And... More
Tina Lassen
Weekender Rides on the OTT Fremont Tier
The literal high point of the Oregon Timber Trail is found on its southern section – the Fremont Tier. The natural world spreads out here, with broad horizons best taken in from mountaintop perches along... More
Great Adventures in Oregon's Outback
Welcome to your next great adventure. Spend three days (or more) in this land of basin and range, history and innovation, culture and quiet. Follow this itinerary for an extraordinary escape. More
Sachie Yorck


text:
Home › CD › George Harrison - All Things Must Pass 2CD / DLX 3CD / 5CD+BLU-RAY BOX SET / 3LP BOX SET / 5LP BOX SET / DLX 8LP BOX SET
George Harrison - All Things Must Pass 2CD / DLX 3CD / 5CD+BLU-RAY BOX SET / 3LP BOX SET / 5LP BOX SET / DLX 8LP BOX SET
£20.00 / £185.00
Deluxe 3CD - Out of stock Deluxe 8x Vinyl Box Set - £185.00 GBP 5x Vinyl Box Set - £80.00 GBP 3x Vinyl Box Set - Out of stock 5CD+Blu Ray Box Set - Out of stock 2CD - Out of stock
In celebration of the 50th Anniversary, George Harrison's, "All Things Must Pass", is celebrated with a suite of new releases highlighted by a stunning new mix of the classic album by Grammy Award-winning mixer/engineer Paul Hicks, overseen by executive producer Dhani Harrison.
"All Things Must Pass" was George Harrison's first release following the acrimonious falling apart of the Beatles. Co-produced by the unhinged genius that was Phil Spector, it features his biggest solo hit in the He's So Fine soundalike, My Sweet Lord, alongside a laid-back strum through Bob Dylan's 'If Not For You'.
In celebration of the 50th Anniversary, George Harrison's, All Things Must Pass, is celebrated with a suite of new releases highlighted by a stunning new mix of the classic album by Grammy Award-winning mixer/engineer Paul Hicks, overseen by executive producer Dhani Harrison.
All Things Must Pass was George Harrison's first release following the acrimonious falling apart of the Beatles. Co-produced by the unhinged genius that was Phil Spector, it features his biggest solo hit in the 'He's So Fine' - soundalike, 'My Sweet Lord'. Alongside a laid-back strum through Bob Dylan's 'If Not For You'.
1. I'd Have You Anytime
2. My Sweet Lord
3. Wah-Wah
4. Isn't It a Pity (Version One)
5. What is Life
6. If Not for You
7. Behind That Locked Door
8. Let It Down
9. Run of the Mill
10. Beware of Darkness
11. Apple Scruffs
12. Ballad of Sir Frankie Crisp (Let It Roll)
13. Awaiting on You All
14. All Things Must Pass
15. I Dig Love
16. Art of Dying
17. Isn't It a Pity (Version Two)
18. Hear Me Lord
19. Out of the Blue
20. It's Johnny's Birthday
21. Plug Me In
22. I Remember Jeep
23. Thanks for the Pepperoni
About this product: this is available on 2CD, DLX 3CD, 5CD+BLU-RAY Box Set, 3LP Box Set, 5LP Box Set and DLX 8LP Box Set.
2CD - The standard 2CD features the new remix of the original album housed in a digipak. Also included is an original poster with the back containing notes by Dhani Harrison and Paul Hicks about remixing the album.
3LP - Triple 180 Gram vinyl contained in a slim box, including a poster and an 8-page insert with photos and notes from Dhani Harrison and Paul Hicks on remixing the album.
3CD - The 3CD Deluxe Edition contains an all-new remix by Paul Hicks and features the main album on Discs 1 and 2 followed by Disc 3 featuring 17 tracks of demo recordings, session outtakes and studio jams. Housed in a square box with scaled down version of the original poster, it includes a 20-page booklet with photos, introduction, and notes from Dhani Harrison and Paul Hicks on remixing the album.
6CD - The Super Deluxe Edition CD collects 70 tracks across 5 CDs including 47 (42 previously unreleased) demo recordings, session outtakes and studio jams all housed in a beautiful slipcase. A Blu-Ray audio disc presenting the main album in hi-res stereo, 5.1 surround and Dolby Atmos is also featured. The collection contains a beautiful 56-page scrapbook curated by Olivia Harrison, with unseen imagery and memorabilia from the era, handwritten lyrics, diary entries, studio notes, tape box images, a comprehensive track-by-track and more. It also includes a replica of the original album poster.
5LP - The 5LP (180 Gram) Deluxe Edition contains an all-new remix by Paul Hicks. Spread across 5 LPs, the first 3 LPs feature the main album followed by 2 LPs containing 17 tracks of demo recordings, session outtakes and studio jams. Includes 8-page insert with photos and notes from Dhani Harrison and Paul Hicks on remixing the album.
8LP - The Super Deluxe Edition LP collects 70 tracks across 8 LPs (180 Gram) including 47 (42 previously unreleased) demo recordings, session outtakes and studio jams all housed in a beautiful slipcase. The collection contains a beautiful 60-page scrapbook curated by Olivia Harrison, with unseen imagery and memorabilia from the era, handwritten lyrics, diary entries, studio notes, tape box images, a comprehensive track-by-track and more. It also includes a replica of the original album poster.

redpajama_set_name: RedPajamaCommonCrawl


text:
by Marvin Olasky
February 19, 2016 Issue Date:
Abigail Santamaria: An unlikely match
Biographer Santamaria unveils the woman who captured C.S. Lewis' heart
Abigail Santamaria Najlah Feanny/Genesis
Here's a great "man bites dog" headline from last fall's Wall Street Journal: "The creator of Aslan and Narnia married a Jewish communist from Manhattan." Here are edited excerpts from my recent interview with Abigail Santamaria, the author of a new biography, Joy (Houghton Mifflin Harcourt), that shows how C.S. Lewis and Joy Davidman became a couple.
You did excellent detective work, finding some documents in New York City, others in Massachusetts, others on Malta in the Mediterranean. Letters, poems, checkbooks, her marriage certificate to C.S. Lewis, Joy's parents' papers … I wanted a subject that hadn't been done and done and done.
Joy Davidman, born in 1915, became a communist during the Great Depression. Why? She and many others bought into the image that Josef Stalin was creating jobs: Everybody has abundant food and clothing and fresh air. Soviet art exhibits that traveled to reputable museums in the United States had these ruddy-cheeked children and families that were so happy, not like the poverty-stricken, depression-weary people she saw in the streets all around her.
Soviet life in reality: terrible famine, with millions dying or sent to prison camps. Yes, it was the exact opposite of the propaganda, but in 1937-38 Joy had almost a religious conversion to communism. She went to Communist Party rallies at Madison Square Garden with 20,000 attending. People would get up and give testimonials about how the Communist Party changed their lives. They would lay flowers on the stage and sing Soviet songs. There were processions of children. It really was like a religion, and she felt a surge of energy. The Communist Party gave her the community she yearned for.
She became a highly regarded poet and the poetry editor of the New Masses, a communist magazine. She also married Bill Gresham. He was a very talented writer also, and a troubled man. Today he would probably be diagnosed with post-traumatic stress disorder after being in the Spanish Civil War. Their marriage started out great and she called him the "mythical perfect husband," but his depression, anxiety, nightmares, and drinking escalated. At some point he joined Alcoholics Anonymous and was largely sober for the last five years of their marriage.
How did his problems contribute to Joy's turning to Christ? Bill was drinking heavily. Joy was at home and they had two babies. One night Bill called her from his office, said he was having a nervous breakdown, and hung up. She called back and he didn't answer. She was terrified that he was killing himself. She was an atheist and had written that there's only one final beauty, to stand on your feet, and only one ultimate weakness or ugliness, to fall on your knees. She sensed another presence in the room and found herself praying on her knees. Bill returned, but from that point on she believed in God. The question was, who is this God? She had read The Screwtape Letters and The Great Divorce, and briefly became a Reformed Jew, but then through reading more of Lewis ultimately came to Christ.
'If Joy hadn't pursued Lewis and ultimately married him, several of Lewis' greatest books … would not have been written, or at least not as comprehensively and effectively.'
When did she fall in love with Lewis? People were telling me Joy was in love with C.S. Lewis before she even met him. I was skeptical, but I discovered a collection of love sonnets that Joy wrote for C.S. Lewis beginning before she ever met him. She had dated the poems and his name is in them.
He is in his 50s and never had been married, and she was married. What was Lewis' reaction? How much she told him of her feelings, and when, is unclear, but he valued her as a pen friend. Her letters stood out from others. She was clearly very well-read, as Lewis was, and she could reference and understand his references to all kinds of literature from every age. She was invited to stay for some time with Lewis and his brother and she asked to stay for longer and he writes about this in several letters to friends. She stayed over Christmas, and he writes about her talking from morning to night—he couldn't think or breathe or write.
She overstays her welcome, then returns to America, but that's not the end of the story. By Bill's account Joy told him she loved Lewis. While she was away, Renee—Joy's young, beautiful, vulnerable cousin—stayed in their house. Renee and Bill fell in love. They all lived together in a huge farmhouse out in the woods for several months in horrible tension. Joy said, "I'm getting a divorce and taking the boys to move to England because it's cheaper there." That obviously wasn't the reason. Bill said, "No, let's get back together, let's do whatever, don't take the boys away, please." She moved to England later that year with the two boys. The divorce came in 1954.
Did Lewis know he was being manipulated? I don't think he understood the extent, but I also think she genuinely loved him and respected him and loved his mind. When she moved back to England in 1953, they got married twice, once for legal purposes in 1956 so she could stay in England and not have to go back to America, and then for real love in 1957. It became the beautiful love story that the Shadowlands movie portrays.
So God can make something beautiful out of all kinds of motives. Exactly. If Joy hadn't pursued Lewis and ultimately married him, several of Lewis' greatest books that have had a huge impact on people's lives and spiritual lives would not have been written, or at least not as comprehensively and effectively.
What was their marriage like? You write that they played Scrabble together, tennis … What else did they do? They did a lot of drinking beer in pubs and took a lot of walks. They gardened together, and sat in the garden and talked. She crocheted and he smoked and they just would talk for hours. They mostly loved talking, whatever they were doing.
Last question: If any of these Patrick Henry students go to graduate school and want to write a thesis on something historical, any advice as to looking for topics, thinking them through, and doing what hasn't been done before? Be thorough. Go to the original sources as often as you can because a lot of the secondary sources are wrong. Finish: See it through to the end. Writing a big paper, a big thesis, or a book is really hard, and one reason that more people who want to do these things, don't, is a lack of follow-through. Even if it's not exactly what we want it to be in the end, see it through.
For more about Jack (Lewis' friends called him that) and Joy, look for "More about young Joy" and "More about Jack and Joy's relationship" at wng.org.
Marvin is the former editor in chief of WORLD, having retired in January 2022, and former dean of World Journalism Institute. He joined WORLD in 1992 and has been a university professor and provost. He has written more than 20 books, including Reforming Journalism.
@MarvinOlasky
{"baseUrl":"\/index.php?p=actions","csrfTokenName":"CRAFT_CSRF_TOKEN","csrfToken":"VesOeduv3CoImGw7K4YrUnugueQzv63lIVroGjqo9UNvrO7PPqskxgSFR0np_pd1RfMbDGa_G2IOk-PJV8vHvxY2jy9V65oTGtm3hE7SQqI=","recaptchaEnabled":false,"recaptchaKey":"","translations":{"reply":"Reply","close":"Close","edit":"Edit","save":"Save","delete-confirm":"Are you sure you want to delete this comment?"},"element":{"id":159921,"siteId":1}}


text:
Lessons from the production 'Baltimore'
Don't be afraid to have the conversation
Collegian File Photo
By By Jennie Moss, Collegian Contributor
"Fine, so I'm just the white guy. So I can't say anything right or true about race."
So says Carson, a character in the University of Massachusetts theater department's ongoing production of the play "Baltimore," which tackles a sensitive, important subject on today's college campuses: racism. Told through the perspective of Shelby Wilson, an African-American resident advisor whose hall is the site of a racially-charged incident, the play shows just how intimidating it can be to talk about racism amidst worries of saying the "wrong thing," offending someone or — especially for white people — being called a racist.
Perhaps it would be easier to talk about if we thought about it differently. The mainstream media tends to frame racism as isolated, extreme cases where racists are a few "bad apples" in a sea of good people. But these representations do us a great disservice when it comes to understanding racism because they fail to explain its history and how it goes far beyond individual acts.
In his 2014 Massachusetts Daily Collegian article "There is no such thing as 'reverse racism'," Josh Odam wrote, "People have to understand that the term racism is an indicator: it identifies a network of structures and institutions (the state, the police, universities, corporations, banks, etc.) used to oppress and marginalize entire populations." The early development of these institutions in the U.S. is so important because once such a foundational system is put in place, it becomes very difficult to change.
In his 2015 memoir, "Between the World and Me," Ta-Nehisi Coates elaborates on this significance by saying that "race is the child of racism, not the father." Only after African scientists, doctors, architects, teachers, entrepreneurs, fathers, mothers, sons, daughters and others were kidnapped from their homes did those we now define as white impose an arbitrary definition of inferiority based purely on skin color. This definition functioned both as a way to clear their own consciences of any moral wrongdoing, and to redirect the social and economic frustrations of poor whites toward a social "other."
But just because slavery was formally abolished doesn't mean that the racial hierarchy that justified it ended, too. Not long ago, during Jim Crow segregation, it was normal for white people to be publicly, overtly and intentionally racist, behaviors that our mainstream society now condemns. But some schools are more segregated now than they were in the late 1960s.
While no single white person alive today created this system, it continues to benefit white people. It does this by promising that our race will never work against us— when participating in class, when applying for jobs, even when eating ice cream in our own apartments.
But what's important to consider about this system is that it is self-perpetuating. Once such a system is put in place, it doesn't require that white people be intentionally discriminative — it only requires our complicity and acceptance of the system as normal. And to accept that it is normal for some people to live in fear of harm while others live safely is a poisonous, soul-contorting belief.
As uncomfortable as it may be for white people like myself to grapple with this reality, it is not nearly as uncomfortable as fearing that your loved ones may not survive police encounters, or wondering if the person who wrote "Hang Melville n******" almost a year ago in Melville Hall was talking about you.
White people's racial illiteracy harms people of color every day. But it also damages our ability to be empathetic and hold ourselves accountable for the impact, more so than the intent, of our actions. And becoming a less racially ignorant white person is not about wallowing in guilt, or about reading a lot of articles and then showing off how much you know about other people's pain. It's about humbling ourselves enough to confront the truth, and using that as a starting point to reflect and learn more, primarily from activists and educators of color, and especially women of color.
It's white privilege in action to not have to talk or even think about racism until you see reports of a racist incident, such as the one we see depicted in "Baltimore." Hyper-focusing on these acts rather than understanding the larger picture of why these incidents keep happening ensures that these incidents will continue to happen. As Leigh, a Black character in "Baltimore" explains, "The problem is all this history, all this history folds into itself and over itself and there's all these lines."
Adopting an expanded vision of racism as a system is in no way the end of understanding it, but it is a necessary starting point.
Jennie Moss is a Collegian contributor and can be reached at [email protected]
Leave a Reply to Others Cancel reply
Ldonnel54	• Oct 24, 2019 at 8:42 pm
Excellent article that open a conversation that our society must dive into. White Fragiliy, Waking Up White, Stamped From the Beginning are great resources to learn mor. Racial Equity Institute is another place to check out. Their Phase One Workshop opened my eyes. Thank you JennieMoss for bringing me back to the conversation!
https://dailycollegian.com/2019/10/lessons-from-the-production-baltimore/#comment-1846138
Others	• Oct 22, 2019 at 9:32 pm
Dear Joey d,
With all due respect, there are no easy and quick answers to your questions/ comments. If you are genuinely interested in getting answers to your questions a good place might be by reading 'White Fragility' by Robin Diangelo.
One of the points this article made very clearly was that we need to educate ourselves so we can talk about racism as a system. Because our ignorance is actively hurting people by delaying the much needed change to protect our brothers and sisters from real harm done by the system put in place by those who wish to keep them from advancing.
I hope this was helpful.
Great article!!!
joey d	• Oct 17, 2019 at 1:25 am
The sad thing about racism is it's not taken seriously anymore. This is a good reason why " "Fine, so I'm just the white guy. So I can't say anything right or true about race.""
Then the article concludes "Adopting an expanded vision of racism as a system is in no way the end of understanding it, but it is a necessary starting point."
This talking point is saying basically, well white people don't know anything about race or racism … but let's have a constructive argument about it!!
Okay great.. very compelling. You automatically dismiss the viewpoint of someone based on their race but then expect them to have a dialogue about it. The problem with is that it's racist and aggressive.
The other problem is the only focus is on african-americans. I see no mention of asians in this play or article or hispanic people or native americans. Those people exist in Baltimore too and are they not the victim of racism? What about Caucasians. Are they not the victim of racism? Also automatic accusations of being racist(sort of like how people can assume african-americans are criminals or other negative stereotypes based on race or asians are bad drivers) along with attacks on white people for being successful and I would say 'white envy'(people who attack white people for being successful presently and throughout most of world history merely for being successful) are all types of racism Caucasian people can face.
We can all agree that racism is bad, but when you say some racism is okay and other racism is not okay, then it's hard to take that viewpoint with credibility.


In order to get that SQL anywhere 12 driver to show up in the 32 bit configuration screen you have to install the 32 bit client package for SQLA 12 or install the admin tools' 32 bit version. Then you get the driver in the 32 bit configuration. The 64 bit one is probably installed, but it will not talk to the 32 bit applications I think.


Azathoth - Page 4 - A Picnic in Arkham - BPAL Madness!
You'd think this would have been a good scent for me; saffron, amber, and cedar are all things that work well with my skin chemistry. Unfortunately, they are all completely overpowered by the musky vetiver. Never got even a trace of the tangerine, but that's no surprise given my history with BPAL citrus. It's not nasty, just definitely too musky for my taste.
It gets a little better as it wears on, but not enough to salvage it. No estimate of staying power, because I needed a shower and washed it off. This one's headed for the swap pile.
When wet on the skin, this is fantastic for a dark, mad god. It is larger than life, and full of swirling resin, vetiver and heavy musk.
No tangerine, which is kind of surprising given my skin's tendency to amp the sweeter citrus notes. But the vetiver IS amping. The musk is drowned out.
In fact the vetiver amps a bit too much, like Highwayman.
Dry, I'm not loving this. The vetiver is still dominant and I KNOW my skin's going to reject the resin in this one. So alas, I'm off to wash this off before it does.
Wow, the centre of chaos that Azathoth sits in must be a damp shed. Because that it what this oil smells like on me, brown, damp, dark and earthy; full of spiders and unmentionable creepy-crawlies. There is no brightness in this scent at all, the vetiver note drowns all with its dankness.
Hmm, probably a suitable evocation of the god, but I can't see me wanting to wear this for fun!
Well I wasn't sure if this one would work on me or not as I dislike vetiver on general principle.....but boy was I in for a surprise: I LOVE this scent!!!!I definitely get vetiver but it blends so well with the cedarwood.Just a warm lovely, earthy scent.Don't get any tangerine,amber or saffron unfortunately(although I think they must be there calming the vetiver) but I still love this.The weather is (finally!!) statring to cool a bit and I think this will be perfect for those golden Autumn days.
In the imp: Sweet yet slightly tart citrus and resin.
Wet: Vetivert, citrus and a touch of cedar and saffron.
Drydown: The vetivert is becoming rounder and smoother, while the cedar is becoming stronger and the citrus weaker. It's quite strong despite the fact I only put a dab on. There's a swirl of saffron but only a little. It is quite masculine but that's fine by me.
Dry: Hmm there's something weird in this, almost chemical. I suspect it's the vetivert combined with.. something. Perhaps the cedarwood.
Urgh I want to keep it going for longer to see if the amber turns on me (amazingly it hasn't as of yet) but that vetivert chemical smell is getting up my nose.
imp: i smell amber, vetiver and cedar. the vertiver is sharp but it's not knocking me back like it does in some of the other scents.
wet: smoky pines. the amber is quite faint. there is nothing to suggest tangerine when i sniff this scent.
dry: this dries to a faint, soft pine.
I think I'm starting to like vetiver.
This hits me a bit like Troll did - well blended, cedary but not overpoweringly so, with the vetiver a rolled in very nicely. Oddly comforting in an earthy sort of way. There's something very smooth and fine underneath - maybe that's saffron?
I like this, despite the vetiver and cedar. It's dusty and smoldering.
I don't get any hint of tangerine at all with this. It is mostly cedarwood and black amber on me. Very intriguing scent. For a moment, vetiver reared its ugly head, and I thought it was a goner, but it seems to be okay now. For some reason, reminds me of Blood Pearl, but none of the ingredients are the same. Who knows?
This fades way too fast- one hour maximum.
I also like it better on my skin than in a scent locket. There is a slight difference in the scent. On my skin it seems warmer smelling.
Great blend for capturing the image of the name, but too strong for me to wear day to day.
Oh man, this was a towering pile of fail on me.
No citrus, no saffron, no cedarwood, no recognisable notes at all besides burning tires.
To be fair, it is highly evocative in that I probably would go mad if I smelled like this all the time!
Wet: Oh, joy. I smell like hay.
Dry: What is it with me and cedar? Was I a hamster in a past life? I smell like HAMSTER CAGE!!!
I might be in the minority here (from just skimming the other reviews), but on me this is one thing and one thing only. An upturned bottle of Captain Morgan. Putting it on first thing in the morning made me feel liike I had a hangover. To be fair, it does become a little more than that as it wears on - the cedar comes out a bit. But I just can't get past the first stage with this one.
I think this blend is perfect. There is a good darkness to it but the tangerine bites just enough on me to add a tinge of brightness. It has a very earthy scent to which I have discovered I am quite a fan of. Earthy scents always send me back to bygone days.
Imp: The tangerine dominates (yes!) with a nice base of vetiver and a touch of cedar (yes!).
Wet: I have never learned my lesson with cedar. Cedar LOVES my skin. Cedar gets really rowdy on my skin. And unless the base is something completely soft and sweet like vanilla, it will just get unruly.
Dry: I can smell faint hints of vetiver and a touch of the saffron and amber. Unfortunately they're all being smothered by the cedar which has aquired an unfortunate dill pickle chip quality. I will give the blend credit that this does smell manic.
Throw: I'm leaving a trail of cedar. Good thing I'm alone in the office today.
Overall: Just not my bag. This is a bunch of tempermental ingredients, though, so I'm just impressed that I managed to make it until the dry down.
(frimp!) tangy lemony baby powder. i bet it's a kind of flower but i don't know enough about these notes to say, but it smells like lemony baby powder. it's a little too soapy-cleaning-supply for me. :/ after reading the description i think it's an unfortunate combination of the tangerine and cedarwood that just doesn't work for me.
At the very beginning, as I first drew breath to sniff it fresh from the imp, I could detect a faintly-sweet, fruity note.
The cedar completely dominates this one for me; I cannot smell anything else. And, oddly enough, the sweetly-earthy note that usually defines cedar for me takes on a sharp, high pitch early on in this blend; it reminds me more of pine trees.
So, nope...this one just didn't work.
in the imp: all the rich smokiness of vetiver.
wet on skin: still heavy on the vetiver. it takes a LOT for vetiver to get calm on my skin.
dry down: all vetiver, possibly a hint of leather, but nothing more.
in all: if you adore vetiver as a note, this is a winner for you. if, like me, it just amps impossibly on your skin, you will likely wanna skip this one.
In the imp: Amber and mint (?!) and vetiver, with a little cedar and spice... very dark, which fits the description, after all.
After several hours: Mmmm, spicy and earthy and dark deliciousness. Very dark, but I kept getting hints of tangerine, too. This was a little spicier after drying, the second time I tried it (tonight, since I just found one as a freebie in the order that arrived today).
Definitely want to pick up a bottle of this strangely comforting (from the tangerine/amber/cedar) scent that's not at all soothing. I just love it.
In the imp, I could smell a bit of tangerine, a generous amount of cedarwood, and a whiff of my darling Vetiver.
Wet: Is that....peanut butter? What the hell? Peanut butter jelly time, that's what's happening on my wrist. I don't know what's going on.
as it dries: CEDAR! Cedarcedarcedar, and a little bit of something else...the saffron or the black amber, perhaps? The peanut butter has gone to wherever it is peanut butter goes when it dies.
Dry: Nothing jumps out at me as "tangerine", but there is a light, citrus aspect that happens on the tail end of huffing the lovely cedary vetiver that is wafting off of my wrist. It's been a very strange journey.
This is dark and biting and very sinister. It has a masculine edge to it and is mostly dark vetiver, dark musk, and only the slightest touch of tangerine to brighten this. Very strong throw and long wear-length.
I got a bottle based entirely on the fact that there was tangerine in the blends. Unfortunately, I opened the bottle to sniff and it was insta-headache. I think I blame the vetiver. It just smells... dirty. And not in a good, clean, dirt way - in that "moldy used book with pounds of dust on" way. I couldn't even bring myself to try it on.
I wanted to like all the Lovecraft scents... but I fear it is not to be.
Sharp, geranium-smokey-herbal. A very INTERESTING scent, very unique.
a strong, powerful scent, loaded with cedar and vetiver. there's also something spicy and medicinal – i would guess sassafras, although it's not listed in the description. i don't smell any tangerine. there's nothing citrusy or sweet about this. it's one of those awesome scents that really captures the smell of being out in the woods, breathing in the trees and earth. perfect for lovers of vetiver and of dark, heavy, woodsy blends.
The saffron is really evident giving the distinctive medicinal smell. It's not unpleasant, I just don't think it works well with the mandarin. The overall effect becomes an earthy and spicey dry blend. Interesting but not a winner for me.


text:
Jonathan Davies
Firm: Jonathan Davies & Co., Law Firm
Practice Area: Medical Malpractice
Ha'arbaa Towers (South Building, 9th floor)
30 Ha'arba'a St.,
Tel: 972-3-7419190
Email: davies@med-law.co.il
Jonathan Davies & Co. is one of Israel's leading medical malpractice, torts and insurance law firms, with 30 years of experience representing victims in various bodily harm claims.
The firm's knowledge in Israeli and international medical law and its experience in complex medical law claims are expressed in each and every case, with the personal involvement of Adv. Jonathan Davies throughout the process.
The firm's excellent reputation, owing to its achievements in rulings and precedents that support medical malpractice victims, vis-a-vis insurance companies and medical institutions, is expressed in its academic and commercial operations, which include two innovative projects for making the victims' rights more accessible for full utilization.
The firm, which was founded by Adv. Jonathan Davies in 1988, represents victims vs. state authorities (IDF, National Insurance), medical institutions (HMOs hospitals) and private entities (institutions, physicians, Clinics , insurers) in liability, torts, insurance, medical law, medical malpractice claims, and general civil law litigations and representation.
In addition, the firm provides legal consulting on Bio-Ethics, Bio-Technology and medical ethics and was involved in precedential rulings. The firm also provides consulting services to other law firms, and represents the National Insurance Institution in subrogation claims against insurance companies.
The firm, which handles the most complex medical malpractice claims, uses the services of Israel's best medical experts. It aspires for optimal legal results with attention to all of the social rights for which the victims are entitled.
The firm's offices are located in Jerusalem and Tel-Aviv, and it's Tel-Aviv office recently moved to a new location in Ha'Arba'a Towers.
Legal Precedents
In its three decades of operations, the firm set numerous precedents in the Supreme Court and the National Labor Court, and led to numerous binding precedents that serve as pillars of Israeli medical law, including a ruling of the Supreme Court President Shamgar that regulates disclosure obligations of insurers to the insured, a patient rights' ruling which determines that a lack of sufficient experience of an Israeli doctor justifies funding surgery abroad, a ruling concerning the relative deduction of benefits from tort compensations, and a ruling concerning wrongful birth, that served as a basis for a binding precedent of the Supreme Court, determining that an Ultra-Orthodox woman can decide to abort, regardless of her religious beliefs. In addition, a ruling concerning the Spoliation of medical records by a senior physician, and an important recent ruling concerning the required follow-up after a Sleeve Gastrectomy procedure.
The firm aims to reformulate the patient-medical-staff relationship through a precedential lawsuit concerning a physician who died following "Sham Peer Review" from his colleagues. Thus, the firm exposes the behind-the-scene dynamics of hospitals and fights for the right of patients to know of such dynamics. Additional precedents include rulings concerning patients' rights under the National Health Insurance Law, medical malpractice in various medical fields, obstetrics complications, surgery complications, misdiagnosis, medication and prescription errors, insurance and tort claims, chemicals/radiation exposure torts, accidents and medical experts.
Innovative Projects in the Practice Area
The firm's commitment to defend medical malpractice victims leads to an implementation of its accumulated knowledge in two innovative projects, aimed at implementing their rights, and supporting them through the obstacles of the legal procedures, and also at reducing the high costs that are involved in legal and expert opinions and representation in this area. For that purpose, the firm is involved in the creation of innovative tools that help victims fund medical opinions.
MedCourt – is an internet-based platform that connects medical experts with attorneys who require expert opinions, and can also assist the courts in the appointment of suitable experts.
The second project concerns legal investments and helps finance medical opinions and expenses for the victims.
Adv. Jonathan Davies
Adv. Davies has an LL.B., Tel Aviv University (1993) and an LL.M. (Commercial Law, magna sum laude), Tel Aviv University with UC Berkeley (2012). He has 34 years of experience in medical malpractice, torts, insurance, liability, litigation, medicine and law, occupational illnesses, bodily harm, OSH, receiving medical rights, bio-tech and class actions. He was the chief editor of the "Medicine and Law" journal of the Israeli Law and Medicine Association for 15 years. In addition, he was Chairman of the Council of Presidents of the WAML, executive and presidential board member of the Medicine and Law Association, Member of the management board of the Health, Law and Ethics center next to Haifa University and Member of the British Royal Society of Medicine. He is also a Member of the US ACLM), a Member of the Helsinki Committee which approves/rejects human experiments for the Me'u'hedet HMO and a Bar-certified mediator.
He is renowned as an authority in his practice area and published numerous books and articles in Hebrew and in English.
Some of his books:
• Laws and Rulings in Medical Law (1999)
• The Right to a Life with no Malformation, a collection of science, ethics and law articles (2007)
• "Legal Aspects of Alternative Medicine "Chapter in J. Shoval and E. Averbuch's book - Alternative and Complementary Medicine (2014)
• "Legal and Forensic Medicine in Israel" Chapter in the International Medicine and Law Encyclopedia, Springer, Germany (2013).
He is also academically-active as a lecturer in courses for medical experts opinions by the Medical Professions Union and the Attorneys Training Institute.
Adv. Ronit Lenman
Adv. Lenman has an LL.B., Tel Aviv University, has been practicing law since 1999 and specializes in the management of bodily harm and insurance claims, with an emphasis on various medical malpractice cases, including wrongful birth, obstetrics, genetics and ultra-sound, neurosurgery, cardiothoracic surgery, cardiology, oncology, orthopedics, plastic surgery, rheumatology, infections, pediatric malpractice, etc. In the past, she represented insurance companies and has expertise in claims management, risk evaluation, in and out-of-court negotiations and appearances before all of the courts. She joined the firm in 2007, developed and managed its Tel Aviv branch, and is currently a senior partner and manager of the Tel Aviv Branch. She is a WAML member. She has comprehensive familiarity with all of the legal issues of torts and insurance, including traffic accidents, insurance claims, subrogation claims, and experience in managing lawsuits on the grounds of severe bodily harm, multisystem trauma and estate and dependents claims, with an emphasis on a comprehensive solution for the clients' needs.


text:
Gisela Dulko (30 de janeiro de 1985, em Tigre, Buenos Aires, Argentina) é uma ex-tenista profissional argentina. Em 21 de Novembro de 2005 Gisela atingiu sua melhor classificação na carreira de Simples, o n. 26.

Ela ganhou 16 títulos em duplas, incluindo os 2000 E.U. Open Juniors com María Emilia Salerni, de 2002 Australian Open Juniors com Angelique Widjaja, de 2001 Wimbledon Championships com Ashley Harkleroad, e os 2006 Cincinnati Women's Open com italiana Maria Elena Camerin. Em individuais, ela era um vice - up em Hobart em 2005, perdendo para Zheng Jie (CHN), e um vice - up em Pattaya em 2007, perdendo para Sybille Bammer (AUT) 7-5, 3-6, 7-5. Gisela Dulko atualmente datas tênis jogador chileno Fernando González, e já datado de tênis estrelas espanhol Fernando Verdasco e Tommy Robredo.

Em 29 de abril de 2007, Gisela finalmente conquistou seu primeiro título WTA Tour derrotando Sorana Cirstea da Roménia 6-7 (2), 6-2, 6-2 na final do Tier III evento em Budapeste. Com esta vitória, a sua classificação foi definida para subir ao No. 34 no Mundial. Em 25 de agosto de 2007, Dulko ganhou seu segundo título WTA Tour no Forest Hills Tier IV evento derrotar Virginie Razzano 6-2 6-2 na final.

Em 2010, Gisela ganhou 8 títulos em Duplas, fazendo parceria com Flavia Pennetta, e fez suas melhores campanhas em Grand Slams, o que a levou ao posto de n.1 do mundo em duplas femininas.

WTA Tour títulos

Simples (9)
Legend (Singles)

Singles vices(4)

 2005: Hobart (perdeu para Zheng Jie 2-6 0-6)
 2007: Pattaya (perdeu para Sybille Bammer 5-7 6-3 5-7)
 2009: Bogotá (perdeu para María José Martínez Sánchez 6-3, 6-2)
 2010: Båstad (perdeu para Aravane Rezai 6–3, 4–6, 6–4)

Duplas

Duplas vice(11)

 2002: Casablanca (com Conchita Martínez)
 2004: Varsóvia (com Patricia Tarabini)
 2004: Pequim (com Maria Vento-Kabchi)
 2005: New Haven (com Maria Kirilenko)
 2006: Estoril (com Maria Sánchez Lorenzo)
 2006: Stanford (com Maria Elena Camerin)
 2009: Bogota (com Flavia Pennetta)
 2009: Indian Wells (com Shahar Pe'er)
 2009: Stuttgart (com Flavia Pennetta)
 2010: Madrid (com Flavia Pennetta)
 2010: China (com Flavia Pennetta)

Ligações externas
 Perfil na WTA
 Perfil no site da Fed Cup

Tenistas da Argentina
Tenistas olímpicos da Argentina
Tenistas nos Jogos Olímpicos de Verão de 2004
Tenistas nos Jogos Olímpicos de Verão de 2008
Tenistas nos Jogos Olímpicos de Verão de 2012
Naturais de Buenos Aires

redpajama_set_name: RedPajamaWikipedia


text:
use strict;
use warnings;
package MongoDB::Op::_Distinct;

# Encapsulate distinct operation; return MongoDB::QueryResult

use version;
our $VERSION = 'v2.2.2';

use Moo;

use MongoDB::Op::_Command;
use MongoDB::_Types qw(
    Document
);
use Types::Standard qw(
    InstanceOf
    HashRef
    Str
);

use namespace::clean;

has client => (
    is       => 'ro',
    required => 1,
    isa => InstanceOf ['MongoDB::MongoClient'],
);

has fieldname=> (
    is       => 'ro',
    required => 1,
    isa => Str,
);

has filter => (
    is      => 'ro',
    required => 1,
    isa => Document,
);

has options => (
    is      => 'ro',
    required => 1,
    isa => HashRef,
);

with $_ for qw(
  MongoDB::Role::_PrivateConstructor
  MongoDB::Role::_CollectionOp
  MongoDB::Role::_ReadOp
  MongoDB::Role::_CommandCursorOp
);

sub execute {
    my ( $self, $link, $topology ) = @_;

    my $options = $self->options;

    if ( defined $options->{collation} and !$link->supports_collation ) {
        MongoDB::UsageError->throw(
            "MongoDB host '" . $link->address . "' doesn't support collation" );
    }

    my $filter =
      ref( $self->filter ) eq 'ARRAY'
      ? { @{ $self->filter } }
      : $self->filter;

    my @command = (
        distinct => $self->coll_name,
        key      => $self->fieldname,
        query    => $filter,
        ($link->supports_read_concern ?
            @{ $self->read_concern->as_args( $self->session) } : ()),
        %$options
    );

    my $op = MongoDB::Op::_Command->_new(
        db_name             => $self->db_name,
        query               => Tie::IxHash->new(@command),
        query_flags         => {},
        read_preference     => $self->read_preference,
        bson_codec          => $self->bson_codec,
        session             => $self->session,
        monitoring_callback => $self->monitoring_callback,
    );

    my $res = $op->execute( $link, $topology );

    $res->output->{cursor} = {
        ns         => '',
        id         => 0,
        firstBatch => ( delete $res->output->{values} ) || [],
    };

    return $self->_build_result_from_cursor($res);
}

1;

redpajama_set_name: RedPajamaGithub


text:
Beware the Squiggly Red Line
On 13th February 2009
In Languages
Our language is constantly evolving. That's almost a tautology for any language that hasn't been officially pronounced dead. Whilst the rate of change often appears virtually imperceptible to us, a quick flick through a dictionary containing word etymologies, or a glance at the literature from bygone centuries soon proves the point. Words arise and mutate, they spontaneously alter their usage and change their position in a sentence, they crop up in unusual scenarios through metaphor, and before long appear to us in an entirely new guise from their original form. Whilst we occasionally borrow words from foreign languages, and typically for the moment derive new words for new technologies, the main source of new words in our language comes from the current stock. Each of us has an inbuilt sense of how words should be used and formed, and through repetition and popularity, a new word (or an old one with new stripes) can worm its way into one of those revered tomes we like to call dictionaries.
But just what is that makes a word worthy of that rubber stamp of approval? Most of us use words in our everyday speech which would not appear in a dictionary, be they so-called slang terms, or simply words of our own fabrication that follow those deeply ingrained rules of our language. Taking a new term such as the name of the website Google provides as an example, it is not uncommon to hear people who use "google" as a verb, and nor do we require an extra lesson in English to know that the past tense of the verb is "googled", that the particle is "googling", that a person who googles would be a "googler" etc. No one will be sent running for a dictionary to work out what any of those terms mean, but the previous sentence is nevertheless littered with wavy red lines in my browser. Of course this is only one example, and perhaps one that will ultimately make its way into the major dictionaries, but how many such examples would litter our spoken language?
Of course, our spoken language alters in different ways than just the formation and reimplementation of words. Our way of speaking shifts, sometimes drastically, such that given enough time and relative isolation, two strong dialects can diverge into two mutually unintelligible languages. It seems difficult to imagine how such a shift can occur in our way of speaking, such that in one swoop words like the German drei and the English three could become so radically different in sound (or even, to take a word that altered at both extremes, the German Dieb and the English thief). Yet would it be such a surprise if we found that the soft 'th' sound was replaced in certain parts of the anglophone world with a 'f'? That is to say, would firty-free feories really be so unimaginable, or even unintelligible? But it would appear that the speed and extent to which linguistic change occurs has been retarded by the mass spread of literacy and new technology. The latter has made the world a much smaller place, and broken down the normal geographical confines of our languages. Isolation is now no longer as simple as settling in the next valley, or the next island, or even on another continent, and the normal understanding we have of borrowing words from neighbouring languages is in many languages overruled by other concerns. In the former case, however, the written word provides a stone framework upon which many of us develop our spoken language, even if this written form does not do a particularly good job of representing our language.
But perhaps we are coming across a period of acceleration, once again. We are all, of course, authors of spoken language and to such an extent we all contribute to the way in which our spoken language alters. Though these changes are usually very gradual, they are certainly noticeable, as when comparing English to its nearest linguistic relatives, or even simply pondering the origin of the variety of sounds that remain petrified in a single written form such as 'ough' (e.g. through, though, bough, lough, enough). Yet where previously, the spread of technology and literacy had a halting effect on the rate of change, today's technologies are empowering more people to become authors of all kinds of 'written' content, through email, SMS, social networking, blogging, twittering and so on. Unlike the written material of the past, so often carefully proof-read to conform to all the prescribed rules, or private, written correspondence that would have very few readers, today's authors are both carefree and numerous, and their recipients likewise. The number of txt messages sent on a daily basis is frankly staggering, and whilst they represent a particular niche form of the written word, there is plenty of other published material to add to that tally, which comes from ordinary minds processing the English language as they see fit, without proofreaders or editors watching over their shoulders.
To some extent it is largely too soon to tell quite what the effect of this rapid expansion in people's written output will be. The rules of language are descriptions of the way in which we use it, just as a dictionary records the words as they are used in a language, rather than prescribing the way words must be used. As our language changes, so must the rules move to accommodate it. And these rules will not be created by some small ivory tower institution, but will develop piecemeal through official and unofficial custom. Take Birmingham City Council's recent decision to remove apostrophes from place names, for example, a slightly detracted but certainly not wholly unrelated manoeuvre to Bournemouth Council's move late last year to prohibit the use of certain Latin terms.
So back to where we started then—how much attention do you pay to the squiggly red line? Typos aside, would you stop and reconsider, and use another word you know to exist? Or do you allow yourself to create freely, hang all the rules? And how far do you consider yourself to be author, not only of the words, but of the 'rules' of our language?
LanguagesWords
In Store for the New Year
IBU Biathlon World Championship Under Way


text:
package org.springframework.boot.web.servlet.support;

import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

import org.junit.Rule;
import org.junit.Test;

import org.springframework.boot.testsupport.rule.OutputCapture;
import org.springframework.boot.web.server.ErrorPage;
import org.springframework.http.HttpStatus;
import org.springframework.mock.web.MockFilterChain;
import org.springframework.mock.web.MockFilterConfig;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.mock.web.MockRequestDispatcher;
import org.springframework.web.context.request.async.DeferredResult;
import org.springframework.web.context.request.async.StandardServletAsyncWebRequest;
import org.springframework.web.context.request.async.WebAsyncManager;
import org.springframework.web.context.request.async.WebAsyncUtils;
import org.springframework.web.util.NestedServletException;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

/**
 * Tests for {@link ErrorPageFilter}.
 *
 * @author Dave Syer
 * @author Andy Wilkinson
 */
public class ErrorPageFilterTests {

	private ErrorPageFilter filter = new ErrorPageFilter();

	private DispatchRecordingMockHttpServletRequest request = new DispatchRecordingMockHttpServletRequest();

	private MockHttpServletResponse response = new MockHttpServletResponse();

	private MockFilterChain chain = new MockFilterChain();

	@Rule
	public OutputCapture output = new OutputCapture();

	@Test
	public void notAnError() throws Exception {
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.chain.getRequest()).isEqualTo(this.request);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse())
				.isEqualTo(this.response);
		assertThat(this.response.isCommitted()).isTrue();
		assertThat(this.response.getForwardedUrl()).isNull();
	}

	@Test
	public void notAnErrorButNotOK() throws Exception {
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				((HttpServletResponse) response).setStatus(201);
				super.doFilter(request, response);
				response.flushBuffer();
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(((HttpServletResponse) this.chain.getResponse()).getStatus())
				.isEqualTo(201);
		assertThat(((HttpServletResponse) ((HttpServletResponseWrapper) this.chain
				.getResponse()).getResponse()).getStatus()).isEqualTo(201);
		assertThat(this.response.isCommitted()).isTrue();
	}

	@Test
	public void unauthorizedWithErrorPath() throws Exception {
		this.filter.addErrorPages(new ErrorPage("/error"));
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				((HttpServletResponse) response).sendError(401, "UNAUTHORIZED");
				super.doFilter(request, response);
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.chain.getRequest()).isEqualTo(this.request);
		HttpServletResponseWrapper wrapper = (HttpServletResponseWrapper) this.chain
				.getResponse();
		assertThat(wrapper.getResponse()).isEqualTo(this.response);
		assertThat(this.response.isCommitted()).isTrue();
		assertThat(wrapper.getStatus()).isEqualTo(401);
		// The real response has to be 401 as well...
		assertThat(this.response.getStatus()).isEqualTo(401);
		assertThat(this.response.getForwardedUrl()).isEqualTo("/error");
	}

	@Test
	public void responseCommitted() throws Exception {
		this.filter.addErrorPages(new ErrorPage("/error"));
		this.response.setCommitted(true);
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				((HttpServletResponse) response).sendError(400, "BAD");
				super.doFilter(request, response);
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.chain.getRequest()).isEqualTo(this.request);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse())
				.isEqualTo(this.response);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus())
				.isEqualTo(400);
		assertThat(this.response.getForwardedUrl()).isNull();
		assertThat(this.response.isCommitted()).isTrue();
	}

	@Test
	public void responseUncommittedWithoutErrorPage() throws Exception {
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				((HttpServletResponse) response).sendError(400, "BAD");
				super.doFilter(request, response);
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.chain.getRequest()).isEqualTo(this.request);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse())
				.isEqualTo(this.response);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus())
				.isEqualTo(400);
		assertThat(this.response.getForwardedUrl()).isNull();
		assertThat(this.response.isCommitted()).isTrue();
	}

	@Test
	public void oncePerRequest() throws Exception {
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				((HttpServletResponse) response).sendError(400, "BAD");
				assertThat(request.getAttribute("FILTER.FILTERED")).isNotNull();
				super.doFilter(request, response);
			}
		};
		this.filter.init(new MockFilterConfig("FILTER"));
		this.filter.doFilter(this.request, this.response, this.chain);
	}

	@Test
	public void globalError() throws Exception {
		this.filter.addErrorPages(new ErrorPage("/error"));
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				((HttpServletResponse) response).sendError(400, "BAD");
				super.doFilter(request, response);
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus())
				.isEqualTo(400);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE))
				.isEqualTo(400);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_MESSAGE))
				.isEqualTo("BAD");
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_REQUEST_URI))
				.isEqualTo("/test/path");
		assertThat(this.response.isCommitted()).isTrue();
		assertThat(this.response.getForwardedUrl()).isEqualTo("/error");
	}

	@Test
	public void statusError() throws Exception {
		this.filter.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				((HttpServletResponse) response).sendError(400, "BAD");
				super.doFilter(request, response);
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus())
				.isEqualTo(400);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE))
				.isEqualTo(400);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_MESSAGE))
				.isEqualTo("BAD");
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_REQUEST_URI))
				.isEqualTo("/test/path");
		assertThat(this.response.isCommitted()).isTrue();
		assertThat(this.response.getForwardedUrl()).isEqualTo("/400");
	}

	@Test
	public void statusErrorWithCommittedResponse() throws Exception {
		this.filter.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				((HttpServletResponse) response).sendError(400, "BAD");
				response.flushBuffer();
				super.doFilter(request, response);
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus())
				.isEqualTo(400);
		assertThat(this.response.isCommitted()).isTrue();
		assertThat(this.response.getForwardedUrl()).isNull();
	}

	@Test
	public void exceptionError() throws Exception {
		this.filter.addErrorPages(new ErrorPage(RuntimeException.class, "/500"));
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				super.doFilter(request, response);
				throw new RuntimeException("BAD");
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus())
				.isEqualTo(500);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE))
				.isEqualTo(500);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_MESSAGE))
				.isEqualTo("BAD");
		Map<String, Object> requestAttributes = getAttributesForDispatch("/500");
		assertThat(requestAttributes.get(RequestDispatcher.ERROR_EXCEPTION_TYPE))
				.isEqualTo(RuntimeException.class);
		assertThat(requestAttributes.get(RequestDispatcher.ERROR_EXCEPTION))
				.isInstanceOf(RuntimeException.class);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE))
				.isNull();
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_EXCEPTION)).isNull();
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_REQUEST_URI))
				.isEqualTo("/test/path");
		assertThat(this.response.isCommitted()).isTrue();
		assertThat(this.response.getForwardedUrl()).isEqualTo("/500");
	}

	@Test
	public void exceptionErrorWithCommittedResponse() throws Exception {
		this.filter.addErrorPages(new ErrorPage(RuntimeException.class, "/500"));
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				super.doFilter(request, response);
				response.flushBuffer();
				throw new RuntimeException("BAD");
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.response.getForwardedUrl()).isNull();
	}

	@Test
	public void statusCode() throws Exception {
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				assertThat(((HttpServletResponse) response).getStatus()).isEqualTo(200);
				super.doFilter(request, response);
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus())
				.isEqualTo(200);
	}

	@Test
	public void subClassExceptionError() throws Exception {
		this.filter.addErrorPages(new ErrorPage(RuntimeException.class, "/500"));
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				super.doFilter(request, response);
				throw new IllegalStateException("BAD");
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus())
				.isEqualTo(500);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE))
				.isEqualTo(500);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_MESSAGE))
				.isEqualTo("BAD");
		Map<String, Object> requestAttributes = getAttributesForDispatch("/500");
		assertThat(requestAttributes.get(RequestDispatcher.ERROR_EXCEPTION_TYPE))
				.isEqualTo(IllegalStateException.class);
		assertThat(requestAttributes.get(RequestDispatcher.ERROR_EXCEPTION))
				.isInstanceOf(IllegalStateException.class);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE))
				.isNull();
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_EXCEPTION)).isNull();
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_REQUEST_URI))
				.isEqualTo("/test/path");
		assertThat(this.response.isCommitted()).isTrue();
	}

	@Test
	public void responseIsNotCommittedWhenRequestIsAsync() throws Exception {
		this.request.setAsyncStarted(true);
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.chain.getRequest()).isEqualTo(this.request);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse())
				.isEqualTo(this.response);
		assertThat(this.response.isCommitted()).isFalse();
	}

	@Test
	public void responseIsCommittedWhenRequestIsAsyncAndExceptionIsThrown()
			throws Exception {
		this.filter.addErrorPages(new ErrorPage("/error"));
		this.request.setAsyncStarted(true);
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				super.doFilter(request, response);
				throw new RuntimeException("BAD");
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.chain.getRequest()).isEqualTo(this.request);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse())
				.isEqualTo(this.response);
		assertThat(this.response.isCommitted()).isTrue();
	}

	@Test
	public void responseIsCommittedWhenRequestIsAsyncAndStatusIs400Plus()
			throws Exception {
		this.filter.addErrorPages(new ErrorPage("/error"));
		this.request.setAsyncStarted(true);
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				super.doFilter(request, response);
				((HttpServletResponse) response).sendError(400, "BAD");
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.chain.getRequest()).isEqualTo(this.request);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse())
				.isEqualTo(this.response);
		assertThat(this.response.isCommitted()).isTrue();
	}

	@Test
	public void responseIsNotCommittedDuringAsyncDispatch() throws Exception {
		setUpAsyncDispatch();
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.chain.getRequest()).isEqualTo(this.request);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse())
				.isEqualTo(this.response);
		assertThat(this.response.isCommitted()).isFalse();
	}

	@Test
	public void responseIsCommittedWhenExceptionIsThrownDuringAsyncDispatch()
			throws Exception {
		this.filter.addErrorPages(new ErrorPage("/error"));
		setUpAsyncDispatch();
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				super.doFilter(request, response);
				throw new RuntimeException("BAD");
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.chain.getRequest()).isEqualTo(this.request);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse())
				.isEqualTo(this.response);
		assertThat(this.response.isCommitted()).isTrue();
	}

	@Test
	public void responseIsCommittedWhenStatusIs400PlusDuringAsyncDispatch()
			throws Exception {
		this.filter.addErrorPages(new ErrorPage("/error"));
		setUpAsyncDispatch();
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				super.doFilter(request, response);
				((HttpServletResponse) response).sendError(400, "BAD");
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.chain.getRequest()).isEqualTo(this.request);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getResponse())
				.isEqualTo(this.response);
		assertThat(this.response.isCommitted()).isTrue();
	}

	@Test
	public void responseIsNotFlushedIfStatusIsLessThan400AndItHasAlreadyBeenCommitted()
			throws Exception {
		HttpServletResponse committedResponse = mock(HttpServletResponse.class);
		given(committedResponse.isCommitted()).willReturn(true);
		given(committedResponse.getStatus()).willReturn(200);
		this.filter.doFilter(this.request, committedResponse, this.chain);
		verify(committedResponse, times(0)).flushBuffer();
	}

	@Test
	public void errorMessageForRequestWithoutPathInfo()
			throws IOException, ServletException {
		this.request.setServletPath("/test");
		this.filter.addErrorPages(new ErrorPage("/error"));
		this.chain = new MockFilterChain() {

			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				super.doFilter(request, response);
				throw new RuntimeException();
			}

		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.output.toString()).contains("request [/test]");
	}

	@Test
	public void errorMessageForRequestWithPathInfo()
			throws IOException, ServletException {
		this.request.setServletPath("/test");
		this.request.setPathInfo("/alpha");
		this.filter.addErrorPages(new ErrorPage("/error"));
		this.chain = new MockFilterChain() {

			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				super.doFilter(request, response);
				throw new RuntimeException();
			}

		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(this.output.toString()).contains("request [/test/alpha]");
	}

	@Test
	public void nestedServletExceptionIsUnwrapped() throws Exception {
		this.filter.addErrorPages(new ErrorPage(RuntimeException.class, "/500"));
		this.chain = new MockFilterChain() {
			@Override
			public void doFilter(ServletRequest request, ServletResponse response)
					throws IOException, ServletException {
				super.doFilter(request, response);
				throw new NestedServletException("Wrapper", new RuntimeException("BAD"));
			}
		};
		this.filter.doFilter(this.request, this.response, this.chain);
		assertThat(((HttpServletResponseWrapper) this.chain.getResponse()).getStatus())
				.isEqualTo(500);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE))
				.isEqualTo(500);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_MESSAGE))
				.isEqualTo("BAD");
		Map<String, Object> requestAttributes = getAttributesForDispatch("/500");
		assertThat(requestAttributes.get(RequestDispatcher.ERROR_EXCEPTION_TYPE))
				.isEqualTo(RuntimeException.class);
		assertThat(requestAttributes.get(RequestDispatcher.ERROR_EXCEPTION))
				.isInstanceOf(RuntimeException.class);
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE))
				.isNull();
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_EXCEPTION)).isNull();
		assertThat(this.request.getAttribute(RequestDispatcher.ERROR_REQUEST_URI))
				.isEqualTo("/test/path");
		assertThat(this.response.isCommitted()).isTrue();
		assertThat(this.response.getForwardedUrl()).isEqualTo("/500");
	}

	private void setUpAsyncDispatch() throws Exception {
		this.request.setAsyncSupported(true);
		this.request.setAsyncStarted(true);
		DeferredResult<String> result = new DeferredResult<>();
		WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(this.request);
		asyncManager.setAsyncWebRequest(
				new StandardServletAsyncWebRequest(this.request, this.response));
		asyncManager.startDeferredResultProcessing(result);
	}

	private Map<String, Object> getAttributesForDispatch(String path) {
		return this.request.getDispatcher(path).getRequestAttributes();
	}

	private static final class DispatchRecordingMockHttpServletRequest
			extends MockHttpServletRequest {

		private final Map<String, AttributeCapturingRequestDispatcher> dispatchers = new HashMap<>();

		private DispatchRecordingMockHttpServletRequest() {
			super("GET", "/test/path");
		}

		@Override
		public RequestDispatcher getRequestDispatcher(String path) {
			AttributeCapturingRequestDispatcher dispatcher = new AttributeCapturingRequestDispatcher(
					path);
			this.dispatchers.put(path, dispatcher);
			return dispatcher;
		}

		private AttributeCapturingRequestDispatcher getDispatcher(String path) {
			return this.dispatchers.get(path);
		}

		private static final class AttributeCapturingRequestDispatcher
				extends MockRequestDispatcher {

			private final Map<String, Object> requestAttributes = new HashMap<>();

			private AttributeCapturingRequestDispatcher(String resource) {
				super(resource);
			}

			@Override
			public void forward(ServletRequest request, ServletResponse response) {
				captureAttributes(request);
				super.forward(request, response);
			}

			private void captureAttributes(ServletRequest request) {
				Enumeration<String> names = request.getAttributeNames();
				while (names.hasMoreElements()) {
					String name = names.nextElement();
					this.requestAttributes.put(name, request.getAttribute(name));
				}
			}

			private Map<String, Object> getRequestAttributes() {
				return this.requestAttributes;
			}

		}

	}

}


Discontinued product. Supported until 2023-07-06.
Sweeping overviews and zoomed-in detail. Instant focus and full-color footage –even in low light. AXIS Q6052 is an advanced PTZ dome that gives you all that. Designed for demanding conditions, it's ideal for surveillance at airports, train stations, arenas, malls, warehouses and factories – anywhere you need fast and precise, round-the-clock pan/tilt/zoom operation.
Focus recall helps you get more out of your AXIS Q6052 in challenging light conditions. There's no need to focus manually or wait the second or two it takes for autofocus to adjust. Focus recall gives you instantaneous focus even in low-contrast scenes. And 36x zoom makes it possible to zoom in from great distance.
AXIS Q6052 also features Axis' Zipstream technology, which significantly lowers bandwidth and storage requirements while preserving high-quality images.
AXIS Q6052 is equipped with Axis' Lightfinder technology. In dark environments, Lightfinder "finds" light – to deliver excellent image quality with low noise and a wealth of detail. And where other PTZ cameras switch to black and white, Lightfinder provides color images that help you better understand situations and identify individuals. AXIS Q6052 also features WDR, which ensures excellent detail when there are both bright and darker areas in a scene.


A thunderous start for Go Karts!
We are thrilled about the launch of our newest racing sensation, Go Karts –the ultimate 3D Kart Racing game. The game has phenomenally achieved high ranking on the app store from the very first day of its launch. We are super excited to see gamers enjoying this ultimate racing showdown on their iPhones and iPads this Christmas!
Go Karts is an extremely fast-paced, heart-pumping race aiming to give extreme thrills to our gamers. In Go Karts, you can feel the rush and adrenaline pumping of racing your Kart on realistic tracks. The 11 stunning tracks have been phenomenally designed taking real life inspiration from world famous tracks. Enjoy the speed as you race the tracks of Monarto Karting Complex, Monticello Karting, Mosport International, Jim Hall Track Time, Dubai Autodrome, Kart Kountry, Lydd Kart Circuit on your device.
Enjoy our smashing sound score and stunning graphics as you go racing with us. The exhilarating races and the enthralling go karts will keep you spell bound making you come back for more! The game features personalized controls, stunning 3D world and exciting racing formats. The game is packed with 6 vibrant and colorful Go Karts for you to drive on.
This is just the beginning, we have bigger plans for Go Karts, and can't wait to see what you guys think.
Stay tuned on Facebook, Twitter and Go Karts for more updates.
CHRISTMAS OFFER: Unlock one track absolutely FREE on Sign up with GameAnax.
Are you ready to experience the most thrilling ride of your life? Download Go Karts today and find out!


text:
Q: TZ Database on Debian Stable for Casablanca ignores the permanent change to DST and Adds an offset of 1 I am on a Debian Stable 9 (stretch), the newly updated TZ database for Africa/Casablanca Table currently states isdst=0 and an offset from UTC of +01.
From the DST in Morocco Wiki page
https://en.wikipedia.org/wiki/Daylight_saving_time_in_Morocco
It is clear that a permanent offset of UTC +1:00 was added from October 2018 and daylight savings is now permanently observed.
But during Ramadan the offset has been traditionally reset to UTC 00:00. But the TZ database denotes that they add an offset of +01 and isdst is set to 1.
This issue is only applicable to Africa/Casablanca.
It seems to be an issue with Debian Stable. Any advice on fixing this issue is appreciated
zdump -v /usr/share/zoneinfo/Africa/Casablanca | grep 2019
/usr/share/zoneinfo/Africa/Casablanca  Sun May  5 01:59:59 2019 UT = Sun May  5 02:59:59 2019 +01 isdst=0 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca  Sun May  5 02:00:00 2019 UT = Sun May  5 02:00:00 2019 +00 isdst=1 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca  Sun Jun  9 01:59:59 2019 UT = Sun Jun  9 01:59:59 2019 +00 isdst=1 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca  Sun Jun  9 02:00:00 2019 UT = Sun Jun  9 03:00:00 2019 +01 isdst=0 gmtoff=3600

A: From the tzdb 2018h release notes (emphasis mine):

Changes to future timestamps
Guess that Morocco will continue to fall back just before and  spring
  forward just after Ramadan, the practice since 2012.  (Thanks to
  Maamar Abdelkader.)  This means Morocco will observe  negative DST
  during Ramadan in main and vanguard formats, and in  rearguard format
  it stays in the +00 timezone and observes  ordinary DST in all months
  other than Ramadan.  As before, extend  this guesswork to the year
  2037.  As a consequence, Morocco is  scheduled to observe three DST transitions in some Gregorian years  (e.g., 2033) due to the mismatch
  between the Gregorian and Islamic  calendars.

It was later confirmed that Morocco did indeed adjust its clocks for Ramadan as predicted.  You can read the tz discussion thread, or the article about it on timeanddate.com.
Even the Wikipedia article you cited mentions this:

... An exception was made during the month of Ramadan during which clocks reverted to UTC+00:00 (standard time).

redpajama_set_name: RedPajamaStackExchange


text:
Churches Act to End Famine
Christian World Service invites churches, organisations and individuals of all faiths to join a Global Day of Prayer to End Famine on Sunday, 21 May. The World Council of Churches and the All Africa Conference of Churches initiated the global effort in response to a growing global hunger crisis that is affecting millions of the world's people.
Last week Wadalla Peter from Maridi Service Agency reported, "Many people are going without a meal in a day. Government employees have not been paid for four months. People survive the hard way. They struggle to find a little to feed their families." Food prices have risen 800%. MSA can only provide two meals a week at its two nursery schools – a 50kg bag of maize meal now costs NZ$107.
In February, the UN declared famine in two states of South Sudan, and 20 million people are living on the edge of starvation in north-eastern Nigeria, Somalia, South Sudan, and Yemen. Communities in Burundi, Ethiopia, Kenya and Uganda are also malnourished.
The United Nations predicts 5.5 million South Sudanese – 47% of the population will be hungry by July. Already 1.8 million have fled to neighbouring countries – one million are children. The UN has cut food rations in Uganda host to 898,000 South Sudanese refugees and is appealing for new funding.
"The combination of conflict, prolonged drought and poverty is taking a terrible toll. People are living on a knife-edge. Without greatly increased financial support and protection, the outlook for many is very bleak," says National Director Pauline McKay.
Famine is a technical term – when 30% of a population is severely malnourished and at least two people out of every 10,000 die every day.
Donations to the South Sudan Famine Appeal will fund MSA's support for mothers displaced by hunger and conflict with emergency supplies and start-up funds for small businesses and ACT Alliance (Action by Churches Together) for relief support in Unity and Bahr el Ghazal states.
An order of service, prayers, suggested hymns, a PowerPoint, and other information are available for this global event. CWS has prepared a bulletin insert and there is a short video available.
In supporting this day, CWS is asking churches to hold an offering for the South Sudan Famine Appeal. Funds raised will provide emergency food, commodity vouchers and tools for agriculture as well as livelihood support to displaced people. If you can, please help save lives by supporting this appeal.
Donations to can be made:
• On line to the South Sudan Famine Appeal and by direct deposit
• By Phone with a credit card: 0800 74 73 72
• By Post to: CWS, PO Box 22652, Christchurch 8140
CWS is a member of ACT Alliance a global coalition of 140 churches and church-related organisations working together on humanitarian, development and advocacy in over 100 countries.


Once I realized I had two Witherspoons, putting them together seemed inevitable.
This is movie star Reese Witherspoon.
This is comedian and actor John Witherspoon.
The historic Witherspoon Double-Shot almost didn't happen. I took the Reese photo, but John was snapped by alert Late Show intern Justin Tasolides.
This is Late Show intern Justin Tasolides.
I considered holding onto Justin's photo until I could pair it up with a picture of someone else with the last name Tasolides, but I decided not to press my luck.
Show intern Justin Tasolides is dead? You said he is the late show intern Justin Tasolides. I would like to request a moment of silence to honor all his hard work and his alertness at photographing John Witherspoon, right before he died. Justin, not John.
By your logic, Karl, the show I work for has been dead since 1993. If true, this is troubling.
That would explain why you haven't been paid in 19 years. Each week you think "This is the week I finally get paid, 400 back checks!"
No wonder I'm limping along with that broken-down camera.
You should be asking Justin what it's like to be dead but not to know it. This could be a fascinating breakthrough in the field of psychoparagumnormal research.
Posting from beyond the grave is certainly an interesting sensation. As is being an intern; college credit doesn't transfer to the after life.
Justin! So glad you're not in pain anymore!
"CelebriGum Intern" is going to look great on your resume, Justin!
Justin, can you tell us what caused your demise? Was it being forced to chew off-brand generic gum manufactured in the nether regions of China? Or were you pushed down the stairs of the Ed Sullivan theater by an angry, overworked writer?
Hey is Justin the guy who plays Cardinal Timothy Dolan?


text:
Q: Size of a Language? I am trying to understand the model answer for the following question
Given some alphabet $Σ$ and $w ∈ Σ^∗$, the number of string $x ∈ Σ^∗$ are there such that $|x| ≤ |w|$
Solution:
$\sum_{i=0}^{|w|} |Σ|^i $
lets assume $|Σ| = 10$ and $|w| = 2$. Does this mean $\sum_{i=0}^{2} (|10|^0 + |10|^1 +|10|^2) $ or does this mean $\sum_{i=0}^{2} (|1|^0 + |2|^1 +|3|^2)$ (the size of the language at that index)
furthermore what is $x$ and $w$ is it a string? a set of strings?

A: Both $x$ and $w$ are defined as $\in \Sigma^*$. Thus they are elements of the set of all strings over the alphabet $\Sigma$, which means they are strings.
Thus $|w|$ is the length of the string, not the cardinality of a set.
As @rici has already stated in the comment, the solution means in your example case $\sum_{i=0}^2 (10^i)$ which is $10^0 + 10^1 + 10^2$ (no cardinality for the number 10).
You have $10^0=1$ strings of length zero, the unique empty string.
You have $10^1=10$ strings of length one, those consisting of one of the possible letters.
You have $10^2=100$ strings of length two, because you have ten options for the first position and ten for the second.


text:
Die Strukturlegetechnik (abgekürzt oft SLT) ist eine Methode zur Rekonstruktion subjektiver Theorien und darauf basierender Handlungen durch ein Dialog-Konsens-Verfahren. Ziel ist es, einen Konsens über Ziel-Mittel-Argumentationen bzw. eine Flussdiagramm-Beschreibung von Handlungen im Dialog zu erstellen. Es handelt sich also um eine Form der kommunikativen Validierung von subjektiven Theorien. Theoretische Grundlage ist das Konzept der "inneren" oder "mentalen" "Repräsentation". Darstellbar sind sowohl deklarative Wissensformen ("Zustandswissen") als auch prozedurales oder Veränderungswissen einschließlich der dafür erforderlichen Transformationsregeln.

Methode
Man benötigt (Kartei- bzw. Metaplan-)Kärtchen und einen potentiellen Benutzer mit guter Abstraktionsfähigkeit. Der Benutzer soll im Dialog mit einem geschulten Beobachter mittels der Kärtchen, deren Zahl vorab nicht begrenzt ist, aber 30 selten überschreitet, einen Zustand oder einen Ablauf (bzw. eine handlungsorientierte Struktur) nachbilden. Die Kärtchen sollen entweder mit Begriffen beschriftet werden, die der Benutzer nennt, oder mit vorbereiteten Begriffen und Funktionen (z. B. "... impliziert ...", "folgt aus", "steht im Gegensatz zu", "ist Voraussetzung für", "ist größer/kleiner als", "verstärkt/verringert", "sind wechselseitig abhängig", "ist definitorisch gleich", "ist Ober-/Unterkategorie von", "beabsichtigt").

Anwendungen
Außer in der psychologischen Diagnostik (auch bei Aphasie) finden sich Anwendungen im Rahmen der Evaluierung von gebrauchstauglichen Produkten und Systemen oder in der Risikoforschung. Die Anwendung deckt Handlungsursachen und -motive im Dialog auf und verhindert z. B., dass riskante Fehlhandlungen oder fehlerhafte Abläufe in komplexen Systemen "von außen" falsch gedeutet werden. Sie stimuliert die Reflexion über das eigene und fremde Handeln.

Aufwand
Das Strukturlegen erfordert nur eine geringe Vorbereitung. Die Durchführung und Auswertung ist ebenfalls nicht sehr zeitaufwändig (ca. eine bis zu drei Stunden pro Sitzung). Die Technik ist urheberrechtlich nicht geschützt und nach gewisser Übung von allen Menschen mit hinreichender Abstraktionsfähigkeit nutzbar.

Vor- und Nachteile
Das Instrument kann durch beliebige Funktionskarten ergänzt werden. Die Methode lässt es zu, die Ergebnisse ("Mikrobilder") unterschiedlicher Benutzer direkt zu vergleichen. Die gedanklichen Vorstellungen des Benutzers können präzise erfasst werden. So können auch unterschiedliche Sichtweisen von Angehörigen verschiedener Berufsgruppen verdeutlicht werden. Die SLT kann auch für Gruppen verwendet werden, die im Dialog ein gemeinsames Bild der Situation entwerfen, was allerdings arbeitsintensiver ist und möglicherweise nicht lösbare Widersprüche ausklammert. Die nachträgliche Aggregierung individueller Sichtweisen zu einem Gesamtbild ist ein äußerst komplexer Prozess, der allein mit der SLT nicht zu lösen ist. Das Instrument eignet sich auch nicht zur Konstruktion geplanter Funktionen. Es handelt sich auch nicht um ein Kreativitätstool.

Literatur
 Brigitte Scheele (Hrsg.): Struktur-Lege-Verfahren als Dialog-Konsens-Methodik. Ein Zwischenfazit zur Forschungsentwicklung bei der rekonstruktiven Erhebung Subjektiver Theorien. Münster 1992.

Einzelnachweise

Usability
Empirische Sozialforschung
Psychologische Diagnostik
Wissenssoziologie


We are happy to inform you that we have sent your payments of funds earned over the period from 23.04 to 29.04. Please check your wallets.
You will receive your next payment on Thursday, May 10, for the period from 30.04 to 06.05.
- correctly filled-out payment details in advance (not on payment day).
We are happy to inform you that we have sent your payments of funds earned over the period from 16.04 to 22.04. Please check your wallets.
You will receive your next payment on Thursday, May 3, for the period from 23.04 to 29.04.
We would like to remind you that the rules prescribed in our Affiliate Agreement must be strictly observed.
Otherwise, upon violation of any point, the partner's account may be blocked and could further result in account closure.
We are happy to inform you that we have sent your payments of funds earned over the period from 09.04 to 15.04. Please check your wallets.
We are happy to inform you that we have sent your payments of funds earned over the period from 02.04 to 08.04. Please check your wallets.
- how to get the first payment?
● correctly filled-out payment details in advance (not on payment day). Check your e-mail for more info about payments details.
- survey. We want to become even better and your opinion is very important to us!
Please rate the BinPartner affiliate program on a scale from 1 to 5.
We will be especially grateful for detailed feedback.This survey is anonymous.
Additional columns have been added to Statistics: "Bonuses" and Trader "Balance".
The "Bonuses" column is available in the Statistics sections: "General" and "By client." The "Balance" column is only in the "By client" Statistics section. "Bonuses" shows up-to-date information on all the bonuses accepted by your clients, including bonuses when crediting the account and within the framework of promotions. The information is updated in accordance with changes in the client's account in real time.
The "Balance" column shows the real balance amount of a trader on the trading platform, including their bonus amount.
Now it's even easier to analyze trader activity!
There are situations when a partner does not receive their payment although they fulfilled all the necessary conditions. How can this be?
- the partner changed their wallet on the day of payment (in this case, the payment will be sent to the previously indicated wallet, or will not be sent at all if a wallet had not been indicated before).
We are happy to inform you that we have sent your payments of funds earned over the period from 26.03 to 01.04. Please check your wallets.
▪ correctly filled-out payment details in advance (not on payment day).
— the "Your Ticket" promotion for traders is being held from April 5 to 8. Free access to the "Fortnight" tournament + 20% on deposits. Use up-to-date information to attract new traders to the Binomo trading platform.
We are happy to inform you that we have sent your payments of funds earned over the period from 19.03 to 25.03 Please check your wallets.
- please note that due to the updating of promotional materials, starting 29.03, the Widgets (sign-up form) in the "Promo" section of your BinPartner personal account will be temporarily unavailable. We will try to get them back updated and beautiful in the shortest possible time.
We are happy to inform you that we have sent your payments of funds earned over the period from 12.03 to 18.03. Please check your wallets.
- the best landing page?
- we remind you that the "Your first deposit" promotion is now over. Please, be attentive and, if necessary, update your information about current promotions and tournaments on the Binomo trading platform for your traders.
We are happy to inform you that we have sent your payments of funds earned over the period from 19.02 to 25.02. Please check your wallets.
We are happy to inform you that we have sent your payments of funds earned over the period from 05.02 to 11.02. Please check your wallets.
- Please note that in the near future no payments will be made to Neteller wallets. Please change your payment information to any other electronic payment system available in your account if you have not already done so.