text:
using System;
using System.Collections.Generic;
using System.Linq;
using Hyak.Common;
using Microsoft.Azure.Management.Network.Models;

namespace Microsoft.Azure.Management.Network.Models
{
    /// <summary>
    /// LoadBalancer resource
    /// </summary>
    public partial class LoadBalancer : TopLevelResource
    {
        private IList<BackendAddressPool> _backendAddressPools;

        /// <summary>
        /// Optional. Gets or sets Pools of backend IP addresseses
        /// </summary>
        public IList<BackendAddressPool> BackendAddressPools
        {
            get { return this._backendAddressPools; }
            set { this._backendAddressPools = value; }
        }

        private IList<FrontendIpConfiguration> _frontendIpConfigurations;

        /// <summary>
        /// Optional. Gets or sets frontend IP addresses of the load balancer
        /// </summary>
        public IList<FrontendIpConfiguration> FrontendIpConfigurations
        {
            get { return this._frontendIpConfigurations; }
            set { this._frontendIpConfigurations = value; }
        }

        private IList<InboundNatPool> _inboundNatPools;

        /// <summary>
        /// Optional. Gets or sets inbound NAT pools
        /// </summary>
        public IList<InboundNatPool> InboundNatPools
        {
            get { return this._inboundNatPools; }
            set { this._inboundNatPools = value; }
        }

        private IList<InboundNatRule> _inboundNatRules;

        /// <summary>
        /// Optional. Gets or sets list of inbound rules
        /// </summary>
        public IList<InboundNatRule> InboundNatRules
        {
            get { return this._inboundNatRules; }
            set { this._inboundNatRules = value; }
        }

        private IList<LoadBalancingRule> _loadBalancingRules;

        /// <summary>
        /// Optional. Gets or sets loadbalancing rules
        /// </summary>
        public IList<LoadBalancingRule> LoadBalancingRules
        {
            get { return this._loadBalancingRules; }
            set { this._loadBalancingRules = value; }
        }

        private IList<OutboundNatRule> _outboundNatRules;

        /// <summary>
        /// Optional. Gets or sets outbound NAT rules
        /// </summary>
        public IList<OutboundNatRule> OutboundNatRules
        {
            get { return this._outboundNatRules; }
            set { this._outboundNatRules = value; }
        }

        private IList<Probe> _probes;

        /// <summary>
        /// Optional. Gets or sets list of Load balancer probes
        /// </summary>
        public IList<Probe> Probes
        {
            get { return this._probes; }
            set { this._probes = value; }
        }

        private string _provisioningState;

        /// <summary>
        /// Optional. Gets or sets Provisioning state of the PublicIP resource
        /// Updating/Deleting/Failed
        /// </summary>
        public string ProvisioningState
        {
            get { return this._provisioningState; }
            set { this._provisioningState = value; }
        }

        private string _resourceGuid;

        /// <summary>
        /// Optional. Gets or sets resource guid property of the Load balancer
        /// resource
        /// </summary>
        public string ResourceGuid
        {
            get { return this._resourceGuid; }
            set { this._resourceGuid = value; }
        }

        /// <summary>
        /// Initializes a new instance of the LoadBalancer class.
        /// </summary>
        public LoadBalancer()
        {
            this.BackendAddressPools = new LazyList<BackendAddressPool>();
            this.FrontendIpConfigurations = new LazyList<FrontendIpConfiguration>();
            this.InboundNatPools = new LazyList<InboundNatPool>();
            this.InboundNatRules = new LazyList<InboundNatRule>();
            this.LoadBalancingRules = new LazyList<LoadBalancingRule>();
            this.OutboundNatRules = new LazyList<OutboundNatRule>();
            this.Probes = new LazyList<Probe>();
        }

        /// <summary>
        /// Initializes a new instance of the LoadBalancer class with required
        /// arguments.
        /// </summary>
        public LoadBalancer(string location)
            : this()
        {
            if (location == null)
            {
                throw new ArgumentNullException("location");
            }
            this.Location = location;
        }
    }
}


NICE Systems has released a mobile workforce optimization suite that enables customer service managers and employees access to operational and personal data at any time, from anywhere, using their mobile phones or tablets.
The comprehensive mobile WFO suite enables managers to oversee and maintain control of operational metrics and activities in real time, regardless of their physical location. Using their mobile devices, they can accomplish multiple tasks, including monitoring employee performance across key performance indicators and providing coaching where necessary to drive improvements. They can also perform scheduling changes, respond to time-off requests, and approve or contest commissions and rewards.
The NICE mobile WFO suite also gives employees control over their scheduling requests and access to their development plans, performance statistics, and variable pay.
The latest innovation in NICE's mobile WFO capabilities is NICE Manager On-the-Go. With this tablet application, contact center managers can involve themselves in all ongoing interactions in real time, including monitoring service calls, viewing the status of their agents, understanding what is being discussed, observing customer sentiment, and identifying interactions that warrant their intervention. Managers can also intervene through conferencing or chat to help employees satisfy customers and shape interactions as they happen. All of this can be done while away from their workstatio, allowing managers to be mobile within the contact center and to engage with agents as needed to resolve issues.
For example, an inexperienced agent is in the midst of a billing dispute with a VIP customer. As soon as the customer raises his voice, the system sends an alert to the front line manager, who's away from her desk. Taking all of the parameters into consideration, the manager then decides to listen in on the conversation, guides the agents via chat, and can even conference into the call if needed.
"It's critical to enable customer service managers and employees the flexibility to use our solutions regardless of their location," said Yochai Rozenblat, president of the NICE Enterprise Group, in a statement. "For the first time, managers can basically hold contact center operations in their hands and can take the immediate steps necessary to shape their operations in real time to assure customer satisfaction. In today's empowered work environment, all enterprise applications should provide these capabilities."


It's brownish red, with left and right halves (called lobes) that look like a butterfly's wings. It weighs less than an ounce, but helps the body do many things, such as get energy from food, grow, and go through sexual development. In younger children, it is also important for brain development.
Hypothyroidism (or underactive thyroid) is when the thyroid gland doesn't make enough of some important hormones. This makes the body use up energy more slowly, and chemical activity (metabolism) in the cells slows down.


text:
Q: How do I fix up my partitions I just bought a acer aspire laptop. I wanted to install Ubuntu and dual boot with Windows 7. When i tried to do this, I accidentally deleted my windows partition altogether.
I got the recover disks from Acer, but when I tried to restore the partition, it told me it ran out of space.
Here's my partition table. I would like recommendations. I obviously am not going to be cavalier at this point about deleting partitions, but I did clonezilla my drive off and I will again before doing anything too destructive.
My thoughts are to create one big unallocated space outside the secondary partition, but I'm not sure why the extended partition's divided up as it is.
All advice appreciated.

A: You should have used testdisk to restore your old partition, but since it looks like it's already been reformatted, that idea goes out the window.
This probably has to do with the fact that Windows is being installed on an extended partition. By default it'd be in a primary partition. What you could try doing is deleting the partition called /dev/sdb7 and resize "extended" to just fit just the Linux partitions. That should leave you with
/dev/sda1 = ntfs
Freespace
/dev/sda2 = extended
/dev/sda5 = linux-swap
/dev/sda6 = ext4
Then try installing Windows again using the free space as its partition.
If that doesn't work, do this:

*

*Delete all partitions (either from Windows partitioner or Gparted from LiveCD).

*Install Windows 7 like usual, but leave some space for Ubuntu.

*Install Ubuntu from a LiveCD or LiveUSB.

This is kind of a last-resort type answer, but I think it'll save you a lot of headache if you do so.
Since it seems like your computer is pretty fresh (not a lot of backups needed, if any) I'd do this. If you do have anything you'd like to backup, be sure you do so before doing this.

A: If you want to completely remove Ubuntu and restore Windows as your OS, I would simply delete /dev/sda2 altogether and create an NTFS partition to fill up the remaining space on the drive.
If you still want a dual-boot system, create the NTFS partition for Windows and, but leave some unallocated space after for Ubuntu to install itself in.
Restore Windows to the NTFS partition, and then you will be free to install Ubuntu afterwards if you choose to do so.

A: The Acer recovery disc reinstall Windows but in a special way in order to have the less interaction with the user and to preinstall all the programs that were bundled in it.
Due to it's automatic way, it can't install windows in some schemes, even if you have the free disk space.
In order to reinstall Windows you have two choices :

*

*Use Acer recovery disk

*Look for a genuine microsoft windows 7 with the exact same language and edition (some friend of yours must have one ....)

For the part 1 :

*

*Backup your personal Data (windows partitions and Linux partitions)

*Run Ubuntu Live CD and install gparted

*Remove every single partition on the disk (ntfs, ext4, extented, ...)

*Proceed with the acer disk

*Proceed with ubuntu installation

For the part 2 :
 - Backup your personal Data (windows partitions and Linux partitions)
 - Run gparted and delete both ntfs and shrink the extended partition in order to leave 0Mb free inside it and everything outside.
 - Proceed with the Windows disk and put your licence that is hidden below or below the battery
 - Proceed with the Ubuntu Live for repairing the dual boot
 - Done, you kept at least your ubuntu intact instead of deleting eveything
Best regards,

redpajama_set_name: RedPajamaStackExchange


Transport for London has apologised to Pop Idol winner Will Young after he complained that a bus driver subjected him to homophobic abuse.
"We're very sorry to hear of Will Young's experience, and are looking into it urgently," said TfL director of enforcement Steve Burton.
Young says the bus driver called him a "poofter" when he was driving his car in Fulham on 12 December.
The singer said he reported the incident to TfL ten minutes after it had happened but was unable to obtain the onboard video footage from the bus.
"Bus companies on route say video footage gone as too late - quite how someone complains and actually GETS footage I am unsure," he said in a tweet.
London bus drivers are employed by private companies and are not direct employees of Tfl.
TfL has said it is investigating the incident and that any form of hate crime would "not be tolerated".
"Everyone has the right to travel without fear of abuse or intimidation and if anyone witnesses or is victim to hate crime they should report it immediately," said Burton.
"We work closely with our police partners to eradicate hate crimes and fully investigate all reported incidents."
Will Young has called on London Mayor Sadiq Khan to help to identify the bus driver and "ensure he doesn't abuse others".
The singer added, "To be called a poofter isn't the nicest thing and it reminds me what a vile thing prejudicial language is".
Research published in September by the lesbian, gay, bisexual, and transgender rights charity Stonewall found that one in five LGBT people living in the Britain experienced a hate crime or incident due to their sexual orientation or gender identity in the preceding 12 months.
The figure rose to one in four for LGBT people living in Greater London.


A new age of responsibility from oil firms?
Home » A new age of responsibility from oil firms?
Reports on the start of Russian openness to foreign investment in the oil industry with the signing of major deals between British Petroleum PLC and Sidanco and between Royal Dutch/Shell Group and Gazprom.


text:
Tag: Aether Void
Press release: Announcing Æther Void, a psychological retro tabletop RPG in a cross genre universe
By Egg Embry Press Releases, Role Playing
Tribal orcs, high tech agents and steampunk scientists clash in the new tabletop RPG, Æther Void Announcing Æther Void, a psychological retro tabletop RPG in a cross genre universe.
As a corrupt technologically advanced society tries to abduct samples from a neighbouring Steampunk and Fantasy World, they are thwarted by undercover agents in their midst. In the ensuing struggle they crashland on Far Haven where Orcs witness their prophesied ancients falling from the skies.
Æther Void is a cross genre tabletop Roleplaying game, with a wink to retro RPGs like the much renowned Dungeons and Dragons. It features the custom designed Æquilibirum™ Game system that is based on science, as much as possible, featuring known effects from both the physical and the psychological sciences.
The lore of Æther Void is a unique setting where the Fantasy world of Far Haven, the Steampunk world Victoria, and the SciFi / Cyberpunk world Sleeping Dragon are present in the same physical universe, allowing players to play characters on one world, that may eventually discover how to travel to the other worlds.
Each world is based on several existing Earth cultures. Sleeping Dragon has a, mostly Chinese, cultural background, where Victoria features the culture and zeitgeist of Industrial Revolution Renaissance Europe. Far Haven features Viking culture, ancient Slavic cultures, some obscure Chinese myths, tribal culture, and Shinto-buddhist influences.
Æther Void currently has a closed Beta Program up and running to test the very first early prototype of the game, for which interested RPG players can sign up on the website aethervoid.com. Æther Void is scheduled to go live on Kickstarter late summer or early fall 2019, after which a widespread open Beta test will follow, leading up to the actual release of the game (hopefully in time for Christmas).
Æther Void is being developed by MBIT Entertainment B.V., a Dutch Indie Tabletop Developer, based in Groningen, Startup-heaven and jewel of the North of the Netherlands. MBIT was founded by Mendel Bouman, and Ite Teune. Mendel is an indie Game Developer, Publisher, and founder of Indietopia. He worked on indie games such as Convoy, helps regional Indies to make it, and has been an avid Tabletop RPG player since the age of 8 (back in 1987). Ite is an educator with a passion for anything scientific (Chemistry, Biology, Physics, etc), teaching high school kids values and knowledge on a daily basis, and is using his passion as a veteran RPG player to educate the world.
Tagged Aether Void, Kickstarter, Press Release

redpajama_set_name: RedPajamaCommonCrawl


text:
A Seat at the Table: The State of International Horror in 2020 | Features
"There is a big shift in sensitivity now. Audiences want different things," said Flores. "Viewers are getting tired of formulas and are hungry for options. Then suddenly, with exotic movies appearing—like in the case of 'La Llorona'—people are not only discovering new voices, but they're discovering historical realities that are not commonly touched upon."
"Diablo Rojo PTY"
Despite baseless fallacies that peg my beloved genre as nothing but titillation and gore on the cheap, horror's limitlessness grants filmmakers an ability to express themselves on universally understood levels without sacrificing their self-representation—for example, Sol Moreno and J. Oskura Nájera's "Diablo Rojo PTY." Panama's first recognized horror title is distinctly Panamanian, centering around the phenomenon of "Red Devil" buses that are a national horror story of their own. I found myself not only enraptured by Moreno and Nájera's kitchen-sink application of gigantic haggish puppets or blessed rivers melting covens, but clicking down a rabbit hole of "Diablo Rojo" articles from Panamanian outlets to better understand this threat to pedestrians. Remember when video games like "Math Blasters" taught that learning could be fun? Apply that logic to horror cinema, and this should all make more sense.
As Flores comments: "There is so much pain and tragedy and barbarism all over the world. All fuel for fantastic horror movies, no? The drug war here in Mexico, for example, has propelled stories like 'Tigers Are Not Afraid.' Or 'Belzebuth'? That's a Mexican movie with teeth. American audiences were like, 'Whoa, what the f**k is going on in Mexico?' Audiences from abroad are much more anxious to hear what other people, other cultures have to say."
Representation has long been a problem that's permeated Hollywood systems (in and outside horror) with regards to employment, tokenization, and stereotyping. As that erasure is finally undergoing correction, what's hitting theaters is playing catch-up with alarming results. From Jordan Peele's "Get Out" to Ms. Guerrero's "Culture Shock," from Gerard McMurray's "The First Purge" to Osmany Rodriguez's "Vampires vs. the Bronx," these films are centered around continued failings within communal frameworks. It's important that these storytellers get their chance to reach wider audiences, so that culture can benefit from the entirety of its people instead of grooming some reality where entire communities are silenced while one governing party hogs the megaphone.
Horror has always been political. George A. Romero. Tobe Hooper. Wes Craven. All your favorite iconic masters knew that the scariest stories are rooted in truth. Xenophobia. Classism. Racism. Intolerance. Blanket toxicity against anyone who might register as "different." "Not here, not in my America." You can't fault someone who's only watched horror movies, or any media, generated by lookalikes with the same daily experiences to know any better. Hence why a film like Jeff Barnaby's "Blood Quantum," a zombie outbreak thriller that has plenty to say about the current state of native Indian reservations, stands out amongst other "The Walking Dead" rip-offs. At its core, it's an enlightening and sobering dissection of how Indigenous peoples are still treated, emphasizing far more than just rotten flesh corpses chewing through another nondescript stronghold.
Previous Director John Hyams Talks Survival Thriller Alone
Next A Disaster CD Projekt Red Should Have Seen Coming


text:
Extra frame on timeline when marking Out point
ArchetypeHQ
/t5/premiere-pro-ideas/extra-frame-on-timeline-when-marking-out-point/idi-p/13507319 Jan 20, 2023 Jan 20, 2023
Adobe might consider this an "idea" but guys, it's a BUG, and one that should have been taken care of decades ago.
Premiere automatically adds 1 frame before the out point when you set an out point. WHY?!?!??! I've been using Premiere for 15 years for national commercials, and every time I export I have to bump in on the timeline to make sure that I physically move the end point, because if I just hit "O", it adds a frame.
Please guys, this is one of those silly little changes that should be addressed easily. At the VERY least it should be a preference option. One more reason to start playing with Davinci I guess, as if we needed more...
Idea No status
/t5/premiere-pro-ideas/extra-frame-on-timeline-when-marking-out-point/idc-p/13507551#M422 Jan 20, 2023 Jan 20, 2023
ArchetypeHQ,
This is not a bug. There are 2 "paradigms" in the video editing world regarding an Out point. The oldest one is from the video linear bays / EDL workflows, where the Out Point was exclusive, e.g. outside of the edit. The more "modern" paradigm makes the Out point "inclusive", which is what came from the film and AVID worlds.
This makes sense nowadays as you park on a frame, mark in, mark out, and you will have selected a duration of one frame. In the EDL world, you would put the 2nd frame as the Out to get your 1 frame duration...
Some softwares have this configurable as a User Pref setting (I know Autodesk Smoke/Flame had/have it), but I don't see this in Premiere's Prefs. To my knowledge, this is how Avid and Resolve work as well.
ArchetypeHQ AUTHOR
Thanks for the history, I was fairly sure it would be "still around" specifically for that reason. That said, we also used to live in caves. Time for Adobe to put a door and some windows on this feature.
I consider it a bug at this point. Not a paradigm. There are hundreds of posts around the web about this specific issue.
daapap
Working with Avid you have the option to jump to the last frame of a clip in the timeline with ALT pressed. I'm missing this sorely in Premiere.


LHSimulations Sármellék (LHSM) would be good!
It's a small airport, opening in april. No jetways so maybe it's easy to get aesed.
I am one of the developers, if any aditional questions are needed, please feel free to contact me.
If we can AES support to it.
P.S Keep up the good work.
I got another request for Yemelyanovo International Airport . This one is located in Russia and is used by Lufthansa Cargo for fuel stops. It dosn´t have any jet bridges.
I Have many France VFR airports, mots of them are compatible with AES.
Recently, I bought the new LFST for FSX scenery.
Any chances for the biggest and also the newest polish airport whitch is EPWA2010?
And you can find others jobs here: (http://www.brcenarios.com.br/new/) all are great!!
Free Fortaleza (SBFZ) from Alvaro Volponi!!
Very much improved freeware addon looking extremely polished off, AES & AES Lite?!!?
YMML would be a very nice edition to all us "Down Under" fly boys.
Cloud9 Bergen (ENBR) for FSX would be nice.
Rhodes Island 2010 by Greek Airports Project please!
As well please, France VFR's Strasbourg Entzheim - LFST.


Shellie Byatt took part in the Clive Hicks-Jenkins' Puppet Challenge and then used her puppets to make figures for a box in the nutshell series.
The woodcutter's shirt was ripped, untimely, from an innocent dolly.
A simple, unpainted clay piece by Adrienne Craddock, refers to the Goose Girl or Mother Goose.
The figures are housed in an old leather jewellery box, much-loved but minus its lid.
This entry was posted in Uncategorized on January 17, 2015 by chestnutandhazelnut.


SANFORD — Philip D. Inniss, 78, of Sanford and formerly of Kennebunkport, died Wednesday, Jan. 19, 2011, in the Maine Veteran's Home in Scarborough after a lengthy illness.
Philip was born in Kennebunkport, a son of Rueben and Delma McKenney Inniss. He attended Kennebunkport schools. He was a U.S. Army veteran having served in Vietnam.
Following his Army service, he was employed in the highway construction industry in New Hampshire and Maine. He also was employed with the Stanley Paving Company. In later years, he was employed with the town of Kennebunkport Highway Department.
Philip was predeceased by seven brothers and six sisters.
He is survived by his last living sister, Marguerite Wilcox, of Biddeford; and 41 nieces and nephews.


text:
# Set List View Details
Demonstrates how to update details of a List View

```posh

# Connect to site
$siteurl = "https://[tenant].sharepoint.com/sites/[siteurl]"

Connect-SPIaC -CredentialName "sponline" -Url $siteurl

# Update the JSLink
$listName = "List Name"
$viewName = "View Name"
jsLinks = @("~sitecollection/SiteAssets/JS/file1.js", "~sitecollection/SiteAssets/JS/file2.js")

Set-IaCListViewMinimal -List $listName -Identity $viewName -JsLinkUris $jsLinks -Verbose

# Update the ViewCAML

$listName = "List Name"
$viewName = "View Name"
$viewquery = "<Query></Query>"

Set-IaCListViewMinimal -List $listName -Identity $viewName -CamlQuery $viewquery -Verbose

# Close the connection
Disconnect-SPIaC

```

redpajama_set_name: RedPajamaGithub


SHELBURNE FALLS, Mass. (AP) — An unusual exhibit of artwork by U.S. military veterans is now on display through April 30 at the Salmon Falls Gallery. Some of it is unabashedly patriotic, some depicts the natural environment and some is definitely abstract — different perspectives by veterans living in western Massachusetts, who have all struggled with homelessness after coming home from war-torn regions.
Having their artwork on display is a new experience for many of the artists in the Soldier On Veterans Community Arts Initiative. Soldier On is a nonprofit organization started in 1994 and dedicated to ending veterans' homelessness. Based in Pittsfield and at the VA Hospital in Northampton, Soldier On provides transitional housing and support services to help veterans move from homelessness to home ownership. Veterans programs that help with this transition include: Permanent and transitional housing, mental health services, substance abuse treatment, peer support, medical/dental treatment and employment and educational services.
"Our veterans range in age from 19 to in their 70s," says Nathan Hanford, the artist-in-residence who has been heading Soldier On's veterans art program for the past three years. "It's getting increasingly younger," he says. "We have Vietnam-era veterans to a lot of younger vets under age 30."
So far, about 120 veterans have participated in the arts program, with Hanford teaching an hour-long art class two days a week in Pittsfield and three days a week in Northampton. Hanford has a fine arts background, and honed his skills while living in New York City and in London. But if a veteran pursues an art form he's not comfortable with, "there are plenty of people willing to help offer their talents," he said.
"I didn't ever foresee having this career with vets in the arts," said Hanford. But Hanford has found that more arts organizations are open to working with the program's veterans. These include The Mount, the Norman Rockwell Museum, Shakespeare & Co., and Jacob's Pillow. "People want to be a good neighbor to the veterans that we serve," he said. "People really feel very strongly about veterans' issues — homeless vets, in particular.
"Most of these men and women have never pursued arts," he said. "Soldier On provided me a budget to get materials to those that need them. It forms a strong bond for them to get out of their (transitional) apartments and into the community."
Hanford said learning art skills and making art "starts building something greater than where they're at." Hanford said art gives the men and women another way to reflect on their experiences and their lives.
"No one ever gave me a compliment for making something beautiful out of nothing," is one comment Hanford has heard participants say. He said making art "gives them a step toward being safe, clean and stable."
The veterans' paintings on display at the Salmon Falls Gallery, 1 Ashfield St., are for sale, with the asking prices selected by the artists themselves. The gallery has donated the exhibition space and all proceeds from the sale of any artwork will go directly to the artists.
Hanford also has an exhibit of his embroidered work, "Friendship Thread: Portraits of Friends both Near and Far," with 20 percent of any sales from those works to benefit Soldier On.
This article was written by Diane Broncaccio from The Associated Press and was legally licensed through the NewsCred publisher network. Please direct all licensing questions to legal@newscred.com.


text:
Posted in Off-Broadway, race, Theater Reviews
Fairview Review: 2019 Pulitzer Winning Drama About Race and the White Gaze Remounted
New York Theater June 16, 2019 Leave a comment
The stunning production of "Fairview," Jackie Siblies Drury's challenging play, is now being remounted with the same extraordinary cast and creative team at the Theatre for a New Audience in Brooklyn, a year after its brief run at the smaller Soho Rep, and two months after winning the 2019 Pulitzer Prize for Drama. The new run offers theatergoers a second chance to see what the buzz was about. But, for better or for worse, this second run also comes with a new context.
"Fairview" is in three acts, each one cleverly investing the title of the play with a completely different meaning, and in the process blowing up the audience's perceptions and increasing our discomfort.
In the first, Fairview sounds like the name of the suburb where the play takes place. As it begins, Beverly (Heather Alicia Simms) is peeling carrots over the dinner table in the living room, preparing for a birthday dinner for her mother. One by one the other characters enter – her loving and lovable husband Dayton (Charles Browning), who has to be prodded to bring the correct silverware; her visiting sister Jasmine (Roslyn Ruff), about whom Dayton says "That woman knows every thing about every body and never has one good thing to say about anybody"; Beverly's bubbly teenage daughter Keisha (MaYaa Boateng), who chatters on about a teammate who is always late for practice, but then asks Jasmine a favor – to help her convince Beverly to allow her to take a "gap year" before college. Mentioned but not yet arriving at the party – Tyrone, Beverly's busy if neglectful brother, who is a lawyer on the fast track to make partner, and Mama herself unseen upstairs. Keisha talks about her best friend Erika.
It feels like an affectionate, and inviting, and familiar, look at a comfortable black middle class family. It promises some laughs, some warmth, maybe some low-stakes intrigue that leads to a moment where a character says something wise or sentimental.
"I love these women," Keisha says, in an aside to the audience. "Joy. And Dancing and Singing!"
But from the get-go, things also seem a little… off. There's a bit too much dancing and singing, and even when Jasmine is not dancing, her gestures are self-consciously theatrical, almost regal. The music Beverly turns on has momentary blips and glitches. There is something too elegant about Mimi Lien's set; the color scheme — off-white, decorated with an all-white abstract painting — starts to feel like a clue. Most telling of all, in retrospect, is the very first line of the play. Beverly says to Dayton: "What are you looking at?!"and then "You say hello, you don't just watch a person." Much later Keisha says to another character: "I can't hear anything but you staring at me."
Drury has said that "Fairview" grew out of her interest in exploring "surveillance." By the end of the play, it seems clear the playwright has been examining what many have come to call the white gaze. The white gaze can be taken as literal in the theater, given the demographics of theatergoers. This was driven home by a recent essay in the Washington Post by Gbenga Akinnagbe, who portrays wrongly-accused black defendant Tom Robinson in To Kill A Mockingbird, who wrote about how taxing it has been to portray an oppressed black man in front of a mostly white audience eight times a week.
But in "Fairview," Drury is making a larger point, delivered meta-theatrically, that black people always feel on stage, always being observed, judged, summed up.
This message helps make "Fairview" tricky to review.
In awarding "Fairview" the Pulitzer, the jury described the play as:
"A hard-hitting drama that examines race in a highly conceptual, layered structure, ultimately bringing audiences into the actors' community to face deep-seated prejudices."
Is it fair now in a review to reveal more of that "layered structure" than most reviewers did last year? The concept of a "spoiler" arguably has been rendered moot in a work that's been labeled an exemplar of the age and thus considered a candidate for the canon.
For that matter, are there any great plays that hinge on surprise – that are "spoiled" if you know in advance what happens? Does "Who's Afraid of Virginia Woolf" have less of an impact to those theatergoers who already know George and Martha's secrets? Will "Fairview" feel weaker on a second viewing?
The theatergoers in Ancient Greece are said to have known the plots of all the great tragedies in advance; scholars maintain that this communal knowledge is much of what gave these plays their power.
There's much talk these days that our culture has become atomized – that our digital lives are divided into niches, that there's no longer any collective knowledge. But "Fairview" implicitly assumes a modern-day communal knowledge – the knowledge of family dynamics that comes from watching sitcoms. In "Fairview," Drury is questioning the accuracy – and fairness — of that knowledge, in particular when it comes to black families.
For those of you who are planning to attend "Fairview"; feel I've told you enough so far to go on; and/or don't want anything "spoiled": You can stop reading this review at the end of this paragraph. But I will continue to describe the play (beneath the photographs), albeit mostly in outline, for two basic reasons. It will help explain how well crafted Drury's writing is, how complicated the challenge mastered by the actors, and how both technically and aesthetically accomplished the work of the creative team — Sarah Benson's direction, Raja Feather Kelly's choreography, the quartet of designers' intricately coordinated production. I also feel it only fair that a theatergoer be told what exactly is potentially uncomfortable in the show, so that they can make an informed decision about whether they want to attend.
Heather Alicia Simms as Beverly
Charles Browning as Dayton
Heather Alicia Simms and Charles Browning as man and wife Heather and Charles
Roslyn Ruff as Jasmine
MaYaa Boateng as Keisha
At the end of the first act, in the suburb of Fairview, Beverly faints, the lighting changes – and the entire first act repeats, with two crucial differences. The first is that none of the characters from the first act say any of their dialogue; they silently and precisely repeat every movement they made. This showcases Kelly's choreography, revealing just how inspired and meticulous it is. The choreographer has planted gestures in the voiced run-through of Act I that now have a different resonance in the second run-through. We are made to grasp the artificiality of performances we had taken to be largely realistic.
The second difference in Act II is that there is now a soundtrack – a voiceover discussion of race by four new characters, all of whom are white. And this is now the second meaning of fair view – fair as in fair-skinned; white. The first part of their conversation is each in turn discussing the question: "If you could choose to be any race at all, what race would you be?" What's especially admirable in this cringe-worthy conversation is that it is not terribly exaggerated. Their commentary stays within the bounds of what you might actually overhear people, maybe slightly drunk, saying at a party. It reflects distinctly different attitudes towards race — blunt, ignorant, tortured, patronizing, or well-meaning and trying to be woke; from "You'd just want to be Black so you could say the N-word." to "The person in my life who expressed love to me in a way that I could feel it, that was Mabel." (her black nanny) – all problematic because the subjects of their conversation are treated like The Other.
Both the movement on stage and the voiceover commentary become increasingly overheated and surreal and more and more interconnected (kudos for the coordination both to Kelly and sound designer Mikaal Sulaiman.) And then, in Act III, the white characters appear on stage, taking the identity of the characters we were waiting for in Act I – Tyrone, Mama, Erika. Montana Blanco goes to town with their costumes, a pointed satire on white envy, appropriation and distortion of black culture. They are intruders and instigators, changing the narrative, imposing stereotypical behavior and situations on the black characters. One even breaks in on Keisha's aside, a violation of standard theatrical practice.
It's all too much for Keisha, who rebels, breaks the fourth wall, and talks in a long, impassioned monologue (beautifully delivered by MaYaa Boateng) about the need for white people "to make space for us," for "my people of color…my colorful people." She makes her point about the dominance of the white gaze not so much through her words, which are not especially memorable, as through one action, requiring audience participation. It is the third meaning of the title of the play – and it is itself a pun. She is asking for a fair view – fair as in just, view as in perspective. The last word in the piece is "fair."
But she also means a literal view: In a variation of what Taylor Mac did at one point in his A 24 Decade History of Popular Music, Keisha/MaYaa Boateng asks, gently insists, that all the white people in the audience leave their seats and get up on the stage. They are exchanging places with the black characters/actors, who now take seats in the auditorium. Those theatergoers who don't identify as white stay seated. Keisha/Boateng (for it's not clear at this point whether it's the character or the actress) sits in a row in the middle of the auditorium, with her back to the stage, facing the theatergoers who remain in their seats for her climactic address.
It's proven an uncomfortable moment for many people, for a variety of reasons. "It's curious to me that even a simple embodiment of a gesture toward dismantling white supremacy is so difficult for people to do," Drury told American Theatre Magazine about this moment. There feels in her remark a lack of empathy towards theatergoers, who may be disabled, for example, or shy, or ambivalent or uncertain about their identity. And perhaps some resent being singled out for something beyond their control, and don't feel they need the didactic lesson to understand that it's wrong to do so.
It might be worth mentioning that the Pulitzer is awarded for a script, not a production; the five jurors, all of whom were white, might not have had to get out of their seats, because they might not have attended a performance. If you find my mention of the jurors' race irrelevant and even in questionable taste, "Fairview" might not be for you.
TFANA at Polonsky Shakespeare Center
Written by Jackie Sibblies Drury; Choreography by Raja Feather Kelly; Directed by Sarah Benson.
Set design by Mimi Lien, costume design by Montana Blanco, lighting design by Amith Chandrashaker, sound design by Mikaal Sulaiman
Cast: MaYaa Boateng, Charles Browning, Hannah Cabell, Natalia Payne, Jed Resnick, Luke Robertson, Roslyn Ruff , Heather Alicia Simms
Running time: About two hours, with no intermission
Tickets: $55-$115. "New Deal" tickets for those ages 30 and under or full-time students of any age: $20
Fairview is on stage through July 28, 2019
← It's MOLLY Bloomsday In NYC
A Strange Loop Review: Black, big, gay writer gets navel-gazy and tuneful →


The International Writing Program Fall Residency at The University of Iowa is one of the oldest and largest multicultural writing residencies in the world. Since 1967, emerging and established writers from around the globe have been coming to the university to participate in this unique writing program. It aims to provide authors the setting for cultural exchange, and the time and space to write, read, translate, study, and to become part of the literary and academic community at the university. The program is supported by the U.S. Department of State.
Each fall, about 25 to 40 writers gather in Iowa City for an approximately 10-week residency to work on their own projects, to give readings and lectures, and to interact with American audiences and literary communities across the United States.
Chandramohan Sathyanathan, a poet from Kerala, was selected as the Indian participant for the program in 2018. His poems often portray the sociopolitical struggles of the marginalized, the working class and the nomadic outcasts of the world.
When did you realize that poetry was something you wanted to pursue as a career? Who were your early influences?
I first encountered poetry at a library, reading the works of Tomas Tranströmer. I knew that it was something I wanted to pursue after some major local poets approved of some of my poems and encouraged me to write more. As part of a reading assignment, a friend of mine had suggested "Invisible Man" by Ralph Ellison. This book had a profound impact on me.
My influence is a Malayalam poet, K. Satchidanandan. I have also been devouring the works of Aimé Césaire and Derek Walcott for a long time, not to mention the contemporary poets like Lesego Rampolokeng, Nathaniel Mackey, Terrance Hayes and Kamau Brathwaite.
How did you become involved in the International Writing Program Fall Residency at the University of Iowa?
The U.S. consulates in India nominate writers for the program. The Chennai Consulate nominated me, and I eagerly accepted.
What were some of the most distinct differences you observed—both academically and culturally—at The University of Iowa, as compared to an Indian educational institution?
My first observation was that the system worked much more efficiently there than in my own country. American academia seems to value every individual. I did suffer a certain degree of cultural shock, even though I was familiar with most of the American way of life.
The punctuality with which every event would start and the commitment to the profession by every member of the teaching staff were inspiring. The United States provides an ideal habitat for a dedicated artist to thrive in.
Please share your key takeaways from your time at The University of Iowa?
Some key takeaways were to believe in yourself and be the voice no one else can be. Strive to be a writer who can encode our words with our life experiences that are unique and representative of the cultures we come from.
What advice would you give other aspiring poets or writers?
The only suggestion I can give an aspiring writer is to read as much as possible. Read voraciously every strand and genre of literature that you can get your hands on. Also, engage with other art forms like painting, cinema and music. A writer should be aware of his or her own privileges and take advantage of all the art that surrounds us.
The main focus I have at the moment is to study Malayalam Dalit poetry and translate them to English, and develop platforms for a conversation between Dalit writers and African American writers.
I have recently been scrutinizing the works of Shane Book, Safiya Sinclair, Anne Winters, Vladimir Lucien, Ishion Hutchinson, Natasha Trethewey and Chris Abani. I am inspired to experiment with my writing along the lines of these authors.


text:
describe Fastlane do
  describe Fastlane::FastFile do
    build_log_path = File.expand_path("~/Library/Logs/fastlane/xcbuild/#{Time.now.strftime('%F')}/#{Process.pid}/xcodebuild.log")

    describe "Xcodebuild Integration" do
      before :each do
        Fastlane::Actions.lane_context.delete :IPA_OUTPUT_PATH
        Fastlane::Actions.lane_context.delete :XCODEBUILD_ARCHIVE
      end

      it "works with all parameters" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xcodebuild(
            analyze: true,
            archive: true,
            build: true,
            clean: true,
            install: true,
            installsrc: true,
            test: true,
            arch: 'architecture',
            alltargets: true,
            archive_path: './build/MyApp.xcarchive',
            configuration: 'Debug',
            derivedDataPath: '/derived/data/path',
            destination: 'name=iPhone 5s,OS=8.1',
            destination_timeout: 240,
            dry_run: true,
            enable_address_sanitizer: true,
            enable_code_coverage: true,
            export_archive: true,
            export_format: 'ipa',
            export_installer_identity: true,
            export_options_plist: '/path/to/plist',
            export_path: './build/MyApp',
            export_profile: 'MyApp Distribution',
            export_signing_identity: 'Distribution: MyCompany, LLC',
            export_with_original_signing_identity: true,
            hide_shell_script_environment: true,
            jobs: 5,
            parallelize_targets: true,
            keychain: '/path/to/My.keychain',
            project: 'MyApp.xcodeproj',
            result_bundle_path: '/result/bundle/path',
            scheme: 'MyApp',
            sdk: 'iphonesimulator',
            skip_unavailable_actions: true,
            target: 'MyAppTarget',
            toolchain: 'toolchain name',
            workspace: 'MyApp.xcworkspace',
            xcconfig: 'my.xcconfig',
            buildlog_path: 'mypath',
            raw_buildlog: false,
            xcpretty_output: 'test',
            xcargs: '-newArgument YES'
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && xcodebuild analyze archive build clean install installsrc test -arch \"architecture\" " \
          "-alltargets -archivePath \"./build/MyApp.xcarchive\" -configuration \"Debug\" -derivedDataPath \"/derived/data/path\" " \
          "-destination \"name=iPhone 5s,OS=8.1\" -destination-timeout \"240\" -dry-run -exportArchive -exportFormat \"ipa\" " \
          "-exportInstallerIdentity -exportOptionsPlist \"/path/to/plist\" -exportPath \"./build/MyApp\" -exportProvisioningProfile " \
          "\"MyApp Distribution\" -exportSigningIdentity \"Distribution: MyCompany, LLC\" -exportWithOriginalSigningIdentity " \
          "-hideShellScriptEnvironment -jobs \"5\" -parallelizeTargets OTHER_CODE_SIGN_FLAGS=\"--keychain /path/to/My.keychain\" -project " \
          "\"MyApp.xcodeproj\" -resultBundlePath \"/result/bundle/path\" -scheme \"MyApp\" -sdk \"iphonesimulator\" -skipUnavailableActions -target " \
          "\"MyAppTarget\" -toolchain \"toolchain name\" -workspace \"MyApp.xcworkspace\" -xcconfig \"my.xcconfig\" -newArgument YES -enableAddressSanitizer " \
          "\"YES\" -enableCodeCoverage \"YES\" | tee 'mypath/xcodebuild.log' | xcpretty --color --test"
        )
      end

      it "works with a destination list" do
        result = Fastlane::FastFile.new.parse("lane :test do
        xcodebuild(
          destination: [
            'name=iPhone 5s,OS=8.1',
            'name=iPhone 4,OS=7.1',
          ],
          destination_timeout: 240
        )
      end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-destination \"name=iPhone 5s,OS=8.1\" " \
          + "-destination \"name=iPhone 4,OS=7.1\" " \
          + "-destination-timeout \"240\" " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "| tee '#{build_log_path}' | xcpretty --color --simple"
        )
      end

      it "works with build settings" do
        result = Fastlane::FastFile.new.parse("lane :test do
        xcodebuild(
          build_settings: {
            'CODE_SIGN_IDENTITY' => 'iPhone Developer: Josh',
            'JOBS' => 16,
            'PROVISIONING_PROFILE' => 'JoshIsCoolProfile'
          }
        )
      end").runner.execute(:test)

        expect(result).to include('CODE_SIGN_IDENTITY="iPhone Developer: Josh"')
        expect(result).to include('JOBS="16"')
        expect(result).to include('PROVISIONING_PROFILE="JoshIsCoolProfile"')
      end

      it "works with export_options_plist as hash" do
        result = Fastlane::FastFile.new.parse("lane :test do
        xcodebuild(
          archive_path: './build-dir/MyApp.xcarchive',
          export_archive: true,
          export_options_plist: {
            method: \"ad-hoc\",
            thinning: \"<thin-for-all-variants>\",
            teamID: \"1234567890\",
            manifest: {
              appURL: \"https://example.com/path/MyApp Name.ipa\",
              displayImageURL: \"https://example.com/display image.png\",
              fullSizeImageURL: \"https://example.com/fullSize image.png\",
            },
          }
        )
      end").runner.execute(:test)

        expect(result).to start_with(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-archivePath \"./build-dir/MyApp.xcarchive\" " \
          + "-exportArchive " \
        )
        expect(result).to match(/-exportOptionsPlist \".*\.plist\"/)
        expect(result).to end_with(
          "-exportPath \"./build-dir/MyApp\" " \
          + "| tee '#{build_log_path}' | xcpretty --color --simple"
        )
      end

      it "when archiving, should cache the archive path for a later export step" do
        Fastlane::FastFile.new.parse("lane :test do
        xcodebuild(
          archive: true,
          archive_path: './build/MyApp.xcarchive',
          scheme: 'MyApp',
          workspace: 'MyApp.xcworkspace'
        )
      end").runner.execute(:test)

        expect(Fastlane::Actions.lane_context[:XCODEBUILD_ARCHIVE]).to eq("./build/MyApp.xcarchive")
      end

      it "when exporting, should use the cached archive path from a previous archive step" do
        result = Fastlane::FastFile.new.parse("lane :test do
        xcodebuild(
          archive: true,
          archive_path: './build-dir/MyApp.xcarchive',
          scheme: 'MyApp',
          workspace: 'MyApp.xcworkspace'
        )

        xcodebuild(
          export_archive: true,
          export_path: './build-dir/MyApp'
        )
      end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-exportArchive " \
          + "-exportPath \"./build-dir/MyApp\" " \
          + "-archivePath \"./build-dir/MyApp.xcarchive\" " \
          + "| tee '#{build_log_path}' | xcpretty --color --simple"
        )
      end

      it "when exporting, should cache the ipa path for a later deploy step" do
        Fastlane::FastFile.new.parse("lane :test do
          xcodebuild(
            archive_path: './build-dir/MyApp.xcarchive',
            export_archive: true,
            export_path: './build-dir/MyApp'
          )
        end").runner.execute(:test)

        expect(Fastlane::Actions.lane_context[:IPA_OUTPUT_PATH]).to eq("./build-dir/MyApp.ipa")
      end

      it "when exporting Mac app, should cache the app path for a later deploy step" do
        Fastlane::FastFile.new.parse("lane :test do
          xcodebuild(
            archive_path: './build-dir/MyApp.xcarchive',
            export_archive: true,
            export_format: 'app',
            export_path: './build-dir/MyApp'
          )
        end").runner.execute(:test)

        expect(Fastlane::Actions.lane_context[:IPA_OUTPUT_PATH]).to eq("./build-dir/MyApp.app")
      end

      context "when using environment variables"
      before :each do
        ENV["XCODE_BUILD_PATH"] = "./build-dir/"
        ENV["XCODE_SCHEME"] = "MyApp"
        ENV["XCODE_WORKSPACE"] = "MyApp.xcworkspace"
      end

      after :each do
        ENV.delete("XCODE_BUILD_PATH")
        ENV.delete("XCODE_SCHEME")
        ENV.delete("XCODE_WORKSPACE")
      end

      it "can archive" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xcodebuild(
            archive: true
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "archive " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "-archivePath \"./build-dir/MyApp.xcarchive\" " \
          + "| tee '#{build_log_path}' | xcpretty --color --simple"
        )
      end

      it "can export" do
        ENV.delete("XCODE_SCHEME")
        ENV.delete("XCODE_WORKSPACE")
        result = Fastlane::FastFile.new.parse("lane :test do
          xcodebuild(
            archive_path: './build-dir/MyApp.xcarchive',
            export_archive: true
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-archivePath \"./build-dir/MyApp.xcarchive\" " \
          + "-exportArchive " \
          + "-exportPath \"./build-dir/MyApp\" " \
          + "| tee '#{build_log_path}' | xcpretty --color --simple"
        )
      end
    end

    describe "xcarchive" do
      it "is equivalent to 'xcodebuild archive'" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xcarchive(
            archive_path: './build-dir/MyApp.xcarchive',
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace'
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-archivePath \"./build-dir/MyApp.xcarchive\" " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "archive " \
          + "| tee '#{build_log_path}' | xcpretty --color --simple"
        )
      end
    end

    describe "xcbuild" do
      it "is equivalent to 'xcodebuild build'" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xcbuild(
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace'
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "build " \
          + "| tee '#{build_log_path}' | xcpretty --color --simple"
        )
      end
    end

    describe "xcbuild without xpretty" do
      it "is equivalent to 'xcodebuild build'" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xcbuild(
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace',
            raw_buildlog: true
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "build " \
          + "| tee '#{build_log_path}' "
        )
      end
    end

    # describe "xcbuild without xpretty and with test" do
    #   it "is equivalent to 'xcodebuild build'" do
    #     result = Fastlane::FastFile.new.parse("lane :test do
    #       xcbuild(
    #         scheme: 'MyApp',
    #         workspace: 'MyApp.xcworkspace',
    #         raw_buildlog: true,
    #         test: true
    #       )
    #     end").runner.execute(:test)

    #     expect(result).to eq(
    #       "set -o pipefail && " \
    #       + "xcodebuild " \
    #       + "-scheme \"MyApp\" " \
    #       + "-workspace \"MyApp.xcworkspace\" " \
    #       + "build test " \
    #       + "| tee '#{build_log_path}' "
    #     )
    #   end
    # end

    describe "xcbuild without xpretty and with test and reports" do
      it "is equivalent to 'xcodebuild build'" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xcbuild(
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace',
            raw_buildlog: true,
            report_formats: ['html'],
            test: true
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "cat '#{build_log_path}' " \
          + "| xcpretty --color --report html --test > /dev/null"
        )
      end
    end

    describe "xcclean" do
      it "is equivalent to 'xcodebuild clean'" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xcclean
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && xcodebuild clean | tee '#{build_log_path}' | xcpretty --color --simple"
        )
      end
    end

    # describe "xcexport" do
    #   it "is equivalent to 'xcodebuild -exportArchive'" do
    #     result = Fastlane::FastFile.new.parse("lane :test do
    #       xcexport(
    #         archive_path: './build-dir/MyApp.xcarchive',
    #         export_path: './build-dir/MyApp',
    #       )
    #     end").runner.execute(:test)

    #     expect(result).to eq(
    #       "set -o pipefail && " \
    #       + "xcodebuild " \
    #       + "-archivePath \"./build-dir/MyApp.xcarchive\" " \
    #       + "-exportArchive " \
    #       + "-exportPath \"./build-dir/MyApp\" " \
    #       + "| tee '#{build_log_path}' | xcpretty --color --simple"
    #     )
    #   end
    # end

    describe "xctest" do
      it "is equivalent to 'xcodebuild build test'" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xctest(
            destination: 'name=iPhone 5s,OS=8.1',
            destination_timeout: 240,
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace'
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-destination \"name=iPhone 5s,OS=8.1\" " \
          + "-destination-timeout \"240\" " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "build " \
          + "test " \
          + "| tee '#{build_log_path}' | xcpretty --color --test"
        )
      end
    end

    # describe "address sanitizer" do
    #   it "address sanitizer is enabled" do
    #     result = Fastlane::FastFile.new.parse("lane :test do
    #       xctest(
    #         destination: 'name=iPhone 5s,OS=8.1',
    #         destination_timeout: 240,
    #         scheme: 'MyApp',
    #         workspace: 'MyApp.xcworkspace',
    #         enable_address_sanitizer: true
    #       )
    #     end").runner.execute(:test)

    #     expect(result).to eq(
    #       "set -o pipefail && " \
    #       + "xcodebuild " \
    #       + "-destination \"name=iPhone 5s,OS=8.1\" " \
    #       + "-destination-timeout \"240\" " \
    #       + "-enableAddressSanitizer \"YES\" " \
    #       + "-scheme \"MyApp\" " \
    #       + "-workspace \"MyApp.xcworkspace\" " \
    #       + "build " \
    #       + "test " \
    #       + "| tee '#{build_log_path}' | xcpretty --color --test"
    #     )
    #   end

    #   it "address sanitizer is disabled" do
    #     result = Fastlane::FastFile.new.parse("lane :test do
    #       xctest(
    #         destination: 'name=iPhone 5s,OS=8.1',
    #         destination_timeout: 240,
    #         scheme: 'MyApp',
    #         workspace: 'MyApp.xcworkspace',
    #         enable_address_sanitizer: false
    #       )
    #     end").runner.execute(:test)

    #     expect(result).to eq(
    #       "set -o pipefail && " \
    #       + "xcodebuild " \
    #       + "-destination \"name=iPhone 5s,OS=8.1\" " \
    #       + "-destination-timeout \"240\" " \
    #       + "-enableAddressSanitizer \"NO\" " \
    #       + "-scheme \"MyApp\" " \
    #       + "-workspace \"MyApp.xcworkspace\" " \
    #       + "build " \
    #       + "test " \
    #       + "| tee '#{build_log_path}' | xcpretty --color --test"
    #     )
    #   end
    # end

    describe "test code coverage" do
      it "code coverage is enabled" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xctest(
            destination: 'name=iPhone 5s,OS=8.1',
            destination_timeout: 240,
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace',
            enable_code_coverage: true
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-destination \"name=iPhone 5s,OS=8.1\" " \
          + "-destination-timeout \"240\" " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "build " \
          + "test " \
          + "-enableCodeCoverage \"YES\" " \
          + "| tee '#{build_log_path}' | xcpretty --color --test"
        )
      end

      it "code coverage is disabled" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xctest(
            destination: 'name=iPhone 5s,OS=8.1',
            destination_timeout: 240,
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace',
            enable_code_coverage: false
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-destination \"name=iPhone 5s,OS=8.1\" " \
          + "-destination-timeout \"240\" " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "build " \
          + "test " \
          + "-enableCodeCoverage \"NO\" " \
          + "| tee '#{build_log_path}' | xcpretty --color --test"
        )
      end
    end

    describe "test reporting" do
      it "should work with xcpretty report params" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xctest(
            destination: 'name=iPhone 5s,OS=8.1',
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace',
            report_formats: ['junit'],
            report_path: './build-dir/test-report'
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-destination \"name=iPhone 5s,OS=8.1\" " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "build " \
          + "test " \
          + "| tee '#{build_log_path}' | xcpretty --color " \
          + "--report junit " \
          + "--output \"./build-dir/test-report\" " \
          + "--test"
        )
      end

      it "should save reports to BUILD_PATH + \"/report\" by default" do
        ENV["XCODE_BUILD_PATH"] = "./build"

        result = Fastlane::FastFile.new.parse("lane :test do
          xctest(
            destination: 'name=iPhone 5s,OS=8.1',
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace',
            report_formats: ['html'],
            report_screenshots: true
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-destination \"name=iPhone 5s,OS=8.1\" " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "build " \
          + "test " \
          + "| tee '#{build_log_path}' | xcpretty --color " \
          + "--report html " \
          + "--screenshots " \
          + "--output \"./build/report\" " \
          + "--test"
        )

        ENV.delete("XCODE_BUILD_PATH")
      end

      it "should support multiple output formats" do
        result = Fastlane::FastFile.new.parse("lane :test do
          xctest(
            destination: 'name=iPhone 5s,OS=8.1',
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace',
            report_formats: [ 'html', 'junit', 'json-compilation-database' ]
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-destination \"name=iPhone 5s,OS=8.1\" " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "build " \
          + "test " \
          + "| tee '#{build_log_path}' | xcpretty --color " \
          + "--report html " \
          + "--report json-compilation-database " \
          + "--report junit " \
          + "--test"
        )
      end

      it "should support multiple reports " do
        result = Fastlane::FastFile.new.parse("lane :test do
          xctest(
            destination: 'name=iPhone 5s,OS=8.1',
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace',
            reports: [{
              report: 'html',
              output: './build-dir/test-report.html',
              screenshots: 1
            },
            {
              report: 'junit',
              output: './build-dir/test-report.xml'
            }],
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-destination \"name=iPhone 5s,OS=8.1\" " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "build " \
          + "test " \
          + "| tee '#{build_log_path}' | xcpretty --color " \
          + "--report html " \
          + "--output \"./build-dir/test-report.html\" " \
          + "--screenshots " \
          + "--report junit " \
          + "--output \"./build-dir/test-report.xml\" " \
          + "--test"
        )
      end

      it "should support ommiting output when specifying multiple reports " do
        ENV["XCODE_BUILD_PATH"] = "./build"

        result = Fastlane::FastFile.new.parse("lane :test do
          xctest(
            destination: 'name=iPhone 5s,OS=8.1',
            scheme: 'MyApp',
            workspace: 'MyApp.xcworkspace',
            reports: [{
              report: 'html',
            },
            {
              report: 'junit',
            }],
          )
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "-destination \"name=iPhone 5s,OS=8.1\" " \
          + "-scheme \"MyApp\" " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "build " \
          + "test " \
          + "| tee '#{build_log_path}' | xcpretty --color " \
          + "--report html " \
          + "--output \"./build/report/report.html\" " \
          + "--report junit " \
          + "--output \"./build/report/report.xml\" " \
          + "--test"
        )
      end

      it "should detect and use the workspace, when a workspace is present" do
        allow(Dir).to receive(:glob).with("*.xcworkspace").and_return(["MyApp.xcworkspace"])

        result = Fastlane::FastFile.new.parse("lane :test do
          xcbuild
        end").runner.execute(:test)

        expect(result).to eq(
          "set -o pipefail && " \
          + "xcodebuild " \
          + "build " \
          + "-workspace \"MyApp.xcworkspace\" " \
          + "| tee '#{build_log_path}' | xcpretty --color " \
          + "--simple"
        )
      end
    end
  end
end


The Commission approves the above application for a new regional video-on-demand service. The reasons for approval, as well as the terms and conditions of the new licence, will be issued at a later date.
The Commission approves the above application for a new national video-on-demand television service. The reasons for approval, as well as the terms and conditions of the new licence, will be issued at a later date.
The Commission approves the above application for a new national terrestrial English- and French- language general interest pay-per-view service. The reasons for approval, as well as the terms and conditions of the new licence, will be issued at a later date.
The Commission approves the above application for a new regional terrestrial English-language pay-per-view service. The service will be dedicated exclusively to offering live National Hockey League games. The reasons for approval, as well as the terms and conditions of the new licence, will be issued at a later date.


text:
Vancouver, B.C. (August 31, 2021) – Canterra Minerals Corporation (TSXV:CTM) (OTCQB: CTMCF) ("Canterra" or the "Company") is pleased to announce the appointment of Dr. Luke Longridge to the position of Vice President, Exploration ("VPx"), bolstering its highly experienced technical team.
Dr. Longridge is an exploration geologist with more than 15 years of mineral exploration experience, with a focus on Canada and Africa. Dr. Longridge has spent the last three years as CSA Global's Senior Structural Geologist consulting on gold and other commodity exploration projects across the globe. Prior to joining CSA Global, Dr. Longridge worked with Bushveld Minerals Limited as Exploration Manager, involved in the discovery and development of several deposits. During his career, Dr. Longridge has managed exploration activities on a variety of deposit types and geologic terranes, developing a strong technical understanding of orogenic, epithermal and intrusion related gold systems.
"Luke brings a wealth of mineral exploration experience from across the globe in all types of gold deposit settings and has been successful in both expanding deposits and making discoveries in various mineralization settings from Africa to Canada. We are very excited to have him join the Canterra team and begin leading the fall drill program on the Wilding Gold Project on the island of Newfoundland." stated Chris Pennimpede, President & CEO of Canterra.
Dave T.W. Evans, Exploration Manager for Canterra, is set to retire this fall and will continue to contribute to the success of the Company as a Technical Advisor. Canterra would like to thank Dave for guiding the team through its first winter drill program in early 2021 and spearheading summer exploration work at Wilding.
About Canterra Minerals
Canterra is earning a 100% interest in the Wilding and Noel Paul Gold Projects, located 50km south, by logging road, from Millertown and directly northeast of Marathon Gold's Valentine Lake Gold Project in Central Newfoundland. The 285km2 property package includes 50km of the northeastern strike-extension of the Rogerson Lake Structural Corridor, which hosts Marathon Gold's Valentine Lake deposits, Matador Mining's Cape Ray deposit, Sokoman's Moosehead discovery and TRU Precious Metals' Golden Rose and Twilight discoveries. A $2.75 million exploration program is underway, focusing on drilling and surface exploration on the Wilding Gold Project. This program will include additional diamond drilling on the existing zones and follow up trenching and diamond drilling on numerous targets identified from previous soil geochemistry sampling. Canterra's team has more than 100 years of experience searching for gold and diamonds in Canada and have been involved in the discovery of the Snap Lake diamond mine, in addition to the discovery of the Blackwater Gold deposit in British Columbia, Canada.
ON BEHALF OF THE BOARD OF CANTERRA MINERALS CORPORATION
Chris Pennimpede
Additional information about the Company is available at www.canterraminerals.com
For further information, please contact: +1 (604) 687-6644
Email: info@canterraminerals.com
Cautionary Note Regarding Forward-Looking Information This press release contains statements that constitute "forward-looking information" (collectively, "forward-looking statements") within the meaning of the applicable Canadian securities legislation. All statements, other than statements of historical fact, are forward-looking statements and are based on expectations, estimates and projections as at the date of this news release. Any statement that discusses predictions, expectations, beliefs, plans, projections, objectives, assumptions, future events or performance (often but not always using phrases such as "expects", or "does not expect", "is expected", "anticipates" or "does not anticipate", "plans", "budget", "scheduled", "forecasts", "estimates", "believes" or "intends" or variations of such words and phrases or stating that certain actions, events or results "may" or "could", "would", "might" or "will" be taken to occur or be achieved) are not statements of historical fact and may be forward-looking statements. Consequently, there can be no assurances that such statements will prove to be accurate and actual results and future events could differ materially from those anticipated in such statements. Except to the extent required by applicable securities laws and the policies of the TSX Venture Exchange, the Company undertakes no obligation to update these forward-looking statements if management's beliefs, estimates or opinions, or other factors, should change. Factors that could cause future results to differ materially from those anticipated in these forward-looking statements include risks associated possible accidents and other risks associated with mineral exploration operations, the risk that the Company will encounter unanticipated geological factors, the possibility that the Company may not be able to secure permitting and other governmental clearances necessary to carry out the Company's exploration plans, the risk that the Company will not be able to raise sufficient funds to carry out its business plans, and the risk of political uncertainties and regulatory or legal changes that might interfere with the Company's business and prospects.; the business and operations of the Company; unprecedented market and economic risks associated with current unprecedented market and economic circumstances due to the COVID-19 pandemic, as well as those risks and uncertainties identified and reported in the Company's public filings under its respective SEDAR profile at www.sedar.com. Accordingly, readers should not place undue reliance on the forward-looking statements and information contained in this press release. Except as required by law, the Company disclaims any intention and assumes no obligation to update or revise any forward-looking statements to reflect actual results, whether as a result of new information, future events, changes in assumptions, changes in factors affecting such forward-looking statements or otherwise.


BCH is short for Bitcoin Cash.
BCH is a blockchain asset generated by the Bitcoin ABC scheme. To keep the protocol stable and simple, the Bitcoin ABC scheme removes the Segwit function, and supports to expand block size to 8M, which is the technical route of on-chain scalability. Bitcoin ABC code has been improved based on the stable version of the BTC agreement, if Segwit is not included, greater stability, security, and robustness is believed to obtain, as backups of current BTC agreement and BTC system. BCC has begun to be mined at 20:20 on August 1, 2017.
BCC has been originally set as a token to prevent BIP148 splitting bitcoin with hard fork. BCC inherits the idea of Satoshi Nakamoto, as a shadow of bitcoin, which can assume the test and backup roles of bitcoin. Therefore, in a strict sense, BCC is not to split bitcoin, but a measure to guard against the hard fork of bitcoin.


Don't let the thought of making dressing scare you. Here is a super easy way to make dressing that you can eat anytime of year. It is really good and its made with chicken instead of turkey. I love to make this for a weeknight dinner. You can have it on the table in under an hour and you can pair it with anything. So if this is your first time making dressing, this is a great one to start off with.
Mix the soups together in an 8 x 8 baking dish.
Prepare stuffing mix according to package directions, and spread on top of casserole.
Bake for approx 25 min, until browned and bubbly.


text:
Syria: Foreign minister and UN Envoy announce progress on constitutional committee
Syrian Arab Republic, Damascus
July 11, 2019 at 01:48 GMT +00:00 · Published
Syrian Foreign Minister Walid Muallem and UN Special Envoy for Syria Geir Pedersen held a meeting in Damascus on Wednesday to discuss progress around the formation of a constitutional committee.
The minister announced progress had been made towards an agreement for the formation of the body which would supervise the creation of a new constitution.
Muallem and Pedersen agreed that the constitutional process is a Syrian affair and the constitutional process should be conducted by the Syrian people according to their own national interests.
The committee is reportedly set to have 150 members, with 50 chosen by the UN Envoy, 50 by the Assad government, and 50 by the opposition.
The two parties also reiterated the importance of the UN Special Envoy's mission to ensure the success of the intra-Syrian dialogue.
Pedersen, who arrived in Damascus on Tuesday in a bid to support efforts to end the eight-year conflict, confirmed talks had been "good" but more needed to be addressed.
mandatory credit: syrian state tv


text:
A carton of cards
I had a small delivery from Amazon Germany arrive today. And when I say small, I mean four small card games whose box sizes in aggregate are about half the size of a typical Ticket to Ride box. That said, having gone through the rules of each of them, there is some interesting game play in each of them. The games I'm talking about are Habe Fertig, a game of playing in the gap by Qwixx designer, Steffen Benndorf; Potato Man, a trick taking game where not matching any suit played is the key requirement – otherwise the round ends; Nox, a wicked game of building high scoring piles of cards while trying to shrink the piles of your opponents (just make sure you have three colours showing when the round ends); and Abluxxen, by Kramer & Kiesling, where you try to build up the number of cards in front of you while snatching cards played by others and making sure you don't get left with cards in hand when the round ends. I'm really looking forward to playing all these.
  Â
Author Garry LloydPosted on 13th March 2014 13th March 2014 Categories Snippets
Wayback When? – March '94, '99, '04, '09
Wayback When? is a review of the games I was playing five, ten, fifteen and twenty years ago with me highlighting the most memorable titles of each particular month in the vain hope that I might dig out some of them to play again. This month we're looking at March 1994, 1999, 2004 and 2009.
Five years ago, I played Martin Wallace's Brass for the first time. A meaty economic game played over two phases; the canal age and then the railway age. The other game that had a noteworthy first play was Blox, which is very different: an abstract tower building game where demolishing as well as building your towers is very important.
In March 2004, I got to play two very well regarded games. Alhambra was a variation of the earlier games Al Capone and Stimmt So by Dirk Henn and was rewarded with the Spiel des Jahres. San Juan is Andreas Seyfarth's best game: Forget Puerto Rico. This distillation of the game into card games is absolutely brilliant and one of my favourite games of all time.
Fifteen years ago, March 1999 didn't see any really outstanding new games played. Of the eleven titles I played during the month, the only two new titles were Fluxx and Johnny Controletti, the former of which is good fun but susceptible for outstaying its welcome and the latter is a somewhat forgettable bidding and bluffing game.
March 1994 saw me play 12 titles at the Nottingham Boardgames Club with two new games of note. Bier Borse was Sid Sackson's Bazaar translated into collecting bottle tops to fulfil combinations displayed on beer mats. Al Capone was the first incarnation of what, as previously mentioned, eventually morphed into Alhambra. The version I have is Stimmt So and a fine game it is too.
Author Garry LloydPosted on 9th March 2014 10th March 2014 Categories Snippets
February 2014 roundup
February saw me play 19 games of 18 different titles, 12 of which were new to me. The new games were: Shephy, Candy Chaser, Caverna: The Cave Farmers, Famous Fairways, Famous Fastballs, The Great Heartland Hauling Co, Greedy Kingdoms, Khmer, Palmyra, Trains & Stations, TransEuropa and Machi Koro.
I sold 45 games and added 7 new games to the collection which were Bang: The Dice Game, Khmer, Greedy Kingdoms, Famous Fairways, Famous Fastballs, Council of Verona and Age of Industry. The only game I played more than once this month was Shephy and that was only twice. My unplayed list has dropped from 32 to 30 and Game of the Month didn't appear until the very last day of February when I played the absolutely fabulous Machi Koro. When this comes out in an English edition, it is going to be an instant purchase.
Author Garry LloydPosted on 1st March 2014 Categories Snippets


The book "AYURVEDA FOR HEART DISEASE" is a complete and comprehensive treatise on the subject.
'Heart Disease'(Hridroga) is a global phenomenon. Now it has become a major health problem even in the developing countries.
This ebook deals with the subject in all completeness and clarity covering all aspects of "Hridroga" as described in various tretise of Ayurveda.
Primary cause of heart disease - like an excess of Ama , Channel blockage etc.
The Best Alternative Methods for Prevention and Treatment : High Cholesterol, High Blood Pressure, Stroke, Chest pain, Arrhythmia etc.
The 'Holistic Healing Program' for Heart disease management.
- Lower your blood cholesterol and reduce your risk for heart disease.
- Lower your blood pressure.
Here is How You Can PREVENT Heart Disease - Or even REVERSE It, if You Currently Suffer, Without dangerous drugs or surgery.
a stronger, healthier heart is easily within your reach. You'll have information that's easy to act upon — instantly.
Ayurveda asks us to go back to our own heart, see what it really wants in life and start doing that. This is the real treatment for heart disease.
P.S. - Your general health is directly linked to your cardiac health. Improving cardiac health with ayurvedic regime will definitely improve your general health and thus the quality of life.
Don't miss this unique opportunity.Order Today!
We are	offering "AYURVEDA FOR HEART DISEASE" in eBook form!
If you or a loved one are currently suffering from heart disease — can you honestly say that you have been given all your options?
Download a Free Sample copy of this ebook from HERE.


text:
G.Physics.intersecting = (function()
{

//parameters are pointx, pointy, centerx, centery, rotation in radians (center is pivot point)
function rotatePoint(point, origin, angle)
{
    var X = origin.x + ((point.x - origin.x) * Math.cos(angle) - (point.y - origin.y) * Math.sin(angle));
    var Y = origin.y + ((point.x - origin.x) * Math.sin(angle) + (point.y - origin.y) * Math.cos(angle));
    return new G.Vector(X,Y);
}

return function(shape1, shape2, reverseVertices)
{
    var onlyAABB = false;
    if(typeof reverseVertices === "boolean")
    {
        reverseVertices = false;
        onlyAABB = true;
    }
    if(Array.prototype.indexOf.call(arguments, true) !== -1) onlyAABB = true;
    if(shape2 instanceof G.Vector) shape2 = new G.Circle(shape2.x,shape2.y,0.1,false);
    if ((shape1 instanceof G.Collection))
    {

    }
    else if (shape1 instanceof Array)
    {
        var bool = false;
        _.each(shape1, function(shape)
        {
            if(!(shape instanceof G.Shape)) return;
            if (shape2 instanceof G.Shape)
            {
                var intersecting = G.Physics.intersecting(shape, shape2, reverseVertices);
            }
            else _.each(shape1, function(shape1)
            {
                if (shape1 instanceof G.Shape) var intersecting = G.Physics.intersecting(shape, shape1, shape2);
                if(intersecting) bool = intersecting;
                if(bool) return false;
            });
            if(intersecting) bool = intersecting;
            if(bool) return false;
        });
        return bool;
    }

    //if shapes are the same, exit
    if(shape1 === shape2) return false;

    //detect simple aabb collision, saves compute time for complex shapes
    var aabbmtv = aabb(shape1, shape2);
    if(!aabbmtv) return false;

    if(onlyAABB || (shape1.type==="rect" && shape2.type==="rect" && !shape1.rotation && !shape2.rotation)) return aabbmtv;

    //if one is static, return mtv for other one, defaults to returning shape1's mtv from shape2
    if(shape2.shape === "static"){ var temp = shape2; shape2 = shape1; shape1 = temp;}

    //circle vs circle
    if(shape1.shape === "circle" && shape2.shape === "circle") res = circle2circle(shape1, shape2);

    //if no circles, do SAT (separating axis test) polygon against polygon
    else if(shape1.shape !== "circle" && shape2.shape !== "circle") res = polygon2polygon(shape1, shape2);

    //if one circle and one polygon, do SAT (separating axis test) polygon against circle
    else if(shape1.shape === "circle" || shape2.shape === "circle") res = polygon2circle(shape1, shape2);

    //otherwise, not objects able to be tested
    else res = false;

    return res;

    //simple broad phase check
    function aabb(shape1, shape2)
    {
        var a = shape1,
            b = shape2,
            hw1 = shape1.width/2,
            hh1 = shape1.height/2,
            hw2 = shape2.width/2,
            hh2 = shape2.height/2,
            x1 = shape1.pos.x,
            y1 = shape1.pos.y,
            x2 = shape2.pos.x,
            y2 = shape2.pos.y;

        //TODO - get bounds for rotated rect
        //if rotated or special shape, compute xy projections
        if((shape1.shape !== "circle" || shape2.shape !== "circle") && (shape1.shape !== "rect" && shape2.shape !== "rect" || ((shape1.rotation || shape2.rotation))) )
        {
            var b1 = shape1.bounds(), b2 = shape2.bounds();
            hw1 = (b1.right - b1.left) / 2;
            hw2 = (b2.right - b2.left) / 2;
            hh1 = (b1.bottom - b1.top) / 2;
            hh2 = (b2.bottom - b2.top) / 2;
        }

        //intersecting if distance between two shape's xy positions is less than combined half-widths && half-heights
        if(! (Math.abs(x2-x1) < (hw2 + hw1) && Math.abs(y2-y1) < (hh2 + hh1)) ) return false;

        return onlyAABB ? G.Physics.intersecting(a,b) : true;
    }

    function circle2circle(circle1, circle2)
    {
        //algorithm from http://cgp.wikidot.com/circle-to-circle-collision-detection
        var x1 = circle1.pos.x, y1 = circle1.pos.y, x2 = circle2.pos.x, y2 = circle2.pos.y, r1 = circle1.radius, r2 = circle2.radius;
        var distanceSq = Math.pow(x2-x1, 2) + Math.pow(y2-y1, 2);
        var intersection = distanceSq < Math.pow(r1+r2, 2);
        if (!intersection) return false;

        var overlapDistance = (r2+r1) - Math.sqrt(distanceSq);
        var axis = new G.Vector(x2-x1, y2-y1).normalize();
        return new G.Vector( axis.x * (overlapDistance+0.01), axis.y * (overlapDistance+0.01) );
    }

    //uses SAT (separating axis test)
    // Referenced from many resources, step by step at http://www.sevenson.com.au/actionscript/sat/
    // Basically, if a line can be drawn in between shape 1 and shape 2, they are not intersecting
    // Steps: Get normals to all shape edges, project all vertices of both shapes onto that normal, if there is a gap in any axis, the shapes do not intersect
    function polygon2polygon(shape1, shape2)
    {
        //Get Vertices
        var vertices1 = getVertices(shape1),
            vertices2 = getVertices(shape2);

        //used for collision response
        var shortestDist = Number.MAX_VALUE;

        //test all normals of shape 1's sides
        for(var i = 0; i < vertices1.length; i++)
        {
            //Compute Normal

            // to generate normal of edge, get the length from point a to point b on edge, as [x, y]. the normal is [-y, x] of that vector
            // e.g. if len = [ x2-x1, y2-y1 ], then normal = [ -len[1], len[0] ]. Slope = rise/run, normal's slope = -run/rise

            //get length and height of edge
            var len = new G.Vector((vertices1[i+1] ? vertices1[i+1].x : vertices1[0].x) - vertices1[i].x, (vertices1[i+1] ? vertices1[i+1].y : vertices1[0].y) - vertices1[i].y);
            //get normal of edge
            var axis = new G.Vector(-len.y, len.x).normalize();

            //Project Vertices of both shapes onto normal axis
            var projection1 = getProjection(axis, vertices1);
            var projection2 = getProjection(axis, vertices2);

            //test for gaps, if gaps then no intersection
            if (projection1[0] >= projection2[1] || projection2[0] >= projection1[1]) return false;

            //calculate MTV (minimum translation vector) - for collision response
            //1 is max of projection, 0 is min
            var dist = (projection2[1]-projection1[0]) * -1;
            var distAbs = Math.abs(dist);
            if(distAbs < shortestDist)
            {
                shortestDist = distAbs;
                mtv = new G.Vector(axis.x * (dist-0.01), axis.y * (dist-0.01));
            }
        }

        //test all normals of shape 2's sides
        for(var i = 0; i < vertices2.length; i++)
        {
            //Compute Normal
            //get length and height of edge
            var len = new G.Vector((vertices2[i+1] ? vertices2[i+1].x : vertices2[0].x) - vertices2[i].x, (vertices2[i+1] ? vertices2[i+1].y : vertices2[0].y) - vertices2[i].y);
            //get normal of edge
            var axis = new G.Vector(-len.y, len.x).normalize();

            //Project Vertices of both shapes onto normal axis
            var projection1 = getProjection(axis, vertices1);
            var projection2 = getProjection(axis, vertices2);

            //test for gaps, if gaps then no intersection
            if (projection1[0] >= projection2[1] || projection2[0] >= projection1[1]) return false;

            //calculate MTV (minimum translation vector) - for collision response
            var dist = (projection2[1]-projection1[0]);
            var distAbs = Math.abs(dist);
            if(distAbs < shortestDist)
            {
                shortestDist = distAbs;
                mtv = new G.Vector(axis.x * (dist-0.01), axis.y * (dist-0.01));
            }
        }

        if(typeof mtv === "undefined") console.log(shape1, shape2);

        return mtv;
    }

    //uses SAT (separating axis test)
    function polygon2circle(shape1, shape2)
    {
        var circle = shape1.shape === "circle" ? shape1 : shape2;
        var polygon = shape1.shape === "circle" ? shape2 : shape1;

        //Get Vertices of polygon
        var vertices = getVertices(polygon);

        //used for collision response
        var shortestDist = Number.MAX_VALUE;

        // find the vertex of the polygon closest to the circle
        var x = circle.pos.x, y = circle.pos.y;
        var closestPoint = vertices[0];

        var closestDist = Math.pow(circle.pos.x - closestPoint.x, 2) + Math.pow(circle.pos.y - closestPoint.y, 2);
        for(var i = 1; i < vertices.length; i++)
        {
            var point = vertices[i];
            var currentDist = Math.pow(circle.pos.x - point.x, 2) + Math.pow(circle.pos.y - point.y, 2);
            if (currentDist < closestDist)
            {
                closestDist = currentDist;
                closestPoint = vertices[i];
            }
        }

        // make an axis of this vector
        var axis = new G.Vector(x-closestPoint.x, y-closestPoint.y).normalize();

        // Project Vertices of both shapes onto axis
        var projection1 = getProjection(axis, vertices);
        var projection2 = getProjection(axis, circle);

        //test for gaps, if gaps then no intersection
        if (projection1[0] > projection2[1] || projection2[0] > projection1[1]) return false;

        //calculate MTV (minimum translation vector) - for collision response
        if(circle === arguments[0]) var dist = (projection2[1]-projection1[0]);
        else  var dist = (projection2[1]-projection1[0]) * -1;
        var distAbs = Math.abs(dist);

        shortestDist = distAbs;
        mtv = new G.Vector(axis.x * (circle===shape1?(dist+0.01):(dist-0.01)), axis.y * (circle===shape1?(dist+0.01):(dist-0.01)));

        //do normal axises of all edges as usual
        for(var i = 0; i < vertices.length; i++)
        {
            // Compute Normal / Get Axis
            //get length and height of edge
            var len = new G.Vector((vertices[i+1] ? vertices[i+1].x : vertices[0].x) - vertices[i].x, (vertices[i+1] ? vertices[i+1].y : vertices[0].y) - vertices[i].y);
            //get normal of edge
            var axis = new G.Vector(-len.y, len.x).normalize();

            // Project Vertices of both shapes onto normal axis
            var projection1 = getProjection(axis, vertices);
            var projection2 = getProjection(axis, circle);

            //test for gaps, if gaps then no intersection
            if (projection1[0] > projection2[1] || projection2[0] > projection1[1]) return false;

            //calculate MTV (minimum translation vector) - for collision response
            if(circle === arguments[0]) var dist = (projection2[1]-projection1[0]);
            else  var dist = (projection2[1]-projection1[0]) * -1;
            var distAbs = Math.abs(dist);
            if(distAbs < shortestDist)
            {
                shortestDist = distAbs;
                mtv = new G.Vector(axis.x * (circle===shape1?(dist+0.01):(dist-0.01)), axis.y * (circle===shape1?(dist+0.01):(dist-0.01)));
            }
        }

        return mtv;
    }

    //helper functions

    //Get Vertices - from different types of shapes, must be in clockwise order
    function getVertices(shape)
    {
        var vertices = [];

        //line contains x1,y1,x2,y2 in pos
        if(shape.shape === "line")
        {
            //simulate rect for collision response's sake
            var len = new G.Vector(shape.pos.x2-shape.pos.x1, shape.pos.y2-shape.pos.y1);
            //get normal of edge
            var axis = new G.Vector(-len.y, len.x).normalize(0.01);

            vertices = [shape.pos.x1, shape.pos.y1, shape.pos.x2, shape.pos.y2, shape.pos.x2+axis.x, shape.pos.y2+axis.y, shape.pos.x1+axis.x, shape.pos.y1+axis.y];
        }

        //polygon contains sequence in vertices array, relative to pos, e.g. [pos.x-x1,pos.y-y1,pos.x-x2,pos.y-y2]
        else if(shape.shape === "polygon")
        {
            for(var i = 0; i < shape.vertices.length-1; i += 2) vertices.push((shape.pos.x||0)+shape.vertices[i], (shape.pos.y||0)+shape.vertices[i+1]);
            if(_.isArr(reverseVertices))
            {
                var n = [], arr = vertices;
                for(var i = arr.length-1; i > 0; i -= 2)
                {
                    n.push(arr[i-1], arr[i]);
                }
                vertices = n;
            }
        }

        //box contains pos -> x,y at center, width and height
        else if(shape.shape === "rect")
        {
            var hw = shape.width/2, hh = shape.height/2;
            //clockwise order from top left
            vertices = [shape.pos.x-hw, shape.pos.y-hh, shape.pos.x+hw, shape.pos.y-hh, shape.pos.x+hw, shape.pos.y+hh, shape.pos.x-hw, shape.pos.y+hh];
        }

        //if invalid shape
        else return console.trace("Shape does not contain vertices");

        //convert to vectors
        var vecVertices = [];
        for(var i = 0; i < vertices.length; i+=2) vecVertices.push(new G.Vector(vertices[i], vertices[i+1]));

        //account for rotation
        if(shape.rotation !== 0)
        {
            for(var i = 0; i < vecVertices.length; i++)
            {
                vecVertices[i] = rotatePoint(vecVertices[i], shape.pos, shape.rotation);
            }
        }

        return vecVertices;
    }

    function getProjection(axis, vertices)
    {
        var max, min;

        //if circle
        if(vertices.shape === "circle")
        {
            var circle = vertices;
            min = axis.dot(circle.pos) - circle.radius;
            max = min + circle.radius*2;
        }

        //if polygon
        else
        {
            max = min = axis.dot(vertices[0]);

            //get start and end of projection
            for (var j = 0; j < vertices.length; j++)
            {
                var currentPoint = axis.dot(vertices[j]);
                if (currentPoint < min) min = currentPoint;
                if (currentPoint > max) max = currentPoint;
            }
        }

        return [min, max];
    }
}

})();