PLEASE READ CAREFULLY - OFFICIAL AND COMPLETE RULES OF A VERSION OF THE GAME "Maxi-Cash Bonus" ENTITLED "£4,300.00 TO BE RELEASED MONTHLY".
1. The company is a mail order company whose registered office is at 1198 avenue du Dr Maurice Donat, 06250 Mougins, France. The company runs - with other associated companies - promotional campaigns in the United Kingdom in connection with its catalogue. This game, run by the company, requires an order to be placed.
2. The closing date of this game is the 15th of each calendar month following the availability online of the game.
3. To participate: An order placed before the closing date is necessary for participating in this prize draw. Customers must duly complete their Order Form and provide all required details. By entering the prize draw, recipients are deemed to accept the Rules. They need to respect the terms hereafter. Employees of the company or of any associated company, their relatives and partners are excluded from entry to the Game.
5. Entry costs: Reimbursement of the costs associated with entering the Game online will be limited to 3 minutes of Internet access at the standard rate in effect at the time the present rules were drafted. Participants who do not pay connection costs based on usage (i.e. subscribers to "unlimited" internet access plan, etc.) are not eligible for reimbursement of entry costs. Requests for refund must be made in writing to the company at the address provided.
6. Chronology: After the closing date, a Winning number is selected at random from amongst those clients who have placed an order. The Winning number is to be revealed at the latest 15 days after the closing date. Information regarding the Winning number will be sent to anyone who writes to the company.
7. The Potential Rights: This game does not constitute an unconditional offer to pay the sum of money in play to customers whose participation number does not match the Winning number.
8. Prize in play: is the sum of £4,300.00payable to the designated Winner. This sum is based on the fixed amount of 5,000.00 Euros. The prize amount can be paid as stated in the mailing and the final decision shall be entirely at the discretion of the Games Management. The company reserves the right to alter, amend, or withdraw this prize draw without prior notice in any unforeseen event or as a result of circumstances beyond its reasonable control.
Please retain a copy of the rules of the game for your reference.


Civil liberties groups like the American Civil Liberties Union (ACLU) are concerned that low-cost facial recognition software marketed by online retail giant Amazon to law enforcement agencies could lead to chilling abuses, allowing police to track millions of people in real time.
The Associated Press reports that software sold by Amazon Web Services (AWS), known as Rekognition, is already being used by the Washington County Sheriff's Office in Oregon to compare photos of unidentified suspects to a database of more than 300,000 mugshots collected from the jail since 2001.
According to the report, the office spent only about $400 to upload some 305,000 mugshots into the program and then about $6 per month in fees to continue the service.
Orlando, Florida, agencies may also be joining the growing number of companies and agencies to use the software to "use existing city resources to provide real-time detection and notification of persons-of-interest, further increasing public safety," according to the Associated Press story.
According to documents obtained by the Associated Press, that city is also taking part in a pilot program to use the software with "smart" camera technology throughout the municipality.
The Associated Press reported that the City of Orlando refused an interview request, but issued a statement regarding the use of Rekognition software.
AWS Rekognition Leader Randju Das gave a presentation on the software and its applications during a summit in Seoul, South Korea, earlier this month.
In a video of the presentation posted on YouTube, Das outlined the varied uses of the software for public safety, commerce, and entertainment.
He said the program could identify potential suspects in real time, making it easier for law enforcement to act quickly in apprehending them.
While the benefits and costs of this software seem large, civil liberties experts see dangers to basic freedoms and the American way of life.
"This raises very real questions about the ability to remain anonymous in public spaces," Associate at the Center on Privacy and Technology at Georgetown University Law Center Clare Garvie said in the Associated Press story.
Garvie compared the technology to police going through a crowd of protestors and getting identification from everyone.
Because the software measures what is a biometric measurement – of someone's face – it is much more invasive than simply taking photos or videos of those gathered and comparing them to other photos later.
In addition to law enforcement, the Amazon software is being used by a number of companies including Pinterest and the Washington Post, according to Amazon.
The Post is also owned by Amazon CEO Jeff Bezos.


Here you can find electronic files extracted from the Dorico score.of Akathistos in MP3 format. You can play the tracks on the site or download by clicking the download link to the right of each track.
The first set of files includes the vocal parts, the second set is the instrumental parts with some chorus sections only.


text:
Hilarie Mais b.1952
Born Leeds, England 1952, arrived Australia 1980
Stemming from her interest in Russian and English constructivism, the grid is central to Hilarie Mais' minimalist sculpture and painting practice. As a form it represents an entry point, a journey and a barrier, and conveys a complex lexicon of psychological symbolism.
During the 1990s Mais began creating twin symmetrical works of which Blind simile is an example. Related in appearance, the two forms are physically different: one a three-dimensional structure, the other a two-dimensional painting. Engaged in a dialogue, they question presence, representation, imitation and illusion, and in a broader social sense refer to the human concept of 'the other'.
Mais studied in London from 1970–77 before working in New York, and arrived in Australia in 1980. She has exhibited regularly, holding numerous solo exhibitions in Australia, Asia, the United States and Europe. Her work has also been included in the Second and Third Australian Sculpture Triennial, National Gallery of Victoria (1984 and 1987), Australian Perspecta (1985), the Biennale of Sydney (1986 and 1988), and Spirit and Place: Art in Australia 1861–1996, Museum of Contemporary Art, Sydney (1996). She won the Blake Prize for religious art in 1994. Hilarie Mais: Survey of Works 1974–2004 was presented at the Drill Hall, Canberra in 2004.
Mais' work is held in the collections of the National Gallery of Australia, and many state galleries, Wollongong Regional Gallery, Heide Museum of Modern Art, Melbourne, Museum of Contemporary Art, Sydney, Monash University Museum of Art, University of New South Wales, Parliament House, Canberra and Slade School of Fine Art, London.

redpajama_set_name: RedPajamaCommonCrawl


Shady Willow Lane: I'm Alive! I'm Alive!
~Zach Efron point #2 - Going to see "Hairspray" with my mom and sisters. We all had silly grins on our faces the entire time, and I truly can't wait for it to be released on DVD.
~Transformers: More than meets the eye. Try to imagine that phrase out of the mouths of several little boys, and that's the soundtrack to this happy home. They sing it, they play it, they live it. Thank you Youtube!
~Rodney's frequent trips back up to Rolesville to stay with Lindsay and Steve (while he spends the workweek there, and the weekend here). God bless them for their hospitality - One day we hope to repay you for your overwhelming generosity.
~Carter growin' up too fast. When we got down here on July 8th, when he was 1 month old, and now he's about 3 1/2 months - is always smiling, cooing, and making us all realize how fast time flies when we're having fun.
Thanks for your update. I have been wondering about you guys and how things were going. I saw your dad today and it made me think of you even more. I am so glad to hear that things are going so well. I cannot wait to see pics of you in your new home. We miss you guys!
YOUR KILLIN ME I GOT TEARS WHICH IM SURE WONT BE THE FIRST THIS WEEK NOR THE LAST. I LOVE YOU AND YOURS AND AM DREADING THURSDAY....BUT I KNOW ITS NOT GOOD BYE FOR EVER ROLESVILLE ISNT THAT FAR AWAY...LOVE YOU GOING TO SCHOOL CALL YOU IN THE MORNING.
Yeah, finally an update, haha! Leah I can't wait to see you. I feel like you are my long-lost friend or something. It will be nice to start our Office nights and any other night for that matter again. See you tomorrow!
I had all but quit checking your blog since it had been so long ... and I was kinda in the loop for you and yours for a while. But I was missing you this morning (in a hotel bed in Salt Lake City) and decided to check. So, you are back in Rolesville now? Wouldn't it have been nice to mention to me that you were leaving?
So much goes on at home that it sometimes is hard to tell who is there and who isn't. Just kidding. Your Pa has really missed you and the boys (all four of them).
You know how at the White House they give the rooms a name (Blue Room, etc) rather than a description (bed room etc.). That's how it is getting at our house now. So we have Leah's room, Riikka's room, Brady's room, Aly's floor ... and Pa's urinal, etc.
You may have a house in Rolesville (or some other place by next year this time). But you will always have a home in Sheldon's woods at Harkers Island.


Application was made to Mr. Justice Kekewich,  sitting as Vacation Judge, in the Chancery Division, yesterday, on behalf of the Hon. F. W. Cody, better known as "Buffalo Bill," of the Wild West Exhibition, to commit Mr. George Sanger,  circus proprietor, to prison for contempt of court by committing a breach of an undertaking contained in an order of Mr. Justice Chitty.  The undertaking given was to the effect that the defendant would not use the words "Buffalo Bill" or "Wild West" in his advertisements.—Defendant contended that he had not committed any breach of undertaking, but merely issued notices that his entertainment was not connected with that of Buffalo Bill.—His Lordship made the order for an attachment, with costs of the action. He, however, directed that the attachment should not go until after this day week, in order to allow Mr. Sangor to satisfy the Court that he had done what he could to purge his contempt and had paid the costs. If this was done to the satisfaction of the Court, the order for committal would not go.


text:
Embrace Powerful Women in the Workforce This International Women's Day
March 8th, 2017 by Ann Wanserski
Today, March 8, 2017, we celebrate International Women's Day. This celebration started in 1909 to pay honor to the International Ladies Garment Workers' Union strike of more than 20,000 workers fighting for fair pay and safe working conditions. Over the years, we have certainly reached many important accomplishments for women. When we acknowledge International Women's Day, we're paying tribute to women throughout history who have fought against a discriminatory majority. These women have set an example for their kids and have broken rules rather than break their values. Today, we celebrate mothers, writers, scientists, daughters, coders, students, activists, and sisters.
But we do more than just celebrate our female mentors and historical figures. We also acknowledge that we still have work to do. We still have rules to break and statistics to change in order to stand up for the things we value most. According to the U.S. Equal Employment Opportunity Commission, a typical woman working full-time all year in the United States in 2014 earned only 79 cents for every dollar earned by the average man working full-time all year. The pay gap becomes even greater for African American women who earned only 64 cents for every dollar earned by a white non-Hispanic man and only 56 cents for every Latina woman working full-time.
While the pay gap persists, women are also persisting at a rapid pace. This is especially true in the tech industry. By 2024, the National Center for Women and Information Technology predicts that there will be 1.1 million computer-related job openings expected in the United States. With 57 percent of 2014 female bachelor's degree recipients and 56 percent of women in 2015 taking Advanced Placement (AP) tests, women are leaning in and hungry for more.
At Search Influence, we owe much of our success to the hardworking women on our team. Our staff is comprised of 70 percent women, and 66 percent of our senior management team is female. Additionally, the company's co-founder and Chief Operations Officer, Angie Scott, remains a passionate advocate for women in the workforce.
"I truly enjoy being a working mom and want the other women that are out there that have the same feelings to be comfortable that they can do it all. We all know that moms are serious, playful, organized, and in charge—isn't that who you want to be in the workforce with!" said Scott.
Since the company's start in 2006, Angie Scott, in conjunction with co-founder and husband Will Scott, has fought to create a company culture built on equality and accommodation for working parents. The company offers a private breastfeeding room in the office for new mothers and allows for flexible working schedules when parental responsibilities come up.
"Search Influence supported me 100 percent through my transition to motherhood," said Erica Salm Rench, Production Manager at Search Influence. "I was able to balance work and family during those first critical weeks and months that I transitioned back into working life. I also nursed my baby for 14 months and visited (still visit) him regularly at his school, which is just a few blocks away."
Unfortunately, we still have more work to do in our industry and in our home state of Louisiana. The average overall for women working in the technology industry sits at only around the 20 percent mark. Additionally, according to a recent analysis from WalletHub, Louisiana was ranked 48th for working moms, based on key metrics like accessibility and cost of child care, percentage of families in poverty, female unemployment rate, average length of workweek, and more.
Still, we persist. We look to positive trends in the workforce that show signs of a changing environment, like a 2016 survey from Thumbtack Journal of 20,557 female entrepreneurs across the country that ranks Louisiana 7th in the country for women starting their own businesses. Moreover, the study found that women in the South are optimistic about their professional opportunities. 21 percent of women surveyed in Louisiana believe that the local government does enough to support small businesses owned and operated by women.
We also look internally, at our own powerful and passionate female co-workers, like Alison Zeringue and Paula Keller Scott, accomplishing great things. From becoming a new mother to building our sales team from the ground up, the women at Search Influence and in New Orleans are accomplishing important, meaningful work.
"You have to wake up each day believing it will all happen, it will be ok, and that you can take on anything, and then, just do it," said Scott.
So, this International Women's Day we hope to ignite both optimism and passion in our community. We remember that the juggling act of motherhood and career is not so much about balancing as it is about embracing. Embracing the mess, embracing the obstacles, and embracing each other. Scott has learned this firsthand during her career.
"I blend my balance—work comes home, family comes to work (literally…remember, I co-own this business with my husband), and I don't cut off either one just because my environment is changed," added Angie. "In other words, if my kids have to hear about something I am challenged with or am updating my husband on regarding work, then so be it. I think it will make them a better business person when they grow up!"
To celebrate this embrace of women in the workforce, our team at Search Influence is asking for individuals and businesses to share the story of a woman that deserves recognition. If you know an amazing woman who either owns her own business or works 40+ hours making a difference at a New Orleans business, please click here and nominate her. Search Influence will give away a day at the spa to one hardworking New Orleans working woman. But hurry, the contest ends Friday.


text:
Елена Васильевна Ковалёва () — заместитель Председателя Правительства области. Министр финансов Кировской области. Глава города Кирова.

Биография
Родилась 15 декабря 1963 года в посёлке городского типа Свеча Кировской области. В 1991 году окончила Кировский сельскохозяйственный институт по специальности экономист — организатор сельскохозяйственного производства.

06.1983 — 08.1983 Инспектор отдела личного страхования Управления госстраха по Кировской области

08.1983 — 08.1984 Старший экономист инспекции госстраха по Свечинскому району

08.1984 — 10.1990 Секретарь комсомольской организации СПТУ № 37

10.1990 — 10.1991 Инструктор Свечинского райкома КПСС.

11.1991 — 08.1997 Старший государственный налоговый инспектор, начальник отдела учета и отчетности Государственной налоговой инспекции по Свечинскому району

08.1997 — 11.2000 Заведующая финансовым отделом Свечинского района

11.2000 — 11.2001 Заместитель начальника отдела планирования, анализа доходов и ценных бумаг финансового управления Кировской области

11.2001 — 09.2004 Заместитель начальника бюджетного отдела финансового управления Кировской области

09.2004 — 09.2006 Заместитель главы департамента финансов Кировской области

09.2006 — 07.2008 Глава департамента финансов Кировской области

07.2008 — 03.2009 Заместитель Председателя Правительства области. Глава департамента финансов Кировской области.

03.2009 — 07.2011 Глава департамента финансов Кировской области

07.2011 — 07.2015 Заместитель Председателя Правительства области. Глава департамента финансов Кировской области

С 1 июля 2015 года по 27 октября 2016 Заместитель Председателя Правительства области. Министр финансов Кировской области.

09.2017 — по н.в. Глава города Кирова. Председатель Кировской городской Думы

Прошла стажировку в США и Германии.

Член партии «Единая Россия».

Награды
 За безупречную и добросовестную работу в органах исполнительной Кировской области, за инновации в области бюджетной политики награждена Почетной грамотой Правительства Кировской области.
 Неоднократно удостоена благодарности Губернатора области.
 Награждена нагрудным знаком «Отличник финансовой работы» за значительный вклад в совершенствование финансовых механизмов, способствующих повышению эффективности экономики и социальной сферы страны.
 Медаль «За заслуги в проведении Всероссийской переписи населения» (2003, 2012).
 Почётный знак «За безупречную государственную службу».

См. также
Руководители города Кирова

Примечания

Ссылки

Главы Кирова

redpajama_set_name: RedPajamaWikipedia


Click the Wifeysworld.com preview image to get your special discount offer now…or use the Passwords below to access wifeysworld.com, and watch Wifey's World HD videos today. Access loads of Exclusive HD Vids and Super Hi-Res Photos, for the cheapest discount price. Treat yourself now, this Wifey's World Discount is limited!
Click the Wifeycash preview image to get your special discount offer now…or use the Accounts & Passwords below to access wifeysworld.com, and watch Wifey's World HD videos today. Access loads of Exclusive HD Vids and Super Hi-Res Photos, for the cheapest discount price. Treat yourself now, this Wifey's World Discount is limited!
Click the Wifey's World preview image to get your special discount offer now…or use the Passes below to access Wifey's World, and watch Wifey's World HD videos today. Access loads of Exclusive HD Vids and Super Hi-Res Photos, for the cheapest discount price. Treat yourself now, this Wifey's World Discount is limited!
Click the Wifey's World preview image to get your special discount offer now…or use the Passwords below to access Wifey's World, and watch Wifey's World HD videos today. Access loads of Exclusive HD Vids and Super Hi-Res Photos, for the cheapest discount price. Treat yourself now, this Wifey's World Discount is limited!
Click the Wifey's World preview image to get your special discount offer now…or use the Usernames and Passwords below to access wifeysworld.com, and watch wifeysworld.com HD videos today. Access loads of Exclusive HD Vids and Super Hi-Res Photos, for the cheapest discount price. Treat yourself now, this Wifey's World Discount is limited!


text:
Charlie Hebdo Assassinations – Islamic Terror to Intimidate
B Kisan
The recent assassination of the Charlie Hebdo Cartoonists and staff in their central Paris offices by al Qaeda linked Jihadists is completely in line with how Muslims have learnt to deal with critics of their religions founder as his actions regarding dealing with blasphemers are documented in the Hadith and Sira.
For example, Asma Bint Marwan (a female critic who lampooned Muhammad) was murdered whilst asleep with her small children to the approval of Islam's founder and many others too were killed similarly it is the Sharia punishment of death for criticism or lampooning of Islam's founder under all fiqh schools in Islam.
After the slaughter of Asma Bint Marwan were said to have 'seen the power of Islam' and to have accepted Islam. This was the pattern of acceptance of Islam throughout the Pagan Arab Peninsula where Quran 9:5 mandated the killing or conversion of the Pagans to Islam and this was implemented by Muhammad's followers.
As Machiavelli says in his book the Prince about whether it is better to be loved or feared and concludes that fear is preferable the Islamic religions founder found that warfare, coercion and terrorisation of populations was by far the most effective means of expanding the religion of Islam.
"i have been made victorious with terror" he is recorded as bragging and in this case he wasn't exaggerating.
The terrorism was effective and efficient and remained the core methodology of Islam enforcing its writ on the world through Jihad.
In response to this threat, cowards, appeasers and the ignorant naturally comply with Islamic blasphemy laws through fear which is the first stage of creating an environment of intimidation where Islam can spread without the disturbance of criticism, ridicule and opposition.
India is a nation that knows the 'power of Islam' all too well through its historical experiences and the impulse to cringe, cower and appease is ingrained in most there.
In Delhi is the famous Qutab Minar, symbol of Islamic dominance, next to the 'Qawwat al Islam' Mosque, the 'might of Islam' mosque. with material from 27 destroyed Temples incorporated into it. This was architecture meant to show the terrorising might of Islamic jihad and set the stage for Islamic supremacism, overlordship and dominance.
If suffered to live at all without conversion, the non-Muslims were to pay the jizya (humiliation second-class citizen) tax and be made to live in abjection. They were called Dhimmis, or 'protected' minorities, a protection in the mafiosa sense, pay for protection (from Muslims) or be killed by them.
Islam in this unequal scenario it sets up allows itself the right to preach to and convert non-Muslims, but will kill any who leave it under apostasy laws. Anyone who criticises it and in particular its founder and role model will be similarly face execution. On this unlevel playing field Islam will slowly gain followers until other religions are wiped out and Islam dominates over all other religions as per Quran 9:33.
In India the Hindus have learnt that criticism of Islam's founder is beyond the pale, particularly anything involving images or cartoons.
There is a law, 295 in the Indian penal code, that criminalises blasphemy. This law came about in the English era in response to the assassination of a critic of the Islamic 'prophet' using the incriminating and embarrassing material that appears in the Islamic sources themselves. A person who was distributing a book 'Rangeela Rasool' or Colorful Prophet was assassinated in a similar way to the Charlie Hebdo cartoonists, and subsequently this law came into being to placate Muslim demands.
It is still used to placate Muslim complaints and threats of violence in the modern era too. The current bunch of India's leaders are compliant with this blasphemy code too. The Islam critical website www.islam-watch.org is blocked by Indian Government internet providers on police advice for hosting the movie on the life of Muhammad by Imran Firasat.
The Indians have learnt appeasement, cowering and censorship in fear of Islamic violence and they even think it is a clever and mature policy that others need to learn. As the media talking head and former star policewoman Kiran Bedi recently tweeted advice to the French and others in the wake of the Charlie Hedbo assassinations:
@thekiranbedi
France Terror-Shoot-Out sends a message: why deliberately provoke or poke? Be respectful and civil. Don't hurt people's sensitivities!
Censorship of Islam's founder is now becoming ingrained in the West too. In the wake of the Salman Rushdie affair, Cartoon riots and killings etc a self-censorship is becoming the norm in media outlets and video sharing websites.
Imran Firasat's movie on Muhammad, although an accurate and well-documented production was removed from all of the major video sharing websites like youtube, live leak, vimeo etc.
This slaughter of the Charlie Hedbo cartoonists and staff will only reinforce this tendency of censorship that is growing in scope, in spite of some token comments about upholding 'free speech' a self-censorship in regards to Islamic sensitivities already is largely in place.
Without the right to criticise, ridicule, lampoon, blaspheme Islamic taboos and its founder a major


Central Christian Church Disciples of Christ can be found at 10 Van Trees St W . The following is offered: Religious Organizations . In Washington there are 16 other Religious Organizations. An overview can be found here.


...at least it did this past weekend when it actually was clear. With a dusting of snow on everything right now, grey looks like it will be the color of the week.
No reason not to appreciate the browns though... I'll keep saying that until spring actually arrives and the greens reemerge.
Not very ugly, is it?
Nature would have to work really hard to be ugly, in my opinion. Even when I looked out the window this morning and saw snow I thought "well. That's really pretty."


text:
Agriculture Department to Develop New NAIS Framework
The USDA announced plans to develop a new system for animal-disease traceability that will focus on flexibility and collaboration.
by Samuel AdemolaFebruary 5, 2010
Photo courtesy USDA/ Dean Anderson
The USDA announced it will revise NAIS to allow for more flexible animal-disease traceability.
The USDA will be developing a new framework to trace animal diseases in the United States, Agriculture Secretary Tom Vilsack said in an announcement on Feb. 5, 2010.
Flexibility will be the focus of the new system as the USDA tries to respond to feedback from the current National Animal Identification System. The changes are being made in response to concerns from states, tribal nations and producers received during a listening tour on NAIS. One concern raised during the tour was that NAIS does not benefit small-farm production.
"One of my main goals for this new approach is to build a collaborative process for shaping and implementing our framework for animal disease traceability," Vilsack said.
The USDA says the new animal-disease traceability system will:
Only apply to animals moved in interstate commerce
Be administered by states and tribal nations
Encourage the use of lower-cost technology
Be implemented transparently through federal regulations and the full rule-making process
As the USDA develops the new animal disease-traceability system in the next few months, it will be looking for input from farmers, ranchers and the public during the process.
Read the USDA's factsheet on the new animal disease traceability framework to learn more.
Hobby Farms publishes the info you need to know to run a small-scale, sustainable farm.


text:
INAE- Innovative Student Projects Award-2020
The last date of the receipt of nomination is 31st August, 2020
INAE-Innovative Student Projects Award-2020
INAE encourages inventions, scientific investigations and research, and promotes their application for development of all sectors of the national economy.
There is a need to encourage research and development culture amongst engineers during the formative years of their undergraduate and postgraduate training, so that they begin their professional career well prepared with ideas and innovative skills.
The Academy instituted the Innovative Student Projects Award since 1988 to identify innovative and creative research projects undertaken by the students in the engineering institutions, and to give an early recognition and incentives to them.
Engineering Disciplines:
Civil Engineering, Computer Engineering & Information Technology, Mechanical Engineering, Chemical Engineering, Electrical Engineering, Electronics & Communication Engineering, Aerospace Engineering, Mining, Metallurgical & Materials Engineering, Energy Engineering and Interdisciplinary Engineering & Special fields
Call for Nominations:
Only one nomination for projects/theses in each of the Engineering Sections of INAE listed in Serial 7 of the Nomination Form, at each level, viz., Doctoral, Master's and Bachelor are accepted from an Engineering College for assessing their innovative potential and intrinsic merit.
The nominations are to be sent on A-4 size paper in the prescribed format given in the brochure. (Ink signed copy of the nominations are to be sent, in case the same has been downloaded from INAE website). A scanned soft copy of the completed nomination form should also be sent by email to inaehq@inae.in
The nominations must be sent by Principal/Deans/Heads/Registrar/Director of Engineering College where the candidate has carried out his project/thesis for award of degree and not through the organization where the candidate is presently working
Potentially innovative projects/theses are assessed at three levels, viz., B.E./B.Tech, M.E./M.Tech and Ph.D. Nominations for the awards 2020 will be accepted by the Academy according to the following eligibility requirement.
Final Year (4th year) B.E./B.Tech projects completed upto July 31, 2020 for the academic year 2019-2020.
M.E./M.Tech theses examined from July 1, 2019 upto July 31, 2020 during the academic year 2019-2020.
Ph.D. theses examined and accepted/recommended for Award from June 1, 2019 upto May 31, 2020.
It is compulsory that Degree / Provisional Degree Certificate must accompany the nomination proforma.
Awards and Grants:
The Award shall comprise a certificate and Rs.25000/- in cash for the awardees selected at Doctoral Level; Rs.15000/- in cash for the awardees selected at Master's Level; and Rs 10,000/- in cash for the awardees selected at Bachelor level to each team member, subject to a maximum of four team members.
All Innovative Student Project Awardees will also be inducted as "Student-Members" during the Awards Ceremony in INAE Annual Convention. The Student -membership is valid for a period of five years.
In view of the unprecedented global crisis due to the pandemic caused by Covid-19 virus, the submission of the prescribed Nomination Form and all supporting documents are being accepted through email as a pdf file to INAE (inaehq@inae.in) as a special provision only for this year. In case, the document is not signed (with scanned copy of the signature), an email should be sent by the sponsor viz Principal/Deans/Heads/Registrar/Director of Engineering College/Institution, where the candidate has carried out his project/thesis for award of degree, authenticating the nomination.
In case lockdown is lifted and postal and courier services are resumed in your area, you may also forward the ink-signed copy of nomination in the prescribed Proforma at the following address.
Lt. Col Shobhit Rai (Retd)
Indian National Academy of Engineering
6th Floor, Unit No. 604-609
SPAZE I-Tech Park,Tower A,
Sector 49, Sohna Road
Gurgaon, Haryana (India) – 122018
Phone: 0124-4239480, Fax: 0124-4239481
Email : inaehq@inae.in
There would be a two-tier selection process wherein the initial shortlisting would be done by selection committee. The shortlisted nominees will be invited to make a presentation before the selection committee on dates to be announced later. The selection committee would then recommend the nominee for conferment of the award for the approval by the governing council.
Presentation of the award:
The awardees will be invited for the INAE annual convention being held in December each year wherein they would be conferred the award and also inducted as Student Members for a period of five years.
The last date of the receipt of nomination is August 31, 2020.
Please click on the "Nomination Form" button to download nomination form and click on the "Previous Awardees" button for all previous award winners.
Recipients of Innovative Student Projects Award: 2019
Ph.D. Level:
Dr. Abir De, IIT Kharagpur (Modeling and Learning Influence in Social Networks)
Dr. Gaurav Goswami, IIIT Delhi (Unraveling Representations for Face Recognition from Handcrafted to Deep Learning)
Dr. Subham Swaroop Sahoo, IIT Delhi (Coordinated Control of DC Microgrids)
Dr. Shambhu Sau, IIT Bombay (Modular Converter Topologies with Reduced Transformer Rating and Capacitor Size for High-Power Regenerative Drives)
Dr. Surender Singh, IIT Roorkee (Utilization of RAP for Sustainable Concrete Pavements)
Dr. P Mastanaiah, IIT Hyderabad (Electron Beam Welding and Friction Stir Welding of Dissimilar Aluminium Alloys (AA2219 and AA50830)
Dr. Raosaheb Ananda Farakte, Institute of Chemical Technology (ICT), Mumbai (Transport Phenomena in Multiphase processes)
Dr. Lokamanya Chikmath, IIAEM, Jain University, Bengalore. (Non-linear prognostic analysis of fastener joints for structural health monitoring applications)
Dr. Atasi Dan, IISc. Bangalore (Spectrally Selective tandem absorbers for photothermal conversion in high temperature solar thermal systems)
Dr. Nithin Chandran, IIT Kharagpur (Sequence and structural analysis of RNAs and their interactions with proteins)
M.E./M.Tech Level:
Mr. Shivam H Ribadiya, Chandubhai S Patel Institute of Technology, Charusat, Gujarat (Time Synchronization Protocol using NavIC)
Mr. Rishab Anand, IIT Bombay (Simplified Control Strategy for Inhomogeneous Series-Connected Battery Strings)
Mr. Vikram Kishore Bharti, IIT Hyderabad (Carbon-Sulfur Composites as High Performance Cathode Materials for Lithiuim-Sulfur Batteries)
Ms Neethu M, Indian Institute of Space Science and Technology (IIST), Thiruvananthapuram (Actuator Interface Board Design for Momentum-biased Cubesat ADCS)
Ms Ruchika Zalpouri, College of Agricultural Engineering and Technology, Punjab Agricultural University, Ludhiana (Development and Evaluation of Refraction Based System for Dehydration of Potato)
B.E./B.Tech Level:
Mr. Gandikota Rohit, Indian Institute of Space Science & Technology (IIST), Thiruvananthapuram (Harnessing Deep Generative Models for Multimedia Data Hiding)
Ms Sharmila Reddy Nangi, IIT Kharagpur (A Deep Generative Model for Code-Switched Text)
Ms Archana CM, Indian Institute of Space Science & Technology (IIST), Thiruvananthapuram (Dodecagonal Voltage Space Vector Based Direct Torque Control Scheme for Open-End Winding Induction Motor with a Single DC Source)
Ms Sneha Gem Mathew, Indian Institute of Space Science & Technology, Thiruvananthapuram (Low Complexity Cyclostationary Feature Detection using Sub-Nyquist Samples)
Mr Bala Suraj Pedasingu, IIT Tirupati (ALTO: Adversarial Learning for Tracking Objects)
Mr. Suraj R, Indian Institute of Space Science & Technology (IIST), Thiruvananthapuram (PS4Net: An Opportunistic Software Defined Networking Framework Over PSLV Stage 4)
Mr. O Vamshi, Mr. V Charan, Mr. G Raja Vallabh and Ms. Aishwarya Reddy, Mahatma Gandhi Institute of Technology (MGIT), Hyderabad (Path Correcting Multi-Purpose Agricultural Robot)
Mr. K Lakshman Vedavyas and Ms L Pooja Mahatma Gandhi, Institute of Technology (MGIT), Hyderabad (Effect of Milling Time and Optimization of Poling Conditions on Piezoelectric Properties of BCZT Ceramics)
Mr. Gracio Joyal Lobo, Ms. Amrutha K, Mr. Dumpeti Vineeth and Mr. Medisetti Swami Charan, International Institute for Aerospace Engineering and Management, Jain University, Bangalore. (Tubercles Effect on a Wing Performance for NACA 634-421 Aerofoil)
Mr. J Chandra Bose, Mr. G Mohan Kumar, Mr.. A Muthushivashankar and Mr. CB Raambalagi National Engineering College, NEC, Kovilpatti (Experimental Study on Bio-Concrete by Partial Replacement of Fine Aggregate Using Medical Vial waste)
Previous Awardees
About Indian National Academy of Engineering (INAE)
The Indian National Academy of Engineering (INAE) founded in 1987 comprises India's most distinguished engineers, engineer-scientists and technologists covering the entire spectrum of engineering disciplines, and functions as an apex body to promote and advance the practice of engineering and technology and the related sciences and disciplines in India and their application to problems of national importance.
Back to Student Awards
Disclaimer: All the above data is gathered from INAE, all the logos and titles are belongs to INAE, EngMorph does not own any part of the data published in this page and EngMorph is not responsible for the correctness of the information presented. For more information, visit the INAE website.
Please subscribe below for Latest Rankings and Awards.


Have You and Your Parents Tried These Fiber-Rich Grains Yet?
Fiber is so good for you and your elderly parents. A diet high in fiber is helpful in preventing colon cancer and constipation. Fiber is also beneficial for heart health, cholesterol levels, and blood sugar levels. Research also finds that a high-fiber diet can help lower the risk of stroke.
You want to add fiber to your parents' meals, but you're not sure where to start. Have you tried these grains? They're all fiber-rich and taste great.
One cup of barley has 32 grams of dietary fiber. It's a versatile grain that's as good in a soup as it is replacing rice in a pilaf. You can cook it with milk and have a hot breakfast that's similar to oatmeal. Given that the American Heart Association recommends 25 grams of fiber each day, it's easy to get a full day's supply of fiber with this grain.
Bulgur is cracked wheat that's handy when making pilafs, veggie burgers, or a hot cereal. In one cup of cooked bulgur, there are 8 grams of dietary fiber. It's also high in vitamin B6 and magnesium. You may have had it in tabbouleh, the chilled salad that mixes bulgur, olive oil, lemon juice, cucumbers, mint, parsley, and tomatoes.
Farro is a species of wheat that's similar to barley. It's great with stir fry. You can also use it in place of rice in a pilaf. You'll find 7 to 8 grams of fiber in half a cup of cooked farro. It's also rich in magnesium and niacin.
With 5 grams of dietary fiber per cup, quinoa is lower in fiber than grains like barley, but it's also rich in some B vitamins, folate, iron, magnesium, and protein. You can get your protein and fiber in one food. It's really good in veggie burgers and also works well in pilafs.
If you're having a hard time making sure your parents have nutritious meals, consider bringing in a caregiver to help. Many family caregivers balance caring for their children, having time with friends, and caring for their parent. With a home care professional's help, you can balance your time and avoid stress and frustration.
Meal preparation is one of the many services caregivers provide. They can also drive your mom and dad to appointments, take them shopping, and join them for walks around the neighborhood. Learn more about home care by calling today.
If you or an aging loved one are considering hiring home care in Laurens, SC, contact Heart of the Carolinas Home Care at 864-991-3116. Providing Home Care Services in Greenville, Simpsonville, Greer, Anderson, Spartanburg, Mauldin, Seneca, Laurens, Charleston, Columbia and the surrounding areas.


YOU have an extra hour this weekend. Spend it savouring this 90 minutes.
Whether this was a one-off to welcome Jim Duffy to the manager's chair, or the start of something big, only time will tell.
But it was Dumbarton's biggest goal haul for 20 months. It was gained against an East Fife team who had won all of their last eight, two of those against Championship clubs.
And it did not remotely flatter Sons. From Calum Gallagher's opening goal on six minutes to Dom Thomas' fourth on 70, via Bobby Barr on 45 and Stuart Carswell on 50, they flew through the challenge.
They also finished numerically superior to their visitors, who had Ross Davidson sent off on 68 minutes for two bookings in the same incident.
Duffy highlighted the importance of consistency in his first interview with the club website last week. If his team can deliver this with consistency, there will be no complaints from anybody with any affinity towards Dumbarton.
After the new manager entered the field to warm applause from the fans, there was intrigue as to how his debut would go. His last four predecessors had all won on their league debuts, after all.
And within six minutes, that record stood more chance of remaining intact. After controlling Kyle Hutton's diagonal ball, Gallagher cut into the area and scored with a narrow angled shot.
It wasn't as if chances were coming at a rate of knots for Sons, but they were more than comfortable. They were only really troubled by a low Scott Agnew shot which rolled just past.
Iain Russell's next goal will be the 200th of his career, and on 34 minutes he was unlucky not to get it when the keeper turned his shot over. The outcome was a goal kick.
Gallagher's goal looked like being all Dumbarton had to defend at the interval, but right on the whistle, what a boost.
Thomas punished hesitancy at the back from East Fife and after getting into the area, squared to Barr for a tap-in.
It was widely expected that the visitors, after their recent form, would still fancy their chances of fighting back in the second half. But the best way to guard against it was to score another goal.
Five minutes into the second half, a short corner. Ross Forbes, Barr, Forbes again, Carswell at the back post to stick away the low ball. Simple as that.
Shortly afterwards Thomas' angled free kick was saved, but he would have his moment eventually.
Not before East Fife were reduced to 10 men, though, as Davidson was initially booked for a pull on Thomas' jersey. His dissent earned him a second caution and thereby a dismissal.
And within minutes of that, Thomas collected possession and strolled through to score with a low 25-yard shot.
A Barr shot was deflected just wide, and in the end no further goals were forthcoming.
But in his first match as manager, Duffy's Dumbarton delivered.
Dumbarton: Smith; Ballantyne, Dowie, Perry, Carswell, Hutton (Spencer 75), Gallagher, Forbes, R Barr, Russell (Little 81), Thomas (Paton 78). Subs: McGowan; Allardice.
East Fife: Long; Dunsmore (Thomson 65), Kane, Dunlop, Watson, Slattery (Docherty 54), Court, Agnew, Watt, Dowds (Smith 54), Davidson. Subs: McDowall; McBride, Linton, Bell. Booked: Kane. Booked and sent off: Davidson.


Posted on October 3, 2001 by Hull Alumni Editor in Activities, past-activities, Photos.
Hull(HK)Alumni and the Alumni of the University of Southern Australia jointly held a Racing Bonanza in a private box at the Shatin Race Course of the Hong Kong Jockey Club. The event was very well attended.


text:
Friends lost in plane crash are remembered for their music, sense of adventure
Jennifer Rich
Music made by Will Roberts and Jamie Hobbs will forever echo in the minds and hearts of the loved ones who lost these good friends in a tragedy Oct. 21.
The Holly Ridge community is still reeling from the plane crash that took two lives and injured two others. Hobbs' youngest son, Ryan, and a friend who were also onboard the 1980 Mooney M20J owned by Roberts are recovering from injuries sustained in the crash.
More:New details released in fatal Holly Ridge crash that left two dead, two injured
"They're going to be OK," Scot Painter said. Painter is the congregational care pastor at The Gathering at Surf City Baptist Church. He met Hobbs seven years ago when Hobbs joined their church family.
A harmonica was left on the stage during Sunday's worship services in the place where Hobbs played in the Morning Glory Band, a praise and worship group he helped establish.
"He loved playing music on the island with different musicians," Painter said. "Jamie played with us up until the end."
In addition to his involvement with his church, Hobbs was an avid mountain biker and outdoor enthusiast. He participated in local drama and theater performances. Hobbs was a licensed auctioneer and active with the nonprofit, Paddle 4 Troops. He also enjoyed picking vintage items and refurbishing old boats and campers.
Hobbs' biggest legacy is the three children he was a doting father to – Camryn, Daniel and Ryan.
"He loved his kids and did a lot of outdoor and water sports with them," Painter said.
Painter said Hobbs, a 57-year-old who was living in Hampstead, was an adventurous guy with a great sense of humor. He had a quick wit and was creative with writing song lyrics, like when he adapted the song "Jamming" by Bob Marley and the Wailers to a song his praise band could sing.
Roberts, who was from Apex outside of Raleigh, also liked to write original songs he played at bars, restaurants and festivals up and down the coastline. Roberts was a talented acoustic guitarist and vocalist who gave interactive and spontaneous performances.
Roberts also spent his time at the beach, on amateur radio and got his thrills in the sky as a pilot. A love for making music and sense of adventure made Roberts and Hobbs kindred spirits.
Whatever happened around 4:30 in the afternoon of Oct. 21 when Roberts' aircraft went down in a wooded area near the Holly Ridge/Topsail Island Airport runway is still under a multi-agency investigation. A preliminary report from the National Transportation Safety Board will be out within a couple of weeks as fragments from the aircraft are transported from the wreckage site to a facility in Georgia for further examination. The full investigation could take 12 to 16 months to complete.
Friends and family of Hobbs are gathering for a visitation from 6 to 8 p.m. Tuesday, Oct. 26, at First Baptist Church in Clinton, where Hobbs is originally from. Another visitation will be held at 2 p.m. on Wednesday, Oct. 27, at The Gathering in Surf City, followed by a memorial service at 3 p.m.
Painter said Hobbs was a fun guy his church congregation will miss.
"Everybody loved him," Painter said. "He was a good guy."


text:
/*global defineSuite*/
defineSuite([
        'Scene/Primitive',
        'Core/BoxGeometry',
        'Core/Cartesian3',
        'Core/ColorGeometryInstanceAttribute',
        'Core/ComponentDatatype',
        'Core/Ellipsoid',
        'Core/Geometry',
        'Core/GeometryAttribute',
        'Core/GeometryInstance',
        'Core/GeometryInstanceAttribute',
        'Core/Matrix4',
        'Core/PolygonGeometry',
        'Core/PrimitiveType',
        'Core/Rectangle',
        'Core/RectangleGeometry',
        'Core/RuntimeError',
        'Core/ShowGeometryInstanceAttribute',
        'Core/Transforms',
        'Renderer/ClearCommand',
        'Scene/MaterialAppearance',
        'Scene/OrthographicFrustum',
        'Scene/PerInstanceColorAppearance',
        'Scene/SceneMode',
        'Specs/BadGeometry',
        'Specs/createContext',
        'Specs/createFrameState',
        'Specs/createScene',
        'Specs/pick',
        'Specs/pollToPromise',
        'Specs/render'
    ], function(
        Primitive,
        BoxGeometry,
        Cartesian3,
        ColorGeometryInstanceAttribute,
        ComponentDatatype,
        Ellipsoid,
        Geometry,
        GeometryAttribute,
        GeometryInstance,
        GeometryInstanceAttribute,
        Matrix4,
        PolygonGeometry,
        PrimitiveType,
        Rectangle,
        RectangleGeometry,
        RuntimeError,
        ShowGeometryInstanceAttribute,
        Transforms,
        ClearCommand,
        MaterialAppearance,
        OrthographicFrustum,
        PerInstanceColorAppearance,
        SceneMode,
        BadGeometry,
        createContext,
        createFrameState,
        createScene,
        pick,
        pollToPromise,
        render) {
    "use strict";
    /*global jasmine,describe,xdescribe,it,xit,expect,beforeEach,afterEach,beforeAll,afterAll,spyOn,fail*/

    var context;
    var frameState;
    var us;

    var ellipsoid;

    var rectangle1;
    var rectangle2;

    var rectangleInstance1;
    var rectangleInstance2;

    beforeAll(function() {
        context = createContext();
        frameState = createFrameState();

        us = context.uniformState;
        us.update(context, frameState);

        ellipsoid = Ellipsoid.WGS84;
    });

    afterAll(function() {
        context.destroyForSpecs();
    });

    beforeEach(function() {
        //Since we don't create a scene, we need to manually clean out the frameState.afterRender array before each test.
        frameState.afterRender.length = 0;

        rectangle1 = Rectangle.fromDegrees(-80.0, 20.0, -70.0, 30.0);
        rectangle2 = Rectangle.fromDegrees(70.0, 20.0, 80.0, 30.0);

        var translation = Cartesian3.multiplyByScalar(Cartesian3.normalize(ellipsoid.cartographicToCartesian(Rectangle.center(rectangle1)), new Cartesian3()), 2.0, new Cartesian3());
        rectangleInstance1 = new GeometryInstance({
            geometry : new RectangleGeometry({
                vertexFormat : PerInstanceColorAppearance.VERTEX_FORMAT,
                ellipsoid : ellipsoid,
                rectangle : rectangle1
            }),
            modelMatrix : Matrix4.fromTranslation(translation, new Matrix4()),
            id : 'rectangle1',
            attributes : {
                color : new ColorGeometryInstanceAttribute(1.0, 1.0, 0.0, 1.0),
                show : new ShowGeometryInstanceAttribute(true)
            }
        });

        translation = Cartesian3.multiplyByScalar(Cartesian3.normalize(ellipsoid.cartographicToCartesian(Rectangle.center(rectangle2)), new Cartesian3()), 3.0, new Cartesian3());
        rectangleInstance2 = new GeometryInstance({
            geometry : new RectangleGeometry({
                vertexFormat : PerInstanceColorAppearance.VERTEX_FORMAT,
                ellipsoid : ellipsoid,
                rectangle : rectangle2
            }),
            modelMatrix : Matrix4.fromTranslation(translation, new Matrix4()),
            id : 'rectangle2',
            attributes : {
                color : new ColorGeometryInstanceAttribute(0.0, 1.0, 1.0, 1.0),
                show : new ShowGeometryInstanceAttribute(true)
            }
        });
    });

    it('default constructs', function() {
        var primitive = new Primitive();
        expect(primitive.geometryInstances).not.toBeDefined();
        expect(primitive.appearance).not.toBeDefined();
        expect(primitive.modelMatrix).toEqual(Matrix4.IDENTITY);
        expect(primitive.show).toEqual(true);
        expect(primitive.vertexCacheOptimize).toEqual(false);
        expect(primitive.interleave).toEqual(false);
        expect(primitive.compressVertices).toEqual(true);
        expect(primitive.releaseGeometryInstances).toEqual(true);
        expect(primitive.allowPicking).toEqual(true);
        expect(primitive.cull).toEqual(true);
        expect(primitive.asynchronous).toEqual(true);
        expect(primitive.debugShowBoundingVolume).toEqual(false);
    });

    it('Constructs with options', function() {
        var geometryInstances = {};
        var appearance = {};
        var modelMatrix = Matrix4.fromUniformScale(5.0);

        var primitive = new Primitive({
            geometryInstances : geometryInstances,
            appearance : appearance,
            modelMatrix : modelMatrix,
            show : false,
            vertexCacheOptimize : true,
            interleave : true,
            compressVertices : false,
            releaseGeometryInstances : false,
            allowPicking : false,
            cull : false,
            asynchronous : false,
            debugShowBoundingVolume : true
        });

        expect(primitive.geometryInstances).toEqual(geometryInstances);
        expect(primitive.appearance).toEqual(appearance);
        expect(primitive.modelMatrix).toEqual(modelMatrix);
        expect(primitive.show).toEqual(false);
        expect(primitive.vertexCacheOptimize).toEqual(true);
        expect(primitive.interleave).toEqual(true);
        expect(primitive.compressVertices).toEqual(false);
        expect(primitive.releaseGeometryInstances).toEqual(false);
        expect(primitive.allowPicking).toEqual(false);
        expect(primitive.cull).toEqual(false);
        expect(primitive.asynchronous).toEqual(false);
        expect(primitive.debugShowBoundingVolume).toEqual(true);
    });

    it('releases geometry instances when releaseGeometryInstances is true', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            releaseGeometryInstances : true,
            asynchronous : false
        });

        expect(primitive.geometryInstances).toBeDefined();
        primitive.update(context, frameState, []);
        expect(primitive.geometryInstances).not.toBeDefined();

        primitive = primitive && primitive.destroy();
    });

    it('does not release geometry instances when releaseGeometryInstances is false', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            releaseGeometryInstances : false,
            asynchronous : false
        });

        expect(primitive.geometryInstances).toBeDefined();
        primitive.update(context, frameState, []);
        expect(primitive.geometryInstances).toBeDefined();

        primitive = primitive && primitive.destroy();
    });

    it('adds afterRender promise to frame state', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            releaseGeometryInstances : false,
            asynchronous : false
        });

        primitive.update(context, frameState, []);
        expect(frameState.afterRender.length).toEqual(1);
        frameState.afterRender[0]();

        return primitive.readyPromise.then(function(param) {
            expect(param.ready).toBe(true);
            primitive = primitive && primitive.destroy();
        });
    });

    it('does not render when geometryInstances is an empty array', function() {
        var primitive = new Primitive({
            geometryInstances : [],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(0);

        primitive = primitive && primitive.destroy();
    });

    it('does not render when show is false', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands.length).toBeGreaterThan(0);

        commands.length = 0;
        primitive.show = false;
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(0);

        primitive = primitive && primitive.destroy();
    });

    it('does not render other than for the color or pick pass', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.passes.render = false;
        frameState.passes.pick = false;

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(0);

        frameState.passes.render = true;
        frameState.passes.pick = false;

        primitive = primitive && primitive.destroy();
    });

    it('does not render when scene3DOnly is true and the scene mode is SCENE2D', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.mode = SceneMode.SCENE2D;
        frameState.scene3DOnly = true;

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(0);

        frameState.mode = SceneMode.SCENE3D;
        primitive = primitive && primitive.destroy();
    });

    it('does not render when scene3DOnly is true and the scene mode is COLUMBUS_VIEW', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.mode = SceneMode.COLUMBUS_VIEW;
        frameState.scene3DOnly = true;

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(0);

        frameState.mode = SceneMode.SCENE3D;
        primitive = primitive && primitive.destroy();
    });

    it('renders in two passes for closed, translucent geometry', function() {
        var primitive = new Primitive({
            geometryInstances : new GeometryInstance({
                geometry : BoxGeometry.fromDimensions({
                    vertexFormat : PerInstanceColorAppearance.VERTEX_FORMAT,
                    dimensions : new Cartesian3(500000.0, 500000.0, 500000.0)
                }),
                id : 'box',
                attributes : {
                    color : new ColorGeometryInstanceAttribute(1.0, 1.0, 0.0, 0.5)
                }
            }),
            appearance : new PerInstanceColorAppearance({
                closed : true,
                translucent : true
            }),
            asynchronous : false
        });

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(2);

        primitive = primitive && primitive.destroy();
    });

    it('renders in Columbus view when scene3DOnly is false', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.scene3DOnly = false;
        frameState.mode = SceneMode.COLUMBUS_VIEW;
        frameState.morphTime = SceneMode.getMorphTime(frameState.mode);
        frameState.camera.update(frameState.mode);

        frameState.camera.viewRectangle(rectangle1);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).not.toEqual([0, 0, 0, 0]);

        frameState.camera.viewRectangle(rectangle2);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).not.toEqual([0, 0, 0, 0]);

        frameState = createFrameState(); // reset frame state
        primitive = primitive && primitive.destroy();
    });

    it('renders in 2D when scene3DOnly is false', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.scene3DOnly = false;
        frameState.mode = SceneMode.SCENE2D;
        frameState.morphTime = SceneMode.getMorphTime(frameState.mode);

        var frustum = new OrthographicFrustum();
        frustum.right = Ellipsoid.WGS84.maximumRadius * Math.PI;
        frustum.left = -frustum.right;
        frustum.top = frustum.right;
        frustum.bottom = -frustum.top;
        frameState.camera.frustum = frustum;
        frameState.camera.update(frameState.mode);

        frameState.camera.viewRectangle(rectangle1);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).not.toEqual([0, 0, 0, 0]);

        frameState.camera.viewRectangle(rectangle2);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).not.toEqual([0, 0, 0, 0]);

        frameState = createFrameState(); // reset frame state
        primitive = primitive && primitive.destroy();
    });

    it('updates model matrix for one instance in 3D', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(1);
        expect(commands[0].modelMatrix).toEqual(Matrix4.IDENTITY);

        var modelMatrix = Matrix4.fromUniformScale(10.0);
        primitive.modelMatrix = modelMatrix;

        commands.length = 0;
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(1);
        expect(commands[0].modelMatrix).toEqual(modelMatrix);

        primitive = primitive && primitive.destroy();
    });

    it('updates model matrix for more than one instance in 3D with equal model matrices in 3D only scene', function() {
        frameState.scene3DOnly = true;

        var modelMatrix = Matrix4.fromUniformScale(2.0);
        rectangleInstance1.modelMatrix = modelMatrix;
        rectangleInstance2.modelMatrix = modelMatrix;

        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(1);
        expect(commands[0].modelMatrix).toEqual(modelMatrix);

        modelMatrix = Matrix4.fromUniformScale(10.0);
        primitive.modelMatrix = modelMatrix;

        commands.length = 0;
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(1);
        expect(commands[0].modelMatrix).toEqual(modelMatrix);

        primitive = primitive && primitive.destroy();

        frameState.scene3DOnly = false;
    });

    it('computes model matrix when given one for a single instance and for the primitive in 3D only', function() {
        frameState.scene3DOnly = true;

        var instanceModelMatrix = Matrix4.fromUniformScale(2.0);

        var dimensions = new Cartesian3(400000.0, 300000.0, 500000.0);
        var positionOnEllipsoid = Cartesian3.fromDegrees(-105.0, 45.0);
        var primitiveModelMatrix = Matrix4.multiplyByTranslation(
            Transforms.eastNorthUpToFixedFrame(positionOnEllipsoid),
            new Cartesian3(0.0, 0.0, dimensions.z * 0.5), new Matrix4());

        var boxGeometry = BoxGeometry.fromDimensions({
            vertexFormat : PerInstanceColorAppearance.VERTEX_FORMAT,
            dimensions : dimensions
        });
        var boxGeometryInstance = new GeometryInstance({
            geometry : boxGeometry,
            modelMatrix : instanceModelMatrix,
            attributes : {
                color : new ColorGeometryInstanceAttribute(1.0, 0.0, 0.0, 1.0)
            }
        });
        var primitive = new Primitive({
            geometryInstances : boxGeometryInstance,
            modelMatrix : primitiveModelMatrix,
            appearance : new PerInstanceColorAppearance({
                translucent : false,
                closed: true
            }),
            asynchronous : false
        });

        var expectedModelMatrix = Matrix4.multiplyTransformation(primitiveModelMatrix, instanceModelMatrix, new Matrix4());

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(1);
        expect(commands[0].modelMatrix).toEqual(expectedModelMatrix);

        primitive = primitive && primitive.destroy();

        frameState.scene3DOnly = false;
    });

    it('update model matrix throws in Columbus view', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.mode = SceneMode.COLUMBUS_VIEW;

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(1);
        expect(commands[0].modelMatrix).toEqual(Matrix4.IDENTITY);

        var modelMatrix = Matrix4.fromUniformScale(10.0);
        primitive.modelMatrix = modelMatrix;

        commands.length = 0;
        expect(function() {
            primitive.update(context, frameState, commands);
        }).toThrowDeveloperError();

        frameState = createFrameState(); // reset frame state
        primitive = primitive && primitive.destroy();
    });

    it('update model matrix throws in 2D', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.mode = SceneMode.SCENE2D;

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands.length).toEqual(1);
        expect(commands[0].modelMatrix).toEqual(Matrix4.IDENTITY);

        var modelMatrix = Matrix4.fromUniformScale(10.0);
        primitive.modelMatrix = modelMatrix;

        commands.length = 0;
        expect(function() {
            primitive.update(context, frameState, []);
        }).toThrowDeveloperError();

        frameState = createFrameState(); // reset frame state
        primitive = primitive && primitive.destroy();
    });

    it('renders bounding volume with debugShowBoundingVolume', function() {
        var scene = createScene();
        scene.primitives.add(new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false,
            debugShowBoundingVolume : true
        }));
        scene.camera.viewRectangle(rectangle1);
        var pixels = scene.renderForSpecs();
        expect(pixels[0]).not.toEqual(0);
        expect(pixels[1]).toBeGreaterThanOrEqualTo(0);
        expect(pixels[2]).toBeGreaterThanOrEqualTo(0);
        expect(pixels[3]).toEqual(255);
    });

    it('transforms to world coordinates', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.camera.viewRectangle(rectangle1);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).not.toEqual([0, 0, 0, 0]);

        frameState.camera.viewRectangle(rectangle2);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).not.toEqual([0, 0, 0, 0]);

        expect(primitive.modelMatrix).toEqual(Matrix4.IDENTITY);

        primitive = primitive && primitive.destroy();
    });

    it('does not transform to world coordinates', function() {
        rectangleInstance2.modelMatrix = Matrix4.clone(rectangleInstance1.modelMatrix);
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.scene3DOnly = true;
        frameState.camera.viewRectangle(rectangle1);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).not.toEqual([0, 0, 0, 0]);

        frameState.camera.viewRectangle(rectangle2);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).not.toEqual([0, 0, 0, 0]);

        expect(primitive.modelMatrix).not.toEqual(Matrix4.IDENTITY);

        primitive = primitive && primitive.destroy();
    });

    it('get common per instance attributes', function() {
        rectangleInstance2.attributes.not_used = new GeometryInstanceAttribute({
            componentDatatype : ComponentDatatype.FLOAT,
            componentsPerAttribute : 1,
            value : [0.5]
        });

        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });
        primitive.update(context, frameState, []);

        var attributes = primitive.getGeometryInstanceAttributes('rectangle1');
        expect(attributes.color).toBeDefined();
        expect(attributes.show).toBeDefined();

        attributes = primitive.getGeometryInstanceAttributes('rectangle2');
        expect(attributes.color).toBeDefined();
        expect(attributes.show).toBeDefined();
        expect(attributes.not_used).not.toBeDefined();

        primitive = primitive && primitive.destroy();
    });

    it('modify color instance attribute', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.camera.viewRectangle(rectangle1);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        var pixels = context.readPixels();
        expect(pixels).not.toEqual([0, 0, 0, 0]);

        var attributes = primitive.getGeometryInstanceAttributes('rectangle1');
        expect(attributes.color).toBeDefined();
        attributes.color = [255, 255, 255, 255];

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        var newPixels = context.readPixels();
        expect(newPixels).not.toEqual([0, 0, 0, 0]);
        expect(newPixels).not.toEqual(pixels);

        primitive = primitive && primitive.destroy();
    });

    it('modify show instance attribute', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.camera.viewRectangle(rectangle1);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).not.toEqual([0, 0, 0, 0]);

        var attributes = primitive.getGeometryInstanceAttributes('rectangle1');
        expect(attributes.show).toBeDefined();
        attributes.show = [0];

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        primitive = primitive && primitive.destroy();
    });

    it('get bounding sphere from per instance attribute', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.camera.viewRectangle(rectangle1);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).not.toEqual([0, 0, 0, 0]);

        var attributes = primitive.getGeometryInstanceAttributes('rectangle1');
        expect(attributes.boundingSphere).toBeDefined();

        var rectangleGeometry = RectangleGeometry.createGeometry(rectangleInstance1.geometry);
        var expected = rectangleGeometry.boundingSphere;
        expect(attributes.boundingSphere).toEqual(expected);

        primitive = primitive && primitive.destroy();
    });

    it('getGeometryInstanceAttributes returns same object each time', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.camera.viewRectangle(rectangle1);
        us.update(context, frameState);

        ClearCommand.ALL.execute(context);
        expect(context.readPixels()).toEqual([0, 0, 0, 0]);

        render(context, frameState, primitive);
        expect(context.readPixels()).not.toEqual([0, 0, 0, 0]);

        var attributes = primitive.getGeometryInstanceAttributes('rectangle1');
        var attributes2 = primitive.getGeometryInstanceAttributes('rectangle1');
        expect(attributes).toBe(attributes2);

        primitive = primitive && primitive.destroy();
    });

    it('picking', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        frameState.camera.viewRectangle(rectangle1);
        us.update(context, frameState);

        var pickObject = pick(context, frameState, primitive);
        expect(pickObject.primitive).toEqual(primitive);
        expect(pickObject.id).toEqual('rectangle1');

        frameState.camera.viewRectangle(rectangle2);
        us.update(context, frameState);

        pickObject = pick(context, frameState, primitive);
        expect(pickObject.primitive).toEqual(primitive);
        expect(pickObject.id).toEqual('rectangle2');

        primitive = primitive && primitive.destroy();
    });

    it('does not pick when allowPicking is false', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1],
            appearance : new PerInstanceColorAppearance(),
            allowPicking : false,
            asynchronous : false
        });

        frameState.camera.viewRectangle(rectangle1);
        us.update(context, frameState);

        var pickObject = pick(context, frameState, primitive);
        expect(pickObject).not.toBeDefined();

        primitive = primitive && primitive.destroy();
    });

    it('does not cull when cull is false', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false,
            cull : false
        });

        var commands = [];
        primitive.update(context, frameState, commands);
        expect(commands[0].cull).toEqual(false);

        primitive = primitive && primitive.destroy();
    });

    it('update throws when geometry primitive types are different', function() {
        var primitive = new Primitive({
            geometryInstances : [
                new GeometryInstance({
                    geometry : new Geometry({
                        attributes : {
                            position : new GeometryAttribute({
                                componentDatatype : ComponentDatatype.FLOAT,
                                componentsPerAttribute : 3,
                                values : new Float32Array([1.0, 2.0, 3.0, 4.0])
                            })
                        },
                        primitiveType : PrimitiveType.LINES
                    })
                }),
                new GeometryInstance({
                    geometry : new Geometry({
                        attributes : {
                            position : new GeometryAttribute({
                                componentDatatype : ComponentDatatype.FLOAT,
                                componentsPerAttribute : 3,
                                values : new Float32Array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
                            })
                        },
                        primitiveType : PrimitiveType.TRIANGLES
                    })
                })
            ],
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        expect(function() {
            primitive.update(context, frameState, []);
        }).toThrowDeveloperError();
    });

    it('failed geometry rejects promise and throws on next update', function() {
        var primitive = new Primitive({
            geometryInstances : [new GeometryInstance({
                geometry : new BadGeometry()
            })],
            appearance : new MaterialAppearance({
                materialSupport : MaterialAppearance.MaterialSupport.ALL
            }),
            compressVertices : false
        });

        return pollToPromise(function() {
            if (frameState.afterRender.length > 0) {
                frameState.afterRender[0]();
                return true;
            }
            primitive.update(context, frameState, []);
            return false;
        }).then(function() {
            return primitive.readyPromise.then(function() {
                fail('should not be called');
            }).otherwise(function(e) {
                expect(e).toBe(primitive._error);
                expect(function() {
                    primitive.update(context, frameState, []);
                }).toThrowRuntimeError();
            });
        });
    });

    it('internally invalid asynchronous geometry resolves promise and sets ready', function() {
        var primitive = new Primitive({
            geometryInstances : [new GeometryInstance({
                geometry : PolygonGeometry.fromPositions({
                    positions : []
                })
            })],
            appearance : new MaterialAppearance({
                materialSupport : MaterialAppearance.MaterialSupport.ALL
            }),
            compressVertices : false
        });

        return pollToPromise(function() {
            if (frameState.afterRender.length > 0) {
                frameState.afterRender[0]();
                return true;
            }
            primitive.update(context, frameState, []);
            return false;
        }).then(function() {
            return primitive.readyPromise.then(function(arg) {
                expect(arg).toBe(primitive);
                expect(primitive.ready).toBe(true);
            });
        });
    });

    it('internally invalid synchronous geometry resolves promise and sets ready', function() {
        var primitive = new Primitive({
            geometryInstances : [new GeometryInstance({
                geometry : PolygonGeometry.fromPositions({
                    positions : []
                })
            })],
            appearance : new MaterialAppearance({
                materialSupport : MaterialAppearance.MaterialSupport.ALL
            }),
            asynchronous : false,
            compressVertices : false
        });

        return pollToPromise(function() {
            if (frameState.afterRender.length > 0) {
                frameState.afterRender[0]();
                return true;
            }
            primitive.update(context, frameState, []);
            return false;
        }).then(function() {
            return primitive.readyPromise.then(function(arg) {
                expect(arg).toBe(primitive);
                expect(primitive.ready).toBe(true);
            });
        });
    });

    it('shader validation', function() {
        var primitive = new Primitive({
            geometryInstances : [rectangleInstance1, rectangleInstance2],
            appearance : new MaterialAppearance({
                materialSupport : MaterialAppearance.MaterialSupport.ALL
            }),
            asynchronous : false,
            compressVertices : false
        });

        expect(function() {
            primitive.update(context, frameState, []);
        }).toThrowDeveloperError();
    });

    it('setting per instance attribute throws when value is undefined', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        primitive.update(context, frameState, []);
        var attributes = primitive.getGeometryInstanceAttributes('rectangle1');

        expect(function() {
            attributes.color = undefined;
        }).toThrowDeveloperError();

        primitive = primitive && primitive.destroy();
    });

    it('can disable picking when asynchronous', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : true,
            allowPicking : false
        });

        return pollToPromise(function() {
            primitive.update(context, frameState, []);
            if (frameState.afterRender.length > 0) {
                frameState.afterRender[0]();
            }
            return primitive.ready;
        }).then(function() {
            var attributes = primitive.getGeometryInstanceAttributes('rectangle1');
            expect(function() {
                attributes.color = undefined;
            }).toThrowDeveloperError();

            primitive = primitive && primitive.destroy();
        });
    });

    it('getGeometryInstanceAttributes throws without id', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        primitive.update(context, frameState, []);

        expect(function() {
            primitive.getGeometryInstanceAttributes();
        }).toThrowDeveloperError();

        primitive = primitive && primitive.destroy();
    });

    it('getGeometryInstanceAttributes throws if update was not called', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        expect(function() {
            primitive.getGeometryInstanceAttributes('rectangle1');
        }).toThrowDeveloperError();

        primitive = primitive && primitive.destroy();
    });

    it('getGeometryInstanceAttributes returns undefined if id does not exist', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance(),
            asynchronous : false
        });

        primitive.update(context, frameState, []);

        expect(primitive.getGeometryInstanceAttributes('unknown')).not.toBeDefined();

        primitive = primitive && primitive.destroy();
    });

    it('isDestroyed', function() {
        var p = new Primitive();
        expect(p.isDestroyed()).toEqual(false);
        p.destroy();
        expect(p.isDestroyed()).toEqual(true);
    });

    it('renders when using asynchronous pipeline', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance({
                flat : true
            })
        });

        frameState.camera.viewRectangle(rectangle1);
        us.update(context, frameState);

        return pollToPromise(function() {
            return render(context, frameState, primitive) > 0;
        }).then(function() {
            ClearCommand.ALL.execute(context);
            expect(context.readPixels()).toEqual([0, 0, 0, 0]);

            render(context, frameState, primitive);
            var pixels = context.readPixels();
            expect(pixels).not.toEqual([0, 0, 0, 0]);

            primitive = primitive && primitive.destroy();
        });
    });

    it('destroy before asynchonous pipeline is complete', function() {
        var primitive = new Primitive({
            geometryInstances : rectangleInstance1,
            appearance : new PerInstanceColorAppearance()
        });

        primitive.update(context, frameState, []);

        primitive.destroy();
        expect(primitive.isDestroyed()).toEqual(true);
    });
}, 'WebGL');

redpajama_set_name: RedPajamaGithub


text:
Windplant Noise Measurement and Control System (Australia)
Editor's note: The following is an announcement from the Australian Waubra Foundation. WTS.com considers it worthy of international circulation.
"A Breakthrough in Noise Control of Wind Turbines and Protecting the Health Effects on Nearby Residents"
Existing Wind Energy Projects (WEP) do cause serious health problems for people living nearby. This is a fact, despite the denial, dissembling and spin by the industry and a few of their supporters; and continuing and diverse personal attacks on us as the whistleblowers.
Some of the tactics of the WEP proponents and supporters are:
• to ignore on the ground evidence, as "anecdotal," whilst making no such inquiries themselves
• to declare there are no peer-reviewed studies (Including redefining that term in an attempt to dismiss some very good overseas work)
• to commission studies from their much favoured consultants; and of course
• mount personal attacks which merely demonstrate an unwillingness to engage the issues
The Waubra Foundation is the only Australian institution actually doing work in the field, accumulating objective data (as opposed to anecdotal), researching studies and technical papers from overseas (which are becoming very significant), and climbing step by step the monumental peaks of indifference and hostility to the fact that WEPs are a danger to health. We also persist in trying to have government and industry money allocated to independent research about the emanation of noise, the type of noise, the physical mechanisms of the health problems and safe setbacks of WEPs from homes and workplaces.
A problem is that independent research and peer review will take time, two to three years at a minimum; so people will continue to suffer from existing and new WEPs for several years. This continuing damage is unacceptable, an indication of a political system that accepts and promotes damage to rural Australians, a greedy and deceptive industry, and a cruel impost on part of what we thought was an equal society.
The Foundation has therefore drawn from experiences of other industries and written a Specification of A Noise Measurement and Control System for WEPs (see below). This specification has been discussed with Noise Management Services Pty. Ltd., an independent firm of Brisbane-based acousticians who are nearing completion of a very similar system of continuous noise measurement and data logging (AcouSTar) which would require very little additional software to complete a system to our specification.
The final system will be a very affordable addition to existing and new WEPs and will be robust enough for use in the field. It does not rely on research, but simply on control of noise to proven (by experience and regulation) acceptable levels within adjacent dwellings and workplaces. Nor will it rely on any uninformed and inadequate current wind turbine noise standards that are simply not doing the job of protecting people.
We will shortly be advising governments of the availability of this method of solving this inhumane health problem and of controlling this unstructured industry.
We recommend that people suffering from existing, and likely to suffer from new, WEP, demand from politicians, bureaucrats, developers and operators of WEPs that this Noise Measurement and Control System be incorporated in existing and new WEPs. We can fashion the systems, but we cannot create the wake-up "pressure" to make these things happen. It is up to you.
Attached is copy of the Specification and of information released so far on the AcouSTAR Concept. The Waubra Foundation will continue to work with Noise Management Services on this exceptional development. These documents are in the public domain.
Peter Mitchell
Waubra Foundation
Noise Measurement and Control System (NMACS)
(A) The Need
Wind Energy Projects (WEP) exist in all states of Australia. At this time, (July 2011 some 2000 turbines of 1.5 to 2.5 MW capacity are in operation. It is clear the Federal Government is determined on adding another 9000 MW by 2020 which might be satisfied by around another 4000 turbines.
Projects have mostly been located by the presence of strong winds and the proximity and access of power grids. Locations have not been sensitive to the presence of farmers and other householders. Nor can this be expected to change substantially.
Despite much denial, it is a fact that too many project neighbours are suffering a group of serious health problems that are linked to noise emissions by turbines and this will be worsened by the increasing use of larger turbines.
The noise forecasts done by consultants to the industry omit infrasound as do the planning guidelines and or regulations for WEPs. Complaints by sufferers are largely ignored and relevant bureaucracies have not been keen to find any fault by an industry so favoured by Government.
The purpose of this document is to develop a simple specification for a noise measurement and control system that will allow residents adjacent to WEPs to live in their homes in a healthy and essentially uninterrupted environment.
The Waubra Foundation has prepared this specification for businesses or organisations that may be interested in proposing one or more technical solutions that could quite quickly be trialed and deployed on existing and new WEPs.
(B) The System
The system is to be constituted in three parts:
1. to be set up inside homes, work buildings, schools, or places of assembly adjacent to wind turbines; this part encompassing the sound measuring, recording and transmitting equipment this "SMRT" unit must be moveable in and around the building in which it is housed. Multiple SMRT units will be required for a particular wind project.
2. The second unit is a receiving, recording and control (RRC) unit which will be located in an urban office environment operated by an independent authority tasked with control of wind project noise. A duplicate unit will be installed in the wind project control room located at the wind project.
3. The third unit will be located in the operators control room to effect the shutdown (or speed limit) and restart of specific turbines on instruction from the RRC unit at the independent authority's location.
(C) SMRT Unit
The SMRT is required to continuously measure sound levels in dB inside and outside buildings across frequencies from 0.5 to 20,000 hertz; (note: system designer to advise if there are cost or design benefits if bottom limit is higher, say 2 to 4 hertz).
The SMRT is to display, on demand or continuously, the measured sound levels across the desired frequencies sound levels on a suitable onsite desktop screen and to provide for onsite storage of X months of data.
The SMRT is to have the facility to transmit the measured data to multiple remote display and recording computers, one computer, the "RRC," being in the independent entities measurement and oversight room; another, the "ORRC" being in the operating or control room of the project operator,
(D) The RRC
The RRC is to accept, display on demand and store, the noise data from multiple (up to 50) remote SMRT units.
It will have the capability of storing maximum acceptable noise levels ("MANLs") for each location where a SMRT is installed.
The RRT must be competent to continuously compare incoming data from the linked SMRTs with the predetermined MANLs for each linked SMRT site (note the MANLs may be different for each SMRT site) and must be capable of altering the MANLs but only through a security device or password.
Should the RRT determine that the MANL for a particular (or multiple sites) has been breached, then it must "flag" the SMRT(s) where this has happened, and also the ORRC (where, in addition to the visual flag, the operator may decide to have an audible alarm activated).
Additionally the RRT shall be connected to the operator's turbine shutdown mechanism. If the recorded noise level exceeds the MANL, the RRT then the shuts down one or more previously selected turbines adjacent to the building where the measured sound has exceeded the MANL maximum allowable limits.
(E) The ORRT
In addition the ORRT unit needs to have the capability once the measured noise level falls below the MANL to restart the shutdown turbine(s) manually whilst ensuring the MANL is not breached. Provision for this to be effected automatically should also be considered by the system designer.
(F) Critical Elements
If the SMRT suffers a breakdown, then it is necessary to be able to manage the situation that may arise if noise levels become excessive during the offline period. The system designer is requested to consider the above situation and how to treat similar problems arising with the if the RRT is offline.
(G) Robust Hardware
Given the likely locations of SMRT units they need to be of robust construction.
(H) Application
The noise control system is to be designed so that it may be fitted to existing WEPs and built in to new WEPs.
Comment by CORT on 08/25/2011 at 8:58 am
I have met people who have been driven from their homes because of wind turbine noise. You don't suddenly abandon your home with no compensation to "make a point." Governments around the world are trivializing the noise impact on humans & animals to continue building noisemakers that produce very little power. Its all about $$$$$.
The mainstream press has bought the ruse and the public never hears the other side of the story. In Ontario, Canada. the boards of the wind developers are dominated by powerful former liberal politicians and related hangers-on.
Groups like yours have an uphill battle and I'll make sure my email list gets this post.
"Truth needs no laws to support it. Only lies require laws to force them upon the public"