text:
Jarrod Ramos (AP/Salon)
Exclusive: Inside accused Annapolis shooter's alt-right theology of mass murder
Jarrod Ramos had connections to vengeful right-wing theology, and a hero complex drawn from violent anime
Check out this article! https://www.salon.com/2018/07/22/exclusive-inside-accused-annapolis-shooters-alt-right-theology-of-mass-murder/
Jonathan Hutson
July 22, 2018 10:00AM (UTC)
When news broke of an active shooting at the Capital Gazette, my local newspaper in Annapolis, Maryland, I tweeted editor Rick Hutzell to ask if he was safe, and how I could help. When police announced the arrest of 38-year-old Jarrod Ramos as the suspect in the mass shooting, I, like many others, delved into his Twitter accounts.
I was shocked when I realized that Ramos – whom a grand jury just indicted on 23 charges, including five counts of first-degree murder – had contacted me two years ago. He taunted me in response to the Capital's March 2015 report about how I had helped law enforcement thwart a mass shooting threat made on Twitter against grade school kids and Jews in Kalispell, Montana, by a man named David J. Lenio.
What I learned about Ramos, as I followed his Twitter trail, reveals as strange a worldview as one could imagine informing a mass-murder scenario. There are at least two main influences evident in Ramos' tweets. One is a worldview taken from the theocratic wing of the alt-right, and the other comes from a violent anime subculture centered around a popular manga, anime and film series titled "Berserk." Taken together, they provide a Rosetta Stone that allows us to translate the significance of two religious visions, in relation to each other, as they existed in Ramos' mind.
I believe these mutually informing visions allowed Ramos to cast himself as a vigilante hand of God. His theocratic worldview, combined with his immersion in the world of "Berserk," helps to solve the mystery of his cryptic, final tweet and illuminate his possible motive for mass murder.
READ MORE: Donald Trump's startling global agenda: Taking white supremacy worldwide
For all of Ramos' vividly imagined righteousness, this story begins with a woman-hating, angry man. That there is a misogynist root to Ramos' rage-filled rampage is no surprise. Numerous male mass murderers have backgrounds of stalking and harassing women, especially online. Ramos' beef with the Capital goes back to his ill-conceived defamation suit against the paper, its publisher and a columnist for reporting on his guilty plea for the online harassment of a woman he had known slightly in high school. In court documents he objected to the Capital's report that, after he had not heard from the woman in months, he told her, "Fuck you, leave me alone." Ramos told the judge that he felt it unfair that the reporter had not allowed him to offer an explanation. He complained to the judge, "That carries a clear implication that something is wrong inside my head, that I'm insane."
Whether Ramos is sane is a matter for the court to determine. But there is an explanation for these hostile words – which he cribbed from the protagonist in "Berserk" – and it has to do with Ramos' worldview, which needs to be more clearly understood.
The alt-right half of the Rosetta Stone
I believe Ramos contacted me initially because the Capital had reported on my connection to David Lenio, a white nationalist who had tweeted threats of a possible mass shooting, and also because I was researching and writing about ties between a local politician named Michael Peroutka and a right-wing group called the League of the South.
The League is a theocratic, secessionist organization whose leader, Michael Hill, had called for the formation of death squads targeting journalists, elected officials and other members of "the elite." In his essay "A Bazooka in Every Pot," Hill described such an assassination campaign as part of "fourth-generation warfare," a style of decentralized conflict that blurs the lines between war and politics, combatants and civilians.
Hill wrote: "To oversimplify, the primary targets will not be enemy soldiers; instead, they will be political leaders, members of the hostile media, cultural icons, bureaucrats, and other of the managerial elite without whom the engines of tyranny don't run."
That was not Hill's only overt call to violence. He followed up with another essay calling for young men of "Christendom" to become "citizen-soldiers" to destroy the "galloping tyranny" of our time.
As for Peroutka, he is a neo-Confederate theocrat who thinks that the wrong side won the Civil War and that our real national anthem is "Dixie." He is also a former board member of the League, which had endorsed his successful 2014 campaign for a seat on Maryland's Anne Arundel County Council, running as a Republican. This is the same League that helped organize the infamous torch-lit Unite the Right march in Charlottesville, Virginia, last summer.
Over a period of nearly seven years, Peroutka is one of only two politicians whom Ramos tweeted about – the other being Donald Trump, who has repeatedly vilified journalists.
Jarrod Ramos is not affiliated with any political party, and there is no evidence that he was politically motivated or that he acted on anyone's orders. On the other hand, as Salon's Paul Rosenberg has reported, he was influenced by the rhetoric and ideology of the racist alt-right. And like Hill, Ramos showed bold belligerence toward managerial elites whom he viewed as enemies.
For example, Ramos wrote in his @EricHartleyFrnd Twitter bio (which he named in apparent mockery of a former Capital columnist whom Ramos had sued unsuccessfully for defamation), "Dear reader: I created this page to defend myself. Now I'm suing the shit out of half of AA County and making corpses of corrupt careers and corporate entities."
Justice and public safety require that we consider the context, including multiple influences and possible triggers, when a suspect faces mass murder charges. Therefore, it is fair and necessary to ask whether President Trump's demagoguery against journalists could trigger some lone nut to murder them. As researcher Chip Berlet has written, sociologists call such a violent response to coded rhetoric "scripted violence" – and "heroes know which villains to kill." Followers thus don't require specific orders, but gather a sense of validation and righteousness in carrying out a violent campaign of societal purification against people designated as corrupting influences.
This suspect had a simmering feud for seven years with the Capital, its former publisher and Eric Hartley, the former columnist whom he had sued unsuccessfully. Ramos created a website on which he posted documents and communications about his case, describing himself as an agent of "the Inquisition" and "a crusader" who answered to a "Higher Authority" than civil government and who meted out literal "carnage" to his foes.
Ramos wrote of his perceived enemies: "The authority that permits their power also stands poised to punish its abuse. Even kings must answer to God, and a modern day Inquisition is at hand. The potential judgement is no less severe; the carnage differs only in literal terms. As this search for Truth commences, a crusader they could not kill approaches."
His crusade targeted court officials as well as journalists, whom he considered dishonest. For example, Ramos tweeted a quote from German poet Paul Gerhardt: "When a man lies, he murders some part of the world." Ramos concluded, "Time to slay some murderous shitbag esquires." In another tweet criticizing "inequity in the MD justice system," he said: "Here's to Higher Authority hearing and #hurting."
To Ramos, defamation is a violation of common law but, more important, a violation of God's law that is worthy of hellfire.
For example, he once tweeted: "Catholicism still says liars go to hell."
He also tweeted, without attribution or citation, a quote from a 16th-century church court case: "Again, my unruly tongue, if it were not punished, it would not only set more of you on fire, but it would bolden others to do the like." This quote is from a confession to defamation in Mitford v. Shaw, an ecclesiastical court case from 1569-70. Church courts in England had jurisdiction over cases of defamation when the plaintiff's claim was not for money damages but for the correction of a sin. (Common law courts oversaw claims for money damages.) Church courts sentenced violators to do public penance, on pain of excommunication.
In the Mitford case, when the church court found Charles Shaw guilty of slander, he did penance by standing up in church, wearing linen apparel, and reading his confessional statement, which equates slander to murder, worthy of divine retribution.
Shaw stated, "I acknowledge thus to slander my Christian brother is an heinous offence, first towards God, who hath straightly forbidden it in his holy laws, accounting it to be a kind of murdering of my neighbor, and threatening to punish it with hellfire and the loss of the kingdom of heaven."
Modern-day theocrats, such as Peroutka, would like to see ecclesiastical courts replace the American judicial system. At a 2016 Summer of Justice rally in Wichita, Kansas, which took place the same week as the Republican National Convention in Cleveland, Peroutka called on his fellow Christian nationalists to "take dominion over these positions of civil authority" in order to "interpose" against laws that don't square with their notion of God's law.
Peroutka claimed that the only valid laws are ones which adhere to this fundamentalist vision of the Constitution and the Bible. "What if the Congress did pass a law allowing abortion? And then what if a sitting president signed it and a sitting court validated it?" he asked. "Would it be the law? No, of course not." Then he slung on his guitar and filmed the crowd for a video for his new song, "Courts cannot make law."
Near the end of the Summer of Justice, the anti-abortion group Operation Save America staged a kangaroo "ecclesiastical court" which declared that Supreme Court rulings on abortion rights, LGBTQ rights, marriage equality and the removal of government-sponsored prayer in schools were contrary to God's law. Eight "judges" took turns reading "charges" against the Supreme Court and then declared their decisions "null and void."
The judges included the Rev. Matt Trewhella, leader of the Milwaukee-based Missionaries to the Preborn, who had signed a statement in 1993 declaring that the murder of abortion providers was "justifiable homicide." Convicted murderers Paul Hill and Michael Griffin later unsuccessfully used "justifiable homicide" defenses in their trials for killing abortion providers.
Ramos' tweets make clear that in his theological view, journalists who had allegedly framed him and court officers who had supposedly lied about him were as guilty as murderers and would ultimately answer to God. He saw himself as an agent of divine retribution. He was not subtle about how he would punish the sin of defamation.
He tweeted: "Awaiting reprisal, death will be their acquisition." This is a misquoted lyric from a thrash metal song by Slayer, "Raining Blood." The actual line is: "Awaiting reprisal, death will be their acquittance." The song ends with a vision of victims' blood deluging a revenge-driven killer: "Raining blood from a lacerated sky, bleeding its horror, creating my structure. Now I shall reign in blood!"
"Ramos came to see himself as some kind of vigilante for righteousness, casting himself for example as a 'crusader' and gunning down innocent people in a newsroom," Political Research Associates analyst Frederick Clarkson told Salon. This vision was "not unlike the militaristic, millennial vision of Michael Hill," he continued. "Last year [Hill] rallied what he calls the Southern Defense Force, which he envisions as not just a modern Confederate army but the 'Army of the True Living God.'"
So it makes sense that Ramos, who has metaphorically casts himself as a Christian holy warrior, would identify with Peroutka, a dyed-in-the-wool theocrat who has argued that civil servants must disobey any laws believed to be contrary to God's law. Ramos tweeted three times in defense of Peroutka, once to crow to Rema Rahman, a journalist at the Capital, about Peroutka's 2014 election to the Anne Arundel County Council. He tweeted: "Peroutka won and you lost @remawriter. Get over it. You're already going to Hell, so why not concern yourself with more relevant matters?"
He tweeted again to tell Rahman to "shut the fuck up" after she wrote a piece reporting that illegal robocalls might have helped put Peroutka's campaign over the top. He said: "It's not your place, so shut the fuck up @capgaznews. Peroutka's columns don't get the pickled shit sued out of him."
He also tweeted: "Why are they so obsessed about Peroutka @capgaznews?" He added the hashtag #CapDeathWatch.
Ramos, who nursed grievances against perceived injustices, and who had sued a newspaper for defamation, also identified with Donald Trump. In response to an opinion column in the Capital that questioned Trump's qualifications for the presidency, he tweeted a warning: "Referring to @realDonaldTrump as 'unqualified' @capgaznews could end badly (again)." His tweet linked to a Wall Street Journal article about Trump's lawsuit against Univision, claiming breach of contract and defamation.
The next day, Ramos tweeted: "Fuck you, leave me alone," and linked to a Maryland appellate court document upholding the dismissal of his defamation case against the Capital. It is reasonable to assume that this angry comment was directed at the journalists and newspaper who had bested him in court, and perhaps also at attorneys and judges.
The embittered suspect with a vendetta against a local newspaper the justice system had been simmering since 2011. What triggered him in 2018? I don't know. But shortly before the massacre, two things happened that could have been factors. Three days before the shooting, Donald Trump had pointed out members of the news media at a big outdoor rally in South Carolina, demonizing them as "enemies of the people." This is a phrase that demagogues throughout history, from the French Revolution to Nazi Germany and Stalinist Russia, have understood and used as an incitement to violence. A day later, Peroutka was defeated in his 2018 re-election bid, losing to a female candidate in the Republican primary.
The "Berserk" half of the Rosetta Stone
The other, seemingly unrelated element of Ramos' worldview is drawn from the world of anime, the source of his final, cryptic tweet, approximately three minutes before the shooting began. It was a peculiar expression he had used before: "Fuck you, leave me alone." This world of manga and anime informed the suspect's hero-versus-villain worldview and also the way he expressed it through language and religious symbolic imagery. While his tweets referenced mainstream sci-fi touchstones, such as "Star Wars" and "Star Trek," his primary influence was the universe of "Berserk," a blood-and-guts manga, anime and movie series that has also inspired several video games.
Ramos tweeted numerous references to "Berserk" characters, paraphrased quotes from them, and used symbolism drawn from the series. He described himself as playing a role in the world of "Berserk" and hinted that an understanding of its fictional world was key to understanding his "psyche." Indeed, in a letter he wrote stating his intention of "killing every person present" in the Capital newsroom, he quoted from "Berserk." As mentioned above, he did so again in his final tweet before the shooting began.
Ramos tweeted to ask whether Eric Hartley, the former Capital columnist, was "Ordained to Be Murdered by the God Hand?" In "Berserk," the God Hand is a group of the five most powerful demons. The photo on Ramos' Twitter avatar was the face of Hartley, with a Berserk symbol pasted over it – a brand that marks victims for demonic sacrifice.
He tweeted, "Judge Nick doesn't believe in the God Hand. I play a well-established part of that system by tweeting of it." It appears that Ramos identified with the world of "Berserk" and saw himself as playing a part in it.
Ramos also marked former Capital Gazette publisher Thomas Marquardt -- whom he nicknamed "Evil Tom" -- with the demonic brand, in the banner image for the Twitter account @EricHartleyFrnd. To Ramos, the brand signified that it was "Open Season" to hunt and kill. He tweeted, "Another stooge @capgaznews says Evil Tom is going on his own terms? That mark on his head is called Brand of Sacrifice; or now, Open Season." He also tweeted a YouTube link to the song "Murder" from the "Berserk" soundtrack.
He repeatedly referenced a vampire character from "Berserk," Nosferatu Zodd, and tweeted an image of Zodd. He tweeted: "If you think this man [wants to be] your friend, know this: when his ambition crumbles, death will come for you — a death you cannot escape." This is a paraphrased quote from Zodd, who said, "If you consider this man your true friend, and regard him as a brother, then know this. When this man's ambition crumbles, it is your destiny to face your death. A death you can never escape!"
Ramos also identified with "Berserk" characters on several other occasions. He tweeted, "I told you once. I will have my own kingdom. Nothing has changed." This is a close paraphrase of a quote from the character Griffith, who said, "I told you once, I will get my own kingdom. Nothing has changed."
He tweeted, "I'm Femto. I can also do whatever I want. I will have my own kingdom. I will choose the place you die," adding a link to a trailer for "Berserk." Griffith dies and is reborn as Femto, a member of the God Hand, who is undeterred by moral inhibitions. Femto becomes the spearhead of the God Hand's schemes.
Ramos tweeted the anime cover art from "Berserk – The Golden Age Arc Movie Collection" on DVD, which features the protagonist Guts. He twice quoted Guts, a swordsman motivated by revenge whose left forearm is replaced by a prosthetic which can be fitted with a cannon. Guts kills many enemies, including his primary antagonist, Bishop Mozgus, who is a demon spawn with angelic wings. Before delivering the coup de grâce, Guts tells Mozgus, "If you meet your God, say this for me … Leave me the hell alone!"
The latter is one of the most popular quotes among "Berserk" fans. However, some translate the quote, or paraphrase it differently. For example: "If you meet your God, tell him to leave me the fuck alone!"
Or, as Ramos tweeted, some three minutes before the shooting: "Fuck you, leave me alone." He then added another of his Twitter handles, @JudgeMoylanFrnd, which features the face of Charles Moylan, the judge who had dismissed his defamation case, marked with the brand of sacrifice.
Guts' message for Mozgus to take to his god is a familiar trope in action movies, the sort of comment that a protagonist makes before dispatching a villain, such as "I'll see you in Hell," "See you on the other side," or "Hasta la vista, baby." However, this "Leave me alone" message is not meant for the people whom the protagonist is about to kill; it is for them to carry to their god.
In light of Ramos' having previously tweeted this same language in anger at both the Capital and Maryland court officials, and that this closely tracks what Guts tells his primary antagonist before delivering the killing blow, Ramos was making clear his intent to kill. In the context of scripted violence, as when a politician uses his office to demonize journalists, individuals who view themselves as holy warriors or heroes motivated by a sense of grievance know which villains to kill.
Ramos, who represented himself in his defamation case against the Capital, insisted that he was sane and that he had not been merely fantasizing online about being a predator. He wrote on his website, "I've been learning law for a different kind of game. It's no publicity stunt, nor clinical insanity, nor predatory Internet fantasy, but very dangerous indeed."
In the same document, he wrote, "Much like a life, what is the price of a name? Are these even two different questions?" Like the 16th-century English penitent who confessed to defamation in Mitford v. Shaw, calling it a kind of murder, Ramos equates the loss of his good name with the loss of a life. This is akin to the reasoning of those who kill abortion providers: If, according to their understanding of God's law, abortion is murder, then those who provide abortions are subject to death. Likewise, if a theocrat believes defamation to be a kind of murder, then what is the penalty?
After years of build-up, Ramos became a self-righteous, avenging character he had invented for himself, and announced his intent to kill, writing to the newspaper's former attorney and to Maryland court officials that he was on his way to the Capital newsroom "with the objective of killing every person present." They received the letters after the massacre. In a letter to Judge Moylan, he wrote, "Welcome, Mr. Moylan, to your unexpected legacy: YOU should have died." He signed off, "Friends forever, Jarrod W. Ramos."
Here again, Ramos is quoting from Berserk.
Guts' adoptive father Gambino blames him for the death of his wife. So he tries to kill Guts, while telling him, "You should have died." In self-defense, Guts kills Gambino. But he feels guilty and conflicted about this deed. A recurring nightmare of an army of skeletons haunts him, their eyeless orbs glaring as they chant over and over, "You should have died."
This message is not for the people whom the protagonist has killed, nor for the people he would have liked to kill. It is for Guts himself – a killer who felt justified but also conflicted and guilty even as he killed.
Ramos seems to be suggesting that, like the "Berserk" protagonist he referenced in his final tweet, he felt conflicted about killing. It appears that just prior to the mass murder, Ramos signaled his realization that, like Guts, he would feel guilty about it. This suggests that he knew right from wrong, and therefore supports the argument that, as Ramos himself has insisted, he was sane. While his final tweet indicates a rationale that he must defend himself from perceived oppression and injustice ("Leave me alone"), his letter to the judge indicates that he anticipates feeling haunted by the consciousness of guilt ("You should have died").
As our family members, friends and colleagues die in one mass shooting after another, we urge ourselves to understand what we could do differently as a society. Why did this suspect do what he did? Each time, we come away with at least as many questions as answers. I don't claim to know the right questions, let alone the answers. We all have a lot of work to do. But I have learned a few things from my research into Jarrod Ramos' world. One of them recalls Maya Angelou's famous quote, "When someone shows you who they are, believe them the first time."
Ramos showed himself to the world before he acted. He collected a grab bag of grievances out of which he tried to forge a rationale, arguably a theology, that would give his revenge tale a transcendent meaning: It would be the story of his life. He revealed himself often; society chose not to see or was unable to, or at any rate did not take him seriously. He recognized this fact. After the mass murders, his letters reminded us all, "I told you so."
Ramos' worldview is clearly derived from multiple, esoteric sources – sources he may not have accessed all by himself. This does not mean that he did not act alone; it does mean that he did not come to such sources as 16th-century ecclesiastical court records by himself. Someone pointed him in this direction. Ramos is probably not the only one who has been directed to such material in search of the will of God in the 21st Century and one's role in God's plan.
Ramos called himself "an arrogant auto-didact," with reference to how he learned how to represent himself (however unsuccessfully) in court. There is a rich history on the far right of individuals -- including self-proclaimed "sovereign citizens" and theocrats advocating Higher Law -- who defend themselves by cobbling together supposed legal precedents, divine authority and ill-conceived justifications for illegal and sometimes violent acts.
There are also Christian nationalist think tanks, such as Michael Peroutka's Institute on the Constitution, that peddle books and courses to self-taught advocates on how to "defend against those in opposition to God's Word." However out of the mainstream they may be, such people should be properly understood and taken seriously. They say what they mean; they mean what they say. When someone speaks out about meting out carnage in service to Higher Authority, let's all pay attention.
Ignoring an injustice collector who views himself as the hand of God doesn't work. Ignoring the women he harasses doesn't work. Coddling him in the courts despite his overt law-breaking doesn't work. Ignoring the multiple cultural influences that shape and validate his viewpoint doesn't work.
When it comes to Jarrod Ramos in particular, however bizarre and convoluted his "Berserk"-influenced, alt-right worldview may seem, pay attention. There is much more we need to know about the profoundly anti-democratic origins of this man's violent history.
Today's hottest topics
Check out the latest stories and most recent guests on SalonTV.
Jonathan Hutson is a writer and strategic communications consultant in Annapolis, Maryland. Follow him on Twitter.
MORE FROM Jonathan Hutson
Alt-right Anime Annapolis Capital-gazette Capital Gazette Shooting Christian Fundamentalism Christian Nationalism Christianity Donald Trump Enemy Of The People Far Right Fundamentalism Jarrod Ramos League Of The South Mass Shooting Michael Peroutka Neo-confederate Theocracy
The right's Ilhan Omar outrage machine
A user's guide to "cultural Marxism"
An atheist in the White House?
Stranger Things 3: A good cop goes toxic


Very good hair soft free of shedding i love it i will be ordering it again.
Product is just as described, and there is no smell at all. Hair is soft, and feels great! I have not installed yet, but will update.


In my childhood the women always put a block of blue into the washing to make the colour white whiter. That was my first meeting with the magical attraction of ULTRAMARINE BLUE. It sucked you in and you went on a spiritual journey to the Cosmos. It was the past and the future simultaneously and the slight inclination towards lilac made the whole thing even more magical.
When I was older I discovered even more sorts of blue, Prussian Blue, Cobalt Blue, Cerulean Blue, Turquoise etc. and in my work I used them all but Ultramarine remained my favourite. In my early paintings, that were inclined towards earthy colours and grey, I used light Ultramarine to give accents here and there.
With the discovery of the Mediterranean sky at twilight the Ultramarine became darker and deeper and it went hand in hand with many happy moments.
It's not a colour that confronts you like red, orange or yellow etc. or like green that that nestles in the middle of the colour perspective but deserts you when you try to work with it. I always appreciated this colour in the old Turkish miniatures.
There are a number of things that are worth knowing about Ultramarine Blue.
In antiquity a half kilo of the precious stone Lapis Lazuli would yield only 20 to 30 grams of pigment and was therefore extremely expensive. When it became available in Europe in the 16th & 17th century the price was higher than that of gold. Artists were permitted to paint only the garments of Jesus and Maria with it.
It was only after the invention of synthetic Ultramarine by Guimet in 1826 that this pigment became cheap and was used widely.
Why do we experience something as blue for example? Because this pigment absorbs all primary colours except blue. Thus, an object that looks blue actually consists of red and yellow. This contradiction is also illustrated in the measurement of the colour temperature.
Although blue is considered to be a "cold" colour it's colour temperature in units of Kelvin is 10 times higher that a "warm" colour such as red. Red measures just 1,600K while blue is 16,000K.


text:
Q: How to find highest average score in a class I am trying to display the maximum average score in a class; however, I have been battling with the query for hours now and can't seem to get it to work.
I can get a list of the average scores of students to display, with:
   public function GetSumAvgftScore($student_id, $session_id, $section_id, $class_id)
    {
        $this->db->select_avg('ft_tot_score');
        $this->db->where('student_id', $student_id);
        $this->db->where('session_id', $session_id);
        $this->db->where('section_id', $section_id);
        $this->db->where('class_id', $class_id);
        return $this->db->get('ftscores_primary')->row();
    }

However, I get stuck when I try to display the highest average score. This is what I've tried:
  public function GetHighestClassAvg($student_id, $session_id, $section_id, $class_id)
    {
        $this->db->order_by('ft_tot_score', 'DESC');
        $this->db->select_max(avg('ft_tot_score'));
        $this->db->where('student_id', $student_id);
        $this->db->where('session_id', $session_id);
        $this->db->where('section_id', $section_id);
        $this->db->where('class_id', $class_id);
        $data = $this->db->get('ftscores_primary')->row();
    }

This doesn't give me anything.

A: Try this:
 function GetHighestClassAvg($student_id, $session_id, $section_id, $class_id)
    {
        $this->db->order_by('ft_tot_score', 'DESC');
        $this->db->select_avg('ft_tot_score');
        $this->db->where('student_id', $student_id);
        $this->db->where('session_id', $session_id);
        $this->db->where('section_id', $section_id);
        $this->db->where('class_id', $class_id);
        $data = $this->db->get('ftscores_primary')->row();
    }

redpajama_set_name: RedPajamaStackExchange


** "Picture Perfect!" *** Spacious 3 Bedroom, 2.5 Bath "End-Unit" Townhome in the Fantastic Wethersfield Development that is across the street from Spring Valley Park! Welcoming "2-Story" Foyer accented with "NEW" Engineered Hardwood Flooring & Wall Sconce Lighting! Formal Living Room appointed with Brick Fireplace, "NEW" Carpeting & "NEW" Rear Slider to Large Rear Deck. Perfect for Entertaining All Your Guests! Formal Dining Room with "NEW" Engineered Hardwood Flooring Too! Bright White "Eat-In" Kitchen with "NEW" Appliances, "NEW" Glass Block Backsplash, Pantry, Recessed Lighting, Ceiling Fan & "NEW" Flooring! Totally Renovated Powder Room with "NEW" Vanity, Bead Board, "NEW" Flooring! Master Bedroom Suite offers "Walk-In" Closet & Master Bath! Enjoy 3 Spacious Bedrooms with Ceiling Fans! Finished Basement with Recessed Lighting is a Great Place to Entertain or Sit Back, Relax & Watch a Movie! Huge Additional Utility/Storage Room in Basement Too! "NEW" Hot Water Heater in 2015! Replacement Window Panes! Conveniently located to Restaurants, Stores, Shopping, Public Transportation &Train Station! It's a Great Place to Call "HOME"!


Limited edition of 700 pcs.
New announced from Marsh Models in scale 1/43, Marsh models have now started the build programme for the MM274 1969 Sebring Porsche 908 and here are the other 4 versions.
New expected from Best models (Italy) in scale 1/43, the PORSCHE 908/3 – Targa Florio 1971 – Siffert/Redman #7.
New expected from Spark models in scale 1/43, the S3481 Porsche 908 n.31 participated in Le Mans 1968 with drivers J. Siffert and Hermann.
new expected from Spark models in 1/43, the Porsche 910-8, winner of the Targa florio 1967.
New expected from Best models (Italy) in scale 1/43, the Best nr. 9525 PORSCHE 908/2 FLUNDER – Le Mans 1974 – Ortega/Merello/Ranft #17. Available at the end of februar 2014.
New expected from Spark models, the Porsche 908 from Le mans 1972. The 3rd in the grace with no. 60 driven by Jöst, Weber and Casoni.
Porsche 911 GT3 RS "concept black" _ Art.-Nr. 452606100 also in scale 1/87.
Picture will follow later. Alle the Best models are made in scale 1/43.
BEST (Italy), 9474/D, 1/43 BOX PORSCHE 908/3 – Targa Florio 1970 – 4 Models – LIMITED EDITION 198 PCS, latest 2 sets available! Contact. Price € 180,00 each.
The famous Porsche 908/3 #4 "Martini" in a Limited Edition of 750 pcs.
The 1/87 Porsche 356 Ferdinand "Panamericana #162" in a limited edition of 750 pcs.
Best (Italy) BEST9467 PORSCHE 908/4 – Nurburgring 1979 – Stommelen/Joest #101, release octobre 2012.


Following more than a year of work and a series of legislative overhauls, North Carolina Gov. Pat McCrory signed a bill into law to establish a series of restrictions on how companies can use student data.
McCrory put pen to paper on state Rep. Jason Saine's "Student Online Protection Act" Wednesday, which will put in place regulations limiting how vendors of online education resources can use the personally identifiable information of students or their guardians that they collect.
The law applies to a variety of companies, as any "operator of an internet website, online service, online application or mobile application with actual knowledge that the site, service, or application is used primarily for K-12 school purposes" is included under the legislation.
Additionally, the law lays out what types of student data are protected, including grades, criminal records and biometric data.
The companies in question would also be required to "implement and maintain reasonable security procedures" to protect student information from "unauthorized access, destruction, use, modification or disclosure." Vendors would also have to delete any data they control within 45 days if a school asks them to do so.
However, the law is clear that companies can still use anonymized data to "improve educational products," or even use personalized data to develop "recommendation engines" that suggest relevant content or services to students.
The law also contains a provision setting up a process for parents or school officials to report a violation of these strictures to the state's attorney general, who could then pursue a civil case against a company.
But while the law as signed by McCrory is quite detailed, the version Saine introduced in April 2015 would have merely required the General Assembly's Joint Legislative Education Oversight Committee to study issues involving electronic student data privacy and draft a report. Quickly, the bill was heavily amended, and it passed the House and Senate unanimously to make it to McCrory.
North Carolina isn't the only state to enact student data privacy legislation. A report by the Data Quality Campaign, a group advocating for the responsible use of educational data, found that state lawmakers introduced 69 bills involving the "data activities of vendors" in 2015, and 13 enacted that legislation into law.
Contact the reporter who wrote this story at alex.koma@statescoop.com, or follow him on Twitter at @AlexKomaSNG.


QuietCool saves customers up to 50-90% off A/C related electricity costs. A whole house fan and an attic fan together can help consumers save money, enjoy better health, and cool their home for just pennies an hour. Learn how you can buy a QuietCool and get these benefits today!
Beat the heat and save energy and money this Summer with the professional installation of a Whole House Fan.


text:
Q: Something wrong with API request inside a loop I'm in big trouble,I can't understand why this thing does not work.I need to make an API request for each value of an array,and if I look in my console javascript,the request are served but I need latitude and longitude value inside the request.The problem is that outside the API request I have 4 values (2 lat and long for each element of the array),and inside the API request I find only the last two lat and long,why?It seems really no sense and I don't know where the problem may be.Here is the code
var luoghi = {"city":[
                    { "lat":"45.46" , "lng":"9.19" , "name":"Milano" },
                    { "lat":"41.12" , "lng":"16.86" , "name":"Bari" }
            ]};
var arr=[];
for(var i in luoghi.city){
lat = luoghi.city[i].lat;
lng= luoghi.city[i].lng;

console.log("Before API request "+lat+" "+lng);//here i have the right 4 values

var wUnderAPI = "http://api.wunderground.com/api/"+API_WU+"/forecast/q/"+lat+","+lng+".json?callback=?";
$.getJSON( wUnderAPI, {format: "json"}).done(function( data ) {
    if(typeof data['forecast']['simpleforecast']['forecastday'] != 'undefined'){  // controllo esito richiesta json
            console.log(" Inside the request "+lat+" "+lng); //here just the bari lat & lng
    }
});
}

The API_WU is my private API KEY,but since it is for a not commercial use,anyone can get one from the site.Hope my question was clear,because is a problem that it's hard even to explain :) thanks in advance.

A: Your done function references the lat,lng defined previously and since it is aynchronous, e.g. it can take some time to return and does not block the script carrying on in the loop, it will always give you the last defined values as it most likely only returns after all other values have been processed.  You will need to feed the correct data to the callback in the done function.
try passing the lat and lng as arguments to the done
$.getJSON( wUnderAPI, {format: "json"}).done(function( data, lat, lng ) {
    if(typeof data['forecast']['simpleforecast']['forecastday'] != 'undefined'){  // controllo esito richiesta json
            console.log(" Inside the request "+lat+" "+lng); //here just the bari lat & lng
    }
});


text:
Standards Amendment Act 2006
Standards Amendment Act 2006: repealed, on 1 March 2016, pursuant to section 46(1) of the Standards and Accreditation Act 2015 (2015 No 91).
Reprint as at 1 March 2016
2006 No 44
5 New section 2A inserted
2A Act binds the Crown
6 Membership of Council
7 Functions of Council
8 New heading and section 26 inserted
26 Regulations
This Act is the Standards Amendment Act 2006.
This Act (except section 6) comes into force on the day after the date on which it receives the Royal assent.
Section 6 comes into force on a date to be appointed by the Governor-General by Order in Council.
This Act amends the Standards Act 1988.
The definition of specification in section 2 is amended by omitting "description of goods" in the first place where it appears and substituting "description of, or instruction, requirement, statement, or principle relating to, goods" .
The following section is inserted after section 2:
Section 4(2) is repealed and the following subsection substituted:
When appointing members under subsection (1)(b), the Minister must appoint from nominations made by nominating bodies as set out in regulations made under section 26.
Section 4(3) is amended by omitting "specified in paragraph (a), paragraph (b), paragraph (c), paragraph (d), paragraph (e), or paragraph (f) of that subsection" and substituting "specified in the regulations" .
Section 10(1) is amended by adding "; or" and also by adding the following paragraphs:
minimising environmental risks; or
promoting social responsibility.
Section 10(2) is amended by inserting the following paragraph after paragraph (c):
to recommend specifications other than standards:
Section 10(2)(d) is amended by adding "and other specifications" .
Section 10(2)(h) is amended by inserting "and other specifications" after "standards" .
Section 10(2)(i) is amended by adding "or that the Minister may direct it to perform in accordance with section 112 of the Crown Entities Act 2004" .
The following heading and section are inserted after section 25:
The Governor-General may, by Order in Council, make regulations that provide for the way in which nominations and appointments may be made under section 4(2).
This is an eprint of the Standards Amendment Act 2006 that incorporates all the amendments to that Act as at the date of the last amendment to it.
Standards and Accreditation Act 2015 (2015 No 91): section 46(1)

redpajama_set_name: RedPajamaCommonCrawl


Make 4 interest-free payments of $50.55 fortnightly and receive your order now.
Make 4 interest-free payments of $37.94 fortnightly and receive your order now.
Make 4 interest-free payments of $37.73 fortnightly and receive your order now.


Higher education is a very expensive endeavor. In an environment of increasing competitiveness, however, many are finding that higher education is a must that can't be skipped because of financial issues. Thanks.
Good to know about higher education!!As a full-time working adult, going back to college for Higher Education seems like the last thing you want, but with several online learning opportunities .
I am pleased to read your post. I was searching for the related topic you discussed in there. Good job. All the best.!!!!!
Interesting point of view on higher education and generation-x. Really wanna congratulate the writer for sharing such an impressive thought. Thank you for your valuable discussion on this great topic.


text:
U.S. Civil Rights Commission Outlines Racial Inequalities in American Public Education
The report includes a list of recommendations for fixing the dismal gap in education funding.
By Blake Harper
On Thursday, the U.S. Commission on Civil Rights released a 150-page report entitled "Public Education Funding Inequity: In An Era Of Increasing Concentration Of Poverty and Resegregation," in which the agency declares that the American education system is 'profoundly unequal' for minorities and students living in poverty. The report is based on a lengthy investigation of education funding across the United States that uncovered myriad ways schools aren't provided the resources they need to help students succeed.
"This report excavates the enduring truism that American public schooling is, and has been, profoundly unequal in the opportunity delivered to students, the dollars spent to educate students, and the determinations of which students are educated together," said Catherine Lhamon, the commission's chair, in a written statement.
According to the report, the source of the problem stems from the fact that a disturbing number of schools in America remain segregated by race or class, which inevitably leads to poorer schools being underfunded. As a result, these schools are unable to afford quality teachers, sufficient coursework, and even basic supplies. As a result of this lack of resources, students are far less likely to receive a quality education.
While the majority of the report examines the state of modern education in the United States, the U.S. Commission on Civil Rights does offer a list of recommendations to help remedy a number of the problems. The independent, bipartisan agency suggests that the government "incentivize states to adopt equitable public school finance systems" and "increase federal funding to supplement state funding with a goal to provide meaningful, educational opportunity on an equitable basis."
The list also advocates for more transparency and urges the government to better collect and evaluate data on school spending. Perhaps most ambitiously, the report recommends that "Congress should make clear that there is a federal right to a public education."
Unsurprisingly, the report received some major pushback, primarily from commission member Peter Kirsanow who wrote a passionate dissent. In it, Kirsanow criticizes the commission for wanting to throw money at all of America's education problems. Instead, he argues that "the deleterious consequences of single-parent families" are doing far more damage to students than lack of funding at school.
When considering a new job, how important are the company's parental policies (parental leave, childcare assistance, etc)?
Extremely important
Not at all important
News Mom Is Arrested After Daughter Licks and Puts Back Tongue Depressor at Doctor's Office
News Terry Crews Made an Audition Tape for King Triton and It's Perfect
News Father Faces Charges After Three-Year-Old Son Dies in Hot Car


Lutronic, a leading innovator of aesthetic and medical laser and energy-based technology, held the latest in its series of global symposia. The Lutronic-sponsored educational event, 'Symposia L', brought together leading physicians from around the globe to reveal cutting edge advancements in aesthetic technology and provide attendees with educational 'pearls' for more successful skin treatments.
The Symposium featured Dr. Bettina Rümmelein from Switzerland, Dr. Jass Narulla from Australia, Dr. Boncheol Leo Goo from Korea, and Dr Hui Shiu Kee from Hong Kong, who shared their vast experience with Spectra XT, Advantage, Clarity, Healite II, Action II (features of dermatology and Petit Lady), and Lasemd.
Dr. Bettina Rümmelein presented on Spectra XT, Clarity And Healite II. She shared her advanced knowledge working with Spectra in her presentation, "All About Pigment Removal with Spectra XT". She also made her presentation entitled "How I Practice with Clarity -The All Day Workhorse" and then wrapped up her time with "Expand Your Practice with Healite II for Hair Loss". Dr. Jass Narulla shared his extensive experience using Action II Petit Lady when he presented "Action II Petit Lady: Treating Urinary Incontinence and Other Benefits".
"Well-known doctors from around the globe came to attend 'Symposia L' and learn the latest knowledge about the global laser device market, discover advance techniques and expand treatment horizons."
Dr. Boncheol Leo Goo presented "A New Must Have Solution: Lasemd" where he explained about the latest addition to the Lutronic family of products and the customizable cosmeceuticals program which utilizes pure ingredients for improved delivery and absorption. He also presented "How to Expand Your Aesthetic Practice with ACTION II Features of Dermatology?" where he explored the variety dermatological features that Action II can perform.
Finally, Dr. Hui Shiu Kee presented about melasma, a troublesome condition which effects Asian skin in particular, in his talk "Melasma and Overall Skin Texture Management with Q-Switched Nd:YAG Laser".
About 100 doctors from around the globe attended this symposium and learned the latest about the global laser device market, discovered advanced techniques and expanded treatment horizons.
Brian Lee, Global Sales Director of Lutronic, stated, "During Symposia L, we saw a lot of interest in latest aesthetic technology. There were exciting discussions where physicians debated on which of the variety of skin treatment options that are available physicians around the globe were ideal for a given problem". He also added, "Based on the successful clinical discussions that took place during this event, I believe we will see a positive impact to the sales of the 2nd half of 2015".
With a focus on physician needs and patient outcomes, Lutronic dedicates time and funding toward the development of devices that offer features and improvements not found in today's market. Devoting more than 20% of revenues to R&D, Lutronic holds more than 200 current and pending patents worldwide. With more than 230 employees worldwide, Lutronic has offices in the US, Korea, China, and Japan, a worldwide network of distributors, a focused R&D center in Korea, and is ever expanding.


We offer a variety of amazing classes at Om On, but one of our favorites is restorative yoga. A restorative yoga class is your time to unwind and renew your body, calm your mind, and connect more deeply to your spirit.
Judith Hanson Lasater, the co-founder of Yoga Journal and author of Relax and Renew, truly transformed restorative yoga into the practice we know today. "We work very hard in our lives," she said, "and while we may sleep, we rarely take time to relax. Restorative yoga poses help us learn to rest deeply and completely." She founded the Restorative Yoga Teacher's Association, which trains teachers in the restorative method. In general, the restorative method promotes "active rest". The essence of the restorative yoga philosophy is this: We spend most of our day in a yang environment of stress and activity. Many of us are lacking the ability to find stillness and nourishment for our bodies. Restorative becomes that opportunity to fully release in a passive way.
While restorative yoga is yin energy dominant, it is neither yin yoga nor gentle yoga. Yin yoga works on the fascia and has specific poses. Gentle yoga is slow moving, beginner level yoga with lots of seated poses. In restorative yoga, postures are supported with multiple blankets, bolsters, chairs, eye pillows, blocks, and sometimes even sand bags. Each posture is practiced for five to fifteen minutes, with the typical class only offering six or so postures. Poses are not necessarily a deep sensation, but merely a release where one can let go. The restorative yoga teacher does not assist in any way except to help with props. The teacher will cue students to deeply inhale as they enter the pose and then exhale, remaining quiet and meditative throughout.
Because of the use of props, the muscles are supported in such a way that the body is no longer "efforting", but instead simply releasing. This activates the parasympathetic nervous system, which then signals to the body to rest and digest. The ability to move into this mode means we begin to slow cortisol response and activate the ability to balance and reduce stress. Students have the option of practicing with their eyes closed to help shift into a more diffused state of awareness.
Restorative classes generally involve two kinds of poses: active and passive. The active pose stimulates the body, energizing the organs to allow for a deeper release. Props are used in active poses to support the body and remove any tension. A good example of a supported active pose would be a twist over your bolster or a hip opening stretch supported by a strap. These are followed by passive poses, which allow for complete relaxation and rejuvenation. In a restorative class, you can expect a long, calming savasana.
Restorative yoga is a beautiful way to deepen your connection to your practice and your inner self. Our sweet Twylah teaches restorative on Mondays at noon and Fridays at four, and you can't miss this treat of a class. She will lead you through a gentle flow to warm up the body, then move into prop-supported restorative stretches to show your body some love. This class is suitable for beginners, and is a great choice for anyone interested in active recovery. It's also good for people with an anxious or restless mind – the slowed down pace of the class can make it a little easier to reap the spiritual and mental benefits of yoga. Honestly, we recommend it to anyone and everyone!


Science: How do plankton handle the ozone hole?
to phyto plankton; in particular, to how they fare as the ozone hole grows.
and what the results will be.
phytoplankton are very sensitive and some are not,' says Karentz.
a mutation cropped up every 1800 bases.
go unnoticed, especially by whales and others at the top of the food chain.
inedible, the Southern Ocean could change radically.
to estimate the effect of natural UV light.
to the idea that they absorb harmful wavelengths of UV light.
few hours, in a process called photoreactivation.
meter to measure UV levels in different parts of the ocean.
wavelengths – 305 to 315 nanometres – that reach the surface,' says Frederick.
'Living things evolved in this real life UV- B spectrum,' says Frederick.
edge of the ozone hole – and that's not always what you get in the lab .


The Honorable Darleen Ortega has recently been named by Meyer Memorial Trust to serve on Foundations for a Better Oregon board. Darleen joined the MMT trustees in January 2016 and we will welcome her to the FBO board at the November meeting. The first woman of color and the only Hispanic woman to serve as a judge on the Oregon Court of Appeals, Darleen has served on a host of legal boards and committees, and on the boards of Open Adoption and Family Services, Northwest Health Foundation and the Oregon Shakespeare Festival.
Governor Kate Brown and Republican candidate Bud Pierce don't agree on many things, but do agree with Chalkboard that highly effective teachers matter. Listen to their comments starting at 33:36. The League of Women Voters of Oregon and Oregon Public Broadcasting hosted a debate among candidates for Oregon governor on Thursday, Oct. 6, at Churchill High School in Eugene.
Chalkboard Project is listed as a 100 Best Nonprofit to work for in Oregon in Oregon Business Magazine's 2016 annual survey.


The European Association for the Education of Adults (EAEA) is a non-governmental organization, founded in 1953, with more than 140 members from 44 countries.
Leading of and cooperation in Erasmus+ projects.
The Slovenian Institute for Adult Education (SIAE) has been an active member of EAEA. We have supported EAEA's initiatives. For example, the founding of the Interest Group for Lifelong Learning at the European Parliament, the Slovenian representative in the group being Dr Milan Zver.
In 2017 we joined their initiative Year of Adult Education in Europe. Under the slogan The Power and Joy of Learning we carried out a so called joint action under the umbrella of the Slovenian Lifelong Learning Week and emphasized the role of learning at several national and local events.
In addition, we have collaborated in several projects, e.g. ARALE – Awareness Raising for Adult Learning and Education, BeLL – Benefits of Lifelong Learning, KYL – Know Your Lifestyle, RENEWAL – Regional NetWorking for Adult Learning in Europe, DIMA – A Toolkit for Developing, Implementing and Monitoring Adult Education, and others.
Currently, we are collaborating in two projects: LSE – Life Skills for Europe and SkillHUBS – Transnational prison up-skilling guidance and training model.
in Slovenian: Manifest za učenje odraslih v 21. stoletju (2016) and its one-pager.
EAEA is active also via Facebook, Twitter and YouTube.


text:
BOXSTER PINBALL
Article by Evert Brochez
Boxster Pinball: The Gameplay
Now, there are probably some people thinking: "what the hell is Boxster Pinball? Is it a prototype that's been kept a good secret? It has the Data East looks but why have I never heard of it?"
Well it is pretty simple. You've never heard of it because a few years ago it didn't exist.
Bart Baeyens from mushroom-amusements.com started this project in July 2005, the same year I really got into the hobby, by the way.
The first idea was to take a Teenage Mutant Ninja Turtles (TMNT) cabinet and boardset, throw in a Checkpoint playfield, put new art on everything and you have a new game.
This idea changed pretty quickly and the idea was born to make the TMNT playfield fit the Checkpoint rules. Bart started re-dressing the game with new artwork. Various new backglasses were made and lots of ideas were thrown around. There was a lot of progress until Bart was finishing the flasher wiring in June 2005.
After that it all went quiet until the end of 2009 when I asked Bart to finish the Boxster so we could use it at the Belgian Pinball Championship during the weekend of 13th &14th February 2010. After some time Bart contacted me to finish the Boxster which I did. We worked together to fix some small things and the Boxster pinball was a reality.
Things we changed in the Checkpoint display software included some of the names; we've put our own names on it and some other fun stuff. What's most eye-catching is the addition of a small TFT screen in the backbox. This screen plays a small Boxster commercial and gives some information about how to play this game.
More information about the creation of Boxster can be found in two upcoming issues of the PinGame Journal with the story from both view points; mine and that from Bart, of course.
There's also a big surprise for people who really want to play this machine but you'll have to keep an eye on my website for that, www.bingovit.be.
Before I explain the rules, I wanted to share some pictures with you that Bart send me of the design progress. I've added my own thoughts to these pictures along with some facts.
Teenage Mutant Ninja Turtles, the game which started all!
This is one of the last moments the game was still "complete" and original. You'll notice further down that the "Sewer Hole" has been removed from the playfield because it couldn't be fit into the Checkpoint software.
The Boxster backglass
A Boxster backglass with no babes??? You also notice that at this stage the TFT wasn't yet implemented. Luckily one babe appeared in later backglass versions and there was even a topless version. Maybe an idea for a special edition? :-)
Bart started off by sanding the playfield down to bare wood. Now it's ready for its new artwork which will be a decal with some layers of varnish on top. Keep in mind that when this project started there wasn't a lot of information to be found about clearcoating, so Bart had to find out these things all by himself.
Notice that the "Sewer Hole" at the top is ready to be filled by a small piece of wood.
Here we see quite some progress on the project; the translite is ready, artwork for the cabinet has been applied but for the sharp-eyed viewers you'll notice that the artwork around the coin door still needs to be applied.
So now let's take a look at the gameplay. Basically the shots are more or less the same as TMNT and I'll briefly describe them here.
We have six standup targets on the left (they spell L-A-P in Boxster), the captive car, the left ramp with a drop target in front, the right ramp, three drop targets which spell B-O-X, a kickout which has the pitstop function and spells the S, then we have the spinner lane which leads the ball to a yellow standup target, and to end we have three standup targets which spell T-E-R. On the left side of the playfield there's also a spinning disc just like in TMNT.
Basically, if you know Checkpoint, a lot of this information will sound very familiar because it's only the playfield layout that has drastically changed.
If you don't want to read the rulesheet you can jump to the bottom of the article where you'll find a video from the game in action being played by the owner, Bart Baeyens.
Skill Shot:
Plunge the ball, shoot the left ramp without hitting any other switches. The left ramp awards 250k times the ball in play.
Advance the tachometer:
Meet or exceed the lazermatic speed requirement by shooting the left ramp fast enough. The fastest recorded speed will be remembered in the games memory.
You can also advance the tachometer by shooting the ball into the pop bumpers, spell the B-O-X-S-T-E-R letters (remember the three drop targets, pit stop and three right standups?) or shoot the ball into the pit stop for a mystery award.
Multiball:
Multiball can be achieved by advancing the tachometer.
Once Multiball is ready, the right ramp will flash Multiball and the Checkpoint insert will turn green instead of red which signals you can start multiball.
You can start with a two ball multiball at 6000RPM at the checkpoint. If your RPM is higher at 7000RPM, you can start the two ball at either the checkpoint or the pit stop. You get a three ball 'redline' multiball when you've reached 8000RPM.
If you've started the two ball, you have to spell B-O-X-S-T-E-R again which lights up the right ramp for the three ball multiball.
Jackpot:
Only after three ball multiball has been achieved, shoot the "Stop" drop target down and shoot the left ramp which is now lit for jackpot.
Spell B-O-X-S-T-E-R again to reset the drop target and then shoot the drop target once again to light the left ramp for jackpot.
Jackpot values grow when spelling B-O-X-S-T-E-R. Possible values are 2, 3, 4 million and Grand Prix jackpot.
Don't forget that the jackpot changes every time you spell B-O-X-S-T-E-R, so you can go from 4 million back down to 2 million. However, if you shoot the checkpoint (right ramp) when the jackpot is not lit with three balls still in play, your next jackpot will be doubled.
Hot Nitro:
This round starts when the light in front of the captive car on the left is lit. During this round, a good hit on the car scores 200,000 points and 20MPH are added to all the left ramp shots.
L-A-P:
Shoot the six standup targets to spell L-A-P. A completed L-A-P advances the RPM and adds a F-A-S-T letter.
Fast Scoring:
Spell F-A-S-T by completing the L-A-P targets. When completed, F-A-S-T will start the fast scoring mode. Shoot the checkpoint (right ramp, where the checkpoint now glows green instead of red) to start.
Now every switch is worth 55,000 points for the next 10 seconds. All fast scoring points get added to your score at the end of the ball in play, after the bonus is added.
Blue Light Special:
When the blue light special is lit, spell the remaining B-O-X-S-T-E-R letters in time to collect the lit Blue Light Special award.
Blue Light Special awards can be 1 million points, Red Line, Extra Ball, High Score, Double Score and Fast Scoring.
Pit Stop:
Shoot the pit stop to collect a mystery award or a two ball multiball with the tachometer at 7,000RPM, when the green light is lit.
Spin & Win:
Shoot the spinner and collect the lit value. The pop bumpers change the value.
Values can be Lite Million (a timed left ramp shot), Hot Nitro (hurry up to shoot the captive car), a mystery score, lighting the extra ball or advancing the RPM.
Flat Tire:
Shooting the spinner lane and hitting the yellow standup target gives you a flat tire, which is worth 25,000 points and creates some fun sound effects in the pop bumpers which are now flashing and every hit is worth 1,030 points.
So, basically, that is the gameplay.
If you don't want to listen to the game's music, that can be arranged because the DVD player also is a radio and it has a large antenna at the back so you have good reception.
All in all it is a unique game, fun to play and it has something really special to it!
Finally, this picture was taken years ago at the Collector Fantasies (remember the Belgian Pinball Championship?) expo.
You can see that the playfield was ready, artwork for the coindoor was still missing but I think Bart wanted to show it in public together with his own Porsche Boxster. Nowadays Bart doesn't have a Boxster anymore but I think the game will be in his collection for quite some time. It's certainly is a game to be proud of!
So all I can say now is; enjoy the video and bye everybody!
Here's Evert's and Bart's video of the Boxster Pinball in action.
Back to the Learn page


text:
Q: Display category with in blocks or page How can display category in block or page and add custom css for this block.

A: By display category, I am going to assume that you mean display a categories' list of products.  I am also going to assume you mean Magento v1, perhaps the latest CE version.
You have half a dozen different methods to do this.
I'll illustrate two different methods using layout updates.  You can apply these layout updates through local.xml or in the backend admin section labeled "Layout Update XML"
If you notice there is a block wrapping the product_list in the examples below.  The block type is page/html_wrapper.  This simply allows for you to set an element class for a wrapper div.  When you go to style your custom product list block's CSS, simply prepend the .custom-category-class to the selectors you intend to modify.
OPTION 1
You can add a layout update within your theme's local.xml, if you've already created one.
For example if you want to display category with ID 6 on the 404 no-route page:
<cms_index_noroute>
    <reference name="content">
        <block type="page/html_wrapper" name="special.category.wrapper" as="specialCategoryWrapper">
            <action method="setElementClass"><value>custom-category-class</value></action>
            <block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">
                <action method="setData"><name>category_id</name><value>6</value></action>
            </block>
        </block>
    </reference>
</cms_index_noroute>

OPTION 2
In the backend, you can go to the page you want to add the category product list to, and apply a layout update xml:
<reference name="content">
    <block type="page/html_wrapper" name="special.category.wrapper" as="specialCategoryWrapper">
        <action method="setElementClass"><value>custom-category-class</value></action>
        <block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">
            <action method="setData"><name>category_id</name><value>6</value></action>
        </block>
    </block>
</reference>

If you want to provide further details about what you are attempting to accomplish, you will get a better detailed solution set.
Update:
Here is a local.xml that I created that might help explain things:
<?xml version="1.0"?>
<!--
/**
 * Layout Update Example
 *
 * @category    rwd
 * @package     rwd/default
 * @copyright   Copyright (c) 2016 Chris Snedaker.
 * @author      Chris Snedaker
 */
-->
<layout version="0.1.0">

    <!-- This is your layout update handle -->
    <cms_index_noroute>

        <reference name="content">

            <!-- This block has methods to get some html data.  You can set the following values:
                    element_tag_name    (default is div)
                    element_id          (setting this would add id="whatever-value-you-set")
                    element_class       (below we set this one to custom-category-class)
                    other_params        (look it up, not sure offhand)
             -->
            <block type="page/html_wrapper" name="special.category.wrapper" as="specialCategoryWrapper">

                <!-- This is going to be the select class name that you will use in the CSS for customization -->
                <!-- In the example below: it would be .custom-category-class -->
                <action method="setElementClass">
                    <value>custom-category-class</value>
                </action>

                <!-- This is going to create a product list block with the standard catalog/product/list.phtml template file -->
                <block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">

                    <!-- Setting the value of the category_id variable will apply this category id -->
                    <!-- The reason this is necessary is because within the category/product_list block file, there is functionality
                         that attempts to get the category_id value ($this->getCategoryId() or $this->getData('category_id'))  I am fairly sure
                         that the default category id is used if no category id is specified.  This would most likely be a category_id of 2.
                     -->
                    <action method="setData">
                        <name>category_id</name>
                        <value>6</value>
                    </action>

                </block>
            </block>
        </reference>
    </cms_index_noroute>

</layout>


President Mukherjee, I beg to differ sir, Perseverance not Tolerance is the reason for Indian Culture's survival!
In the wake of the 'Ink Attack' on Engineer Rashid, our dear President Pranab Mukherjee came out with some wise words for our fellow citizens in troubled times such as these. Although one might agree that his words, on the face of it, seem Honest and Noble, the factual validity of his assertions is subject to scrutiny. And a casual glance at his words reveal that although Mr. Pranab's Mukherjee intentions might be pure, his perspective on History may very well be riddled with distortions.
President Mukherjee proclaims, "Indian Civilization has survived for 5000 years because of its tolerance." Well, President Mukherjee, I am pretty sure Tolerance did play a part in ensuring the survival of Indian Heritage and Traditions but at the same time, I am afraid, showering Tolerance with all the credits is being a bit unfair to our great ancestors who fought valiantly against the Abrahamic forces which have invaded our land in the past. Also, having a Scientific Temperament ingrained in our Culture and Great Monarchs and Dynasties who served as Great Patrons of Art and Literature and built strong and prosperous Hindu Empires meant that they built a legacy which could not be easily washed away by the Sands of Time. Also, what one should never forget that the Indian Civilization survived because thousands and thousands of Hindus sacrificed their lives to protect and preserve our Culture and Heritage and Our way of Life.
"Indian Civilization has always accepted dissent and differences." "We have a Constitution that accommodates all these differences." Well, President Mukherjee , Indian Civilization tolerates Dissident and Differences because of our Pagan Heritage. As needs no mention, Pagan traditions are naturally pluralistic which is in stark contrast with the Abrahamic religions which thrive on Conformity and Rigid Control of Human Behavior in accordance with Laws mandated by 'Divine Revelations.' As for our Constitution accommodating all such differences, it is merely an observation or a statement of fact, it may or may not be a good thing. And I guess we can agree that it is definitely not a good thing. Our Constitution accommodates Sharia for matters of Muslim Personal Law which relegates women to the status of Second Class citizens. From Shah Bano who was denied alimony by her husband to the woman who was recently divorced by her husband from Dubai over WhatsApp, our accommodation of such differences hasn't worked too well for a significant population of women in our country.
Again, President Mukherjee asks us to eliminate the 'Divisive Forces.' Well, Mr. President, you also ask us, "Is Tolerance and acceptance of Dissent on the wane?" Well, what if the Divisive forces complain that we are being intolerant towards them when we try to eliminate their influence? What if the Divisive Forces control the narrative over who's promoting Hate and Intolerance? It is quite obvious they won't blame themselves for it and pick the easiest target as their scapegoat, the Right-wing Government. Well, of course, I am blaming the Mainstream Media and the 'Intellectuals' for creating the image of rising intolerance and sparking an atmosphere of intolerance by rewarding particular cases of Intolerance with attention and political relevance. Blatant Operant Conditioning at display, dear folks. And applying a little bit of Star Wars analogy, if the movies were made from the Point of View of the Sith Lords, we all know who would be painted as Evil, don't we?
President Mukherjee also makes various generic statements about how Humanity and Pluralism must be preserved and how Righteousness must rise to conquer the Forces of Evil. The fact that President Mukherjee doesn't make any statement or remarks implicating the Government at the Center for rising Intolerance, I am afraid that little bit of information will be lost on the MSM as they launch another vicious tirade against the NDA government. The fact that President Mukherjee actually makes an appeal to the people of the nation will be willfully ignored as the MSM delight on the fact that they have just been handed more ammunition to attack the Government with. And regrettably, President Mukherjee 's words will have as little impact at curbing intolerance as Suresh Raina's innings on the Scoreboard yesterday. And that is perhaps the greatest Irony, words calling for Peace and Harmony might actually end up adding fuel to the Fire of Intolerance.


text:
namespace po = boost::program_options;
namespace fs = boost::filesystem;

using namespace cyclus;

struct ArgInfo {
  po::variables_map vm;  // Holds parsed/specified cli opts and values
  po::options_description desc;  // Holds cli opts description
  bool flat_schema;
  std::string schema_path;
  std::string output_path;
  std::string restart;
};

// Describes and parses cli arguments. Returns the error code that main should
// return early OR -1 if main should not return early.
int ParseCliArgs(ArgInfo* ai, int argc, char* argv[]);

// Processes and handles args that don't run a simulation. Returns the error
// code that main should return early OR -1 if main should not return early.
int EarlyExitArgs(const ArgInfo& ai);

// Using cli flags, retrieves and sets global params for the simulation.
void GetSimInfo(ArgInfo* ai);

static std::string usage = "Usage:   cyclus [opts] [input-file]";

//-----------------------------------------------------------------------
// Main entry point for the test application...
//-----------------------------------------------------------------------
int main(int argc, char* argv[]) {
  // Close all dlopen'd modules AFTER everything else destructs
  DynamicModule::Closer cl;
  PyStart();

  // Tell ENV the path between the cwd and the cyclus executable
  std::string path = Env::PathBase(argv[0]);

  // Tell pyne about the path to nuc data
  Env::SetNucDataPath();

  // Handle cli option flags
  ArgInfo ai;
  int ret = ParseCliArgs(&ai, argc, argv);
  if (ret > -1) {
    return ret;
  }
  GetSimInfo(&ai);
  ret = EarlyExitArgs(ai);
  if (ret > -1) {
    return ret;
  }

  // Process positional args
  std::string infile;
  if (ai.vm.count("input-file") == 0 && ai.restart == "") {
    std::cout << "No input file specified.\n"
              << usage << "\n\n"
              << ai.desc << "\n";
    return 1;
  } else if (ai.vm.count("input-file") > 0) {
    infile = ai.vm["input-file"].as<std::string>();
  }
  // get infile format
  std::string format;
  if (ai.vm.count("format") == 0) {
    format = "none";
  } else {
    format = ai.vm["format"].as<std::string>();
  }

  // Announce yourself
  std::cout << "              :                                                               " << std::endl;
  std::cout << "          .CL:CC CC             _Q     _Q  _Q_Q    _Q    _Q              _Q   " << std::endl;
  std::cout << "        CC;CCCCCCCC:C;         /_\\)   /_\\)/_/\\\\)  /_\\)  /_\\)            /_\\)  " << std::endl;
  std::cout << "        CCCCCCCCCCCCCl       __O|/O___O|/O_OO|/O__O|/O__O|/O____________O|/O__" << std::endl;
  std::cout << "     CCCCCCf     iCCCLCC     /////////////////////////////////////////////////" << std::endl;
  std::cout << "     iCCCt  ;;;;;.  CCCC                                                      " << std::endl;
  std::cout << "    CCCC  ;;;;;;;;;. CClL.                          c                         " << std::endl;
  std::cout << "   CCCC ,;;       ;;: CCCC  ;                   : CCCCi                       " << std::endl;
  std::cout << "    CCC ;;         ;;  CC   ;;:                CCC`   `C;                     " << std::endl;
  std::cout << "  lCCC ;;              CCCC  ;;;:             :CC .;;. C;   ;    :   ;  :;;   " << std::endl;
  std::cout << "  CCCC ;.              CCCC    ;;;,           CC ;    ; Ci  ;    :   ;  :  ;  " << std::endl;
  std::cout << "   iCC :;               CC       ;;;,        ;C ;       CC  ;    :   ; .      " << std::endl;
  std::cout << "  CCCi ;;               CCC        ;;;.      .C ;       tf  ;    :   ;  ;.    " << std::endl;
  std::cout << "  CCC  ;;               CCC          ;;;;;;; fC :       lC  ;    :   ;    ;:  " << std::endl;
  std::cout << "   iCf ;;               CC         :;;:      tC ;       CC  ;    :   ;     ;  " << std::endl;
  std::cout << "  fCCC :;              LCCf      ;;;:         LC :.  ,: C   ;    ;   ; ;   ;  " << std::endl;
  std::cout << "  CCCC  ;;             CCCC    ;;;:           CCi `;;` CC.  ;;;; :;.;.  ; ,;  " << std::endl;
  std::cout << "    CCl ;;             CC    ;;;;              CCC    CCL                     " << std::endl;
  std::cout << "   tCCC  ;;        ;; CCCL  ;;;                  tCCCCC.                      " << std::endl;
  std::cout << "    CCCC  ;;     :;; CCCCf  ;                     ,L                          " << std::endl;
  std::cout << "     lCCC   ;;;;;;  CCCL                                                      " << std::endl;
  std::cout << "     CCCCCC  :;;  fCCCCC                                                      " << std::endl;
  std::cout << "      . CCCC     CCCC .                                                       " << std::endl;
  std::cout << "       .CCCCCCCCCCCCCi                                                        " << std::endl;
  std::cout << "          iCCCCCLCf                                                           " << std::endl;
  std::cout << "           .  C. ,                                                            " << std::endl;
  std::cout << "              :                                                               " << std::endl;

  // Create db backends and recorder
  FullBackend* fback = NULL;
  RecBackend::Deleter bdel;
  Recorder rec;  // Must be after backend deleter because ~Rec does flushing

  std::string ext = fs::path(ai.output_path).extension().string();
  std::string stem = fs::path(ai.output_path).stem().string();
  if (ext == ".h5") {
    fback = new Hdf5Back(ai.output_path.c_str());
  } else {
    fback = new SqliteBack(ai.output_path);
  }
  rec.RegisterBackend(fback);
  bdel.Add(fback);

  // Try to detect schema type
  std::stringstream input;
  LoadStringstreamFromFile(input, infile, format);
  boost::shared_ptr<XMLParser> parser =
      boost::shared_ptr<XMLParser>(new XMLParser());
  parser->Init(input);
  InfileTree tree(*parser);
  std::string schema_type =
      OptionalQuery<std::string>(&tree, "/simulation/schematype", "");
  if (schema_type == "flat" && !ai.flat_schema) {
    std::cout << "flat schema tag detected - switching to flat input schema\n";
    ai.flat_schema = true;
    if (ai.schema_path != Env::rng_schema(ai.flat_schema)) {
      ai.schema_path = Env::rng_schema(ai.flat_schema);
    }
  }

  SimInit si;
  if (ai.restart == "") {
    // Read input file and initialize db and simulation from input file
    bool ms_print;
    if(ai.vm.count("rng-print") >= 1){
      ms_print = true;
    }
    try {
      if (ai.flat_schema) {
        XMLFlatLoader l(&rec, fback, ai.schema_path, infile, format, ms_print);
        l.LoadSim();
      } else {
        XMLFileLoader l(&rec, fback, ai.schema_path, infile, format, ms_print);
        l.LoadSim();
      }
    } catch (cyclus::Error e) {
      CLOG(LEV_ERROR) << e.what();
      return 1;
    }
    si.Init(&rec, fback);
  } else {
    // Read output db and restart simulation from specified simid and timestep
    std::vector<std::string> parts;
    boost::split(parts, ai.restart, boost::is_any_of(":"));
    if (parts.size() != 3) {
      std::cerr << "invalid restart spec: need 3 parts [db-file]:[sim-id]:[timestep]\n";
      return 1;
    }

    fs::path dbfile = parts[0];
    boost::uuids::string_generator gen;
    boost::uuids::uuid simid;
    int t;
    try {
      simid = gen(parts[1]);
      t = boost::lexical_cast<int>(parts[2]);
    } catch (std::exception err) {
      std::cerr << "invalid restart spec: simid or time is invalid\n";
      return 1;
    }
    FullBackend* rback = NULL;
    RecBackend::Deleter bdel;

    std::string ext = dbfile.extension().string();
    if (ext == ".h5") {
      rback = new Hdf5Back(dbfile.c_str());
    } else {
      rback = new SqliteBack(dbfile.c_str());
    }
    bdel.Add(rback);

    si.Restart(rback, simid, t);
    si.recorder()->RegisterBackend(fback);
  }

  char* CYCLUS_NO_CATCH = getenv("CYCLUS_NO_CATCH");
  if( CYCLUS_NO_CATCH !=NULL && CYCLUS_NO_CATCH != "0" ){
    si.timer()->RunSim();
  }   else {
    try {
      si.timer()->RunSim();
    } catch (cyclus::Error err) {
      std::cerr << err.what() << "\n";
      return 1;
    }
  }

  rec.Flush();

  PyStop();

  std::cout << std::endl;
  std::cout << "Status: Cyclus run successful!" << std::endl;
  std::cout << "Output location: " << ai.output_path << std::endl;
  std::cout << "Simulation ID: " << boost::lexical_cast<std::string>
               (si.context()->sim_id()) << std::endl;

  return 0;
}

int ParseCliArgs(ArgInfo* ai, int argc, char* argv[]) {
  ai->desc.add_options()
      ("help,h", "produce help message")
      ("version,V", "print cyclus core and dependency versions and quit")
      ("restart", po::value<std::string>(),
       "restart from the specified simulation snapshot [db-file]:[sim-id]:[timestep]")
      ("schema",
       "dump the cyclus master schema including all installed module schemas")
      ("agent-schema", po::value<std::string>(),
       "dump the schema for the named agent")
      ("agent-version", po::value<std::string>(),
       "print the version of the specified agent")
      ("schema-path", po::value<std::string>(),
       "manually specify the path to the cyclus master schema")
      ("flat-schema", "use the flat master simulation schema")
      ("agent-annotations", po::value<std::string>(),
       "dump the annotations for the named agent")
      ("agent-listing,l", po::value<std::string>(),
       "dump the agents in a library.")
      ("all-agent-listing,a", "dump all the agents cyclus knows about.")
      ("metadata,m", "dump metadata for all the agents cyclus knows about.")
      ("no-agent", "only print log entries from cyclus core code")
      ("no-mem", "exclude memory log statement from logger output")
      ("verb,v", po::value<std::string>(),
       "log verbosity. integer from 0 (quiet) to 11 (verbose).")
      ("output-path,o", po::value<std::string>(), "output path")
      ("input-file,i", po::value<std::string>(),
       "input file, may be a path or a raw string")
      ("format,f", po::value<std::string>()->default_value("none"),
       "input file format if a raw string, may be none, xml, json, or py.")
      ("warn-limit", po::value<unsigned int>(),
       "number of warnings to issue per kind, defaults to 42")
      ("warn-as-error", "throw errors when warnings are issued")
      ("path,p", "print the CYCLUS_PATH")
      ("include", "print the cyclus include directory")
      ("install-path", "print the cyclus install directory")
      ("cmake-module-path", "print the cyclus CMake module path")
      ("build-path", "print the cyclus build directory")
      ("rng-schema", "print the path to cyclus.rng.in")
      ("rng-print", "prints the full relaxng schema for the simulation")
      ("nuc-data", "print the path to cyclus_nuc_data.h5")
      ("json-to-xml", po::value<std::string>(), "*.json input file")
      ("xml-to-json", po::value<std::string>(), "*.xml input file")
      ("json-to-py", po::value<std::string>(), "*.json input file")
      ("py-to-json", po::value<std::string>(), "*.py input file")
      ("py-to-xml", po::value<std::string>(), "*.py input file")
      ("xml-to-py", po::value<std::string>(), "*.xml input file")
      ;

  po::variables_map vm;
  try {
    po::store(po::parse_command_line(argc, argv, ai->desc), ai->vm);
  } catch(std::exception err) {
    std::cout << "Invalid arguments.\n"
              <<  usage << "\n\n"
              << ai->desc << "\n";
    return 1;
  }
  po::notify(ai->vm);

  po::positional_options_description p;
  p.add("input-file", 1);

  po::store(po::command_line_parser(argc, argv).
                options(ai->desc).positional(p).run(), ai->vm);
  po::notify(ai->vm);
  return -1;
}

int EarlyExitArgs(const ArgInfo& ai) {
  // Respond to command line args that don't run a simulation
  if (ai.vm.count("help")) {
    std::cout << usage << "\n\n"
              << ai.desc << "\n";
    return 0;
  } else if (ai.vm.count("version")) {
    std::cout << "Cyclus Core " << version::core()
              << " (" << version::describe() << ")"
              << "\n\nDependencies:\n";
    std::cout << "   Boost    " << version::boost() << "\n";
    std::cout << "   Coin-Cbc " << version::coincbc() << "\n";
    std::cout << "   Coin-Clp " << version::coinclp() << "\n";
    std::cout << "   Hdf5     " << version::hdf5() << "\n";
    std::cout << "   Sqlite3  " << version::sqlite3() << "\n";
    std::cout << "   xml2     " << version::xml2() << "\n";
    std::cout << "   xml++    " << version::xmlpp() << "\n";
    return 0;
  } else if (ai.vm.count("path")) {
    std::vector<std::string> p = Env::cyclus_path();
    std::cout << p[0];
    for (int i = 1; i < p.size(); ++i)
      std::cout << ":" << p[i];
    std::cout << "\n";
    return 0;
  } else if (ai.vm.count("include")) {
    std::cout << Env::GetInstallPath() << "/include/cyclus/\n";
    return 0;
  } else if (ai.vm.count("install-path")) {
    std::cout << Env::GetInstallPath() << "\n";
    return 0;
  } else if (ai.vm.count("cmake-module-path")) {
    std::cout << Env::GetInstallPath() << "/share/cyclus/cmake/\n";
    return 0;
  } else if (ai.vm.count("build-path")) {
    std::cout << Env::GetBuildPath() << "\n";
    return 0;
  } else if (ai.vm.count("rng-schema")) {
    std::cout << Env::rng_schema(ai.vm.count("flat-schema") > 0) << "\n";
    return 0;
  } else if (ai.vm.count("nuc-data")) {
    std::cout << Env::nuc_data() << "\n";
    return 0;
  } else if (ai.vm.count("schema")) {
    std::stringstream f;
    LoadStringstreamFromFile(f, ai.schema_path);
    std::cout << f.str() << "\n";
    return 0;
  } else if (ai.vm.count("agent-schema")) {
    std::string name(ai.vm["agent-schema"].as<std::string>());
    cyclus::warn_limit = 0;
    try {
      Recorder rec;
      Timer ti;
      Context* ctx = new Context(&ti, &rec);
      Agent* m = DynamicModule::Make(ctx, name);
      std::cout << m->schema();
      ctx->DelAgent(m);
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  } else if (ai.vm.count("agent-version")) {
    std::string name(ai.vm["agent-version"].as<std::string>());
    cyclus::warn_limit = 0;
    try {
      Recorder rec;
      Timer ti;
      Context* ctx = new Context(&ti, &rec);
      Agent* m = DynamicModule::Make(ctx, name);
      std::cout << m->version() << "\n";
      ctx->DelAgent(m);
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  } else if (ai.vm.count("agent-annotations")) {
    std::string name(ai.vm["agent-annotations"].as<std::string>());
    cyclus::warn_limit = 0;
    try {
      Recorder rec;
      Timer ti;
      Context* ctx = new Context(&ti, &rec);
      Agent* m = DynamicModule::Make(ctx, name);
      Json::CustomWriter writer = Json::CustomWriter("{", "}", "[", "]", ": ",
                                                     ", ", " ", 80);
      std::cout << writer.write(m->annotations());
      ctx->DelAgent(m);
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  } else if (ai.vm.count("agent-listing")) {
    std::string name(ai.vm["agent-listing"].as<std::string>());
    try {
      size_t colpos = name.find(":");
      std::string p = name.substr(0, colpos);
      std::string lib = name.substr(colpos+1, std::string::npos);
      std::set<std::string> specs = cyclus::DiscoverSpecs(p, lib);
      for (std::set<std::string>::iterator it = specs.begin(); it != specs.end(); ++it)
        std::cout << *it << "\n";
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  } else if (ai.vm.count("all-agent-listing")) {
    try {
      std::set<std::string> specs = cyclus::DiscoverSpecsInCyclusPath();
      for (std::set<std::string>::iterator it = specs.begin(); it != specs.end(); ++it)
        std::cout << *it << "\n";
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  } else if (ai.vm.count("json-to-xml")) {
    std::string infile(ai.vm["json-to-xml"].as<std::string>());
    try {
      std::stringstream input;
      LoadRawStringstreamFromFile(input, infile);
      std::cout << cyclus::toolkit::JsonToXml(input.str());
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  } else if (ai.vm.count("xml-to-json")) {
    std::string infile(ai.vm["xml-to-json"].as<std::string>());
    try {
      std::stringstream input;
      LoadRawStringstreamFromFile(input, infile);
      std::cout << cyclus::toolkit::XmlToJson(input.str());
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  } else if (ai.vm.count("json-to-py")) {
    std::string infile(ai.vm["json-to-py"].as<std::string>());
    try {
      std::stringstream input;
      LoadRawStringstreamFromFile(input, infile);
      std::cout << cyclus::toolkit::JsonToPy(input.str());
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  } else if (ai.vm.count("py-to-json")) {
    std::string infile(ai.vm["py-to-json"].as<std::string>());
    try {
      std::stringstream input;
      LoadRawStringstreamFromFile(input, infile);
      std::cout << cyclus::toolkit::PyToJson(input.str());
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  } else if (ai.vm.count("py-to-xml")) {
    std::string infile(ai.vm["py-to-xml"].as<std::string>());
    try {
      std::stringstream input;
      LoadRawStringstreamFromFile(input, infile);
      std::cout << cyclus::toolkit::PyToXml(input.str());
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  } else if (ai.vm.count("xml-to-py")) {
    std::string infile(ai.vm["xml-to-py"].as<std::string>());
    try {
      std::stringstream input;
      LoadRawStringstreamFromFile(input, infile);
      std::cout << cyclus::toolkit::XmlToPy(input.str());
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  } else if (ai.vm.count("metadata")) {
    try {
      Json::Value root = DiscoverMetadataInCyclusPath();
      Json::CustomWriter writer = Json::CustomWriter("{", "}", "[", "]", ": ",
                                                     ", ", " ", 80);
      std::cout << writer.write(root);
    } catch (cyclus::IOError err) {
      std::cout << err.what() << "\n";
    }
    return 0;
  }
  return -1;  // Main should not return early
}

void GetSimInfo(ArgInfo* ai) {
  // Schema info
  ai->flat_schema = ai->vm.count("flat-schema") > 0;
  ai->schema_path = Env::rng_schema(ai->flat_schema);
  if (ai->vm.count("schema-path")) {
    ai->schema_path = ai->vm["schema-path"].as<std::string>();
  }

  if (ai->vm.count("restart") > 0) {
    ai->restart = ai->vm["restart"].as<std::string>();
  }

  // Logging params
  if (ai->vm.count("no-agent")) {
    Logger::NoAgent() = true;
  }
  if (ai->vm.count("no-mem")) {
    Logger::NoMem() = true;
  }
  if (ai->vm.count("verb")) {
    std::string v_level = ai->vm["verb"].as<std::string>();
    if (v_level.length() < 3) {
      Logger::ReportLevel() = (LogLevel)strtol(v_level.c_str(), NULL, 10);
    } else {
      Logger::ReportLevel() = Logger::ToLogLevel(v_level);
    }
  }

  // Warning params
  if (ai->vm.count("warn-limit"))
    cyclus::warn_limit = ai->vm["warn-limit"].as<unsigned int>();
  if (ai->vm.count("warn-as-error"))
    cyclus::warn_as_error = true;

  // Output path
  ai->output_path = "cyclus.sqlite";
  if (ai->vm.count("output-path")) {
    ai->output_path = ai->vm["output-path"].as<std::string>();
  }
}

redpajama_set_name: RedPajamaGithub


By completing this form, you are providing information that will be used to provide a complete proposal for "YOUR" Borrower in "YOUR" name! No borrowers will be contacted by HighTechLending Inc. If any details are required to complete the proposal you will be contacted at the phone or email provided in the Broker Information section of the request form.


text:
Q: how to get NSDate of a specific next day and time I have some events for which I need to calculate NSDates.
For example I'm trying to get the next Monday at 8:00 AM.
So I tried some stuff but nothing works:
1.
let nextMonday = NSCalendar.currentCalendar().dateBySettingUnit(NSCalendarUnit.Weekday, value: 2, ofDate: startDate, options: NSCalendarOptions.MatchNextTime)
let nextMondayEight = NSCalendar.currentCalendar().dateBySettingUnit(NSCalendarUnit.Hour, value: 8, ofDate: nextMonday!, options: NSCalendarOptions.MatchNextTime)

I get:

2016-04-12 05:00:00 +0000

That's Tuesday at 8:00 (the time difference is my local time GMT -3).
2.
let unitFlags: NSCalendarUnit = [.Day, .Month, .Year]
let comp = NSCalendar.currentCalendar().components(unitFlags, fromDate: NSDate())
comp.timeZone = NSTimeZone.localTimeZone()
comp.weekday = 1
comp.hour = 8
comp.minute = 0
comp.second = 0
let compDate = NSCalendar.currentCalendar().dateFromComponents(comp)

print("time: \(compDate!)")

I get:

2016-04-11 05:00:00 +0000

That's today at 8:00 and not next Monday at 8:00.

Any suggestions?
Thanks

A: NSCalendar has a method nextDateAfterDate:matchingComponents:options for this kind of date math.
let calendar = NSCalendar.currentCalendar()
let components = NSDateComponents()
components.hour = 8 // 8:00
components.weekday = 2 // Monday in Gregorian Calendar

let nextMondayEightOClock = calendar.nextDateAfterDate(NSDate(), matchingComponents: components, options: .MatchStrictly)