text:
Interview with...
El Templo #23 (agosto 2011)
Por Javier Ruescas
Where does your fascination with fairies come from? What were your sources of documentation for writing the trilogy of Tithe?
I've loved faeries for a long time. I grew up hearing stories from my mother and I have a vivid memory of finding the book Faeries, illustrated by Brian Froud and Alan Lee. There were snippits of folklore along with the images and it send me looking for more folklore and more stories of these capricious and dangerous beings. What I love most about faeries is that though they may look like us, they are no more like us than a summer storm. They have their own fierce, alien natures.
When I started Tithe, I started with a single image a girl with iron cuffs softly burning her wrists. From there, I realized I wanted to tell the story of the "tiend" or tithe that faeries pay, as referenced in the ballad of Tam Lin. Some of my favorite research books are W.Y. Evans-Wentz's Fairy faith in celtic countries, Dermot MacManus's The middle kingdom and almost anything by Katharine Briggs. I also found Yeat's writing about faeries to be incredibly inspiring as were my favorite urban fantasy writers: Terri Windling, Charles de Lint, and Emma Bull.
In White Cat, what came first, the history of Cassel and his family or the universe you created around them?
My idea for Cassel and his family came from reading a true crime book, Son of a grifter, about a boy who grew up with a grifter for a mother. Growing up with a warped sense of right and wrong -- one where everyone who wasn't in the family was a mark to be conned -- fascinated me. I knew I wanted to write about someone in those circumstances and I knew I wanted to retell an old French fairytale, "The White Cat," so when I put those things together, I knew I had to have a magic system that would work well in a book about crime and which would let me have the magic I needed for the fairytale retelling. From there I got to The Curse Workers magic system and the Curse Workers universe.
In Spiderwick, the illustrations are as important as the text. How was the process to work in the series? Where the illustrations created from the text or vice versa?
Tony taught me an enormous amount about the role of illustrations and text. He would say, "if you described that part, then I'm going to illustrate the part you didn't describe" so that the illustrations were always adding to the story just like the text was. Most of the time the illustrations came after the story, but sometimes Tony would send me something (like the knocker character) and say, "can you write a scene for this guy?" Sometimes he would even have ideas for what might happen in the scene. So, it really was a collaborative process.
One of your most famous series, Chronicles of Spiderwick, became a movie. How much influence did you have in the adaptation process? Are you happy with the result?
I am really, really happy with the film adaptation. I think the movie is a lot of fun and I think the characters seem like themselves. The film, to me, was true to the heart of the book series and I think that's the most important thing. The producers and the director were really great about keeping Tony and I involved in the process. We got to see all the screenplays and to give our thoughts. We got to come out to the set and meet with the visual effects people. Obviously, we took take a backseat to the people actually making the movie, but they kept in regular contact with us and listened to us, so there really isn't any more I could have asked for.
The Chronicles of Spiderwick and White cat are completely different stories, but they both have in common the importance of the relationship between brothers. Is it a coincidence or something with which you like to experiment? In which ways do you think this relations help to enrich the story?
I love complicated family dynamics our families are part of what makes us who we are, whether we like it or not. I think forcing the character to deal with their family gives us insight into them and enriches our understanding of their circumstances.
As an author you've tried a lot of different styles, all related to fantasy literature. You've written middlegrade and YA books. Have you thought about writing something for adults? What do you think of the fact that White Cat, in Spain, has been published in an adult collection?
I thought about writing White cat as an adult book so it's interesting that it has wound up being published as one in several countries. I would like to write an adult book at some point, but so far I have been drawn to younger stories. There is something really interesting about characters young enough to be experiencing things for the first time and trying to figure out who they are and where they belong. The stakes are very high in teen books and in middle grade.
Urban fantasy, dystopians, vampires, angels ... Nowadays it seems that, if you don't write something that matches with the fashion, your book is relegated to the background. Who are responsible of creating this fashions? Publishers, authors or readers? What do you think about this?
At the end of the day, it's readers who create trends. Publishers can believe a book is going to be big and they can make sure that a book gets a lot of marketing and a beautiful cover, but unless it's embraced by readers, it's not going to be a phenomenon. Readers are the ones who press books into their friends hands and tell them, "you'll love this." Readers are the ones that spend hours online creating fansites, drawing fanart, and getting into conversations with other readers who loved the book as much as they did. Readers create trends; publishers follow them.
What is your usual working method? Do you start with a character, with a plot or with something different?
I always start with a character and sometimes with a premise. But I know I'm not ready to start until I have the right first line. Then I write a little, then plot a little, then write a little again. I try to feel my way through a story: what I am writing needs to feel true or I know I took a wrong turn somewhere.
We know you have a good relationship with other YA authors and that you share a working studio with Cassandra Clare. How does it influence your way of working? Do you help each other in some parts of the writing process?
I find it hugely helpful to have writing friends who can look at my stuff, tell me when I have steered myself off-course, and also point out when the writing is going well. It really does help me be more experimental because I know that if I put down something totally crazy there will be someone there to tell me. It's also really helpful to have writing friends because we talk about the business side of being a writer. I have often found my friends to have invaluable advice when I have been in a tight spot.
You have participated in numerous anthologies of short stories like Zombies Vs Unicorns. Which difficulties do you find when writing a short story? Is it very different from the way you work with a long novel? With which kind do you feel more comfortable?
It took me a long time to learn how to write a short story. I wrote all of Tithe before I finished a decent piece of short fiction. Now, I feel more comfortable writing short stories and see them as a place for me to experiment with ideas that might not fit into a novel or characters that I might want to revisit later. But I am still more comfortable with novels.
You are also the author of the graphic novels The Good Neighbours. Why did you choose to write this idea asa graphic novel and not as a book?
I've loved comics for a long time and I thought that The Good Neighbors would be perfect as a comic because it's such a highly visual story. I just finished working on another graphic novel A flight of angels with Rebecca Guay, Bill Willingham and a bunch of other contributors for Vertigo Comics, so I hope to be able to continue to work on comics and graphic novels in the future.
We have read in your website that you're working on a new middle grade novel about ghosts. Can you tell us more about it? What are your upcoming projects?
The middle grade project is called Doll bones and it's a road trip story involving a creepy doll and three kids who have to bury it.


Let's see how good I really am at this Search Engine Optimization thing. We'll use a real-life example of incredibly bad customer service at Nissan of Manhattan and maybe, just maybe show Nissan USA and Nissan of Manhattan why bad customer service is bad business. Nissan of Manhattan, I want your attention.
Yesterday, I took my 2008 Nissan to Nissan of Manhattan to have the brakes looked at. Nissan of Manhattan isn't where I purchased my Nissan, but they're geographically convenient for me, and I had used Nissan of Manhattan once before when my car was struck by a truck while in Manhattan. Nissan of Manhattan was close-by then, too.
My Nissan is still under warranty. I chose Nissan of Manhattan to service my brakes because of that, and only because of that. Past warranty, I'm happy to have my vehicle serviced by a third-party service provider at a much lower price. But before I brought my vehicle to Nissan of Manhattan I first checked with the Nissan dealer where I bought the vehicle and with Nissan of Manhattan themselves to make sure that my brakes were under warranty. I was told exactly and explicitly the same thing by both the other Nissan dealer and Nissan of Manhattan: with the exception of the brake pads, the car was under warranty and the service would be performed at no charge.
I asked the same question again when dropping off the vehicle at Nissan of Manhattan, and received the same answer for a third time. I received that answer from Nissan of Manhattan Service Consultant Jackie Murphy. Ask her if you like; her email address is [email protected]. Several hours after I dropped off my car, Ms. Murphy called to tell me that the charge for servicing my brakes at Nissan of Manhattan would come to almost $900. Her explanation was that this was because the front rotors needed machining and the rear rotors were rusted beyond repair and needed replacement.
Remember, I'd been specifically told that the only part that was not covered under warranty was the brake pads. I was not pleased, and told Ms. Murphy as much. Her response was that she had no way of knowing ahead of time that there were other parts in my brakes that might need service. I pointed out the whole "I asked you a very specific question and you gave me a very specific answer" thing several times, and Ms. Murphy transferred me to her supervisor, one Jennifer Barbieri, the Service and Parts Director at Nissan of Manhattan. You may reach Ms. Barbieri at [email protected]. Ms. Barbieri informed me that rotors are considered a wear item and therefore aren't covered by warranty.
We discussed that "brake pads" thing yet again, including the fact that Nissan of Manhattan's Ms. Murphy had been just the latest person to tell me the same story. No luck. In fact, Ms. Barbieri then went on to point out that the rear rotors had been destroyed by rust and that this was a sign of my negligence. I then placed a call to Nissan of America's Consumer hot-line. It was there that I encountered a Nissan employee who made a point about rust: rust is a sign of something being kept wet and not used for a long period of time. This is my car. I drive it almost every day. There's no way 31-month-old brake rotors should rust under those conditions. Unless they are defective. Oh: and he also told me that brake rotors are absolutely covered under Nissan's new vehicle warranty.
And though he stopped short of using these words that means one thing: the employees at Nissan of Manhattan had lied to me.
First, As Nissan of Manhattan correctly pointed out, when a part fails under warranty they need to ship it to Nissan America or they risk not getting paid for performing the repair. Which also means that if there's any question at all about whether they "should have" considered the part warranted dealers like Nissan of Manhattan have an incentive to refuse warranty service.
The situation this creates is that customers, seeking warranty and customer service for which they have already paid, become merely one point on a triangle of parties that see each of the other two as enemies.
Customer service can't be delivered under those circumstances. And what Nissan of Manhattan did to me when I went looking for warranty service would be bad enough if it stopped there, but it got worse.
Nissan of Manhattan's Ms. Barbieri revealed to me that Nissan America provides a monthly allowance to each of its dealers for parts that don't need to be returned. Ms. Barbieri, "in the interest of customer service", decided that this month she'd include my brake rotor repair in that bucket of goodwill. Meaning that she essentially said to me "now that I've lied to you about your right to warranty service after my employee had promised it to you I'm going to do you the great favor of using money that I can't use for any other purpose on shutting you up".
I feel all warm and fuzzy, don't you?
It gets better. Nissan of Manhattan didn't charge me for the brake rotors. But they charged me for the labor involved in repairing one set and replacing the other. Which means, again, Nissan of Manhattan denied me the warranty service I had already paid for and Nissan America has confirmed is in place.
Net result after a lot of unnecessary aggravation: I saved about $300 by fighting hard after two Nissan of Manhattan employees lied to me. But I had to fight, and shouldn't have needed to do that. And I should have saved $550. I just ran out of time and energy.
I told a story about lying as a form of customer service once before. And like then I want to be clear that my point in telling this horror story courtesy of Nissan of Manhattan is way less about venting than about showing you an example of what customer service and business change is not supposed to be.
And also to teach Nissan of Manhattan, you, and anyone with questions about the value of Search Engine Optimization just how useful a tool it can be. Just search the Internet for "Nissan of Manhattan" or "Nissan of Manhattan Customer Service" in a few weeks. You'll see; Nissan of Manhattan is going to remember me.
Happy Thanksgiving to you. And also to Nissan of Manhattan.
Their service department isn't the only thing lacking, believe me. I recently bought a vehicle from them and it's been one of the worst experiences of my life.
I'm intrigued about how your Hubspot comment ended up here rather than on my story about Hubspot, but I'm glad you found us!
BTW: I understand your NYC comments, and in some ways I have to agree (seriously; I HAVE TO), but it isn't a complete universal. I think the real problem starts at what you call point #2; it's the business Nissan of Manhattan is in that makes their customer service so bad.
I think ur point is ludacris. U obviously have no understanding of an automobile and it's parts. In the end u made out. Attention all observers this website belongs to his brother!
Ur way of thinking is ludacris! You obviously have no understanding of how a vehicle works and the mechanics. In the end you won! Observers should b aware that his brother is the founder of this website . You should spend more time reading up on the mechanics of a vehicle. I have been a mechanic for 20 years and your story holds no value. Try attending automotive classes ! I have had nothing but the best service at Nissan of Manhattan '! It's always the unhappy customers thAt post .
Michael, I didn't win, I just lost less by refusing to back down. And I don't claim to know anything about cars; what I know about is business and how to read a contract and a warranty. And Nissan of Manhattan refused to honor mine without making me fight for what I had already purchased … and lied at several points on the way there. That's not customer service. I stand by my statement; Nissan of Manhattan is not to be trusted.
This story on Nissan of Manhattan's Customer Service was the most popular customer service story here for almost two years. "Was" is the operative word. Take a look at the new customer service story champion: Virgin America Customer Service, The Oxymoron.
Just found this post and read same. Then googled for the name of this firm and yup, this post comes up in #7 spot on page 1 at g.com!
HA. Thanks, Jim. Nissan of Manhattan deserves every found-this-story-and-did-business-elsewhere reaction this musters. HORRIBLE behavior.


text:
Q: WebRTC remote-stream video readyState : "muted" while audio is working everything just works fine (createOffer, createAnswer, iceCandidates, ...), but then the incoming remoteStream has 2 tracks, the audioTrack which is working and the videoTrack which is not working with readyState: "muted".
if i do createOffer on pageload and then with start call do crreateOffer again with the same peerConnection, also the video displays correctly (but then i'll get in firefox the "Cannot create offer in state have-local-offer".
any ideas what could be the problem? (code is quite too complex for showing here)

A: Can you the local video on both the sides?
  -> In a pc only one browser will get access to camera at any time either chrome/firefox)
  -> Try calling between two different machines or chrome-to-chrome or firefox-to-firefox.
"Cannot create offer in state have-local-offer"
It mean you already created an offer and trying to create again without setting remote answer.
Calling createOffer again is not good idea. Make sure you create the offer in the following way(synchronously).

*

*After receiving the stream gUM callback, then add it peerConnection.

*After adding the stream then create the offer, in case of answer set remote offer also before creating answer.

A: I was having this issue while preparing the MediaStream on the iOS app. It turns out the the I wasn't passing the correct RTCMediaConstraints.
The problem resolved after I switch and use [RTCMediaConstraints defaultConstraints].
For example:
- (RTCVideoTrack *)createLocalVideoTrack {
    RTCVideoTrack* localVideoTrack = nil;

    RTCMediaConstraints *mediaConstraints = [RTCMediaConstraints defaultConstraints];
    RTCAVFoundationVideoSource *source =
    [[self peerConnectionFactory] avFoundationVideoSourceWithConstraints:mediaConstraints];
    localVideoTrack =
    [[self peerConnectionFactory] videoTrackWithSource:source
                           trackId:kARDVideoTrackId];
    return localVideoTrack;
}

redpajama_set_name: RedPajamaStackExchange


text:
AT&T Refunding $88 Million After Overcharging Customers
By Althea Chang 2016-12-09T15:50:00Z
AT&T is paying back 2.7 million of its customers for sneaking third-party charges into their cell phones bills.
More than 2.7 million current and former AT&T customers across the country could soon get a check in the mail or refunds on their accounts for bogus fees they were charged without their knowledge. It's a practice known as "cramming" in the wireless industry, and it's something the FTC has been cracking down on in recent years.
For years, AT&T added third-party charges to customer bills for things like ring tones and horoscopes, costing subscribers as much as $9.99 per month, according to the Federal Trade Commission. AT&T has agreed to refund its customers a total of $88 million, with customers getting an average refund of $31. Statement credits will appear on customers' bills within the next 75 days, and the first round of paper checks were sent out this week.
"AT&T received a high volume of complaints related to mobile cramming prior to the FTC and other federal and state agencies stepping in on consumers' behalf," said FTC Chairwoman Edith Ramirez in a press release. "I am pleased that consumers are now being refunded their money and that AT&T has changed its mobile billing practices."
MORE: The Best and Worst Phone Carriers
The FTC sent a complaint to the company in 2014, after AT&T was already audited and investigated for cramming, but the company kept doing it anyway. At that time, AT&T received as much as a 40 percent cut of the charges that its customers weren't aware of.
AT&T customers who receive their refund in the form of a check in the mail will have to deposit or cash it within 60 days, or it will be voided, according to the FTC. For more information, see the FTC's blog post on how the refund program will work.
AT&T Phone Plan Buying Guide: What's Best for You?
Unlocked or Carrier? How You Should Buy Your Next Phone
Best Family Plans - AT&T v. Verizon v. T-Mobile v. Sprint
Packers vs 49ers live stream: Watch the NFL playoff NFC championship game online
UFC 246 live stream: How to watch Conor McGregor vs 'Cowboy' Cerrone

redpajama_set_name: RedPajamaCommonCrawl


Does US Foods Hire Felons?
Is US Foods a good place to work?
Based on our research, it appears that US Foods does hire felons. It should be noted that we compile this information from various internet resources and we cannot guarantee that every company location will have an open mind about hiring a felon. However, from what we have seen in our research, it does appear that someone can work at US Foods with a felony.
Don't see a job you want at US Foods?
Please note that sometimes companies don't put their jobs on search engines, so we recommend that you check out the US Foods website job portal if you don't see anything with our job search function.


Nurses of Nottingham we need you!
Days or nights which do you prefer?
Want to hit the ground running?
We are looking for Staff nurses that want to make a difference and develop their career.
That desire a secure position, with a quality organisation.
Want to work with a well establish company who care about their staff.
Do you specialise in Dementia Care? or is this close to your heart?
An attractive salary of up to £30k with excellent benefits awaits you.
If you would like to hear more about this opportunity, please contact Darene Blackwood at Recruitment Panda on 07514 669 415 or 0161 914 5722 or press the apply button and lets have a chat !
A qualified nurse either RGN or RMN with a current nursing pin - have nursing home experience or want to move into the sector - enjoy fostering good teams and mentoring junior members of staff - have a good understanding of CQC regulations - have a passion for elderly care with an understanding of dementia or would like to move into that area.


Trace the legends and natural splendors of the American West. The country our ancestors dreamed about—and that still resides in our nation's great parks—is filled with beautiful scenery, abundant wildlife, hiking, storytelling, and incredible historic lodges you will write home about.
Welcome to Rapid City—nicknamed The City of Presidents. Transfer to the hotel to meet fellow travel companions and your Expedition Leader for a welcome drink and expedition briefing. Rapid City's location at the eastern slope of the Black Hills Mountain Range gives visitors easy access to all the surrounding attractions—from the beautiful state and national parks, to the manmade wonders like Mount Rushmore and Crazy Horse Memorial. Take a stroll around beautiful downtown to spot just some of the 43 life-sized U.S. presidential bronze statues that reside on nearly every street corner.
Tonight, stay in Custer State Game Lodge, which offers guests a relaxing, nature-filled experience, combined with stunning views and outstanding service. Built in 1920, this impressive stone and wood lodge surrounded by stately trees is listed on the National Register of Historic Places. The lodge served as the "Summer White House" for President Calvin Coolidge in 1927, who saw it as a quiet retreat from the heat, bugs, and crowds of Washington D.C. President Dwight D. Eisenhower also visited the lodge in 1953, while on a visit to the Black Hills area.
Afterward, stop at the legendary gold rush town, Deadwood, for a brief visit to stroll around this National Historic Landmark.
Journey through impressive Spearfish Canyon and across the grassy plains of Wyoming. Delight in leisure time and lunch at an authentic Western ranch amid the brilliant landscape. Afterward, board the motor coach, sit back, relax, and embrace the spectacular scenery of Bighorn Mountains and Shell Creek Canyon as you travel to Buffalo Bill's Wild West town of Cody, Wyoming. Originally founded in the 1890's by the famous man himself, the town now boasts a population of more than 10,000 residents who live and work in the surrounding area.
Continuing on, pass through Shoshone National Forest to Yellowstone National Park, established in 1872 as the world's first national park. See the Park's Upper and Lower Falls, and take time to spot for wildlife in Hayden Valley. Watch in awe as Old Faithful Geyser erupts to heights between 106 and 185 feet.
Enjoy a full day exploring Yellowstone, including its active caldera, and watch as Old Faithful Geyser erupts.


This year's 3rd edition of the "Beskid Good Energy" Festival, dedicated to energy conservation in everyday life, once again attracted thousands of Bielsko-Biała residents.
Local residents as well as visitors had a chance to enjoy a weeklong eco-design exhibition entitled "The Second Life of Things". "We want to show that recycling can be aesthetic and functional, and energy consumption while creating new objects should be minimised." - explained the festival's organisers. The temporary "Share the Water" green garden was an interesting space created by students that aimed to draw attention on the need to save water and the importance of greenery in urban space. Besides, preschool children and younger elementary school pupils learned about ecology by planting their own trees and plants and many other educational activities were organised. In these attractions, participants were proven that electricity is not necessarily needed to have a great time and that energy can be understood in many ways.
Another exhibition was a unique presentation of ENGAGE posters of Climate Ambassadors, consisting of more than 1,000 faces of city residents who committed to reduce their energy consumption and share their knowledge with others. Among the ambassadors are musicians, actors, athletes, officials and many other residents of Bielsko-Biała.
As for previous editions of the festival, the central and symbolic point of the programme has been the "Bielsko-Biala Balloon Release" where 300 balloons flew in the air with an eco-friendly message. Balloons carry the message far and sometimes even abroad: the finders return them to the Town Hall in Bielsko-Biała and then receive gifts such as a unique LCD room thermometer. Thus the idea of the festival is not only a local initiative but also European!
The festival ended with a concert by the Recycling Band who uses instruments made by themselves – bottle-violin, bottle-bass or garbage-drums – and drew attention on waste management.
Such innovative activities of the city, resulting in the organisation of the festival, have been repeatedly rewarded, even internationally. The huge turnout at the festival showed that people need this type of action, which consists not only of entertainment, but also of education through play, so that energy matters are becoming closer to them. The festival will surely return next year!


Find out what it's like to join our team at The Food Warehouse.
We are always looking to hire good people and joining our team at The Food Warehouse is a clear indication that you are a talented, skilled individual who is passionate about the brand, our customers and our products.
Our recruitment process is uncompromising as we look to hire the best people to work in our amazing new stores up and down the country.


I was reading through the issue list on the sp-dev-column-formatting repository and came across a question from Marc Anderson about using icons from external sources – specifically Font Awesome.
The bad news is this isn't nearly as simple as just specifying the iconName attribute like you do with UI Fabric Icons (but it isn't that hard either).
One of the awesome things about column formatting is the ability to use an inline SVG element as one of the elmType values. Inside you can add a path element and specify the d attribute.
However, one of the not so awesome things about column formatting is that that is currently about as fancy as you can get with SVGs. The biggest hurdle in this case is the lack of a viewbox attribute. So we'll have to adjust our icon SVG to not rely on the viewbox for proper scaling and then extract the d attribute for use in our format.
It's really not as scary as that might have sounded.
Once we have the path instructions for our icon(s) we can use them like any other value with conditional operators and more. In fact, we can even dynamically build those paths if we want to get crazy about it (In fact, this is exactly how the Donut wizard in Column Formatter works).
Many icon providers will allow you to download the SVG version of an icon. Both Material icons and Font Awesome allow this and there are many more. You can even mix and match since you aren't bringing in a dependency on the actual fonts, you're just using the SVG for individual icons.
Unlike traditional images, you won't actually upload this file anywhere and you won't be using it in the src tag of an img element. Instead, we'll be pulling the instructions directly out of the file (which is actually an XML file).
That tiny square under your icon is the actual document, so let's scale down our object to fit. Select the icon object.
Instead of a span with an iconName attribute, you'll use an svg with a path and a d attribute. A quick example should help clear that up.
So… not as easy, but this opens up tons of options!
Fortunately, conditionally selecting an icon stays relatively simple since column formatting always allows either an operation or a value. So, where you might have used a conditional statement for the iconName attribute, you can just do the same thing for the d attribute.
The icons shown here and included in the gist code were adapted from Font Awesome which is available under the Creative Commons Attribution 4.0 International license.
← What's new in Column Formatter 1.2?
Where there's a will, there's a way! Great post, which makes the method make total sense.
What makes me nervous about this approach is you now have the hard-coded icon SVG code wherever you've decided to use it. The maintainability isn't great (What was "m 6.5,2.88889" again?) and it can't move forward with future versions of Font Awesome.
Thus my ask: a good way to use alternate icon sets.
Thanks Marc! I completely agree this method has limitations. By extracting the icon from Font Awesome you lose not only the friendly name and updates, you lose the flexibility to easily swap it to another icon. Additionally, without the viewbox attribute, SVGs are essentially just VGs since they no longer scale.
Column Formatting is fairly limited and I hope that will change in terms of support for more attributes, elements, and even operations. However, I wouldn't expect it to ever allow external styles/scripts/fonts etc. This would include directly referencing and using something like Font Awesome. If you need to do that, that's a good use case for a Field Customizer SPFx extension. I prefer Column Formatting because there is no solution to deploy/approve/maintain/etc. but Field Customizers provide a ton of flexibility when you need to go further.


This warranty applies to the factory finish.
If the finish is properly maintained and subject to the exclusions stated below, NLG warrants that for a period of 5 YEARS from the date of original purchase by a retail consumer or a builder, NLG's factory-finished doors will not peel, crack, blister or fade excessively as a result of defects in manufacturing or materials. NLG grants these warranties only to the original purchaser of the door and the original resident of the building where the door was installed. This warranty only covers the door and does not apply to any factory finished components that may be sold in combination with the door. THIS WARRANTY IS NOT TRANSFERABLE AND ONLY APPLIES TO DOORS INSTALLED IN RESIDENTIAL PROPERTIES.
than a defect in the manufacture or material used by NLG (i.e. abuse, improper use, vandalism, impact by a foreign object, act of God, fire or other casualty, damage caused by improper handling, storage or installation by freight carriers, distributors, installers or other parties).
Other causes beyond NLG's control.
*MAINTENANCE INSTRUCTIONS: Proper maintenance will not only protect your door during the warranty period, it will also extend the life of the finish. The door should be regularly cleaned with non- abrasive soap and water; no chemical cleaners should be used.
NO EVENT WILL NLG BE LIABLE FOR SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES. This warranty gives you specific legal rights. Other rights vary from state to state and may apply to you. Some states and federal laws do not allow the exclusion of implied warranties. In the event these laws apply, then the length of any implied warranty shall be one (1) year or the shortest time in excess of one year permitted under applicable law. Similarly, some states do not allow the exclusion or limitation of consequential damages and, if applicable, this limitation will not apply.
THE INSTALLATION OF ANY REPLACEMENT DOOR. NLG's MAXIMUM LIABILITY IS LIMITED TO THE AMOUNT OF THE ORIGINAL PURCHASE PRICE OF THE DOOR. The duration of the original warranty will not be extended even if NLG replaces or repairs the product.
If you have a warranty claim, please notify your NLG Dealer. Include in the notice the following information: (a) description of door and the specific information located on the top of the door; (b) name and address of owner and installer; (c) proof of sale; and (d) detailed explanation of the defect.


1.23 ACRE LOT! Welcome to Bradford Estates! Conveniently located minutes from Camp Lejeune, this new home community boasts a sparking swimming pool, covered picnic area, and playground for days of outdoor fun! Have you seen the Celene? It's a floor plan that's sure to be love at first sight! With 3 bedrooms, 2 bathrooms and a finished bonus room, it's just the right size. Upon entering, you'll love the open living area with vaulted ceilings and a fireplace that's perfect for those cozy nights. The open kitchen is sure to please and is great for entertaining, with just the right amount of counter and cabinet space. The light filled breakfast area overlooks the outdoor patio and large backyard. The split floor plan is sure to please, with two spacious bedrooms and a full bathroom just off the kitchen. The large master bedroom features elegant trey ceilings, a large walk in closet and an ensuite bathroom with dual vanity sinks, a shower stall and soaking tub, perfect for relaxing in after those long days. Above the garage you'll find an additional oversized bonus room, giving you all the space you'll need! This home is a pre-sale and there is no construction, the floor plan can be changed to fit your needs! Schedule a showing today for more info!


One of the benefits of Cloud Computing that makes Clouds "Cloudy" is the location independence of its resources. When you provision a Cloud instance, you need not know or care where that instance is physically located -- what server, rack, data center, or even necessarily what country.
The downside of such location independence, of course, is that sometimes you really do care where your instances are physically located -- in particular, when there is a law or regulation that requires such knowledge. You may need to locate your data in the same country you reside in, or there may be laws that limit transmission of certain data across national boundaries.
To respond to such requirements, Cloud Service Providers (CSPs) are offering geolocation in the Cloud: the ability to identify and specify the physical location of your Cloud resources. Fair enough, if we must comply with a regulation, then so be it. But aren't we defeating one of the primary benefits of moving to the Cloud in the first place?
The answer: it depends. Physical resources have fixed locations, but virtual resources do not. If you throw in the towel on geolocation and treat Cloud resources like physical resources, then you've given up much of the flexibility the Cloud promises. On the other hand, if you treat the physical location of virtual resources as a matter of policy, where you manage and enforce such policies as part of an automated governance framework, then setting the geolocation of your instances is a simple matter of configuration.
There's more to making this automated governance work than meets the eye. The Cloud consumer may simply configure their instances to follow a policy like "put a copy of my data in Texas and New York," and then change the policy to add California to the mix, and they're done. But behind the scenes, the CSP must provision the appropriate instances in their California data center, migrate the appropriate data (or entire workloads) to it, and then follow appropriate policies about keeping your data in synch. And they have to automate the whole shebang. Can your CSP do all that?


Image courtesy of Birmingham Post & Mail, 2014.
Vanley Burke is often described as the 'Godfather of Black British Photography', whereby his iconic images have captured the evolving cultural landscape, social change, and stimulated debate in the United Kingdom over the past four decades. He draws strength from remaining a humble man of the community, whose personable character allows him to capture the intimate and private nature of people's everyday lives.
His body of work represents possibly the largest photographic record of the Caribbean Diaspora in Britain, and as an avid collector, Vanley continues to connect histories through his substantial archive housed at the Library of Birmingham. From local community organisations to the Victoria & Albert Museum and Whitechapel, Vanley has exhibited widely in the United Kingdom, and as far afield as New York, South Africa and China.
Vanley's artistic enquiry is not simply limited to black and white documentary photography, as his eccentric rebellious nature lends itself to sculpture and painting, and crafting art that gives life a shape. His simple motivation has been the preservation of culture and history through creation, documentation, and discovery which often leaks into the private.


The Hungarian men's waterpolo team couldn't win the European championships title again after 1958, in front of home crowd. Serbia wins men's European water polo champion's title.
The official website said, Hungary had problems with man-up situations, meanwhile on the other side Serbia did a great job, as well as with the defence. Chisen the best goalkeeper of the tournament, Gojko Pietlovic had a great day by saving 12 out of 19 shots, which is a rate of 63,2%.
Team Hungary won the 3rd quarter by 2 goals so a beam of hope showed up for home team to get back to the game with a huge fight in the last period, but there was no mercy, Serbian players didn't let it., and used every second of the attacking time to create chances, which was a big mental pressure for Hungary.
In the last quarter Serbia came up with 3 goals in a row, which didn't let any chance for the opponents to get closer.
Team Hungary won silver medal at the European Championships in Budapest. Tibor Benedek led his side to the final in all of his major international tournaments so far a sa coach: 2013 and 2014 World League, 2013 World Chamiponships and 2014 European Championships. After two silvers and a gold, it's now again a silver to make the medal collection richer.


STEVE McClaren has been shortlisted for the Sky Bet Championship Manager of the Month award for October.
McClaren's nomination follows an unbeaten month for QPR, which saw Rangers win four of their five games and keep four clean sheets in the process.
McClaren is joined on the shortlist by Millwall manager Neil Harris, Derby County gaffer Frank Lampard and Birmingham City boss Garry Monk.
The judging panel comprises former Ipswich Town manager George Burley, Sky Sports' EFL League expert Don Goodman, EFL Marketing Director Drew Barrand, League Managers' Association Director Olaf Dixon and Sky Bet EFL Trader Mikey Mumford.


why did we start collecting solar data?
we started collecting our solar radiation data as a part of a large-scale corn growth modeling project. the solar radiation is a key factor in modeling growth accurately, however, there isn't a good national dataset. we read several university papers mentioning that modeling the solar radiation was the best they could do, simply because the data wasn't available. we also spoke to a professional climatologist, who believed there were only a couple hundred us stations with solar radiation. he was very surprised to learn that we had found several thousand. the problem with these stations is that the units and data formats are not consistent, so we have spent a lot of time writing software that will collect the data each week and rationalize them all into a single database with the same units. the data collection itself has proven somewhat tempermental as well (stations appear and disappear, websites change, general internet issues), so the data collection requires some weekly maintenance.
our next step is to collect soil and yield data, which we will incorporate into a website. this site will allow users to get a crop forecast that we believe will be more accurate than any other tool currently available. we also feel that our forecasts will be much more accurate than those produced by the usda.


At HTS Spares we are commited to helping others and we proudly support a number of local and national charities each year, making substantial donations and offering our time and services to community projects. The worthy charities we select cover a wide spectrum of causes. We spend a lot of time researching their work done and many of them relate to circmstances that have touched the lives of our staff and friends.
With close links to the military in both offices and with our offices in Hereford being in such close proximity to our world famous SAS camp this felt like an perfect choice!
Would you like HTS to support your charity?
Although our 'Charity of the Year' is chosen by our staff, we very much welcome the opportunity to support other charities throughout the year too. If you would like HTS to support your charity or charitable work, please get in touch with Roy Knappett or click here to complete our nomination form.
Would you like HTS to support a project in your local community?
a community project, please don't hesitate to get in touch with Roy Knappett or click here to complete our nomination form.


text:
{ "510047": { "url": "/topic/Rosmersholm", "shareUrl": "https://www.britannica.com/topic/Rosmersholm", "title": "Rosmersholm" ,"gaExtraDimensions": {"3":"false"} } }
drama by Ibsen
Rosmersholm, four-act play written by Henrik Ibsen, published in 1886 and performed in 1887.
The play's plot revolves around ex-parson Johannes Rosmer, a representative of high ethical standards, and his housekeeper, the adventuress Rebecca West. Both are haunted by the spirit of Rosmer's late wife, who committed suicide under the subtle influence, the reader learns, of Rebecca West and because of her husband's high-minded indifference to sex. At issue for the future is a choice between bold, unrestricted freedom and the ancient, conservative traditions of Rosmer's house. Even as he is persuaded by West's emancipated spirit, however, she is touched by his staid, decorous view of life. Each is contaminated by the other, and, for differing but complementary reasons, they tempt one another toward the fatal millpond in which the wife drowned herself. The play ends with a double suicide.
It is from this play that novelist Rebecca West (Cicily Fairfield) chose her pseudonym.
This article was most recently revised and updated by Kathleen Kuiper, Senior Editor.
Henrik Ibsen: Self-imposed exile: Peer Gynt, A Doll's House, and Ghosts
…last of the sequence is Rosmersholm (1886), in which variants of the destructive saint (Brand) and the all-too-human rogue (Peer) once more strive to define their identities but this time on a level of moral sensitivity that gives the play a special air of silver serenity. Ex-parson Johannes Rosmer is…
Dame Rebecca West
Dame Rebecca West, British journalist, novelist, and critic, who was perhaps best known for her reports on the Nürnberg trials of war criminals (1945–46). West was the daughter of an…
Dramatic literature, the texts of plays that can be read, as distinct from being seen and heard in performance. The term dramatic literature implies a contradiction in that literature originally meant something written and drama meant something performed. Most of the problems, and much of the…


text:
<?php

namespace Dizzy\Cashier\Mollie;

use Mollie_API_Object_Customer_Subscription;
use Mollie_API_Object_List;

class Subscription
{
    /**
     * @param $subscription_id
     * @param array $filters
     * @return Mollie_API_Object_Customer_Subscription
     */
    public static function get($subscription_id, array $filters = [])
    {
        return Mollie::client()->customers_subscriptions->get($subscription_id, $filters);
    }

    /**
     * @param int $offset
     * @param int $limit
     * @param array $filters
     * @return Mollie_API_Object_Customer_Subscription[]|Mollie_API_Object_List
     */
    public static function all($offset = 0, $limit = 0, array $filters = [])
    {
        return Mollie::client()->customers_subscriptions->all($offset, $limit, $filters);
    }

    /**
     * @param array $data
     * @param array $filters
     * @return Mollie_API_Object_Customer_Subscription
     */
    public static function create(array $data, array $filters = [])
    {
        return Mollie::client()->customers_subscriptions->create($data, $filters);
    }

    /**
     * @param $subscription_id
     * @return Mollie_API_Object_Customer_Subscription
     */
    public static function cancel($subscription_id)
    {
        return Mollie::client()->customers_subscriptions->cancel($subscription_id);
    }

    /**
     * @param $subscription_id
     * @return Mollie_API_Object_Customer_Subscription
     */
    public static function delete($subscription_id)
    {
        return Mollie::client()->customers_subscriptions->delete($subscription_id);
    }
}

redpajama_set_name: RedPajamaGithub


text:
For all the latest South African celeb gossip join The Juice!
For all the latest local music news join Channel24 Music
Movies >
40 pics of the Cannes Film Festival you can't miss!
British model and actress Cara Delevingne poses as she arrives for the screening of the film "The Search" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / VALERY HACHE
US actress Sharon Stone poses as she arrives for the screening of the film "The Search" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / ALBERTO PIZZOLI
Italian actress Sophia Loren (L) poses with her son, director Edoardo Ponti, as she arrives for the screening of the film "Deux Jours, Une Nuit (Two Days, One Night) at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 20, 2014. AFP PHOTO / LOIC VENANCE
Italian actress Sophia Loren (C) poses as she arrives with her son, director Edoardo Ponti (R), and Italian actor Enrico Lo Verso for the screening of the film "Deux Jours, Une Nuit (Two Days, One Night) at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 20, 2014. AFP PHOTO / LOIC VENANCE
Italian actress Sophia Loren poses as she arrives for the screening of the film "Deux Jours, Une Nuit (Two Days, One Night) at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 20, 2014. AFP PHOTO / LOIC VENANCE
British model and actress Rosie Huntington-Whiteley poses as she arrives for the screening of the film "The Search" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / BERTRAND LANGLOIS
BLACK AND WHITE VERSION Canadian actor Ryan Gosling (R) poses with US actress Christina Hendricks during a photocall for the film "Lost River" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 20, 2014. AFP PHOTO / LOIC VENANCE
US actor Channing Tatum takes photos during a photocall for the film "Foxcatcher" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 19, 2014. AFP PHOTO / LOIC VENANCE
US actor Channing Tatum poses during a photocall for the film "Foxcatcher" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 19, 2014. AFP PHOTO / LOIC VENANCE
US actor Channing Tatum (R) joins photographers to shoot his fellow cast members during a photocall for the film "Foxcatcher" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 19, 2014. AFP PHOTO / BERTRAND LANGLOIS
US actress Julianne Moore (L) and British actor Robert Pattinson laugh during a press conference for the film "Maps to the Stars" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 19, 2014. AFP PHOTO / LOIC VENANCE
US actress Julianne Moore (L) talks to British actor Robert Pattinson during a press conference for the film "Maps to the Stars" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 19, 2014. AFP PHOTO / LOIC VENANCE
(From L) Canadian director David Cronenberg, US actress Julianne Moore and British actor Robert Pattinson arrive for the screening of the film "Maps to the Stars" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 19, 2014. AFP PHOTO / ALBERTO PIZZOLI
Canadian actor Ryan Gosling (L) gestures while posing with US actress Christina Hendricks during a photocall for the film "Lost River" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 20, 2014. AFP PHOTO / LOIC VENANCE
Canadian actor Ryan Gosling waves during a photocall for the film "Lost River" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 20, 2014. AFP PHOTO / LOIC VENANCE
Artists perform as guests arrive for the screening of the film "Geronimo" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 20, 2014. AFP PHOTO / ALBERTO PIZZOLI
French actress Marion Cotillard (R) talks to Belgian-Italian actor Fabrizio Rongione (C) as they arrive with Belgian director Luc Dardenne for the screening of the film "Deux Jours, Une Nuit (Two Days, One Night) at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 20, 2014. AFP PHOTO / VALERY HACHE
US actress Sharon Stone (L) poses with the General Delegate of the Cannes Film Festival Thierry Fremaux as she arrives for the screening of the film "The Search" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / BERTRAND LANGLOIS
Indian actress Aishwarya Rai Bachchan poses as she arrives for the screening of the film "The Search" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / VALERY HACHE
US actress Sharon Stone (2ndL) is welcomed by the President of the Cannes Film Festival Gilles Jacob (2ndR) as she arrives for the screening of the film "The Search" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / ALBERTO PIZZOLI
US actor Adrian Grenier smiles as he arrives for the screening of the film "The Search" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / ALBERTO PIZZOLI
US actress Jessica Chastain laughs as she arrives on the set of the French tv channel Canal Plus on the sidelines of the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / LOIC VENANCE
French actress Marion Cotillard poses as she arrives for the screening of the film "L'Homme qu'on Aimait Trop (In the Name of my Daughter)" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / ALBERTO PIZZOLI
French actress Marion Cotillard poses as she arrives for the screening of the film "L'Homme qu'on Aimait Trop (In the Name of my Daughter)" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / LOIC VENANCE
British singer Lily Allen smokes a cigarette as she gets ready to perform on the set of the French TV channel Canal Plus on the sidelines of the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / LOIC VENANCE
French actress Marion Cotillard gestures as she arrives on the set of the French TV channel Canal Plus on the sidelines of the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / LOIC VENANCE
British model and actress Cara Delevingne gestures on the set of the French TV channel Canal Plus on the sidelines of the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / LOIC VENANCE
British singer Lily Allen performs on the set of the French tv channel Canal Plus on the sidelines of the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / LOIC VENANCE
TOPSHOTS Italian actress Sophia Loren holds a professional camera as she sits among photographers during a photocall for "Voce Umana" at the 67th edition of the Cannes Film Festival in Cannes, southern France, on May 21, 2014. AFP PHOTO / BERTRAND LANGLOIS
England's actor Colin Firth (L) and his with Livia Firth (R) arrive to the Chopard 'Backstage party' on the sidelines of the 67th Cannes film festival, at the Cannes-Mandelieu aerodrome, on May 19, 2014 in Cannes, southeastern France. AFP PHOTO / JEAN CHRISTOPHE MAGNENET
Brazilian models models Alessandra Ambrosio (L) and Adriana Lima (R) arrive to the Chopard 'Backstage party' on the sidelines of the 67th Cannes film festival at the Cannes-Mandelieu aerodrome on May 19, 2014 in Cannes, southeastern France. AFP PHOTO / JEAN CHRISTOPHE MAGNENET
Brazilian model Alessandra Ambrosio arrives to the Chopard 'Backstage party' on the sidelines of the 67th Cannes film festival at the Cannes-Mandelieu aerodrome on May 19, 2014 in Cannes, southeastern France. AFP PHOTO / JEAN CHRISTOPHE MAGNENET
US actress Sharon Stone attends the De Grisogono Party during the 67th annual Cannes Film Festival at the Eden Roc hotel in Antibes, near Cannes, southeastern France, on May 20, 2014. AFP PHOTO / JEAN-CHRISTOPHE MAGNENET
US celebrity Paris Hilton attends the De Grisogono Party during the 67th annual Cannes Film Festival at the Eden Roc hotel in Antibes, near Cannes, southeastern France, on May 20, 2014. AFP PHOTO / JEAN-CHRISTOPHE MAGNENET
US' singer Jason Derulo attends the De Grisogono Party during the 67th annual Cannes Film Festival at the Eden Roc hotel in Antibes, near Cannes, southeastern France, on May 20, 2014. AFP PHOTO / JEAN-CHRISTOPHE MAGNENET
Spanish actor Antonio Banderas attends the De Grisogono Party during the 67th annual Cannes Film Festival at the Eden Roc hotel in Antibes, near Cannes, southeastern France, on May 20, 2014. AFP PHOTO / JEAN-CHRISTOPHE MAGNENET
US actress Rosario Dawson attends the De Grisogono Party during the 67th annual Cannes Film Festival at the Eden Roc hotel in Antibes, southeastern France, near Cannes, on May 20, 2014. AFP PHOTO / JEAN-CHRISTOPHE MAGNENET
US actor Chris Tucker attends the De Grisogono Party during the 67th annual Cannes Film Festival at the Eden Roc hotel in Antibes, southeastern France, near Cannes, on May 20, 2014. AFP PHOTO / JEAN-CHRISTOPHE MAGNENET
Click on the thumbnail above to view the larger image.
19 photos celebrating Johnny Clegg's incredible life
44 photos of Ben Harper and The Soweto Gospel Choir performing in Cape Town to take your breath away
10 adorable snaps of the new royal baby
47 unforgettable photos from the 2019 Met Gala
16 stellar photos from inside the Billboard Music Awards 2019
22 bloody brilliant behind-the-scenes photos of Chicago the Musical
The Soweto Gospel Choir, Chaka Khan, BCUC and more: Here are 20 terrific photos of the Cape Town International Jazz Festival 2019
All the pics from Ed Sheeran's amazing gig in Cape Town last night!
19 explosive photos of Ultra 2019 in Johannesburg
42 must-see pics from Oscars 2019 red carpet
19 glamorous photos from The Brit Awards 2019
23 Photos of Bryan Ferry's loved-up and magical night in Cape Town
GALLERY: 20 years later: Diana's life remembered in 40 photos
GALLERY: Eat, drink & be merry in Braamfontein
GALLERY: Pics: Seen on the social scene
VIDEO: New Mandela trailer
GALLERY: Celebs talk 'good hair'
GALLERY: Celebs attend the launch of Zando.co.za in CT
GALLERY: Ten years of The Bachelor: Too white?
GALLERY: Brad Pitt and Angelina Jolie through the years
GALLERY: Celebs in Playboy
VIDEO: Golden Voiced man reunites with mom
GALLERY: Cosmo Summer Fashion Show
GALLERY: 30 Seconds to Mars Live
VIDEO: The Girl Who Played with Fire
VIDEO: You Again
VIDEO: Knucklehead
VIDEO: Four Lions
VIDEO: The Infidel
VIDEO: Boo! The Three of Us
VIDEO: The Social Network
VIDEO: Takers


'The Bold Type' Season 3 Premiere Brings Kat, Sutton & Jane Back to NYC | Television, The Bold Type | Just Jared Jr.
Tonight's the premiere of The Bold Type season 3 and we could not be more excited!
"The New Normal" picks right after the heartbreak, romances and uncertainties from the season two finale in Paris. Now, Jane (Katie Stevens), Kat (Aisha Dee) and Sutton (Meghann Fahy) are back in New York City and dealing with the aftermath of some major decisions.
Scarlet Magazine brings in Patrick Duchand to run the digital branch, effectively knocking Jacqueline (Melora Hardin) down to only running the print magazine. Meanwhile, Jane has picked her guy, but is frustrated that a man is put in charge of a women's magazine.
Kat struggles to keep up happy appearances on social media and as a speaker at the Scarlet Summit, while secretly suffering heartache, and Sutton and Richard enjoy their romance in the limelight and discuss moving in together.
The Bold Type premieres TONIGHT, Tuesday, April 9th @ 8PM ET/PT on Freeform.


text:
Inside View of a Uranium Nanosphere
Recipe for radioactive compounds aids nuclear waste and fuel storage pools studies.
ALBUQUERQUE, N.M. . Easy-to-follow recipes for radioactive compounds like those found in nuclear fuel storage pools, liquid waste containment areas and other contaminated aqueous environments have been developed by researchers at Sandia National Laboratories.
"The need to understand the chemistry of these compounds has never been more urgent, and these recipes facilitate their study," principal investigator May Nyman said of her group's success in encouraging significant amounts of relevant compounds to self-assemble.
The trick to the recipes is choosing the right templates. These are atoms or molecules that direct the growth of compounds in much the way islands act as templates for coral reefs.
The diagrammatic image, viewed from upper left to bottom right, shows steps in the templated creation of radioactive compounds. In this case, the red spidery-looking shape is oxygen building a cage around tantalum (blue sphere) ; green sphere is potassium, pink is cesium. The yellow boxes are uranyl peroxide. Chemical attractions force the disparate parts to self-assemble. The background is a transmitted light-microscope image of crystals of the final product, U28.
[Credit: Sandia National Laboratories]
The synthesized materials are stable, pure and can be studied in solution or as solids, making it easier to investigate their chemistry, transport properties and related phases.
The compounds are bright yellow, soluble peroxides of uranium called uranyl peroxide. These and related compounds may be present in any liquid medium used in the nuclear fuel cycle. They also appear in the environment from natural or human causes.
Made with relatively inexpensive and safe depleted uranium, the recipes may be adapted to include other, more radioactive metals such as neptunium, whose effects are even more important to study, Nyman said.
Cesium - an element of particular concern in its radioactive form - proved to be, chemically, an especially favored template for the compounds to self-assemble.
The work was done as part of the Actinide Materials Department of Energy (DOE) Energy Frontiers Research Center (EFRC) led by professor Peter Burns at Notre Dame University. Using the new method, researchers at the University of California-Davis are studying how materials behave in water and in different thermal environments, while researchers at DOE's Savannah River Site study the analogous behavior of neptunium.
The research will be featured as the cover article of the May 3 online European Journal of Inorganic Chemistry, to be published in print May 13, 2011 [see below]. It currently is highlighted in preview in the online ChemViews Magazine.
Sandia National Laboratories is a multiprogram laboratory operated and managed by Sandia Corporation, a wholly owned subsidiary of Lockheed Martin Corporation, for the U.S. Department of Energy's National Nuclear Security Administration. With main facilities in Albuquerque, N.M., and Livermore, Calif., Sandia has major R&D responsibilities in national security, energy and environmental technologies, and economic competitiveness.
Further Information and Source:
May Nyman, Mark A. Rodriguez, Todd M. Alam:
The U28 Nanosphere: What's Inside?.
In: European Journal of Inorganic Chemistry; article first published online: 4 March 2011
DOI: 10.1002/ejic.201001355
URL: direct link
ChemViews Magazine:
Ideal Templates for Stable U28 Clusters.
In: ChemViews; published online 26 March 2011
Source: DOE/Sandia National Laboratories, USA
http://www.internetchemistry.com/news/2011/apr11/uranium-nanosphere.html
Publish your Press Release ...
More on the topic (background information, research articles, etc.): See top left menu bar!
Internetchemistry © 2007 - 2016 A. J. - last update 15.04.2011


'A World of My Own' Children's Art Exhibition, curated by Chaitali Morajkar, ended in a celebratory spirit with hundreds of parents, relatives and friends of the young artists coming together for the Closing Ceremony! The ceremony began with a walkthrough by Curator, Chaitali Morajkar and all the artists along with the Chief Guests Mr Dilip Borkar, MJF Lion Vasudev Valawalkar. The Valedictorian ceremony started with a speech by Dr Subodh Kerkar and the chief guests on the importance of art in one's lives. All the participating artists were given a certificate to recognise their efforts in creating a wonderful exhibition at MOG.
The exhibition was visited by over 600 students from schools and residential homes such as Green Meadows, El Shaddai Shelter & School, Sacred Heart Jesus and many others. Each day was filled with workshops on art, craft, theatre and reading. Blandina Noronha (MOG Art Facilitator), Arundhati Chattopadhyaya (Theatre Artist), Sujata Noronha from Bookworm, Louise Tenbosch (Trainer, Giant Dolls House), Victoria Filina (Expert, Children's Storybook Writer) and Chaitali Morajkar, (Founder, Paint Club Goa) created a fun-learning environment for all the children!
A World of My Own' Children's Art Exhibition, was supported by Museum of Goa Foundation, Lions Club, Calangute and several other individual donors and was aimed at promoting young talent and encouraging children to engage with art.


One of our missions is to help those in our local community who are less fortunate. That's why a portion of each sale is donated to charity. It's our way of giving back and paying it forward.
Click here to read more about how we're giving back.


text:
package gov.pnnl.stucco.dbconnect;

/**
 * This interface is the way we specify names, values and conditionals when searching for
 * or filtering out types of vertices.  The interface is required to deal with the various
 * implementation of the various DBs and how they implement that functionality.
 *
 */
public interface DBConstraint {

    /**
     * returns the string to be used as part of the conditional portion for a query to the DB
     * @param c - type of comparison
     * @return the DB syntax to be used for that DB
     */
    public String condString(Condition c);

    /**
     * Get the Condition associated with the DB type we are using to know how the comparison should be done
     * @return
     */
    public Condition getCond();

    /**
     * Get the property name that is associated with constraint
     * @return
     */
    public String getProp();

    /**
     * Get the property value that is to be used in the constraint
     * @return
     */
    public Object getVal();

}


The Al-Ko GT450 450w Electric Grass Trimmer is a fantastic value strimmer, built by superb German engineering. Powered by a 450 watt motor the GT450 has a working width of 30cm, making it suitable for small to medium sized gardens, please view the GT550 if you require that extra bit of power.
The Al-Ko GT450's trimmer head rotates 180°, which means that even overhanging lawn edges can be cut accurately, for a beautifully cared for lawn right up to the edge. The telescopic aluminium shaft and the adjustable handle can be used for setting the trimmer quickly and easily in order to ensure it has the optimal length and working position. The plant protection bar and wheel make it possible to trim really accurately even under bushes or against walls, without worrying about damaging anything.
The plant protection bar and wheel make it possible to trim really accurately even under bushes or against walls, without worrying about damaging anything.
The ability to turn the trimmer head through 180° means that even overhanging lawn edges can be cut accurately – for a beautifully cared for lawn right up to the edge (GTE 450/550, GTLi 18V). The telescopic aluminium shaft and the adjustable handle can be used for setting the trimmer quickly and easily in order to ensure it has the optimal length and working position.


WASHINGTON, D.C. -- The United States Supreme Court heard oral arguments Monday morning in a seminal case that will decide the immediate future of American sports betting.
A New Jersey win would allow the state's racetracks and casinos to begin offering sports betting and potentially lay the groundwork for other states.
"This is the fear of every governor, that we'll be at the mercy of the federal government and that they'll make us pay for it," Christie said after the hearing. "It's not right."
Current U.S. Deputy Solicitor General Jeff Wall represented the Department of Justice on the side of the sports leagues and said states could comply with PASPA by complete repeal of their statutes on sports betting.
"Well, is that serious?" Roberts said. "You have no problem if there's no prohibition at all and anybody can engage in any kind of gambling they want, a 12-year-old can come into the casino and -- you're not serious about that."
"I've always been willing to talk to the sports leagues [about sports betting]," Christie said. "The sports leagues never have been willing to talk to me. They thought they were going to get rid of us a long time ago. They never met me. They have now."
The NFL and Major League Baseball declined to comment after today's arguments when reached by ESPN.
"The NBA prefers a comprehensive federal approach to legalized sports betting, as opposed to a hodgepodge of state by state laws that would create conflicting rules and regulations, customer confusion, and difficulties in enforcement," NBA spokesman Mike Bass told ESPN.
"We're going to do well," Christie predicted.
Pallone's bill, the Gaming Accountability and Modernization Enhancement Act or GAME Act, would allow states to legalize sports betting and online gambling, if appropriate consumer protections are in place.
"Today's argument before the Supreme Court showed there is a serious question as to whether PASPA violates the Constitution and whether New Jersey even violated PASPA in the first place," Pallone said in a statement. "It is clear to me that PASPA is unconstitutional. I am hopeful that the Supreme Court will decide in New Jersey's favor, and the GAME Act provides the necessary legal framework for states to move forward."


text:
Services in Fenton are closed today, 02/28/2019, due to Inclement Weather.
About The Aviary
Family Wellness Program
CaredFor App
What to Bring to Residential Treatment
The Aviary Blog
Contact The Aviary
SMART Recovery Might Be a Smart Option for Your Recovery
Feb 15, 2022 | Addiction, Recovery | 0 |
What are Your Options for Recovery
It perhaps goes without saying that Alcoholics Anonymous (AA) is the best known recovery program. Narcotics Anonymous (NA) might be a close second. In fact, when the media portrays a recovery program, it's a safe bet that it will have "anonymous" in its name and that 12 steps will be involved.
But AA and NA are not the only options for people in recovery from a substance use disorder. One alternative is SMART Recovery, a program that may have particular appeal for those who aren't completely comfortable with the religious and spiritual underpinnings of more famous programs.
Get Smart About SMART
SMART stands for Self-Management and Recovery Training. It is a science-based secular program that advocates for complete abstinence from drugs and alcohol for those in recovery. The nonprofit organization offers support groups across the country for anyone working to maintain their sobriety.
Rational emotive behavioral therapy and cognitive behavioral therapy are at the heart of the SMART Recovery program. SMART focuses on individual choices and self-reliance and so differs from Alcoholics Anonymous and other programs that encourage finding a sponsor to help you stay sober.
Four Points Instead of 12 Steps
Participants in SMART Recovery programs learn its 4-Point program and related skills, tools, and techniques that can help a person create a balanced life that supports long-term recovery. The 4 Points can be tackled in any order that suits a given individual.
Point One – Building & Maintaining Motivation to Abstain
It may seem obvious that a willingness to stay sober is central to a recovery effort. But sometimes we aren't completely clear about our priorities. SMART Recovery encourages a listing of priorities and a careful comparison of the costs and benefits of staying sober rather than using drugs or alcohol. This listing and comparison provides a rationale for sobriety that a person can recall when faced with temptation.
Point Two – Coping with Urges
Knowing and understanding individual triggers that lead to cravings is extremely important. The SMART Recovery program provides a set of techniques and tools that can be employed to overcome cravings. Methods include but are not limited to distraction techniques and gaining a firm understanding of the irrational beliefs that drive seemingly insurmountable urges.
Point Three – Managing Thoughts, Feelings, & Behaviors
A thorough examination of how and why feelings, thoughts, and behaviors lead to substance use is a key component of the program. Self-acceptance and intentional management of challenging emotions are necessary tools that can help prevent relapses.
Point Four – Living a Balanced Life
Getting and staying sober means making drastic changes to your lifestyle. In order to achieve a better balance going forward, participants in the SMART Recovery program are encouraged to create a complete inventory of the things that are important to them. The program offers guidance on setting realistic goals and planning for a future that is free from substance use.
Beyond the 4-Points – Additional Principles of SMART Recovery
The program is built around the concepts of self-reliance, self-empowerment, self-directed change, and personal accountability.
Legal medications designed to help a person combat addiction or deal with psychiatric problems are permitted.
Negative self-talk leads to negative behaviors, and so a person in recovery must learn to minimize its occurrences. Similarly, maladaptive behaviors must be recognized and overcome.
Because the program is based on science, it evolves as new research leads to better practices.
The program recognizes that those in recovery move through a variety of stages of change, which include:
Precontemplation – the state before a one is considering making a change
Contemplation – when one is considering making a change
Preparation – the stage during which one gets ready to actually make the change
Action – making the change itself
Maintenance – maintaining the new normal after a change has been made
Termination/graduation – the hypothetical stage at which the support of the program may no longer be needed
Relapse – the stage everyone in recovery is seeking to avoid but which starts the cycle of stages over if a person returns to using drugs or alcohol
Connecting with The Aviary Recovery Center Is a Smart Move
The first step toward lasting sobriety is finding a residential treatment facility that has the expertise and compassion to help you or a loved one overcome a substance use disorder. The Aviary Recovery Center is just such a place. Our capable and caring team will personalize a recovery program around each individual's specific needs and will ensure that everyone who completes rehabilitation has access to resources and options—like SMART Recovery—that can help protect their hard-won sobriety.
Are you or someone you love looking for a residential inpatient alcohol rehab in St. Louis? For more information about The Aviary Recovery Center, please contact us anytime at (888) 998-8655. We're here to help.
PreviousShake Up Your Recovery Routines with These Engaging Podcasts
NextSubstance Use Disorders Cause Disorder for the Whole Family
Rob Cline
Words Are Sometimes Worse Than Sticks and Stones
Aftercare in Addiction Treatment: Next Steps in Recovery
Bidding Goodbye to Benzos Can Be Difficult
Alcohol Awareness Month
Verify Your Benefits
Eolia, MO 63344
333 S. Kirkwood
Ste 303 (Inside PNC bank)
You Might Fool Others, But Don't Fool Yourself About a Substance Use Disorder
Jan 18, 2023 | Addiction, Alcoholism
Sobriety Is Not A Competition
Jan 8, 2023 | Recovery
Five Stages of Change Along the Road to Recovery
Dec 22, 2022 | Recovery
Do Not Waste Time Worrying About Wasting Time
The Aviary Recovery Center is accredited by The Joint Commission.
Copyright 2023 The Aviary Recovery Center|
Privacy Practices | Sitemap


text:
Title: Bash Booster

<header>Bash Booster</header>

Bash Booster is a single file library, which provides various features useful
during setup environment and preparing servers.  It is inspired by [Chef][]
and was developed to be used with [Vagrant][].  When Chef is too heavy,
use Bash Booster, because it has been written using Bash only and
**requires nothing**.

[Chef]: http://www.getchef.com/
[Vagrant]: http://vagrantup.com/

[TOC]

Quick Start
-----------

1.  Get the source code:

        :::bash
        $ hg clone ssh://hg@bitbucket.org/kr41/bash-booster bash-booster
        $ cd bash-booster

2.  Build the library file `bashbooster.sh`:

        :::bash
        $ ./build.sh

3.  Use it!

A traditional "Hello World" script looks like this (you can find it
in `helloworld.sh`):

    #!/bin/bash

    # Remove undesirable side effects of CDPATH variable
    unset CDPATH
    # Change current working directory to the directory contains this script
    cd "$( dirname "${BASH_SOURCE[0]}" )"

    # Initialize Bash Booster
    source bashbooster.sh

    # Log message with log level "INFO"
    bb-log-info "Hello World"

It just prints a line to `stderr`:

    helloworld.sh [INFO] Hello world

More interesting example, which demonstrates almost all features of
Bash Booster you can find at `example/bootstrap.sh`.  This script is used
for provisioning virtual machines managed by Vagrant.  A `Vagrantfile` placed
at the root of sources sets up three virtual machines: ubuntu, centos, and
debian.  Bootstrap script installs Nginx web-server, builds Bash Booster
documentation, and places compiled HTML into web-root directory. Just run:

    :::bash
    $ vagrant up

...and have some coffee, then visit:

*   <http://localhost:8081>—Ubuntu machine
*   <http://localhost:8082>—CentOS machine
*   <http://localhost:8083>—Debian machine

If you run `vagrant provision` again, script will finish almost immediately.
It happens, because it does not do unnecessary job: all packages installed,
web-server configured, HTML compiled.

Philosophy
----------

The main goal of Bash Booster is ability to write [idempotent][Idempotence]
scripts.  For instance, you have to manage developer's virtual machine using
Ubuntu.  At the start of your project you just need a web-server installed
and nothing more.  But requirements may be changed in future.  So you place
`bootstrap.sh` script at the root of your project sources:

    #!/bin/bash

    apt-get update
    apt-get install nginx

Each time you pull the code from repository, you have to run this script
on the virtual machine, because someone from you team might update the
requirements and add some other packages to install.  I think, you will
automate this, so the script will run at VM start up time.  And at most of the
time it will just make you to wait for `apt-get update` command.
It is annoying.

Once you will think about replacing the tool.  You may think about Chef.
To run it you will have to install Ruby.  But Ruby at the Ubuntu repositories
has an ancient version, which does not support Chef.  So you need to install
RVM and...

Wait, what the heck? You was just going to install Nginx, why do you need all
this stuff?  The answer is: you don't.  You need a set of handy Bash functions,
which requires nothing, but only Bash, which already included into each Linux
distribution.  So Bash Booster is such set.  The script above can look like
this:

    #!/bin/bash

    unset CDPATH
    cd "$( dirname "${BASH_SOURCE[0]}" )"

    source bashbooster.sh

    # The command bellow will check whether "nginx" package already installed.
    # If it doesn't, it will install it.
    # And it will also update Apt cache, before installation.
    # If Nginx already installed, it will do nothing.
    bb-apt-install nginx

[Idempotence]: http://en.wikipedia.org/wiki/Idempotence

Code Organization
-----------------

Bash Booster comes with a set of modules.  These modules are merged to a single
file (by `build.sh` script) to be easy to use.  But their sources are placed at
`source` directory to be easy to read, because source code is the best
documentation.  Each module has a numeric index, which indicates inclusion
order.  For instance, workspace management module
[`10_workspace.sh`](#workspace){: .code } will be included before events
management one [`20_event.sh`](#event){: .code }.

Each function has the following name format: `bb-module-func`, where `bb` is
a common function prefix (means "Bash Booster"), `module` is module name,
`func` is function name.  For example, function
[`bb-event-on`](#bb-event-on){: .code } (subscribes handler on event) from
[`event`](#event){: .code } module. Some functions does not contain `func` part
of the name.  For example, [`bb-exit`](#bb-exit){: .code } function (terminates
script with specified exit code and logs exit message) from module
[`exit`](#exit){: .code }.  Boolean functions end in Ruby style by question mark.
For example, [`bb-yum?`](#bb-yum){: .code } function returns `0` if Yum
(the default package manager used in CentOS) is available and `1` otherwise.

There is special function names: `init` and `cleanup`.  They are used for module
initialization and cleaning up its resources.  You do not need to use these
functions in your scripts.  They are called automatically.  So their description
are not included into this document.

Each variable has a format, which is the similar to the function names:
`BB_MODULE_VAR`.

There is also a special module `init`, which initialize Bash Booster
and sets up a trap on `EXIT` signal.  So **do not use** in your script:

    :::bash
    trap my-cleanup-command EXIT

It will break cleanup process.  [Subscribe](#bb-event-on) on `bb-cleanup` event
instead, it will be fired just before exit:

    :::bash
    bb-event-on bb-cleanup my-cleanup-command

Module Description
------------------

- [var](#var)
- [log](#log)
- [exit](#exit)
- [workspace](#workspace)
- [template](#template)
- [properties](#properties)
- [event](#event)
- [download](#download)
- [flag](#flag)
- [sync](#sync)
- [apt](#apt)
- [yum](#yum)

### var

The module contains a single function for management undefined variables

**bb-var** VAR_NAME DEFAULT_VALUE {: #bb-var }
:   The function will set up variable `VAR_NAME` to `DEFAULT_VALUE`, if variable
    is undefined.  It is used for configurable variables.  For example:

        #!/bin/bash

        unset CDPATH
        cd "$( dirname "${BASH_SOURCE[0]}" )"

        # Change default location of workspace directory
        BB_WORKSPACE="/var/myworkspace"
        source bashbooster.sh

    You can use this function to configure your own scripts using environment
    variables.  For instance:

        $ export MY_VAR="Special Value"
        $ ./my_script.sh

    Script `my_script.sh`:

        #!/bin/bash

        unset CDPATH
        cd "$( dirname "${BASH_SOURCE[0]}" )"

        source bashbooster.sh
        bb-var MY_VAR "Default Value"

        # Do something useful

### log

The module provides functions to log messages to `stderr`.

**BB_LOG_LEVEL** {: #BB_LOG_LEVEL }
:   Log verbosity level, default is `INFO`.  This variable can be set to
    numeric or string values, i.e. 1–4, `DEBUG`, `INFO`, `WARNING`, or `ERROR`.
    Current log level can be gotten using functions
    [`bb-log-level-code`](#bb-log-level-code){: .code } and
    [`bb-log-level-name`](#bb-log-level-name){: .code }.

** BB_LOG_PREFIX ** {: #BB_LOG_PREFIX }
:   Log prefix, default is `"$( basename "$0" )"`, i.e. script name.

**BB_LOG_TIME** {: #BB_LOG_TIME }
:   Command to get date and time of log message, default is
    `date --rfc-3339=seconds`.

**BB_LOG_FORMAT** {: #BB_LOG_FORMAT }
:   Log string format, default is `'${PREFIX} [${LEVEL}] ${MESSAGE}'`.
    The following variables can be used in log format:

    *   `LEVEL_CODE`—Log level numeric value
    *   `LEVEL`—Log level text value
    *   `MESSAGE`—Message to log
    *   `PREFIX`—Log message prefix, usually is
        [`BB_LOG_PREFIX`](#BB_LOG_PREFIX){: .code}.  If logger is called within
        Bash Booster function, prefix will be equal to its module name.
    *   `TIME`—Log time, the output of [`BB_LOG_TIME`](#BB_LOG_TIME){: .code}
        command.
    *   `COLOR`—Escape code to start colored output
    *   `NOCOLOR`—Escape code to stop colored output

**BB_LOG_USE_COLOR** {: #BB_USE_COLOR }
:   Boolean value, default is `false`.  If set to `true` before Bash Booster
    initialization, [`BB_LOG_FORMAT`](#BB_LOG_FORMAT){: .code } will be wrapped
    by `COLOR` and `NOCOLOR` values, so that log output will be colored according
    to log level:

    *   `DEBUG`—gray
    *   `INFO`—green
    *   `WARNING`—orange
    *   `ERROR`—red

    Changing this variable after initialization will take no effect.

**bb-log-level-code** {: #bb-log-level-code }
:   Prints to `stdout` current log level code, i.e. 1–4.

**bb-log-level-name** {: #bb-log-level-name }
:   Prints to `stdout` current log level name, i.e. `DEBUG`, `INFO`, `WARNING`,
    or `ERROR`.

**bb-log-debug** MESSAGE {: #bb-log-debug }
:   Logs `MESSAGE` with `DEBUG` level.

**bb-log-info** MESSAGE {: #bb-log-info }
:   Logs `MESSAGE` with `INFO` level.

**bb-log-warning** MESSAGE {: #bb-log-warning }
:   Logs `MESSAGE` with `WARNING` level.

**bb-log-error** MESSAGE {: #bb-log-error }
:   Logs `MESSAGE` with `ERROR` level.

### exit

**bb-exit** CODE MSG {: #bb-exit }
:   Terminates script with status `CODE` and logs the message `MSG`.
    If `CODE` is equal to `0`, message will be logged with `INFO` level.
    If `CODE` is non-zero, message will be logged with `ERROR` level.
    Additionally, it will log call stack with `DEBUG` level.  Usage:

        :::bash
        bb-exit 1 "Something went wrong"

    or:

        :::bash
        bb-exit 0 "Success"

### workspace

The module manages workspace directory.  It provides single variable for
your scripts.

**BB_WORKSPACE** {: #BB_WORKSPACE }
:   The variable stores full path to the workspace directory.  The workspace
    directory is created on startup and deleted (if it is empty) on cleanup
    automatically.

    The default value is `.bb-workspace`, which means the workspace will be
    created in the same directory, where caller script is stored.  To override
    default value use:

        #!/bin/bash

        unset CDPATH
        cd "$( dirname "${BASH_SOURCE[0]}" )"

        # Change default location of workspace directory
        BB_WORKSPACE="/var/myworkspace"
        source bashbooster.sh

    You can use relative path also.  It will be unfolded to full one after
    initialization.

    It is an appropriate place to store files, which are used by your script.
    Bash Booster itself uses this directory to store: [temp files](#tmp) at
    `$BB_WORKSPACE/tmp/`, [downloads](#download) at `$BB_WORKSPACE/download/`,
    and [flags](#flag) at `$BB_WORKSPACE/flag/`.

### tmp

The module manages temporary files and directories.  All files and directories
created by the following functions will be automatically deleted on exiting
script.

**bb-tmp-file** {: #bb-tmp-file }
:   Creates temporary file:

        :::bash
        MY_TMP_FILE="$( bb-tmp-file )"
        echo "Some stuff" > "$MY_TMP_FILE"

**bb-tmp-dir** {: #bb-tmp-dir }
:   Creates temporary directory:

        :::bash
        MY_TMP_DIR="$( bb-tmp-dir )"
        touch "$MY_TMP_DIR/file1"
        touch "$MY_TMP_DIR/file2"

### template

Provides stupid and simple Bash-based templates handling.  It is useful for
variable substitution only, but in the most cases it is enough.  If you are
looking for something more powerful, you will have to install it by your own.

**bb-template** TEMPLATE_FILE {: bb-template }
:   Renders template from `TEMPLATE_FILE` to `stdout` using all defined
    variables.

    Template file `$BB_WORSPACE/example.bbt`:

        x=$(( A + B ))
        msg='${MESSAGE}'

    Script:

        :::bash
        A=1
        B=2
        MESSAGE='Hello World'
        bb-template "$BB_WORSPACE/example.bbt" > "$BB_WORSPACE/example.txt"

    Result output file `$BB_WORKSPACE/example.txt`:

        x=3
        msg='Hello World'

### properties

The module allows to read properties-like configuration files,
as [defined](http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html#load(java.io.Reader))
by Java Properties class.

**bb-properties-read** FILE_NAME VAR_PREFIX {: #bb-properties-read }
:   The function reads `FILE_NAME` and parses it.
    The lines like `key=value` or `key: value` or even `key := value`
    are converted into Bash variables.  The optional `VAR_PREFIX` is prepended
    to the key name, so if prefix is `p_` `key=value` is converted to `p_key`
    variable.  For example, let `my.properties` file contains:

        param1 = value1
        param2 = long string

    And the script can read it as the following:

        :::bash
        bb-properties-read "my.properties" "conf_"
        echo "$conf_param1"     # prints "value1"
        echo "$conf_param2"     # prints "long string"

    Note that characters which cannot be in a Bash variable name are replaced
    with underscore.  So `param.sub=value` will be visible as `param_sub` variable.

    If the same key appears multiple times, only the last value will be visible.

    If the file doesn't exist or cannot be read, the function prints
    warning and does nothing.

    The escapes in the key name (like `k\:e\=y`) are _not supported_,
    the first `:` or `=` is treated as the end of the key name.

    The multiline values (where the endline character is escaped by backslash)
    are _not supported_ too.

### event

The module provides functions to work with events.  Typical use case is to
make some job conditionally.  For example, the following code pulls application
sources from repository, rebuilds one, and reloads application server:

    :::bash

    reload-server-handler() {
        bb-log-info "Reloading server"
        # ...
    }
    rebuild-app-handler() {
        bb-log-info "Rebuilding application"
        # ...
        bb-event-delay reload-server
    }

    bb-event-on reload-server reload-server-handler
    bb-event-on rebuild-app rebuild-app-handler

    cd "$PATH_TO_REPOSITORY"
    git pull
    bb-sync-dir "$BB_WORKSPACE/sources" "$PATH_TO_REPOSITORY/sources" rebuild-app
    bb-sync-file "/etc/server/config" "$PATH_TO_REPOSITORY/conf/server" reload-server

If source code of application is changed, it will rebuild application and
reload server.  If server configuration is changed, it will just reload server.
Learn mode about functions [`bb-sync-dir`](#bb-sync-dir){: .code } and
[`bb-sync-file`](#bb-sync-file){: .code } in [`sync`](#sync){: .code } module
description.

There is also a special event `bb-cleanup`.  This event fires automatically
just before script termination.

**bb-event-on** EVENT HANDLER {: #bb-event-on }
:   Subscribes `HANDLER` on `EVENT`.  `HANDLER` will be subscribed only once,
    so the second call with the same arguments will take no effect.

**bb-event-off** EVENT HANDLER {: #bb-event-off }
:   Removes `HANDLER` from `EVENT`.

**bb-event-fire** EVENT [ARGUMENTS...] {: #bb-event-fire }
:   Fires `EVENT`.  It will call all `EVENT` handlers with `ARGUMENTS` (if any)
    immediately.  This function is not very useful in your scripts,
    it is mostly for internal usage.

**bb-event-delay** EVENT [ARGUMENTS...] {: #bb-event-delay }
:   Delays `EVENT` to the end of script.  It will call all `EVENT` handlers
    with `ARGUMENTS` during the cleanup process.  Delayed event handlers can
    call this function too.

### download

The module manages download directory and its contents.

**bb-download** URL TARGET {: #bb-download }
:   Downloads file from `URL` and writes it to `$BB_WORKSPACE/download/$TARGET`.
    The second argument `TARGET` can be omitted.  In that case it will be
    detected using `basename "$URL"` command.  If `TARGET` file already exists,
    the function will not download it again.  Prints full path to downloaded
    file into `stdout`.  Usage:

        MY_FILE="$( bb-download http://example.com/my_file.txt )"
        # "$MY_FILE" == "$BB_WORKSPACE/download/my_file.txt"

**bb-download-clean** {: #bb-download-clean }
:   Removes all downloaded files, i.e. deletes directory
    `$BB_WORKSPACE/download`.

### flag

Some operations are not idempotent.  And you need to save information,
that some action has been done.  This module provides functions for such use
cases.

**bb-flag?** FLAG {: #bb-flag }
:   Returns `0` if `FLAG` is set, and `1` otherwise.  Usage:

        :::bash
        if ! bb-flag? somestate
        then
            # Do something useful
            bb-flag-set somestate
        fi

        if bb-flag? someotherstate
        then
            # Do something useful again
            bb-flag-unset someotherstate
        fi

**bb-flag-set** FLAG {: #bb-flag-set }
:   Sets up `FLAG`.

**bb-flag-unset** FLAG {: #bb-flag-unset }
:   Removes `FLAG`.

**bb-flag-clean**  {: #bb-flag-clean }
:   Removes all flags.

### sync

The module provides functions for synchronization files and directories.

**bb-sync-file** DST_FILE SRC_FILE EVENT [ARGUMENTS...] {: #bb-sync-file }
:   Synchronizes contents of `DST_FILE` with `SRC_FILE`.  If `DST_FILE` is changed
    it will [delay](#bb-event-delay) `EVENT` with `ARGUMENTS`.  Usage:

        :::bash
        bb-event-on restart-server "service nginx restart"

        bb-sync-file "/etc/nginx/sites-available/default" "my_site.conf" restart-server

    Each time `my_site.conf` is changed, the script above will update Nginx
    configuration and restart it.

**bb-sync-dir** DST_DIR SRC_DIR EVENT [ARGUMENTS...] {: #bb-sync-dir }
:   Synchronizes contents of `DST_DIR` with `SRC_DIR`.  If `DST_DIR` is changed
    it will [delay](#bb-event-delay) `EVENT` with `ARGUMENTS`.

### apt

The module provides functions to work with [Apt][] package manager.

**bb-apt?** {: #bb-apt }
:   Checks if Apt is available. Usage:

        :::bash
        if bb-apt?
        then
            bb-apt-install somepackage
        fi

**bb-apt-repo?** REPOSITORY {: #bb-apt-repo }
:   Checks if `REPOSITORY` is installed.  Usage:

        :::bash
        REPO='http://example.com/repo/ubuntu/'
        if bb-apt-repo? $REPO
        then
            cp /etc/apt/sources.list /etc/apt/sources.list.backup
            echo "deb $REPO precise main" >> /etc/apt/sources.list
            echo "deb-src $REPO precise main" >> /etc/apt/sources.list
        fi

**bb-apt-package?** PACKAGE {: #bb-apt-package }
:   Checks if `PACKAGE` is installed.

**bb-apt-update** {: #bb-apt-update }
:   Updates Apt cache.  It sets up variable `BB_APT_UPDATED` to `true`.
    So the second call of this function does nothing.

**bb-apt-install** PACKAGE [PACKAGE...] {: #bb-apt-install }
:   Installs `PACKAGE` if it is not already installed.  It uses
    [`bb-apt-package?`](#bb-apt-package){: .code } for checking `PACKAGE`
    installation status, and [`bb-apt-update`](#bb-apt-update){: .code }
    for updating Apt cache before installation.

    For each installed package an event `bb-package-installed` will be fired
    by [`bb-event-fire`](#bb-event-fire) with the package name as an argument.
    So that you will be able to make some post installation actions.
    For instance, install [MySQL on Ubuntu without asking a password](http://stackoverflow.com/a/7740393/3182064):

        :::bash

        bb-event-on 'bb-package-installed' 'post-install'
        post-install() {
            local PACKAGE="$1"
            case "$PACKAGE" in
                "mysql-server")
                    # Setup MySQL root password
                    mysqladmin -u root password 'myRooT_pa$$w0rd'
                    ;;
            esac
        }
        # Do not ask for MySQL root password during installation
        export DEBIAN_FRONTEND=noninteractive
        bb-apt-install mysql-server

    If package is unable to be installed, script will be terminated with error,
    i.e. [`bb-exit`](#bb-exit) will be called.

[Apt]: https://wiki.debian.org/Apt

### yum

The module provides functions to work with [Yum][] package manager.

**bb-yum?** {: #bb-yum }
:   Checks if Yum is available. Usage:

        :::bash
        if bb-yum?
        then
            bb-yum-install somepackage
        fi

**bb-yum-repo?** REPOSITORY {: #bb-yum-repo }
:   Checks if `REPOSITORY` repository is installed.  Usage:

        :::bash
        if bb-yum-repo? somerepo
        then
            rpm -ivh "http://example.com/repo/centos/somerepo.noarch.rpm"
        fi

**bb-yum-package?** PACKAGE {: #bb-yum-package }
:   Checks if `PACKAGE` is installed.

**bb-yum-update** {: #bb-yum-update }
:   Updates Yum cache.  It sets up variable `BB_YUM_UPDATED` to `true`.
    So the second call of this function does nothing.

**bb-yum-install** PACKAGE [PACKAGE...] {: #bb-yum-install }
:   Installs `PACKAGE` if it is not already installed.  It uses
    [`bb-yum-package?`](#bb-yum-package){: .code } for checking `PACKAGE`
    installation status, and [`bb-yum-update`](#bb-yum-update){: .code }
    for updating Yum cache before installation.

    For each installed package an event `bb-package-installed` will be fired
    by [`bb-event-fire`](#bb-event-fire) with the package name as an argument.
    So that you will be able to make some post installation actions.
    For instance, [setup PostgreSQL on CentOS](http://www.postgresql.org/download/linux/redhat/):

        :::bash

        bb-event-on 'bb-package-installed' 'post-install'
        post-install() {
            local PACKAGE="$1"
            case "$PACKAGE" in
                "postgresql-9.3")
                    chkconfig postgresql-9.3 on
                    service postgresql-9.3 initdb
                    service postgresql-9.3 start
                    ;;
            esac
        }
        bb-yum-install postgresql93-server

    If package is unable to be installed, script will be terminated with error,
    i.e. [`bb-exit`](#bb-exit) will be called.

[Yum]: http://yum.baseurl.org/

Contribution
------------

Bug reports and pull requests are welcome on
[BitBucket](https://bitbucket.org/kr41/bash-booster/).

The source code is covered by unit tests where it is possible.  If you are
going to add some new features, try to keep them covered too.  Use the
following command to run tests:

    :::bash
    $ ./test.sh

Tests themselves are placed into `unit tests` directory.  Yes, with the space
char in the name.  It helps to catch stupid errors with unquoted variables.

License
-------

The code is licensed under the terms of BSD 2-Clause license.  The full text of
the license can be found at the root of the sources.


Find the cheapest and best loans that could be available if you need to consolidate your debts.
Notes: Homeowners only as this loan will be secured against your property.
Our team of experts have chosen those secured loans they believe to be Best Buys. All rates subject to change without notice. Please check all rates and terms before investing or borrowing.