text:
Q: Changing text in Android on text change causes overflow error I want to create an application that can transform text the user enters in an EditText widget in real time, and I've added a TextWatcher to allow me to do stuff on text change, but it's causing an overflow error because I'm basically creating an endless loop (onTextChange -> code to change text -> onTextChange -> etc...).
Anyone got an idea on how to get around this issue?
Here's an example
private boolean isEditable = true;
private EditText text;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    text = (EditText) findViewById(R.id.editText1);
    text.addTextChangedListener(new TextWatcher() {

        @Override
        public void afterTextChanged(Editable s) {
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            if (isEditable) {
                isEditable = false;
                styleText(s.toString());
            } else {
                isEditable = true;
            }
        }

    });

}

private void styleText(String completeText) {
    text.setText(completeText + " test");
}

And while the above actually seems to be working, I cannot get it to work with Html.fromHtml();, which is what I intend to use.
EDITED AGAIN
public class Main extends Activity implements TextWatcher {

    private EditText text;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        text = (EditText) findViewById(R.id.editText1);
        text.addTextChangedListener(this);
    }

    @Override
    public void afterTextChanged(Editable s) {
        text.removeTextChangedListener(this);
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        text.addTextChangedListener(this);
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        text.removeTextChangedListener(this);
        text.setText("Test!");
    }
}

It's throwing a StackOverflowException on line 37, which is "text.setText("Test!");"

A: private String originalValue;
void onTextChanged(CharSequence text, int start, int before, int after) {
   if (text.toString().equals(originalValue)) {
      // do nothing
   } else {
      //change your text
      originalValue = text.toString();
   }
}

Edited:
public void onTextChanged(CharSequence s, int start, int before, int count) {
       String currentText = s.toString();
       if (currentText.equals(originalValue)) { //the originalValue must be defined outside of the Watcher
          originalValue = styleText(currentText);
          // text.setText(originalValue); //if styleText doesn't do this
       } else {
          return;
       }
}

A: EDIT: And works, no exception is thrown:
  txtwt = new TextWatcher(){

            @Override
            public void afterTextChanged(Editable s) {

            Log.i("REACHES AFTER", "YES");

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                Log.i("REACHES BEFORE", "YES");
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                text.removeTextChangedListener(txtwt);//after this line you do the editing code
                text.setText("TEST");
                Log.i("REACHES ON", "YES");
                text.addTextChangedListener(txtwt); // you register again for listener callbacks

            }};
       text = (EditText) findViewById(R.id.editText1);
        text.addTextChangedListener(txtwt);

This is the Logcat proof, when I dramatically pushed keys :
08-28 19:53:21.265: INFO/REACHES BEFORE(492): YES
08-28 19:53:21.276: INFO/REACHES ON(492): YES
08-28 19:53:21.276: INFO/REACHES AFTER(492): YES
08-28 19:53:21.296: INFO/REACHES BEFORE(492): YES
08-28 19:53:21.305: INFO/REACHES ON(492): YES
08-28 19:53:21.305: INFO/REACHES AFTER(492): YES
08-28 19:53:21.745: INFO/REACHES BEFORE(492): YES
08-28 19:53:21.755: INFO/REACHES ON(492): YES
08-28 19:53:21.755: INFO/REACHES AFTER(492): YES
08-28 19:53:21.775: INFO/REACHES BEFORE(492): YES
08-28 19:53:21.785: INFO/REACHES ON(492): YES
08-28 19:53:21.785: INFO/REACHES AFTER(492): YES
08-28 19:53:22.698: INFO/REACHES BEFORE(492): YES
08-28 19:53:22.705: INFO/REACHES ON(492): YES
08-28 19:53:22.705: INFO/REACHES AFTER(492): YES
08-28 19:53:23.855: INFO/REACHES BEFORE(492): YES
08-28 19:53:23.865: INFO/REACHES ON(492): YES
08-28 19:53:23.865: INFO/REACHES AFTER(492): YES
08-28 19:53:24.385: INFO/REACHES BEFORE(492): YES
08-28 19:53:24.395: INFO/REACHES ON(492): YES
08-28 19:53:24.395: INFO/REACHES AFTER(492): YES
08-28 19:53:24.485: INFO/REACHES BEFORE(492): YES
08-28 19:53:24.485: INFO/REACHES ON(492): YES
08-28 19:53:24.485: INFO/REACHES AFTER(492): YES
08-28 19:53:24.515: INFO/REACHES BEFORE(492): YES
08-28 19:53:24.525: INFO/REACHES ON(492): YES
08-28 19:53:24.525: INFO/REACHES AFTER(492): YES
08-28 19:53:24.625: INFO/REACHES BEFORE(492): YES
08-28 19:53:24.635: INFO/REACHES ON(492): YES
08-28 19:53:24.635: INFO/REACHES AFTER(492): YES
08-28 19:53:24.654: INFO/REACHES BEFORE(492): YES
08-28 19:53:24.665: INFO/REACHES ON(492): YES
08-28 19:53:24.665: INFO/REACHES AFTER(492): YES

redpajama_set_name: RedPajamaStackExchange


text:
Lutjanus ambiguus és una espècie de peix de la família dels lutjànids i de l'ordre dels perciformes.

Morfologia
 Els mascles poden assolir 40 cm de longitud total.

Hàbitat
És un peix marí de clima subtropical i associat als esculls de corall.

Distribució geogràfica
Es troba a Cuba i al sud de Florida (Estats Units).

Referències

Bibliografia
 Allen, G. R. i F. H. Talbot, 1985: Review of the snappers of the genus Lutjanus (Pisces: Lutjanidae) from the Indo-Pacific, with the description of a new species. Indo-Pacific Fishes Núm. 11: 1-87, Col. Pls. 1-10.
 Bleeker, P., 1873: Révision des espèces indo-archipélagiques des genres Lutjanus et Aprion. Verslagen en Mededeelingen der Koninklijke Akademie van Wetenschappen. Afdeling Natuurkunde. v. 13: 1-102.
 Coppola, S.R., W. Fischer, L. Garibaldi, N. Scialabba i K.E. Carpenter, 1994 SPECIESDAB: Global species database for fishery purposes. User's manual. FAO Computerized Information Series (Fisheries). Núm. 9. Roma, Itàlia, FAO. 103 p.

 Lloris, D. i J. Rucabado, 1990. Lutjanidae. p. 773-779. A J. C. Quéro, J. C. Hureau, C. Karrer, A Post i L. Saldanha (eds.) Check-list of the fishes of the eastern tropical Atlantic (CLOFETA). JNICT, Lisboa, Portugal; SEI, París; i UNESCO, París, França. Vol. 2.

 Zaneveld, J.S., 1983. Caribbean Fish Life. Index to the local and scientific names of the marine fishes and fishlike invertebrates of the Caribbean area (Tropical Western Central Atlantic Ocean) E.J. Brill / Dr. W. Backhuys, Leiden, 163p.

ambiguus

redpajama_set_name: RedPajamaWikipedia


text:
Mercer County, Robbinsville, Robbinsville	 August 27, 2020
Serious Accident On I-195, Trauma Alert Called
ROBBINSVILLE, NJ (MERCER)–Around 9:54 pm the Robbinsville Township Fire Department was sent to I-195 west bound at the NJ Turnpike overpass for a serious motor vehicle crash.
Upon arrival Robbinsville firefighters and EMS found a vehicle into the bridge safety wall that keeps vehicles from driving off the bridge. The crews treated the person and Robbinsville EMS took the victim to the Trauma Center at Capital Health Regional Medical Center in Trenton. A trauma alert was called en route to the hospital.
New Jersey State Police are investigating.
No further information was available about the accident.
Mercer County, Trenton	 August 27, 2020
Governor Murphy Signs Executive Order Allowing Gyms and Indoor Amusement and Water Parks to Reopen Effective Tuesday, September 1, 2020
TRENTON, NJ (MERCER)–Governor Phil Murphy today signed Executive Order No. 181, which permits gyms and health clubs, as well as amusement and water parks, to reopen their indoor premises to the public on Tuesday, September 1 at 6:00 a.m., provided these facilities comply with the health and safety standards issued by the Department of Health.
"Gyms are among the most-challenging indoor environments to prevent the transmission of COVID-19," said Governor Murphy. "Given where we are in this fight and the overwhelming personal responsibility demonstrated by gym owners and gym members over the past several months, we can confidently take this important step on our road back."
"Exercise is very important for the body and the mind, but it needs to be done in a healthy environment to protect not only those in the facility, but the community at large," said Health Commissioner Judith Persichilli. "Given the potential for transmission indoors, this guidance provides strict guidelines for staff and customers to follow closely to stay healthy while enjoying their workout or class."
Under the Department of Health's Executive Directive, gyms and health clubs who reopen will be required to adhere to the health and safety standards listed in the "Guidance for Health Clubs/Gyms/Fitness Centers". These standards, which will also apply to other recreational businesses that offer fitness classes and activities, include the following, among others:
Limit occupancy of any indoor premises to 25 percent of the stated maximum capacity;
Conduct a temperature screening and questionnaire of staff and clients upon entrance to the facility;
Limit indoor group activities (e.g., classes) to no more than 1 individual per 200 square feet of accessible space or less, with all individuals being able to maintain 6 feet of distance from other individuals during the entire class;
Require workers and customers to wear cloth face coverings at all times, except where doing so would inhibit that individual's health, such as when in the water and in other situations where the presence of a mask would pose a risk to the individual's health, or where the individual is under two years of age;
Demarcate six feet of distance between equipment, or blocking off equipment (e.g. every other machine) to maintain six feet of distancing between individuals using equipment;
Require that reservations, cancellations and pre-payments be made via electronic or telephone reservation systems to limit physical interactions;
Limit occupancy in restrooms to avoid over-crowding;
Inform clients to arrive dressed to workout/train and bring their own hand towel, water, yoga mat, boxing gloves, and any other equipment;
Not permit the use of showers, with the exception of gyms with pools, which can have individually partitioned showers or communal showers with installed barriers/partitions at least six feet apart;
Limit locker room use to hand washing and restroom use only; and
Adopt infection control practices and enhanced sanitization protocols.
Activities such as swimming in an indoor pool, tanning, outdoor dining, pick-up of food or beverage, and retail sales, which are otherwise permitted but which are not governed by the guidance, remain subject to applicable standards outlined in Executive Orders, Executive Directives and guidance.
For a copy of Executive Order No. 181, please click here.
For a copy of the Department of Health's Executive Directive, please click here.
For a copy of the Department of Health's Guidance for Health Clubs/Gyms/Fitness Centers, please click here.
Photo by Victor Freitas on Pexels.com
Bordentown Twp, Burlington	 August 27, 2020 August 27, 2020
Trenton Man Busted For Heroin, Fentanyl and Crack Cocaine During Traffic Stop In Bordentown Twp.
BORDENTOWN TOWNSHIP, NJ (BURLINGTON)–The New Jersey State Police have arrested Jason Reeves, 40, of Trenton, N.J. and seized $2000 worth heroin, fentanyl, and crack cocaine during a traffic stop in Bordentown Township, Burlington County.
On Monday, August 24, at 8:20 p.m., Trooper Francis Morris stopped Reeves for a traffic violation southbound on Interstate 295 at milepost 55.7 in Bordentown Township.
During the stop, Tpr. Morris discovered that Brown was in possession of 226 wax folds heroin, fentanyl and crack cocaine. The wax folds seized by troopers were marked with various different stamps. Drug traffickers market their "brand" of drug by ink-stamping the outside of a wax fold with a unique image or phrase such as "Road Runner" and Scorpion King " which are examples recovered from the motor vehicle stop.
Jason Reeves was charged with possession of CDS, posession of CDS with intent to distribute and distribution of prescription legend drugs. He was released pending a future court date.
Charges are mere accusations, and the accused is considered innocent until proven guilty.
Burlington, Mount Holly, Riverside	 August 27, 2020 August 27, 2020
Developer Faces Criminal Charges over Riverside Watch Case Project
Burlington County Prosecutor Scott Coffina and Riverside Township Police Chief William T. Eliason announced that a New York developer who purchased a historic Riverside commercial building to create luxury apartments in the seven-story landmark has been charged with using the credentials of a potential subcontractor to fraudulently gain approval for electrical permits from the township construction office.
Raphael S. Weiss, 60, of East 18th Street in Brooklyn, was charged with Computer Criminal Activity (Second Degree), Impersonation (Second Degree), 36 counts of Forgery/Making (Third Degree), and 36 counts of Forgery/Uttering (Third Degree).
He was taken into custody this morning at the Riverside Township municipal building and lodged in the Burlington County Jail in Mount Holly pending a hearing in Superior Court. The case will now be prepared for presentation to a grand jury for possible indictment.
The investigation began after a contractor who was negotiating with Weiss to be the electrician of record on the Keystone Watch Case Co. redevelopment project noticed that electrical work had begun at the North Pavilion Avenue site, even though no formal agreement had been finalized and he had not applied for any permits.
After being denied access to the construction site by Weiss, the electrician went to the township construction office and was told that 36 permits had already been issued in his name and in the name of his business for work to be done at the property. Further examination revealed that the electrician's signature had been forged on the permits, which were applied for by Weiss, and a counterfeit version of the contractor's state-issued embossing seal had been used to make an imprint.
It is alleged that Weiss initiated the scheme as a way to reduce construction costs by fraudulently utilizing the credentials of the licensed electrician to obtain the necessary permits, then hiring unlicensed, unqualified laborers to complete the work at a much less expensive rate.
Not only was the action illegal, but it also jeopardized the safety of the project, as demonstrated by the fact that the electrical work completed after the fraudulent permits were obtained failed to pass inspection.
The Keystone Watch Case Co. building was constructed in 1908 and manufactured gold cases for watches. The company employed more than 1,000 employees in 1918, making it the largest watch case manufacturer in the world. The business was treasured as a strong engine in the local economy, with many employees living close enough to walk to work.
The company closed in 1956, and the building was placed on the National Register of Historic Places in 1977. It was purchased in 2016 by Brooklyn-based SimShabs Capital Partners LTD, of which Weiss is owner and president.
The plans submitted by Weiss to Riverside Township indicated that the iconic landmark, which has a prominent, highly visible clock tower rising above the roofline, would be converted into 64 luxury apartments.
"This is a heartbreaking setback for Riverside officials who for years have been working to jumpstart a renaissance in their township, with this property as the centerpiece," Prosecutor Coffina said. "This defendant has dimmed the hopes of an entire town by his selfish actions for illegal, personal financial gain, and he will face strong penalties as a result."
Weiss will be prosecuted by Assistant Prosecutor Andrew McDonnell, supervisor of the BCPO Financial Crimes Unit.
The investigation, which remains active, is being conducted by detectives from the BCPO Financial Crimes Unit and the Riverside Township Police Department. The lead investigators are BCPO Detective Nicholas Schieber and Riverside Lt. Louis Fisher.
All persons are considered innocent until proven guilty in a court of law.
Raphael S. Weiss, 60, of East 18th Street in Brooklyn
Department of Justice Requesting Data From Governors of States that Issued COVID-19 Orders that May Have Resulted in Deaths of Elderly Nursing Home Residents
Data will help inform whether the Department of Justice will initiate investigations under the Civil Rights of Institutionalized Persons Act (CRIPA) regarding New York, New Jersey, Pennsylvania and Michigan's response to COVID-19 in public nursing homes
TRENTON, NJ (MERCER)–Today the Justice Department requested COVID-19 data from the governors of states that issued orders which may have resulted in the deaths of thousands of elderly nursing home residents. New York, New Jersey, Pennsylvania, and Michigan required nursing homes to admit COVID-19 patients to their vulnerable populations, often without adequate testing.
For example, on March 25, 2020, New York ordered: "No resident shall be denied re-admission or admission to [a nursing home] solely based on a confirmed or suspected diagnosis of COVID-19. [Nursing homes] are prohibited from requiring a hospitalized resident who is determined medically stable to be tested for COVID-19 prior to admission or readmission."
"Protecting the rights of some of society's most vulnerable members, including elderly nursing home residents, is one of our country's most important obligations," said Assistant Attorney General for Civil Rights Division Eric Dreiband. "We must ensure they are adequately cared for with dignity and respect and not unnecessarily put at risk."
According to the Centers for Disease Control, New York has the highest number of COVID-19 deaths in the United States, with 32,592 victims, many of them elderly. New York's death rate by population is the second highest in the country with 1,680 deaths per million people. New Jersey's death rate by population is 1,733 deaths per million people – the highest in the nation. In contrast, Texas's death rate by population is 380 deaths per million people; and Texas has just over 11,000 deaths, though its population is 50 percent larger than New York and has many more recorded cases of COVID-19 – 577,537 cases in Texas versus 430,885 cases in New York. Florida's COVID-19 death rate is 480 deaths per million; with total deaths of 10,325 and a population slightly larger than New York.
The Department of Justice's Civil Rights Division is evaluating whether to initiate investigations under the federal "Civil Rights of Institutionalized Persons Act" (CRIPA), which protects the civil rights of persons in state-run nursing homes, among others. The Civil Rights Division seeks to determine if the state orders requiring admission of COVID-19 patients to nursing homes is responsible for the deaths of nursing home residents.
On March 3, 2020, the Attorney General announced the Justice Department's National Nursing Home Initiative. This is a comprehensive effort by the department, led by the Elder Justice Initiative and in strong partnership with the U.S. Department of Health and Human Services that uses every available tool to pursue nursing homes that provide substandard care to their residents. As announced on April 10, 2020, the department is also investigating the Soldiers' Home in Holyoke, Massachusetts, where COVID-19 has taken the lives of at least 76 residents. https://www.justice.gov/opa/pr/federal-investigation-conditions-nursing-home-veterans-massachusetts-announced
The data requests and Soldiers' Home investigation are not accusations of fault or wrongdoing by the states or any other individual or entity, and the department has not reached any conclusions about these matters.
Mercer County, Trenton	 August 27, 2020 August 27, 2020
Trenton Man Sentenced To 10 Years For Role In Heroin Trafficking Conspiracy
TRENTON, NJ (MERCER)–A Mercer County, New Jersey, man was sentenced today to 120 months in prison for his role in a large drug trafficking conspiracy that distributed more than one kilogram of heroin in Trenton and the surrounding area, U.S. Attorney Craig Carpenito announced.
Davias Taylor, a/k/a "Vicey," 28, of Trenton, previously pleaded guilty before Chief U.S. District Judge Freda L. Wolfson to an information charging him with one count of conspiracy to distribute and possess with intent to distribute one kilogram or more of heroin. Chief Judge Wolfson imposed the sentence today in Trenton federal court.
In October 2018, Taylor and 25 other members of a drug trafficking conspiracy operating in Trenton were charged with conspiracy to distribute heroin. On Feb. 27, 2020, a grand jury returned a 10-count second superseding indictment charging Jerome Roberts, a/k/a "Righteous," a/k/a "Lee"; David Antonio, a/k/a "Papi," a/k/a "Pop," a/k/a a/k/a "Santiago Ramirez"; Timothy Wimbush, a/k/a "Young Money"; Taquan Williams, a/k/a "Trip"; Jubri West; Dennis Cheston Jr., a/k/a "Beans"; and Wayne K. Bush with various crimes relating to the drug-trafficking conspiracy, as well as firearms offenses. To date, 23 defendants have pleaded guilty in connection with their participation in the conspiracy.
From as early as October 2017 to October 2018, the defendants and others engaged in a narcotics conspiracy that operated in the areas of Martin Luther King Boulevard, Sanford Street, Middle Rose Street, Southard Street, Hoffman Avenue, and Coolidge Avenue in Trenton, and that sought to profit from the distribution of heroin and numerous other controlled substances. Through the interception of telephone calls and text messages pursuant to court-authorized wiretap orders, controlled purchases of heroin, the use of confidential sources of information, and other investigative techniques, law enforcement learned that defendants Jakir Taylor and Jerome Roberts obtained regular supplies of hundreds of "bricks" of heroin from defendant David Antonio, to whom they referred as "Papi." The investigation revealed that during the conspiracy, Davias Taylor met David Antonio and introduced him to his conspirators, Jakir Taylor and Jerome Roberts, so that Antonio could supply the conspiracy with significant quantities of heroin. Davias Taylor himself also obtained and redistributed significant quantities of heroin for profit.
In addition to the prison term, Davias Taylor was sentenced five years of supervised release.
U.S. Attorney Carpenito credited special agents of the FBI, Newark Division, Trenton Resident Agency, under the direction of Special Agent in Charge George M. Crouch Jr.; special agents of the Bureau of Alcohol, Tobacco, Firearms, and Explosives, Newark Division, Trenton Field Office, under the direction of Special Agent in Charge Charlie J. Patterson; officers of the Trenton Police Department, under the direction of Police Director Sheilah Coley; officers of the Princeton Police Department, under the direction of Chief of Police Nicholas Sutter; officers of the Ewing Police Department, under the direction of Chief of Police John P. Stemler III; officers of the Burlington Township Police Department, under the direction of Police Director Bruce Painter; and detectives of the Burlington County Prosecutor's Office, under the direction of Prosecutor Scott A. Coffina, with the investigation leading to today's sentencing. He also thanked officers of the New Jersey State Police, under the direction of Superintendent Col. Patrick J. Callahan; detectives of the Mercer County Prosecutor's Office, under the direction of Prosecutor Angelo Onofri; officers of the Mercer County Sheriff's Office, under the direction of Sheriff John A. Kemler; and members of the New Jersey State Board of Parole for their assistance in the case.
The government is represented by J. Brendan Day, Attorney-in-Charge of the U.S. Attorney's Office's Trenton Office, and Assistant U.S. Attorney Alexander Ramey of the U.S. Attorney's Office's Criminal Division in Trenton.
This case was conducted under the auspices of the Organized Crime Drug Enforcement Task Force (OCDETF) and the FBI's Greater Trenton Safe Streets Task Force, a partnership between federal, state and local law enforcement agencies to enhance the identification, apprehension, and prosecution of individuals involved in gang-related activities, violent crime, and drug distribution in and around the greater Trenton area. The principal mission of the OCDETF program is to identify, disrupt and dismantle the most serious drug trafficking, weapons trafficking, and money laundering organizations and those primarily responsible for the nation's illegal drug supply.
The charges and allegations against the remaining defendants are merely accusations and those defendants are presumed innocent unless and until proven guilty.
Defense counsel: Victor A. Afanador Esq., Newark
Hamilton, Hamilton, Mercer County	 August 27, 2020
Hamilton Man Arrested for Possessing and Distributing Child Pornography
HAMILTON TOWNSHIP, NJ (MERCER)–A Hamilton Township man has been arrested and charged with possessing and distributing thousands of files of child pornography, Mercer County Prosecutor Angelo J. Onofri reported.
Arnulfo Santana Jr., 21, of Hamilton, NJ, is charged with two counts of second-degree endangering the welfare of a child for possession with the intent to distribute and distribution of child pornography, as well as one count of third-degree possession of child pornography. Santana is being held in the Mercer County Correction Center in Hopewell pending a detention hearing.
"We want offenders to know we are out there online, protecting our children," Prosecutor Onofri said. "We will use every investigative tool at our disposal to aggressively pursue and prosecute these predators that attempt to exploit our most innocent victims."
An investigation into the sexual exploitation of children online ensued after the prosecutor's Internet Crimes Against Children (ICAC) Unit received a cyber tip. On Thursday morning, ICAC detectives, with assistance from the prosecutor's Special Victims Unit and Homeland Security Investigations, executed a search warrant at Santana's Hamilton home and took him into custody without incident.
Arnulfo Santana Jr., 21, of Hamilton, NJ
Lakehurst, Ocean County, Toms River	 August 27, 2020
20 Year Old Lakehurst Man Arrested On Numerous Charges In Toms River
Jaylin Evans, 20, was arrested and charged with Aggravated Assault, Terroristic Threats, Criminal Mischief, Unlawful Possession of a Weapon, False Imprisonment, Possession of a Weapon for an Unlawful Purpose, Simple Assault, Possession of a Large Capacity Magazine.
TOMS RIVER, NJ (OCEAN)–On Wednesday August 26, 2020 at approximately 12:00 PM multiple police units responded to the Main Street Apartments in reference to a civil matter involving a handgun. The victim stated suspect Jaylin Evans, 20 of Lakehurst, pointed a handgun at her during an argument. He then struck her in the head and pushed her into the walls of the residence, blocking her path and not allowing her to leave, stating numerous times that he would kill her. Before fleeing the residence, he damaged the victim's cellular phone and television.
Police officers located the suspect in a neighboring apartment and he was placed under arrest. A consent to search the apartment was signed by the tenant and revealed a backpack owned by the suspect. Inside the backpack was a loaded 9MM handgun which had an extended magazine. An additional magazine containing 4 rounds was located in the backpack as well. Jaylin Evans was arrested and charged with Aggravated Assault, Terroristic Threats, Criminal Mischief, Unlawful Possession of a Weapon, False Imprisonment, Possession of a Weapon for an Unlawful Purpose, Simple Assault, Possession of a Large Capacity Magazine. He is lodged on Ocean County Jail.
The media and the public are reminded that criminal charges are accusations only. Every criminal defendant is presumed innocent unless and until proven guilty in court.
Man Makes Terrorist Threats In Hamilton
HAMILTON TOWNSHIP, NJ (MERCER)–On August 26, 2020 at approximately 2:21 PM, Hamilton Police were dispatched to the area of the Hamilton Township Library located at 1 Justice Samuel A. Alito Jr. Way, on a report of a male calling 9-1-1 multiple times claiming he was going to shoot somebody on August 27, 2020. Officers checked the area but were unable to locate anybody. Officers checked the phone number and were able to find a subscriber name. Detectives then located the subscriber and were able to identify the male on the phone as William Gonzalez-Abad. Gonzalez-Abad was later located and placed under arrest. He is charged with Terroristic Threats and Improper Use of Emergency 9-1-1.
Anyone with any information regarding this incident is asked to contact Detective Tom Clugsten of the Hamilton Police Division's Criminal Investigations Section at 609-581-4027 or the Hamilton Police Crime Tip Hotline at 609-581-4008.
William Gonzalez-Abad
Middlesex County, South Brunswick	 August 27, 2020 August 27, 2020
Arrest Made For Cyber Harassment Calls Made To Local Restaurants
Sudeep Khetani, 34, of Kendall Park also involved in another incident here: Previous MidJersey.News article here from April 10, 2020 here: South Brunswick Police Charge Suspect Exploiting the Goodwill of Local Pizzerias During Pandemic
SOUTH BRUNSWICK, NJ (MIDDLESEX)–On August 25th, 2020, following an extensive investigation by the South Brunswick Police Department and the Middlesex County Prosecutor's Office, an arrest was made relating to numerous cases of cyber harassment committed between January 15th and April 9th, 2020.
Sudeep Khetani, 34, of Kendall Park, made several hundred calls to numerous local restaurants using false phone numbers, ordered thousands of dollars worth of food without intent to pay for or pick up the food, and used harassing, threatening, sexually explicit, and biased comments against employees who answered the phone. In addition, Khetani is a suspect in similar incidents in several surrounding townships.
South Brunswick Police Department Chief Raymond J. Hayducka praised Detective Tim Hoover's tenacity in the case. "Detective Hoover filed many subpoenas, conducted numerous interviews, and exhausted all investigative means to bring this case to a successful conclusion. His hard work put an end to Khetani's alarming actions."
Khetani's actions came at the height of the pandemic when many local restaurants were struggling to stay afloat, causing additional hardship to their owners.
Khetani was also charged with Promoting Prostitution stemming from an unrelated 2019 incident.
After Khetani was arrested, he was lodged in the Middlesex County Adult Correctional Center pending his first court appearance.
http://nixle.us/C5XB8
Sudeep Khetani, 34, of Kendall Park
Sudeep Khetani age 34 from April 10, 2020 article.
Brick, Mercer County, Ocean County, Other Towns, Trenton	 August 27, 2020
New Jersey Board of Massage and Bodywork Therapy Permanently Revokes License of Massage Therapist Who Inappropriately Touched Female Client During Massage
Board's Action is Part of Ongoing Crackdown on Sexual Misconduct & Abuse by Licensed Professionals
www.nj.gov/oag/newsreleases20/20200825_18KT00973200-Popper-Final-Order.pdf
TRENTON, NJ (MERCER)–Furthering its efforts to protect the public from sexual misconduct and abuse in professional settings, the Division of Consumer Affairs ("the Division") today announced that the New Jersey Board of Massage and Bodywork Therapy ("the Board") has permanently revoked the license of a massage therapist who engaged in inappropriate and unwanted sexual contact with a female client during a massage session at a Hand and Stone spa in Somers Point.
John R. Popper, 48, of Little Egg Harbor is permanently barred from working as a massage therapist in New Jersey under a Final Order filed by the Board this week. Popper is the third massage therapist this year — and the ninth in the last 12 months — to have his license revoked by the Board as a result of sexual misconduct in the workplace.
Concerns about unwanted sexual contact in professional settings have prompted the Division, under the direction of Attorney General Gurbir S. Grewal, to undertake a sweeping review of how its 51 professional boards address allegations involving sexual misconduct and abuse by its licensees and applicants to ensure that boards uniformly adopt best practices and enforce their rules. The boards oversee approximately 720,000 active licensed professionals, from accountants and doctors to plumbers, veterinarians, and massage therapists.
The review, which is currently underway, is evaluating how boards screen applicants for licenses, approach investigations of alleged misconduct and discipline and engage with complainants who report abuses by a licensee or applicant. "No client or patient should ever have to fear for their personal safety while interacting with a licensed professional in this state," said Attorney General Grewal. "We are committed to ensuring that all our professional boards hold licensees to the same strict standards, and act swiftly to address allegations of sexual misconduct and abuse involving licensees. By revoking the licenses of massage therapists who prey on their clients, the Board is carrying out its duty to protect the public."
"When you see a massage therapist you put your trust in their hands," said Paul R. Rodríguez, Acting Director of the Division of Consumer Affairs. "Therapists who violate that trust can cause real and long-lasting damage to their victims and are a danger to our community. We are pleased that the Board, through its actions, is sending a message that this kind of conduct will not be tolerated."
Popper is the latest massage therapist disciplined for inappropriately touching a client. On July 31, 2020, the Board voted unanimously to permanently revoke Popper's license, effective immediately, after Popper was criminally convicted of harassment by offensive touching in Somers Point Municipal Court for placing his hand on a client's vagina during a massage. Popper was originally charged with criminal sexual contact but the charge was downgraded to harassment, a disorderly persons offense, and remanded to municipal court. The Board accepted the State's argument that Popper's license should be revoked on the grounds that, among other things, he engaged in professional misconduct and committed a crime of moral turpitude.
In a Final Order filed on Aug. 25, 2020, the Board concluded that Popper's conduct was "so egregious and morally reprehensible, and so fundamentally at odds with anything that we would expect of a massage therapist that nothing short of permanent revocation would be sufficient to protect the public health, safety and welfare."
Since July 2019, the Board has revoked the licenses of eight other massage therapists for sexual misconduct.
Asad Aliyev – License permanently revoked on July 25, 2020, for allegedly touching a female client inappropriately during a massage therapy session at a Hand and Stone spa in Allendale.
Aaron Coile – License revoked on January 28, 2020, for allegedly inappropriately touching a female client during a massage therapy session at the Sage Body and Mind spa in Voorhees.
Premkumar Perumal – License permanently revoked on October 22, 2019, for allegedly touching a female client inappropriately during a massage therapy session at a Hand and Stone Massage & Facial Spa in Clark. Perumal also allegedly inappropriately touched another female client while working at a Massage Envy in Hoboken.
Magdy Masek – License permanently revoked on October 22, 2019, for allegedly inappropriately touching a female client during a massage therapy session at a Massage Envy in Piscataway.
Frank Giordano – License permanently revoked on September 24, 2019, for allegedly touching two female clients inappropriately during massage therapy sessions at Alternative Bodyworks in Nutley.
Michael Egan – License permanently revoked on September 19, 2019, for allegedly inappropriately touching a female client during a massage therapy session at a Massage Envy in Closter.
Leonardo Drittij – License permanently revoked on September 18, 2019, for allegedly touching a female client inappropriately, engaging in a conversation of an intimate sexual nature with her, and failing to drape her properly during a massage therapy session at a Massage Envy.
Jonathan Higgins – License permanently revoked on July 16, 2019, for allegedly inappropriately touching a female client during a massage therapy session at a Hand and Stone Massage & Facial Spa in Brick. Higgins has been charged with sexual assault in connection with that alleged incident.
In addition to taking disciplinary action against licensees for alleged sexual contact with clients, the Board has adopted new rules to help prevent and detect sexual misconduct and abuse in the industry. Those rules, among other things:
Require massage therapists to notify the Board of criminal, civil, administrative, and employment actions against them. Every licensee is required to notify the Board within 10 days of action against the licensee by criminal authorities, including an arrest, indictment, or conviction; within 10 days of the licensee being named in a civil, criminal, or administrative proceeding involving misconduct relating to his or her practice; within 10 days of disciplinary action by any state licensing authority; and within 10 days of action against the licensee by an employer based on client care concerns.
Require massage therapists to report misconduct by others. Every licensee is required to report any incident or series of incidents that the licensee believes may violate the applicable statutes and rules, including violations by other massage therapists of the rules relating to sexual misconduct. Additional reporting requirements apply if a licensee possesses information indicating that another licensee or healthcare professional presents an imminent danger to the public or any individual.
Protect minors from abuse. For clients under the age of 18, licensees need to obtain written consent of the client's parent or legal guardian before providing massage or bodywork services. For clients under the age of 16, the client's parent or legal guardian would need to be in the room while the services are provided.
Investigators with the Enforcement Bureau within the Division of Consumer Affairs conducted investigations in these cases. Deputy Attorney General Daniel Hewitt, of the Professional Boards Prosecution Section within the Division of Law, represented the State in the Popper matter. Deputy Attorney General Roman Guzik, of the Consumer Affairs Counseling Section within the Division of Law, represented the State in the other matters. Clients who believe that they have been treated by a licensed massage therapist in an inappropriate manner can file a complaint online by visiting the State Division of Consumer Affairs website or by calling 1-800-242-5846 (toll free within New Jersey) or 973-504- 6200 to receive a paper complaint form by mail. * * *The mission of the Division of Consumer Affairs, within the Department of Law and Public Safety, is to protect the public from fraud, deceit, misrepresentation and professional misconduct in the sale of goods and services in New Jersey through education, advocacy, regulation and enforcement. The Division pursues its mission through its 51 professional and occupational boards that oversee 720,000 licensees in the state, its Regulated Business section that oversees 60,000 NJ registered businesses, as well as its Office of Consumer Protection, Bureau of Securities, Charities Registration section, Office of Weights and Measures, and Legalized Games of Chance section.
Photo by Breakingpic on Pexels.com
Mercer County, Robbinsville, Robbinsville	 August 27, 2020 August 27, 2020
Box Truck Vs Pickup, NJ Turnpike At Exit 7A Leaves 1 Injured
ROBBINSVILLE TOWNSHIP, NJ (MERCER)–The Robbinsville Township Fire Department, Bordentown Township Fire Department and Hightstown Fire along with EMS were dispatched to NJ Turnpike mile marker 60 south bound inner near Exit 7A for an accident with entrapment. The accident occurred around 3:00 am when a box truck and a pick up truck collided for an unknown reason. From the scene a box truck can be seen on its side and a pickup truck also damaged.
When Robbinsville firefighters and EMS arrived the occupants of the vehicles were able to escape on their own. Hightstown First Aid transported one person to RWJ at Hamilton Hospital.
NJ State Police are investigating and a towing company are still on scene at the time of this report removing the vehicles. The left and center lane are blocked and should reopen when the accident is cleared. No further information is available about the accident.
Lakehurst, Mercer County, Ocean County, Trenton	 August 27, 2020 August 29, 2020
New Jersey Task Force 1 Deploys to Louisiana in Response to Hurricane Laura
See updated MidJersey.news story here: NJ Task Force 1 Returns Home From Hurricane Laura
80 Members of NJ-TFT1 left NJ early this morning deploying to Baton Rouge, Louisiana
August 27, 2020 Update August 29, 2020
NJ-TF1 Update🇺🇸
In response to Hurricane Laura, FEMA has adjusted the federal response to meet local needs.
NJ-TF1 has received demobilization orders and begun the process of heading home.
New Jersey Task Force 1 (NJ-TF1) has been activated as members of the National Urban Search & Rescue (US&R) Response System and will be deploying to assist with the rescue and recovery efforts resulting from the effects of Hurricane Laura.
NJ-TF1 deployed as a Type 1 Team consisting of 80 team members, three tractor-trailers, two box trucks, five F-450 utility vehicles, two crew carriers, an F-250 towing vehicle, two passenger vans, two utility terrain vehicles, and a fleet service truck. A water rescue component of six boats with trailers and a water support trailer were also deployed.
NJ-TF1 is en route to the current staging area in Baton Rouge, Louisiana. This will be the team's seventh deployment as a FEMA US&R Team.
The team is en route to their current destination of Baton Rouge, Louisiana in response to Hurricane Laura.
Sunrise Update:

redpajama_set_name: RedPajamaCommonCrawl


text:
\section{Introduction}
In geodynamics, computational experiments are often required to understand phenomena that occur over long time periods or at great depths.  Over the past several decades, the field of geodynamics has increasingly used computational simulations to model phenomena based on well established physics principles.  These simulations investigate issues such as how convection in the mantle affects the creation and subduction of tectonic plates \cite{JGRB:JGRB12209}, how tectonic deformation occurs over long time periods and causes earthquakes \cite{Williams:2005vz}, and how the composition of the earth affects global and regional scale seismic wave propagation \cite{Komatitsch:1999ki}, to name a few.

The research often involves a student or professor writing a computer code to solve a particular problem.  Even though these codes could potentially be used for related research, due to the cost of maintenance and support they are frequently abandoned.  This means that similar codes are often developed by multiple researchers, wasting time and money.  Furthermore, the time investment to write codes for parallel systems or use advanced computation technology (GPUs, vector processors, etc) means that most codes are relatively rudimentary and used only for specialized problems.

In response to this problem, the NSF funds the Computational Infrastructure for Geodynamics (CIG) to support a) reusable, well-documented geodynamics software that keeps pace with developments in computational technology; b) software building blocks for geodynamics from which state-of-the-art modeling codes can be effectively assembled; and c) strategic partnerships with the larger world of computational science and geoinformatics to ensure best practices in developing community-specific tool kits for scientific computation in solid-Earth sciences.

As part of these efforts, CIG has developed computational infrastructure to support each of these goals.  Recent work at CIG focused on creating a backend setup capable of automatically testing code and generating documentation to support users and developers.  There are multiple goals of the testing infrastructure including: a) automatic confirmation of successful compilation and execution on multiple platforms with different libraries; b) automatic validation of code output/results after changes to code; c) determining bounds of varying scientific results caused by differences in libraries, compilers, hardware, etc.  We believe the lessons learned from developing this infrastructure and working with domain scientists are applicable to other fields of science.

In Section \ref{sec-build-test} we outline the BaTLab system provided by the University of Wisconsin, Madison and how CIG interacts with it to automatically test supported codes.  In Section \ref{sec-vali-veri} we examine how code results may be affected by code changes or different platforms. Finally, in Section \ref{sec-conclusions} we examine what lessons may be applicable to other projects doing scientific code development.

\section{Automated Build and Test}
\label{sec-build-test}

\begin{figure}
\centering
\includegraphics[width=0.48\textwidth,trim=0in 3.8in 4.2in 0in,clip]{backend_diagram}
\caption{Diagram of CIG backend organization.}
\label{fig-cig-backend}
\end{figure}

Figure \ref{fig-cig-backend} shows a general overview of the CIG backend infrastructure.  The key element is the developer who makes changes to a repository.  A backend polling mechanism periodically checks these repositories for changes and adds commands to a queueing system.  The commands include analyzing logs and generating maps of user locations, creating doxygen documentation for updated versions of code, and creating/submitting code tests to the BaTLab setup.  A polling/queuing setup rather than a trigger mechanism is used to avoid losing commands due to machine downtime on the repositories, backend, or testing system.  In this paper we only examine the BaTLab part of this diagram.

CIG uses the BaTLab (Build and Test Lab) system \cite{Pavlo:2006:NBT:1267793.1267814}, developed at the University of Wisconsin at Madison, to help perform automated build and testing.  The details of the BaTLab setup are shown in Figure \ref{fig-batlab-diagram}.  The main interface to the hardware platforms on BaTLab is the Metronome automated build and test system, which interacts with the hardware through the HTCondor distributed computing platform.  The BaTLab system used in this work consists of 15 platforms running on multiple hardware configurations.  The use of the HTCondor system allows sharing of resources among multiple users, sophisticated scheduling and resource allocation, and easy addition of external computing resources.  In particular, this allowed extension of the testing framework to the XSEDE TACC Stampede system where many CIG supported codes are used.

Most codes require support libraries that may not be installed on the operating system so it is necessary to provide precompiled libraries for each code.  To avoid recompiling libraries during each test run, libraries are precompiled through the BaTLab system and stored for use during actual test runs.  This also allows fast and easy testing of codes with different versions of libraries, and simple updating of libraries to new versions and new platforms.

\begin{figure}
\centering
\includegraphics[width=0.48\textwidth,trim=0in 3.2in 4.6in 0in,clip]{batlab_structure}
\caption{Diagram of BaTLab.}
\label{fig-batlab-diagram}
\end{figure}

When a CIG code is submitted to BaTLab for testing several steps occur to configure the system, run the tests, and report the results.  First, the necessary Metronome input files and scripts are dynamically generated for the code from a central database of CIG codes.  This database indicates where the code is stored, what libraries and support files are needed, what platforms to use, and what tests to run.  Dynamically generating test scripts from the database makes it easier to add and support many codes and libraries, avoid redundant files common to multiple codes, and isolate the testing logic in a single place.

Code tests on BaTLab are split into two phases: the build phase - setting up necessary libraries and compiling the code - and the test phase - running the compiled code and checking the outputs.  If the build phase fails the test phase is not run. The results of compiling and testing a code are reported both through email and a web dashboard.  Figure \ref{fig-testing-dashboard} shows the dashboard after testing 8 codes on 15 platforms.  The rows show the code being tested and the columns indicate the platform.  The colors indicate the results of the build and test phases.

CIG has configured 15 geodynamics codes to run on the BaTLab system, out of 23 total supported codes.  The additional codes have not yet been added due to complex library and/or compilation requirements.  However, the 15 configured codes are a good representation of geodynamics simulations, ranging from seismic wave propagation (e.g. SPECFEM variants), mantle convection (Citcom variants, Ellipsis3D, HC), short-term crustal dynamics (RELAX, SELEN), long-term tectonics (Plasti) and magnetohydrodynamics simulation of the geodynamo (Mag, Calypso).

\begin{figure*}[!t]
\centering
\includegraphics[width=0.98\textwidth]{batlab_dashboard}
\caption{BaTLab testing result dashboard. Red indicates a failed build or test, yellow indicates a build/test that is still running, green indicates a success. Grey indicates a test that couldn't run because of a failed build.}
\label{fig-testing-dashboard}
\end{figure*}

\subsubsection*{Lessons Learned}
Based on these tests, CIG has discovered several issues with the supported codes that have been or remain to be corrected.  The most common issue is that many codes are written to work with a particular compiler and use features or flags that are not supported by other compilers.  This appears to be particularly true for Fortran based codes where there are significant differences between supported flags between compilers.  This problem is best solved by using an automated configuration script (such as provided through autoconf or CMake) to test the compiler for flag compatibility rather than using hardcoded flags or compiler names.

Another minor issue is the variability of compiler support for language constructs.  What is considered valid code for some compilers may produce warnings or errors with other compilers, especially for the GNU vs. Portland Group vs. Intel compilers.  Although this is most common for differences of supported language extensions (C++03 vs. C++11 or F77 vs. F95 vs. F03) it also applies to issues among all code such as unused variables, type qualifier issues or NULL references.  These are more difficult to solve through configuration scripts since the issues will depend on the context.  The best solution is to compile the code with each compiler and manually address whatever warnings or errors appear.

\section{Validation and Verification}
\label{sec-vali-veri}
A key aspect of scientific code development is validation and verification of the codes and their outputs. Many scientific codes are developed with minimal testing of their correctness, no evaluation of the differences in output on multiple platforms or compilers, and no way of tracking how subsequent changes to the code affect the results. In this area the meaning of verification will vary depending on the physics being simulated, the calculations performed, and the output generated.  Here we examine two case studies involving verifying the results of codes that represent some of the key simulations performed by CIG supported codes.

\subsection{Changes to Simulation}

\begin{figure}[!t]
\begin{subfigure}[h]{0.5\textwidth}
\centering
\includegraphics[width=0.48\textwidth]{orig_50.png} \includegraphics[width=0.49\textwidth]{conv_50.png}
\caption{T = 50.}
\label{fig-plume-comparison-a}
\end{subfigure}
\begin{subfigure}[b]{0.5\textwidth}
\centering
\includegraphics[width=0.48\textwidth]{orig_150.png} \includegraphics[width=0.485\textwidth]{conv_150.png}
\caption{T = 150.}
\label{fig-plume-comparison-b}
\end{subfigure}
\begin{subfigure}[b]{0.5\textwidth}
\centering
\includegraphics[width=0.49\textwidth]{orig_250.png} \includegraphics[width=0.472\textwidth]{conv_250.png}
\caption{T = 250.}
\label{fig-plume-comparison-c}
\end{subfigure}
\caption{An example of how a minor change to the finite element solver altered the simulation physics. The left figures show the original convection plume development, and the right figures show the new development.}
\label{fig-plume-comparison}
\end{figure}

CitcomS \cite{JGRB:JGRB12209,GGGE:GGGE831} is a finite element code written in C that solves for thermo-chemical convection within a spherical shell.  It uses a finite element approximation to the relevant equations and solves the approximation with an iterative sparse solver.  The velocity and temperature fields are propagated forward in time such that a change in initial conditions or the approximation may cause unexpected effects later.

During development of CitcomS a change was made to the iterative solver to make it more accurate by continuing solver iterations until not only the temperature and pressure solutions converged but also the velocity continuity. However, this change resulted in unexpected effects on evolution of simple plume advection as shown in Figure \ref{fig-plume-comparison}. In this Figure the original results are on the left and new results on the right.  Near the beginning of the simulation at $T=50$ (Figure \ref{fig-plume-comparison-a}), the developing plumes are visually similar in shape.  By $T=150$ (Figure \ref{fig-plume-comparison-b}) there is clear divergence with one plume separating from the side of the domain.  At $T=250$ (Figure \ref{fig-plume-comparison-c}) the results are clearly distinct from each other and it is unclear which simulation result is valid.

\paragraph*{Lessons Learned}
The changes that caused this were on the order of 3-4 lines of code, and the developers were confident that the tighter convergence criterion would not significantly affect the results.  At this time CitcomS did not have an automated result verification system and it was only by chance that this difference was discovered.  Even basic result verification would likely not have detected it since commonly used comparison metrics (boundary heat flux, momentum equation force) were not significantly different between the two simulations.

This clearly indicates the need for rigorous automated testing to be performed on all developed scientific codes.  Even if a change to the code does not affect results for a given setup, due to the complex nature of most scientific codes there is no guarantee that other setups will not be affected. Such tests should be composed while the code is developed rather than afterwards, and any bug that is discovered should have a test composed to ensure it does not reappear later.

\subsection{Effects of Different Platforms}
\begin{figure}
\centering
\includegraphics[width=0.47\textwidth]{mineos_comparison}
\caption{Comparison of Mineos calculation on (A) a laptop with an Intel Core i7 compiled using gfortran, and (B) a cluster with Intel Xeon E5 compiled using ifort.}
\label{fig-mineos-multi-platform}
\end{figure}

Most of the codes supported by CIG have some discrepancy between results calculated on different platforms.  This is caused by minor variations in hardware or software implementation of floating point calculations between platforms.  Here we look at one of the larger differences found in the Mineos code.  Mineos computes synthetic seismograms at specified locations in a spherically symmetric non-rotating Earth by summing normal modes.  Results will vary depending on the ordering of summation, hardware evaluation of the functions comprising the normal modes, and other data storage or manipulation issues introduced by compilers.

Figure \ref{fig-mineos-multi-platform} shows two example signals from Mineos computed on two different platforms.  The bottom graph shows the original signal, the middle graph shows the absolute difference and the top graph shows the relative difference.  Even though both simulations were compiled and run using the exact same configuration and runtime options, the results are significantly different.  The greatest relative difference occurs after the main event (the earthquake wave) has passed, so that the signal of interest has tapered off to almost nothing. That is important because the difference does not, in this particular example, affect the scientific interpretation of the model. The automated testing reveals the difference, and the domain scientist determines whether this difference is significant for the problem under consideration.

\paragraph*{Lessons Learned}
Appropriate methods to compare results for scientific codes are highly application dependent. Since there are minor variations between platforms an exact diff of the output files is not possible. Visually comparing the results is generally not possible because of the automated nature of the system.  Because there are several orders of magnitude difference between the signal at a weak point vs. a strong point, an absolute value comparison will need to have a high cutoff making it less valuable for comparison.  Also, because of the varying signal at each measurement point, dozens of cutoffs would need to be determined to handle each output data set.  As seen in Figure \ref{fig-mineos-multi-platform}, relative difference also does not work well because weaker points in the signal can have very high relative differences (up to 9\% in this case).

In the case of seismogram generating codes we have found a normalized coefficient of correlation to be a good measure of output similarity.  This will automatically adapt to any sort of signal and will find a correlation of nearly 1 for similar results from the tested codes.  For finite element codes other comparisons such as $l^2$-norm may be more appropriate, and CIG is working to develop tools to assist with this.

\section{Conclusions}
\label{sec-conclusions}
Ensuring the validity of scientific codes and developing automated verification systems is an arduous but very important task. This step can be difficult for domain researchers, likely because they do not have the tools or expertise to make such comparisons. We have demonstrated how an automated verification systems can be used to develop a testing infrastructure for use by the scientific community. We use this system to examine why codes may not compile on all platforms, and how minor changes in code can affect the results.

\bibliographystyle{abbrv}

redpajama_set_name: RedPajamaArXiv


'The Promises and Challenges of Targeted Therapy for Cancer: Lessons from Pediatric Leukemia' 6:30 p.m. Sept. 30, Mercer Auditorium, Hoskins Center, 66th and Ranger streets. The event is sponsored by The John A. (Jack) Kolbush Memorial Fund and Memorial University Medical Center. Dr. William Carroll will be the speaker at the program. Free. For information, call 912-350-8115.
Memorial University Medical Center, 4700 Waters Ave. This course gives an overview of reproductive anatomy and physiology and explains the process of labor and delivery and includes a tour of the labor and delivery unit. Cost: $75.
For more information, call 912-350-2676 or go to www.memorialhealth.com.
10 a.m.-2 p.m. Oct. 23, Hoskins Center, 66th and Ranger streets. Girl Scouts of Historic Georgia and Memorial University Medical Center is sponsoring the event for teenage girls and their mothers. There will be zumba, workout tips, make-up tips, a fashion show and more. Free. Registration required. For information, call 912-236-1571 or go to www.gshg.org.
9 a.m. first Saturday, Mary Telfair Women's Hospital, 5353 Reynolds St. The class is recommended for children, ages 2? and older to adjust to their new role as a big brother or big sister. For information, call CareCall at 912-819-3368 or 800-501-4054 or go to www.sjchs.org.
Candler Hospital, 5353 Reynolds St. This special childbirth course is for expectant couples with busy schedules, time constraints or transportation difficulties. A fee is charged. For information and to register, call CareCall at 912-819-3368 or 800-501-4054 or go to www.sjchs.org.
7 p.m. second Tuesday, Candler Heart and Lung Building, 5356 Reynolds St. The group welcomes anyone suffering with this disorder, family members or caregivers interested in learning more about it. For information, call Martyn Hills at 912-651-4094 or 912-398-8877.
6 p.m. second Wednesday, Nancy N. and J.C. Lewis Cancer & Research Pavilion, 225 Candler Drive. For information, call 912-355-5196.
9:45-11:30 a.m. Saturdays, Telfair's Jepson Center for the Arts, 207 W. York St. All are welcome. Flexibility of the body is not required. Please bring a yoga mat and towel. Cost: $10 members; $14 nonmembers. For information, call 912-790-8823.
A non-profit support group of men and women who share their experience, strength and hope in the battle against compulsive overeating. No dues. No fees.
For information, call912-844-4524 or go to www.oa.org.
6:30 p.m. first and third Monday. Candler Professional Building, Room 508, 5353 Reynolds St. The class is for new and expectant parents. Cost: $10; $15 couple. Call CareCall at 912-819-3368 or 800-501-4054 or go to www.sjchs.org. for information and to register.


text:
/*! UIkit 2.27.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
(function(UI) {

    "use strict";

    var Animations;

    UI.component('switcher', {

        defaults: {
            connect   : false,
            toggle    : ">*",
            active    : 0,
            animation : false,
            duration  : 200,
            swiping   : true
        },

        animating: false,

        boot: function() {

            // init code
            UI.ready(function(context) {

                UI.$("[data-uk-switcher]", context).each(function() {
                    var switcher = UI.$(this);

                    if (!switcher.data("switcher")) {
                        var obj = UI.switcher(switcher, UI.Utils.options(switcher.attr("data-uk-switcher")));
                    }
                });
            });
        },

        init: function() {

            var $this = this;

            this.on('click.uk.switcher', this.options.toggle, function(e) {
                e.preventDefault();
                $this.show(this);
            });

            if (!this.options.connect) {
                return;
            }

            this.connect = UI.$(this.options.connect);

            if (!this.connect.length) {
                return;
            }

            this.connect.on('click.uk.switcher', '[data-uk-switcher-item]', function(e) {

                e.preventDefault();

                var item = UI.$(this).attr('data-uk-switcher-item');

                if ($this.index == item) return;

                switch(item) {
                    case 'next':
                    case 'previous':
                        $this.show($this.index + (item=='next' ? 1:-1));
                        break;
                    default:
                        $this.show(parseInt(item, 10));
                }
            });

            if (this.options.swiping) {

                this.connect.on('swipeRight swipeLeft', function(e) {
                    e.preventDefault();
                    if (!window.getSelection().toString()) {
                        $this.show($this.index + (e.type == 'swipeLeft' ? 1 : -1));
                    }
                });
            }

            this.update();
        },

        update: function() {

            this.connect.children().removeClass('uk-active').attr('aria-hidden', 'true');

            var toggles = this.find(this.options.toggle),
                active  = toggles.filter(".uk-active");

            if (active.length) {
                this.show(active, false);
            } else {

                if (this.options.active===false) return;

                active = toggles.eq(this.options.active);
                this.show(active.length ? active : toggles.eq(0), false);
            }

            // Init ARIA for toggles
            toggles.not(active).attr('aria-expanded', 'false');
            active.attr('aria-expanded', 'true');
        },

        show: function(tab, animate) {

            if (this.animating) {
                return;
            }

            if (isNaN(tab)) {
                tab = UI.$(tab);
            } else {

                var toggles = this.find(this.options.toggle);

                tab = tab < 0 ? toggles.length-1 : tab;
                tab = toggles.eq(toggles[tab] ? tab : 0);
            }

            var $this     = this,
                toggles   = this.find(this.options.toggle),
                active    = UI.$(tab),
                animation = Animations[this.options.animation] || function(current, next) {

                    if (!$this.options.animation) {
                        return Animations.none.apply($this);
                    }

                    var anim = $this.options.animation.split(',');

                    if (anim.length == 1) {
                        anim[1] = anim[0];
                    }

                    anim[0] = anim[0].trim();
                    anim[1] = anim[1].trim();

                    return coreAnimation.apply($this, [anim, current, next]);
                };

            if (animate===false || !UI.support.animation) {
                animation = Animations.none;
            }

            if (active.hasClass("uk-disabled")) return;

            // Update ARIA for Toggles
            toggles.attr('aria-expanded', 'false');
            active.attr('aria-expanded', 'true');

            toggles.filter(".uk-active").removeClass("uk-active");
            active.addClass("uk-active");

            if (this.options.connect && this.connect.length) {

                this.index = this.find(this.options.toggle).index(active);

                if (this.index == -1 ) {
                    this.index = 0;
                }

                this.connect.each(function() {

                    var container = UI.$(this),
                        children  = UI.$(container.children()),
                        current   = UI.$(children.filter('.uk-active')),
                        next      = UI.$(children.eq($this.index));

                        $this.animating = true;

                        animation.apply($this, [current, next]).then(function(){

                            current.removeClass("uk-active");
                            next.addClass("uk-active");

                            // Update ARIA for connect
                            current.attr('aria-hidden', 'true');
                            next.attr('aria-hidden', 'false');

                            UI.Utils.checkDisplay(next, true);

                            $this.animating = false;

                        });
                });
            }

            this.trigger("show.uk.switcher", [active]);
        }
    });

    Animations = {

        'none': function() {
            var d = UI.$.Deferred();
            d.resolve();
            return d.promise();
        },

        'fade': function(current, next) {
            return coreAnimation.apply(this, ['uk-animation-fade', current, next]);
        },

        'slide-bottom': function(current, next) {
            return coreAnimation.apply(this, ['uk-animation-slide-bottom', current, next]);
        },

        'slide-top': function(current, next) {
            return coreAnimation.apply(this, ['uk-animation-slide-top', current, next]);
        },

        'slide-vertical': function(current, next, dir) {

            var anim = ['uk-animation-slide-top', 'uk-animation-slide-bottom'];

            if (current && current.index() > next.index()) {
                anim.reverse();
            }

            return coreAnimation.apply(this, [anim, current, next]);
        },

        'slide-left': function(current, next) {
            return coreAnimation.apply(this, ['uk-animation-slide-left', current, next]);
        },

        'slide-right': function(current, next) {
            return coreAnimation.apply(this, ['uk-animation-slide-right', current, next]);
        },

        'slide-horizontal': function(current, next, dir) {

            var anim = ['uk-animation-slide-right', 'uk-animation-slide-left'];

            if (current && current.index() > next.index()) {
                anim.reverse();
            }

            return coreAnimation.apply(this, [anim, current, next]);
        },

        'scale': function(current, next) {
            return coreAnimation.apply(this, ['uk-animation-scale-up', current, next]);
        }
    };

    UI.switcher.animations = Animations;

    // helpers

    function coreAnimation(cls, current, next) {

        var d = UI.$.Deferred(), clsIn = cls, clsOut = cls, release;

        if (next[0]===current[0]) {
            d.resolve();
            return d.promise();
        }

        if (typeof(cls) == 'object') {
            clsIn  = cls[0];
            clsOut = cls[1] || cls[0];
        }

        UI.$body.css('overflow-x', 'hidden'); // fix scroll jumping in iOS

        release = function() {

            if (current) current.hide().removeClass('uk-active '+clsOut+' uk-animation-reverse');

            next.addClass(clsIn).one(UI.support.animation.end, function() {

                setTimeout(function () {
                    next.removeClass(''+clsIn+'').css({opacity:'', display:''});
                }, 0);

                d.resolve();

                UI.$body.css('overflow-x', '');

                if (current) current.css({opacity:'', display:''});

            }.bind(this)).show();
        };

        next.css('animation-duration', this.options.duration+'ms');

        if (current && current.length) {

            current.css('animation-duration', this.options.duration+'ms');

            current.css('display', 'none').addClass(clsOut+' uk-animation-reverse').one(UI.support.animation.end, function() {
                release();
            }.bind(this)).css('display', '');

        } else {
            next.addClass('uk-active');
            release();
        }

        return d.promise();
    }

})(UIkit);

redpajama_set_name: RedPajamaGithub