text:
Mark Cuban mentions drafting Brittney Griner because 'hey everybody, let's look at Mark Cuban!'
Kelly Dwyer
April 3, 2013, 10:00 AM
This is the part of our job that we hate, criticizing someone for speaking freely and accurately, but probably needlessly. Dallas Mavericks owner Mark Cuban wields a strong hand when it comes to scouting and appraising his team's personnel moves, and on Tuesday he made these remarks concerning a potential drafting of Baylor center Brittney Griner, women's college basketball's all-time leading shot-blocker:
"If she is the best on the board, I will take her," Cuban said before the Mavs' Tuesday night game against the Los Angeles Lakers. "I've thought about it. I've thought about it already. Would I do it? Right now, I'd lean toward yes, just to see if she can do it. You never know unless you give somebody a chance, and it's not like the likelihood of any late-50s draft pick has a good chance of making it."
"She'd still have to make the team," Cuban said. "I'm not going to carry her just to carry her. I don't think, anyways. But I certainly wouldn't be opposed to giving her the opportunity."
Cuban acknowledged that Griner playing in the NBA's Las Vegas summer league would have tremendous marketing potential.
"It would, wouldn't it? See how she could do?" Cuban said. "That'd sell out a few games."
There's one problem with this. The Phoenix Mercury have won the rights to the first pick in this month's WNBA draft, and are certain to select Griner tops overall.
There's also one problem with my last paragraph. There are actually many, many problems with all of this.
To start, we're put in the unfortunate position of breaking down Griner's skills in comparison to the lower rung second round picks she'd be competing against in the NBA's Summer League in July of this year. Griner's overall touch, skill, and basketball IQ have grown considerably in her four years at Baylor, and she's clearly a player for the ages. She's averaged over 23 points per game in each of the last three seasons, a remarkable achievement considering the slow pace, shorter play clock of the college game, and the significant defensive attention sent her way. Those 736 career blocks, most ever for a male or female college basketball player, were mostly collected because of her superior timing.
At her core, though, she relies on devastating athleticism and a long wingspan to deter opponents defensively and act as an interior centerpiece offensively. Famously, she dunked the ball 18 times in her college career, including 11 times as a senior. This is a once-in-a-generation athlete.
Compare her to current Mavericks "center" Brendan Wright, though, who is undersized at his position (skinny and 6-foot-9) and unique by NBA standards. He too relies on length and hops to compete at the NBA level, and yet it took him years in the wilderness — just four starts in four years between 2009 and 2013 — to work his way up to being an unorthodox center on a 10th-place team.
There have been other recent defense-first types to make an impact at (maybe) 6-foot-9. Ben Wallace was a defensive mastermind, but hardly someone who could get much more than his wrist above the rim even dating back to his time in Washington. Still, centers like Griner (even playing down a spot at power forward) just don't tend to make the cut at "6-foot-8 and can sometimes dunk."
If you're feeling uneasy about this guy breaking down the relative NBA merits of a 22-year-old woman who never asked for such reification, you should. It's awful that we're even here.
Of course, we won't ever get there. The WNBA will have Griner's rights as a professional on April 15, and the NBA's draft won't even take place until June 27, with Cuban unable to even sign his rookies until a week later when the NBA lifts its moratorium on personnel signings and movement. Cuban, with significant cap room this summer, probably wouldn't decide to get into a bidding war with a WNBA team's rookie scale contract just to shoot for a soap opera. But he's exactly the sort of person that would float it out there in April and with his team nearing NBA irrelevancy in the 2012-13 season, just to draw eyes. Remember, this is the same guy who thinks that getting in Twitter fights with Donald Trump is a sound use of his time.
It's all very pointless. The Mavericks are now a just-about lock to miss the playoffs in 2013 after being swept from the first round of the postseason in 2012, and Cuban is rightfully taking the heat for a swift downward spiral from Dallas' championship year in 2011. And instead of talking about the summer of 2012 as another offseason gone wrong (which could lead to the summer of 2013, with the best free agents unlikely to leave their teams, and yet another offseason gone wrong), or the Mavericks missing the playoffs for the first time with Cuban as owner for an entire season, this "story" is what will dot the sports sections. You're right to ignore it, but I'm not doing my job if I don't tear it to bits.
Cuban wasn't wrong in any of his breakdowns. Picks selected in the 50s rarely make the NBA. If Brittney Griner were the best player available (which, nothing against her, she won't be), he would take her. She would sell tickets at the Summer League.
Why go there, though? At least a professional scumbag like Trump welcomes these bleatings. It's true that Griner handled Cuban's words with cheerful aplomb on Twitter on Tuesday night, but that's to her credit and not Cuban's. And it is worth mentioning that Cuban is a little slow on his roll when he talks about his team having a draft pick in the "late 50s." Your team's not that good anymore, Mark. Dallas is currently slated to draft 43rd in the second round. And, if they decide to use their option to swap picks with the Lakers, they'll draft 44th.
All of these are wasted words because none of this will happen, and frankly none of this should happen. Brittney Griner has the potential to be a franchise-leading, league-dominating superstar in the WNBA. That's the sort of pressure and expectation we should be placing on her, because these are expectations she's fit to handle. To probably exceed.
She's not a gimmick to be gawked at and over-scrutinized by the collection of NBA executives and bored NBA freaks who watch the Summer League every year. No, at that point in her summer schedule she's supposed to be here, doing damage for the Phoenix Mercury and leading a turnaround for a proud franchise that has been in the WNBA Finals four times, while winning the championship in 2007 and 2009.
This is her sport, and soon to be her profession. Why talking heads and now NBA owners continually and pointlessly have to judge Brittney Griner in the reflection of her middling male counterparts shows that we still have so, so far to come. I sincerely hope that this is the last time any of us have to write a column like this.
It's not marketing genius, sports fans. It's a lack of imagination.
Other popular content on Yahoo! Sports:
• Rutgers fires Mike Rice after video goes public
• San Francisco 49ers offensive coordinator a victim of his own success
• Lakers retire Shaquille O'Neal's No. 34 jersey
• Texas Rangers' Yu Darvish falls one out short of a perfect game


Spacer bar, antiqued copper, 14x4mm 3-strand beaded rectangle. Sold per pkg of 12.
Get the same great-selling sterling silver finding style in economical copper metal with antiqued copper plating. With the rising costs of precious metals, copper is widely becoming a budget-friendly material for jewelry designers. Copper items are re-plated with copper for even greater luster, then antiqued. Due to the handcrafted nature of the spacer bars, size, shape and color may vary.
Spacer, antiqued copper, 15x6mm 3-strand beaded triple round, fits up to 4mm bead. Sold per pkg of 12.
Spacer bar, copper, 17x3mm 3-strand smooth rectangle. Sold per pkg of 12.
Spacer bar, antiqued copper-finished "pewter" (zinc-based alloy), 23x4mm double-sided 2-strand beaded rectangle and 3-strand rectangle with flower design. Sold per pkg of 12.
Spacer bead, antiqued sterling silver, 16x6mm 3-strand smooth rectangle with double-sided dots design. Sold individually.
Spacer bar, copper, 11x3mm 2-strand smooth rectangle. Sold per pkg of 20.
Spacer bead, antiqued sterling silver and copper, 16x6mm 2-strand smooth rectangle with double-sided swirl design. Sold individually.
Spacer bead, antiqued sterling silver and copper, 12x4mm 2-strand smooth rectangle with double-sided swirl design. Sold individually.
Spacer bead, antiqued sterling silver and copper, 26x6mm 2-strand smooth rectangle with double-sided swirl design. Sold individually.
Spacer bead, antiqued sterling silver and copper, 27x6mm 4-strand smooth rectangle with double-sided dots design. Sold individually.


Lisa Marie Presley has confirmed she's pregnant with husband Michael Lockwood's baby.
Elvis's daughter, 40, has been criticised recently for putting on weight, but now it seems she has a good reason.
'I am in fact pregnant,' she writes on her MySpace page.
The baby will be the couple's first child. They married in 2006.
Lisa has 2 children, daughter Riley, 18, and son Benjamin, 15, from a previous marriage to Danny Keough.


text:
Ballots still to count in tight New Castle race
News | April 3, 2018
Alex Zorn
Scott Owens
While New Castle voters want to see four more years of Scott Owens and Bruce Leland on the town's council, the final determination for a third seat will have to wait.
Owens and Leland secured the most votes in Tuesday's mail ballot election, with 385 and 361 votes, respectively.
Meanwhile, two candidates without any prior town council experience, Brandy Copeland and Joe Urnise, were locked in a tight race with several ballots still to be cured and counted. The three candidates with the most votes are to be elected to the town council.
According to the unofficial results released Tuesday night, Copeland had 322 votes to 321 for Urnise.
New Castle Town Clerk Melody Harrison said the town has eight ballots with challenged signatures, and six military and overseas voters with ballots that are still out. On top of those 14 ballots, an additional 14 ballots were held to ensure voter anonymity, leaving potentially 28 more ballots still to count.
Harrison said voters will not know the official results until April 13 at the earliest, when the ballots are to be canvassed.
"I thought it might be tight, but I'm shocked. I did not think I would win," Copeland said after hearing the news.
She said that she wanted to wait until the results are official before she starts doing any celebrating.
With a 64-vote margin between Owens and Urnise, it appears New Castle voters were content with seeing any of the four candidates on the board for the next four years.
"There was not much arguing between us," Copeland added.
Leland has served on the town council since 2006 while Owens joined two years ago. Copeland currently serves on the town's Planning and Zoning Commission.
Mayor Art Riddile, running unopposed in the election, was re-elected to a second term with 443 votes.
Democrat announces challenge to Martin's Garfield County Commission seat
Former Carbondale trustee Katrina Byars said she wants to bring a voice of environmental sustainability to the commission, and believes her opponent has served long enough.
Aspen Public Radio removes bulk of music programming , moves to focus on news
Doctor's Tip: Carbohydrates, the good and the bad
Sextiped Valley: Dogs also need K–12 education
Sunlight Mountain 0" 0" 30"

redpajama_set_name: RedPajamaCommonCrawl


Avaya has purchased videoconferencing company Radvision for $230 million, the company announced today.
Avaya will integrate the videoconferencing capabilities of Radvision into its unified communications platform, it said.
Avaya purchased Radvision for $11.85 per share. Radivision stock closed the day on Wednesday trading at $11.20.
Check back to Network World later today for more information.


The present research aims to explain within-gender differences in competitive bargaining performance by introducing an individual difference approach to the gender and negotiations literature. We propose that women in male-dominated fields who perceive their gender and professional roles as highly compatible — high on gender/professional identity integration — are more effective in competitive bargaining. In Study 1, business women's state gender/profession identity integration, but not men's, was positively associated with economic performance and the absence of social backlash. In Study 2, state identity integration among business women was linked with greater propensity to bargain due to reduced social backlash concerns. In Study 3, women in STEM fields higher on identity integration negotiated better economic outcomes in a face-to-face salary negotiation. In Studies 4 and 5, we examined the casual direction between recall of gender/profession identity compatibility and women's negotiations performance. Results revealed convergent evidence with the effects observed with state gender/profession identity integration in the quasi-field studies suggesting that gender/professional identity compatibility is a unique psychological force facilitating women's bargaining performance. We discuss the implications of the findings to social psychology theory and research and women's professional advancement.


WARNING: YUCK FACTOR 10/10. We've done so many videos showing what happens when I wash so many things such as greens, fruits, vegetables, berries, and MORE! Here's a short compilation of our pesticide removal videos.
And check out our "Pesticides" playlist.


text:
Q: ZigBee Light Link product with custom gateway Background information
The company where I do my internship is developing a smart home cloud solution with it's focus on B2B. We have already connected several LoRa and EnOcean products to our cloud that are working fine. Now our PR department would like to have a connection with Philips Hue for demonstration purposes.
As some might know, all Philips Hue devices are connected to a bridge using ZigBee (Light Link protocol). One can interact with the lamps using the rest API that is provided by the bridge.
We have an Rexense RG4100 ZigBee/WiFi gateway. Our idea is to remove the Philips Hue led ligths from their bridge and connect them directly to the Rexense gateway. The gateway will have an open connection to our server that we can use to control the lights. We already tested the Rexense gateway and came to the conclusion that it is possible to keep an open connection with our server and that the ZigBee gateway is working (we can send AT commands and receive a response).
Problem
Our problem is is that we don't know how we can connect the Philips Hue lights to our Rexense gateway. While searching the internet, I found several articles. Some say it's possible, some say it's not. (for example: Direct ZigBee communication with Philips Hue Smart Light Bulbs)
I also found another article saying that it is possible, but that you need a master key. The only option to get this masterkey would be by joining the ZigBee Alliance, which will cost a minimum of $4000 each year.
Philips is also creating a remote API to access the bridge from outside a WiFi network. This would be the easiest option, but unfortunately it is still in a testing phase and it is not yet announced when the remote API will be available.
Question
My main question is: is it possible to connect the Philips Hue lamps to a custom (Rexense RG4100) gateway?
If yes, I would like some help on how to do this. Some articles on explaining it would be awesome! (I could't find these, but perhaps I didn't use the correct search terms).
Do we also need the master key to get this done?
Thanks for any information!

redpajama_set_name: RedPajamaStackExchange


text:
LongAndWastedYear
listening to bob dylan – one week at a time
The Old Dylan Returns
You should hear the ovation. It wells. It rises. It overcomes the crowd. There is a rush that moves through the Fox Warfield Theatre on November 9, 1980 as the assembled onlookers suddenly realize: Bob Dylan is playing a song we know. Bob Dylan is playing a song we like. Bob Dylan is playing "Like a Rolling Stone"! They actually scream with delight all the way through the first line and into the second before they begin to listen to him. Bob Dylan is playing "Like a Rolling Stone"!
For the second year in a row, Dylan did a residency in November in San Francisco. At the first show it opened as his Gospel Tours did: some songs from the back-up singers. His own set begins with "Gotta Serve Somebody" and "I Believe in You", the same openers from the year before. The crowd is expecting more of the same. Then those opening chords and a sort of "Well, that sounds like, but no it couldn't be, but, oh holy shit, it really is, I'm going to freak out now and start screaming" reaction to his biggest ever hit. Secular Dylan is back!
It doesn't last long. He moves on to "Man Gave Names to All the Animals", "Precious Angel", and "Ain't Gonna Go to Hell" but then it happens again: "Girl From the North Country"! The second half of the show is similarly mostly gospel music, but he also does "Just Like a Woman" and "Señor (Tales of Yankee Power)". The encore is "Blowin' in the Wind". Bob Dylan is back, baby!
The whole Warfield residency sounds really good. As I mentioned earlier, 1980 is a great year vocally for Dylan because he believes in what he's singing. The addition of these, and other, classics into his set completely revitalizes them (again, this is about the fourth time some of these songs have been totally revivified). I didn't have time to listen to a dozen shows this week, but I really want to. This seems to be really peak material.
A number of the shows are notable for their guest appearances:
12 November has the only ever live performance of "Caribbean Wind"
13 November has the first ever performance of "Groom's Still Waiting at the Altar" and a guest appearance by Carlos Santana
15 November is a guest slot for Mike Bloomfield on "Like a Rolling Stone", which, of course, he played on the original album. Bloomfield died a few months after this show of an overdose.
16 November Jerry Garcia plays guitar on about ten songs, the first time (of many) that Dylan and Garcia performed together
19 November has a guest spot by Maria Muldaur
22 November has Roger McGuinn
These shows are still more religious than retrospective. This will be quite different by summer 1981, when, during The Shot of Love Tour, there would be more of his past hits and only a smattering of religious music. This is the beginning of the end of the Dylan gospel phase, although it is clear that his personal spiritual journey was far from over. They are also, for the most part, very good shows (Garcia and Dylan sound a little rough together at times in that show, very muddied. Maybe I just don't like the Grateful Dead sound).
I have to say, I wound up liking the Dylan of 1980 far more than I ever dreamed I would. There's been a wide variety of things to hold my interest and things to learn and discover. This was a good year for him. It's no 1975 (but what is?) but it is far more interesting than, for instance, 1970. I never would have guessed that.
Onward to the Reagan era!
Here's Dylan and Garcia playing "To Ramona", the first song that they ever played live together:
The Gospel Tours
Bob Dylan, Reaganite


Visit our LARGE SHOWSITE! We're open 6 days a week!
Directions From Carmarthen: Come to Cross Hands roundabout, go all the way around & take the last exit (A476 Llanelli ) down to the MAIN traffic lights on the square, go straight across the lights and you'll find us on the main road approx half mile up the hill on your left hand side.
Directions From Swansea: Come to Cross Hands roundabout, take the first exit (A476 Llanelli ) down to the MAIN traffic lights on the square, go straight across the lights and you'll find us on the main road approx half mile up the hill on your left hand side.


text:
January 12, 2023 08.i.23 Holy Family / Asia / Culture / Features / Philippines / UCA News
Philippine bishops issue appeal for stranded ship's crew – UCA News
Owner of Chinese vessel under fire for leaving 30 Filipinos in lurch in Australia with no plans to repatriate them.
Bishop Ruperto Santos of Balanga (Photo: YouTube screenshot)
By UCA News reporter, Manila
Published: January 12, 2023 07:55 AM GMT
The Catholic Bishops' Conference of the Philippines (CBCP) has expressed concern over the well-being of 30 seafarers from the Philippines stranded in Australia after the owner of their China-based vessel abandoned them.
The crew members of the cargo ship, Yangtze Fortune, are stranded after being allegedly abandoned by their shipping company, Soar Harmony Shipping of China, on Jan. 4.
On Jan. 11, the Philippine prelates urged the faithful to give shelter to the seafarers.
The CBCP also launched a scathing attack on the employer for leaving the sailors in a foreign land and for violating international maritime laws.
"We strongly condemn this despicable exploitation of our workers. We deplore this unjust treatment of the crew, currently stranded in Australia, whose only dream was to give their families a better life," Bishop Ruperto Santos of Balanga , chairman of the CBCP's Maritime Commission, told reporters.
According to the International Transport Workers' Federation (ITF), Yangtze Fortune was seized in Portland, Victoria state by the Australian Federal Court.
"There have been no plans to repatriate them"
The ship, registered in Liberia, anchored near Portland in October due to court proceedings in Australia, initiated by creditors from Singapore to recover debts owed to them by the vessel owner.
READ ON BELOW…
Pope Benedict vs the calculating elites – spiked
Simple Waiver Questions. Perhaps the Holy Spirit was not wrong…: STILUM CURIAE


text:
Q: WinUI 3.0 - Why UWP project is asking for MS Edge for Business for WebView2 When I use WebView2 control in a UWP project with WinUI 3.0 and run the app, the webpage inside WebView2 control is not displayed. Instead, the app displays the following message that takes me to Microsoft Edge for Business download page:

a suitable version of Microsoft edge was not detected. Please install the latest beta channel build from here

Question: Why it's asking for Microsoft Edge for Business? I already have the latest version of MS Edge Canary Channel and the latest release version MS Edge installed on my Windows 10 - Pro. I don't want to install too many versions.
MainPage.xaml:
<Page
  x:Class="UWP_WinUI.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="using:UWP_WinUI"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  mc:Ignorable="d"
  Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button x:Name="myButton" Click="myButton_Click">Click Me</Button>
        <WebView2 x:Name="wvTest" Grid.Row="1" Source="https://www.bing.com/"/>
    </Grid>
</Page>

Display of the app
The webpage is supposed to display in the WebVeiw2 below the button control. But instead, the message (shown below) is displayed:

A:
When I use WebView2 control in a UWP project with WinUI 3.0 and run the app, the webpage inside WebView2 control is not displayed. Instead, the app displays the following message that takes me to Microsoft Edge for Business download page

You can use Webview2 in below platforms based on Getting Started:

*

*Win32

*C/C++

*WPF

*WinForms

UWP is not one of them. Because UWP is Windows Store App while all the above platforms are Windows Desktop App. So if you want to use Webview2 in your app, you need to switch the platform that you are using. WPF could be a good choice.

A: For "WinUI 3.0 Desktop" it is now a supported platform of WebView2, check out this site for details: https://learn.microsoft.com/en-us/microsoft-edge/webview2/gettingstarted/winui.
If you plan to ship your WinUI 3.0 app is a UWP app there might be some limitations though, frankly I am no sure on that combo.


text:
Investments Made Paying Off
Engagement Rises As The NBA Playoffs Unfold
The buildings are filling, the anticipation is rising, the stars are shining. It's the 2021 NBA Playoffs, the culmination of 18 months of disruption, innovation, change and storytelling that has been historic in so many ways. From the stoppage of play a year ago March, to the "Bubble" championship by the Los Angeles Lakers last fall, to the late start and return to play last winter in the midst of social unrest, empty arenas and uncertainty of how the pandemic would affect play, the business, and engagement of the NBA, its players and its partners has been nothing but challenging. Then you factor in the angst amongst those who still rely on traditional "measurement," and the pivoting to new ways of thinking and engagement, and you have a picture as we go deeper into the playoffs that is in some ways unclear but in many ways pointing to reinforce some things anyone in sport would hope to see. The content of the NBA and its teams and players continues to be diverse and engaging. Stars drive awareness and most importantly, even the casual, distracted fan will find his or her way to the conversation as we head towards the Finals. When looking at the numbers through the lens not just of the early rounds of these playoffs, but through the last year, the data backs up the excitement, on the court, in the stands, and growth of the NBA on a global scale.
Interest In Playoffs Keep Rising
Adam Silver's team put great emphasis on the adjusted schedule the past two years, with the goal of delivering compelling and competitive playoff scenarios. One element into the mix was the NBA Play-In Tournament, which drew the ire of some players, but in reality, showed innovation and helped interest and competitive balance rise. The social numbers proved it out. This year's Play-In Tournament drew fan interest successfully, with participating teams' social content receiving 2.3x more impressions per post than the regular season. Additionally, it was leveraged efficiently on behalf of brands, providing $2.6K of exposure value per post. League-wide sponsors such as Michelob Ultra and Nike earned as much as 431% and 338% more value, respectively, per post during the Play-In round.
The best example of play-in success was surprisingly not from a big market team, it was from one of the smallest, the Memphis Grizzlies. Memphis, the sole NBA team to participate in a Play-In matchup each of the past two seasons, produced twice as much engagement per post. This year's playoffs in particular saw a greater increase in impressions (33%) and engagements (91%) relative to the Play-In games than the prior season, so it shows the value of why the Play-In can succeed and will probably be here to stay.
Then there is interest in the playoffs themselves. What the numbers show is that no matter what time of year the culmination of a season happens, the interest and the engagement rises. Teams are innovative in their season-long strategy, and this year, again without the benefit of in-person community events and fan interaction, teams were forced to be uber creative in engagement. All of that groundwork builds to the playoffs. How do we know? Over the past two seasons, playoff teams' Regular Season content generated 456K impressions and 7.5K engagements per post. During the playoffs, impressions increase by 13%, while engagements jump up by 23%. This doesn't happen by just turning on a switch and going. It comes from analyzing, listening and engaging over the course of the season, and then capturing those casual fans when the interest is at its height. For those teams, from the New York Knicks to the Portland Trailblazers, that interest comes when the ball goes up to start the playoffs.
A great example on both fronts came with the end of last season. The Lakers' 2020 championship run accrued 32% more visibility during the Finals than the regular season, while their opponent the Miami Heat drew 90% more impressions and 284% more engagement on Finals content than they did over the 2020 regular season. As we move ahead in the playoffs, all that prep work with engagement will bear fruit, the victors truly get the spoils.
Size And Scope Do Matter As Well
While we see teams like Portland and Memphis with innovative and engaged audiences, it also helps to have big market teams playing at the right time. The Lakers early exit, as well as that of the Celtics and Knicks, may not be as big a deal with national relevance today as it was back in a previous era where stars migrated to big markets. But the fact remains that big markets draw big local engagement and do its stars.
One of the best examples is the Brooklyn Nets. Brooklyn went deep and heavy under the leadership of owner Joe Tsai to bring big names to the second franchise in the New York area. And while it can be argued that the underdog and rebuilding Knicks stole some of the thunder during the regular season, the fact remains that the Nets Big Three, along with a proven star now on the squad like Blake Griffin, will resonate locally and nationally as the coming weeks play out. Their current matchup with the Milwaukee Bucks can help push the awareness and value needle even higher, and if they are able to move on, can really help advance the value of the franchise on the social side. How big is the influence of starpower on social performance? The Nets' have seen a 338% year-over-year increase in engagement on Playoff content thus far in the 2021 playoffs; the team's success, spearheaded by Kevin Durant, Kyrie Irving and James Harden, has yielded 2.7x more visibility on each post during playoffs, and that will only rise. Even in the regular season, the Big Three led Nets produced $1,439 in average post value vs. $405 prior to the Bubble last year.
The Best Is Ahead
So, what do we see? Social engagement in the Playoffs, even under these unusual circumstances, are rising. Stars draw attention and investment in digital growth has kept fans engaged and intrigued as we head towards a July finish. Are there still unpredictable factors in play that could cause a downturn? Maybe, but in a time of great optimism in sport and a positive bounce for business, the NBA Playoffs are showing the trend we want, the social numbers are rising because of the investment made, and that's a win for all.


Grumpy Girl Monologues: Oh good, she's complaining. Something new.
Oh good, she's complaining. Something new.
I am officially putting myself on food probation. It's like academic probation, but instead, when I eat too much, oh you know, ice cream topped with cake and a pie - I get kicked off the school soccer team and can't play in the championship and everyone gets mad at me and makes "Thibeaux is a Quitter" buttons that they wear every day. Just kidding, I'd never make the soccer team, I'm terrible. Absolutely zero eye-foot coordination. Other things I am bad at as a result of this: dancing, freestyle walking and dodging land-mines.
I've struggled with weight issues my whole life. Because let's face it, I'm never meant to be a skinny girl. I'm like two and a half skinny girls. No, I'm like if one skinny girl ate a moderately skinny girl. That would be me at my best. But when I was growing up, I watched too much TV and played sports and wanted to be popular and this is the solemn swan song of my teenage years. Bottom line, I wanted to be someone I was never going to be. So I did what any awkward, uncomfortable girl in the mid-nineties, early 2000's did, I overcompensated with humor. It was my own personal mission statement that I would use humor as a defense mechanism to mask my insecurities about myself and how disappointed I was every time I looked in the mirror until I was no longer disappointed. We all see how well the "until" part worked out.
I think the part that really sucked about my everlasting struggle with my weight was when I realized that all those stupid doctors and fitness instructors and nutritionists were absolutely right. There was no magic pill, no spell I could cast, because I think if there was, even Crabbe and Goyle would have figured it out, to instantaneously change my appearance. Growing up helped, of course. I'm much better as a young adult than I ever was as an adolescent. And of course I was never overweight enough to consider some kind of surgery, forget you National Institute of Health and your weight minimums, so I was simply stuck in the middle, not skinny enough, but not fat enough to get stapled, between the proverbial rock, and a hard place. The rock being my love of the couch and affinity for cake, and the hard place being my dislike of the concept and patrons of "the gym." It was also extra annoying because none of the easy foods, like frozen pizza or Kraft mac and cheese, are actually good for you. And being the sullen, rebellious teen I was, my parents couldn't even make me talk to them, let alone eat "healthy." I chalked their forced multi-colored meals up to parental tyranny and I stormed the castle in the form of Jack In The Box 99 cent tacos and Zebra Cakes.
Author's Note: upon scanning my Microsoft Word "Symbols" for the cent sign, because I didn't want to write out the word "cent" for no particular reason, I was mystified that while they offer the ohm symbol, there is not a cent symbol to be found. Now, I, being an audio engineer, might have a use for the mathematical term in which resistance is measured, but I cannot say that the general public needs to write "The speakers are rated 500 watts at 8 ohms" more than they would need to write, "There's the new store in town, everything is 99 cents."
It's been a lot of ups and downs, but at the end of 2009, I was finally within earshot of my ultimate weight goal. And if I'm being honest, I really deserved it. Not only did I spent 10 or more hours a week at that stupid 24-hour fitness voluntary torture warehouse, but I turned down cake. I turned down cake and french fries, and answered the question, "baked potato or salad?" with the s word more than once. It sucked. But finally getting to buy clothes you like in sizes that don't make you die inside is a reward. And finally looking like you fit in with your brothers who are essentially pipe-cleaner sized people is a reward. And not getting Kevin Smith-ed on any particular Southwest flight is a reward. And like any "formerly fat kid who found the light," I made a solemn vow: I will never look like that, again.
So that is why, my dearest friends, I am putting myself on food probation and mandatory sweat factory sessions. Because I'm too poor to buy new clothes, so the ones I've got simply have to fit. Even though I resent the gender bias when it comes to appearance and the demand for perfection, because it's not enough that I have to do the same work as you jackasses, it's not enough that I have to pretend like I care about other women's rights, but I have to look put together and flawless, and I have to shower every day while doing it. Call in Batman, we have an injustice only a seksi vigilante can handle. No, even though I resent it, I buy into wholeheartedly. Plus, Eleanor 2.0 owes it to original Eleanor to stay the right shape. Original Eleanor turned down delicious, flavor-filled carbs and suffered through tasteless "could have come from my backyard" salads for Eleanor 2.0.
But my battle cry will always be, as it has always been, I hate the gym.
I think you look great right now and you're WAY more disciplined than i am.
Also it's SO not fair that the good stuff like Jack in the Box and Taco Bell and Mac and Cheese and Rice-a-Roni are like the worst for you. Not just bad, the WORST.
But even though it's harder, cooking is way more rewarding, and you've been makin' some pretty awesome stuff lately!
Way to go 2.0! You are MY hero and I aspire to your determination & commitment! I love you too!


text:
package org.apache.tez.test;

import static org.junit.Assert.assertEquals;

import java.io.IOException;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Random;

import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.MiniDFSCluster;
import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.tez.client.TezClient;
import org.apache.tez.client.TezClientUtils;
import org.apache.tez.common.TezCommonUtils;
import org.apache.tez.common.TezUtils;
import org.apache.tez.common.counters.DAGCounter;
import org.apache.tez.common.counters.TezCounter;
import org.apache.tez.common.counters.TezCounters;
import org.apache.tez.dag.api.DAG;
import org.apache.tez.dag.api.Edge;
import org.apache.tez.dag.api.EdgeProperty;
import org.apache.tez.dag.api.EdgeProperty.DataMovementType;
import org.apache.tez.dag.api.EdgeProperty.DataSourceType;
import org.apache.tez.dag.api.EdgeProperty.SchedulingType;
import org.apache.tez.dag.api.InputDescriptor;
import org.apache.tez.dag.api.ProcessorDescriptor;
import org.apache.tez.dag.api.TezConfiguration;
import org.apache.tez.dag.api.TezConstants;
import org.apache.tez.dag.api.UserPayload;
import org.apache.tez.dag.api.Vertex;
import org.apache.tez.dag.api.VertexManagerPlugin;
import org.apache.tez.dag.api.VertexManagerPluginContext;
import org.apache.tez.dag.api.VertexManagerPluginContext.ScheduleTaskRequest;
import org.apache.tez.dag.api.VertexManagerPluginDescriptor;
import org.apache.tez.dag.api.client.DAGClient;
import org.apache.tez.dag.api.client.DAGStatus;
import org.apache.tez.dag.api.client.StatusGetOpts;
import org.apache.tez.dag.app.RecoveryParser;
import org.apache.tez.dag.app.dag.impl.ImmediateStartVertexManager;
import org.apache.tez.dag.history.HistoryEvent;
import org.apache.tez.dag.history.HistoryEventType;
import org.apache.tez.dag.history.events.TaskAttemptFinishedEvent;
import org.apache.tez.dag.history.recovery.RecoveryService;
import org.apache.tez.dag.library.vertexmanager.InputReadyVertexManager;
import org.apache.tez.dag.library.vertexmanager.ShuffleVertexManager;
import org.apache.tez.runtime.api.Event;
import org.apache.tez.runtime.api.ProcessorContext;
import org.apache.tez.runtime.api.TaskAttemptIdentifier;
import org.apache.tez.runtime.api.events.VertexManagerEvent;
import org.apache.tez.runtime.library.processor.SimpleProcessor;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import com.google.common.collect.Lists;

public class TestAMRecovery {

  private static final Logger LOG = LoggerFactory.getLogger(TestAMRecovery.class);

  private static Configuration conf = new Configuration();
  private static TezConfiguration tezConf;
  private static int MAX_AM_ATTEMPT = 10;
  private static MiniTezCluster miniTezCluster = null;
  private static String TEST_ROOT_DIR = "target" + Path.SEPARATOR
      + TestAMRecovery.class.getName() + "-tmpDir";
  private static MiniDFSCluster dfsCluster = null;
  private static TezClient tezSession = null;
  private static FileSystem remoteFs = null;
  private static String FAIL_ON_PARTIAL_FINISHED = "FAIL_ON_PARTIAL_COMPLETED";
  private static String FAIL_ON_ATTEMPT = "FAIL_ON_ATTEMPT";

  @BeforeClass
  public static void beforeClass() throws Exception {
    LOG.info("Starting mini clusters");
    try {
      conf.set(MiniDFSCluster.HDFS_MINIDFS_BASEDIR, TEST_ROOT_DIR);
      dfsCluster =
          new MiniDFSCluster.Builder(conf).numDataNodes(3).format(true)
              .racks(null).build();
      remoteFs = dfsCluster.getFileSystem();
    } catch (IOException io) {
      throw new RuntimeException("problem starting mini dfs cluster", io);
    }
    if (miniTezCluster == null) {
      miniTezCluster =
          new MiniTezCluster(TestAMRecovery.class.getName(), 1, 1, 1);
      Configuration miniTezconf = new Configuration(conf);
      miniTezconf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, MAX_AM_ATTEMPT);
      miniTezconf.set("fs.defaultFS", remoteFs.getUri().toString()); // use HDFS
      conf.setLong(TezConfiguration.TEZ_AM_SLEEP_TIME_BEFORE_EXIT_MILLIS, 500);
      miniTezCluster.init(miniTezconf);
      miniTezCluster.start();
    }
  }

  @AfterClass
  public static void afterClass() throws InterruptedException {
    if (tezSession != null) {
      try {
        LOG.info("Stopping Tez Session");
        tezSession.stop();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    if (miniTezCluster != null) {
      try {
        LOG.info("Stopping MiniTezCluster");
        miniTezCluster.stop();
        miniTezCluster = null;
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    if (dfsCluster != null) {
      try {
        LOG.info("Stopping DFSCluster");
        dfsCluster.shutdown();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }

  @Before
  public void setup() throws Exception {
    LOG.info("Starting session");
    Path remoteStagingDir =
        remoteFs.makeQualified(new Path(TEST_ROOT_DIR, String
            .valueOf(new Random().nextInt(100000))));
    TezClientUtils.ensureStagingDirExists(conf, remoteStagingDir);

    tezConf = new TezConfiguration(miniTezCluster.getConfig());
    tezConf.setInt(TezConfiguration.DAG_RECOVERY_MAX_UNFLUSHED_EVENTS, 0);
    tezConf.set(TezConfiguration.TEZ_AM_LOG_LEVEL, "INFO");
    tezConf.set(TezConfiguration.TEZ_AM_STAGING_DIR,
        remoteStagingDir.toString());
    tezConf
        .setBoolean(TezConfiguration.TEZ_AM_NODE_BLACKLISTING_ENABLED, false);
    tezConf.setInt(TezConfiguration.TEZ_AM_MAX_APP_ATTEMPTS, MAX_AM_ATTEMPT);
    tezConf.setInt(TezConfiguration.TEZ_AM_RESOURCE_MEMORY_MB, 500);
    tezConf.set(TezConfiguration.TEZ_AM_LAUNCH_CMD_OPTS, " -Xmx256m");
    tezConf.setBoolean(TezConfiguration.TEZ_AM_SESSION_MODE, true);
    tezConf.setBoolean(
        TezConfiguration.TEZ_AM_STAGING_SCRATCH_DATA_AUTO_DELETE, false);
    tezConf.setBoolean(
        RecoveryService.TEZ_TEST_RECOVERY_DRAIN_EVENTS_WHEN_STOPPED,
        true);
    tezConf.setInt(CommonConfigurationKeysPublic.IPC_CLIENT_CONNECT_MAX_RETRIES_KEY,0);
    tezConf.setInt(CommonConfigurationKeysPublic.IPC_CLIENT_CONNECT_MAX_RETRIES_ON_SOCKET_TIMEOUTS_KEY, 0);
    tezConf.setInt(CommonConfigurationKeysPublic.IPC_CLIENT_CONNECT_TIMEOUT_KEY,1000);
    tezSession = TezClient.create("TestDAGRecovery", tezConf);
    tezSession.start();
  }

  @After
  public void teardown() throws InterruptedException {
    if (tezSession != null) {
      try {
        LOG.info("Stopping Tez Session");
        tezSession.stop();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    tezSession = null;
  }

  /**
   * Fine-grained recovery task-level, In a vertex (v1), task 0 is done task 1
   * is not started. History flush happens. AM dies. Once AM is recovered, task 0 is
   * not re-run. Task 1 is re-run. (Broadcast)
   *
   * @throws Exception
   */
  @Test(timeout = 120000)
  public void testVertexPartiallyFinished_Broadcast() throws Exception {
    DAG dag =
        createDAG("VertexPartiallyFinished_Broadcast", ControlledImmediateStartVertexManager.class,
            DataMovementType.BROADCAST, true);
    TezCounters counters = runDAGAndVerify(dag, DAGStatus.State.SUCCEEDED);
    assertEquals(4, counters.findCounter(DAGCounter.NUM_SUCCEEDED_TASKS).getValue());
    assertEquals(2, counters.findCounter(TestCounter.Counter_1).getValue());

    List<HistoryEvent> historyEvents1 = readRecoveryLog(1);
    List<HistoryEvent> historyEvents2 = readRecoveryLog(2);
    printHistoryEvents(historyEvents1, 1);
    printHistoryEvents(historyEvents1, 2);
    // task_0 of v1 is finished in attempt 1, task_1 of v1 is not finished in
    // attempt 1
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents1, 0, 0).size());
    assertEquals(0, findTaskAttemptFinishedEvent(historyEvents1, 0, 1).size());

    // task_0 of v1 is finished in attempt 1 and not rerun, task_1 of v1 is
    // finished in attempt 2
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 0).size());
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 1).size());
  }

  /**
   * Fine-grained recovery task-level, In a vertex (v1), task 0 is done task 1
   * is also done. History flush happens. AM dies. Once AM is recovered, task 0
   * and Task 1 is not re-run. (Broadcast)
   *
   * @throws Exception
   */
  @Test(timeout = 120000)
  public void testVertexCompletelyFinished_Broadcast() throws Exception {
    DAG dag =
        createDAG("VertexCompletelyFinished_Broadcast", ControlledImmediateStartVertexManager.class,
            DataMovementType.BROADCAST, false);
    TezCounters counters = runDAGAndVerify(dag, DAGStatus.State.SUCCEEDED);

    assertEquals(4, counters.findCounter(DAGCounter.NUM_SUCCEEDED_TASKS).getValue());
    assertEquals(2, counters.findCounter(TestCounter.Counter_1).getValue());

    List<HistoryEvent> historyEvents1 = readRecoveryLog(1);
    List<HistoryEvent> historyEvents2 = readRecoveryLog(2);
    printHistoryEvents(historyEvents1, 1);
    printHistoryEvents(historyEvents1, 2);
    // task_0 of v1 is finished in attempt 1, task_1 of v1 is not finished in
    // attempt 1
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents1, 0, 0).size());
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents1, 0, 1).size());

    // task_0 of v1 is finished in attempt 1 and not rerun, task_1 of v1 is
    // finished in attempt 2
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 0).size());
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 1).size());
  }

  /**
   * Fine-grained recovery task-level, In a vertex (v1), task 0 is done task 1
   * is not started. History flush happens. AM dies. Once AM is recovered, task 0 is
   * not re-run. Task 1 is re-run. (ONE_TO_ONE)
   *
   * @throws Exception
   */
  @Test(timeout = 120000)
  public void testVertexPartialFinished_One2One() throws Exception {
    DAG dag =
        createDAG("VertexPartialFinished_One2One", ControlledInputReadyVertexManager.class,
            DataMovementType.ONE_TO_ONE, true);
    TezCounters counters = runDAGAndVerify(dag, DAGStatus.State.SUCCEEDED);
    assertEquals(4, counters.findCounter(DAGCounter.NUM_SUCCEEDED_TASKS).getValue());
    assertEquals(2, counters.findCounter(TestCounter.Counter_1).getValue());

    List<HistoryEvent> historyEvents1 = readRecoveryLog(1);
    List<HistoryEvent> historyEvents2 = readRecoveryLog(2);
    printHistoryEvents(historyEvents1, 1);
    printHistoryEvents(historyEvents1, 2);
    // task_0 of v1 is finished in attempt 1, task_1 of v1 is not finished in
    // attempt 1
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents1, 0, 0).size());
    assertEquals(0, findTaskAttemptFinishedEvent(historyEvents1, 0, 1).size());

    // task_0 of v1 is finished in attempt 1 and not rerun, task_1 of v1 is
    // finished in attempt 2
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 0).size());
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 1).size());

  }

  /**
   * Fine-grained recovery task-level, In a vertex (v1), task 0 is done task 1
   * is also done. History flush happens. AM dies. Once AM is recovered, task 0
   * and Task 1 is not re-run. (ONE_TO_ONE)
   *
   * @throws Exception
   */
  @Test(timeout = 120000)
  public void testVertexCompletelyFinished_One2One() throws Exception {
    DAG dag =
        createDAG("VertexCompletelyFinished_One2One", ControlledInputReadyVertexManager.class,
            DataMovementType.ONE_TO_ONE, false);
    TezCounters counters = runDAGAndVerify(dag, DAGStatus.State.SUCCEEDED);
    assertEquals(4, counters.findCounter(DAGCounter.NUM_SUCCEEDED_TASKS).getValue());
    assertEquals(2, counters.findCounter(TestCounter.Counter_1).getValue());

    List<HistoryEvent> historyEvents1 = readRecoveryLog(1);
    List<HistoryEvent> historyEvents2 = readRecoveryLog(2);
    printHistoryEvents(historyEvents1, 1);
    printHistoryEvents(historyEvents1, 2);
    // task_0 of v1 is finished in attempt 1, task_1 of v1 is not finished in
    // attempt 1
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents1, 0, 0).size());
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents1, 0, 1).size());

    // task_0 of v1 is finished in attempt 1 and not rerun, task_1 of v1 is
    // finished in attempt 2
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 0).size());
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 1).size());

  }

  /**
   * Fine-grained recovery task-level, In a vertex (v1), task 0 is done task 1
   * is not started. History flush happens. AM dies. Once AM is recovered, task 0 is
   * not re-run. Task 1 is re-run. (SCATTER_GATHER)
   *
   * @throws Exception
   */
  @Test(timeout = 120000)
  public void testVertexPartiallyFinished_ScatterGather() throws Exception {
    DAG dag =
        createDAG("VertexPartiallyFinished_ScatterGather", ControlledShuffleVertexManager.class,
            DataMovementType.SCATTER_GATHER, true);
    TezCounters counters = runDAGAndVerify(dag, DAGStatus.State.SUCCEEDED);
    assertEquals(4, counters.findCounter(DAGCounter.NUM_SUCCEEDED_TASKS).getValue());
    assertEquals(2, counters.findCounter(TestCounter.Counter_1).getValue());

    List<HistoryEvent> historyEvents1 = readRecoveryLog(1);
    List<HistoryEvent> historyEvents2 = readRecoveryLog(2);
    printHistoryEvents(historyEvents1, 1);
    printHistoryEvents(historyEvents1, 2);
    // task_0 of v1 is finished in attempt 1, task_1 of v1 is not finished in
    // attempt 1
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents1, 0, 0).size());
    assertEquals(0, findTaskAttemptFinishedEvent(historyEvents1, 0, 1).size());

    // task_0 of v1 is finished in attempt 1 and not rerun, task_1 of v1 is
    // finished in attempt 2
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 0).size());
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 1).size());

  }

  /**
   * Fine-grained recovery task-level, In a vertex (v1), task 0 is done task 1
   * is also done. History flush happens. AM dies. Once AM is recovered, task 0
   * and Task 1 is not re-run. (SCATTER_GATHER)
   *
   * @throws Exception
   */
  @Test(timeout = 120000)
  public void testVertexCompletelyFinished_ScatterGather() throws Exception {
    DAG dag =
        createDAG("VertexCompletelyFinished_ScatterGather", ControlledShuffleVertexManager.class,
            DataMovementType.SCATTER_GATHER, false);
    TezCounters counters = runDAGAndVerify(dag, DAGStatus.State.SUCCEEDED);
    assertEquals(4, counters.findCounter(DAGCounter.NUM_SUCCEEDED_TASKS).getValue());
    assertEquals(2, counters.findCounter(TestCounter.Counter_1).getValue());
    TezCounter outputCounter = counters.findCounter(TestOutput.COUNTER_NAME, TestOutput.COUNTER_NAME);
    TezCounter inputCounter = counters.findCounter(TestInput.COUNTER_NAME, TestInput.COUNTER_NAME);
    // verify that processor, input and output counters, are all being collected
    Assert.assertTrue(outputCounter.getValue() > 0);
    Assert.assertTrue(inputCounter.getValue() > 0);

    List<HistoryEvent> historyEvents1 = readRecoveryLog(1);
    List<HistoryEvent> historyEvents2 = readRecoveryLog(2);
    printHistoryEvents(historyEvents1, 1);
    printHistoryEvents(historyEvents1, 2);
    // task_0 of v1 is finished in attempt 1, task_1 of v1 is not finished in
    // attempt 1
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents1, 0, 0).size());
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents1, 0, 1).size());

    // task_0 of v1 is finished in attempt 1 and not rerun, task_1 of v1 is
    // finished in attempt 2
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 0).size());
    assertEquals(1, findTaskAttemptFinishedEvent(historyEvents2, 0, 1).size());
  }

  /**
   * Set AM max attempt to high number. Kill many attempts. Last AM can still be
   * recovered with latest AM history data.
   *
   * @throws Exception
   */
  @Test(timeout = 600000)
  public void testHighMaxAttempt() throws Exception {
    Random rand = new Random();
    tezConf.set(FAIL_ON_ATTEMPT, rand.nextInt(MAX_AM_ATTEMPT) + "");
    LOG.info("Set FAIL_ON_ATTEMPT=" + tezConf.get(FAIL_ON_ATTEMPT));
    DAG dag =
        createDAG("HighMaxAttempt", FailOnAttemptVertexManager.class,
            DataMovementType.SCATTER_GATHER, false);
    runDAGAndVerify(dag, DAGStatus.State.SUCCEEDED);

  }

  TezCounters runDAGAndVerify(DAG dag, DAGStatus.State finalState) throws Exception {
    tezSession.waitTillReady();
    DAGClient dagClient = tezSession.submitDAG(dag);
    DAGStatus dagStatus =
        dagClient.waitForCompletionWithStatusUpdates(EnumSet
            .of(StatusGetOpts.GET_COUNTERS));
    Assert.assertEquals(finalState, dagStatus.getState());
    return dagStatus.getDAGCounters();
  }

  /**
   * v1 --> v2 <br>
   * v1 has a customized VM to control whether to schedule only one second task when it is partiallyFinished test case.
   * v2 has a customized VM which could control when to kill AM
   *
   * @param vertexManagerClass
   * @param dmType
   * @param failOnParitialCompleted
   * @return
   * @throws IOException
   */
  private DAG createDAG(String dagName, Class vertexManagerClass, DataMovementType dmType,
      boolean failOnParitialCompleted) throws IOException {
    if (failOnParitialCompleted) {
      tezConf.set(FAIL_ON_PARTIAL_FINISHED, "true");
    } else {
      tezConf.set(FAIL_ON_PARTIAL_FINISHED, "false");
    }
    DAG dag = DAG.create(dagName);
    UserPayload payload = UserPayload.create(null);
    Vertex v1 = Vertex.create("v1", MyProcessor.getProcDesc(), 2);
    v1.setVertexManagerPlugin(VertexManagerPluginDescriptor.create(
        ScheduleControlledVertexManager.class.getName()).setUserPayload(
        TezUtils.createUserPayloadFromConf(tezConf)));
    Vertex v2 = Vertex.create("v2", DoNothingProcessor.getProcDesc(), 2);
    v2.setVertexManagerPlugin(VertexManagerPluginDescriptor.create(
        vertexManagerClass.getName()).setUserPayload(
        TezUtils.createUserPayloadFromConf(tezConf)));

    dag.addVertex(v1).addVertex(v2);
    dag.addEdge(Edge.create(v1, v2, EdgeProperty.create(dmType,
        DataSourceType.PERSISTED, SchedulingType.SEQUENTIAL,
        TestOutput.getOutputDesc(payload), TestInput.getInputDesc(payload))));
    return dag;
  }

  private List<TaskAttemptFinishedEvent> findTaskAttemptFinishedEvent(
      List<HistoryEvent> historyEvents, int vertexId, int taskId) {
    List<TaskAttemptFinishedEvent> resultEvents =
        new ArrayList<TaskAttemptFinishedEvent>();
    for (HistoryEvent historyEvent : historyEvents) {
      if (historyEvent.getEventType() == HistoryEventType.TASK_ATTEMPT_FINISHED) {
        TaskAttemptFinishedEvent taFinishedEvent =
            (TaskAttemptFinishedEvent) historyEvent;
        if (taFinishedEvent.getTaskAttemptID().getTaskID().getVertexID()
            .getId() == vertexId
            && taFinishedEvent.getTaskAttemptID().getTaskID().getId() == taskId) {
          resultEvents.add(taFinishedEvent);
        }
      }
    }
    return resultEvents;
  }

  private List<HistoryEvent> readRecoveryLog(int attemptNum) throws IOException {
    ApplicationId appId = tezSession.getAppMasterApplicationId();
    Path tezSystemStagingDir =
        TezCommonUtils.getTezSystemStagingPath(tezConf, appId.toString());
    Path recoveryDataDir =
        TezCommonUtils.getRecoveryPath(tezSystemStagingDir, tezConf);
    FileSystem fs = tezSystemStagingDir.getFileSystem(tezConf);
    List<HistoryEvent> historyEvents = new ArrayList<HistoryEvent>();
    for (int i=1; i <= attemptNum; ++i) {
      Path currentAttemptRecoveryDataDir =
          TezCommonUtils.getAttemptRecoveryPath(recoveryDataDir, i);
      Path recoveryFilePath =
          new Path(currentAttemptRecoveryDataDir, appId.toString().replace(
              "application", "dag")
              + "_1" + TezConstants.DAG_RECOVERY_RECOVER_FILE_SUFFIX);
      if (fs.exists(recoveryFilePath)) {
        LOG.info("Read recovery file:" + recoveryFilePath);
        historyEvents.addAll(RecoveryParser.parseDAGRecoveryFile(fs.open(recoveryFilePath)));
      }
    }
    return historyEvents;
  }

  private void printHistoryEvents(List<HistoryEvent> historyEvents, int attemptId) {
    LOG.info("RecoveryLogs from attempt:" + attemptId);
    for(HistoryEvent historyEvent : historyEvents) {
      LOG.info("Parsed event from recovery stream"
          + ", eventType=" + historyEvent.getEventType()
          + ", event=" + historyEvent);
    }
    LOG.info("");
  }

  public static class ControlledInputReadyVertexManager extends
      InputReadyVertexManager {

    private Configuration conf;
    private int completedTaskNum = 0;

    public ControlledInputReadyVertexManager(VertexManagerPluginContext context) {
      super(context);
    }

    @Override
    public void initialize() {
      super.initialize();
      try {
        conf =
            TezUtils.createConfFromUserPayload(getContext().getUserPayload());
      } catch (IOException e) {
        e.printStackTrace();
      }
    }

    @Override
    public void onSourceTaskCompleted(TaskAttemptIdentifier attempt) {
      super.onSourceTaskCompleted(attempt);
      completedTaskNum ++;
      if (getContext().getDAGAttemptNumber() == 1) {
        if (conf.getBoolean(FAIL_ON_PARTIAL_FINISHED, true)) {
          if (completedTaskNum == 1) {
            System.exit(-1);
          }
        } else {
          if (completedTaskNum == getContext().
              getVertexNumTasks(attempt.getTaskIdentifier().getVertexIdentifier().getName())) {
            System.exit(-1);
          }
        }
      }
    }
  }

  public static class ControlledShuffleVertexManager extends
      ShuffleVertexManager {

    private Configuration conf;
    private int completedTaskNum = 0;

    public ControlledShuffleVertexManager(VertexManagerPluginContext context) {
      super(context);
    }

    @Override
    public void initialize() {
      super.initialize();
      try {
        conf =
            TezUtils.createConfFromUserPayload(getContext().getUserPayload());
      } catch (IOException e) {
        e.printStackTrace();
      }
    }

    @Override
    public void onSourceTaskCompleted(TaskAttemptIdentifier attempt) {
      super.onSourceTaskCompleted(attempt);
      completedTaskNum ++;
      if (getContext().getDAGAttemptNumber() == 1) {
        if (conf.getBoolean(FAIL_ON_PARTIAL_FINISHED, true)) {
          if (completedTaskNum == 1) {
            System.exit(-1);
          }
        } else {
          if (completedTaskNum == getContext().
              getVertexNumTasks(attempt.getTaskIdentifier().getVertexIdentifier().getName())) {
            System.exit(-1);
          }
        }
      }
    }
  }

  public static class ControlledImmediateStartVertexManager extends
      ImmediateStartVertexManager {

    private Configuration conf;
    private int completedTaskNum = 0;

    public ControlledImmediateStartVertexManager(
        VertexManagerPluginContext context) {
      super(context);
    }

    @Override
    public void initialize() {
      super.initialize();
      try {
        conf =
            TezUtils.createConfFromUserPayload(getContext().getUserPayload());
      } catch (IOException e) {
        e.printStackTrace();
      }
    }

    @Override
    public void onSourceTaskCompleted(TaskAttemptIdentifier attempt) {
      super.onSourceTaskCompleted(attempt);
      completedTaskNum ++;
      if (getContext().getDAGAttemptNumber() == 1) {
        if (conf.getBoolean(FAIL_ON_PARTIAL_FINISHED, true)) {
          if (completedTaskNum == 1) {
            System.exit(-1);
          }
        } else {
          if (completedTaskNum == getContext().
              getVertexNumTasks(attempt.getTaskIdentifier().getVertexIdentifier().getName())) {
            System.exit(-1);
          }
        }
      }
    }
  }

  /**
   * VertexManager which control schedule only one task when it is test case of partially-finished.
   *
   */
  public static class ScheduleControlledVertexManager extends VertexManagerPlugin {

    private Configuration conf;

    public ScheduleControlledVertexManager(VertexManagerPluginContext context) {
      super(context);
    }

    @Override
    public void initialize() {
      try {
        conf =
            TezUtils.createConfFromUserPayload(getContext().getUserPayload());
      } catch (IOException e) {
        e.printStackTrace();
      }
    }

    @Override
    public void onVertexStarted(List<TaskAttemptIdentifier> completions)
        throws Exception {
      if (getContext().getDAGAttemptNumber() == 1) {
        // only schedule one task if it is partiallyFinished case
        if (conf.getBoolean(FAIL_ON_PARTIAL_FINISHED, true)) {
          getContext().scheduleTasks(Lists.newArrayList(ScheduleTaskRequest.create(0, null)));
          return ;
        }
      }
      // schedule all tasks when it is not partiallyFinished
      int taskNum = getContext().getVertexNumTasks(getContext().getVertexName());
      List<ScheduleTaskRequest> taskWithLocationHints = new ArrayList<ScheduleTaskRequest>();
      for (int i=0;i<taskNum;++i) {
        taskWithLocationHints.add(ScheduleTaskRequest.create(i, null));
      }
      getContext().scheduleTasks(taskWithLocationHints);
    }

    @Override
    public void onSourceTaskCompleted(TaskAttemptIdentifier attempt)
        throws Exception {

    }

    @Override
    public void onVertexManagerEventReceived(VertexManagerEvent vmEvent)
        throws Exception {

    }

    @Override
    public void onRootVertexInitialized(String inputName,
        InputDescriptor inputDescriptor, List<Event> events) throws Exception {

    }
  }

  /**
   * VM which could control fail on attempt less than a specified number
   *
   */
  public static class FailOnAttemptVertexManager extends ShuffleVertexManager {

    private Configuration conf;

    public FailOnAttemptVertexManager(VertexManagerPluginContext context) {
      super(context);
    }

    @Override
    public void initialize() {
      super.initialize();
      try {
        conf =
            TezUtils.createConfFromUserPayload(getContext().getUserPayload());
      } catch (IOException e) {
        e.printStackTrace();
      }
    }

    @Override
    public void onSourceTaskCompleted(TaskAttemptIdentifier attempt) {
      int curAttempt = getContext().getDAGAttemptNumber();
      super.onSourceTaskCompleted(attempt);
      int failOnAttempt = conf.getInt(FAIL_ON_ATTEMPT, 1);
      LOG.info("failOnAttempt:" + failOnAttempt);
      LOG.info("curAttempt:" + curAttempt);
      if (curAttempt < failOnAttempt) {
        System.exit(-1);
      }
    }
  }

  public static enum TestCounter {
    Counter_1,
  }

  public static class MyProcessor extends SimpleProcessor {

    public MyProcessor(ProcessorContext context) {
      super(context);
    }

    @Override
    public void run() throws Exception {
      getContext().getCounters().findCounter(TestCounter.Counter_1).increment(1);
    }

    public static ProcessorDescriptor getProcDesc() {
      return ProcessorDescriptor.create(MyProcessor.class.getName());
    }
  }

  public static class DoNothingProcessor extends SimpleProcessor {

    public DoNothingProcessor(ProcessorContext context) {
      super(context);
    }

    @Override
    public void run() throws Exception {
      // Sleep 3 second in vertex2 to avoid that vertex2 completed
      // before vertex2 get the SourceVertexTaskAttemptCompletedEvent.
      // SourceVertexTaskAttemptCompletedEvent will been ingored if vertex in SUCCEEDED,
      // so AM won't been killed in the VM of vertex2
      Thread.sleep(3000);
    }

    public static ProcessorDescriptor getProcDesc() {
      return ProcessorDescriptor.create(DoNothingProcessor.class.getName());
    }
  }

}

redpajama_set_name: RedPajamaGithub


text:
Prod BuildingSolutions
WORLDWIDE | Contact Us | Honeywell.com | TRAINING & UTILITIES LOGIN
HUG Live Event
Home > News & Events > Feature Stories
Integrated Resorts
PPP/TAM
Public Events and Stadia
HVAC & Building Management Systems
Instant Alert
Connected Operations
Integrated Security
Intelligent Buildings
Honeywell Users Group (HUG)
Technology Days
About Building Solutions
Sustainable Opportunities
Buildings Enabling Occupant Control, One App at a Time
Are buildings simply dead assets, or are they alive and teeming with ways to increase occupant comfort? If your answer reflects the former, it's time to update your thinking. With the right technology in place, buildings can effectively "listen" to what occupants want and improve their experiences. In a contribution to IoT Agenda, Himanshu Khurana, director of engineering for Honeywell Building Solutions, shares how connected buildings are giving occupants control of their experiences. Living in a world influenced by smartphone capabilities, he notes that this expectation has expanded to include mobile engagement with our surroundings, and specifically, our buildings. And new technology developments, including apps, are enabling buildings to respond to these expectations. Read the blog post, "Commercial buildings and IoT: The evolution of experience."
--------------------------------------------------------------
Honeywell Discusses LEED Gold Certification at Greenbuild Event
Debra Becker, connected buildings leader for Honeywell Building Solutions, recently discussed the LEED Gold Certification at the Honeywell corporate headquarters - as well Honeywell's broader green building efforts with USGBC at the Greenbuild event.
Making the Grade - How Building Environments Can Positively Impact Student Achievement
A school's facility conditions can have an unexpected impact on student and teacher morale, productivity and performance, as evidenced by research report. Studies have found positive correlations between building conditions and student performance. Unfortunately, the inverse is also true. Given the fact that many facilities in the United States are in dire need of upgrades and improvements, how do you ensure they're not working to the detriment of student achievement?
Click here to read the article by Tom Gentzel, executive director and CEO, National School Boards Association, and learn how many school districts are utilizing Energy Saving Performance Contracts (ESPC) to overcome budgeting challenges to make critical building updates.
The Age of Connectivity: Buildings and the Internet of Things
The Internet of Things (IoT): It's a commonly used phrase, but what does it mean for buildings? In his first blog contribution to news outlet IoT Agenda, Datta Godbole, vice president and chief technology officer for Honeywell Building Solutions, looks to address this very question. In an age of connectivity, he notes, it's time to view our buildings as more than just static structures. According to Godbole, thanks to IoT concepts and what they enable — from improved data analytics to enhanced occupant experiences — buildings are instead living entities that can be meaningful contributors to organizational missions. Click here to read the blog post, "IoT and buildings: Top trends driving bottom-line value."
--------------------------------------------------------------
Protect and Enable: Tips from Security Experts
What does being an agent for the Secret Service have in common with managing security for a museum or school district?
A lot, it turns out — just ask Russ Collett. Before his current role as the associate vice president of protection services for the Art Institute of Chicago, he protected five U.S. presidents during his 25 years with the Secret Service.
Collett, along with leaders responsible for security for two school districts, recently shared their insights for how to ensure facilities — and the people and assets they house — are kept safe and secure. Whether you're protecting priceless pieces of art, or teachers and students, one thing is certain: both roles require a comprehensive approach that combines preparation, planning and technology to maintain safety and security.
Wrapping Up: Key Takeaways from HUG 2016
As HUG draws to an end, hear from Honeywell leaders on what have been the highlights and how the customer-led event will continue to shape our offerings and solutions.
Water & Sewer Authority Pumps Up Security
Securing any facility is no easy task. Standardizing and streamlining security systems and processes can be especially challenging for public utilities companies. Water and sewer services, for instance, are complex, multi plant and site operations across large distances. Establishing a network of plants and pumps is ideal to provide the best service to customers; however, the distances between each plant can make it difficult to ensure consistent management and monitoring of security.
For example, one water and sewer authority in the southeastern region of the United States set out to improve its ability to manage, document and react to possible security incidents throughout its operations. The organization sought to standardize its security systems and processes across all of its plants so it could monitor and manage safety and security from a centralized location.
To achieve its goals, the water and sewer authority devised a four-phased approach with the help of Honeywell. Click here to read more.
Attendees Share their Experiences at HUG
HUG 2016 attendees share thoughts on how they are making the most of their experience at this year's event.
Unlocking Access Control Benefits
At the start of each workday, as people around the world head into the office, chances are their smartphones are close by. What's also possible, though, is that someone will forget their access card — an inconvenience for the employee, and an issue for workplace security, as well.
Technology developments of recent years have delivered us to the point where combining mobility and access is possible, with the right approach. And the opportunity to do so is undeniable; according to the 2015 GSMA Global Mobile Economy Report, we'll see 5.9 billion smart phones in use by 2020. In comparison, 2014 saw an estimated 2.6 billion smart phones put to use, so the estimated increase is significant.
The opportunity to combine mobility and access control presents many benefits for occupants and building managers alike. Occupants benefit from being able to move freely about a facility without having to worry about carrying another item. In tandem, those who manage facilities can leverage technology already in use; there's no need to print or distribute badges, and the process of tracking and replacing lost cards, or retrieving cards when employees leave an organization, is essentially eliminated—saving valuable time and money.
Perhaps this all sounds good, but how do you put it into practice in your building? Click here to learn how you can put this concept into practice in your building.
See Demos of the Latest Releases of EBI and DVM
The latest release of Honeywell's Enterprise Buildings Integrator – EBI R500 – provides even greater building connectivity and intelligence. The award-winning building management system's new features improve facility managers' ability to turn building data into actionable insights to deliver outcomes in real time. New features include: increased data point capacity, enhanced IT compliance along with cloud and mobile connectivity.
The enhancements to Honeywell Digital Video Manager (DVM) in its R600 version enable organizations to more efficiently manage their security systems with enhanced mobile capabilities and voice command, and mitigate business risk via support for current IT platforms. DVM is a component of EBI, which ties all aspects of a security solution together.
Hands On - The Command Wall
We go hands on the Command Wall at HUG 2016. Check out the video to see its new features.
--------------------------------------------------------------
A University's Energy-Saving Efforts: Sustainability with an Impact
Energy efficiency: it's a common concept, but how do you really make it work within an organization — and especially when the constituents are busy college students?
The efforts of one U.S. university's sustainability department to reduce energy costs not only have extended the organization's limited budget, but also provided compelling stats that the university has routinely shared with students to keep them apprised of how the university is putting campus buildings to work.
Click here to read more.
Building through Design - How User Experience Design is Helping Facility Managers Work Smarter and More Efficiently
Often the first thing we do when we wake up in the morning is reach for our phone. We check on our latest notifications, perhaps logging onto Facebook while brushing our teeth with an electric toothbrush. Each time we unlock oursmartphone, turn on our electric toothbrush or even log onto Facebook, there's a hard working designer behind the scenes who has designed the system or device to best interact with us and enhance our experience.
We recently sat down with Honeywell Building Solutions' Hilary Palmen, director of experience design, to talk about design philosophies for better user experiences. She explained how Honeywell is implementing these philosophies to improve how facility managers can better manage heir facilities.
Click here to learn more.
Driving Development of New Technologies - Innovation Hub at HUG 2016
See how we're using customer feedback to help drive development of tomorrow's technologies for facilities.
What's New in the Connected Buildings Center at HUG
Learn about the latest and greatest solutions featured at the Connected Buildings Center at HUG 2016.
HUG 2016 Begins: What You Need to Know
Here's a surprising stat: The majority of apps we'll use in five years' time haven't even been invented yet.
HBS President John Rajchert shared this detail when he helped kick off the 2016 Honeywell Users Group Symposium — also known as HUG — on Monday, June 6, noting technology is ever changing the way we live and work.
Click here to learn about what you need to know from HUG 2016.
Building Connections - New Technologies at HUG 2016
These are some of the can't miss technologies featured at HUG 2016. Learn more about how Honeywell is innovating new technologies to help make buildings more connected and smarter.
Connect at HUG
Honeywell Users Group is the best event where facilities professionals can exchange ideas and connect. Watch the video to find out more.
The Internet of Things (R)Evolution and Buildings
Buzzwords come and go, but the popular term Internet of Things (IoT) — which centers on the fundamental notion of connectivity between everything, from infrastructure to devices — is here to stay. And all objects, structures, processes or beings, including buildings and their occupants, will benefit from the promise of IoT.
Read more on how the IoT is enabling dramatic shifts in how buildings operate.
Facility Executive Readers Vote Honeywell Best in Energy Management and Security Solutions
We aim to create facility solutions that enable our customers to achieve their organization's objectives whether that be impacting the bottom line or boosting student test scores. Facility Executive surveyed their readers this year and named Honeywell as their choice for energy management and security solutions. These solutions are part of Honeywell's flagship building management system Enterprise Building Integrator (EBI). For energy management, EBI provides building operators with an innovative, flexible energy management technology and data, such as consumption and historical trends that can help optimize a facility's energy use in real time. EBI also integrates critical building systems including security to enable building personnel to identify and manage risks earlier to reduce impact of potential security or safety incidents through real-time information and automated incident responses. Thank you to all the Facility Executive readers who nominated Honeywell in this year's awards.
Click here to see the full results of Facility Executive's 2016 Readers' Choice Awards.
cl
Facility Executive Readers Vote Honeywell Best in Energy Management and Security Solutions
We aim to create facility solutions that enable our customers to achieve their organization's objectives whether that be impacting the bottom line or boosting student test scores. Facility Executive surveyed their readers this year and named Honeywell as their choice for energy management and security solutions. These solutions are part of Honeywell's flagship building management system Enterprise Building Integrator (EBI). For energy management, EBI provides building operators with an innovative, flexible energy management technology and data, such as consumption and historical trends that can help optimize a facility's energy use in real time. EBI also integrates critical building systems including security to enable building personnel to identify and manage risks earlier to reduce impact of potential security or safety incidents through real-time information and automated incident responses. Thank you to all the Facility Executive readers who nominated Honeywell in this year's awards.
Click here to see the full results of Facility Executive's 2016 Readers' Choice Awards.
Smart Approaches to Better Business Results
Today's buildings cannot be simply described with words such as "structure," "roof" or "walls." Instead, recent technology advances are helping buildings become much more than physical structures, or depreciating assets. Buildings today are smarter, and have the potential to be stronger contributors to an organization's mission. That means top line growth, and, depending on the organization, better patient outcomes, higher student test scores and fewer safety incidents, among many other possibilities.
What's the Future of Smart, Connected Buildings? Frank Pennisi Discusses with GreenBiz
A smart, connected building's greatest potential is its ability to drive smart business outcomes. Organizations are starting to understand this potential, and more buildings today are adopting the technology and infrastructure to better anticipate the needs of inhabitants — and ultimately contribute to organizational missions. But how does the future look for smart buildings?
Sydney Opera House: Another Landmark Win for Honeywell
The Sydney Opera House is Australia's most significant building, cultural precinct and inscribed on the UNESCO World Heritage List as a masterpiece of human creative genius. With a focus on conserving and renewing the now 40 year old building, the Sydney Opera House Trust has embarked on a decade of evolution to ensure that this landmark building is equipped for the 21st century, preparing it for future generations of artist, audiences and visitors.
ASIS 2015: Spotlight on Women in Security
With another ASIS show in the books, we're still pondering the discussions that took place at booth 901 and beyond. Among themes of biometrics, the cloud, and the Internet of Things, one high-impact topic that emerged (and too seldom does) is women in the security industry.
Live – from the Verge: Put Your Buildings to Work
Join us on October 28 at 1:45 pm Pacific for a livestream from VERGE, where we'll share results from a smart buildings survey and the trends it signals with a cross section of industry leaders who will discuss the evolution, prospects and value of smart buildings.
Greenbuilding Brasil: A Sustainable Future Relies on Smart Buildings and Collaboration
The 6th-annual Greenbuilding Brasil was just held in São Paulo, and the conference provided a forum for exchanging ideas and best practices that can help improve the country's cities and ignite greater sustainability.
That's a Wrap: Takeaways from HUG 2015
As Honeywell Users Group (HUG) 2015 draws to a close, we look back at the past week and all of the ideas and discussions that took place, particularly around smart, connected buildings. Here's a recap of HUG 2015.
Reflections from HUG 2015
HUG 2015 attendees reflect on their experiences at the event and share insights and ideas they took away that will help them put their buildings to work.
Advanced Studies: Balancing Comfort & Sustainability
When students are sweating in a classroom, facility managers want to know that it's because of a tough exam, not an HVAC issue. But when maintaing a comfortable learning environment is paramount, how do you consume less energy and cut back while still making sure that classrooms are perfectly suited for learning? Here are a few ideas to consider.
Energy Savings, Stat
How does the largest free-standing pediatric hospital in the world increase its footprint by 47 percent yet hold the increase in energy spend to 30 percent? Read how Texas Children's Hospital achieved this feat by identifying and addressing sources of energy waste.
Trending Now: Technology Advancements
Re-Shaping Security
Facility safety and security is light-years beyond the days of one guard and an alarm system, and navigating the complex array of the technologies available can be daunting. Whether you're focused on compliance and driving efficiencies, or simply looking to bolster efforts already in place, it's important to be aware of the trends currently shaping security and how they can benefit your business. Here are five developments to watch.
LEEDing the Way
For building owners, operators and occupants, the benefits of LEED-certified facilities go beyond energy efficiency. LEED helps boost performance in other areas, including air quality, water consumption and occupant comfort. At Honeywell Users Group, panelists from Atlanta Airlines Terminal Corp., Menkes Developments Ltd. and the U.S. Green Building Council talked about the advantages that following LEED principles delivers.
Smartphones and Smart Buildings
Smartphones and mobile devices have significantly changed how we interact at work and at home. These mobile technologies are extending beyond those realms and now starting to change how we can interact with facilities. Honeywell's Pat Tessier talks about how our company is designing new ways to enable facility managers and building operators to use smartphones and mobile devices to better mange their buildings.
A (Not So) General Session
HUG is a conference of, by and for Honeywell customers and associates, almost 400 this year. And it's always interesting to hear from such an array of skilled technicians and thought leaders. The depth of knowledge and insight was on display during Tuesday's opening session. Read the recap of HUG's General Session.
Constructing Success: Macro Trends in Construction
If your view of the construction industry includes complicated building processes muddled by disparate documents, processes and parties, think again. Panelists from Honeywell, construction firm Brasfield & Gorrie and mechanical contractor Hardy Corporation recently weighed in on the macro trends shaping the industry — trends that are driving more informed decisions for maximum business impact. Read about the trends here.
Are You Feeling Connected?
The explosion of devices connected to the Internet of everything is changing all aspects of life, including how we interact with and operate facilities. Instead of having automation technology solely managed in a command center, cloud solutions and mobile applications are becoming prevalent. Read more on how today's technologies are spilling into the facilities realm.
See, Swipe and Zoom Into Innovation
The future of facility management may feel as familiar as using a smartphone or tablet. Honeywell's Deborah Learoyd shows how Command and Control Suite provides access to important building information through an easy-to-navigate, touchscreen interface that helps improve operations and efficiency.
Connecting Utilities to Customers
Connecting with customers and informing them of utility programs is not a one size fits all approach. Honeywell's Justin McCurnin talks about the need for strategic and customized programs to help utilities effectively connect with their customers.
Five Tips: Cutting Energy Spend, Efficiently
You have the latest, high-efficiency lights. You have occupancy sensors and operating schedules. You've recruited employees, asking them to turn off lights and unplug fully charged electronics. What's next? Read more here.
Healthcare Safety and Security –
The Changing Culture
You have responsibility for millions of square feet of facilities, a large staff and a mass of integrated safety and security technologies – thousands of ID cards, readers and cameras. Now, those systems and your obligations are growing due to national security concerns and a desire to implement a tighter security regime with a one-button lock down. How do you balance the needs of the organization with the needs of doctors, staff and patients? Learn more here.
Connected Buildings: The Evolution of Smart
Honeywell's Frank Pennisi shares how smart, connected buildings are evolving, bringing more capabilities and benefits to facility managers, building operators and occupants.
Why Honeywell Users Group?
Honeywell leaders and customers discuss why Honeywell Users Group (HUG) is a valuable event for everyone and how it's the ideal forum to exchange ideas and learn from fellow facility professionals in a wide range of industries.
HUG 2015 Begins: Here's What You Can Expect
Honeywell Users Group (HUG) is officially underway. This week is the highlight of the year for the Building Solutions business, and we're excited to provide a forum for customers to convene, network and share best practices that help solve real business challenges. Read more on what you can expect at this year's HUG.
Honeywell Enterprise Dashboards
Enterprise Dashboards help give you insight into your building's operational efficiency and energy performance, so you can focus on business outcomes. Enterprise Dashboards are part of the Honeywell Command and Control Suite, built upon the Honeywell Enterprise Buildings Integrator (EBI) platform and over 100 years of systems experience.
See full video here.
SSE Hydro Arena: A Smart Building Delivers Substantial Savings
The SSE Hydro arena in Glasgow, Scotland, touts an "entertainment experience for the 21st century," but the facility also has plenty to boast about in terms of its technology and infrastructure. This video captures the power of a smart, connected building and the outcomes it can deliver, including improved security and big cost savings.
Information today is literally at our finger tips thanks to the mass adoption of smartphones and tablets. The simple usability and visual design cues of these consumer devices are starting to influence professional industries including facility management, making facility management technology look a lot more like consumer technology. Honeywell's Graeme Laycock recently penned a byline for Facility Executive on how "employees are coming to expect the same mobility, ease-of-use and simplicity they find on their personal smartphones and tablets." What does this mean for the facility management industry? Click here
Search or browse our complete library of informational materials, including brochures, case studies and videos.
© Honeywell International Inc.


Interested in a role at BBA Architects?
If you are an experienced Architect, Technologist or Planner - we want to hear from you.
Contact us with your CV and examples of your work, sending a cover letter to mail@bba-architects.co.uk.
BBA Architects Ltd are an equal opportunities employer.


Efforts to kick a family off a site in Grantham have forced the town's waste recycling centre and an industrial park road to close today.
Lincolnshire Police earlier shut off Mowbeck Way, near the Grantham Household Waste Recycling Centre, to access the site with South Kesteven District Council and serve the eviction.
The council confirmed it has now evicted the family, who have been living on the land on Alexandra Road in caravans since 2016.
A spokesman for South Kesteven District Council said: "We have done all we can to resolve this situation but unfortunately have been unable to reach agreement with the family over their housing needs.
"South Kesteven District Council has obtained possession of the land at Alexandra Road.
The move saw customers unable to access Grantham Household Waste Recycling Centre and a decision was made by Lincolnshire County Council to close the facility.


The Maranda project was developed by the EuropeAid in its effort to support development in specific areas of Maritime Transport in western and Central Africa (WCA).
Among the first benefactors of this project is the Nigeria Apapa port. Securenet Satcoms Limited executed the Maranda Nigeria project and had recently completed the installation of the Lagos node of the project.
The major objectives of the Maranda project is to improve maritime data management in the ports and regional exchange of data, establish a sound emergency response between major ports in Africa and improve marine environment protection.


Sure why not. I'd go one step further and claw-back to the ammo companies and the steel companies that provided the raw materials. This is bizzaro land and until you're willing to stand and be counted this BS will continue.


Very Very Vicky: Sassy Surfboard Coffee Table!
I found a fun little piece of furniture for the Sassy Seagull one day when I was killing time waiting to pick up a granddaughter from her skating party. I was bumming around a nearby store and came across this mid-century modern coffee table.
With its long oval top it reminded me of a surfboard and I thought it might be a fun piece if we painted it.
I'm not the most talented when it comes to drawing but I found an idea on Pinterest that I liked and thought would be doable.
Once the paint dried for 24 hours Henry used FrogTape for delicate surfaces--the yellow one--to mark off the stripes. Once he measured and was satisfied that the lines were exactly where he wanted, he painted the stripes with blue. We used a sample pot of Behr P460-1u called "Morning Sky" for the stripes.
Great job Henry and great idea Vicky!