text:
'Rogue One: A Star Wars Story' Character Descriptions and Odd Names
By eelyajekiM | @ | Wednesday, June 22nd, 2016 at 10:45 pm
Today brought us confirmation that Darth Vader would be in Rogue One: A Star Wars Story. But that isn't the only bit of news we should be excited over. We also got a little bit of background information for a few of the film's characters. However, even more details and official names are being released about the group who will go on a daring mission to steal the plans to the Death Star, and the untrustworthy antagonist who is trying to rise within the ranks of the Empire.
Find out more about who these characters are and their purpose in the film below.
The information comes to us from EW, who confirmed that Darth Vader would be in the film. While he is obviously a significant character, the magazine's latest piece focuses more on the characters who will attempt to steal the plans and the man who intends to stop them.
We will start with Jyn Erso. Played by Felicity Jones, Jyn is described as "a streetwise delinquent who has been on her own since 15." She's also skillful in hand-to-hand combat, something that the Rebels see as helpful when they are putting together the group who will go on a dangerous mission like stealing plans to the Death Star. But as previously reported, she has had run-ins with both factions, and now that she is in the custody of the Rebellion, she has the opportunity to clear her name by going on that mission. "She has been detained [by the Rebellion] and is being given an opportunity to be useful," says Lucasfilm President Kathleen Kennedy. "And by being useful, it may commute her sentence… She's a real survivor. She becomes a kind of Joan of Arc in the story."
Captain Cassian Andor
Based on the description given, it seems as though Captain Cassian Andor (Diego Luna) will be the one to give out the commands on this mission. Described as a "by-the-book Rebel intelligence officer," he will be responsible for keeping an eye on the unpredictable Erso. According to Kennedy, he's committed, steady, and practical, and has seen more than his share of combat. He basically is one of the most experienced members of the team.
Chirrut Imwe
We briefly saw what Donnie Yen could do in the teaser trailer for Rogue One, but did not know who he was until now. He'll play Chirrut Imwe, who isn't a Jedi, but "a warrior monk" who is "dedicated to their way of life." And yes he is blind, he uses his spirituality as a guide to overcome his blindness to be the warrior that we saw in the teaser trailer.
Baze Malbus
Sometimes it helps to have a friend, and that is what Baze Malbus (Jiang Wen) is to Chirrut. Although he doesn't share the same beliefs in the ways of the Jedi or their ancient weaponry, he will protect him at any cost. "He understands Chirrut's spiritual centeredness, but he doesn't necessarily support it," Kennedy says. Baze does this because of Chirrut's profound belief in the ways of the Jedi. The bond that these two share is similar to that of Don Quixote and Sancho Panza, or maybe even Han Solo and Chewbacca.
Bodhi Rook
Riz Ahmed is Bodhi Rook, the pilot of the group. He tends to be hot-headed, but when under pressure he can fly like an ace pilot. But it appears that his skills are best at transporting instead of aerial dog fighting. "He flies a lot of cargo, one of his key jobs," Kennedy says. "And he tends to be a little tense, a little volatile, but everybody in the group really relies on his technical skills."
K-2SO
Rogue One director Gareth Edwards calls K-2SO (Alan Tudyk) "the antithesis of C-3PO." Meaning, he isn't the easily startled meager but also kind robot we've seen, instead K-2SO is tough, confident, not especially interested in "human/cyborg relations." According to Edwards, "He doesn't give a s— about what you think. He doesn't fully check himself before he says things and does things. He just speaks the truth." He also has had a few run-ins with the Rebels and is looking to communicate by going on this mission.
Galen Erso
Mads Mikkelsen will play Galen Erso, a highly sought after scientist by both the Rebels and the Empire, and estranged father to Jyn. He is described as a galactic version of nuclear pioneer J. Robert Oppenheimer. It's not clear how Galen and Jyn became an estranged family, but Disney and Lucasfilm aren't willing to give out that kind of information just yet. PR isn't even ready to release an image of him, making his character even more important as it could have a significant impact on the Star Wars storytelling universe.
Orson Krennic
Our villain of the group will no longer go by the name "guy in the white cloak." Director Orson Krennic (Ben Mendelsohn), who is described as "an ambitious Imperial apparatchik who intends to use his squad of Deathtroopers to pulverize the Rebel uprising and ascend into the Emperor's graces – while hopefully avoiding the wrath of his enforcer, Darth Vader." According to the site, he's really smart, and really effective, but there are people within the Empire who are "conspiring to move up the ranks and sabotaging each other." So basically there's still some trust issues that needs to be worked out.
Saw Gerrera
Finally, there's Saw Gerrera (Forrest Whitaker). Now, this isn't the first time some of us have seen the character. In fact, if you go as far back as the Clone Wars series, you would have seen him. Debuting in an episode titled "A War on Two Fronts" and a handful of episodes after that, Saw and his sister Steela fighting alongside Anakin Skywalker before he became Darth Vader. So it should be interesting to see if he were to confront Darth Vader the same way that Ahsoka did in Star Wars Rebels. Heck, there may be an even an episode that leads up to Rogue One, how awesome would that be.
We learn that he is "kind of a battered veteran who leads a band of Rebel extremists," though he doesn't "rebel" as much as Jyn does.
Rogue One: A Star Wars Story hits theaters on December 16, 2016.
[Source: EW |EW]
Topics: Movies, News, Photos, Prequels
Tags: Ben Mendelsohn, Christopher McQuarrie, Diego Luna, donnie yen, Felicity Jones, Forest Whitaker, Gareth Edwards, Jiang Wen, Riz Ahmed, Rogue One, Rogue One: A Star Wars Story, Star Wars, Star Wars Anthology: Rogue One, Star Wars: Rogue One
Check That: 'Vinyl' Canceled By HBO After One Season
Size Of New King Kong In 'Skull Island' Revealed; Will 'Godzilla' Fight Be More Even Now?
• Holiday Geek Gift Guide 2020: Specialty Items
• Fall 2020 Book Recommendations
• Audiobook Review: Journey to Star Wars: The Rise of Skywalker: Spark of the Resistance
• What The 'Star Wars' Legacy Means To The Cast and Crew Of 'The Rise Of Skywalker'


text:
House music sensation Amy Dabbs shares Girl Like Me EP
FFO: Amy Dabbs,Hardwell,Paul Woolford
Image by: Frankie Casillo
Up and coming British house sensation Amy Dabbs take us on a journey through time and space, pulling us back to the past, then propelling us to the future with her latest EP Girl Like Me released on Distant Horizons, one of the sub-labels of Jimmy Asquith's London landmark Lobster Theremin.
The four track EP encapsulates the vision and virtues of true house music, reflecting elements through Amy's musical upbringing, taking influences from Motown through to early house music, whilst simultaneously instilling whispers of 80s and 90s soul that formed the building blocks of modern-day sound. Trusting in the mantra of doing what you love, Amy makes music she believes in. Music that makes you dance and elicit an emotional response, and which doesn't have to stay in its lane, making her sets and compositions more interesting and diverse. She leads us into a new era of musical production with the Girl Like Me EP. One of the first in a fresh wave of sound she will be putting out, Amy delivers tracks which incorporate elements from soul through to jazz, creating original house sounds with a blend of modern influences. Her tracks conjure a sense of nostalgia for the past but with a fresh take, creating a new genre of "straight up house".
The opening track "Girl Like Me" sets the tone with a vibrant pace and rhythmic precision. Illustrating life's ups and downs, it's a true testament to the power of positivity and nurtures the ever-present possibility of enrichment in our lives, even through hard times. "Mellowday" is infused with a little jazz. It's sublimely uplifting, a feel-good tune with an exquisite combination of sounds and vocals. The positive energy of the track and the title itself are inspired by her adopted rescue dog, Melody. "No More Distractions" shouts-out to the old skool. Cited by Amy as "inspirations" in her musical career, musical legends such as Larry Heard and Metro Area are paid homage to in this track with a revitalised use of the Juno 106, remembering forgotten sounds in a 90s style epic house encounter. And finally, "The Player" creates that end of the night vibe you feel, lifting you up with its soaring pads whilst grounding you with the lyrics of the spoken word. It will lyrically relate to many people; a tune to mend your wings and fly to!
London born, now Berlin based, Amy Dabbs is the daughter of an original Northern Soul DJ. She made a name for herself spinning at some of London's hottest locations including Egg LDN, Pacha and 93 Feet East. She has played sets at Austria's Alpfresco ski festival, Thailand's Wonderfruit festival, and was a resident at the legendary Kilo Lounge, an all-female DJ night 'Ladies of the Dark' and a regular booking at the Tanjong Beach Club, Kyo, ETTF events and HQ. She has released on reputable Italian label Rebirth and New York's i!Records and has been remixed by fellow UK producers Death on the Balcony. Amy has also played sets for the renowned Hallo Montag series in Berlin. One of her crowning achievements as a producer is Paul Woolford picking one of her tracks – soon to come out on EP – to place in his Special Request competition earlier this year.
French DJ Tchami shines in official remixes for 'Ghosts'
Follow Amy Dabbs:
Facebook / Instagram / Soundcloud
DJEP
Previous Dance electronic duo Bicep release euphoric song 'Saku'
Next Progressive house DJ Yan Solo releases euphoric EP Solstice
Exclusive DJ mix & interview with house musician Lempo

redpajama_set_name: RedPajamaCommonCrawl


Are you worried about how to safely move out your grand piano during your transit? No wonder, you have invested so much in it. And one can have sentimental attachments with musical instruments too. What if the keys or pedals get damaged during the move?
Here is a tip. The best way to ensure your piano gets safely moved out is to hire professional piano movers. A moving service can handle that job perfectly. They will come equipped with the tools necessary and will have the experience needed to carefully move your piano safely. Read up some of the benefits of working with a moving service Hampstead NH.
Most pianos are unlikely to fit through doors and around corners. A professional piano moving service will know how to take the instrument apart, transport the pieces safely, and also reassemble them. They will have special boards and dollies as well to move heavy objects without causing damage.
When you try to move your piano yourself, it usually ends up damaging your property. It is not only the piano we are talking about. You might smash some precious items in your surroundings while causing harm to your musical instrument too.
Pianos are usually heavy and the heaviest ones are too unsafe to move without help, especially when stairs are involved. You will put both you and your piano at risk by trying to move it yourself. A professional moving company will send the required number of workers to lift your instrument and move it without risking any damage.
Yes, you do need a truck and padding to move out your piano without causing any damage to it. Professional movers will have the proper trucks and padding to safely transport your piano so. They will load it in such a way as to survive any road hazards or bumps along the way.
The money you invest for the safety of your piano will depend on the size of your instrument and the location. However, mostly, the amount of assurance and quality service you get from seasoned movers is worth more than what you would spend risking damage on your own.


KARACHI, Apr 20 (INP): Nine people including women and children of same family died in a road mishap in Baldia Town area of Karachi late on Sunday night.
According to details, six people died instantly while three others succumbed to their injuries on their way to hospital after a head-on collision between a van and dumper truck at Hub River Road.
The dead also included two children and three women.
Madina colony police have arrested dumber driver, said to be responsible of the incident.


text:
QUEEN's catalogue, from bottom to top
WWE Main Event Results: July 3, 2013
WWE Main Event
The 40th edition of WWE Main Event came to you from the Landon Arena in Topeka, KS. Just under two weeks before they take part in the two Money-in-the-Bank Ladder Matches, "Captain Charisma" Christian would go one-on-one with "The Intellectual Savior of the Masses" Damien Sandow.
Christian def. Damien Sandow by pin following the Killswitch.
Jack Swagger def. Sin Cara by submission to the Patriot Lock.
Big E. Langston def. Curt Hawkins by pin following the Big Ending.
The opening match of the night featured two of the participants in the Money-in-the-Bank Ladder Matches at Money-in-the-Bank as one of competitors in Money-in-the-Bank All-Stars, Christian, would go one-on-one with one of the competitors in the World Heavyweight Championship Contract Money-in-the-Bank Ladder Match, Damien Sandow. At the end of a long and grueling match, it was Christian hitting the Killswitch on Damien Sandow to finally pick up the big victory.
Jack Swagger would return to action on Main Event as "The Real American", with Zeb Colter in his corner, would go one-on-one with Sin Cara. In the end, it was Jack Swagger locking in the Patriot Lock on Sin Cara, forcing Sin Cara to tap out to pick up the win.
With Divas Champion AJ Lee a guest on commentary, Big E. Langston was in action on Main Event as Langston would go one-on-one with Curt Hawkins. In the end, it was Big E. Langston leveling Curt Hawkins with the Big Ending en route to picking up the win.
What did you think of this week's Main Event? Post your comments in the box below.
WWE Main Event 2013
Enzo Mendicino
most wins on main event:
1) Jey Uso=8 (+6)
2) Jimmy Uso=8 (+6)
3) Justin Gabriel=8 (-)
4) Sheamus=6 (+2)
5) Wade Barrett=6 (-4)
6) Kofi Kingston=5 (-2)
7) The Big Show=5 (-5)
8) Cesaro=4 (+3)
9) Kane=4 (-)
10) Ryback=4 (-5)


There are many question marks surrounding the card company's ability to grow profits by slashing expenses.
When a company announces its intention to restructure, layoffs and cost-cutting efforts typically follow. Of course, there's no such thing as a "typical" restructuring, as each one varies in size and intensity. When American Express (NYSE:AXP) announced its restructuring plan, details were scant, so investors can only make so much of it.
What's happening at American Express?
There have been many waves of changes at American Express over the last several years. The latest involves changes at the top.
Its chief marketing officer will leave after 21 years at the company.
It will merge its world service and global credit administration units into a single organization.
It is creating an enterprise digital group to centralize its "web, mobile, and digital product management activities."
These initiatives certainly mean much more to people within American Express than to those on the outside.
We do know at least one specific plan. Prior to American Express' fourth-quarter earnings release, Bloomberg reported that the company is slashing staff in its enterprise growth unit, a group tasked with growing American Express' brand among less creditworthy clientele. Several top executives have left, and the unit will cut about 170 jobs, according to the article.
Enterprise growth is another name for American Express's push in the lower-end market. Traditionally serving high-income customers, American Express has struggled to grow among less wealthy customers.
However, the Bloomberg article mentions that American Express will continue to push into prepaid cards, pointing out that the division has been part of Amex since 2010, when the Serve product was created from the $300 million acquisition of a company then known as Revolution Money.
That the prepaid unit will live on may stand as some indication that Amex isn't cutting too deep just yet. American Express combines the balance sheet liabilities created by its prepaid cards with its Travelers Cheques. Although this line item grew quarter over quarter in its most recent report, year-over-year growth hasn't occurred. Growth, it appears, is only seasonal.
On page 110 of its 10-K, American Express leaves little to the imagination about its foray into prepaid products: The company noted that it took a $384 million impairment charge, which included a $219 million writedown to the "entire balance of goodwill in the Prepaid Services business." Prepaid is worth just as much dead as it is alive, apparently.
Amex is hoping to cut $1 billion from its cost base by the end of 2017. That's about 4.4% of its non-interest expenses in 2015. How it gets there remains a bit fuzzy. As one analyst was quick to point out on its conference call, winding down its relationship with Costco (NASDAQ:COST) would naturally result in lower expenses, obviously offset by lower revenue.
Two executives replied, but neither gave a firm answer as to how the cost savings would be divvied up. As 18% of Amex's loan book comes from Costco, there are inevitably plenty of operating expenses that are tied to its relationship with the retailer. But winding down expenses at the cost of revenue is not exactly ideal.
American Express will address its shareholders at its investor day on March 10. By then, shareholders should hope for better disclosure of its specific plans to eliminate expenses. "Restructuring" without context is just a buzzword.


Under the Equal Pay act, discrimination can be proven if men and women both work in the same place, do the same job, but are nonetheless paid differently. Employers in Riverton may also be held liable in a discrimination claim if their hiring and promotion policies favor one gender, or if the they take retaliatory action against a worker who files a complaint against their employer.
All unwelcome sexual behavior directed at the victim, including physical or verbal acts, is considered to be sexual harassment. An employer in Riverton might be liable for such conduct, even when it is simply other co-workers that have engaged in harassment.
Wyoming employers who allow conduct to produce an overly sexual work atmosphere may also be held liable for sexual harassment. The specific details for proving intent to discrimination can be complicated, and so gender discrimination might be hard to prove without an attorney. The procedures for filing can also be complex.


text:
Posts Tags Categories
PostsTagsCategories
RocketDonut
All About Rockets and Donuts
An Oral History on the Raid to Kill Bin Laden
Joel Cardona published on April 13, 2021 included in News
From Politico: "I'd Never Been Involved in Anything as Secret as This." The plan to kill Osama bin Laden—from the spycraft to the assault to its bizarre political backdrop—as told by the people in the room. Rob O'Neill, senior chief petty officer, Seal Team Six, U.S. Navy: We were pretty sure that we weren't going to come back from the mission—we had this new stealth technology, but no one really knew if it worked.
Masterminds at Work
Joel Cardona published on January 19, 2021 included in News
Houston police officer charged in connection to Capitol insurrection According to Pham's arrest complaint, federal agents visited his home, where they spoke to the former officer. Pham told them he had gone to D.C. for business reasons and also attended the rally in support of President Donald J. Trump. In their arrest affidavit, investigating agents said that Pham initially denied having entered the Capitol building, but when they reviewed his phone, they found photos of Pham inside the building in its "deleted images" album.
One Week Later: An Update on My Dad
Joel Cardona published on August 20, 2020 included in News
Here are some pictures of the car after the accident. Aquí hay unas fotos del carro después del accidente. The RearThe Rear " The Rear The FrontThe Front " The Front Rear Side ViewRear Side View " Rear Side View Front Side ViewFront Side View " Front Side View InteriorInterior " Interior As you can see, this was no small accident. This was serious. By the glory of God, my dad is still with us.
An Update on My Dad
An Update On My Dad For those who don't know, my father was involved in an accident yesterday in the early evening. He was rear ended on the freeway. He suffered a fractured vertebrae and was taken to surgery this morning. The surgery took about 6 hours and they were able to fuse his vertebrae so they could alleviate the pressure that was on his spinal cord. We expect him to be in the hospital for about a week but according to the surgeon, it's going to be a long recovery.
On that Hydroxychloroquine Video Going Around
Joel Cardona published on July 29, 2020 included in News
Read it for yourself: Trump's New Favorite COVID Doctor Believes in Alien DNA, Demon Sperm, and Hydroxychloroquine Some nuggets: Immanuel, a pediatrician and a religious minister, has a history of making bizarre claims about medical topics and other issues. She has often claimed that gynecological problems like cysts and endometriosis are in fact caused by people having sex in their dreams with demons and witches. She alleges alien DNA is currently used in medical treatments, and that scientists are cooking up a vaccine to prevent people from being religious.
Hackers Tell the Story of the Twitter Attack From the Inside
If you're a twitter user, twitter got hacked. We are aware of a security incident impacting accounts on Twitter. We are investigating and taking steps to fix it. We will update everyone shortly. — Twitter Support (@TwitterSupport) July 15, 2020 The accounts of several high profile people like Elon Musk, Bill Gates, Warren Buffet, Barack Obama, Kanye West (no word yet on if this hack had anything to do with his failed Presedential bid 1), and several cryptocurrency accounts all tweeted out a variation of this: Elon tweets out crazy stuff all the time.
2017 - 2021 | © rocketdonut.com


text:
LLT Scholarship Winner, Revisited
Jun 2019 LLT Scholarship Winner, Revisited
in Blog by Hella Comat 0 Comments
In 2018, member Summer Papple from Ontario, Canada, won a LLT Scholarship to earn a tailwheel endorsement. She was fortunate to have received the instruction from Debby Rihn-Harvey. Debby's achievements include a 27 year long career as an airline pilot, the longest-standing U.S. Aerobatic Team member, male or female, having participated in 15 World Aerobatic Championships, more than any other pilot.
Debby Rihn-Harvey instructed Summer for her tailwheel endorsement
I caught up with Summer – it's not an easy thing to do:) – a couple of weeks ago to see what she's been up to in the past year. Check out my interview with her and just try and catch your breath!
You live on a farm – please tell us about it.
My husband, Tyler, and I live on a farm north of London with our son, Oliver, and daughter, Lacey, along with a few house cats and a Great Dane cross dog! We used to grow a lot of field vegetables and strawberries and also had greenhouses for bedding plants and rented an orchard before we switched to strictly field crops. We now grow corn, soybeans, and cover crops and we dry all our corn with a wood-fired furnace that my husband built. We also have an assortment of laying hens and ducks that our kids hatched and our son has some veal calves. Our kids grow and sell sweet corn at local farmers' markets.
Summer with Khalee, the family's Great Dane mix.
You certainly haven't been flying for long and you've come a very long way in a short time. How did you get interested in getting your pilot's licence?
Our son, Oliver, got interested in flying 7 years ago when he was 12. He had money saved from working on the farm and he started flight training. My first flight in a small plane didn't come until a few years later when one of the local pilots from our son's COPA flight offered to take Tyler and I along on a flight he had invited Oliver on with him. It was a short flight from Centralia/CYCE to Stratford/CYSA for a fly-in breakfast. That short flight was all it took – I was hooked! Together, Tyler and I started PPL groundschool and began discussing how we could justify the expense in the long-term. We settled on the idea of offering sightseeing, and set about looking for a suitable plane that we could use for training and for our future business. With the help of local AME friends we found the perfect plane – a beautiful 1969 Cessna 172K with a 180 hp conversion and a Garmin 430.
Getting tailwheel time in a Fleet Canuck
What ratings have you acquired in this short period of time?
My first flight lesson was 4 years ago – June 29th, 2015. I earned my PPL in Feb. 2016, CPL in March 2017, single-engine instrument in April 2018, tailwheel endorsement (through a Ladies Love Taildraggers scholarship) in July 2018, multi-engine rating in Nov. 2018, and multi-engine instrument in March 2019. I now also hold a King Air 200 Type Rating!
You've also done all the paperwork to receive your Air Operator's Certificate from Transport Canada. What is Papple Aviation doing with that?
Applying for an Air Operator Certificate (AOC) from Transport Canada, with minimal aviation background, was challenging and a lot of work! I started the application before I had earned my CPL and it was 15 months before I was issued the certificate. I now hold a 702/703 Air Operator Certificate and offer sightseeing, air taxi, aerial photography, and related services. My husband, Tyler, earned his CPL last summer so now he does the flights when I'm not available. We're close to 4 local airports so we offer flights from any of those airports and also from our farm strip when the wind and passenger weights are suitable. In addition to our regular services, we also fly two of the local conservation authorities for aerial monitoring of watersheds, bank erosion along Lake Huron, and flooding concerns. Some of our more unique flights included a flight to locate a missing cow and a flight for family members to spread a loved one's ashes.
Tell us about your airplane, new home strip, and hangar.
C-FPAP, our Cessna 172K is 50 years old this year! It has a beautiful red and black velour interior that has a Vegas showroom feel! We keep it on our farm strip 30 nm north of London/CYXU. Our strip is 2700′ long x 60′ wide but we have just extended it about 500′ to give us a larger safety margin. With the 180 hp engine our plane performs very well and we can safely and easily take full fuel and 4 adults. Last fall we built a hangar with boards from our sawmill. We still have the doors to complete this summer but it's nice to have the plane under cover in the meantime. We have a door on each end so that we start up inside, taxi out, turn around, and drive back through the hangar to line up on the runway. I love having the plane at home, it's so close and convenient. When we first got our licences our kids were still in Air Cadets in a neighbouring town and we had an extra old car that we left at that airport. We would fly them to Air Cadets, drive into town for groceries, then stuff the groceries in the luggage compartment and fly home!
The Papple family's beautiful 1969 Cessna 172K
Your latest venture is flying a King Air as a Medevac First Officer with Missinippi Airways. Where have you flown and what have been the highlights of this new experience?
I was hired by Missinippi Airways in April 2019 and went to The Pas, Manitoba for training on their King Air 200s. The planes felt like a big jump in size compared to what I was used to but the training was such a positive experience. I fly Medevac in Manitoba and Nunavut on 13 day rotations and I rotate between our 3 northern bases each rotation: The Pas, Norway House, and Thompson. It's now mid-June and I'm half way through my second rotation and really enjoying the flying and interesting places we go to.
One of Summer's 13 day rotations
The highlight of my first rotation was a trip to Baker Lake, Nunavut, which was like stepping back into the middle of winter (in May!) though -12 degrees Celcius probably felt balmy to residents of the community! We also had a trip to Arviat, Nunavut with a fuel stop in Churchill that rotation.
This rotation we've had a lot of trips to reservations and small communities in Manitoba, many that don't have road access. One community we went to twice this rotation involves going part way by boat to pick up the patient because the airport and community are on different sides of a lake. On most trips I get to go along with our nurse to the nursing station or clinic to pick up the patient. It's so interesting getting a glimpse of these communities that I wouldn't otherwise have had an opportunity to see.
A highlight for me this rotation was meeting up with my wonderful single-engine instructor and friend, Dave, who flies a BirdDog for fire detection in Ontario but happened to be sent to Manitoba during my rotation. After hearing each other on the radio a few times we both ended up in Thompson at the same time. We got together to catch up and show each other our planes. My crew left first in the morning, while Dave was sitting in his plane ready to go, and he watched me take off (the captain and I take turns flying the plane and that leg was my turn). At the end of the day my crew had to return to Thompson with another patient and I was standing on the apron when Dave landed!
Summer, looking fantastic in her new stripes, with her SEL instructor Dave.
Many of the runways we land on are gravel or crushed rock, so it's a good mix of experience operating at small uncontrolled airports and Winnipeg airport with SIDs and busy airspace. I'm learning so much and really enjoying the experience and people!
You won a LLT scholarship to earn a tailwheel rating with Debby Rihn-Harvey. Do you see any tail dragging in your future?
I would love to do more tailwheel flying. Training with Debby was an incredible opportunity! At this point I don't have concrete long-term aviation plans, I'm just enjoying where I am in my aviation path at the moment and the mix of flying my 172 when I'm home and the King Air when I'm on rotation.
Summer's view – somewhere between Winnipeg and The Pas, Manitoba


text:
Work from home. Save the planet
What if I told you that working from home could help save the world? It's true.
By David Gewirtz for ZDNet Government | April 20, 2010 -- 09:22 GMT (02:22 PDT) | Topic: Government : US
Many of us in the tech world work from home. Many bloggers commute ten feet from bed to coffee pot to desk (with, hopefully, a stop at the shower along the way). Many IT professionals RDP into servers from home, saving long trips and travel time.
To the rest of the working world, though, working from home is still a bit of a strange idea. Most of us -- and certainly all of our parents -- grew up with the idea that you got up, went to work, and came home. Work was another place.
On the national level, our tax policy reflects this. The IRS still doesn't like the idea of home offices and the home office deduction is always something of a red flag.
But what if I told you that working from home could help save the world? It's true.
Next: Working from home is a strategic opportunity for the U.S. »
Working from home is a strategic opportunity for the U.S.
For most of 2009, I spent the bulk of my time writing the book How To Save Jobs (you can download it for free here). I did a tremendous amount of research into both how we got where we are as a nation, and also issues impacting our success into the future.
One area I looked at was working from home. Working from home isn't just a convenience or a way for businesses to save a few bucks on office space. Working from home is a strategic opportunity for the United States.
I spent a few months developing data models to determine if working from home could be good for America. The results I came up with were astounding:
Americans spend 36.9 billion hours a year, commuting
Americans drive 1.9 trillion miles commuting each year
Americans spend $255 billion just for the gasoline to commute
Americans consume 60.5 billion gallons of gasoline (the capacity of 1,298 Exxon Valdez tankers, fully loaded) each year to commute
Americans release 1.16 trillion pounds of carbon dioxide into the air while commuting.
By contrast, working from home can provide measurable strategic benefits:
We'd reduce our reliance on foreign oil
We'd reduce pollution
We'd reduce global warming
We'd regain billions of hours of productivity and family time
We'd save a ton of money
We'd reduce our costs for road construction and highway maintenance
We'd even probably reduce the number of latch-key kids
Working from home isn't a new idea. Farmers, essentially, work from home. The settlers who traveled West in search of new opportunities put down roots and, in most cases, combined living and working into one holistic whole. Even the President of the United States works from home.
So, as you celebrate Earth Day, think about how a more formally supported national work-at-home policy could be transformative for America and Americans. It's not just the money we'd save. It's the time we'd get back and the fossil fuels we'd preserve.
When I tell you most people will breathe easier if we had a better work-from-home policy, it's true -- to the tune of 1.16 trillion pounds of carbon dioxide not released into the atmosphere.
Now that's Earth Day!
The Oval Office is about 816 square feet. Do you have a larger home office? TalkBack below.
Banking CXO Security Innovation Smart Cities
More from David Gewirtz
To prepare for Star Trek: Picard, here's what to watch ahead of Thursday's premiere
How many computers do you use regularly?
Linux gaming made easy: The fastest way to get up and running
Work better, do more in 2020: Get inspired for a more innovative year and beyond
The SharePoint CVE-2019-0604 vulnerability has been one of the most targeted security flaws.
US and China officially sign phase one of trade deal
Deal sees China committing to stopping the forced transfers, intellectual property theft, counterfeiting, and piracy of US technology.


text:
Héctor Guillermo Osuna Jaime (born 25 June 1957) is a Mexican architect and politician affiliated with the National Action Party who acted as Municipal President of Tijuana between 1992 and 1995 and as President of the Federal Commission of Telecommunications between 2006 and 2010. As of 2014 he served as Senator of the LIX Legislature of the Mexican Congress  representing Baja California.

References

1957 births
Living people
Politicians from Mexico City
Mexican architects
Municipal presidents of Tijuana
Members of the Senate of the Republic (Mexico)
National Action Party (Mexico) politicians
21st-century Mexican politicians
Universidad Autónoma de Guadalajara alumni
Members of the Congress of Baja California
20th-century Mexican politicians

redpajama_set_name: RedPajamaWikipedia


text:
Cheryl Power
Ph.D. candidate (Law)
Cheryl Power is a PhD candidate in Law at the University of Ottawa Centre for Law, Technology and Society, under the supervision of Dr. Teresa Scassa.
Cheryl Power's doctoral work focuses on Patent Law, Innovation Theory, and Artificial Intelligence. She has an interdisciplinary background with a Master's degree in Law from the University of Alberta, a Juris Doctor from the University of Saskatchewan, a Bachelor of Science (Biochemistry) and a Bachelor of Arts (Sociology) from Memorial University of Newfoundland.
Cheryl Power has extensive work and educational experience in science, innovation, and intellectual property policy. She works with the federal government as a Senior Policy analyst with Innovation Science and Economic Development Canada in Ottawa. She is a public servant and lawyer of the Ontario bar with experience in a variety of areas of federal science including Quantum, Artificial Intelligence, Open Science, Genomics, Liaison with the National Research Council, Committees on Science and Technology and the Government of Canada intellectual property policy on procurement.
Cheryl Power has experience in academic, private, and public sector roles across Canada and Europe over the past twenty years. Previously in an LLM program as a CIHR fellow at the University of Alberta, she studied legal policy challenges associated with nanotechnology, including challenges to the Canadian patent system. She worked as a faculty-appointed research associate at the University of British Columbia, where she studied genomics and intellectual property, including alternatives to traditional patenting. She also worked and studied abroad at the Universita di Genova, in Genoa, Italy as part of the DFAIT Young Professionals Program, and at the University of Haifa, Israel in Global Law & Technology. She has presented past research in Europe, the United States and Canada, including in Lisbon, Portugal at the Católica, École de droit de Lisbonne.


CalExotics has announced the launch of four new additions to its Power Stud collection. The company describes the range as offering intense vibration from traditional styles in a variety of shapes and sizes.
New to the Power Stud collection are the Waterproof Power Stud Cliterrific, Rod, Curvy and the Waterproof Shower Stud Super Stud. The Waterproof Power Studs are easy-to-use vibes featuring three levels of vibration and CalExotics says their size and shape makes them perfect for beginners seeking a thrill. As the name implies, this Stud is designed to be used in the shower, so it features a suction cup base and a waterproof design.
For more information visit www.CalExotics.com, where you can also find product videos, images and other marketing collateral.


Philander offers a rich learning environment for first-time professionals. Advancement does not seem accessible, but has happened in a few cases. Culture is very difficult and employee turnover is high.
Philander Smith College has many different departments and I am placed in the bookstore. On a normal day, I sort mail for students and the different offices at Philander Smith College, as well as deliver mail to the administrative departments. When I am not sorting mail, I am behind the cash register, watching the floor, answering the telephone, talking to alumni about purchasing Philander paraphernalia. My job on most days are relaxed and easy going. I'd say the most challenging part of my job would be dealing with difficult customers and students.
Work was consistent but seemed to go nowhere, hard to find advancement in small organization. Lots of politics for such a small area. No raises, even cost of living. It was a good place to launch a carer but you needed to spend time getting to know the staff before you made waves.
Except for the pay which wasn't to bad but could be better it was pretty much easy going- A few bad apples but overall a good atmosphere to work. It only gets hectic during homecoming.
This is a horrible place to work. They do not care about you or what you have going. You are expected to move mountains with little or no resources. The workers are over worked and underpaid. The President micromanages everything; it's his way or the highway. If you are not his fraternity brother, don't bother applying... You'll be wasting your time.
Worked 24/7 as an intern, mentor, and tutor to incoming freshman. I gained patience, and a passion for educating young people. The hardest part was working for most of the day. The enjoyable parts were seeing students succeed and matriculate at the college.
Truly a great learning experience in understanding how to balance and juggle numerous job functions at once. Great with assisting on how to think on feet and handle crisis management situations of any shape or form.
I was only an unpaid intern there.
I enjoyed my time interning at Philander Smith College. It was a joy to attend and graduate from an empowering HBCU. I would have done the internship again if given the chance.
A typical work day at PSC consists of multiple short meetings as well as follow up meetings. I learned how to be a more efficient leader while maintaining the balance between student life and two other jobs. It taught me that patience is an important virtue.
I enjoyed helping the students and enhancing their learning techniques, but the staff and faculty were always unprofessional, unproductive, and messy.
Answer telephones and give information to callers, take messages, or transfer calls to appropriate individuals. Create, maintain, and enter information into databases.
The school is diverse.Pay is good but lack of job training .The students were a joy to work with when I was there. Great school but limited to growth.
My summer experience was very enjoyable. I enjoyed tutoring students and really made a connection with a few. The temporary professors were very nice and they were very insightful.
Philander Smith College was privately funded which caused salaries to be low. Equipment was hard to get because of the lack of money for I.T. budget.
This is a very fast paced environment. Philander Smith College is a very friendly environment. If you do not have patience, this job is not for you other than that I would strongly recommend Philander to anyone.
Philander is expanding its housing department and used me as are source to help with training and living learning community development plans. The administration is on to great things.
As an adjunct professor and former student, my love for Philander is deep. The staff and faculty are great people. Excellent place to be! I plan to be at Philander for a while.
Ask a question about working or interviewing at Philander Smith College. Our community is ready to answer.
What is the work environment and culture like at Philander Smith College?
What is the most stressful part about working at Philander Smith College?


Musical Futures was established in 2003 with the aim of addressing the inequity of music education by finding new and innovative ways of engaging all young people in sustainable, replicable music learning. 12 years and 1.5 million young people making music later, we still maintain that traditional methods of teaching music, while highly effective and transformational for some still target the minority, and that inclusive, diverse, relevant, student-driven learning is key.
The heady days of heavily funded arts education projects are gone. Instead we need to champion ways of ensuring that the majority of young people – no matter what their background, motivation or circumstance – have access to effective music learning experiences that are high-impact, low-cost, and that explore ways of supporting and enhancing existing resources (time, people, equipment). This may mean seeking out innovative practice, finding new partnerships, and honestly sharing what does and doesn't work so we can be pragmatic about showing what we really mean by the value of a music education. We can't be fluffy about this – we need grit, determination and realism.
The Music Learning Revolution provides an opportunity for teachers and practitioners to collect and experience a wealth of sustainable and replicable practical ideas that can be used and adapted into classroom practice immediately. But more than that: it is about combating feelings of isolation and joining a growing movement of music and arts educators who want to drive change and ensure universal music entitlement for young people. There is power in networks, and together, through this new and exciting professional development opportunity, we can show the value of music in schools, not just tell it.


text:
Q: Get the contents(full of text) from the paragraph beautiful soup I want to extract the contents (full of text) of a paragraph from a news webpages, I have a set of url's from which it should extract only the content of a paragraphs. When i use the code below it gives me whole html page.
Here is my code
import urllib2
import urllib
from cookielib import CookieJar
from bs4 import BeautifulSoup
cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
p = opener.open("http://www.nytimes.com/2014/09/09/world/europe/turkey-is-courted-by-us-to-help-         fight-isis.html?module=Search&mabReward=relbias%3Aw%2C%7B%222%22%3A%22RI%3A18%22%7D&_r=0")
print p.read()
soup = BeautifulSoup(p)
content = soup.find('p', attrs= {'class' : 'story-body-text story-content'})
print content

A: This is because you are having print p.read() line that prints out the whole HTML page.
To get the article text, find it by id and then all paragraphs inside the article.
Example using CSS Selector:
soup = BeautifulSoup(p)
print ''.join(p.text for p in soup.select('article#story p.story-content'))

Prints:
ANKARA, Turkey —  The Obama administration on Monday began the work of trying to determine
...

FYI, article#story p.story-content would match all p tags that have story-content class inside the article tag with story id.

redpajama_set_name: RedPajamaStackExchange


text:
Q: I can't find out my mistake in displaying database data in django template I am working on a Django project. I have to display database data in the Django template but I can't find out my mistake in my code that is not allowing me to display data on the HTML page.

views.py

def viewposts(request):
     posts = NewPost.objects.all()

     return render(request,"network/index.html",{
         "posts" : posts,
     })

Here is my model:

models.py

class NewPost(models.Model):
    user = models.ForeignKey(User, on_delete = models.CASCADE)
    post = models.TextField()
    timestamp = models.DateTimeField(auto_now_add = True)

    def __str__(self):
         return f"post : {post} || user: {user} || timestamp: {timestamp} "

HTML template

        {% for posts in posts %}

{{ posts.user }} || {{ posts.timestamp }}

{{ posts.post }}

        {% empty %}

No post availabel

        {% endfor %}

urls.py

urlpatterns = [
   path("", views.index, name="index"),
   path("login", views.login_view, name="login"),
   path("logout", views.logout_view, name="logout"),
   path("register", views.register, name="register"),
   path("index/",views.NewPostMaker,name="post"),
   path("index/",views.viewposts,name="posts")
]

I know I have done a silly mistake on any part of my code but I can hardly find it out. When I fill-up the form, data is stored in the database but I can't display them on the HTML page.

A: You defined two paths for index/. This means that if the user visits the index/ URL, the first view will "fire" and render the template. As a result it will fire NewPostMaker, not viewposts.
You thus should define one view, where you probably will have to merge the logic of the two views into one, and thus implement this as:
urlpatterns = [
   path('', views.index, name="index'),
   path('login', views.login_view, name='login'),
   path('logout', views.logout_view, name='logout'),
   path('register', views.register, name='register'),
   path('index/', views.viewposts, name='posts')
]


text:
package commands

import (
	log "github.com/Sirupsen/logrus"
	"github.com/codegangsta/cli"
	"github.com/shipyard/shipyard/auth/builtin"
	"github.com/shipyard/shipyard/auth/ldap"
	"github.com/shipyard/shipyard/controller/api"
	"github.com/shipyard/shipyard/controller/manager"
	"github.com/shipyard/shipyard/utils"
	"github.com/shipyard/shipyard/version"
)

var (
	controllerManager *manager.Manager
)

func CmdServer(c *cli.Context) {
	rethinkdbAddr := c.String("rethinkdb-addr")
	rethinkdbDatabase := c.String("rethinkdb-database")
	rethinkdbAuthKey := c.String("rethinkdb-auth-key")
	disableUsageInfo := c.Bool("disable-usage-info")
	listenAddr := c.String("listen")
	authWhitelist := c.StringSlice("auth-whitelist-cidr")
	enableCors := c.Bool("enable-cors")
	ldapServer := c.String("ldap-server")
	ldapPort := c.Int("ldap-port")
	ldapBaseDn := c.String("ldap-base-dn")
	ldapAutocreateUsers := c.Bool("ldap-autocreate-users")
	ldapDefaultAccessLevel := c.String("ldap-default-access-level")

	log.Infof("shipyard 中文版本 %s", version.Version)

	if len(authWhitelist) > 0 {
		log.Infof("认证白名单: %v", authWhitelist)
	}

	dockerUrl := c.String("docker")
	tlsCaCert := c.String("tls-ca-cert")
	tlsCert := c.String("tls-cert")
	tlsKey := c.String("tls-key")
	allowInsecure := c.Bool("allow-insecure")

	client, err := utils.GetClient(dockerUrl, tlsCaCert, tlsCert, tlsKey, allowInsecure)
	if err != nil {
		log.Fatal(err)
	}

	// default to builtin auth
	authenticator := builtin.NewAuthenticator("defaultshipyard")

	// use ldap auth if specified
	if ldapServer != "" {
		authenticator = ldap.NewAuthenticator(ldapServer, ldapPort, ldapBaseDn, ldapAutocreateUsers, ldapDefaultAccessLevel)
	}

	controllerManager, err := manager.NewManager(rethinkdbAddr, rethinkdbDatabase, rethinkdbAuthKey, client, disableUsageInfo, authenticator)
	if err != nil {
		log.Fatal(err)
	}

	log.Debugf("连接到Docker容器: url=%s", dockerUrl)

	shipyardTlsCert := c.String("shipyard-tls-cert")
	shipyardTlsKey := c.String("shipyard-tls-key")
	shipyardTlsCACert := c.String("shipyard-tls-ca-cert")

	apiConfig := api.ApiConfig{
		ListenAddr:         listenAddr,
		Manager:            controllerManager,
		AuthWhiteListCIDRs: authWhitelist,
		EnableCORS:         enableCors,
		AllowInsecure:      allowInsecure,
		TLSCACertPath:      shipyardTlsCACert,
		TLSCertPath:        shipyardTlsCert,
		TLSKeyPath:         shipyardTlsKey,
	}

	shipyardApi, err := api.NewApi(apiConfig)
	if err != nil {
		log.Fatal(err)
	}

	if err := shipyardApi.Run(); err != nil {
		log.Fatal(err)
	}
}

redpajama_set_name: RedPajamaGithub


Every year companies spend millions of dollars buying online banners. However, very few people click them. In this post I'll tell you why and how to fix this problem. Few simple changes will make a world of difference.
Today banners are a main part of home- and "landing pages". However, most banners are completely ignored by the customers due to some very good reasons. Today our brains are so exposed to vast amounts of advertisement, that our subconsciousness automatically helps us weed out unnecessary information. If a banner looks to too much like an advertisement, there is a strong likelihood that the brain completely avoids looking at it – consciously or unconsciously. This is called "banner blindness".
If you carry out an eyetracking usability test, the output of the test is called a "heat map". This heat map tells you, where the customer looks the most (the red hot spots), where the customer looks the least (the green, colder spots) and where the customer doesn't look at all (the black areas).
When this eye-tracking test was carried out, Virgin ran a large scale sales campaign, however, none of the website's visitors looked at it. This is due to the fact, that the red "Virgin Sale" banner looks too much like a banner / advertisement, which makes the customers' subconscious mind rule it out as irrelevant content. This is a well kept secret for many people, and designers thus often don't know of this problem. "Banner blindness" therefore is a massive problem at almost all e-commerce websites. They are stuffed with banners that convert badly, because few customers are looking at them.
How do I make people look at my banners?
Why might customers ignore this banner? The main reason is that the banner has a background color which is a classic banner design flaw. The background color "tells" the customer's subconscious mind that the banner most likely is not relevant and then the mind immediately ignores it. Furthermore the text is blue on a blue background which makes the text blend into the visual impression of the banner – it should have had a contrast color to make it stand out. Finally the "Find out more" link is a way too subtle "call-to-action" link.
These Apple banners have no or just a very light grey background color, which make them look as though they are an essential part of the website, which is the main reason why they actually work. They furthermore have a clear header and an equally clear "Learn more" link (Apple knows, that good old blue links still are the best way to catch the customers' attention).
I hope this post has inspired you to improve your online "banners"? Please do feel free to comment!
Do you know of any Danish companies that master the "banner art"?
Thank you Lasse. Great example.
Great post – And I thought that there was no way around banner blindness, but your example with apple banners describe very well, that it could work.
Thank you very much, Per.
At http://www.marketingcamp.dk I went to see @tsonderstrup talk about banner usage at Canal Digital, and he has written about the concept 'Path to conversion' here (in Danish): http://tsonderstrup.tumblr.com/post/12002887037/path-to-conversion-kig-klik-k-b.
It was extremely interesting to hear how they can track the impact of banners. They might not convert directly from click to a sale, but using banners the right way still has a huge impact for them.
Thank you for the link to the Canal Digital study. No matter this "Pat to conversion" discussion, simple banner design changes would improve the initial click rate no.matter.what.
Hi Benjamin – excellent post.
Do you have any examples of banners performing substantially better by using these guidelines. Eg.: numbers showing increased CTR or similar increased conversion in other marketing channels?
Unfortunately most websites do not follow the guidelines, however, I could fine some but it would take some investigation / time – which channels do you have in mind?
Or maybe @Lasse kan share som insights on runforest?
Here are some websites that might inspire you: http://www.apple.com, http://www.barnesandnoble.com and Dell (not all banners are good at Dell, though!).
Very good post – But I'd also like to know the case wherein I am not designing the banners. Instead I am just using banners provided by advertisers. For e.g. Adsense. I do not have any control over what color banner I want to display on the site. At max. I can restrict particular ad from being displayed. Any pointers in this case? How to improve?
Hi Ameya. I'm very glad you like the post.
Adwords comply very well with my guidelines, as they are (mostly) text based. However, I believe all companies should consider if it makes sense to insert "real" (designed) 3rd party affiliate banners at ones website, as they often ruin the main purpose of selling products, etc.
I suggest that you define some banner standards which your 3rd party advertisers must comply with.


The World Health Organisation (WHO) has released new revised drinking-water guidelines to prevent waterborne disease.
The Guidelines for Drinking-water Quality, launched at Singapore International Water Week 2011 are aimed at helping governments reduce ill-health and death through drinking contaminated water.
The guidelines outline a Water Safety Planning approach where water suppliers are advised to systematically assess the risks of water contamination in order to address any potential problems.
The focus of the approach is on the prevention of water contamination by applying recommended standards.
WHO coordinator for Water, Sanitation, Hygiene and Health, Robert Bos, said: "If we look at the most recent waterborne disease outbreaks, both in developing and developed countries, it is clear that most of these could have been prevented through the proactive implementation of Water Safety Plans."
The guidelines include good practice recommendations from household rainwater harvesting and safe storage through to policy advice on bulk water supply and the implications of climate change.
Recommendations in the guidelines also cover minimum procedures for ensuring drinking-water safety, microbial hazards, the effects of climate change on water temperature and rainfall patterns and chemical contaminants.
The guidelines contain hundreds of risk assessments on specific waterborne hazards and have been updated based on the latest scientific evidence. For the first time this also includes specific guidance on emerging contaminants of concern in drinking-water.
The Guidelines are regarded globally as the most authoritative framework on drinking-water quality and often form the basis for national laws and regulations.


text:
<?php
/**
 * CJavaScriptExpressionTest
 */
class CJavaScriptExpressionTest extends CTestCase
{
	public function testToString()
	{
		$expression=new CJavaScriptExpression("function(){return \"Hello, world!\";}");
		$this->assertEquals('function(){return "Hello, world!";}', $expression);
	}
}


text:
BakeryBreakfast, Cereals & Bars
Krispy Kreme Lemon Glazed Doughnut
Krispy Kreme fans had the opportunity to dream, debate and vote for an all-new Glazed Doughnut flavor from four choices
To kick off 2018, Krispy Kreme Doughnuts gave America an experience by letting consumers decide what an all-new Glazed Doughnut flavor will be. The result? Krispy Kreme Lemon Glazed Doughnut
Krispy Kreme's innovation team will craft and perfect the Lemon Glazed Doughnut flavor, which will be made available this spring for a full week at participating Krispy Kreme shops.
The #VoteForGlaze campaign was the first time Krispy Kreme let consumers decide an all-new Glazed Doughnut flavor for the brand's iconic Original Glazed® Doughnut. Fans selected from four flavors – blueberry, caramel, lemon and maple – January 16 through 22 at www.voteforglaze.com.
Lemon was America's top choice, garnering 36% of the vote. Caramel received 26% of the vote, blueberry received 20% followed by maple, which received 18%.
"Lemon won the vote, but we can't glaze over the fact that the other three flavors all received a lot of support, even beyond the votes. Our fans' passion for these flavors – and others – came through loud and clear on social media. So while the polls are closed, our minds are not," said Jackie Woodward, Chief Marketing Officer of Krispy Kreme Doughnuts®.
Krispy Kreme will announce this spring the exact dates the all-new Lemon Glazed Doughnut will be available.
KEYWORDS: sweet treats
Krispy Kreme Nutty Cocoa Ring Nutella Doughnut
Krispy Kreme Goes RTD
Krispy Kreme Cookie-Themed Doughnuts


text:
By Henry James
Introduction by Regina Barreca
Afterword by Colm Toibin
Category: Fiction Classics | Literary Fiction | Romance
Jul 03, 2007 | 640 Pages
About The Portrait of a Lady
The Portrait of a Lady is Henry James's classic novel featuring the strong and spirited Isabel Archer, the embodiment of women's independence and strength.
The heroine of this powerful novel, often considered James's greatest work, is the vivacious young American Isabel Archer. Blessed by nature and fortune, she journeys to Europe to seek the full realization of her potential—or in modern terms, "to find herself"—but what awaits her there may prove to be her undoing.
During her journey, wooers vie for her attentions, including an English aristocrat, a perfect American gentleman, and a sensitive expatriate. But it is only after the ingenue falls prey to the schemes of an infinitely sophisticated older woman that her life takes on its true form. With its brilliant interplay of tensions and characters, The Portrait of a Lady is a timeless and essential American novel.
With an Introduction by Regina Barreca
and an Afterword by Colm Tóibín
Also by Henry James
See all books by Henry James
About Henry James
Henry James was born on April 15, 1843, on Washington Place in New York to the most intellectually remarkable of American families. His father, Henry James Sr., was a brilliant and eccentric religious philosopher; his brother was one of the… More about Henry James
Published by Signet
Jul 03, 2007 | 640 Pages | 4-3/16 x 6-3/4 | ISBN 9780451530523
Jul 03, 2007 | 640 Pages | ISBN 9781440620805
People Who Read The Portrait of a Lady Also Read
"The Portrait of a Lady is entirely successful in giving one the sense of having met somebody far too radiantly good for this world."—Rebecca West


With a film like Avengers: Infinity War, it's fair to assume that there's going to be a significant amount of effects work involved. Whole characters are built digitally and it's not enough for the likes of Iron Man and Spider-Man to simply wear spandex suits anymore - their entire costumes have to be rendered from scratch too.
But that doesn't mean that blockbusters like this somehow require less acting or pure performance. On the contrary, digital work - whether it's costumes, special effects, characters or environments - is just a dressing on top. Actors still have to turn up and bring their character to life before the magic.
And given the fact that they can be forced to act opposite someone wearing a big purple Thanos helmet without cracking up every two seconds, they probably deserve even MORE credit. Because that's just one of the ways the Russo brothers managed to capture the brilliance of Avengers: Infinity War before they spent millions on the effects. And peeling back the layers on those techniques allows us another look at one of the biggest films of all time.
So what did it look like before all of that expensive magic was poured onto it?


text:
The New Cow-Boy
by davidschussler in All News, Breaking News, Education News, Medical News, Research News, Science News, Society and Culture, UK News, US News
By David Schussler
Just a new version of experimentation that has been taking place for years, today's headline at BBC News read "Plan to create Human-cow embryos" http://news.bbc.co.uk/2/hi/health/6121280.stm
Is this to be the beginning of the new cow-boy?
UK researchers from Newcastle University and Kings College London, are working on stem cell research that would insert human DNA into a cow's egg to create an embryo. This would create a chimera ( two distinct species combined into one). Their purpose is to learn from these embryos before moving on to human embryos which are more valuable and costly.
These scientists are asking permission to continue their research from the British government. Dr. Evan Harris, Liberal Democrat and member of the Commons Science and Technology Select Committee said of the project, "If human benefit can be derived by perfecting therapeutic cloning techniques or from research into subsequently derived stem cells, then it would actually be immoral to prevent it just because of a 'yuck' factor."
This sounds like a man who would look at a slaughtered rape victim and go "yuck!" Preserving the sanctity of life and protecting human dignity is not "yuck."
Animals and humans are different species and, by nature, should remain so from their embryonic stage. There is no doubt that cures and even implants from animals are saving the lives of humans today, but creating chimeras more than strains the brains of any conceivable governmental bioethics committee. In fact Calum MacKellar of the Scottish Council on Human Bioethocs, said, "In this kind of procedure, you are mixing at a very intimate level, animal eggs and human chromosomes, and you may begin to undermine the whole distinction between humans and animals."
Just what is human dignity? Surely the diseases that these scientists are trying to cure tend to diminish the dignity of some of those individuals who are suffering with the disease but the dignity of all humankind is being threatened by this type of research. Many of these scientists have been working on their procedures for years without a thought of, or in spite of, ethical repercussion. They are now invested in their research and protective of it. There are ethical scientists and procedures currently available for research that is equally as viable without moral recourse. This is what should be promoted, funded, and urged to fruition.
If this type of chimerical research is allowed, why should beastiality be illegal? Who could convict a human experimenting with a sheep? (I could, but won't give other examples). Our world is tending toward moral turpitude while losing sight of our natural order. Exponents of Darwinianism and Creativity agree to the separation of our species. That has been the basis for our Bioethic Laws, our Marriage Laws and our moral tendencies. This research is just a test of the moral character of the world and we must cowboy up to the task of protecting what we believe in before Cow-Boys take over.
No user commented in " The New Cow-Boy "


text:
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdbool.h>
#include <errno.h>
#include <gdbus/gdbus.h>
#include <glib.h>
#include <stdlib.h>

#include "lib/uuid.h"
#include "plugin.h"
#include "dbus-common.h"
#include "attrib/att.h"
#include "adapter.h"
#include "device.h"
#include "attrib/att-database.h"
#include "log.h"
#include "attrib/gatt-service.h"
#include "attrib/gattrib.h"
#include "attrib-server.h"
#include "attrib/gatt.h"
#include "profile.h"
#include "error.h"
#include "textfile.h"
#include "attio.h"

#define PHONE_ALERT_STATUS_SVC_UUID	0x180E
#define ALERT_NOTIF_SVC_UUID		0x1811

#define ALERT_STATUS_CHR_UUID		0x2A3F
#define RINGER_CP_CHR_UUID		0x2A40
#define RINGER_SETTING_CHR_UUID		0x2A41

#define ALERT_NOTIF_CP_CHR_UUID		0x2A44
#define UNREAD_ALERT_CHR_UUID		0x2A45
#define NEW_ALERT_CHR_UUID		0x2A46
#define SUPP_NEW_ALERT_CAT_CHR_UUID	0x2A47
#define SUPP_UNREAD_ALERT_CAT_CHR_UUID	0x2A48

#define ALERT_OBJECT_PATH		"/org/bluez"
#define ALERT_INTERFACE			"org.bluez.Alert1"
#define ALERT_AGENT_INTERFACE		"org.bluez.AlertAgent1"

/* Maximum length for "Text String Information" */
#define NEW_ALERT_MAX_INFO_SIZE		18
/* Maximum length for New Alert Characteristic Value */
#define NEW_ALERT_CHR_MAX_VALUE_SIZE	(NEW_ALERT_MAX_INFO_SIZE + 2)

enum {
	ENABLE_NEW_INCOMING,
	ENABLE_UNREAD_CAT,
	DISABLE_NEW_INCOMING,
	DISABLE_UNREAD_CAT,
	NOTIFY_NEW_INCOMING,
	NOTIFY_UNREAD_CAT,
};

enum {
	RINGER_SILENT_MODE = 1,
	RINGER_MUTE_ONCE,
	RINGER_CANCEL_SILENT_MODE,
};

/* Ringer Setting characteristic values */
enum {
	RINGER_SILENT,
	RINGER_NORMAL,
};

enum notify_type {
	NOTIFY_RINGER_SETTING = 0,
	NOTIFY_ALERT_STATUS,
	NOTIFY_NEW_ALERT,
	NOTIFY_UNREAD_ALERT,
	NOTIFY_SIZE,
};

struct alert_data {
	const char *category;
	char *srv;
	char *path;
	guint watcher;
};

struct alert_adapter {
	struct btd_adapter *adapter;
	uint16_t supp_new_alert_cat_handle;
	uint16_t supp_unread_alert_cat_handle;
	uint16_t hnd_ccc[NOTIFY_SIZE];
	uint16_t hnd_value[NOTIFY_SIZE];
};

struct notify_data {
	struct alert_adapter *al_adapter;
	enum notify_type type;
	uint8_t *value;
	size_t len;
};

struct notify_callback {
	struct notify_data *notify_data;
	struct btd_device *device;
	guint id;
};

static GSList *registered_alerts = NULL;
static GSList *alert_adapters = NULL;
static uint8_t ringer_setting = RINGER_NORMAL;
static uint8_t alert_status = 0;

static const char * const anp_categories[] = {
	"simple",
	"email",
	"news",
	"call",
	"missed-call",
	"sms-mms",
	"voice-mail",
	"schedule",
	"high-priority",
	"instant-message",
};

static const char * const pasp_categories[] = {
	"ringer",
	"vibrate",
	"display",
};

static int adapter_cmp(gconstpointer a, gconstpointer b)
{
	const struct alert_adapter *al_adapter = a;
	const struct btd_adapter *adapter = b;

	return al_adapter->adapter == adapter ? 0 : -1;
}

static struct alert_adapter *find_alert_adapter(struct btd_adapter *adapter)
{
	GSList *l = g_slist_find_custom(alert_adapters, adapter, adapter_cmp);

	return l ? l->data : NULL;
}

static void alert_data_destroy(gpointer user_data)
{
	struct alert_data *alert = user_data;

	if (alert->watcher)
		g_dbus_remove_watch(btd_get_dbus_connection(), alert->watcher);

	g_free(alert->srv);
	g_free(alert->path);
	g_free(alert);
}

static void alert_release(gpointer user_data)
{
	struct alert_data *alert = user_data;
	DBusMessage *msg;

	msg = dbus_message_new_method_call(alert->srv, alert->path,
							ALERT_AGENT_INTERFACE,
							"Release");
	if (msg)
		g_dbus_send_message(btd_get_dbus_connection(), msg);

	alert_data_destroy(alert);
}

static void alert_destroy(gpointer user_data)
{
	DBG("");

	g_slist_free_full(registered_alerts, alert_release);
	registered_alerts = NULL;
}

static const char *valid_category(const char *category)
{
	unsigned i;

	for (i = 0; i < G_N_ELEMENTS(anp_categories); i++) {
		if (g_str_equal(anp_categories[i], category))
			return anp_categories[i];
	}

	for (i = 0; i < G_N_ELEMENTS(pasp_categories); i++) {
		if (g_str_equal(pasp_categories[i], category))
			return pasp_categories[i];
	}

	return NULL;
}

static struct alert_data *get_alert_data_by_category(const char *category)
{
	GSList *l;
	struct alert_data *alert;

	for (l = registered_alerts; l; l = g_slist_next(l)) {
		alert = l->data;
		if (g_str_equal(alert->category, category))
			return alert;
	}

	return NULL;
}

static gboolean registered_category(const char *category)
{
	struct alert_data *alert;

	alert = get_alert_data_by_category(category);
	if (alert)
		return TRUE;

	return FALSE;
}

static gboolean pasp_category(const char *category)
{
	unsigned i;

	for (i = 0; i < G_N_ELEMENTS(pasp_categories); i++)
		if (g_str_equal(category, pasp_categories[i]))
			return TRUE;

	return FALSE;
}

static gboolean valid_description(const char *category,
						const char *description)
{
	if (!pasp_category(category)) {
		if (strlen(description) >= NEW_ALERT_MAX_INFO_SIZE)
			return FALSE;

		return TRUE;
	}

	if (g_str_equal(description, "active") ||
					g_str_equal(description, "not active"))
		return TRUE;

	if (g_str_equal(category, "ringer"))
		if (g_str_equal(description, "enabled") ||
					g_str_equal(description, "disabled"))
			return TRUE;

	return FALSE;
}

static gboolean valid_count(const char *category, uint16_t count)
{
	if (!pasp_category(category) && count > 0 && count <= 255)
		return TRUE;

	if (pasp_category(category) && count == 1)
		return TRUE;

	return FALSE;
}

static void update_supported_categories(gpointer data, gpointer user_data)
{
	struct alert_adapter *al_adapter = data;
	struct btd_adapter *adapter = al_adapter->adapter;
	uint8_t value[2];
	unsigned int i;

	memset(value, 0, sizeof(value));

	for (i = 0; i < G_N_ELEMENTS(anp_categories); i++) {
		if (registered_category(anp_categories[i]))
			hci_set_bit(i, value);
	}

	attrib_db_update(adapter, al_adapter->supp_new_alert_cat_handle, NULL,
						value, sizeof(value), NULL);

	/* FIXME: For now report all registered categories as supporting unread
	 * status, until it is known which ones should be supported */
	attrib_db_update(adapter, al_adapter->supp_unread_alert_cat_handle,
					NULL, value, sizeof(value), NULL);
}

static void watcher_disconnect(DBusConnection *conn, void *user_data)
{
	struct alert_data *alert = user_data;

	DBG("Category %s was disconnected", alert->category);

	registered_alerts = g_slist_remove(registered_alerts, alert);
	alert_data_destroy(alert);

	g_slist_foreach(alert_adapters, update_supported_categories, NULL);
}

static gboolean is_notifiable_device(struct btd_device *device, uint16_t ccc)
{
	char *filename;
	GKeyFile *key_file;
	char handle[6];
	char *str;
	uint16_t val;
	gboolean result;

	sprintf(handle, "%hu", ccc);

	filename = btd_device_get_storage_path(device, "ccc");
	if (!filename) {
		warn("Unable to get ccc storage path for device");
		return FALSE;
	}

	key_file = g_key_file_new();
	g_key_file_load_from_file(key_file, filename, 0, NULL);

	str = g_key_file_get_string(key_file, handle, "Value", NULL);
	if (!str) {
		result = FALSE;
		goto end;
	}

	val = strtol(str, NULL, 16);
	if (!(val & 0x0001)) {
		result = FALSE;
		goto end;
	}

	result = TRUE;
end:
	g_free(str);
	g_free(filename);
	g_key_file_free(key_file);

	return result;
}

static void attio_connected_cb(GAttrib *attrib, gpointer user_data)
{
	struct notify_callback *cb = user_data;
	struct notify_data *nd = cb->notify_data;
	enum notify_type type = nd->type;
	struct alert_adapter *al_adapter = nd->al_adapter;
	size_t len;
	uint8_t *pdu = g_attrib_get_buffer(attrib, &len);

	switch (type) {
	case NOTIFY_RINGER_SETTING:
		len = enc_notification(al_adapter->hnd_value[type],
				&ringer_setting, sizeof(ringer_setting),
				pdu, len);
		break;
	case NOTIFY_ALERT_STATUS:
		len = enc_notification(al_adapter->hnd_value[type],
				&alert_status, sizeof(alert_status),
				pdu, len);
		break;
	case NOTIFY_NEW_ALERT:
	case NOTIFY_UNREAD_ALERT:
		len = enc_notification(al_adapter->hnd_value[type],
					nd->value, nd->len, pdu, len);
		break;
	default:
		DBG("Unknown type, could not send notification");
		goto end;
	}

	DBG("Send notification for handle: 0x%04x, ccc: 0x%04x",
					al_adapter->hnd_value[type],
					al_adapter->hnd_ccc[type]);

	g_attrib_send(attrib, 0, pdu, len, NULL, NULL, NULL);

end:
	btd_device_remove_attio_callback(cb->device, cb->id);
	btd_device_unref(cb->device);
	g_free(cb->notify_data->value);
	g_free(cb->notify_data);
	g_free(cb);
}

static void filter_devices_notify(struct btd_device *device, void *user_data)
{
	struct notify_data *notify_data = user_data;
	struct alert_adapter *al_adapter = notify_data->al_adapter;
	enum notify_type type = notify_data->type;
	struct notify_callback *cb;

	if (!is_notifiable_device(device, al_adapter->hnd_ccc[type]))
		return;

	cb = g_new0(struct notify_callback, 1);
	cb->notify_data = notify_data;
	cb->device = btd_device_ref(device);
	cb->id = btd_device_add_attio_callback(device,
						attio_connected_cb, NULL, cb);
}

static void notify_devices(struct alert_adapter *al_adapter,
			enum notify_type type, uint8_t *value, size_t len)
{
	struct notify_data *notify_data;

	notify_data = g_new0(struct notify_data, 1);
	notify_data->al_adapter = al_adapter;
	notify_data->type = type;
	notify_data->value = g_memdup(value, len);
	notify_data->len = len;

	btd_adapter_for_each_device(al_adapter->adapter, filter_devices_notify,
					notify_data);
}

static void pasp_notification(enum notify_type type)
{
	GSList *it;
	struct alert_adapter *al_adapter;

	for (it = alert_adapters; it; it = g_slist_next(it)) {
		al_adapter = it->data;

		notify_devices(al_adapter, type, NULL, 0);
	}
}

static DBusMessage *register_alert(DBusConnection *conn, DBusMessage *msg,
								void *data)
{
	const char *sender = dbus_message_get_sender(msg);
	char *path;
	const char *category;
	const char *c;
	struct alert_data *alert;

	if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &c,
			DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID))
		return btd_error_invalid_args(msg);

	category = valid_category(c);
	if (!category) {
		DBG("Invalid category: %s", c);
		return btd_error_invalid_args(msg);
	}

	if (registered_category(category)) {
		DBG("Category %s already registered", category);
		return dbus_message_new_method_return(msg);
	}

	alert = g_new0(struct alert_data, 1);
	alert->srv = g_strdup(sender);
	alert->path = g_strdup(path);
	alert->category = category;
	alert->watcher = g_dbus_add_disconnect_watch(conn, alert->srv,
					watcher_disconnect, alert, NULL);

	if (alert->watcher == 0) {
		alert_data_destroy(alert);
		DBG("Could not register disconnect watcher");
		return btd_error_failed(msg,
				"Could not register disconnect watcher");
	}

	registered_alerts = g_slist_append(registered_alerts, alert);

	g_slist_foreach(alert_adapters, update_supported_categories, NULL);

	DBG("RegisterAlert(\"%s\", \"%s\")", alert->category, alert->path);

	return dbus_message_new_method_return(msg);
}

static void update_new_alert(gpointer data, gpointer user_data)
{
	struct alert_adapter *al_adapter = data;
	struct btd_adapter *adapter = al_adapter->adapter;
	uint8_t *value = user_data;

	attrib_db_update(adapter, al_adapter->hnd_value[NOTIFY_NEW_ALERT], NULL,
						&value[1], value[0], NULL);

	notify_devices(al_adapter, NOTIFY_NEW_ALERT, &value[1], value[0]);
}

static void update_phone_alerts(const char *category, const char *description)
{
	unsigned int i;

	if (g_str_equal(category, "ringer")) {
		if (g_str_equal(description, "enabled")) {
			ringer_setting = RINGER_NORMAL;
			pasp_notification(NOTIFY_RINGER_SETTING);
			return;
		} else if (g_str_equal(description, "disabled")) {
			ringer_setting = RINGER_SILENT;
			pasp_notification(NOTIFY_RINGER_SETTING);
			return;
		}
	}

	for (i = 0; i < G_N_ELEMENTS(pasp_categories); i++) {
		if (g_str_equal(pasp_categories[i], category)) {
			if (g_str_equal(description, "active")) {
				alert_status |= (1 << i);
				pasp_notification(NOTIFY_ALERT_STATUS);
			} else if (g_str_equal(description, "not active")) {
				alert_status &= ~(1 << i);
				pasp_notification(NOTIFY_ALERT_STATUS);
			}
			break;
		}
	}
}

static DBusMessage *new_alert(DBusConnection *conn, DBusMessage *msg,
								void *data)
{
	const char *sender = dbus_message_get_sender(msg);
	const char *category, *description;
	struct alert_data *alert;
	uint16_t count;
	unsigned int i;
	size_t dlen;

	if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &category,
			DBUS_TYPE_UINT16, &count, DBUS_TYPE_STRING,
			&description, DBUS_TYPE_INVALID))
		return btd_error_invalid_args(msg);

	alert = get_alert_data_by_category(category);
	if (!alert) {
		DBG("Category %s not registered", category);
		return btd_error_invalid_args(msg);
	}

	if (!g_str_equal(alert->srv, sender)) {
		DBG("Sender %s is not registered in category %s", sender,
								category);
		return btd_error_invalid_args(msg);
	}

	if (!valid_description(category, description)) {
		DBG("Description %s is invalid for %s category",
							description, category);
		return btd_error_invalid_args(msg);
	}

	if (!valid_count(category, count)) {
		DBG("Count %d is invalid for %s category", count, category);
		return btd_error_invalid_args(msg);
	}

	dlen = strlen(description);

	for (i = 0; i < G_N_ELEMENTS(anp_categories); i++) {
		uint8_t value[NEW_ALERT_CHR_MAX_VALUE_SIZE + 1];
		uint8_t *ptr = value;

		if (!g_str_equal(anp_categories[i], category))
			continue;

		memset(value, 0, sizeof(value));

		*ptr++ = 2; /* Attribute value size */
		*ptr++ = i; /* Category ID (mandatory) */
		*ptr++ = count; /* Number of New Alert (mandatory) */
		/* Text String Information (optional) */
		strncpy((char *) ptr, description,
						NEW_ALERT_MAX_INFO_SIZE - 1);

		if (dlen > 0)
			*value += dlen + 1;

		g_slist_foreach(alert_adapters, update_new_alert, value);
	}

	if (pasp_category(category))
		update_phone_alerts(category, description);

	DBG("NewAlert(\"%s\", %d, \"%s\")", category, count, description);

	return dbus_message_new_method_return(msg);
}

static int agent_ringer_mute_once(void)
{
	struct alert_data *alert;
	DBusMessage *msg;

	alert = get_alert_data_by_category("ringer");
	if (!alert) {
		DBG("Category ringer is not registered");
		return -EINVAL;
	}

	msg = dbus_message_new_method_call(alert->srv, alert->path,
					ALERT_AGENT_INTERFACE, "MuteOnce");
	if (!msg)
		return -ENOMEM;

	dbus_message_set_no_reply(msg, TRUE);
	g_dbus_send_message(btd_get_dbus_connection(), msg);

	return 0;
}

static int agent_ringer_set_ringer(const char *mode)
{
	struct alert_data *alert;
	DBusMessage *msg;

	alert = get_alert_data_by_category("ringer");
	if (!alert) {
		DBG("Category ringer is not registered");
		return -EINVAL;
	}

	msg = dbus_message_new_method_call(alert->srv, alert->path,
					ALERT_AGENT_INTERFACE, "SetRinger");
	if (!msg)
		return -ENOMEM;

	dbus_message_append_args(msg, DBUS_TYPE_STRING, &mode,
							DBUS_TYPE_INVALID);

	dbus_message_set_no_reply(msg, TRUE);
	g_dbus_send_message(btd_get_dbus_connection(), msg);

	return 0;
}

static void update_unread_alert(gpointer data, gpointer user_data)
{
	struct alert_adapter *al_adapter = data;
	struct btd_adapter *adapter = al_adapter->adapter;
	uint8_t *value = user_data;

	attrib_db_update(adapter,
			al_adapter->hnd_value[NOTIFY_UNREAD_ALERT], NULL, value,
			2, NULL);

	notify_devices(al_adapter, NOTIFY_UNREAD_ALERT, value, 2);
}

static DBusMessage *unread_alert(DBusConnection *conn, DBusMessage *msg,
								void *data)
{
	const char *sender = dbus_message_get_sender(msg);
	struct alert_data *alert;
	const char *category;
	unsigned int i;
	uint16_t count;

	if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &category,
						DBUS_TYPE_UINT16, &count,
						DBUS_TYPE_INVALID))
		return btd_error_invalid_args(msg);

	alert = get_alert_data_by_category(category);
	if (!alert) {
		DBG("Category %s not registered", category);
		return btd_error_invalid_args(msg);
	}

	if (!valid_count(category, count)) {
		DBG("Count %d is invalid for %s category", count, category);
		return btd_error_invalid_args(msg);
	}

	if (!g_str_equal(alert->srv, sender)) {
		DBG("Sender %s is not registered in category %s", sender,
								category);
		return btd_error_invalid_args(msg);
	}

	for (i = 0; i < G_N_ELEMENTS(anp_categories); i++) {
		if (g_str_equal(anp_categories[i], category)) {
			uint8_t value[2];

			value[0] = i; /* Category ID */
			value[1] = count; /* Unread count */

			g_slist_foreach(alert_adapters, update_unread_alert,
									value);
		}
	}

	DBG("category %s, count %d", category, count);

	return dbus_message_new_method_return(msg);
}

static uint8_t ringer_cp_write(struct attribute *a,
						struct btd_device *device,
						gpointer user_data)
{
	DBG("a = %p", a);

	if (a->len > 1) {
		DBG("Invalid command size (%zu)", a->len);
		return 0;
	}

	switch (a->data[0]) {
	case RINGER_SILENT_MODE:
		DBG("Silent Mode");
		agent_ringer_set_ringer("disabled");
		break;
	case RINGER_MUTE_ONCE:
		DBG("Mute Once");
		agent_ringer_mute_once();
		break;
	case RINGER_CANCEL_SILENT_MODE:
		DBG("Cancel Silent Mode");
		agent_ringer_set_ringer("enabled");
		break;
	default:
		DBG("Invalid command (0x%02x)", a->data[0]);
	}

	return 0;
}

static uint8_t alert_status_read(struct attribute *a,
						struct btd_device *device,
						gpointer user_data)
{
	struct btd_adapter *adapter = user_data;

	DBG("a = %p", a);

	if (a->data == NULL || a->data[0] != alert_status)
		attrib_db_update(adapter, a->handle, NULL, &alert_status,
						sizeof(alert_status), NULL);

	return 0;
}

static uint8_t ringer_setting_read(struct attribute *a,
						struct btd_device *device,
						gpointer user_data)
{
	struct btd_adapter *adapter = user_data;

	DBG("a = %p", a);

	if (a->data == NULL || a->data[0] != ringer_setting)
		attrib_db_update(adapter, a->handle, NULL, &ringer_setting,
						sizeof(ringer_setting), NULL);

	return 0;
}

static void register_phone_alert_service(struct alert_adapter *al_adapter)
{
	bt_uuid_t uuid;

	bt_uuid16_create(&uuid, PHONE_ALERT_STATUS_SVC_UUID);

	/* Phone Alert Status Service */
	gatt_service_add(al_adapter->adapter, GATT_PRIM_SVC_UUID, &uuid,
			/* Alert Status characteristic */
			GATT_OPT_CHR_UUID16, ALERT_STATUS_CHR_UUID,
			GATT_OPT_CHR_PROPS, ATT_CHAR_PROPER_READ |
							ATT_CHAR_PROPER_NOTIFY,
			GATT_OPT_CHR_VALUE_CB, ATTRIB_READ,
			alert_status_read, al_adapter->adapter,
			GATT_OPT_CCC_GET_HANDLE,
			&al_adapter->hnd_ccc[NOTIFY_ALERT_STATUS],
			GATT_OPT_CHR_VALUE_GET_HANDLE,
			&al_adapter->hnd_value[NOTIFY_ALERT_STATUS],
			/* Ringer Control Point characteristic */
			GATT_OPT_CHR_UUID16, RINGER_CP_CHR_UUID,
			GATT_OPT_CHR_PROPS, ATT_CHAR_PROPER_WRITE_WITHOUT_RESP,
			GATT_OPT_CHR_VALUE_CB, ATTRIB_WRITE,
			ringer_cp_write, NULL,
			/* Ringer Setting characteristic */
			GATT_OPT_CHR_UUID16, RINGER_SETTING_CHR_UUID,
			GATT_OPT_CHR_PROPS, ATT_CHAR_PROPER_READ |
							ATT_CHAR_PROPER_NOTIFY,
			GATT_OPT_CHR_VALUE_CB, ATTRIB_READ,
			ringer_setting_read, al_adapter->adapter,
			GATT_OPT_CCC_GET_HANDLE,
			&al_adapter->hnd_ccc[NOTIFY_RINGER_SETTING],
			GATT_OPT_CHR_VALUE_GET_HANDLE,
			&al_adapter->hnd_value[NOTIFY_RINGER_SETTING],
			GATT_OPT_INVALID);
}

static uint8_t supp_new_alert_cat_read(struct attribute *a,
						struct btd_device *device,
						gpointer user_data)
{
	struct btd_adapter *adapter = user_data;
	uint8_t value[] = { 0x00, 0x00 };

	DBG("a = %p", a);

	if (a->data == NULL)
		attrib_db_update(adapter, a->handle, NULL, value, sizeof(value),
									NULL);

	return 0;
}

static uint8_t supp_unread_alert_cat_read(struct attribute *a,
						struct btd_device *device,
						gpointer user_data)
{
	struct btd_adapter *adapter = user_data;
	uint8_t value[] = { 0x00, 0x00 };

	DBG("a = %p", a);

	if (a->data == NULL)
		attrib_db_update(adapter, a->handle, NULL, value, sizeof(value),
									NULL);

	return 0;
}

static uint8_t alert_notif_cp_write(struct attribute *a,
						struct btd_device *device,
						gpointer user_data)
{
	DBG("a = %p", a);

	if (a->len < 2)
		return 0;

	switch (a->data[0]) {
	case ENABLE_NEW_INCOMING:
		DBG("ENABLE_NEW_INCOMING: 0x%02x", a->data[1]);
		break;
	case ENABLE_UNREAD_CAT:
		DBG("ENABLE_UNREAD_CAT: 0x%02x", a->data[1]);
		break;
	case DISABLE_NEW_INCOMING:
		DBG("DISABLE_NEW_INCOMING: 0x%02x", a->data[1]);
		break;
	case DISABLE_UNREAD_CAT:
		DBG("DISABLE_UNREAD_CAT: 0x%02x", a->data[1]);
		break;
	case NOTIFY_NEW_INCOMING:
		DBG("NOTIFY_NEW_INCOMING: 0x%02x", a->data[1]);
		break;
	case NOTIFY_UNREAD_CAT:
		DBG("NOTIFY_UNREAD_CAT: 0x%02x", a->data[1]);
		break;
	default:
		DBG("0x%02x 0x%02x", a->data[0], a->data[1]);
	}

	return 0;
}

static void register_alert_notif_service(struct alert_adapter *al_adapter)
{
	bt_uuid_t uuid;

	bt_uuid16_create(&uuid, ALERT_NOTIF_SVC_UUID);

	/* Alert Notification Service */
	gatt_service_add(al_adapter->adapter, GATT_PRIM_SVC_UUID, &uuid,
			/* Supported New Alert Category */
			GATT_OPT_CHR_UUID16, SUPP_NEW_ALERT_CAT_CHR_UUID,
			GATT_OPT_CHR_PROPS, ATT_CHAR_PROPER_READ,
			GATT_OPT_CHR_VALUE_CB, ATTRIB_READ,
			supp_new_alert_cat_read, al_adapter->adapter,
			GATT_OPT_CHR_VALUE_GET_HANDLE,
			&al_adapter->supp_new_alert_cat_handle,
			/* New Alert */
			GATT_OPT_CHR_UUID16, NEW_ALERT_CHR_UUID,
			GATT_OPT_CHR_PROPS, ATT_CHAR_PROPER_NOTIFY,
			GATT_OPT_CCC_GET_HANDLE,
			&al_adapter->hnd_ccc[NOTIFY_NEW_ALERT],
			GATT_OPT_CHR_VALUE_GET_HANDLE,
			&al_adapter->hnd_value[NOTIFY_NEW_ALERT],
			/* Supported Unread Alert Category */
			GATT_OPT_CHR_UUID16, SUPP_UNREAD_ALERT_CAT_CHR_UUID,
			GATT_OPT_CHR_PROPS, ATT_CHAR_PROPER_READ,
			GATT_OPT_CHR_VALUE_CB, ATTRIB_READ,
			supp_unread_alert_cat_read, al_adapter->adapter,
			GATT_OPT_CHR_VALUE_GET_HANDLE,
			&al_adapter->supp_unread_alert_cat_handle,
			/* Unread Alert Status */
			GATT_OPT_CHR_UUID16, UNREAD_ALERT_CHR_UUID,
			GATT_OPT_CHR_PROPS, ATT_CHAR_PROPER_NOTIFY,
			GATT_OPT_CCC_GET_HANDLE,
			&al_adapter->hnd_ccc[NOTIFY_UNREAD_ALERT],
			GATT_OPT_CHR_VALUE_GET_HANDLE,
			&al_adapter->hnd_value[NOTIFY_UNREAD_ALERT],
			/* Alert Notification Control Point */
			GATT_OPT_CHR_UUID16, ALERT_NOTIF_CP_CHR_UUID,
			GATT_OPT_CHR_PROPS, ATT_CHAR_PROPER_WRITE,
			GATT_OPT_CHR_VALUE_CB, ATTRIB_WRITE,
			alert_notif_cp_write, NULL,
			GATT_OPT_INVALID);
}

static int alert_server_probe(struct btd_profile *p,
						struct btd_adapter *adapter)
{
	struct alert_adapter *al_adapter;

	al_adapter = g_new0(struct alert_adapter, 1);
	al_adapter->adapter = btd_adapter_ref(adapter);

	alert_adapters = g_slist_append(alert_adapters, al_adapter);

	register_phone_alert_service(al_adapter);
	register_alert_notif_service(al_adapter);

	return 0;
}

static void alert_server_remove(struct btd_profile *p,
						struct btd_adapter *adapter)
{
	struct alert_adapter *al_adapter;

	al_adapter = find_alert_adapter(adapter);
	if (!al_adapter)
		return;

	alert_adapters = g_slist_remove(alert_adapters, al_adapter);
	btd_adapter_unref(al_adapter->adapter);

	g_free(al_adapter);
}

static struct btd_profile alert_profile = {
	.name = "gatt-alert-server",
	.adapter_probe = alert_server_probe,
	.adapter_remove = alert_server_remove,
};

static const GDBusMethodTable alert_methods[] = {
	{ GDBUS_METHOD("RegisterAlert",
			GDBUS_ARGS({ "category", "s" },
				   { "agent", "o" }), NULL,
			register_alert) },
	{ GDBUS_METHOD("NewAlert",
			GDBUS_ARGS({ "category", "s" },
				   { "count", "q" },
				   { "description", "s" }), NULL,
			new_alert) },
	{ GDBUS_METHOD("UnreadAlert",
			GDBUS_ARGS({ "category", "s" }, { "count", "q" }), NULL,
			unread_alert) },
	{ }
};

static int alert_server_init(void)
{
	if (!g_dbus_register_interface(btd_get_dbus_connection(),
					ALERT_OBJECT_PATH, ALERT_INTERFACE,
					alert_methods, NULL, NULL, NULL,
					alert_destroy)) {
		error("D-Bus failed to register %s interface",
							ALERT_INTERFACE);
		return -EIO;
	}

	return btd_profile_register(&alert_profile);
}

static void alert_server_exit(void)
{
	btd_profile_unregister(&alert_profile);

	g_dbus_unregister_interface(btd_get_dbus_connection(),
					ALERT_OBJECT_PATH, ALERT_INTERFACE);
}

static int alert_init(void)
{
	return alert_server_init();
}

static void alert_exit(void)
{
	alert_server_exit();
}

BLUETOOTH_PLUGIN_DEFINE(alert, VERSION,
			BLUETOOTH_PLUGIN_PRIORITY_DEFAULT,
			alert_init, alert_exit)


Former Union minister and Congress leader Jitin Prasada on Friday dismissed "hypothetical" questions about his joining the BJP.
Prasada, considered a prominent Brahmin face of the Congress and a close aide of Rahul Gandhi, was reportedly upset over the selection of candidates in the seats adjoining his traditional Lok Sabha seat of Dhaurahra.
The Congress had announced Prasada's candidature from Dhaurahra in its first list of candidates announced on March 7.
"Why should I answer hypothetical questions," Prasada said when asked about reports claiming that he was joining the BJP.
Congress' chief spokesman Randeep Singh Surjewala treated questions about Prasada's "imminent exit" with disdain.
"Jitinbhai and I go back a long way. I never use this kind of language but I can say it is bulls**t," Surjewala said.
Prasada said he had met AICC general secretary Jyotiraditya Scindia, the in-charge of western Uttar Pradesh, to discuss seat allocation in the state.
Prasada is the son of Congress veteran Jitendra Prasada, a key organisational leader who had worked with the organisation for decades and staunchly resisted offers to break away from the party in 1977.
The senior Prasada had not jumped ship when offers were made by Jayprakash Narayan in 1977, Arjun Singh in 1994 and Sharad Pawar in 1999.
Jitendra had also unsuccessfully contested the election for the post of Congress president against Sonia Gandhi.
Jitin Prasada had contested and won the 2004 Lok Sabha elections from his hometown of Shahjahanpur and went on the become one of the youngest ministers in 2008 during the UPA's first tenure.
In 2009, he won from adjacent Dhaurahra when Shahjahanpur became a reserved seat in the delimitation process.
The BJP announced its first list of 184 candidates on Thursday but did not declare a candidate for Dhaurahra, which further fuelled speculation about Prasada's exit.


Quad_Puppy machines dog quadruped robot Kit with servo and controller Quad_Puppy machines dog quadruped robot specifications: Size: 140 * 120 * 130mm. Weight: 250g (without lithium battery). Voltage: 7.4V. Recommended Power: 7.4V 2300 20C Lithium-Ion battery (light weight, power is large enough). Current: 0.5 to 1.5A. Working hours: high-intensity continuous work, more than 15 minutes is not recommended.
Quad_Puppy machines dog quadruped robot Applicable group: ※ Technology Pavilion. ※ Children's science and technology counseling. ※ Children's Palace, the school technology demonstration. ※ celebration, festivals, exhibitions robot performing. ※ science and technology hands-on training course.


Econsultancy is a community where the world's digital marketing and ecommerce professionals meet to sharpen their strategies, get quick answers, compare notes, and help each other out.
Talk Walker is a social media monitoring tool. It provides social analytics and social media engagement tools for easy integration into your CRM/Marketing resources.
Trendwatching is one of the world's leading trend firms, scanning the globe for emerging consumer trends, insights and innovations. They report on their findings in free, monthly Trend Briefings.
Cuutio is a free (bronze) inbound marketing platform that monitors your web presence. It has on-site and off-site web analytic tools for performance management, tells you the keywords your competitors are using and who links to their site, etc.
Small Business Branding is for those interested in marketing and building a small business. Find articles by authors devoted to building SMB brands; podcasts with ideas, tips, and interviews; small business reviews, etc.
MarketingTerms.com A useful Internet Marketing dictionary. If you want to get up to speed on basic online marketing terminology, this is a good site to visit. Browse by category or alphabetically.
MarketingScoop An online resource (created by marketing experts) for those interested in improving their marketing results. The site has tools, resources, and information available for marketing professionals to help improve their results and succeed in the industry.
Conduit.com Provides website syndication solutions for web publishers that boost traffic, revenue and brand loyalty. Web publishers can syndicate website content and applications directly to the browser by allowing users to add them as simply as adding an RSS feed.
TrafficGeneration.com Traffic building portal providing site promotion articles, search engine news, tools and other resources for webmasters and small businessowners.
MarketingSherpa.com MarketingSherpa.com publishes articles and special reports on useful case studies, results data, and best practices for more than 173,000 marketing, advertising, and public relations professionals. One of the Web's most popular destinations.
PRlog A popular, free online press release service. The site also allows for job and article posting. Easy to use and navigate.


Swiss Medical Informatics SMI is the official journal of the Swiss Society of Medical Informatics SSMI and the leading journal in the field of medical and bioinformatics in Switzerland.
The scope of the journal is to provide a platform for scientific research as well as practice reports, ensuring information leading to evidence based medical informatics.
Submissions within the sphere of influence of the SSMI with a scientific and / or practical background are welcome. Commercial publications are generally not accepted.
All submitted articles are subject to single-blind peer reviewing.
We are looking forward to integrating all groups of interest within clinical informatics in Switzerland and we hope to review many submissions to SMI, independent of your profession. Submit and be part of it!
The articles appear online as soon as they are accepted for publication.


text:
# Package install

cookbook_file "/etc/yum.repos.d/mongodb.repo" do
  mode 00644
end

package "mongodb-org" do
  action :install
end

service "mongod" do
  action [:enable, :start]
end