text:
Looking For Heather Reunite
Unsigned Canadian rock band Looking For Heather has reunited after a five year hiatus and tentatively plans to release a new 11 song album entitled "Forever Starting Over" in March of 2009.
Unsigned Canadian rock band Looking For Heather has reunited after a five year hiatus. They tentatively plan to release a new 11 song album, Forever Starting Over, in March of 2009. Lead singer Jeff Gutteridge has been fronting another band, Red Light Green, for the past few years during the hiatus.The band's reunion was something that both Gutteridge and his former band mate, bassist Jay Bowes, always knew would happen. It wasn't until Gutteridge's mother was diagnosed with cancer that he began to reconsider some of the choices he'd made in his life. "In March, my mom fell ill with cancer and that got me thinking about what was important in life. I reconnected with Jay and we started hanging out and playing songs for each other, the way we used to," Gutteridge told Alternative Addiction. "My mom lost her battle with cancer in June, and that really put a focus in us to just make some uplifting music and go for it one more time." Gutteridge joked that Forever Starting Over is an apt title for the album, as it sums up their career. He contributed some songs that he had originally written for his other band. He and Looking For Heather guitarist Randy Solski were both members of Red Light Green. "Jay also has some awesome songs that will be on this album," said Gutteridge. "This is very much a collaborative effort of all three of us." Looking For Heather debuted on Alternative Addiction in 2002, and had the song "Good To Feel Down" featured on the Addiction V.1


text:
Believe in the beauty of your dreams. They are our realities in waiting.
CHANGE HAS TRULY COME (SA BAYAN NI JUAN)!
An assertion that the Duterte camp successfully used to anchor their campaign platform on was the country's supposed need for a drastic change.
Then presidential candidate Duterte capitalized on the collective frustration, hopelessness, and pent-up anger of many Filipinos over the previous administrations' alleged ineptitude and lack of compassion for the downtrodden and the most marginalized members of society. He managed to convince the electorate that the country was suffering because it had been governed for the longest time by the wealthy oligarchs and traditional politicians, whose only interest was to protect their wealth and other personal agenda. He was able to manipulate us into thinking that he was one of the disadvantaged masses, one of the ordinaryong Pilipino, and that he was our last hope –our Messiah– to that ever-elusive change.
Change Is Coming. That was their battle cry.
Eight months in office and, alas, the Duterte administration can truthfully claim that change has indeed come sa bayan ni Juan.
Photo credit: pinoyHS and Change Scamming
Higher excise taxes
As part of Pres. Duterte's many campaign promises, Filipinos earning less than ₱3 million annually will enjoy a tax break. However, to compensate for the loss in the government revenue that that would entail, the Dep't. of Finance proposes higher excise taxes on fuel and automotive, VAT on OFW remittances, and an expanded VAT from 12% to 14%. Note that the net effect of the hike in excise taxes in oil would far outweigh the impact of the lowering of personal income taxes, according to Sen. Chiz Escudero.
Higher SSS monthly premiums
To finance another of Pres. Duterte's campaign promises of a ₱2,000 across-the-board increase in the monthly pension of SSS pensioners (the implementation of which would seriously compromise or could even result to the eventual bankruptcy of the said benefit system – the very reason why the Aquino administration vetoed it, in the first place), SSS was forced to resort to the alternative solution of increasing the monthly premiums of its active members.
Peso depreciation
Our peso continues to weaken and, at its present 50.395 Ph₱ = 1 US$ exchange rate, it is hovering at its lowest level in a decade. The peso shed 5.2%, making it the worst performing currency in Southeast Asia last year. This peso devaluation, that earned for our currency the title "Asia's Ugly Duckling of the Year," has a domino effect.
Higher government debt-servicing
Higher cost of foreign goods and services
Inflation in the prices of domestic products
Soaring oil prices
Prices of petroleum products have been steadily rising since Pres. Duterte assumed office. Upon the opening of 2017 alone, LPG had a big-time price hike of ₱4.15 – ₱4.18/kg, while per liter pump prices of diesel increased by ₱0.60, gasoline by ₱0.70, and kerosene by ₱0.55. As an inevitable result, minimum transpo fare, prices of basic commodities and electricity rate followed suit.
Sharp drop and volatility of the Philippine stock market index
The Semiconductors and Electronics Industry in the Philippines (SEIPI) reported that orders amounting to $50 million were lost to one company when President Duterte made angry statements directed at President Obama in connection with the former US president's criticisms of the Duterte government's war on illegal drugs.
The country is considered a major money-laundering hub
According to the 2017 International Narcotics Control Strategy Report by the Bureau of International Narcotics and Law Enforcement Affairs, the Philippines is now "a major hub for money laundering and a gateway for transnational drug trafficking due to the loopholes and limitations in the banking system and the lack of jurisdiction of the Anti-Money Laundering Council over financial transactions."
Camp Crame is now Camp Crime
Under the present administration, South Korean businessman Jee Ick-joo was abducted and robbed by policemen and, eventually, murdered inside Camp Crame, the PNP headquarters. Jee (along with at least 11 more) is said to be a victim of Tokhang for ranson.
The execution by CIDG operatives of Mayor Rolando Espinosa Sr. and another inmate
According to the result of the NBI's "exhaustive investigation," the late Albuera mayor was a victim of a rubout, and not of a shootout as claimed by the raiding team. Police Superintendent Marvin Marcos, the raiding team leader, was relieved by Gen. Bato following reports of the former's involvement in drug operations. However, Marcos was ordered reinstated by no less than the president a few days before the rubout.
Duterte's "War on Drugs" is a subject of worldwide condemnation
Under the present administration's bloody all-out war against drugs, nearly 8,000 people are already killed in just a span of eight months. Oplan Tokhang, the anti-illegal drugs program of the PNP, is said to be unconstitutional and violative of basic human rights – the formulation of the drug watch list (prepared by the local government officials, inclusion therein can be based on hearsay, rumor, rivalry or mere alliance with a drug offender –with little or no verification), the surrender forms (which provide only two choices –to confess as either a drug addict or a drug pusher, or to not sign at all, which could lead to deadly consequences), and the operation itself (cops routinely busting down doors in the middle of the night and then killing unarmed drug suspects in cold blood; cops stealing from the victims' homes; cops planting evidence; and cops falsifying incident or spot reports). This government campaign has also encouraged, if not sponsored, killings perpetrated by motorcycle-riding masked men. According to Amnesty International, Duterte's War on Drugs has created an economy of murder in the country and is, in fact, a war on the poor. Due to the internal cleansing that the PNP administered in the wake of the Jee Ick-joo controversy, the campaign was temporarily suspended. It has now made a comeback, though, under the new name, "Oplan Double Barrel, Reloaded" which, according to Gen. Bato Dela Rosa, will be more extensive, aggressive and well-coordinated.
An identified drug lord is set free
According to the NBI, the Cebu-based businessman Peter Lim is the same Peter Lim that Kerwin Espinosa implicated in his senate hearing testimony as one of the top 3 drug lords operating in the country. That Peter Lim is also the same person who went to Malacanang to meet with his kumpadre, Pres. Duterte. After that meeting, he walked out of the palace unscathed and is now believed to have fled the country with his family.
Ferdinand Marcos is now a hero
The world's second most corrupt leader in history under whose dictatorial rule, the country saw the darkest and most oppressive days, is now buried at the hallowed grounds of the Libingan Ng Mga Bayani. Ferdinand Marcos is the best president this country has ever had, according to Pres. Duterte.
Ex-Pres. Gloria Macapagal Arroyo is an innocent woman
The $329.48-million ZTE broadband network scam. The ₱728-million fertilizer scam. The Jose Pidal bank accounts. The Northrail project. The $14-million IMPSA power plant project. The ₱1.3-billion poll automation project. The Macapagal Boulevard project.
According to IBON Foundation, Gloria Arroyo may actually be "the most corrupt president the country has ever had, based on amounts lost to the Filipino people in just six corruption scandals over her seven years in office." A few days after Duterte's inauguration as the President of the country, Arroyo has been released from her hospital detention. She is now a free woman –sans the neck brace–, serving as a Deputy Speaker in the House of Representatives.
SolGen seeks the reversal of the Pork Barrel Queen conviction
Solicitor Gen. Jose Calida recommended the acquittal of Janet Lim Napoles for the crime of serious illegal detention of whistle-blower Benhur Luy — a move that the president fully supports. Napoles' three lawyers (Stephen David, Lanee Cui-David and Bruce Rivera) happen to be staunch supporters of Pres. Duterte. Malacanang earlier said that it's possible to turn Napoles into a state witness if she's found to be the least guilty.
Sen. De Lima is arrested and thrown in jail
Pres. Duterte publicly accused the senator of having extorted money from the big-time drug lords in Bilibid to finance her senatorial bid. When the administration could not find a speck of evidence that might hold water in court, they made do with the conflicting testimonies of convicted drug lords and an old lover scorned (all of whom, like Duterte, have a score to settle with De Lima). This is believed to be an apparent effort to silence his most vocal and tenacious critic and to make an example out of her for the benefit of the other government officials who maintain an adversarial position on various government policies and programs.
The Vice-Pres. is humiliated, at every turn, by her president
Duterte once said that the inappropriate jokes he makes during speeches about VP Leni are necessary to make his audience laugh. He used to tease her about her relationship status, the short skirt she once wore during a cabinet meeting, and her nice knees and legs that he and another cabinet member ogled. However, the proverbial straw that broke the camel's back was when the president instructed Robredo (via text!) to desist from attending all future cabinet meetings.
The DFA Chief could be jailed for perjury
During a Commission on Appointments hearing, Foreign Affairs Sec. Perfecto Yasay, Jr. declared under oath that he was never an American citizen. A document he himself provided to CA, however, told a completely different story. According to said document, Yasay was granted US citizenship on November 26, 1986 and had it renounced on June 28, 2016, a few days before he took over his current appointive position.
Senators who vocally oppose the administration are stripped of their key posts
With the clear intent to marginalize, alienate and, eventually, silence the officials who dare question or even show resistance to the administration's programs and policies, Senators Franklin Drilon, Bam Aquino, Kiko Pangilinan and Risa Hontiveros were ousted from their top Senate posts and committee chairmanships. Said senators have been outspoken with their opposing positions regarding major issues such as extrajudicial killings, the burial of the late strongman Ferdinand Marcos at the Libingan ng mga Bayani, the lowering of the age of criminal liability, the re-imposition of the death penalty, and the re-opening of the Senate investigation on the Davao Death Squad. A few months earlier, Sen. De Lima was also ousted from her Justice committee chairmanship.
Slashed budget for calamity funds
Under the 2017 ₱3.35 trillion National Budget that Pres. Duterte signed, only ₱15.7 billion is allocated for the Calamity Fund. This is ₱23-billion lower than the ₱38.9 billion allocation in 2016 under the Aquino administration. In stark contrast, the Office of the President gets a whopping ₱20 billion allocation —a ₱17 billion jump from its 2016 budget.
The death of Project NOAH
The country's primary disaster risk reduction and management program will be shut down because the government cannot provide additional funding to ensure the extended implementation of its existing programs. Thanks to the University of the Philippines' decision to adopt Project Noah, a new lease on life will be given to the project that has been a lifesaver for millions of Filipinos. Project NOAH was named in August 2016 as the Top Smart City Initiative for Public Safety in the IDC Smart City Asia Pacific Awards.
The collapse of peace talks between the government and the communist rebels
Another one of Duterte's promises is the immediate release of all the political prisoners. The communist rebels had no reason to doubt the president's sincerity. After all, Duterte was openly identifying himself as a socialist and leftist. He also maintained close links with the NDF and NPA when he was still the mayor of Davao. But after the 19 NDFP peace consultants who participated in the first round of peace talks in Norway were freed, no other political prisoners were set free. The more than 400 remaining prisoners, according to the President, will stay behind bars. They will serve as his "last card" in the peace negotiations with the NDFP, he said —a statement that caused a rift in the two parties' relationship and eventually led to Duterte's orders to scrap the negotiations and to arrest the "spoiled-brat Reds" who joined the peace talks.
Lowered age of criminal responsibility from 15 to 9 years old
Instead of strengthening the current Juvenile Justice and Welfare Act (RA 9344), providing more resources for the government agencies and local government units to effectively rehabilitate children in conflict with the law, and imposing stiffer penalties on parents who neglect their children and on those who exploit them to commit crimes, as Ifugao lawmaker Teodoro Baguilat suggested, House Speaker Pantaleon Alvarez and his cohorts in Congress believe that meting out stringent punishment to children as young as 9 years old would result to a dramatic drop in the country's criminality rate. The said measure, which is aligned with the Duterte administration's war on drugs, is believed to be anti-poor, a blatant violation of our commitment to the UN Convention on the Rights of the Child, and has the potential to permanently damage the children concerned.
The reimposition of death penalty
Despite our flawed and corrupt judicial and law-enforcement systems, the Duterte administration deems it best to revive capital punishment to support their anti-drug campaign. To make the bill "palatable" to more lawmakers, however, a number of crimes will be removed from the proposed bill. These crimes include plunder (the amassing by a public official of ill-gotten wealth worth over ₱50 million), treason and rape. Under this bill, a poor 9-year-old child exploited to commit a drug-related crime might find himself on death row, while an elected official who would steal millions –shamelessly, wantonly and insatiably—from the public coffers but would be defended by a top-notch trial lawyer, could walk away as a Congresswoman!
Chinese installations in the West Philippine Sea
Pres. Duterte did not ride a jet ski to plant our flag on the highly-contested Spratly islands just as he promised during the campaign. Instead, he went to China to kiss the ass of Chinese Pres. Xi Jinping by declaring for everyone to hear that, along with Russia and China, there are now three of us against the world. It didn't matter one iota that China is the source of most of the illegal drugs in the Philippines. And now, apparently, it doesn't matter either that the world's biggest bully-nation is almost done with its project of building 7 artificial islands in the West Philippine Sea and putting on them two dozen concrete structures that "appear designed to house long-range surface-to-air missiles." Last year, China had already built military-length airstrips on Spratly Islands. All these happened despite the Hague tribunal's ruling on the Philippines- China dispute over the West Philippines Sea. Just recently, China was reported to have been undertaking a "secret undersea exploration" in the Benham Rise area. (Benham Rise is a 13-million-hectare undersea region believed to be fuel-rich and was awarded to the Philippines by the United Nations in 2012.) Duterte revealed that he had a prior agreement with China regarding the said exploration — an "agreement" that his DND Secretary, apparently, was not privy to. Previously, Chinese survey ships were also seen off Scarborough Shoal and Reed Bank surveying the sea bed for possible mineral deposits.
Rampant Human Rights violations
Human Rights Watch, an international non-governmental organization that conducts research and advocacy on human rights, accuses and holds Pres. Duterte and other senior officials responsible for being directly behind the killings of mostly poor, urban people. It also alleged the National Police forces of "working in tandem with masked gunmen — casting doubt on the government's claims that the majority of killings have been committed by vigilantes or rival drug gangs."
The abuse of the internet to spread lies and create dissension
With the dramatic growth in the number of internet users in the country, the candidates in the last national elections saw and capitalized on the great potential of influence that social media could wield among the voters. The cyberspace has become a free-for-all battleground. We have all seen (and have even been victims of) the rise of paid trolls and propagandists, rabid cult followers, perverts, and merciless savages on the internet.
The revision of history
Intent on reclaiming lost glory and power, the Marcos family, their die-hard loyalists and shameless cronies launched a deliberate, premeditated and systematic campaign to revise the country's history. Through clever deception, half-truths and outright lies, they managed to delude more than 14 million Filipinos (the number of votes he was able to secure during his Vice-Presidential bid) into thinking that Martial Law, as we knew it, never existed. It didn't hurt their cause that Pres. Duterte openly paves the way for the family's comeback to Malacanang (Click this to read their arguments and claims and how best to quash them.)
The desensitization of the Filipino people
We used to pride ourselves for being Asia's most predominantly Christian country, but with the phenomenal rise of the internet and Duterte's ascension to the presidency, we have shown the world that we, as a nation, have grown apathetic, callous even, in dealing with the various social and political issues plaguing our country today. Also, the use of demeaning labels, such as Dutertards and Yellowtards, has become alarmingly familiar.
The demise of diplomacy and integrity among government officials
When our honorable Congressmen contemplated and almost allowed the showing of a sex video in the Lower House, when the House Speaker threatened –and actually acted on that threat — Congressmen to strip them of their House leadership titles if they oppose the bills the administration is pushing, when the opposition senators were stripped of their key Senate posts and committee chairmanship positions, when PCOO Sec. Martin Andanar called the anti-Marcos protesters "temperamental brats," and when Duterte's appointive officials get into the habit of hurling unsubstantiated accusations, misleading allegations and irresponsible statements to cover their boss' ass, well, we know that the country is in deep trouble.
Mocha is now a legit source of information
With almost 5 million highly-engaged Facebook followers that take her every word as gospel truth, Mocha Uson has strategically marketed herself as the most powerful voice of the Die-hard Duterte Supporters (DDS). Her position of influence has been cemented when the president gave her a government position, when Philippine Star gave her her own column, and when DZRH gave her a tv show. So when she shares fake news or links from dubious sources, or posts alternative facts, or incites online fights, who is to stop her gullible followers from following her lead?
An unconventional leader hailed as the best president in the solar system
Dueterte's work hours are from 1pm to early morning. He hates reading prepared speeches, preferring to talk freely and extemporaneously and, often, in visceral language. With the media in attendance, he alternately (depending on his mood) wolf-whistles, hurls angry expletives, makes fun of his VP, throws around preposterous promises, spreads gossip, claims criminal acts in the past, cries like a baby, and incites murderous violence among his supporters. He wants to pulverize criminality but he is linked to the Davao Death Squad, if we are to believe the testimonies of Matobato and Lascanas. He claims to abhor corruption but the company he keeps is comprised largely of corrupt officials and shady characters. He also refuses to open his bank accounts amid allegations that he has had ₱2.2 billion in bank deposits. He vows to crush the illegal drug trade in the country but he protects the likes of Peter Lim, Supt. Marvin Marcos and the other scalawags in the police force. He chooses his appointees not based on merit but on patronage. He promised to be a unifying president but he is now promoting divisiveness among us all.
President Duterte will stay in Malacanang until his term ends in another 5 years and 4 months. So, mga kababayan, let's all fasten our seatbelts. It's going to be one heck of a bumpy ride!
http://news.mb.com.ph/2017/01/06/proposed-fuel-tax-hike-draws-flak/
http://newsinfo.inquirer.net/861441/sss-premium-hike-against-the-law-says-drilon
https://www.philippinesplus.com/2017/02/22/philippine-peso-continues-weaken-us-dollar/
https://www.bloomberg.com/news/articles/2017-03-03/asia-s-ugly-duckling-of-the-year-is-the-peso-thanks-to-duterte
http://www.philstar.com:8080/business/2016/11/30/1648699/peso-depreciation-causes-and-implications
http://www.canadianinquirer.net/2017/03/06/us-tags-ph-as-major-money-laundering-hub/
http://news.abs-cbn.com/focus/01/20/17/tokhang-for-ransom-timeline-of-south-korean-businessmans-abduction-killing
http://www.rappler.com/nation/154717-nbi-mayor-espinosa-death-rubout
http://www.amnestyusa.org/research/reports/if-you-are-poor-you-are-killed-extrajudicial-executions-in-the-philippines-war-on-drugs
http://news.abs-cbn.com/news/07/16/16/duterte-meets-with-alleged-top-drug-lord-peter-lim
http://www.gmanetwork.com/news/story/554350/news/nation/marcos-the-best-president-ever-in-duterte-s-book
http://www.gmanetwork.com/news/story/83278/news/nation/ibon-corruption-scandals-under-arroyo-cost-filipinos-p7-3b
http://www.rappler.com/newsbreak/investigative/161513-duterte-solicitor-general-acquit-janet-napoles-illegal-detention-benhur-luy
http://newsinfo.inquirer.net/826685/5-witnesses-vs-de-lima-seek-pardon
http://www.rappler.com/nation/151751-duterte-teases-robredo-yolanda-anniversary
http://www.gmanetwork.com/news/story/591187/news/nation/evasco-s-text-message-asking-vp-robredo-not-to-attend-cabinet-meetings
http://news.abs-cbn.com/news/02/28/17/yasay-may-be-held-liable-for-perjury-lacson
http://www.philstar.com/headlines/2017/02/28/1676468/lp-senators-stripped-top-panel-posts
http://news.abs-cbn.com/focus/12/22/16/disastrous-budget-duterte-admin-slashes-phs-calamity-fund-by-half
http://www.philstar.com/science-and-environment/2017/02/02/1668037/govt-shuts-down-project-noah
http://newsinfo.inquirer.net/868697/duterte-calls-reds-spoiled-brats-orders-arrest-of-freed-leaders
http://cnnphilippines.com/news/2017/02/01/house-speaker-avarez-lowering-minimum-age-of-criminal-responsibility.html
http://www.rappler.com/nation/162716-rape-plunder-treason-removed-death-penalty-bill
http://news.abs-cbn.com/news/02/22/17/china-finishing-west-philippine-sea-buildings-that-could-house-missiles
https://www.hrw.org/news/2017/03/02/killing-squads-inside-philippines-war-drugs
http://www.update.ph/2017/03/dnd-mulls-more-patrols-off-benham-rise/15755
Posted on March 7, 2017 March 16, 2017 by Lorelei Baldonado-AquinoPosted in UncategorizedTagged Amnesty International, Blog, Change is coming, Change Scamming, Davao Death Squad, DDS, death penalty in the Philippines, Duterte's campaign promises, Human Rights Watch, Lascanas, Lorelei Aquino, lowered age of criminal responsibility, Matobato, Mocha Uson, Mom on a Mission, Oplan Double Barrel Reloaded, Oplan Tokhang, Philippine politics, Philippines, Rodrigo Duterte, Tokhang for Ransom, War on drugs, West Philippine Sea.
Previous Previous post: WHEN MY HUSBAND'S IDOL LEFT HIM
Next Next post: HOW TO SECURE YOUR CHILDREN'S SAFETY AGAINST ONLINE DANGERS
6 thoughts on "CHANGE HAS TRULY COME (SA BAYAN NI JUAN)!"
Rene Aberin says:
why did you not include "earthquake" as one of Du30's fault??
Lorelei Aquino says:
That could be easily arranged but, unlike many of the president's followers, I base my claims and articles on verifiable facts. Why, have you found anything in this written piece that is not sufficiently supported by facts?
Juan Valverde says:
Lorelei… Very good article!
Thank you. It's just a shame that some people choose to attack me and my articles simply because I have the same last name as that of the former president's. 😦
Rene… you are upset when confronted with the truth… hindi ba? Well, you can chose between continuing to live in your world of precarious fantasy, or coming back down to Planet Earth. Bahala ka…
Pingback: THE ART OF CONDITIONING THE FILIPINOS' MINDS – Mom On A Mission
Lorelei Baldonado-Aquino
THE 44-YEAR-OLD KOLEHIYALA
LALA, OUR CUM LAUDE!
DIGONGMYLABS, YOU'RE NOTHING BUT A WIMP!
WHEN OUR CHILD'S WORLD CRUMBLES
WHAT, YOU'RE STILL SINGLE!?!
JUST A HOUSEWIFE?!?!
A PLETHORA OF ANIMALS IN GOVERNMENT
THE KEY TO FINDING YOUR MR. RIGHT
MY PARENTS' AGONY DUE TO HAZING
THE PSYCHOPATH'S SYCOPHANTS (Part 1)
I consider myself a lover of life, a dreamer, a storyteller a reader, a self-deprecating comedienne, a struggling writer, a student of experiences, an adventure-seeker, a child at heart, a free-thinker in awe of the world, an investor on memories, a hopeless romantic and, now, a blogger!

redpajama_set_name: RedPajamaCommonCrawl


text:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Evo C++ Library v0.5.1: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>

<link href="doxygen.css" rel="stylesheet" type="text/css" />

Evo C++ Library v0.5.1

evo

TypeId

Get

TypeId::Get< T > Member List

This is the complete list of members for TypeId::Get< T >, including all inherited members.

ENUM	TypeId::Get< T >	static

Id typedef	TypeId::Get< T >

<address class="footer">
Generated on Tue May 7 2019 18:17:44 for Evo C++ Library v0.5.1 by

 1.8.13
</address>

redpajama_set_name: RedPajamaGithub


text:
« The fighting -- er, thinking -- Obamas | Main | Sounds like plagiarism to us... »
Prank quote makes its way into the UK press
We claimed in two articles in The smoking issue of G2 on May 14 that the health secretary, Patricia Hewitt, had said it had been "deplorable" that Faye Turney, one of the navy hostages held in Iran, had been shown on television smoking a cigarette because "This sends out completely the wrong message to our young people." In fact the quote was a fabrication published in the Sunday Telegraph on April Fools' day. That paper subsequently apologised for the unintended publication of the statement in other papers as being genuine, as did the Times, and so do we (Is the ban a good idea? No, page 6, G2, and Filthy habit, page 28, G2). Link
This is the original Sunday Telegraph story with the prank quote and it has still not been corrected online, though the writer did publish an apology in his subsequent column.
May 21, 2007 at 08:00 AM in Major Errors, Newspapers | Permalink


text:
NSYNC, The Backstreet Boys, & Boyz II Men unite for "The After Party" Las Vegas Residency
Some members of NSYNC, Backstreet Boys & Boyz II Men are performing in Las Vegas for a string of shows.
Joey Fatone, AJ McLean, Nick Carter, and Wanya Morris are set to perform at the Venetian on August 19-22.
"The After Party" will be available for people to see during the summer and tickets are available through The Venetian.
Joey Fatone said, "Being on stage has always been a part of all of us so having the opportunity to create a show with the best songs of all our groups has been a lot of fun. Working together has brought up so many memories and I'm excited to see how the fans react to seeing us all on stage together."
AJ said, "I promise an incredible night of wild surprises, this is an absolute must-see!"


text:
"""Contains classes and functions for doing a single-machine batch all-reduce.

An all-reduce is taking the reduction (typically a sum) of a list of tensors,
each on a different device. The result must end up back on each device, which is
where the word "all" comes from. In summary, each device starts with a single
tensor, and ends up with the reduction of all tensors.

A batch all-reduce is doing several independent all-reduces. When doing a batch
all-reduce, care is taken to evenly distribute the reduction computations
across devices and inter-device tensor transfers across device links.
"""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

# TODO(reedwm): Support distributed all-reduces in this file.
# TODO(reedwm): Merge this code with allreduce.py, which contains some batch
# all-reduce code that this file calls. allreduce.py also supports distributed
# batch-reduce while this file only supports single-machine all-reduce.

import abc

import six
import tensorflow.compat.v1 as tf
from cnn_quantization.tf_cnn_benchmarks import allreduce
from cnn_quantization.tf_cnn_benchmarks import constants
from tensorflow.python.ops import data_flow_ops

def _all_reduce_using_copy(tensors_across_devices, use_mean):
  """Does an all-reduce of a list of tensors by copying to the current device.

  The tensors are copied to the current device and then reduced.

  Args:
    tensors_across_devices: A list of tensors, each on a different device.
    use_mean: Whether to take the mean of the tensors instead of a sum:
  Returns:
    A reduced tensor on the current device.
  """
  reduced_tensor = tf.add_n(tensors_across_devices)
  if use_mean:
    reduced_tensor *= 1 / len(tensors_across_devices)
  return reduced_tensor

@six.add_metaclass(abc.ABCMeta)
class BatchAllReduceAlgorithm(object):
  """Represents an algorithm for performing a batch all-reduce operation."""

  def batch_all_reduce(self,
                       all_device_tensors,
                       num_splits,
                       compact_tensors,
                       defer_tensors,
                       xla_compile=False):
    """Performs a batch all-reduce.

    The reduction done is a sum.

    `all_device_tensors` is a list of list of tensors that will be batch
    all-reduced. All tensors within a single inner list must be on the same
    device. The nth element in each list, for any n, will be reduced together.
    The return value is in the same form as `all_device_tensors`, except that
    each tensor is reduced.

    For example, if `all_device_tensors` is:
    [[ A,  B  ],     # A and B are on GPU 0
     [ C,  D  ]]     # C and D are on GPU 1

    Then the return value will be:
    [[ A+C,  B+D ],  # These two tensors are on GPU 0
     [ A+C,  B+D ]]  # These two tensors are on GPU 1

    Arguments:
      all_device_tensors: A list of list of tensors. `all_device_tensors[i][j]`
        is a tensor where `i` is the device index and `j` is the tensor index.
      num_splits: If not None, tensors will be concatenated and split into this
        many pieces during the all-reduce, then split back into their original
        shapes afterwards. Has no impact on correctness and can improve
        performance. Requires all tensors to be the same type.
      compact_tensors: If True, tensors are casted to fp16 before being all-
        reduced. Improves performance, but hurts numerical stability.
      defer_tensors: If True, every time the return value
        `reduced_all_device_tensors` is evaluated, the result will be the
        reduced tensors values of `all_device_tensors` from the previous session
        run instead of the current session run, or zero on the first session
        run. This can improve performance. When training neural networks,
        deferring gradients often does not harm training, so this can be used to
        improve performance.
      xla_compile: If True, use XLA to compile gradients packing and unpacking
        ops.

    Returns:
      reduced_all_device_tensors: A list in the same form as
        `all_device_tensors`, except each tensor has been reduced.
      warmup_ops: A list of ops needed to be run once before the all-reduce can
        occur.
    """

    # Before all-reducing tensors, we do several preprocessing functions that
    # can speed up the all-reduce. We undo these functions after all-reducing
    # the tensors.

    # all_device_packed_tensors is a 2-d list of tensors indexed by
    # [device_id][tensor_id], holding packed tensors from all devices involved
    # in all-reduce.
    all_device_packed_tensors = []

    # all_device_warmup_ops is a 2-d list of ops indexed by
    # [device_id][tensor_id], holding warmup_ops that need to be run once before
    # all-reduce can occur.
    all_device_warmup_ops = []

    # all_device_put_ops is a 2-d list of ops indexed by
    # [device_id][tensor_id], holding put ops for deferred tensors. They will be
    # called in each all-reduce step automatically due to control dependency.
    all_device_put_ops = []

    # packers is a list of _TensorPacker, one for each device involved in
    # all-reduce.
    packers = [
        _TensorPacker(num_splits, compact_tensors) for _ in all_device_tensors
    ]

    for packer, device_tensors in zip(packers, all_device_tensors):

      def pack_single_device_tensors(packer=packer,
                                     device_tensors=device_tensors):
        """Pack gradient tensors of a device."""
        packed_tensors = packer.maybe_concat_tensors(device_tensors)
        packed_tensors = packer.maybe_compact_tensors(packed_tensors)
        # When xla_compile=False, defer tensors after concat for better
        # performance.
        if defer_tensors and not xla_compile:
          packed_tensors, put_ops, warmup_ops = defer_single_device_tensors(
              packed_tensors)
          all_device_put_ops.append(put_ops)
          all_device_warmup_ops.append(warmup_ops)
        packed_tensors = packer.maybe_split_tensors(packed_tensors)
        return packed_tensors

      with tf.device(device_tensors[0].device):
        if xla_compile:
          packed_tensors = tf.xla.experimental.compile(
              pack_single_device_tensors)
          # When xla_compile=True, intermediate tensors in packing process are
          # not materialized. Thus, we defer tensors after packing process is
          # completed instead of in the middle of it.
          if defer_tensors:
            packed_tensors, put_ops, warmup_ops = defer_single_device_tensors(
                packed_tensors)
            all_device_put_ops.append(put_ops)
            all_device_warmup_ops.append(warmup_ops)
        else:
          packed_tensors = pack_single_device_tensors()

      all_device_packed_tensors.append(packed_tensors)

    # Perform all-reduce on packed tensors.
    all_device_tensors = self._do_batch_all_reduce(all_device_packed_tensors)

    all_device_unpacked_tensors = []
    for packer, device_tensors in zip(packers, all_device_tensors):

      def unpack_single_device_tensors(packer=packer,
                                       device_tensors=device_tensors):
        """Unpack gradient tensors of a device."""
        unpacked_tensors = packer.undo_maybe_split_tensors(device_tensors)
        unpacked_tensors = packer.undo_maybe_compact_tensors(unpacked_tensors)
        unpacked_tensors = packer.undo_maybe_concat_tensors(unpacked_tensors)
        return unpacked_tensors

      with tf.device(device_tensors[0].device):
        if xla_compile:
          unpacked_device_tensor = tf.xla.experimental.compile(
              unpack_single_device_tensors)
        else:
          unpacked_device_tensor = unpack_single_device_tensors()

      all_device_unpacked_tensors.append(unpacked_device_tensor)

    # Note: There is no undo operation for deferring tensors. But we do need to
    # call _add_put_op_control_deps at the end if we deferred the tensors.
    if defer_tensors:
      all_device_unpacked_tensors = _add_put_op_control_deps(
          all_device_unpacked_tensors, num_splits, all_device_put_ops)

    return all_device_unpacked_tensors, all_device_warmup_ops

  @abc.abstractmethod
  def _do_batch_all_reduce(self, all_device_tensors):
    """Performs a batch all-reduce.

    Unlike `self.batch_all_reduce`, this does not do any preprocessing of the
    tensors.

    Args:
      all_device_tensors: A list of list of tensors. `all_device_tensors[i][j]`
        is a tensor where `i` is the device index and `j` is the tensor index.
    Returns:
      reduced_all_device_tensors: A list in the same form as
        `all_device_tensors`, except each tensor has been reduced.
    """
    pass

class CopyToDeviceAlgorithm(BatchAllReduceAlgorithm):
  """An algorithm that copies tensors to be reduced to a specific device."""

  def __init__(self, devices_to_reduce_on, use_mean=False):
    self._devices = devices_to_reduce_on
    self._use_mean = use_mean

  def _do_batch_all_reduce(self, all_device_tensors):
    reduced_tensors = []
    for i, tensors_across_devices in enumerate(zip(*all_device_tensors)):
      with tf.device(self._devices[i % len(self._devices)]):
        reduced_tensor = _all_reduce_using_copy(tensors_across_devices,
                                                self._use_mean)
        reduced_tensors.append(reduced_tensor)
    # The tensors will be brought back to each device once they are used.
    return [reduced_tensors] * len(all_device_tensors)

class HierarchicalCopyAlgorithm(BatchAllReduceAlgorithm):
  """An algorithm that uses hierarchical copies. This is only optimized for
  eight devices connected in NetworkTopology.DGX1 or NetworkTopology.GCP_V100
  topology.
  """

  def __init__(self, network_topology):
    """Initializer for HierarchicalCopyAlgorithm.

    Args:
      network_topology: An instance of Enum class constants.NetworkTopology.
    """
    self._network_topology = network_topology

  def _do_batch_all_reduce(self, all_device_tensors):
    avail_devices = [device_tensors[0].device
                     for device_tensors in all_device_tensors]
    reduced_tensors = []
    num_devices = len(avail_devices)
    group_size = num_devices // 2
    for i, tensors_across_devices in enumerate(zip(*all_device_tensors)):
      group_0_main_device, group_1_main_device = self.__get_main_devices(
          i, num_devices)
      if group_0_main_device < group_size:
        group_0_begin = 0
        group_1_begin = group_size
      else:
        group_0_begin = group_size
        group_1_begin = 0

      # Reduce the first group.
      group_0_tensors = tensors_across_devices[group_0_begin:
                                               group_0_begin + group_size]
      with tf.device(avail_devices[group_0_main_device]):
        group_0_reduced_tensor = _all_reduce_using_copy(group_0_tensors, False)

      # Reduce the second group.
      group_1_tensors = tensors_across_devices[group_1_begin:
                                               group_1_begin + group_size]
      with tf.device(avail_devices[group_1_main_device]):
        group_1_reduced_tensor = _all_reduce_using_copy(group_1_tensors, False)

      # Reduce between the groups.
      with tf.device(avail_devices[group_0_main_device]):
        total_reduced_tensor = _all_reduce_using_copy(
            [group_0_reduced_tensor, group_1_reduced_tensor], False)

      # Broadcast the result back into the root of each group.
      with tf.device(avail_devices[group_0_main_device]):
        group_0_reduced_tensor_bcast = tf.identity(total_reduced_tensor)
      with tf.device(avail_devices[group_1_main_device]):
        group_1_reduced_tensor_bcast = tf.identity(total_reduced_tensor)

      reduced_tensors_bcast = []
      for j in range(len(tensors_across_devices)):
        with tf.device(avail_devices[j]):
          # Broadcast the result back to each member in the group from the root.
          if (group_0_main_device < group_size) == (j < group_size):
            src_device_tensor = group_0_reduced_tensor_bcast
          else:
            src_device_tensor = group_1_reduced_tensor_bcast
          reduced_tensors_bcast.append(tf.identity(src_device_tensor))

      reduced_tensors.append(reduced_tensors_bcast)

    reduced_tensors = list(zip(*reduced_tensors))
    return reduced_tensors

  def __get_main_devices(self, tensor_index, num_devices):
    """Returns the pair of main devices to use for initial reduction.

    Args:
      tensor_index: Index of the current tensor in the list of tensors to copy.
      num_devices: Total number of devices.

    Returns:
      A tuple containing pair of main device indices for the initial
      reduction. Then, the first element of the tuple should be used for the
      final reduction.

    Raises:
      ValueError: Invalid input arguments.
    """
    if self._network_topology == constants.NetworkTopology.DGX1:
      return tensor_index % num_devices, (tensor_index +
                                          (num_devices // 2)) % num_devices
    elif self._network_topology == constants.NetworkTopology.GCP_V100:
      if num_devices != 8:
        raise ValueError('HierarchicalCopy only supports eight devices in %s.' %
                         self._network_topology)
      # TODO(hinsu): Generalize main device indices to handle any other
      # isomorphic connection graph that connects two cliques using connections
      # other than 0-5 and 2-7.
      main_device_pairs = [(0, 5), (2, 7), (5, 0), (7, 2)]
      return main_device_pairs[tensor_index % len(main_device_pairs)]
    else:
      # TODO(reedwm): make this logic more general for arbitrary topology.
      raise ValueError(
          'HierarchicalCopy is not supported for %s network topology.' %
          self._network_topology)

class AllReduceSpecAlgorithm(BatchAllReduceAlgorithm):
  """An algorithm that uses an all reduce spec."""

  def __init__(self, all_reduce_spec, gpu_indices, agg_small_grads_max_bytes,
               agg_small_grads_max_group):
    spec = allreduce.parse_all_reduce_spec(all_reduce_spec)
    if len(spec) != 1:
      raise ValueError(
          'Replicated mode does not support hybrid all-reduce strategies')
    self._all_reduce_spec = spec[0]
    self._gpu_indices = gpu_indices
    self._agg_small_grads_max_bytes = agg_small_grads_max_bytes
    self._agg_small_grads_max_group = agg_small_grads_max_group

  def _do_batch_all_reduce(self, all_device_tensors):
    # TODO(reedwm): Merge allreduce.sum_gradients_all_reduce with the other
    # gradient aggregation code, since gradient aggregation is doing an all
    # reduce. Currently, we do gradient repacking in two different places.
    # TODO(reedwm): Change the allreduce code to reduce tensors instead of
    # tower_grads.
    tower_grads = [[(t, None) for t in device_tensors]
                   for device_tensors in all_device_tensors]
    aggregated_device_grads = allreduce.sum_gradients_all_reduce(
        False,  # single_session
        ['/job:localhost'],
        tower_grads,
        1,
        self._all_reduce_spec.alg,
        self._all_reduce_spec.shards,
        self._gpu_indices,
        agg_small_grads_max_bytes=self._agg_small_grads_max_bytes,
        agg_small_grads_max_group=self._agg_small_grads_max_group)
    return [[t for t, _ in grad_vars] for grad_vars in aggregated_device_grads]

def algorithm_from_params(params):
  """Returns a BatchAllReduceAlgorithm from a Params tuple."""
  if params.all_reduce_spec:
    if params.gpu_indices:
      gpu_indices = [int(x) for x in params.gpu_indices.split(',')]
    else:
      gpu_indices = [x for x in range(params.num_gpus)]
    return AllReduceSpecAlgorithm(params.all_reduce_spec, gpu_indices,
                                  params.agg_small_grads_max_bytes,
                                  params.agg_small_grads_max_group)
  elif params.hierarchical_copy:
    return HierarchicalCopyAlgorithm(params.network_topology)
  else:
    if params.local_parameter_device == 'gpu':
      devices_to_reduce_on = ['/gpu:%d' % i for i in range(params.num_gpus)]
    else:
      devices_to_reduce_on = ['/cpu:0']
    return CopyToDeviceAlgorithm(devices_to_reduce_on)

def _apply_to_all_device_tensors(all_device_tensors, apply_func, colocate=True):
  """Applies a function to each tensor in `all_device_tensors`.

  A new list of lists of tensors is returned, where every tensor in
  `all_device_tensors` has had `apply_func` called on it. `all_device_tensors`
  is not modified.

  Args:
    all_device_tensors: A list of list of tensors. `all_device_tensors[i][j]` is
      a tensor where `i` is the device index and `j` is the tensor index.
    apply_func: A function taking in three arguments: tensor, device_index,
      tensor_index, and returning a modified tensor.
      `tensor` is `all_device_tensors[device_index][tensor_index]`.
    colocate: If True, apply_func will be run under context manager colocated
      with it's input tensor.
  Returns:
    A list in the same form as `all_device_tensors`, except each tensor has had
    `apply_func` called on it.
  """
  new_all_device_tensors = []
  for device_index, device_tensors in enumerate(all_device_tensors):
    new_device_tensors = []
    for tensor_index, t in enumerate(device_tensors):
      if colocate:
        with tf.colocate_with(t):
          new_t = apply_func(t, device_index, tensor_index)
      else:
        new_t = apply_func(t, device_index, tensor_index)
      new_device_tensors.append(new_t)
    new_all_device_tensors.append(new_device_tensors)
  return new_all_device_tensors

def _defer_tensor(tensor):
  """Defers the retrieval of a tensor.

  The tensor is put into a StagingArea, and the return value is the
  retrieval of the tensor from the StagingArea. The effect is that the
  tensor returned from this function is the tensor that was put in the
  StagingArea for the previous Session.run() call.

  Args:
    tensor: The tensor to defer for one step.

  Returns:
    deferred_tensor: The tensor deferred for one step.
    put_op: An op to put `tensor` in the StagingArea. Must be run every step
      that `deferred_tensor` is run.
    warmup_op: A warmup op that should be called before the first step. Puts
      a zero tensor into the StagingArea.
  """
  tensor_stage = data_flow_ops.StagingArea([tensor.dtype], [tensor.shape])
  put_op = tensor_stage.put([tensor])
  warmup_op = tensor_stage.put([tf.zeros(tensor.shape, dtype=tensor.dtype)])

  # Fetch the next tensor to use.
  (tensor,) = tensor_stage.get()
  return tensor, put_op, warmup_op

def defer_single_device_tensors(device_tensors):
  """Defer tensors (gradients in this case) from a single device.

  Arguments:
    device_tensors: A list of gradients tensors from a single device to defer.

  Returns:
    deferred_tensors: A list of tensors deferred for one step.
    put_ops: A list of ops that put `tensors` in the StagingAreas. Must be run
      every step that `deferred_tensors` is run.
    warmup_ops: Warmup ops that should be called before the first step. Puts
      zero tensors into the StagingArea.
  """
  put_ops = []
  warmup_ops = []
  deferred_tensors = []

  for tensor in device_tensors:
    deferred_tensor, put_op, warmup_op = _defer_tensor(tensor)
    deferred_tensors.append(deferred_tensor)
    put_ops.append(put_op)
    warmup_ops.append(warmup_op)

  return deferred_tensors, put_ops, warmup_ops

def _add_put_op_control_deps(all_device_tensors, num_splits, put_ops):
  """Add control dependencies from `put_ops` to `all_device_tensors`.

  This should only be called when deferred tensors are being used.

  The control dependencies are added so that the put ops are run whenever
  `all_device_tensors` is run. That way, the caller does not have to explicitly
  run the put ops.

  Args:
    all_device_tensors: A list of list of tensors. `all_device_tensors[i][j]` is
      a tensor where `i` is the device index and `j` is the tensor index.
    num_splits: The number of splits that were used for the all-reduce.
    put_ops: A list of put ops from deferring the tensors.
  Returns:
    A list in the same form as `all_device_tensors`, except each tensor has a
    control dependency on an op in `put_ops`.

  """
  def apply_func(tensor, device_index, tensor_index):
    if num_splits == 0:
      deps = [put_ops[device_index][tensor_index]]
    else:
      deps = put_ops[device_index]
    assert len(deps) == 1
    with tf.control_dependencies(deps):
      return tf.identity(tensor, name='control_dependency')
  return _apply_to_all_device_tensors(all_device_tensors, apply_func)

class _TensorPacker(object):
  """Packs and unpacks tensors into groups.

  This class first concatenates a set of tensors, then split the concatenated
  tensor into a small number of chunks. This is useful for all-reducing tensors,
  as doing a small number of all-reduces on large tensors can be faster than
  doing a large number of all-reduces on small tensors.

  It also provides option to compact tensors by casting them to fp16, for better
  all-reduce performance.

  This class maintains states of processed tensors like shapes and types. So
  each packer can only be used to pack and unpack one list of tensors. If you
  need to pack multiple lists of tensors (say from multiple devices), then you
  need multiple _TensorPacker object, one for each device.
  """

  def __init__(self, num_splits, compact):
    """Initializes the _TensorPacker.

    Arguments:
      num_splits: The number of tensors to split the concatenated tensor into.
        The batch all-reduce will consist of `num_splits` all-reduces. if None
        or zero, tensors are not split or concatenated.
      compact: If True, tensors are casted to fp16 during packing and casted
        back to their original dtypes during unpacking.
    """
    self._num_splits = num_splits
    self._compact = compact
    self._before_compact_dtypes = []

  def maybe_concat_tensors(self, device_tensors):
    """Concatenate tensors into a single tensor."""
    if not self._num_splits:
      return device_tensors

    flat_tensors = [tf.reshape(t, [-1]) for t in device_tensors]
    self._orig_shapes = [t.shape for t in device_tensors]
    self._orig_sizes = [s.num_elements() for s in self._orig_shapes]
    # All shapes must be fully defined.
    assert None not in self._orig_sizes
    concatenated_grad = tf.concat(flat_tensors, 0)
    return [concatenated_grad]

  def maybe_split_tensors(self, concatenated_tensor):
    """Split concatenated tensor into `num_splits` pieces."""
    if not self._num_splits:
      return concatenated_tensor

    if len(concatenated_tensor) != 1:
      raise RuntimeError('tensors must be concatenated via '
                         'maybe_concat_tensors() before splitting')

    concatenated_tensor = concatenated_tensor[0]
    total_tensor_size = concatenated_tensor.shape.num_elements()
    split_size = total_tensor_size // self._num_splits
    split_size_last = total_tensor_size - split_size * (self._num_splits - 1)
    split_sizes = [split_size] * (self._num_splits - 1) + [split_size_last]
    tensor_packs = tf.split(concatenated_tensor, split_sizes)
    return tensor_packs

  def undo_maybe_split_tensors(self, tensor_packs):
    """Undo maybe_split_tensors()."""
    if not self._num_splits:
      return tensor_packs

    return [tf.concat(tensor_packs, 0)]

  def undo_maybe_concat_tensors(self, concatenated_tensor):
    """Undo maybe_concat_tensors()."""
    if not self._num_splits:
      return concatenated_tensor

    if len(concatenated_tensor) != 1:
      raise RuntimeError(
          'undo_maybe_split_tensors() must be called before '
          'undo_maybe_concat_tensors when num_splits is greater than 1')
    concatenated_tensor = concatenated_tensor[0]

    tensors_with_sizes = tf.split(concatenated_tensor,
                                  self._orig_sizes)
    tensors_with_shapes = [
        tf.reshape(grad, shape) for grad, shape in zip(
            tensors_with_sizes, self._orig_shapes)
    ]
    return tensors_with_shapes

  def maybe_compact_tensors(self, device_tensors):
    """Cast tensors to fp16 and store their original types."""
    if not self._compact:
      return device_tensors

    if self._before_compact_dtypes:
      raise RuntimeError('maybe_compact_tensors can only be called once.')

    self._before_compact_dtypes = [t.dtype for t in device_tensors]
    compact_tensors = [tf.cast(t, tf.float16) for t in device_tensors]

    return compact_tensors

  def undo_maybe_compact_tensors(self, compact_tensors):
    """Undo maybe_compact_tensors()."""
    if not self._compact:
      return compact_tensors

    if not self._before_compact_dtypes:
      raise RuntimeError('maybe_compact_tensors() must be called before '
                         'undo_maybe_compact_tensors()')

    device_tensors = [
        tf.cast(t, dtype)
        for t, dtype in zip(compact_tensors, self._before_compact_dtypes)
    ]
    return device_tensors


exercise as well, one could quickly run into confusion if using 6.0.
>> The old help function was actually helpful.
>> functions in several places in the book, and use the book's index.
>> Now I can't find any of that.
>> information or examples about how to load or depend on the package.
>> to use the function.
>> what I typed.  What's with that?
>> Overall, this seems like a horrible downgrade from the Help in 5.2.


text:
🔔 Plateau Police Confirm Death of 300L Unijos Female Student in A Hotel Room, After She Went Missing On New Year Eve
Late Jenifer Anthony
So many young persons arround Nigeria have used the yuletide Season to hang out with friends, family and loved ones, but one of the millions of these young persons did not make it to see a brand new year after probably having a nice time with a suspected male partner.
The Plateau Police Command, North Central Nigeria, has found the corpse of A 300L female student of the University of Jos in a hotel room in jos, after she was declared missing on December 31, 2021,
According to a statement from the police, the deceased, a Student of the Department of special Education and Rehabilitation Sciences at the University of Jos, has been identified as Jennifer Anthony.
The statement said she was said to have told her parents in Abuja that she was coming for a job interview in Jos, but ended up in a hotel with a man.
In a viral video going round on social media, Jennifer was seen with a young man cruising in a car round Jos City.
The state Police Command spokesman Assistant supritendant of police, ASP Gabriel Ubah, said the incident was reported to the command and on reaching the scene, it was discovered that Jennifer's remains have been dismembered, with her eyes and other parts found missing.
Late Jenifer in a Car with her suspected killer
Ubah added, that investigation is currently ongoing and the command has made significant progress in trailing the suspects who committed the evil act.
According to the Police Spokesman, the Plateau State Commissioner of Police also held an emergency meeting with all hoteliers in Plateau State where he gave them security tips on how to adequately secure their hotels to avert the reoccurrence of such ugly incidents.
Neither the parent of the late student or the University of Jos management are yet to react to the development, but the police have deposited Jennifer's body at the Plateau Specialist mortuary.


You may pick in your writer! Their authors have to be qualified and academically. Selecting a personalized essay writer is more challenging as it seems.
You're more than welcome to discontinue from viagra dapoxetine. Custom Essay should you desire to lean more. Producing is their profession. Open ship, it is normal for custom composition!
It could possibly be bothersome and a task when you are already facing lots of problem. In every livelihood, it's required to compose all types of distance learning vs conventional learning composition newspapers, essays projects and assignments to acquire your level. Essay writing support is growing tremendously favored by a lot of pupils.
You ought to sift through a lot of stuff whilst conducting research and after that devote an even bigger level time coordinating your ideas and disagreements into one essay. There are quite a good deal of facets of an essay. As an example, an interest needs to be the thing.
Evidently writing that is un-original is cheaper and easier to build but nonetheless, it consistently results in trouble. After you publish your purchase, we start out trying to find the writer to finish your mission based on your own requirements. When it's to do selecting Ozessay an essay writing service subsequently you definitely will need to have some kind of checklist to generate the potential that is ideal.
Products and services that are writing only ought to finish an order form and define all the particulars. Essay creating services include a couple points of attention. Specialised tailored essay stipulates your to meet .
If you are living in united kingdom you are likely to find companies offering assignment writing service in UK. Our writing service would be in order to provide support. You're very fortunate you have stumbled upon the ideal essay writing support on the marketplace!
Unsurprisingly, the bulk of our clients have been with us. The utilization of engineering within business is another chance. Hence, it actually is imperative to supply cms organizations.
Furthermore that you don't will need to be worried regarding your paper's attribute . You should be certain the fees are affordable Even though informative article writing needs to not arrive at front of the quality. Thus, you might be confident your term paper service is currently going to be shipped with a specialist.
There are numerous custom writing products and services on the net web but there's just one that-is deals and warranties meeting your quality criteria that are top. You will find a lot of businesses of which key in the marketplace. Work out your order's purchase cost every price-off was shot into consideration, and you're likely to be surprised by just how affordable our customized essay writing Atrovent vs spiriva cost is.
Entrust your academic aid you are ready to find a expert guidance. For those who have time though, we'll inform you a bit little bit more regarding our organization and also the professional services we now offer. You can find more than just a few reasons.
What's more, there is a buying plavix on line. excellent idea always to try and come across some alternative party reviews and client testimonials concerning the essay writing service provider you want to learn more about. Customer service is very favorable!
Assess whether you will find grammar and punctuation troubles, punctuation difficulties, inappropriate stream and fashion , inappropriate format or arrangement and most importantly, glaring plagiarism difficulties. There's not going to be any grammar or grammar trouble inside the order from us. You may also upload materials such as course notes along with whatever else you'd desire to get used.
By implementing template, the probability of overlooking out any essential part is averted. You might order all set paper-works of every form and in many locations. Attempt to remember, a title will perhaps not absolutely kill an essay, however, a very superb person may be described as considered a cherry on top.
You're in a situation to become sure of having just what you want For those who ought to cialis uputstvo. become a part of the groundwork of your article. The dissertation writing process ought to be carried out within methods. Analysis and topic is definitely the very last peaks of thesis communicating.


1. Set location to the north pole.
2. Set time and date to December 25, 00:00hrs.
3. Put on tower view and do 360's until you see the sleigh on the ground.
It lifts off at 00:01 and will fly straight up to 100,000ft then disappears. You can follow it with a X-15 or SR-71, or just take a stable plane into the aircraft editor and set the thrust to the max.


Audits complex information systems, platforms, and operating procedures in accordance with established corporate standards for efficiency, accuracy and security. Evaluates IT infrastructure in terms of risk to the organization and establishes controls to mitigate loss. Determines and recommends improvements in current risk management controls and implementation of system changes or upgrades. Requires a bachelor's degree. Typically reports to a manager or head of unit/department. A specialist on complex technical and business matters. Work is highly independent. May assume a team lead role for the work group. Typically requires 7+ years of related experience.
These charts show the average base salary (core compensation), as well as the average total compensation for the job of Information Technology Auditor IV in the United States. The base salary for Information Technology Auditor IV ranges from $100,863 to $126,128 with the average base salary of $111,404. The total compensation, which includes bonus, health and retirement, can vary anywhere from $107,435 to $139,126 with the average total compensation of $120,512.


text:
Rush to Release 40th Anniversary Edition of 'Hemispheres'
UMe/Anthem/ole
Rush have new editions of 1978's Hemispheres on the way in honor of their sixth album's 40th anniversary.
The new sets will arrive on Nov. 16.
"Hemispheres was one of our most challenging and demanding records to make," guitarist Alex Lifeson said in a press release. "From its inception in a Wales farmhouse where it was written over a four-week span to the very difficult mixing sessions in two London recording studios, it stands as a key transitional album in Rush's long recording history."
The new Super Deluxe Edition includes the 2015 Abbey Road remaster, which will be available for the first time on CD, the band's June 1979 performance at the Pinkpop Festival in the Netherlands -- with a bonus performance of "2112" from Tuscon in 1978 -- and a Blu-ray featuring a 5.1 surround mix and four videos.
Bonus content includes a 40-page book with photos, new artwork by Hugh Syme and an 11,000-word essay by Rob Bowman; 180-gram LPs of the album and live recordings; a reproduction of the 1979 tour program; a poster of Syme's new art; replicas of memorabilia from the Pinkpop date; and an iron-on patch.
You can watch an unboxing video of the Super Deluxe Edition below.
A two-CD/three-LP Deluxe Edition omits the Blu-ray and reduces the booklet to 28 pages and Bowman's essay to 5,700 words. The music on the CDs will also be available as a digital download.
You can see the track listing below.
Rush, 'Hemispheres: 40th Anniversary Edition' Track Listing
Disc One -- Original Album
1. "Cygnus X-1 Book II: Hemispheres"
2. "Circumstances"
3. "The Trees"
4. "La Villa Strangiato"
Disc Two -- Live at Pinkpop Festival, June 4, 1979
1. "A Passage to Bangkok"
2. "Xanadu"
4. "Cygnus X-1 Book II: Hemispheres – The Sphere (A Kind of Dream)"
5. "Closer to the Heart"
7. "In the Mood"
8. "Drum Solo"
9. "Something for Nothing"
Live in Arizona – November 20, 1978
10 ."2112"
Disc Three -- Blu-ray
4. "La Villa Strangiato" (Live at Pinkpop Festival: June 4, 1979)
Source: Rush to Release 40th Anniversary Edition of 'Hemispheres'
Filed Under: Rush


text:
Call Me By Your Name (2017)
Armie and Chalamet were built to play characters from the 80s
Director: Luca Guadagnino
Writer: James Ivory; Call Me by Your Name by André Aciman
Cinematographer: Sayombhu Mukdeeprom
Producer: Peter Spears, Luca Guadagnino, Emilie Georges, Rodrigo Teixeira, Marco Morabito, James Ivory, and Howard Rosenman
Every year there're those one or two films that provide a flawless experience. I could argue why other films seem misplaced on the Year's Best, but ultimately, when it comes to a certain caliber of filmmaking, it all depends on taste.* Everyone hopes to achieve this feeling with each new piece of art; that'll it be a favorite of the year, or - even better - one of the best of the decade, or - even better - the greatest movie ever made. It rarely occurs, but when it does, it leaves you with that lingering inexplicable feeling which can last weeks. Call Me By Your Name has been labeled a "Gay Love Story", but it's arguably one of the greatest love stories ever made; breaking down the division between gay and straight cinema once and for all.
Brokeback Mountain (2005) was the first time I ever saw a "Gay Love Story", providing a pretty good and heartbreaking look at a long love affair between two cowboys, along with examining the very foundation of masculinity. I revisited the film a few years later and realized the power of story over topic, and how although Brokeback Mountain was a good movie with amazing performances, I never connected with the characters, as I'm neither a tough guy or a cowboy and thus the rugged masculinity was something I struggled to relate to.
The same issue occurred with Moonlight (2016), which while a very good movie, still felt as though something was missing from the affair; essentially exploring similar ideas as Brokeback, except focused on urban rather than rural America. In such an environment, hyper masculinity thrives, in which those with the most courage (expressed through violence) gain respect, dividing real from fake men, leading us to assume homosexuality can't possibly work within such a toxic world. Barry Jenkins flips these assumptions on their head, though unfortunately, the love story between Chiron and Kevin, while ending beautifully, ignores the initial spark between young lovers. Teenage Chiron's timid personality just didn't off enough richness to forge as solid a bond with Kevin in youth.
Ultimately, while both films came close, I never fully connected with the other set of characters, making me wonder if it was because they were "Gay Love Stories" and I was only looking for superficial reasons to convince myself otherwise; that is, did I like and not love these films because they unrelatable or because of some more systemic reason. I knew Call Me By Your Name was a similar story, though not knowing the acclaim it would receive, I watched the preview, seeing what looked like an absolutely gorgeous film. Soon it was positioned at the top of most critics lists, and having loved Timothée Chalamet in Ladybird (2017), I rushed to see it before it left theaters.
It opens up in the 1980s in an Italian countryside during the summer, at a cottage which is surrounded by apricot trees, rented by an archaeology professor Mr. Pearlman (Michael Stuhlbarg), his wife Annella (Amira Casar), and their 17-year old son Elio (Chalamet) who spends his days with his headphones on, listening to piano, transcribing the music, broken up by flying through books and hanging out with some of the local girls.
Mr. Perl and Annela have selected a new graduate student Oliver (Armie Hammer) to join them for their summer internship and help with some research. I was a bit turned off by Hammer, initially. I haven't seen him since The Social Network (2010) where he created one of the most bro-y characters I've ever watched. He maintains a similar confidence and attitude in this film, and yet provides an additional layer of complexity which doesn't necessarily forgive or excuse what he does, but creates enough dimension in the character to create of the greatest romantic duos to ever grace the screen (or so I expect). We follow the characters as it moves from resentment on Elio's end (having to give up his room and deal with Oliver's bro-yness) and Oliver's complete indifference to subtle touches and innocent flirtation to the first kiss and all of the passion it brings.
Most people I know have experienced a heart crushing love, falling into obsession as desire takes complete control of your mind and body, and all else takes a back seat. If it was you, you were fine with, and if it was your friend, you were pissed. In my own experience I simply remember the sheer elation in finally getting to be intimate for the first time with someone I cared deeply about; a feeling unlike anything I've ever experienced. As quick as it arrives the first problem occurs - there's a fight one night, more follow, and soon the break up arrives, and whether a clean break or dragging on for months after that, all you end up with is chasing that initial seemingly perfect feeling which was not at all perfect.
Call Me By Your Name captures this specific moment in time, in which everything from the production design to photography to characters to setting add up to create a world so vivid that anyone - old or young, gay or straight, bigoted or not - could connect to what Elio was experiencing, or at least anyone who's gone through a similar coming of age moment. When I think back to my first love I recall the initial conversations we had through AIM, not knowing who she was, then meeting her and thinking she was the most beautiful person I had ever seen; in disbelief that someone like that could like me. From there, it quickly descended into a long, chaotic mess, extending across years worth of time. The details are some of the most embarrassing moments of my life, from accepting the way she acted for so long and for how I acted myself, all while maintaining the hope that things could return to that first moment. Many people have similar experiences with love - and with only a cliche to suffice - they too have blinders on as the relationship becomes unsustainable; scared that they'll never find another person ever again, never able to grasp all of the glaring fundamental problems until years later. When I look back at my first, I can laugh and cringe at how naive I was, while respecting how powerful those feelings were.
The greatest Coming of Age stories create distinct atmosphere. When I think of the best, it's often Stand by Me (1986), My Girl (1991), and Now and Then's (1995) ability to take you back to childhood summers, before you and your friends had to work; in which the town was the entire world, creating a desire for adventure; often involving a mystery that needs to be solved and inspiring thousands of kids all over the world to go and discover the difference between fantasy and reality.
Call Me By Your Name isn't as extreme in plot, yet the mystery remains just as prominent. How will these two characters pull off a romance in such an intimate setting? Set in an old beautiful house with a labyrinth of corridors and gardens, leading to pools and ponds and open laws, with guests, friends, and family everywhere. I could feel the heat of the sun, offering that perfect temperature that allows you to remain outdoors for hours. With its vibrant color, it moves beyond a look and actually feels idyllic. Everyone seems relaxed, down to the apricot juice to cool them off and chilled wine later in the evening.
We watch as Oliver first offers an innocuous touch during the volleyball game as Elio cramps up, with his latest and very pretty female prospect Marzia (Esther Garrel) watching on, not suspecting anything, and slowly things intensify, culminating in one of the best shots this year, as Oliver and Elio stop in front of some statue, with Elio explaining its meaning, the camera then revealing it as a WWI memorial. They walk around it and toward the post office, arriving at the precipice of their desire. The first kiss follows shortly after.
After writing a short thought blurb on Facebook, I had one person say Oliver was a predator. I never even thought about the situation. I wondered what the age of consent would be in Italy at the time, but it was a fleeting thought, quickly outweighed by Elio's maturity and insight, though never becoming a full adult. There's an immaturity to his view of the world which only experience could fill, which takes me back to what I said about first loves in that the passion simply overtakes you. For Elio it evolved to love, and for Oliver it was lust.
One of the most powerful things about the film - never explicitly stated- is that no one in this film can be open about their sexuality. Being years older, and as hinted at throughout the story, Oliver understands the potential consequences, and having had to push his desires aside throughout all his life, mentioning his father who would freak and the woman he's about to marry, I see a man whose guilt prevented him from ever even considering coming out. The AIDS epidemic was right around the corner, which made the setting all the more tranquil; as though the calm before the storm, when Gay Rights would charge to the forefront of debate.
Concealment runs throughout the story, extending to Mr. Perlman who also offers subtle gestures toward his own sexuality before the final reveal at the end. In mild ways I wish he didn't even give such an extensive speech at the end of the film, as with the hints scattered throughout the story, his point could have gotten across with half the specificity. And yet the speech dwells in my mind, in which we see how all these characters are connected - to the father who was unable to do anything about his sexuality or even experience the same beautiful opportunity, instead opting for tradition, which produced Elio who gets to experience the wonder of lust and love. Oliver understands the dangers, willing to follow his instincts while balancing a more traditional relationship. All of them demands their secrets are kept, described and shown in a way that is absolutely heartbreaking. The film hardly even touches on politics, and yet if there was a bridge that could unite audiences, I think this film could accomplish it.
I struggle to think of a romantic film that produced such empathy, creating a waterfall of nostalgia and beauty, creating a story I think could be remembered as one of the finest lover stories ever made.
BELOW: A magnficiently complex oner


text:
from ..adapters.informix import Informix, InformixSE
from .firebird import FireBirdDialect
from . import dialects, sqltype_for

@dialects.register_for(Informix)
class InformixDialect(FireBirdDialect):
    @sqltype_for('id')
    def type_id(self):
        return 'SERIAL'

    @sqltype_for('big-id')
    def type_big_id(self):
        return 'BIGSERIAL'

    @sqltype_for('reference FK')
    def type_reference_fk(self):
        return 'REFERENCES %(foreign_key)s ON DELETE %(on_delete_action)s ' + \
            'CONSTRAINT FK_%(table_name)s_%(field_name)s'

    @sqltype_for('reference TFK')
    def type_reference_tfk(self):
        return 'FOREIGN KEY (%(field_name)s) REFERENCES %(foreign_table)s' + \
            '(%(foreign_key)s) ON DELETE %(on_delete_action)s ' + \
            'CONSTRAINT TFK_%(table_name)s_%(field_name)s'

    @property
    def random(self):
        return 'Random()'

    def select(self, fields, tables, where=None, groupby=None, having=None,
               orderby=None, limitby=None, distinct=False, for_update=False):
        dst, whr, grp, order, limit, offset, upd = '', '', '', '', '', '', ''
        if distinct is True:
            dst = ' DISTINCT'
        elif distinct:
            dst = ' DISTINCT ON (%s)' % distinct
        if where:
            whr = ' %s' % self.where(where)
        if groupby:
            grp = ' GROUP BY %s' % groupby
            if having:
                grp += ' HAVING %s' % having
        if orderby:
            order = ' ORDER BY %s' % orderby
        if limitby:
            (lmin, lmax) = limitby
            fetch_amt = lmax - lmin
            if lmin and self.adapter.dbms_version >= 10:
                offset = ' SKIP %i' % lmin
            if fetch_amt and self.adapter.dbms_version >= 9:
                limit = ' FIRST %i' % fetch_amt
        if for_update:
            upd = ' FOR UPDATE'
        return 'SELECT%s%s%s %s FROM %s%s%s%s%s;' % (
            dst, offset, limit, fields, tables, whr, grp, order, upd)

@dialects.register_for(InformixSE)
class InformixSEDialect(InformixDialect):
    def select(self, fields, tables, where=None, groupby=None, having=None,
               orderby=None, limitby=None, distinct=False, for_update=False):
        dst, whr, grp, order, limit, offset, upd = '', '', '', '', '', '', ''
        if distinct is True:
            dst = ' DISTINCT'
        elif distinct:
            dst = ' DISTINCT ON (%s)' % distinct
        if where:
            whr = ' %s' % self.where(where)
        if groupby:
            grp = ' GROUP BY %s' % groupby
            if having:
                grp += ' HAVING %s' % having
        if orderby:
            order = ' ORDER BY %s' % orderby
        if for_update:
            upd = ' FOR UPDATE'
        return 'SELECT%s %s FROM %s%s%s%s%s%s%s;' % (
            dst, fields, tables, whr, grp, order, limit, offset, upd)


Recently, I was an observer to a debate on the constitutionality of taking an oath of office on a book or periodical that was not THE HOLY BIBLE. The provocateur of this debate claimed that they did not understand why people were upset that a member of the United States Congress had taken the oath of office on the Quran.
Elected officials take oaths of office with a hand on the Holy Bible because it means that they are upholding their office and actions to a higher power. When officials say "So help me, God" they are literally begging God for help and guidance to properly govern over the people.
When someone swears on the Christian Sacred Scripture, they are saying that they will govern the people with the help of and to the standards of the Christian God, the One True God, and they will be judged by Him in the afterlife. Meaning, they rule their elected area by the teachings of the 10 commandments and of Jesus Christ.
By swearing on the Quran, the official is saying that he/she will govern the people with the help of the Muslim God and to the standards of Islam, some of which are the antithesis of human dignity. If you are not knowledgeable on the Muslim religion, I encourage all the readers to familiarize themselves with Sharia Law and ask if that is the higher standard we would like our officials to hold themselves. I would respectfully say, absolutely not.
By swearing on the Constitution, like Senator Sinema of Arizona did, the official is saying that they are not subject to ANY higher power. They are exclaiming that he/she is only beholden to man-made law, which we all know can be abhorrent (i.e. Roe v. Wade), instead of natural law and universal truths. Again, I would ask, would we like our officials to hold themselves to the standard of majority influence? I would again respectfully say, absolutely not.
While it may not be unlawful to swear on religious texts that are not the Holy Bible, Americans, especially Catholics, should be cautious to excuse and encourage Islamic or pagan viewpoints through the sacred act of the oath of office.
As libertarians, I understand that we should not force anyone to do something that they are uncomfortable with, such as swearing on the Holy Bible. However, just because the absence of laws allows it, does not mean it should be encouraged. What should be encouraged is the explanation of the importance of the formal promise of the oath of office to the true higher moral authority.


text:
Temporal and Spatial Variation of Hematozoans in Scandinavian Willow Warblers
Staffan Bensch;
Department of Animal Ecology, Ecology Building, S-223 62 Lund, Sweden. staffan.bensch@zooekol.lu.se
Susanne Åkesson
https://doi.org/10.1645/0022-3395(2003)089[0388:TASVOH]2.0.CO;2
Staffan Bensch, Susanne Åkesson; Temporal and Spatial Variation of Hematozoans in Scandinavian Willow Warblers. J Parasitol 1 April 2003; 89 (2): 388–391. doi: https://doi.org/10.1645/0022-3395(2003)089[0388:TASVOH]2.0.CO;2
We examined temporal and geographical distribution of Haemoproteus sp. and Plasmodium sp. parasites in Swedish willow warblers, Phylloscopus trochilus. Parasite lineages were detected with molecular methods in 556 birds from 41 sites distributed at distances up to 1,500 km. Two mitochondrial lineages of Haemoproteus sp. were detected, WW1 in 56 birds and WW2 in 75 birds, that differed by 5.2% sequence divergence. We discuss the reasons behind the observed pattern of variation and identify 3 possible causes: (1) variation in the geographic distribution of the vector species, (2) the degree of parasite sharing with other bird species coexisting with the willow warbler, and (3) timing of transmission. Our results support a fundamental and rarely tested assumption of the now classical Hamilton–Zuk hypothesis of sexual selection, namely, that these parasites vary in both time and space. Such fluctuations of parasites and the selection pressure they supposedly impose on the host population are likely to maintain variation in immune system genes in the host population.


text:
Q: iis idle timeout and long running request on wcf service I have to implement long running process which is starts via request to the wcf method (not start proces when application start)
I now that this is wrong solution, better will be windows serwis or something else for long running process, but for my situation it is impossible. I have to use wcf servis hosted on IIS.
I read about appdomain recycled and I can't figure out thing about Idle Timeout - appdomain restart if request run over 20 minutes. I know that this issue appears when is started background task in application start.
So will be my appdomain kill when (idle timeout is setup 20 minutes).
it is start one long running request, and after that will be not another request.
When process is started in application start IIS nothing knows about this task and this is for me clear that in this situation appdomain is closed
Does after 20 minutes IIS kill appdomain, besides that eier request still running ? I am confused, because IIS know about still running request and mayby does not do this.
What is true ?

A: Yes, IIS will kill the process because it works on a rolling horizon of requests, not what is running.  A way around this might be to have the web service request itself while it is running to continually ping the server to let it know that it is still running.  But on the whole, IIS will kill its processes when no requests are coming in.
Taken directly from MSDN: The worker process shuts down after it finishes processing its existing requests, or after a configured time-out, whichever comes first.
In your case, if your process is longer than the timeout, your process will never finish.

redpajama_set_name: RedPajamaStackExchange


This is a placeholder page for Russell Olson, which means this person is not currently on this site. We do suggest using the tools below to find Russell Olson.
You are visiting the placeholder page for Russell Olson. This page is here because someone used our placeholder utility to look for Russell Olson. We created this page automatically in hopes Russell Olson would find it. If you are not Russell Olson, but are an alumni of Joplin High School, register on this site for free now.


text:
Filmwallas at ASEAN Cinefest 2018
#PBD2018 PBD Singapore 2018 PBD Singapore 2018
Garima Kapil Thursday, January 4th 2018
The excitement is palpable as only two days are left for ASEAN Indian Cinefest as a part of Pravasi Bharatiya Divas (PBD), celebrated to mark the contribution of the overseas Indian community in the development of India. There are not just movie screenings, we also get a chance to have direct interaction with the filmmakers. Here is our pick from the list.
Hansal Mehta
Hansal Mehta. Photo courtesy: india-forums.com
Indian film director, writer, producer and the National award winner for Best Direction for his movie Shahid (2013), Hansal Mehta is known for his intense style of storytelling. The movie had its premiere at the 2012 Toronto International Film Festival following which it has an extended run at various international film festivals around the world. Movies such as Simran (2017), CityLights (2014), Aligarh (2016) and many more, the director has brought many social issues through his work.
Mehta started his career in television with his show Khana Khazana (1993-2000) and later moves on to make movies like Dil Pe Mat Le Yaar (2000) and Chhal (2002). His latest production is Bose: Dead/Alive, an Indian historical period drama web series, based on the life of Subhash Chandra Bose.
Satish Kaushik. Photo courtesy: celebritybliss.com
The celebrated Indian film director, producer, and actor, Satish Kaushik is well-known for his roles as 'Calendar' in Mr India (1987) and Pappu Pager in Deewana Mastana (1997). The noted actor won the Filmfare Best Comedian Award twice, in 1990 for Ram Lakhan and in 1997 for Saajan Chale Sasural. As a theatre actor, his most noted role was that of 'Willy Loman' in the Hindi-language play, Salesman Ramlal, an adaptation of Arthur Miller's Death of a Salesman.
Kaushik has written the script for many films very notable among which is for Kundan Shah's comedy classic Jaane Bhi Do Yaaron (1983). His very recent production A Billion Colour Story, a much-acclaimed feature film which won several awards and the Best Film at the London Indian Film Festival 2017. It releases worldwide in 2018.
Sreyashi Sen
Sreyashi Sen. Photo courtesy: Twitter
Sreyashi Sen is the Founder and Managing Director of DARPAN Singapore Pte Ltd, a Singapore homegrown company which distributes, produces independent and meaningful cinema and conceptualizes events for a change. The only woman distributor in South and South East Asia, she strives to bring social change in all her work.
DARPAN also organises the only Indian International Film Festival Singapore a first of its kind festival in SE Asia that has as its backbone integration through the arts and media as a change maker. She also is a sought-after consultant and advisor for media start-ups in South and South East Asia as well as holds advisory positions for independent cinema teams in Asia.
Abbas Akbar
Abbas Akbar. Photo courtesy: DARPAN
The Indian-origin Singaporean filmmaker, screenwriter and actor is predominantly working on Tamil films and television shows. Best known for his film Chennai 2 Singapore, Abbas Akbar set up the first Singaporean Entertainment company in India. The film is the first collaboration between the Tamil and Singaporean film industries and commissioned by the Media Development Authority (MDA) Singapore.
#PBD2018 Singapore PBD PBD Singapore 2018 Pravasi Bharatiya Divas ASEAN
Garima Kapil – Senior Writer
Garima Kapil has around five years of experience in the field of writing and editing. Specialised in writing, performing proof-reading and text editing functions along with content ideation; she has worked with leading e-commerce and as a freelancer. She writes on lifestyle, news, telecom, travel, education, healthcare, immigration, along with other subjects required as a full-time writer and freelancer.


The object of the game is to push the boxes into the designated colored areas. You cannot push two or more boxes at once. If you ever make a wrong move or get stuck you can always restart the level. Controls: Use the arrow keys to play.
Pick and Dig is back with even more fiendish puzzles to solve. Grab the tools to help you get past obstacles. Just watch out for the caterpillars; they're nasty creatures that can hurt you. Instructions: Use the arrow keys to move.
Collect mining tools and use them to clear your way in this addicting platform puzzle game. Climb ladders, avoid enemies and dig your way to victory. Instructions: Use the arrow keys to control your character.
The objective of the game is to find the exit to each stage. Every stage is like a puzzle. There are all sorts of contraptions that can mutilate you instantly so be careful! Try not to touch any of the traps. Good Luck! Controls: Use arrow keys to move.
Choo Choo along, collect all the gems, avoid getting trapped or bumping into your own carriages. Can you complete all 100 levels? Controls: Normal left. right, up & down keyboard keys.
Goodness, gracious, great balls of fire! Navigate your way through 25 challenging stages designed to push your timing and reflexes to their limit as you guide the flame to the its furnace before it withers away! Instructions: Movement – Left and right arrow keys to move, up or spacebar to jump.


One of the things I dread the most, well at least beauty wise, is washing my hair. There's something about it that makes even the thought of it gives me the laziest of feelings. I look for every excuse imaginable not to do it. I just find it extremely boring. I know, quite gross of me.
Without intention or prior plans, I found myself in my bathroom and I looked around and I noticed that I was buying more and more beauty/hygienic products under the zero waste belt. My toothbrush is made out of bamboo, my cleanser's packaging is free of plastic, and I find myself moisturizing my skin with more natural oils than creams.
So when shampoos in the form of bars found their way into my psyche, I knew I had to try it, especially if it meant making the whole process of washing my hair a lot less boring. I decided to test different ones because I was curious if they would all work for my frizzy and curly hair.
Surprisingly enough, and I don't believe in the whole one size fits all gimmick, but each shampoo bar worked perfectly for my hair! This is not to say that the whole process of lathering a soap bar under water then putting said product on my head was not super odd. BUT, the experience was very much enjoyable and not boring at all, exactly what I wanted to achieve! But, I will mention that each bar performed better in certain areas – so welcome everybody to the first annual Shampoo Bar Awards, hosted by yours truly!
Let's start with Meow Meow Tweet, a zero-waste brand, born and bred in New York. I have to give them all of the props for making my hair feel the most clean at the moment. Of course, the packaging is cute and the smell is great, but TRULY my hair has never felt so striped of disgustingness and grime. 10/10 for the Lavender Coconut Milk bar for leaving my strands squeaky clean.
Following up, female led and Brooklyn based beauty/skincare brand (also zero-waste), Happy Place, takes the cake for making my hair feel the softest it has ever been…ever! The bar I used was the Frond bar, formulated with all the oils imaginable: olive, coconut, castor, avocado, geranium and grapefruit. I'm not even joking when I say that I always, always, always use a leave-in conditioner to untangle my mop of a hair but after shampooing with this bar, no product was needed. NONE! Just my brush and wow, did it smooth over my hair like a dream, leaving it shiny and oh so soft.
Last but certainly not least, Lush delivers 100% on overall smell and how the bar looked physically. I used the Jason and the Argan Oil bar, which carries scents of rose, lemon and argan oil. The smell lingers and lingers forever, you'll definitely be stopped on the street, I know I was. Plus, the overall bar looks like a bunch of magenta colored sprinkles melted together and that's just plain cute. I'm a sucker for this product from the category's OG brand.
If you haven't given shampoo bars a try, I highly recommend it. It's a totally fun and different experience without gimmicks or tricks. Also, you're helping the environment by supporting these zero-waste brands and the amount of trash we're sending out into landfills. See? It's a win-win. Clean hair, clean environment.