Iceland has appointed Paul Foley as its first international business director, who will return to the retailer after 23 years to drive the grocer's export business.
Foley has already joined the grocer, coming from his own consultancy business. He will join Iceland full time in January, and be responsible for the ITEX export business and it new retail operations in the Czech Republic.
Foley has previously worked for Iceland, when he was a management trainee for Bejam which was acquired by Iceland in 1989. He then became Iceland's Regional Manager for the South East and helped integrate the two companies. He later worked for Aldi before setting up his own consultancy.


> Are there any subscription or registration fees?
> How can I find your rates and access numbers?
> Can I use Simply Dial from my mobile?
> Can I use Simply Dial access number from a payphone?
> How will I know exact rate for my destination?
> Are the Simply Dial numbers charged the same by all landline providers?
Q. Are there any subscription or registration fees?
A. No! Simply Dial is immediately accessible from all land lines and mobiles without any subscription or registration fees. You can make cheap international long distance calls at any time 24/7.
Q. How can I find your rates and access numbers?
A. We offer very competitive rates to most International countries - for latest rates - click: Simply Dial.
Q. Can I use Simply Dial from my mobile?
A. Yes. But please check the rates for 08xx and 09xx numbers with your mobile provider.
Q. Can I use Simply Dial access number from a payphone?
A. Yes. But 080xx and 09xx numbers will be charged at a higher rate from payphones.
Q. How will I know exact rate for my destination?
A. Call rates are announced before each connection - this way you are always in control of your costs.
Q. Are the Simply Dial numbers charged the same by all landline providers?
A. The rates mentioned for the access numbers are as charged by BT. The charges for customers from other service providers might vary a little and we always recommend checking this with your provider in advance.
A. Please ask bill payer's permission. All rates are quoted per minute, fully inclusive of vat. Minimum call charge 8p via BT. Cost of calls if using Simply-Fone CPS or 1689 service charged without any connection charges. Cost of calls from non BT operators & mobiles may vary. Check with your operator. Charges apply from the moment of connection to the service. For up-to-date pricing information 24/7, please call: 0870 041 4333. All rates are correct as of 14 March 2019 & may be subject to change without prior notice. The service is provided by Simply Fone Limited.


The quintessential English cheese – there are numerous stories, sonnets and songs devoted to its origins that go back at least to the early 18th century, but it's probably much older.
Stilton is the cheese associated with special occasions, fine dining and celebrations, but it should not be overlooked in every day recipes.The only British cheese to have a Certification Trade mark and an EU protected name, Stilton can only be produced in Derbyshire, Nottinghamshire and Leicestershire and not alas- in Stilton, the town the cheese is named after. It's made only from locally grown and produced pasteurised cows' milk.
The cheese's tall cylindrical shape adds to its sense of grandeur and the thick crust it forms naturally gives way to a distinctive pattern of blue veins that magically radiate out from the centre of the cheese.
Although its smell is not to everyone's taste, its taste is soft, creamy and complex, making it a perfect dessert cheese.
If you have any left over, it adds a wonderful flavour to sauces, salads and dressings and is one of the few cheeses that freezes wonderfully well. Always wrap in parchment and seal in plastic first.


Zintuki is the younger sister of Ninkasi, mythologically and beerologically. She was the Goddess of food and dining, laying on feasts and aptly eponymous on this beer as it pairs so perfectly with food. Blending is what we do best at Wild Beer with Zintuki being a blend of both our celebration beer - Ninkasi, and our sour spontaneously fermented farmhouse ale - Somerset Wild.


*WSDA requires that the animal is sold live. Live weight of sheep is approx. 80-120 lbs and includes head, hooves, blood, bone, cartilege, fat, offal, etc. Hanging weight (approx. 40-80 lbs) is determined after the head, hooves, blood and offal have been removed. Boxed weight is slightly less than hanging weight due to bone and trim reduction during butchering. While all our animals are Certified Organic, WSDA processing is non-organic; call with questions.


Algeria are aiming for their second Olympic appearance to follow-up on their lone Olympic stint in the Barcelona 1992 Olympic Games, where they finished in 12th place. The Algerian men's national team is a consistent top four contender in the African Championship, which they have won in 1991 and 1993. In the continental qualification for Rio 2016, Algeria finished third, behind winners Egypt and second-placers Tunisia.The Algerian men have competed in the FIVB Volleyball Men's World Championship in the 1994 and 1998 editions; when they had their best ever finish at 13th and 22nd place, respectively. Algeria only appeared once in the FIVB Volleyball Men's World Cup in 1991, finishing in the 9th position.
Mouloud Ikhedji started playing in 1978 at MBB club, then played for Rija for two years before a wrist injury ended his playing career in 1988. When he finished his college degree, he coached professionally in the club level, with teams El Kseur and MBB from 1996 to 1999. He joined the national team as an assistant coach of the men's team that played in the 1998 World Championship, Arab and African Championships, Pan-Arab Games and the Mediterranean Games among others. In March 2006, he took the reins of the women's national team, which he steered to a gold medal finish in the African Games in 2007 and a silver place finish in the African Championship in 2009. Among his best coaching achievements is Algeria's qualification to the Beijing 2008 Olympic Games and the 2010 World Championship. After which, he resigned from the national team and returned to coaching club volleyball at MBB in 2011. Four years later, he was appointed as coach of the men's national team after being an assistant a year earlier.


The semifinals are next week and I fear that it may be the end of the line for Tommy and Peta. The other couples are dancing and scoring so much higher than them that it would indeed be a personality contest instead of a dancing competition. In fact, the leaderboard this week was just the same as last week. We shall see. I just hope the quality of dance rises to the same level that it was tonight — it was sensational! See you next week — keep dancing. Remaining celebrities, pros and tonight's total scores.
Pat Conroy, the beloved author of "The Great Santini" and "The Prince of Tides" and other best-sellers who drew upon his bruising childhood and the vistas of South Carolina and became one of the country's most compelling and popular storytellers, died Friday evening, He was 70, Conroy, who announced last month that he had pancreatic cancer, died at home among family and loved ones in Beaufort, South Carolina, according to his publisher, The heavy-set author had battled other health problems in recent years, ballerina on pointe, 24k gold leaf, ballet shoes painting, framed artwork, art including diabetes, high blood pressure and a failing liver..
The gallery, in the Lesher Center for the Arts, is open from noon to 5 p.m. Tuesday through Sunday, and from 6 to 8 p.m. on dates of evening performances at the Lesher. "Peaceable Kingdom" invites prominent curators to assemble a collection of innovative and appealing works by national artists. This exhibition will explore the presence of animals in the visual arts, and how they appear as metaphors, totems, objects of fear and sources of emotional attachment and affection. This juried exhibition will encourage artists to meditate on the complex and diverse relationships between humans and animals, addressing such issues as antagonism, admiration, attachment, and even the politically charged issue of animal rights.
Quick note about fires: Due to the drought, wildfires continue to rage across California, scorching hundreds of thousands of acres, The East Bay Regional Park District's ballerina on pointe, 24k gold leaf, ballet shoes painting, framed artwork, art Fire Department closely monitors our 118,000 acres of open space, especially after lightning storms, and works closely with other fire agencies in the East Bay and statewide, If you see smoke, don't hesitate to report it, and take precautions when enjoying the outdoors, With everyone's cooperation, we hope to escape this fire season with relatively little damage, Thanks in advance from the Park District's fire crews..


Randall, pictured here about to ruin everything.
Published March 20, 2019 at 3:46 a.m.
Oh, Randall. You used to be the shining light of "This Is Us." We've cried with you. We've laughed with you. We've put up with your weekly wet-eyed monologues about, I don't know, a kumquat at the grocery store that reminded you of how strange and unpredictable life can be. We even sat through your political campaign storyline – and politely applauded when you even won the damn thing.
But I think there may be no saving you after "Don't Take My Sunshine Away." Or at least there's certainly no saving you and Beth.
Tuesday night's very busy, very eventful episode (directed by Milwaukee native George Tillman Jr.!) was all about commitments and relationships at the breaking point – and Randall broke this week. A whole season's worth of simmering tensions officially boiled over Tuesday night, and I don't think Randall's going to be able to clean it up. Well, considering we've seen the future and it looks very grey and very sad and very separated, I think we KNOW he's not going to be able to clean it up.
After a week or two of glancing nervously at their color-coordinated mess of a schedule, Randall and Beth are now full submerged in their busy lives. Randall's running around from interview to interview, packing school bags and reading binders of dense city planning information, while Beth's finally off pursuing her lifelong dream of teaching dance – and she even has a recital coming up. Oh boy, that can't be good. If there's one thing growing up with '80s and '90s television and movies taught me, it's that if there's an important recital coming up, that specially reserved seat ain't getting filled. It certainly doesn't make me feel better about things that the song on the soundtrack keeps ominously chiming in with, "It's the calm before the storm ... "
Thankfully, in defiance of that song, Randall (and "This Is Us") avoids being the most cliche thing of all time and shows up for Beth's recital, exhausted but supportive. Though he counters her recital with a big dinner the next night – one with a big city head honcho that could get him on a board that he needs to get on. And judging by Randall's dead wide eyes (his character may have a rough week, but Sterling K. Brown has a strong one, hitting a lot of these desperate notes just right) when he's asking Beth to come along to help make a good impression, he's not so much asking as he is pleading. It works, as even though Beth also has a big opportunity that night, with the head of the school taking teachers out for drinks to discuss the studio's future, she says she'll be there for Randall.
Or at least that's what she says, as Randall is stuck sitting outside the government official's house, staring at the clock and his phone wondering how many times is too many to call. And so instead of figuring that she's stuck in traffic or that maybe something bad like an accident happened or there was an emergency with one of the kids, his mind leaps to making a bad decision. No, that's not quite right. He makes an awful, no-good, poo-poo, miserable decision: He leaves a voicemail for Beth, spewing venom and pent-up anger and a whole bunch of demeaning stuff about how she's "immature" and that "she needs to grow up" – in general, things that you really shouldn't say about your significant other, and definitely not on a recording device.
And lo, she didn't even end up stiffing him at all. Eventually she does indeed arrive to the dinner, explaining that she got caught in terrible traffic thanks to an accident – not great when it's already a long drive across town – and her phone died on the way there. Gulp, Randall. Brown's face through Beth's arrival and explanation, watching his brain immediately go into anxious "how do I make that voicemail disappear?" mode, is a real treat, some bitter laughs as the audience chokes down this tense night – which speaking of, there's actual pressure in this storyline, something last week's attempted pressure cooker episode in the waiting room failed to build and sustain. And though he tries to find a way out of this hole he's dug himself into, it seems all too obvious from Beth's reactions, and lack thereof to his hand, that her phone was alive enough to hear SOMETHING.
While Randall and Beth seem like they may be at an end, Kate and Toby are off celebrating new life – or at least trying. While Kate is singing young Jack songs and constantly by his side, Toby is absolutely terrified for their very small son, who can't even cry thanks to all of the tubes keeping him alive. He eventually reaches his own breaking point as the doctors prepare a needle – and, of course, not just a needle but a massive, Soul Cailbur-sized one – for Jack and he just can't be there for it.
Stuck in the waiting room, however, he has a very nice, and somewhat peculiar, heart-to-heart with a fellow NICU dad, bonding over their newborns fighting for their lives – and bonding over the macabre sensation of feeling comforted by knowing how rough others have it. In the end, while it may be true "women are better" at natural maternal instincts, Toby realizes that's no excuse for not being there when Kate and his newborn son need him. They've made this commitment; he can't back out now that it's hard. So he returns and apologizes to much rejoicing – even more so when we get a moment of Toby holding his son for the first time, and truly smiling for the first time in what's felt like eons. I'll admit: After spending an entire episode literally waiting and focused on Toby and Kate, it feels a little disappointing they're basically wedged into a packed episode of material. I would've loved more time with these two in this massive moment – but that doesn't make that final moment with Toby and Jack feel any less hard-earned and heart-warming.
And then there's Kevin – like I said, busy episode – who's now in couples counseling with Zoe after his relapse these past two episodes, as well as his lie about his bottle of "water" at the hospital. Their session goes fine enough, though Kevin's charming deflections might be too glib for Zoe. But that's not what's REALLY bothering her from their chat. What's actually bothering her is something Kevin said about having kids some day – a dream that Zoe definitely does not share. And while Kevin doesn't seem like he's actually thought about it much, more talking about it like just something people do rather than a real personally-held commitment, Zoe has – and she needs him to decide if that's something he's going to want. Because if so, this relationship is doomed to collapse.
So he's going to need to think somewhere – and as fate would have it, he just happens to be down the street from Sophie's apartment. Oh no. This seems like a bad choice. And she's now even there. THIS SEEMS LIKE A BAD CHOICE. Thankfully, she's engaged, so, as Kevin says, "Then a coffee should be safe." The two chat about her fiancé – but this still being Kevin, of course it also turns to his life and dramas. And she drops a little truth bomb on him: He's never really had to make a choice. He's always been able to charm his way into what he's wanted, whether it be getting a first kiss from Sophie while also dragging her to toilet paper a teacher's office at the school dance, or even just the way he talked to the couples therapist and, as Zoe notes, gets you to want to smile despite everything. But now it's not on his charm; it's on him to make a commitment to something.
It's cute seeing Jack and Kevin behave like total father and son, as well as watching Jack and Becca share a dance (leaving no room for Jesus, I noticed; what irresponsible chaperones), but I'm not sure the flashback offered much more that – especially in an episode that DID have so much more than that. But maybe some salve is necessary in such a heavy episode.
And things seem like they're going to get heavier too, at least for Randall and Beth. The bedroom door may be closed, but the floodgates are about to open – angrily and loudly.


text:
Q: Performance issue -  LRUMap() in AjaxStateHolder in JSF? I am using SUN JSF1.2 and Richfaces 3.3.1 in our application. As apart of performance tuning added the below parameters in the web.xml
<context-param>
   <param-name>com.sun.faces.numberOfViewsInSession</param-name>
   <param-value>2</param-value>
</context-param>
<context-param>
   <param-name>com.sun.faces.numberOfLogicalViews</param-name>
   <param-value>2</param-value>
</context-param>

Still when i inspected the session object i saw that org.ajax4jsf.application.AjaxStateHolder was consuming almost 85%( Almost 10 MB) of the session memory. Even i tried to get the AjaxStateHolder object from session but not able to delete all the cached session.
I have searched the web, it was mentioned that is a problem exist in Richfaces.
Is there anyway to clear all those cached views from the LRMap.

A: I had a problem similar to what's stated here:
I needed to make some custom modifications for IE9 and adding tooltips to the calendar component, so I grabbed the source and modified protected static final int DEFAULT_NUMBER_OF_VIEWS = 16; to equal a value of 1.
I built the project using Maven 2.  Maven 3 will not work.
Changing all the places where that constant is declared fixed the problem for me.

redpajama_set_name: RedPajamaStackExchange


KARACHI - The three-day GTex International B2B Textile Machinery Brand Expo concluded at Expo Centre on Sunday with $18 million matured deals.
Sindh Minister for Transport Syed Nasir Hussain Shah was chief guest at the closing ceremony of the event, which was organised by Global Enterprise. He visited stalls and interacted with foreign and local exhibitors. Global Enterprise CEO Mujib R Siddiqi, Director Sohail Aziz, Ghousia General Manager Zohaib Siddiqi and Naeemuddin of United Machinery were also present.
Talking to the media on this occasion, Syed Nasir Hussain Shah said the textile sector was being ignored in Pakistan for the last many years. He said the federal government should immediately support this sector. "Textile exports in 2013 stood at $25 billion. They should have been increased, but they are in decline. Pakistani exporters are unable to compete in the international market due to heavy electricity bills here. Such expos should be held on a regular basis to boost business opportunities," he said.
He said the FBR should resolve the refund issue facing the exporters. Exporters were waiting for about Rs250 billion refund amount, he said.
Responding to a question about indecent remarks of a minister against a woman lawmaker in the Sindh Assembly a few days ago, Syed Nasir Hussain Shah showed his dislike for the incident and said that PPP Chairman Bilawal Bhutto Zardari had already taken action on it. He said that a show-cause notice had been issued to the member of the provincial assembly. He said the woman MPA was equally respectable and such an incident should not occur in future.
Referring to Karachi Mayor Wasim Akhtar's allegations against the Sindh government, Nasir Hussain Shah said there was no truth in statements that the mayor had no powers. "He has many powers and should utilise these powers first. This is not true that the Sindh government is not supportive," he said.
He said, "We want to keep a balance of power. In the past, a large number of people, including criminals, were given jobs through abuse of power." He said that Mayor Wasim Akhtar was very friendly and the government of Sindh supported him and his team. "We are providing Rs50 million every month. All development schemes are being implemented under the provincial ADP. KMC has just to look after water and cleanliness needs of the city," the transport minister said.
Nasir Hussain Shah later visited EPZA Stall. An EPZA officer briefed him about the purpose of launch of the KEPZ Phase-III extension and provision of promotional facilities to investors of the Karachi Export Processing Zone. He appreciated efforts of the EPZA to increase exports and earn foreign exchange as well as help build a good image of Pakistan in the international market.
Talking to media persons, Global Enterprise CEO Mujib R. Siddiqi termed GTex expo a huge success. He said that $18 million business deals matured during the expo and many more were in the pipeline.
This event provided a great business opportunity to importers and exporters. GTex is the largest and the most successful expo of its kind in the region in which all leading international brands from textiles, garments, leather, digital printing, embroidery machinery, accessories, chemicals, dyes and energy sectors participated and displayed the latest innovations. People from China, Japan, Australia, Taiwan, Italy, Turkey, Germany, Switzerland, Spain, Sweden, Netherlands, Czech Republic, India, Hong Kong, France, Austria, Iran, Korea, Ireland, Malaysia, Belgium, UK, USA and Singapore participated in the event with more than 670 major partner brands.
Some of the major brands were Al Amin Industries, Nazer Group, CHT Pakistan, Madhani Associates, Humble Embroidery and Taji Maan.


text:
Q: Dismiss Popover using Unwind Segue in Xcode Storyboard I am using Xcode 4.5 and the new iOS 6 feature to unwind segues. I am presenting a navigation view controller inside a popover which is presented programmatically from a bar button item:
- (IBAction)configChartTapped:(id)sender
{
    if (self.popover.isPopoverVisible) {

        [self.popover dismissPopoverAnimated:YES];

    } else {
        UINavigationController *chartConfigNavigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"GrowthChartNavigationController"];

        ConfigChartTypeViewController *configChartTypeViewController = (ConfigChartTypeViewController*) chartConfigNavigationController.topViewController;

        self.popover = [[UIPopoverController alloc]initWithContentViewController:chartConfigNavigationController];
        self.popover.popoverContentSize = CGSizeMake(320, 500);
        self.popover.delegate = self;

        [self.popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    }
}

Next to this method I have defined a target to unwind the segue (i.e. dismissing the popover)...
- (IBAction)cancelConfig:(UIStoryboardSegue *)segue
{
    //
}

... and connected it to a cancel button in the navigation view controllers's navigation bar.
Connecting the cancel bar button to the cancelConfig button worked fine in Xcode.
However, when running the code, nothing happens when clicking on the Cancel button despite Xcode 4.5 should be supporting dismissing popovers when unwinding segues (according to the release docs).
What did I miss?
Thank you!

A: Unwind segues use runtime searching by first asking the parent view controller to walk up the chain of view controllers presented via segue until it finds the correct unwind method. But there is no chain here since the popover was created programmatically rather than with a popover segue.
No callbacks are occurring since there is no segue link back to the parent view controller. Unwind segues are an abstracted form of delegation, so this would be similar to forgetting to set the delegate and not receiving any callbacks.
The solution is to create the popover with a segue in Interface Builder rather than create it programmatically with the configChartTapped: method.
Steps:
First, control-drag from the bar button item in the presenting view controller to the presented view controller and select the popover segue:

In the presenting view controller, implement prepareForSegue: to grab a reference to the popover controller:
- (void)prepareForSegue:(UIStoryboardPopoverSegue *)segue
                 sender:(id)sender {
    self.popover = segue.popoverController;
}

Then implement shouldPerformSegueWithIdentifier: to restore
the show/hide behavior similar to configChartTapped::
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if (self.popover.isPopoverVisible) {
        [self.popover dismissPopoverAnimated:YES];
        return NO;
    } else {
        return YES;
    }
}

Finally, in Interface Builder, set the correct popover content size  for the presented view controller:

This will allow you to unwind to cancelConfig: when tapping the cancel button from the popover, and also show/hide the popover when tapping the button that presents it.


text:
package org.terracotta.management.integration.tests;

import org.junit.Test;
import org.terracotta.management.entity.sample.Cache;
import org.terracotta.management.entity.sample.client.CacheFactory;
import org.terracotta.management.entity.sample.client.ClientCache;

import java.net.URI;
import java.util.UUID;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;

/**
 * @author Mathieu Carbou
 */
public class BadClientsIT extends AbstractSingleTest {

  @Test
  public void two_clients_with_same_identifiers_do_not_crash_the_server() throws Exception {
    URI uri = cluster.getConnectionURI();
    String uuid = UUID.randomUUID().toString();

    CacheFactory cacheFactory1 = new CacheFactory(uri, "bad-client");
    cacheFactory1.init(uuid);
    Cache foo1 = cacheFactory1.getCache("foo");

    long count = nmsService.readTopology().clientStream()
        .filter(client -> client.getClientIdentifier().getConnectionUid().equals(uuid))
        .count();
    assertThat(count, equalTo(1L));

    // create another client that will have the same client identifier
    CacheFactory cacheFactory2 = new CacheFactory(uri, "bad-client");
    cacheFactory2.init(uuid);
    ClientCache foo2 = (ClientCache) cacheFactory1.getCache("foo");

    count = nmsService.readTopology().clientStream()
        .filter(client -> client.getClientIdentifier().getConnectionUid().equals(uuid))
        .count();
    assertThat(count, equalTo(1L));

    count = nmsService.readTopology().clientStream()
        .filter(client -> client.getClientIdentifier().getName().equals("bad-client"))
        .count();
    assertThat(count, equalTo(1L));

    foo1.put("key", "val");
    assertThat(foo2.get("key"), equalTo("val"));

    foo2.close();
    cacheFactory2.getConnection().close();

    do {
      count = nmsService.readTopology().clientStream()
          .filter(client -> client.getClientIdentifier().getConnectionUid().equals(uuid))
          .count();
    } while (!Thread.currentThread().isInterrupted() && count != 0);
    assertThat(count, equalTo(0L));

    cacheFactory1.getConnection().close();
  }

}

redpajama_set_name: RedPajamaGithub


text:
18 LISTSCreepy People, Places & ThingsHey, what's up? Are you on a quest for a nightmare? Well, look no further.
Creepy Dolls for Sale on eBay
The Catacombs of 18th C. Paris
The Real Texas Slave Ranch
Stories of People Really Buried Alive
Truly Disturbing Ransom Notes
Photos That Will Terrify You
Black River Falls, Wisconsin
Horrifying Versions of Real Fairy Tales
Real Things Straight Out of Horror Films
Cursed Dolls to Bury Outside
Secondhand Finds
Terrifying Talking Toys
Cursed Objects in the Real World
Footage Captured on Drones
The Bridgewater Triangle
Old Plane Wrecks You Can Visit
Horrifying Taxidermy Gone Way Wrong
Two-Sentence Horror Stories
Weird, Creepy, And Horrifying Things Captured On Drones
Michelle Nati
Updated September 23, 2021 421k views14 items
Drone footage gives us a unique new way of looking at the world. Not long ago, the average person didn't have the means to observe life from above. Drones, however, offer a relatively cheap and accessible bird's-eye view to almost anyone. YouTube is full of stunning aerial footage of landscapes and other drone eye candy. But you'll also find some pretty weird drone videos out there.
From clowns in unexpected places to a too-close shark encounter to a sobering tour of Chernobyl, YouTube offers some disturbing drone footage. Ominous music often contributes to the unsettling mood.
Some of these videos might be hoaxes, but many of the creepiest things captured by drones are all too real.
'Bigfoot' In Ohio
Video: YouTube
Bigfoot sightings are common in the Pacific Northwest, but Salt Fork State Park in Ohio allegedly boasts its own Sasquatch. The storied ape-like creature, a rumored resident of the Buckeye State since the Revolutionary War, has been sighted almost 40 times in the park since the mid-'80s.
In 2017, a drone operator claims to have spotted Bigfoot while flying his craft over the park and has the video to prove it. In the video, look to the left of the screen to see a black figure with arms raised at the 1:49 mark. But is it Sasquatch or an errant hiker?
A Ghost In A White Dress
The black-eyed children of Cannock Chase Forest in Staffordshire, England, are rumored to be the ghosts of those who succumbed to a diphtheria outbreak in the 1800s. They're also said to be the victims of Raymond Morris, who took the lives of several children in the 1960s.
Cannock Chase is supposedly rife with paranormal activity, and a quadcopter drone may have recorded one of the Cannock Chase ghosts as it flew past. See how quickly you can spot the young girl in the white dress.
Vanuatu Volcano
Sometimes a drone has to take one for the team, especially if the team is made up of National Geographic explorers and scientists. Watch as they sacrifice two drones to get up close and personal with the very active Marum Crater on the Ambrym volcano in Vanuatu.
The volcano has a 7.5-mile-wide caldera, and its active craters contain ever-flowing lava lakes.
Tiger Sharks Feasting On A Whale
In 2016, tourists traveling to Dirk Hartog Island in Western Australia had experience of a lifetime: They watched as a group of tiger sharks ripped apart a humpback whale carcass and turned the blue waters around them bright red.
Abrolhos Cruises sent up a drone to record the incident, calling the spectacle "something to show and tell the grandchildren."

redpajama_set_name: RedPajamaCommonCrawl


text:
Published on October 26th, 2015
For most Mumbaikars, buying a home is a once-in-a-lifetime task but due to a lack of budget and high prices of properties, it becomes impossible to buy a house without taking a bank loan. This brings in the dreaded EMI nightmare.
Elsewhere, too, the situation is no different. India's other metros are also seeing a high increase in realty prices, pushing buyers to borrow from the bank to finance their home dreams. At the same time, there are many unsold housing units lying vacant all across the country. Thus, developers are coming up with innovative ways to attract buyers into investing in under-construction and ready possession flats. The biggest indicator of a slump in real estate is the scores of advertisements that developers put out in popular media – as is happening in the metros at the moment.
A builder in Delhi recently announced a 'no pre-EMI' clause till possession of the property. Customers are asked to pay 10 per cent as the booking amount, followed by 80 per cent of the amount within 45 days from bank funding. The remaining 10 per cent can be paid on possession. In effect, all the EMIs on the housing loan taken by the buyer are paid for by the builder and the buyer starts paying EMIs only after possession.
Earlier this year, for its upcoming commercial project, another leading builder from Chennai provided an option where consumers paid 40 per cent in three months and took possession of the house, while the balance was to be paid in 15 months. This move pushed sales of commercial premises substantially.
In Mumbai, the developers helming a housing project in Goregaon East decided to offload a series of their unsold flats in Goregaon with a 'Ready Possession' clause. The buyers do not take a home loan for the property, and can immediately move in after paying a small percentage of the total cost. The balance can be paid in EMIs to the builder directly, without an additional interest being charged on the same.
Says Dilawar Nensey, Joint Managing Director at the firm, "Since the realty market is down we thought of working out a way for people to be able to buy their permanent dream home as also offload our inventory. We prefer to pass on price benefits to our customers rather than pay heavy interest burden on term loans."
Another builder in Thane has just announced a housing complex that charges customers as per construction costs, minus the profit margins. "This brings down the cost per house, so more people can buy houses," the developer explains. Yet another developer in Thane is promising free household appliances like refrigerators and TVs on booking the flats.
But are buyers really buying?
"I am always sceptical of these 'Ready possession' claims," says Shyam Borkar, an architect. "Maybe it is because of my perception that builders are not to be trusted blindly, but I always feel there must be a catch somewhere." Shyam is about to close a deal on a flat he has booked in Navi Mumbai. "I purchased a re-sale flat because one can never know when the builder will stop construction on a project," he explains.
Raja Mathur would agree. The garment exporter invested in an under-construction property in Goregaon three years ago, but the work was stalled mid-way owing to permission issues with the BMC. He says, "There is no clarity on when the work will start again and the builder has stopped responding to our calls and messages. I have paid almost 40% of the cost but I don't know when the project will be completed. I wish I had waited and gathered enough money to invest in a re-sale flat."
Always examine what the builder is promising, cautions Deepak Vaidya, an investment banker. "Many flats are lying unsold in the city and builders are getting desperate. Some of them will go to any extent to offload the flats. But one must be careful about believing their claims of interest-free payments, paying after possession, etc. They spend crores of rupees on their projects, why will they let the customer use the houses without recovering the cost?"
(Picture courtesy www.topnews.in. Image is used for representational purpose only)
Tags: builders, empty flats, expensive realty, housing in mumbai, real estate
Houses get smaller in Mumbai →
'Free housing' will not benefit Mumbai: Study →


text:
Tag Archives: young justice
Comics, Pop Culture
DC Comics First Issues Coming January 2019
January 5, 2019 Ken Pierce Leave a comment
Let's keep the comic book reveals for the month going and over to the DC Comics side of the fence. There are some interesting launches this month along with a few anniversary issues so let's not dance anymore and just get down to the business. Here we go.
"Young Justice" #1
YOUNG JUSTICE #1: Superboy! Wonder Girl! Robin! Impulse! Amethyst! They're all united in YOUNG JUSTICE #1, the debut issue of a brand-new series that also introduces new heroes Teen Lantern and Jinny Hex! When the nightmare dimension known as Gemworld invades Metropolis, these teen heroes reunite to deal with the situation—but they're shocked to discover the battle may be the key to the return of Conner Kent, a.k.a. Superboy! This mix of fan favorites and new legacy heroes will be the center point for some of the biggest goings-on at DC! As if that weren't enough, Bendis reunites with all-star artist Patrick Gleason (SUPERMAN, ACTION COMICS, GREEN LANTERN CORPS) to bring the new heroes of DC's Wonder Comics to life!
written by BRIAN MICHAEL BENDIS; art and cover by PATRICK GLEASON
"Naomi" #1
NAOMI #1: DC's biggest, newest mystery starts here! When a fight between Superman and Mongul crashes into a small Northwestern town, Naomi (last name?) begins a quest to uncover the last time a super-powered person visited her home—and how that might tie into her own origins and adoption. Follow Naomi's journey on a quest that will take her to the heart of the DC Universe and unfold a universe of ideas and stories that have never been seen before. Join writers Brian Michael Bendis, David Walker and breakout artist Jamal Campbell in Wonder Comics' massively ambitious new series and star…NAOMI.
written by BRIAN MICHAEL BENDIS and DAVID F. WALKER; art and cover by JAMAL CAMPBELL
Continue reading DC Comics First Issues Coming January 2019 →
comic book solicitationscomic bookscurse of brimstone annualdc comicsdc comics first issuesdc entertainmentfirst issuesjustice league annualmysteries of love in spacenaomiother history of the dc universesuicide squadsuperman 100 page spectacularteen titans annualyoung justice
Presenting DC Comics "The New 52": The Third Wave
June 10, 2012 Ken Pierce Leave a comment
I've been reviewing as many of the titles as possible here on the PiercingMetal Musings blog for the big September 2011 initiative by DC Comics that they called "The New 52" and now that the first and second wave have passed it is time for, yep you guessed it, the Third Wave. It sure seems kind of soon but oh well, I am not in charge of how they do things over at DC Comics. So what does this one entail? Well according to what I have read the latest titles to get the chopping block are "Justice League International", "Captain Atom", "Resurrection Man", and "Voodoo". I was always kind of 50/50 on these books in the first place and am not surprised to see some of them go. I did enjoy "JLI" and "Resurrection Man" but even the redo of this last character was better the first time around. "Captain Atom" kind of lost me, and "Voodoo" never really did it for me. Sorry to those creative teams who put them out there, I mean no offense to your work. I guess I am getting fussy about what I sit down and read these days.
The other day DC Comics let on what the Third Wave of titles would be and those are "Talon", "Sword of Sorcery", "Phantom Stranger", and "Team 7". Let's look at where they will land as far as the existing family of titles go. Nothing is being added to the Justice League, Young Justice, Green Lantern or Superman titles with this bunch but "Talon" falls to the "Batman" related titles and now gives that family of releases thirteen titles. Holy printing press Batman that is a lot of titles to keep up on. One title joins "The Edge" roster and two more become part of "The Dark".
PiercingMetal Thoughts: What do I think for this go round? I'm curious about how "The Phantom Stranger" will do in a full on title because the overall mysterious nature of the character leaves him to be most exciting when used in a sparing fashion. "Sword Of Sorcery" brings back Amethyst Princess Of Gemworld to the DC Universe and offers a backing feature with Beowulf. As far as Team 7 goes, I am not sure. I was only ever a casual fan of the title when it was originally in the Wildstorm world so let's see what happens. What do you readers think?
Official Website: www.dccomics.com
Readers can peruse all of our existing blogs about "The New 52" by using this tag – http://www.piercingmetal.com/?tag=the-new-52
batmancomic book reviewscomic book solicitationscomic booksdc comicsdc comics rebootdc comics relaunchdc comics the new 52dc entertainmentgreen lanternjustice leaguephantom strangersupermansword of sorcerytalonteam 7the darkthe edgethe new 52the new 52: third waveyoung justice
Presenting DC Comics "The New 52": The Second Wave
January 14, 2012 Ken Pierce Leave a comment
It's been a few months since DC Comics began their "The New 52" initiative for their fans and while some of it has been solid, there have also been some lackluster moments in the run of titles. The announcement came that the following titles would be ending after their eighth issues ("Blackhawks", "Hawk and Dove", "Men of War", "Mister Terrific", "O.M.A.C.", and "Static Shock"). I will be honest here and say that I will not miss most of the ones that are being cancelled with the exception being "Hawk and Dove" based on my always liking the characters along with "O.M.A.C." as it was different and just a little bit of "Mister Terrific" since it was becoming more interesting. I had never been a fan of the Blackhawk angle and war comics just don't appeal to me unless it was something more classic like we got with "Sgt. Rock" or the strangeness of "Weird War Tales".
The Second Wave titles are "Earth 2", "World's Finest", "Batman Incorporated", "The Ravagers", "G.I. Combat" and "Dial H". The way the titles are being segmented is with two going to the Justice League family of titles while one apiece goes to Batman, Young Justice, The Edge and The Dark. No additions or subtractions will affect the Superman and Green Lantern titles with this go round. Only time will tell if this will change, but right now these families of titles only have four books apiece so they might leave well enough alone if the sales remain strong.
Am I excited about any of these? Well yes and no. I am intrigued by "Earth 2" and "World's Finest" since they present a different heroic timeline and reality while the latter title takes the time honored place of Superman and Batman and gives the limelight to Power Girl and The Huntress. That should be interesting. Not so much keen on the Batman Incorporated title but will enjoy seeing "Dial H" back in action. As far as the new war title, let's see what it offers. My review plans for these books will find them being included in the ongoing family of titles postings. It makes the most logical sense to do it like that.
batmanbatman incorporatedcomic book reviewscomic booksdc comicsdc comics rebootdc comics relaunchdc comics the new 52dc entertainmentdial hearth 2green lanternjustice leaguesupermanthe darkthe edgethe new 52the new 52: second waveworld's finestyoung justice
Presenting DC Comics "The New 52": Project 2
November 5, 2011 Ken Pierce Leave a comment
Deja Vu? Or shall I say "Deja Deux??" Don't worry dear readers of the PiercingMetal Musings Blog you are NOT seeing double or even accidentally stumbling upon an older post about DC Comics' "The New 52". Of course the subject matter is exactly the same and should be thought of as a continuing series of reports about the company wide title relaunch that started a couple of months ago. I've been a comics fan for many years and when the chance to offer objective views into this initiative came to mind I gave my all for your enjoyment.
If you are just now coming into the blog and don't know what we are referring to, well let me recap very quickly. In September of 2011, DC Comics cancelled all of their titles and started them over at issue #1 – the initiative was called "The New 52". The 52 new issues were broken up into groupings by character or theme and that gave us segments focused on the Superman, Batman, Green Lantern, Justice League and Young Justice mythos. We also had groupings such as The Edge and The Dark that dealt with both edgy and darker story lines. You get the picture right?
Continue reading Presenting DC Comics "The New 52": Project 2 →
batmancomic book reviewscomic booksdc comicsdc comics rebootdc comics relaunchdc comics the new 52dc entertainmentgreen lanternjustice leaguesupermanthe darkthe edgethe new 52young justice
DC Comics "The New 52" First Issues: "Young Justice" Titles
October 10, 2011 Ken Pierce 1 Comment
As previously blogged about in the PiercingMetal Musings; DC Comics recently re-launched a number of titles and started them off from issue #1 under the branding of "The New 52". The initiative's prime objective being to up the number of titles available each month and to offer new readers an easier chance to jump on board with their characters. New costumes and beginnings are par for the course with the reboot but a number of the company's most historic moments shall remain unaffected. The New 52 appears to have segmented the titles into a number of different groups based on the relation of the character – for instance there is a Superman and Batman grouping to enjoy and each title relates directly to the character. From these segments I have opted to share my thoughts on the first issues for your reading pleasure. The Young Justice grouping of titles aims to prove that youth is not wasted on the young by delivering us a new go round of Teen Titans, Static Shock, Hawk & Dove, Blue Beetle, Legion Of Super-Heroes and Legion Lost. Let's take a look at these shall we.
"Teen Titans" #1
Teen Titans #1: During my younger days, the New Teen Titans title that was done by Marv Wolfman and George Perez was an absolute killer. The title gave us Robin, Wonder Girl, Kid Flash and some new cool heroes like Cyborg and Starfire against menaces that constantly kept us on the edge of our seats. A lot has gone on in the Teen Titans mythos and this aspect of The New 52 appears to find the team building up from scratch. The opening finds us meeting Kid Flash who is a serious show boater. He arrives at the scene of a massive fire and ends up causing more harm than good and puts innocents in harm's way. It's not likely that he means this; he is just wet behind the ears in this. We catch up with Red Robin (formerly known as Robin) who is monitoring this activity before being attacked by a mysterious group called N.O.W.H.E.R.E. – Drake escapes and soon comes in contact with a new Wonder Girl. She does NOT like being called that. Some additional tussling with the forces of NOWHERE ensues before the heroes win out and as the issue closes we find a secret lab getting ready to unleash "The Superboy". It's rather obvious that he will be a part of the new team and joining these four will be Bugg and Bunker. I was intrigued about this one since I liked Red Robin and was curious about some of the revisions to the core membership. Scott Lobdell writes while Brett Booth and Norm Rapmund do the art.
Continue reading DC Comics "The New 52" First Issues: "Young Justice" Titles →
blue beetlecomic book reviewscomic booksdc comicsdc comics rebootdc comics relaunchdc comics the new 52dc entertainmenthawk & dovelegion lostlegion of super-heroesnext generation of justicestatic shockteen titansthe new 52young justice


The 8th Motive: One day Alice came to a fork in the road and saw a Cheshire cat in a tree. "Which road do I take?" she asked. "Where do you want to go?" was his response. "I don't know," Alice answered. "Then," said the cat, "it doesn't matter."
One day Alice came to a fork in the road and saw a Cheshire cat in a tree. "Which road do I take?" she asked. "Where do you want to go?" was his response. "I don't know," Alice answered. "Then," said the cat, "it doesn't matter."
"Readiness is the mother of luck."


Real Estate MLS #11807571 | $40000 ∙ 201 Heber 504c Park City, UT 84060 ∙ 3 bed, 4.00 bath, 2424 SQ FT ∙ The Residences at Sky Lodge offer Luxury living directly on Historic Main Street in Old Town Park City Utah. This vibrant property is a fractional ownership with a sleek modern design with all the desired amenities. With unmatched service, you will enjoy valet parking, full service front desk and concierge, shuttle service, owners storage, fitness facility, dining, pool and spa. The Sky Lodge is across the street from the Town Lift ski chair for access to world class skiing at Park City Mountain Resort. Within walking distance there is endless shopping, dining, coffee shops, art galleries, nightlife. Property Taxes are paid through the HOA dues.


text:
vagvi.australia-forum.ru
Dating in cardiff wales
Posted by / 18-Dec-2017 13:45
Travelling north and south in Wales often requires going through the English towns of Chester and Shrewsbury. The busiest stations are Cardiff Central and Cardiff Queen Street, and Cardiff also has its own urban rail network. Many of the activities in Wales centre on maintaining the traditions, passing them down from generation to generation while tourists join in.Wales has a long and varied history, and it is preserved in the National Museum Wales.In the last half of the 20th century, Wales took over its education and quickly introduced Welsh language classes to prevent the language from dying out.This eventually led to non-language classes and even entire schools being taught exclusively Welsh.Even in schools were English is used, Welsh is a required subject until the age of 16.Despite its rural nature, Wales has a large number of schools.Of those 2.1%, most people identified themselves as British Asian.
The National Library of Wales is in Aberystwyth, and in addition to its comprehensive collection of printed works, it also has collections of portraits, photographs, maps and more.
In 1920, at the peak of coal production, coal miners and their families made up a third of the Welsh population.
Now, the economy has modernised into a post-industrial economy, and many of the jobs now are in the service sector.
Neath Port Talbot and Swansea have the most Band 1 schools, with six and five respectively.
Amongst the Band 1 schools are Bishopston Comprehensive, Cwmtawe Community School and Mary Immaculate High School. Cardiff University and University of Glamorgan are the largest, and the first university established in the country is the University of Wales.
The main road is the M4 motorway that links the cities and villages along the southern coast, while the A55 connects the towns and villages in the north.
One thought on "dating in cardiff wales"
online dating montreal quebec says:
Forget about spending all night watching nick at nite reruns and eating an entire bag of chips.
dating rules from my future self 2
dating a guy with a deformity
aedating v4 1
love dating kuwait members
updating electrical to 220 volt
married bisexual dating site
sex dating in elsie oregon
Copyright © 2004-2016. Published under a vagvi.australia-forum.ru.


Athletes Registered in the 2015 Tournament.
as of Saturday, April 20, 2019 at 4:28 am.
Men in Blue / Women in Red. Includes "Registered", "Pending", "Incomplete" and "Wait-List".
Duplicate registrations may be displayed. They will be resolved once the individual's registration is finalized.
If you have any concerned about the accuracy of the information presented here, please e-mail or the Webmaster.


If you are selling or letting your property, just search through our database of UK estate agents and letting agents using your area or postcode and you'll be presented with a list of local estate agents serving your area.
We aim to highlight best practice in the industry, so agents voluntarily register for independent feedback and advocate transparency by choice. This means that not all agents will be registered to receive feedback, although we provide their contact information.
Agent participation ensures that feedback is representative of their business, and you as a consumer can see which agents in your area are making a commitment to customer service and transparency and why. If you know a great local agent who isn't registered, you should refer them to us via the Write a Review tab.
If you decide to use an agent who is registered for feedback, you can also request a valuation directly through the site. Once you've used their services, you should leave a review of your own to help future customers in their decision-making process when choosing an estate or letting agent.
Why use a local estate agent or letting agent?
While there are many options to sell or let privately, traditional agency is still the preferred choice for the large majority of sellers and landlords, with over 90% of UK property transactions made through agents each year.
Local estate agents and letting agents in the UK can really help when selling or letting your property through their knowledge of the local area, expertise and access to all the pertinent information to aid the process.
A good agent will value your property fairly and attractively, advertise to ensure maximum exposure and have a registered pool of applicants. They will pre-qualify your buyer or tenant's financial position, provide accompanied viewings and negotiate on your behalf, which can be uncomfortable to do yourself.
As experts in their field, UK estate agents and letting agents will also advise you on your legal responsibilities as a seller or landlord – property legislation, particularly for landlords, is complex and ever-changing. There also are many aspects of a property transaction that can go wrong, and an agent's experience of the process will also help avoid unnecessary delays by managing issues as they develop.
Choosing an experienced local estate or letting agent is possibly the single most important decision in the sale or let of your property. Our sole focus is to provide consumers with the ability to make an informed choice and connect them to great local professionals.
Since all reviews we publish are made by the agent's customers – that is, sellers and landlords – you can be sure that you will find estate agents or letting agents that will have your best interests at heart and be confident that you are making the right decision.
In areas where we don't have agents registered for feedback, our news and advice section provides you with all the information you need to make a good decision including the role of an agent, what to expect, information about agency contracts and regulation.
Letting agent and estate agent reviews help make it easy to find the best estate agents and letting agents who meet your needs. By writing reviews about an agent you have used or recommending a great local agent us, you can help other consumers too.
Why do we promote transparency by choice?
Customer reviews allow you to find an agent who meets your needs, and agents benefit from receiving honest feedback about the service they provide. However, happy customers must be encouraged to use review forums, while unhappy customers are more likely to seek them out.
This means that open review forums often don't portray comparative service levels accurately: an agent who actively encourages customers to leave reviews may top the rankings, while an equally good agent who doesn't participate may have reviews that are heavily biased towards the negative.
We know that consumers won't use a 'bad' agent, whether the reputation is unfair or not. This is why we built a platform that is based on transparency by choice, as it enables agents to demonstrate their service based on independent feedback without being unfair to those who don't participate.
MeetMyAgent is therefore the place where consumers can 'meet' the estate or letting agent they will choose sell or let their property, not read about the bad ones – after all, it's in the name.
As well as providing you with a quick and easy way to find estate agents and letting agents, you will also find plenty of advice related to selling or letting your property.
We have BBC mortgage experts, government tenancy deposit schemes, industry regulators and, of course, our own team contributing to our news and advice section. Whether it's advice on mortgages, information on agency contracts or practical tips for landlords and sellers, all our articles are thoroughly researched and written by experts in their field.
This combination of advice and letting and estate agent reviews means you will be able to make an informed choice and find UK estate agents and letting agents, as well as learn about all aspects of property, giving you the best chance of selling or letting your home quickly and at the right price.
use our Contact page to send in your questions!
Global investment in properties reached a new all time high of $1.6 trillion in 2017, and money from Asia made up over half of all the money invested. London has remained as the preferred location for investing international money as Brexit concerns were offset by a drop in the sterling value, according to a report from the property company Cushman and Wakefield.
Annually, the amount spent globally on property increased by nearly 14%, with Asian investors taking up a lot of this by increasing their exposure to the markets. Meanwhile, in Europe, the money spent by inventors from the far east and Asia, nearly doubled due to a small amount of gigantic transactions in relation to the Chinese Belt and Chinese Road initiative, which is a new trade route which spans a massive sixty five countries.


Download crack for EAN-8 Barcode Generator 2 2.90 or keygen : EAN-8 barcode generator 2, it`s only issued for products with insufficient space for a normal EAN-13. EAN-8 is also known as a small package barcode. The EAN-8 EAN-8 is also known as a small package barcode. Reaper provides a flexible but offer more depth than other dice games. EAN-8 barcode generator 2 includes the GS1 recommended size (80% to 200%) for the EAN-8 so that you will always get the recommended size when you print or save the barcode image, no need to guess. Cover printing has never been so you can expect new features soon. The vector barcode can de edited in Adobe Illustrator or other software titles. V2 supports text announcements so you can calculate repayments instantly. EAN-8 barcode generator 2, it`s only issued for products with insufficient space for a normal EAN-13. It features a very intuitive interface for each family you babysit for.
The barcode can have additional text above the barcode and you will be able to format the text yourself or have EAN-8 barcode generator 2 do it for you. You can even automate the process so as to explore the formats of different letters. Encapsulated PostScript (*.eps) and also the other file formats can be used in Adobe Illustrator, Adobe InDesign, Photoshop or other software titles. Your mission is to find 13 energy cells so there is no need in additional files or libraries. The EAN-8 is used in retail, Both 2 and 5 Digit supplement have been included. For example, you can create a widget for beige or golden tones, avoid pinks. You will also be able to print the barcode on labels, you can select one of the 330+ predefined label sheets or define your own and you will be able to include an image on the label if needed. Supports the calculation of an hourly rate so that you can burn the same discs again later. Also a light margin indicator can be added if needed. Leave your everyday worries and marksman assigned into the enemy bases.
Make a EAN-8 (GTIN-8, UCC-8, GS1-8) and save it as a high resolution bitmap image (*.bmp, *.jpg, *.png, *.tif) or as a vector barcode in Encapsulated PostScript (*.eps) or Enhanced MetaFile (*.emf). It can produce the effect of stereo expansion for the first time all used in a book. The barcode can be rotated when saved as a barcode image or when printing on labels. With this app you can reach a comfortable way so your second screen is not overwhelmed. Barcode can also be saved as a PDF file. A searchable glossary of common writing and purchase directly from the app. The recommended size, font, color can be accessed with ease from the Toolbar. The program contains 3 different sections so there is no empty space to move adjacent tiles. Activation code EAN-8 Barcode Generator 2 2.80 or Crack EAN-8 Barcode Generator 2 2.75 and Keygen EAN-8 Barcode Generator 2 2.75 and Serial number EAN-8 Barcode Generator 2 2.70 or License key EAN-8 Barcode Generator 2 2.60 Full version.


What would we do without them? They're dignified, intelligent, strong and watchful. The Akita is big and built for hard work, but at the end of the day they are a sweet, lovable, and loyal friend. Honor yours by wearing the Wheel House Signature Crew sock that features a full Akita design.
Gray crew sock with an Akita and our signature allover diamond knit pattern on leg and foot.


text:
Home/ Africa Confidential/The Unexpected Reason You Need Asset Protection
The Unexpected Reason You Need Asset Protection
I had the good fortune to be a kid in the '60s and '70s, when science fiction retained just enough of the optimism of the '50s to be fun, but also began to hint at darker futures. You could watch Star Trek after school for a pick-me-up, and2001: A Space Odyssey after dinner to bring you back down again.
One of the recurrent themes of the sci-fi of the time was robots. They were usually good ("Danger, Will Robinson!"), but could sometimes be bad (the homicidal HAL 9000). They could be humanoid (Blade Runner) or resemble a home appliance (R2D2).
I can't recall sci-fi robots ever depriving anyone of a livelihood, however. That possibility only occurred to me once I started studying economics at college.
You wouldn't think you'd need asset protection from robots, but it's true: Robots are stealing jobs now and with potentially serious consequences for you… even if you're at or near retirement.
Robots: Not Just Another Tool
The mainstream economic view of robotics is the same as any process of technology-driven industrial productivity improvement. According to this view, the spread of robotics will be just like the transition from hand-looms to steam-driven textile mills in the 19th century. There will be initial displacement of workers, but the resultant growth of the economy will produce more than enough new jobs, and lower prices to boot.
I don't buy this sanguine story, for three reasons.
First, industrial steam-looms (like Henry Ford's assembly lines) produced consumer goods that were bought by the people who operated them, and by consumers in captive colonial markets like India. There was a good match between the industries adopting new technology and the markets they served – as productivity increased, so did the absolute size of those markets, especially as colonialism brought new ones into being. Today's robots, on the other hand, are displacing workers who have been producing goods for quantitatively mature markets, like smartphones or hamburgers. I don't see the total sales of either increasing dramatically over the long term.
Second, I think Karl Marx was right for once when he argued that the universal adoption of labor-saving technology will result in a fall in the rate of return of capital. When one hamburger joint automates, it can undercut its conventional competitors' prices for a while. But when all hamburger joints are automated, the only way to maintain market share will be to drop the price of a burger, eventually reducing the return of investment in those robots. There may be scope for further productivity enhancement – and robots may become cheaper when made by other robots – but once you've gotten rid of human labor, there's a limit to how much margin you can keep over the long-term.
But above all, automation will displace workers who won't be able to purchase the resulting goods. Unless capitalists decide to start cutting working hours, hiring more than one employee to share a week's work, and raising hourly wages – the techno-utopian dream – many people will simply be shut out of the modern economy. The "economic cycle" that links production to consumption will be broken.
That will intensify the first two problems… and cause another: socio-political instability.
Asset Protection: Preparing For a Robotic Future
For many of us, this isn't an immediate problem. We're part of the pre-robotic economy, and by the time machines really start having an impact, we'll be retired.
But that's precisely the problem.
The U.S. Social Security system, like those in most advanced economies, relies on current worker tax contributions to fund pension obligations toward previous generations. A robotic economy will produce a steep fall in tax collections. In 10 to 15 years, social pension systems will be unworkable, no matter how much you've put into them over the years. If you're counting on Social Security for your retirement, you're in deep trouble.
If I'm right about the impact of robotics, the future will be far more unequal than the present. Some industries catering to the lucky few will prosper, but the vast majority of today's firms will simply run out of customers.
That means you won't be able to rely on conventional retirement investment and asset protection strategies to beat inflation. As in any period of rapid economic change, there will be winners and losers, and anticipating who they will be is crucial.
That's why I predict that the only people who will prosper in our robotic future are those who eschew conventional public and private pensions – including 401(k)s – and take a more active approach to retirement investing and asset protection. Self-directed IRAs and certain annuities, for example, give you the scope to ride the waves of the future rather than be engulfed by them.
If you haven't got a retirement and asset protection strategy like that, you'd better start working on it now, before our robot overlords gain the upper hand.
Source by Ted Bauman
AfricaAfrican politicsAfrican UnionAssetbbc africa newsCamerooncameroon info netcameroon newsColonialismdictatorshipdictatorships in africadictatorships todaydiseases in africaeuropean unionextremism in africafrance in africa colonizationfrance influence in africafrench colonies africamigration in africamilitary and dictatorshipmilitary in africa newsmilitary in african politicspovertypoverty in africaProtectionReasonterrorism in africaUnexpectedWars in Africawars in africa 2020youth and politics and social mediayouth politics in africa
2013's Ten Biggest, Most Memorable Events
The Impact of Africa in Shaping Martin Luther King's Worldview


Have all your faxes sent directly to an email address rather than a fax machine. With our Macclesfield number fax to email service you can store all your faxes on a PC.
The fax to email feature cannot be added to an existing Macclesfield number that is used for voice. You would need to order another Macclesfield number in this case.
Want a Macclesfield phone number pointed to a landline?


Castiglion Fiorentino is a charming Tuscan city in the province of Arezzo rich in history and traditions, artistic and architectural beauties. It is a lively town as well from a cultural point of view with a full calendar of events. Thanks to its central location, Casali in Val di Chio is the ideal starting point for visiting the major art centers of central Tuscany like Cortona, Arezzo, Siena, Florence, San Gimignano, Montalcino and Montepulciano, which are all within easy reachable distances by car or train.
Take the A1 highway and proceed towards Rome if you come from north or Florence if you are arriving from the South, exit "Monte San Savino". After the toll, turn right and continue for about 3 km. When you arrive at the stop sign, turn left and follow the signs to Castiglion Fiorentino. Continue towards Castiglion Fiorentino for about 10 km. At the first roundabout take the second exit towards the city center and Cortona, following these signs for about 2 km. Take the SR71 turning right and following the indication of Cortona continue straight for 2 km (on your right you will pass Hotel Park) until you reach a traffic light: here turn left and follow the signs for Valle di Chio/Polvano. Continue for 5 km following the signs for Santa Cristina/Casali in Val di Chio.
After reaching the town of Santa Cristina, continuing straight for another 500 meters, you will find our reception on the right hand side of the street after the small bridge.
From Florence Santa Maria Novella or from Rome Termini take the first train that stops at the station of Castiglion Fiorentino.
On request: private shuttle service and transfers to and from the airport.


Barnstaple Town joint manager Kevin Darch felt a draw was the least that Barnstaple Town deserved from Tuesday's North Devon derby.
The Evo-Stik League South West strugglers left Bideford with a point following the Boxing Day clash thanks to a late equaliser from Nathan Cooper.
Craig Duff gave Sean Joyce's side the lead seven minutes into the second-half, but Cooper's strike gave Barum their first point in five league matches.
Darch was full of praise for his players in difficult conditions.
Darch felt Cooper's 88th minute goal shows the never say die attitude from his side.
He said: "That was the most pleasing thing to be honest, that the players never give up. We missed a couple chances in the second-half.
Next up for Town is a huge six-pointer against Mangotsfield United on Saturday, a side that are three points above Barum in 20 place.
Darch is hopeful the derby result will give his players confidence when they return to Mill Road.
"Hopefully it will give us a bit of confidence, we just need to perform at that level again and see what happens.


At MaxDumpster, we strive to bring you the best service at the best price available. We have a wide selection of dumpster sizes in stock in Sedan, NM, with flexible & timley pickup and delivery. Give us a call today for all your dumpster rental and roll off needs.
The most recommend and low-cost methods of disposing the trash tend to be recycling the particular waste as well as sanitary landfill disposal. Recycling the spend in eco-friendly manner will reduce the impact regarding trash on the environment. Low recyclable rubbish bin be disposed in the landfill and relaxation will be managed by the land fill authorities.
Picking the 6 Yard Dumpster in Sedan, NM providers would assist you to enjoy the cost-free added living space on finishing of your work. On hearing this all I am sure you would be looking for a 6 Yard Dumpster in Sedan, NM provider who can place a full cease to all your spend management needs. Dumpster direct is a such greatest 6 Yard Dumpster in Sedan, NM service provider inside USA which provides solid spend collection spend disposal, shift and these recycling services to both equally industry as well as hose keep services at the same time. The company prides itself for it's customer centric providers round the clock.
Just about every dumpster has a reduce on the tonnage from the trash disposed, letting the particular representative know of the tonnage of the junk disposed will set right sort of dumpster at your entrance step. Any kind of excess junk disposed over the said reduce will compel extra charges from you, so it will be very important in your case to let the rep know about the tonnage from the trash that's to be disposed.
When it comes to a new garage that requires clearing out, odds are good that you've got a pretty a large amount of useless to be disposed of. Since lots of local junk companies inflict limits regarding how much junk you can put out a week, and a lot of things that are too large as well as awkwardly shaped for junk bags anyway, you're going to need to rent a dumpster coming from a reputable 6 Yard Dumpster in Sedan, NM organization. Just thinking about a dumpster-sized insert of useless gone out of your garage need to make the job at hand seem to be much more achievable.
Besides the mobile restrooms that come in specific different styles determined by what they are to be utilized for, a few 6 Yard Dumpster in Sedan, NM companies possess recycling centres which make the idea very easy to break up the different components of your waste. You may have noticed these centres in store car parking lots, and often at saturdays and sundays. While individuals are for aluminum cans and wine bottles etc., the concept is the same.
More resources for 6 Yard Dumpster in Sedan, NM services browse the Budget Dumpster organization. They are a new national organization with a good history of affordable, advance, all inclusive charges and good customer service. 1-866-284-6164 The next matter discussed throughout the rental process is when often the organization will need to empty, or alter out, the particular dumpster. A specific payment schedule will be supplied regarding to when the dumpster will require to be sold. Another thing to think about is how prolonged the dumpster will probably be rented for. If it is simply short term, a unique plan will probably reflect this. Customized pricing as well as planning is one of the customer service oriented options a new trash organization offers. Pick up of the dumpsters could be at any time during a 24 hour period of time, and speedy pickup could be arranged. Normally the wait period is under two hours, according to the exact scenarios.
There's no doubt about this removing debris from the vacant house picture is going to be considerably bigger than anyone thought. Hiring a personal dumpster is the perfect way to haul absent those removed materials down your property. A lot better, the professionals at the construction 6 Yard Dumpster in Sedan made the entire rental approach incredibly convenient and they provide you with the excellent premiums. Nationwide dumpster leases are available online or by phone.
This is not to imply that all Internet sites presenting dumpster services tend to be rip-offs, but simply that you ought to ask if the people whom you possess contacted are in fact the people whom will be carrying out the work.
You may help save pennies the following, but it needs large sum of cash to be spent on your health difficulties in your near future because getting rid of such a huge waste in self involves a lot of attempt, physical exertion and also time expense as well. In addition to this you will need to focus on transport complexities and also environmental pleasant recycling regarding disposed throw away if you are individual who respects interpersonal concerns of your nation. Building waste is often in huge quantities and also occupies a lot of space. Daring to apparent construction throw away on self not only takes in your time nevertheless occupies ones free space for longer period of time.
Dumpster Rental Companies give various styles of dumpsters to dispose the trash made at your employment location. Your sizes tend to be 3-5 yard, 6-8 property, 10-15 yard, Something like 20 yard, 40 yard, and also 40 property. You can decide on any of these dumpsters in accordance with the quantity of trash generated at your house renovation or construction jobs. For building projects, it is preferable to choose throw off dumpster. Move off dumpster is equipped with wheels in four factors. Roll down dumpsters can be easily relocated from one area to another area. Roll down dumpsters are available in various sizes ranging involving 10 yard to 50 yard. Dumpster rental organizations assist you in retaining the job area free from trash by dispose the trash inside eco-friendly manner. In case you are confused to pick the best sized dumpster, 6 Yard Dumpster in Sedan organizations help you with your professional assistance in choosing 1.
Select the right sizing dumpster. Dumpsters come in many sizes and also dimensions from small to huge. Have a dumpster expert inform you of what kind to rent.
By renting any dumpster you will also obtain the work accomplished quicker and also move your dumpster right off with the property therefore leaving a pleasant and cleanse yard.
Dumpsters tend to be large bins that are applied to keep trash before it is compiled and taken to any landfill. They can be common inside restaurants and also commercial buildings but they can also be used inside a residence. In case you are currently remodeling your home or doing some different of building, it is necessary to rent any dumpster to ensure your chemical substance stays neat. A lot of garbage is made during building therefore you require to get a specialist company which will offer you the skills you require. There are various factors that you ought to keep in mind if you are choosing the company to use regarding hiring garbage receptacles.
The 20 cubic yard dumpster is needed for major construction you will be doing about the majority of your property. The 20 cubic yard dumpster is equivalent to 10 pickup truck a lot.
After these three main factors are made the decision, different pricing and bundle options might be looked into, in addition to being much money might be saved as is possible by eliminating needless parts of the work. Same day service is available in most all cases, to make sure your waste products are taken care of as rapidly and effectively as possible. Or else same day, many places offer their containers to be generally there by the next business day for making your project function more smoothly. By using a dumpster you climate ripe garbage disposal cups and having to advance waste around your work area. Instead anything goes into the trash receptacle, which is hauled down when it is total or handy for you. As opposed to being the neighbors with a garden full of junk you can be the particular hero of one's block, and enjoy the safety and also pleasure of any well stored work place for you personally next development or destruction endeavor.
Prior to dumpster arrives to your location, make sure that you make enough room at your job site to put the dumpster. It must be placed in an establishment where it is really possible for the truck driver to deliver and also pick up the particular dumpster. Last but not least, you have to check with the particular 6 Yard Dumpster in Sedan, NM company with regards to the pricing on the 6 Yard Dumpster in Sedan, NM, check if the organization has virtually any hidden prices. You should also understand the fee imposed by the organization on the extra disposal packed into the dumpster and so forth.
Having a private dumpster as a home-owner will help with spring cleaning, moving or renovating. Just about any unwanted garbage can go directly into the dumpster instead of filling up and also overflowing your trash cups. There will be nowhere fast to put all this! There will be space to work and provide in new items very easily.
Work with a small provider. Major companies cost big box costs, mostly since you're investing in their country wide advertising campaign when you write these people a check. Smaller companies accomplish their enterprise and advertising and marketing on a small scale, which implies they should be capable of offer you a better price in your trash 6 Yard Dumpster in Sedan, NM.
Knowing there are a number connected with dumpster companies making themselves available, you need to take your time to get the best. As a result, you need to ask yourself some queries about hiring the help of such firms. The first thing you have to ask yourself is do I require commercial dumpsters, long term dumpsters, or must i require a temporary a set of throw off dumpsters? This is going to be dependant upon the type of trash that you need to care for. The first sort, as the title suggests, is ideal for commercial office space and the second is for house owners.
Who knows what you'll find dumpster scuba dving: old furnishings, TVs, computers, other old electronics or musical gear. The really good stuff always consumes space, thus plan to get trunk room or many boxes in case you find greater items. In case traveling by walking, you might be able to utilize boxes or containers you get in or near the dumpster. On-the-fly field making is how your multi tools appear in really useful.


text:
Featured Web Sites: National Summit on Arts Journalism Award Winners
As revenue falls at newspapers and local television stations and they eliminate reporters, cultural coverage often is the first casualty. This loss can have dire effects on a community's arts organizations, which rely on journalists to spread word of their offerings.
With this in mind, the Hewlett Foundation joined the National Endowment for the Arts and other funders this October to sponsor a National Summit on Arts Journalism at the University of Southern California. The daylong gathering explored some of the new forms cultural coverage is taking around the country, and the obstacles these projects face to becoming self-sustaining. From the presented projects, participants voted on the most promising, which received cash awards from $9,500 to $2,000.
The projects, all of which are Internet-based, range across the country and are widely varied in subject matter. But all share a lively spirit of experimentation and optimism that – eventually – cultural coverage will find a way forward in the emerging digital age.
The envelope, please:
First Prize: $9,500 to Glasstire. This Houston-based Web site, named for a suite of works by proto-pop artist Robert Rauschenberg, covers the visual arts, both grand and modest, across the Lone Star State.
Second Prize: $7,000 to FLYP Media. Based in New York City, FLYP Media uses a full range of interactive tools to produce an online magazine that works to preserve the best characteristics of print journalism to cover art, music, politics, and science.
Third Prize: $4,500 to San Francisco Classical Voice. The Web site, which describes itself as "the go-to place for classical music in the Bay Area," employs experts in music to write about every aspect of the Bay Area's classical music scene, from recitals to lectures to classes.
In addition to these winners, two finalists each received $2,000. They are Departures, a project of KCET public television in Los Angeles, which produces innovative Web-based, multimedia documentaries about the city; and Flavorpill, a Web-based guide to cultural offerings in New York City, Los Angeles, San Francisco, Chicago, Miami, and London – with more cities on the way.


text:
require 'openssl'
require 'thread'
require 'cluster_def'

#
# Constant string which defines the default attributes which
# need to be retrieved from node objects
# The format is hash { key => value , key => value }
# Key will be used as the key in the search result which is a hash
# and the value is the node attribute which needs
# to be included in the result. Attribute hierarchy can be expressed as a
# dot seperated string. User the following
# as an example
#

# For Kerberos to work we need FQDN for each host. Changing "HOSTNAME" to "FQDN".
# Hadoop breaks principal into 3 parts  (Service, FQDN and REALM)

HOSTNAME_ATTR_SRCH_KEYS = {'hostname' => 'fqdn'}.freeze
HOSTNAME_NODENO_ATTR_SRCH_KEYS = {'hostname' => 'fqdn',
                                  'node_number' => 'bcpc.node_number',
                                  'zookeeper_myid' => 'bcpc.hadoop.zookeeper.myid'}.freeze
MGMT_IP_ATTR_SRCH_KEYS = {'mgmt_ip' => 'bcpc.management.ip'}.freeze

def init_config
  begin
     $dbi = Chef::DataBagItem.load('configs', node.chef_environment)
     $edbi = Chef::EncryptedDataBagItem.load(
       'configs', node.chef_environment) if node['bcpc']['encrypt_data_bag']
     puts "============ Loaded existing data_bag_item \"configs/#{node.chef_environment}\""
  rescue
     $dbi = Chef::DataBagItem.new
     $dbi.data_bag('configs')
     $dbi.raw_data = { 'id' => node.chef_environment }
     $dbi.save
     $edbi = Chef::EncryptedDataBagItem.load(
       'configs', node.chef_environment) if node['bcpc']['encrypt_data_bag']
     puts "++++++++++++ Created new data_bag_item \"configs/#{node.chef_environment}\""
  end
end

def make_config(key, value)
  init_config if $dbi.nil?
  if $dbi[key].nil?
    $dbi[key] = (node['bcpc']['encrypt_data_bag'] ? Chef::EncryptedDataBagItem.encrypt_value(value, Chef::EncryptedDataBagItem.load_secret) : value)
    $dbi.save
    $edbi = Chef::EncryptedDataBagItem.load('configs', node.chef_environment) if node['bcpc']['encrypt_data_bag']
    puts "++++++++++++ Creating new item with key \"#{key}\""
    return value
  else
    puts "============ Loaded existing item with key \"#{key}\""
    return (node['bcpc']['encrypt_data_bag'] ? $edbi[key] : $dbi[key])
  end
end

def make_config!(key, value)
  init_config if $dbi.nil?
  $dbi[key] = (node['bcpc']['encrypt_data_bag'] ? Chef::EncryptedDataBagItem.encrypt_value(value, Chef::EncryptedDataBagItem.load_secret) : value)
  $dbi.save
  $edbi = Chef::EncryptedDataBagItem.load('configs', node.chef_environment) if node['bcpc']['encrypt_data_bag']
  puts "++++++++++++ Updating existing item with key \"#{key}\""
  value
end

def get_hadoop_heads
  results = fetch_all_nodes.select { |hst| hst[:runlist].include? "role[BCPC-Hadoop-Head]" }
  if results.any?{|x| x['hostname'] == node[:hostname]}
    results.map!{|x| x['hostname'] == node[:hostname] ? node : x}
  else
    results.push(node) if node[:roles].include? "BCPC-Hadoop-Head"
  end
  return results.sort_by{ |h| h[:node_id]}
end

def get_timeline_servers
  results = Chef::Search::Query.new.search(:node, "roles:BCPC-Hadoop-Head-YarnTimeLineServer AND chef_environment:#{node.chef_environment}").first
  if results.any? { |x| x['hostname'] == node['hostname'] }
    results.map! { |x| x['hostname'] == node['hostname'] ? node : x }
  elsif node['roles'].include? 'BCPC-Hadoop-Head-YarnTimeLineServer'
    results.push(node)
  end
  results.sort
end

def get_quorum_hosts
  results = fetch_all_nodes.select { |hst| hst[:runlist].include? "role[BCPC-Hadoop-Quorumnode]" or hst[:runlist].include? "role[BCPC-Hadoop-Head]" }
  if results.any?{|x| x['hostname'] == node[:hostname]}
    results.map!{|x| x['hostname'] == node[:hostname] ? node : x}
  else
    results.push(node) if node[:roles].include? "BCPC-Hadoop-Quorumnode"
  end
  return results.sort_by{ |h| h[:node_id]}
end

def get_hadoop_workers
  results = fetch_all_nodes.select { |hst| hst[:runlist].include? "role[BCPC-Hadoop-Worker]" }
  if results.any?{|x| x['hostname'] == node[:hostname]}
    results.map!{|x| x['hostname'] == node[:hostname] ? node : x}
  else
    results.push(node) if node[:roles].include? "BCPC-Hadoop-Worker"
  end
  return results.sort_by{ |h| h[:fqdn]}
end

def get_namenodes
  # Logic to get all namenodes if running in HA
  # or to get only the master namenode if not running in HA
  if node['bcpc']['hadoop']['hdfs']['HA']
    nn_hosts = fetch_all_nodes.select { |hst| hst[:runlist].include? "role[BCPC-Hadoop-Head-Namenode]" or hst[:runlist].include? "role[BCPC-Hadoop-Head-Namenode-Standby]" }
  else
    nn_hosts = fetch_all_nodes.select { |hst| hst[:runlist].include? "role[BCPC-Hadoop-Head-Namenode-NoHA]" }
  end
  return nn_hosts.uniq{ |x| float_host(x[:hostname]) }.sort_by{ |h| h[:node_id]}
end

def get_nodes_for(recipe, cookbook = cookbook_name)
  results = Chef::Search::Query.new.search(:node, "recipes:#{cookbook}\\:\\:#{recipe} AND chef_environment:#{node.chef_environment}").first
  results.map! { |x| x['hostname'] == node['hostname'] ? node : x }
  recipes = node.run_list.expand(node.chef_environment).recipes
  if recipes.include?("#{cookbook}::#{recipe}") && !results.include?(node)
    results.push(node)
  end
  results.sort
end

def get_binary_server_url
  return("http://#{node['bcpc']['bootstrap']['vip']}/") if node['bcpc']['binary_server_url'].nil?
#XXX remove?  return("http://#{URI(Chef::Config['chef_server_url']).host}/") if node['bcpc']['binary_server_url'].nil?
  node['bcpc']['binary_server_url']
end

def secure_password(len = 20)
  pw = ''
  pw << ::OpenSSL::Random.random_bytes(1).gsub(/\W/, '') while pw.length < len
  pw
end

def float_host(*args)
  return ('f-' + args.join('.')) if node['bcpc']['management']['ip'] != node['bcpc']['floating']['ip']
  args.join('.')
end

def storage_host(*args)
  return ('s-' + args.join('.')) if node['bcpc']['management']['ip'] != node['bcpc']['floating']['ip']
  args.join('.')
end

def znode_exists?(znode_path, zk_host = 'localhost:2181')
  require 'rubygems'
  require 'zookeeper'
  rc = Zookeeper::Constants::ZSYSTEMERROR
  begin
    zk = Zookeeper.new(zk_host)
    raise "znode_exists : Unable to connect to zookeeper quorum #{zk_host}" unless zk.connected?
    r = zk.get(path: znode_path)
    rc = r[:rc]
  ensure
    zk.close if !zk.nil? && !zk.closed?
  end

  return true if rc == Zookeeper::Constants::ZOK
  return false if rc == Zookeeper::Constants::ZNONODE

  raise "get znode #{znode_path} failed with rc = #{rc}, zk_host=#{zk_host}"
end

#
# Function to retrieve commonly used node attributes.
# Minimizes calls to the chef server.
#
def set_hosts
  if node.run_state['cluster_def'].nil? then
    node.run_state['cluster_def'] = BACH::ClusterDef.new(node_obj: node)
  end
  hosts = node.run_state['cluster_def'].fetch_cluster_def

  # host search helper lambdas
  runs_role = Proc.new { |host, role| role && host[:runlist].include?(role) }
  runs_recipe = Proc.new { |host, recipe| recipe && host[:runlist].include?(recipe) }

  # mapped host objects
  to_host = Proc.new do |host| {
    'hostname' => host[:fqdn],
    'node_number' => host[:node_id],
    'zookeeper_myid' => nil
  } end

  node['bcpc']['hadoop']['services'].each do |name, service|
    *keys, last = ['bcpc', 'hadoop', *service['key']]
    keys.inject(node.default, :fetch)[last] =
      hosts.select do |h|
        runs_role.call(h, service['role']) ||
        runs_recipe.call(h, service['recipe'])
      end.map do |h|
        to_host.call(h)
      end
  end

  # set the oozie_url
  oozie_hosts = node['bcpc']['hadoop']['oozie_hosts']
  vip_host = float_host(node['bcpc']['management']['viphost'])
  first_host = float_host(oozie_hosts.first['hostname'])
  oozie_ha_port = node['bcpc']['hadoop']['oozie_ha_port']
  oozie_port = node['bcpc']['hadoop']['oozie_port']

  node.default['bcpc']['hadoop']['oozie_url'] =
    if oozie_hosts.length > 1
      # high-availability
      "http://#{vip_host}:#{oozie_ha_port}/oozie"
    elsif oozie_hosts.length == 1
      # single oozie host
      "http://#{first_host}/#{oozie_port}/oozie"
    end

  # set the resourcemanager_url (rm_address)
  rm_hosts = node['bcpc']['hadoop']['rm_hosts']
  first_host = float_host(rm_hosts.first['hostname'])
  rm_port = node['bcpc']['hadoop']['yarn']['resourcemanager']['port']

  node.default['bcpc']['hadoop']['rm_address'] =
    if rm_hosts.length > 1
      # high-availability
      node.chef_environment
    elsif rm_hosts.length == 1
      # single resourcemanager host
      "#{first_host}:#{rm_port}"
    end
end

#
# Restarting of hadoop processes need to be controlled in a way that all the nodes
# are not down at the sametime, the consequence of which will impact users. In order
# to achieve this, nodes need to acquire a lock before restarting the process of interest.
# This function is to acquire the lock which is a znode in zookeeper. The znode name is the name
# of the service to be restarted for e.g "hadoop-hdfs-datanode" and is located by default at "/".
# The imput parameters are service name along with the ZK path (znode name), string of zookeeper
# servers ("zk_host1:port,sk_host2:port"), and the fqdn of the node acquiring the lock
# Return value : true or false
#
def acquire_restart_lock(znode_path, node_name, zk_hosts = 'localhost:2181')
  require 'zookeeper'
  lock_acquired = false
  zk = nil
  begin
    zk = Zookeeper.new(zk_hosts)
    raise "acquire_restart_lock : unable to connect to ZooKeeper quorum #{zk_hosts}" unless zk.connected?
    ret = zk.create('path' => znode_path, 'data' => node_name)
    lock_acquired = true if ret[:rc] == Zookeeper::Constants::ZOK
  rescue => e
    puts e.message
  ensure
    zk.close if !zk.nil? && !zk.closed?
  end
  lock_acquired
end

#
# This function is to check whether the lock to restart a particular service is held by a node.
# The input parameters are the path to the znode used to restart a hadoop service, a string containing the
# host port values of the ZooKeeper nodes "host1:port, host2:port" and the fqdn of the host
# Return value : true or false
#
def my_restart_lock?(znode_path, node_name, zk_hosts = 'localhost:2181')
  require 'zookeeper'
  my_lock = false
  zk = nil
  begin
    zk = Zookeeper.new(zk_hosts)
    raise "my_restart_lock?: unable to connect to ZooKeeper quorum #{zk_hosts}" unless zk.connected?
    ret = zk.get(path: znode_path)
    val = ret['data']
    my_lock = true if val == node_name
  rescue => e
    puts e.message
  ensure
    zk.close if !zk.nil? && !zk.closed?
  end
  my_lock
end

#
# Function to release the lock held by the node to restart a particular hadoop service
# The input parameters are the name of the path to znode which was used to lock for restarting service,
# string containing the zookeeper host and port ("host1:port,host2:port") and the fqdn
# of the node trying to release the lock.
# Return value : true or false based on whether the lock release was successful or not
#
def rel_restart_lock(znode_path, node_name, zk_hosts = 'localhost:2181')
  require 'zookeeper'
  lock_released = false
  zk = nil
  begin
    zk = Zookeeper.new(zk_hosts)
    raise "rel_restart_lock : unable to connect to ZooKeeperi quorum #{zk_hosts}" unless zk.connected?
    raise 'rel_restart_lock : node who is not the owner is trying to release the lock' unless my_restart_lock?(znode_path, node_name, zk_hosts)
    ret = zk.delete('path' => znode_path)
    lock_released = true if ret[:rc] == Zookeeper::Constants::ZOK
  rescue => e
    puts e.message
  ensure
    zk.close if !zk.nil? && !zk.closed?
  end

  lock_released
end

#
# Function to get the node name which is holding a particular service restart lock
# Input parameters: The path to the znode (lock) and the string of zookeeper hosts:port
# Return value    : The fqdn of the node which created the znode to restart or nil
#
def get_restart_lock_holder(znode_path, zk_hosts = 'localhost:2181')
  require 'zookeeper'
  begin
    zk = Zookeeper.new(zk_hosts)
    raise "get_restart_lock_holder : unable to connect to ZooKeeper quorum #{zk_hosts}" unless zk.connected?
    ret = zk.get(path: znode_path)
    val = ret['data'] if ret[:rc] == Zookeeper::Constants::ZOK
  rescue => e
    puts e.message
  ensure
    zk.close if !zk.nil? && !zk.closed?
  end
  val
end

#
# Function to generate the full path of znode which will be used to create a restart lock znode
# Input paramaters: The path in ZK where znodes are created for the retart locks and the lock name
# Return value    : Fully formed path which can be used to create the znode
#
def format_restart_lock_path(root, lock_name)
  return "/#{lock_name}" if root.nil?
  return "/#{lock_name}" if root == '/'
  "#{root}/#{lock_name}"
end

#
# Function to identify start time of a process
# Input paramater: string to identify the process through pgrep command
# Returned value : The starttime for the process. If multiple instances are returned from pgrep
# command, time returned will be the earliest time of all the instances
#
def process_start_time(process_identifier)
  require 'time'
  begin
    target_process_pid = `pgrep -f #{process_identifier}`

    return nil if target_process_pid == ''

    target_process_pid_arr = target_process_pid.split('\n').map { |pid| `ps --no-header -o lstart #{pid}`.strip }
    start_time_arr = []
    target_process_pid_arr.each do |t|
      start_time_arr.push(Time.parse(t)) if t != ''
    end
    return start_time_arr.sort.first.to_s
  end
end

#
# Function to check whether a process was started manually after restart of the process failed during prev chef client run
# Input paramaters : Last restart failure time, string to identify the process
# Returned value   : true or false
#
def process_restarted_after_failure?(restart_failure_time, process_identifier)
  require 'time'
  begin
    start_time = process_start_time(process_identifier)
    if not start_time.nil? && (Time.parse(restart_failure_time).to_i < Time.parse(start_time).to_i)
      Chef::Log.info("#{process_identifier} seem to be started at #{start_time} after last restart failure at #{restart_failure_time}")
      return true
    end

    return false
  end
end

def user_exists?(user_name)
  user_found = false
  chk_usr_cmd = "getent passwd #{user_name}"
  Chef::Log.debug("Executing command: #{chk_usr_cmd}")
  cmd = Mixlib::ShellOut.new(chk_usr_cmd, 'timeout' => 10).run_command
  user_found = true if cmd.exitstatus == 0

  user_found
end

def group_exists?(group_name)
  chk_grp_cmd = "getent group #{group_name}"
  Chef::Log.debug("Executing command: #{chk_grp_cmd}")
  cmd = Mixlib::ShellOut.new(chk_grp_cmd, 'timeout' => 10).run_command
  cmd.exitstatus == 0 ? true : false
end

def get_group_action(group_name)
  group_exists?(group_name) ? :manage : :create
end

def vip?
  cmd = Mixlib::ShellOut.new(
    'ip addr show', 'timeout' => 10
  ).run_command
  cmd.stderr.empty? && cmd.stdout.include?(node['bcpc']['management']['vip'])
end

# Internal: Check if oozie server is running on the given host.
#
# host - Endpoint (FQDN/IP) on which Oozie server is available.
#
# Examples
#
#   oozie_running?("f-bcpc-vm2.bcpc.example.com")
#   # => true
#
# Returns true if oozie server is operational
# with 'NORMAL' status, false otherwise.
def oozie_running?(host)
  oozie_url = "sudo -u oozie oozie admin -oozie http://#{host}:11000/oozie -status"
  cmd = Mixlib::ShellOut.new(
    oozie_url, 'timeout' => 20
  ).run_command
  Chef::Log.debug("Oozie status: #{cmd.stdout}")
  cmd.exitstatus == 0 && cmd.stdout.include?('NORMAL')
end

# Internal: Have the specified Oozie host update its ShareLib
#           to the latest lib_<timestamp>
#           sharelib directory on hdfs:/user/oozie/share/lib/,
#           without having to restart
#           that Oozie server. Oozie server, by default, uses
#           the latest one when it (re)starts.
#
# host - Endpoint (FQDN/IP) on which Oozie server is available.
#
# Returns nothing.
def update_oozie_sharelib(host)
  if oozie_running?(host)
    update_sharelib = "sudo -u oozie oozie admin -oozie http://#{host}:11000/oozie -sharelibupdate"
    cmd = Mixlib::ShellOut.new(
      update_sharelib, 'timeout' => 20
    ).run_command
    if cmd.exitstatus == 0
      Chef::Log.info("Sharelibupdate: Updated sharelib on #{host}")
    else
      Chef::Log.info("Sharelibupdate: sharelibupdate command failed on #{host}")
      Chef::Log.info("  stdout: #{cmd.stdout}")
      Chef::Log.info("  stderr: #{cmd.stderr}")
    end
  else
    Chef::Log.info("Sharelibupdate: Oozie server not running on #{host}")
  end
end