text:
Cricket's Libertarian Debasement
Conservatives are wont to care about the underpinnings of a free society found in the rule of law, social capital, virtues and tradition. They use terms like "ordered liberty" to justify the constraints that might be applied to otherwise unfettered free markets, where the monetization of everything routinely occurs without the apparent concern of libertarians. Such thoughts come to mind as the nation finds itself caught up in what is merely the latest in a long line of sporting disgraces and debacles.
Despite attempts at humour – for example, by Australia's paper of record, the NT News, which referred merrily to Australia's ball-tamperer Cameron Bancroft as having a … well, let the front page reproduced below speak for itself – Australians on the whole seem far from amused. Such is the widespread angst that even that bastion of smoothly effected public relations practice, Cricket Australia, has deemed it wise to keep apologising for the behavior of our players and, this time, to act meaningfully and punish rather than reward wrongdoing. I have already received two stern updates from CA chief James Sutherland and anticipate several more in short order.
There are so many angles taken by sports journalists and professional and amateur moralisers on this matter that one scarcely knows where to start. Yes, Smith and Bancroft are not the only ones who have done this. Yes, they all do it. Yes, the International Cricket Council (the IPCC of cricket, one might say, run by similarly suspect types), has previously whipped wrongdoers with feathers.
And yes, it is the team and corporate culture that is also to blame, not just the hapless and inept Cameron Bancroft and those who conspired to put his inadequate sleights of hand on display for eagle-eyed TV cameras. Yes, there are other awful things about this Test series, and, yes, including South African officials' public denigration of an Australian player's wife. Yes, Test cricketers are overpaid bleaters. Yes, they speak endlessly in meaningless self-serving clichés, but that is to be expected. They most likely think in self-serving clichés as well.
Australians, correctly, want to hide from the shame. We all know this doesn't pass the smell test, and, whatever other countries' cricket establishments do and whatever the ICC does about unacceptable behavior, we are better than that and better than them.
All that is agreed.
But how did it all come to this? One simply cannot imagine 1940s English captain Norman Yardley tastelessly sledging Don Bradman over a private matter concerning Dame Jessie Bradman a decade earlier. Of course, there was bodyline, as Roger Underwood has recently reminded us in these pages. Cricket was indeed played hard then, and, at least by the Poms, with scant regard for the niceties — so much so that the Australian captain of the day, Bill Woodfull, still smarting from being belted above the heart with one of Harold Larwood's thunderbolts, was moved to note that there was only one side on the field actually playing cricket. And Dr Grace himself, the very first Mr Cricket, was certainly prone to cheating in the financial sense, and routinely guilty of playing fast and loose with the gentlemanly precepts of the game.
Despite bodyline, there is no doubt that the game is almost unrecognisable from that which was played a century ago. What has changed?
Two snippets suffice to demonstrate the magnitude of the change in cricket and, indeed, sport generally. The first is the legendary Australian allrounder and Mosquito pilot (left) Keith Miller's retort when asked about the "pressure" of playing Test cricket: "Pressure? Pressure? That's not pressure," he femously replied, "Pressure is having a Messerschmitt up your arse."
The second is the equally legendary cricket commentator and former test captain Richie Benaud's response to fellow commentator and former Test captain – appointing former Test captains to the commentary team is a Channel Nine thing – Mark Taylor, who once opined that Australia, having lost three wickets for five in a one day match, was a "tragedy".
"No, Mark, that isn't a tragedy," Benaud replied, "mass starvation in Africa is a tragedy."
Yes, one big thing that has changed is the loss of perspective. This is sport. Losing wickets isn't "tragedy". Playing cricket isn't "pressure". Cricket is not life. But is should still be permitted to say deep things about life. Indeed, it should be expected to do so.
What explains the sea-change that has occurred? There is no doubt that sport has been caught up the sheer awfulness of the corporatisation and the commodification of everything. The contemporary world is monetised to within an inch of its life. From farming – yes always a business but now thoroughly financialised – to government, to the administration of sport, to education.
The monetisation of cricket has come in waves, each one seemingly ushering in a positive reform to the benefit of the game. For example, there was Kerry Packer's apparent support in the 1970s for cricketers being paid a decent wage and sharing in the spoils of the then Cricket Board, itself now corporatised as "Cricket Australia" and festooned with all the modern corporate ghastliness – the pretend jobs, the endless marketing, the press conferences, the public relations, the media management, the cliché ridden messaging. Packer's 1970s push, of course, like Rupert Murdoch's in the 1990s which completed the transformation of rugby league, already underway, into a commercialised, over-hyped, over-priced shadow of its former self, was really about nothing more than TV rights and corporate profit. Nowadays, we have both genuine stars like Steve Smith and nonentities like Shane Watson earning literally gazillions, often on the back of corporate sponsorships and participation in pop-star cricket in India and elsewhere. All sense of perspective lost.
Does monetisation explain a deterioration of standards of behaviour and propensity to varying degrees of cheating among the elite players of most countries? Yes and no. Yes, when the financial stakes are so high there is also a tendency towards the loss of perspective that has accompanied the current generation of sportsmen's near ubiquitous flouting of the former norms of manners, behavior towards opponents and a what should be natural inclination to honesty.
But no, the decline of sport as a public stage on which the traditional virtues flourish is not just the result of marketisation. The culture itself has changed forever, in other and more sinister ways. All this has happened to sport just at the time when objective, acceptable standards of behavior — what constitutes agreed virtue, if you like — have been replaced by relativism as the world's operating system. Hence the excuses that have rolled out this past week – they all do it, it isn't really cheating, it doesn't matter that much, let's move on" – have currency in many of the institutions that matter, and this is the result of creeping post-modernism. What we have, not just in sport but everywhere, is an operating system where the very notion of virtue is under siege, where values are contingent. What does it mean when we hear, as millions of Australians are now saying, "What you did was wrong"? What does saying such a thing mean now, and how, and how much, does saying it count for anything? Yes, we should be heartened that is the public sentiment of the moment. But will it change anything, moderate the mores by which the world now operates?
Given the current furore, of course, it was inevitable that poor old Trevor Chappell, he of the infamous underarm incident of February 1981 against New Zealand, would be wheeled out for comment. He said that these players would be tainted for life by their actions, just as he was. (Mind you, he has made a bit out of the dinner speaking circuit). As an Australian currently living in New Zealand, I can attest to the longevity of memories of these things and the lingering Kiwi bitterness over it. Trevor's brother and captain Greg Chappell was also vilified, indeed more so. But he wasn't punished for his actions by the then Cricket Board. Technically, what he instructed Trevor to do wasn't "cheating". Nor was bodyline, at the time. It was just off, and known by most to be off.
These things all failed the smell test, just like the Australian team's actions of the weekend. It is noteworthy that it is the public that has called time on rancid on-field behavior. It is, above all, a national embarrassment.
Perhaps, then (and ironically), there still is a place for nationalism in a corporatised and globalised world. It is, above all, Australian shame that we are experiencing, and that still seems to matter. Perhaps also, there is also room for the conservative's instinct that craves the civilising crutch of tradition and its attendant supporting mechanism for the free society, virtue. Call it the longing For an ordered liberty that speaks to moral behavior that flies in the face of relativist "corporate world".
Would libertarians equally worry about these matters? I would doubt it. They value freedom above all else. The freedom to make lots of money from entertaining people is a fundamental right for the professional athlete. And corporatised life is simply part of modern business practice and of contemporary capitalism. Cricket, too, is now a business, and decency and virtue no more than optional extras. That's life in the marketplace.
Well, for my money, it isn't. There is more to cricket than money. It is awful that, one by one, the sports we all loved have been turned into something very different. Oh yes, on the surface, they are still the games we once cherished. But look a little harder at the folks who now play at elite level, their behavior, their culture, their operating systems, the words they use, their rewards, their lifestyles. I don't see much to be admired.
We do live in sad times, in times that disappoint routinely. And we live in endlessly monetised, relativist, soulless times. That is for certain.
en passant – 28th March 2018
This is all part of the bigger picture of 'global relativity' in which the elites seek a common denominator; in short, the lowest level attainable by all patrticipants. This is all part of the lowering of all standards. But fear not, when our intelligentsia and political scum achieve their objective of destoying Oz through maximising the 'diversity' of everything that was good and honourable in our culture, it will be about that time we are swept into the dustbin of history by more coherent, unified and stronger societies. It has always been that way.
Through its treasonous politicians Oz will collapse the same way and become just another footnote of history. As a society we have chosen to collapse and it is what we have elected them to do for / to us.
lloveday – 28th March 2018
Paul 🙂
Jody – 30th March 2018
Please, all of you, watch this. We have just spent some of our Good Friday and were moved ineffably: John Anderson interviews Professor Jordan Peterson: I've just sent it to a friend who has a very troubled teenage grandson living with her.
https://johnanderson.net.au/conversations-featuring-professor-jordan-peterson-university-of-toronto/
padraic – 28th March 2018
Players in national sporting sides are also de facto diplomats for our country – whether we agree with that or not-and politicians can get away for criticising them for that reason. But they are on shaky ground being affronted by cricketers "sledging", claiming that players are supposed to be good role models for children when you see the looks on the faces of the busloads of schoolchildren who visit Parliament House regularly and are up in the gallery watching the pollies in action at Question Time.
I took an foreign national to Parliament House, Canberra, to observe Question Time – "Are they drunk?" she asked seriously.
..a foreign..
You could be excused for the typo, thinking it was a new genderised grammatical article promulgated by the PC mob.
Reech – 28th March 2018
Cricketers or politicians as role models? "These Pagod things of Sabre sway, with fronts of brass and feet of clay." (Byron)
Blair – 28th March 2018
The end justifies the means.
pgang – 29th March 2018
Oh great, Quadrant has joined the conga line of empty-headed virtue signallers, happily destroying the career of a fine cricket player and exceptional captain of our national team, while the facts are ignored. The 'incident' was so minor that it barely even registers on the incidentometer. Sure, discuss the decline in morals within professional sport as a reflection on post-Christian society at large, but this particular item has nothing to do with any of that. To pretend so represents a category error.
Ball tampering is officially frowned upon in cricket but it remains part of the game's strategy none the less, in what is a highly strategic game. It registers lowly in the list of offences, and as I understand it, at worst it can cost the offending team a few runs if the rules are applied correctly. In this case the umpires, the real umpires on the field officiating the game in real life, considered the incident to be so trivial and the effect on the ball so utterly minor that they allowed play to continue without change.
Yes, this has been a disgrace to Australia. It's a disgrace that our media, politicians and all the virtue signalling cohorts who seem to love an authoritarian mindset have been so willing, in the name of Australia's great virtue, to throw our national team under a bus. How ironic. A real nation would have stood behind its team, and in private told them not to be so bleeding obvious in future.
Warty – 29th March 2018
Fully agree with all you've said pgang. I thought Shane Warne's article was one of the better ones, in that he said that certainly they'd made an unfortunate mistake and should suffer a penalty, but that the extensive bans were media driven; in other words it ought not to have been a one year ban each for Warner and Smith and nine months for Bancroft.
My own view is that we have for too long put ourselves on a 'holier than thou pedestal', which is one of the reasons for the gloating in England, India and South Africa. Heaven knows what New Zealand is saying after the Trevor Chappell incident all those years ago.
Worse still was a Ross Gitten article forwarded to me by a friend (I'd rather he hadn't) and he so conflated the cheating incident, he thought he could draw analogies with the way we treat asylum seekers; royal commissions into the banking industry; and cutting the tax on corporations. The big Git's article dragged in every Greeny grievance you could think of and related to a national decline in decency, a fair go and mateship. The bloke is stark raving bonkers.
Jim Kapetangiannis – 29th March 2018
Finally some sense – thank you pgang
Virtue signallers are hypocrites one and all from the moral vacuum and naked emperor that we have as Prime Minister down to all the lay finger waggers. Let's get real here. In the scale of important matters this rates at the every bottom. I couldn't have put it any better than these ancient words:
"Woe to you, scribes and Pharisees, hypocrites! For you pay tithe of mint and anise and cummin, and have neglected the weightier matters of the law: justice and mercy and faith. These you ought to have done, without leaving the others undone. Blind guides, who strain out a gnat and swallow a camel"
The last sentence is particularly appropriate.
There were many $millions legally bet on the various results of the game, and punters are entitled to assume the results are fairly determined and not dependent on the success or not of cheats.
Part of those $millions are paid to CA for the right to bet on "their product" and goes into the pool from which these cricketers are paid. Betting on the game also encourages those who have bet to watch, increasing the ratings & thus increasing the value of television rights, a big part of CA's income.
Part of the players' payments is by way of performance bonuses. Yesterday female cricketer Melissa Quinn was charged with four counts of dishonestly obtaining financial advantage by deception – colloquially by cheating. While using a very different method to her and not being successful, the male cricketers also attempted "dishonestly obtaining financial advantage by deception", as they tried to illegally affect the results of the game (more wickets, more quickly, greater chance of winning, greater chance of an early finish…) when succeeding could have meant bigger bonuses. No matter which way it is spun, it was attempted match-fixing.
Far from being unfairly treated, I consider them lucky to not be criminally charged.
In my view they committed an even greater transgression by lying about what went down, by claiming it was a piece of tape befouled with dirt from the pitch, when a piece of sandpaper had been sneaked onto the ground and used. Liars and cheats!. Even when caught out they were not men enough to truthfully fess up. Contemptible.
This was not a kid taking a peep at hide-and-seek, but mature men premeditatedly bringing sandpaper onto a cricket field and illegally using it for potential financial advantage.
So, I tried to murder you but failed, so surely that is not a problem as it was only an intention?
The issue in this case is the intention to win by cheating (or by any dubious means possible), not the result. Bodyline was legal, but unsporting, ball tampering is known to be illegal. This pathetic incident is less about the crime than it is about the moral compass our 'cricketing heroes' displayed while representing Oz.
I gave a presentation a couple of years ago in which I used Orwell to demonstrate the degradation of language:
"An example we all know is the word 'hero', which traditionally refers to someone who is brave, daring and risks everything, including their life. However, a more modern meaning is someone who resists authority, such as a masked thug attacking peaceful demonstrators or an environmental activist trying to stop economic growth by advocating the closure of oil refineries or aluminium smelters using fossil fuel electricity (not to mention the heroic status of someone who can hit or kick a ball better than most others)."
These 'heroes' have demeaned our language and the Oz image (or what is left of it). As for 'young' Bancroft being influenced by older, more worldly 'heroes'; last time I checked, he was an adult and allowed to vote.
In 2017 a highly ranked professional chess player was banned for life after it was shown that he was receiving advice from a computer during a game. His claim that he was stronger than the computer and did not take its advice was rejected as his INTENTION was the issue, not the pathetic crime.
If 'whatever it takes' is the new heroic approach to everything, then there is no difference between civilised behaviour in any endeavour and barbarism
Other factors in the abovementioned over-reaction are the confected outrage in South Africa over Dutton's inference that South Africa is less than civilized and the desire for revenge for his statement, plus the desire to obliterate the memory of Hansie Cronje's misdemeanours plus last years ball tampering in Oz, and the ruthless fury of the corporate sponsors here in Australia who have had their products associated with perceived dishonourable behavior. With regard to the latter you would think the players would have had enough common sense to realise the consequences of their actions on their incomes.
Jacob Jonker – 29th March 2018
Relativists versus virtue signallers. The latter have it. It is a sign of the times that the zeitgeist is, more and more strongly, making itself felt. I just got a serve from another editor for rambling and discursing( the latter an in ention of my own, I believe. He said I was being discursive. But, I digress). The corporatisation so-called is the main theme. Cricket is not that anymore, as we know, except in the shires as a friendly game. The main point is staring people in the face, but for nostalgia's sake they, mostly, ignore it. It like the alarm clock goes off and we hit it on the head-we want to slumber on. The solution is not exactly to turn around and do as they do. The moment the table is turned they, who are in control of the rules, regulations and interpretations, the whole narrative of free enterprise so-called libertarian capitalism, globalist elitist autocrat technocrat such and such, change their tune. It is part of a psychological manipulative strategy which is employed at all levels of relationships where some are in control over other. In the West, the electorates are given an education in total politics. Of those who are switched on, the majority are on the game. No association, no club, no source of income or potential commercialisation or sell-out after hijack, cleaning out and loading with debt is safe from these operators. People have had time to build up immunity, but have neglected to do so. The few who stand up to this kind of thing are set upon in everywhich way, once it becpmes clear they cannot be swayed and brought on board somehow. People who stick with it are generally destroyed or manoeuvred into uselessness. If people had any sense, they would stop paying, stop watching and in any way possible stop supporting such activities as are extraneous for survival. As for Oz, and NZ as well, as has been noted, the game is up for the European civilisation such as it is. Long before, people in control decided it was useless holding out against the inevitable tide of humanity headed for these shores-Might as well sell out and have a good time. Since Bondy, people have caught on to this development and thought, if they had to think about it, remember the zeitgeist, why struggle against the flow of events when the go-getting is all the go and the getting is easy, with so many people still dreaming of a different virtue, traditional values. Some people are able to sleep through the most noisome mayhem, but there are a majority in the West which is still to wake up. Imo, cassandra-like, I think it's coming.
Stan "the tanned man" Grant explains it, as just about only your ABC could do:
Australia's cheating scandal is about more than cricket
Try again (long day celebrating my end of Lenten fasting):
If that fails, and you want to read how the cheating relates to Friedrich Hayek it's somewhere on the ABC's site.
rodcoles – 29th March 2018
I've loved this game for three score years and ten. I doubt Warner will ever play for Oz again; more likely he will become a cricket mercenary following the big money in India. Smith I feel really sorry for, because I have always enjoyed his cricket. I expect he will play Tests again. Bancroft, perhaps bullied into this monumental f*^kup, may be very vulnerable.
One plus about this though…it has reminded a country which has long forgotten that actions have consequences.
My wife knows close to SFA about cricket, and less about Smith and my spiel to her was that he is a simple man who has by massive dedication and almost single-minded application made the most of his specific ability and excelled in playing cricket, for which I highly admired him. Until now. Naivety as an excuse, and he is surely naive, I'll leave to Dillard's apologists and if he does play Tests again, as you expect, I hope it will never again be in any leadership capacity.
Do you not understand how minor this so-called offence was? It's about on a par with an AFL player deliberately kicking the ball out of bounds, or taking down an opponent to stop their run-on. And for this we have pilloried and destroyed one of our nation's finest public representatives. The lack of perspective over this non-issue is staggering.
There is a clear message here to anyone who intends to represent Australia: don't.
Well call me a relativist if you like, but I'll leave the jack boots to you lot.
pgang
Do you not realise how serious this actual offence was?
Any way it is spun, it was attempted match-fixing, or as I prefer to call it, attempted bet-fixing. Whether that was their specific intention or not, it is a no-brainer that if their cheating went as planned, it would affect the results of legally made bets. People may think that gambling on cricket/football/tennis… is not important, irrelevant, even immoral, but it is a driving force behind the explosion of the players' payments that have made Smith and Warner wealthy and gave Bancroft hopes of being so. Much more money was riding on the various results of the game (bookmakers offer scores of options) than was on Fine Cotton, where people even tenuously connected with the cheating received life disqualifications.
This cheating involved planning, obtaining, bringing to the ground, and taking onto the playing field, sandpaper, then illegally using the sandpaper with the specific and sole intention of corrupting the outcomes of and in the game, and to equate that to a spur of the moment decision of an AFL player deliberately kicking the ball out of bounds is, to me, unsustainable, bordering on ridiculous.
Then when detected, they lied in a disgraceful attempt to mitigate the offence, saying it was dirtied tape that was used. Lying cheats.
The lack of understanding by some of the seriousness of this major issue is staggering.
I only received one belting as a child, and that was not for what I had done, but for lying about it – I did not cry (I never have), I did not complain; I deserved it and more and it taught me a well-deserved lesson which these lying cheats seemingly have never learned.
"There is a clear message here to anyone who intends to represent Australia: don't" cheat, but win or lose on your merits. Why should others forgo the honour and financial riches that can come from honestly utilising their skills in a sport suited to them because of the abysmal example set by a few and the understandable and justified outcry that ensued? Someone with limited intellectual, but great physical, ability should settle for being a checkout chick rather than try to be a top tennis player? You must be joking.
"(O)ur nation's finest public representatives don't cheat, and to lie about it when caught out is a further disqualification from that accolade.
Meanwhile, innocent white farmers are being slaughtered in South Africa. Who cares? Well, the rest of South Africa will starve to death. Then they'll start to care. And so should we – these are our 'relatives', these farmers.
Jody,
The 'whites' will be slaughtered and the survivors will not be allowed into Oz (wrong colour, wrong religion, wrong work ethic and just wrong ….). Their farms will turn to deserts and the natives will begin to starve, at which point there will be Green & national suicidal Open Borders advocates demands for their admission into Oz to 'improve' our 'diversity'. Didn't you know that diversity solves all the world's problems?
Then obviously the work of Professor Jordan Peterson becomes increasingly urgent.
pmacsporran@pac.com.au – 6th April 2018
Oh, and by the way, the problem isn't the Libertarian but the Libertine – there's a difference that might be too much for some.
Three Cheers for the Melbourne Cup
Wimbledon as Once We Knew and Loved
Roger Underwood
Reflections on Donald Bradman's Career and Character


text:
Keith Cooper
Other Indiana Exonerations with Jailhouse Informants
Keith Cooper (Photo by Zbigniew Bzdak, Chicago Tribune)
On October 29, 1996, police were called to a third-floor apartment in Elkhart, Indiana, where 17-year-old Michael Kershner, his mother, Nona Canell, and four friends reported that two gunmen had burst in and robbed them. Kershner was wounded by a gunshot in the abdomen. The gunman left behind a hat that fell off his head.
Two days later, one of the witnesses, 15-year-old Eddie Love, told police that 20-year-old Christopher Parish looked like one of the robbers. In January 1997, 29-year-old Keith Cooper was arrested on a purse snatching charge. Detective Steve Rezutko concluded that Cooper resembled a computerized sketch of the gunman and he was black, tall and skinny—the description of the gunman given by the witnesses—he must have been the gunman. So Cooper's photograph was put into a photographic lineup and ultimately, Canell, Love and Kershner identified him as the gunman. Those witnesses also identified Parish from a photo lineup, as did other witnesses who were in the apartment.
Cooper went on trial first in Elkhart County Circuit Court in the fall of 1997. Testifying before a judge who heard the case without a jury, Canell, Kershner and Love identified Cooper as the gunman. The prosecution called Debery Coleman, a jail inmate, as a witness, but Coleman refused to testify. So the prosecution was allowed to call a detective who testified that Coleman reported that after Cooper was arrested and was awaiting trial, he confessed to Coleman that he committed the crime.
By that time, DNA tests had been performed on the sweatband of the hat left behind by the gunman. Although the tests identified a DNA profile that did not match Cooper, Cooper's lawyer inexplicably allowed the prosecution to tell the jury that the testing did not eliminate Cooper.
Cooper testified and denied involvement in the crime. The prosecution then called 19-year-old Jason Ackley to testify. Ackley said he was in the bathroom at the time of the crime and did not see the robbers. However, he testified that he recognized Cooper's voice as the voice of the gunman.
On September 9, 1997, the judge acquitted Cooper of attempted murder, but convicted him of robbery resulting in serious bodily injury. Cooper was sentenced to 40 years in prison.
In 1998, Parish went on trial. He was identified by Kershner and Canell, as well as by Jermaine Bradley, who was also in the apartment at the time of the crime. Seven witnesses, all family members, testified that Parish was in Chicago at the time of the shooting. On July 23, 1998, the jury convicted Parish and he was sentenced to 30 years in prison.
After Parish's conviction was affirmed on appeal in 1999, Parish filed a petition for post-conviction relief in 2002, which was amended in 2004. At a hearing on the petition, Parish presented evidence that his trial attorney had failed to adequately investigate the case prior to trial.
He presented evidence that showed that Kershner was shot in the parking lot outside the building and falsely reported it as occurring in the apartment because he was on home detention for a gun charge. Love testified that police coerced him to identify Parish. Further, a crime scene technician said he found no blood in the apartment although Kershner was bleeding from his gunshot wound.
In addition, DNA tests conducted after Parish's trial on the hat found inside the apartment, which the prosecution argued at trial belonged to Cooper, showed not Cooper's DNA, but that of a man who was convicted in 2002 of attempted murder and was serving a 62-year sentence in a Michigan prison.
Parish also presented evidence that there were 12 alibi witnesses who could account for his whereabouts, including at least one who was not a family member.
The trial court, however, denied the petition.
On December 6, 2005, the Court of Appeals of Indiana reversed the trial court, set aside the verdict and ordered a new trial, finding that Parish had received an inadequate legal defense. By not investigating the possibility that the shooting occurred outside the apartment, Parish was denied an opportunity to undermine eyewitness accounts that the shooting took place inside the apartment, the court ruled. The charges against Parish were then dismissed.
By that time, witnesses had begun to recant their testimony. Coleman, the jail informant who said Cooper had confessed, said Cooper never confessed. Coleman also said that he was promised leniency in his own charges—a promise that the detective who took the statement had failed to disclose at Cooper's trial.
At that time, Cooper had a petition for a new trial pending. The judge offered him a choice of overturning the conviction and a possible retrial or a sentence modification that would allow Cooper to be released immediately. Cooper chose the sentence modification and was released in April 2006.
Parish filed a wrongful conviction lawsuit and on October 27, 2010, a civil jury awarded him $78,125 in damages. A total of $191,000 in attorney's fees and costs also was assessed.
Parish's attorneys appealed the damage award, arguing that it was too low. In December 2012, the U.S. Court of Appeals for the 7th Circuit set aside the damage award and sent the case back for a new trial on damages, ruling that the trial judge had improperly barred evidence of Parish's innocence to be presented to the jury. In January 2014, the case was settled for $5 million.
In 2013, Elliott Slosar, Parish's attorney from the Exoneration Project at the University of Chicago Law School, requested a pardon for Cooper from Indiana Gov. Mike Pence. The pardon, which the prosecutor in Cooper's 1997 trial supported, included the evidence of the recantations from Canell and Kershner, which were part of the lawsuit brought by Parish.
Canell and Kershner said that detective Rezutko had manipulated them into identifying Cooper and Parish, even though they were unsure. Rezutko, they said, refused their requests for a live lineup. At Cooper's trial, they said, Rezutko pointed out Cooper in the hallway so they would know to identify him in court. Love recanted his identification of Cooper and Parish, as did Ackley, who said that he would have identified anyone that Rezutko told him to identify.
The petition for a pardon also disclosed that further DNA testing on the hat had identified the DNA as that of Johlanis Ervin, who was serving a 60-year prison term for a murder committed in Berrien, Michigan in 2002—six years after the Elkhart crime. Canell and Kershner had identified Ervin and his brother as the two men who came to their apartment.
Although the Indiana Parole Board recommended that Cooper be pardoned, Pence declined to act on the request. On February 9, 2017, Indiana Gov. Eric Holcomb, who was elected after Pence left office to join Donald Trump as his vice presidential running mate, granted Cooper's pardon.
In November 2017, Cooper filed a federal lawsuit against the city of Elkhart and four of its police officers.
County: Elkhart
Most Serious Crime: Robbery
Additional Convictions:
Sentence: 40 years
Contributing Factors: Mistaken Witness ID, False or Misleading Forensic Evidence, Perjury or False Accusation, Official Misconduct, Inadequate Legal Defense
Did DNA evidence contribute to the exoneration?: Yes*

redpajama_set_name: RedPajamaCommonCrawl


text:
Computer Science > Machine Learning
Title: Hierarchical Learning to Solve Partial Differential Equations Using Physics-Informed Neural Networks
Authors: Jihun Han, Yoonsang Lee
(Submitted on 2 Dec 2021 (v1), last revised 7 Jan 2022 (this version, v3))
Abstract: The neural network-based approach to solving partial differential equations has attracted considerable attention due to its simplicity and flexibility in representing the solution of the partial differential equation. In training a neural network, the network learns global features corresponding to low-frequency components while high-frequency components are approximated at a much slower rate. For a class of equations in which the solution contains a wide range of scales, the network training process can suffer from slow convergence and low accuracy due to its inability to capture the high-frequency components. In this work, we propose a hierarchical approach to improve the convergence rate and accuracy of the neural network solution to partial differential equations. The proposed method comprises multi-training levels in which a newly introduced neural network is guided to learn the residual of the previous level approximation. By the nature of neural networks' training process, the high-level correction is inclined to capture the high-frequency components. We validate the efficiency and robustness of the proposed hierarchical approach through a suite of linear and nonlinear partial differential equations.
Subjects: Machine Learning (cs.LG)
Cite as: arXiv:2112.01254 [cs.LG]
(or arXiv:2112.01254v3 [cs.LG] for this version)
From: Jihun Han [view email]
[v1] Thu, 2 Dec 2021 13:53:42 GMT (11992kb,D)
[v2] Mon, 3 Jan 2022 23:57:50 GMT (11992kb,D)
[v3] Fri, 7 Jan 2022 03:25:11 GMT (11993kb,D)


FRADS, Nepal works to enhance quality in the classroom and support schools in Ramechhap district along with providing health services and reconstructing school buildings. As per the agreement with FRADS, Nepal, RBF, an NGO, which assists public schools in improving quality education in Nepal, facilitated the training. RBF has committed to assist with developing, planning and conducting training for their 13 project school teachers on educational philosophy along with core subject areas mathematics, language, science and also a one-day long training for the school leaders. The training will be carried out in three different phases with approximately four months gap in between to enable trainees to practice their learning's in their respective schools.


Barnyard Redwork 9 is a single design from the Barnyard Redwork design set. A beautifully digitised set of fun farm designs that stitch out a treat. You will just fall in love with this set. Quick and easy to stitch and so very effective. This collection comes in two sizes - 4x4 and 5x7. Please note 5x7 is not avaliable for SEW or PCS users, however, the 5x7 for PES has been included for SEW and PCS users.


text:
Mr. Clean actor dies at 92
LOS ANGELES, CA The son of actor House Peters Jr. says his dad died of pneumonia at the Motion Picture and Television Fund Hospital in Los Angeles. He was 92.
Peters was the muscular guy with the bald head and hoop earring that starred in Proctor & Gamble's TV commercials for household cleaners in the late 1950s and into the early 1960s. He was known for his no-nonsense attitude toward dirt and grime and helped make the household cleaner famous with the trademark jingle, "Mr. Clean, Mr. Clean."
He is survived by his wife, a daughter, another son and four grandchildren.
Entertainment Channel | abc13.com Celebrity Blog | What's on TV
Slideshow archive | Local events | Contests | Headlines at a glance


text:
package generators

import (
	"fmt"
	"path"
	"path/filepath"
	"strings"

	"k8s.io/code-generator/cmd/client-gen/generators/util"
	clientgentypes "k8s.io/code-generator/cmd/client-gen/types"
	"k8s.io/gengo/args"
	"k8s.io/gengo/generator"
	"k8s.io/gengo/namer"
	"k8s.io/gengo/types"
	"k8s.io/klog"

	informergenargs "github.com/knative/pkg/codegen/cmd/injection-gen/args"
)

// Packages makes the client package definition.
func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages {
	boilerplate, err := arguments.LoadGoBoilerplate()
	if err != nil {
		klog.Fatalf("Failed loading boilerplate: %v", err)
	}

	customArgs, ok := arguments.CustomArgs.(*informergenargs.CustomArgs)
	if !ok {
		klog.Fatalf("Wrong CustomArgs type: %T", arguments.CustomArgs)
	}

	versionPackagePath := filepath.Join(arguments.OutputPackagePath)

	var packageList generator.Packages
	typesForGroupVersion := make(map[clientgentypes.GroupVersion][]*types.Type)

	groupVersions := make(map[string]clientgentypes.GroupVersions)
	groupGoNames := make(map[string]string)
	for _, inputDir := range arguments.InputDirs {
		p := context.Universe.Package(vendorless(inputDir))

		objectMeta, _, err := objectMetaForPackage(p) // TODO: ignoring internal.
		if err != nil {
			klog.Fatal(err)
		}
		if objectMeta == nil {
			// no types in this package had genclient
			continue
		}

		var gv clientgentypes.GroupVersion
		var targetGroupVersions map[string]clientgentypes.GroupVersions

		parts := strings.Split(p.Path, "/")
		gv.Group = clientgentypes.Group(parts[len(parts)-2])
		gv.Version = clientgentypes.Version(parts[len(parts)-1])
		targetGroupVersions = groupVersions

		groupPackageName := gv.Group.NonEmpty()
		gvPackage := path.Clean(p.Path)

		// If there's a comment of the form "// +groupName=somegroup" or
		// "// +groupName=somegroup.foo.bar.io", use the first field (somegroup) as the name of the
		// group when generating.
		if override := types.ExtractCommentTags("+", p.Comments)["groupName"]; override != nil {
			gv.Group = clientgentypes.Group(override[0])
		}

		// If there's a comment of the form "// +groupGoName=SomeUniqueShortName", use that as
		// the Go group identifier in CamelCase. It defaults
		groupGoNames[groupPackageName] = namer.IC(strings.Split(gv.Group.NonEmpty(), ".")[0])
		if override := types.ExtractCommentTags("+", p.Comments)["groupGoName"]; override != nil {
			groupGoNames[groupPackageName] = namer.IC(override[0])
		}

		var typesToGenerate []*types.Type
		for _, t := range p.Types {
			tags := util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
			if !tags.GenerateClient || tags.NoVerbs || !tags.HasVerb("list") || !tags.HasVerb("watch") {
				continue
			}

			typesToGenerate = append(typesToGenerate, t)

			if _, ok := typesForGroupVersion[gv]; !ok {
				typesForGroupVersion[gv] = []*types.Type{}
			}
			typesForGroupVersion[gv] = append(typesForGroupVersion[gv], t)
		}
		if len(typesToGenerate) == 0 {
			continue
		}

		groupVersionsEntry, ok := targetGroupVersions[groupPackageName]
		if !ok {
			groupVersionsEntry = clientgentypes.GroupVersions{
				PackageName: groupPackageName,
				Group:       gv.Group,
			}
		}
		groupVersionsEntry.Versions = append(groupVersionsEntry.Versions, clientgentypes.PackageVersion{Version: gv.Version, Package: gvPackage})
		targetGroupVersions[groupPackageName] = groupVersionsEntry

		orderer := namer.Orderer{Namer: namer.NewPrivateNamer(0)}
		typesToGenerate = orderer.OrderTypes(typesToGenerate)

		// Generate the client and fake.
		packageList = append(packageList, versionClientsPackages(versionPackagePath, groupPackageName, gv, groupGoNames[groupPackageName], boilerplate, typesToGenerate, customArgs)...)

		// Generate the informer factory and fake.
		packageList = append(packageList, versionFactoryPackages(versionPackagePath, groupPackageName, gv, groupGoNames[groupPackageName], boilerplate, typesToGenerate, customArgs)...)

		// Generate the informer and fake, for each type.
		packageList = append(packageList, versionInformerPackages(versionPackagePath, groupPackageName, gv, groupGoNames[groupPackageName], boilerplate, typesToGenerate, customArgs)...)
	}

	return packageList
}

// objectMetaForPackage returns the type of ObjectMeta used by package p.
func objectMetaForPackage(p *types.Package) (*types.Type, bool, error) {
	generatingForPackage := false
	for _, t := range p.Types {
		if !util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...)).GenerateClient {
			continue
		}
		generatingForPackage = true
		for _, member := range t.Members {
			if member.Name == "ObjectMeta" {
				return member.Type, isInternal(member), nil
			}
		}
	}
	if generatingForPackage {
		return nil, false, fmt.Errorf("unable to find ObjectMeta for any types in package %s", p.Path)
	}
	return nil, false, nil
}

// isInternal returns true if the tags for a member do not contain a json tag
func isInternal(m types.Member) bool {
	return !strings.Contains(m.Tags, "json")
}

func vendorless(p string) string {
	if pos := strings.LastIndex(p, "/vendor/"); pos != -1 {
		return p[pos+len("/vendor/"):]
	}
	return p
}

func typedInformerPackage(groupPkgName string, gv clientgentypes.GroupVersion, externalVersionsInformersPackage string) string {
	return filepath.Join(externalVersionsInformersPackage, groupPkgName, gv.Version.String())
}

func versionClientsPackages(basePackage string, groupPkgName string, gv clientgentypes.GroupVersion, groupGoName string, boilerplate []byte, typesToGenerate []*types.Type, customArgs *informergenargs.CustomArgs) []generator.Package {
	packagePath := filepath.Join(basePackage, "client")

	vers := make([]generator.Package, 0, 2)

	// Impl
	vers = append(vers, &generator.DefaultPackage{
		PackageName: "client",
		PackagePath: packagePath,
		HeaderText:  boilerplate,
		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
			// Impl
			generators = append(generators, &clientGenerator{
				DefaultGen: generator.DefaultGen{
					OptionalName: "client",
				},
				outputPackage:    packagePath,
				imports:          generator.NewImportTracker(),
				clientSetPackage: customArgs.VersionedClientSetPackage,
			})

			return generators
		},
		FilterFunc: func(c *generator.Context, t *types.Type) bool {
			tags := util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
			return tags.GenerateClient && tags.HasVerb("list") && tags.HasVerb("watch")
		},
	})

	// Fake
	vers = append(vers, &generator.DefaultPackage{
		PackageName: "fake",
		PackagePath: packagePath + "/fake",
		HeaderText:  boilerplate,
		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {

			// Impl
			generators = append(generators, &fakeClientGenerator{
				DefaultGen: generator.DefaultGen{
					OptionalName: "fake",
				},
				outputPackage:      packagePath + "/fake",
				imports:            generator.NewImportTracker(),
				fakeClientPkg:      customArgs.VersionedClientSetPackage + "/fake",
				clientInjectionPkg: packagePath,
			})

			return generators
		},
		FilterFunc: func(c *generator.Context, t *types.Type) bool {
			tags := util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
			return tags.GenerateClient && tags.HasVerb("list") && tags.HasVerb("watch")
		},
	})

	return vers
}

func versionFactoryPackages(basePackage string, groupPkgName string, gv clientgentypes.GroupVersion, groupGoName string, boilerplate []byte, typesToGenerate []*types.Type, customArgs *informergenargs.CustomArgs) []generator.Package {
	packagePath := filepath.Join(basePackage, "informers", groupPkgName, "factory")

	vers := make([]generator.Package, 0, 2)

	// Impl
	vers = append(vers, &generator.DefaultPackage{
		PackageName: strings.ToLower(groupPkgName + "factory"),
		PackagePath: packagePath,
		HeaderText:  boilerplate,
		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
			// Impl
			generators = append(generators, &factoryGenerator{
				DefaultGen: generator.DefaultGen{
					OptionalName: groupPkgName + "factory",
				},
				outputPackage:                packagePath,
				cachingClientSetPackage:      fmt.Sprintf("%s/client", basePackage),
				sharedInformerFactoryPackage: customArgs.ExternalVersionsInformersPackage,
				imports:                      generator.NewImportTracker(),
			})

			return generators
		},
		FilterFunc: func(c *generator.Context, t *types.Type) bool {
			tags := util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
			return tags.GenerateClient && tags.HasVerb("list") && tags.HasVerb("watch")
		},
	})

	// Fake
	vers = append(vers, &generator.DefaultPackage{
		PackageName: "fake",
		PackagePath: packagePath + "/fake",
		HeaderText:  boilerplate,
		GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {

			// Impl
			generators = append(generators, &fakeFactoryGenerator{
				DefaultGen: generator.DefaultGen{
					OptionalName: "fake",
				},
				outputPackage:                packagePath + "/fake",
				factoryInjectionPkg:          packagePath,
				fakeClientInjectionPkg:       fmt.Sprintf("%s/client/fake", basePackage),
				sharedInformerFactoryPackage: customArgs.ExternalVersionsInformersPackage,
				imports:                      generator.NewImportTracker(),
			})

			return generators
		},
		FilterFunc: func(c *generator.Context, t *types.Type) bool {
			tags := util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
			return tags.GenerateClient && tags.HasVerb("list") && tags.HasVerb("watch")
		},
	})

	return vers
}

func versionInformerPackages(basePackage string, groupPkgName string, gv clientgentypes.GroupVersion, groupGoName string, boilerplate []byte, typesToGenerate []*types.Type, customArgs *informergenargs.CustomArgs) []generator.Package {
	factoryPackagePath := filepath.Join(basePackage, "informers", groupPkgName, "factory")
	packagePath := filepath.Join(basePackage, "informers", groupPkgName, strings.ToLower(gv.Version.NonEmpty()))

	vers := make([]generator.Package, 0, len(typesToGenerate))

	for _, t := range typesToGenerate {
		// Fix for golang iterator bug.
		t := t

		packagePath := packagePath + "/" + strings.ToLower(t.Name.Name)
		typedInformerPackage := typedInformerPackage(groupPkgName, gv, customArgs.ExternalVersionsInformersPackage)

		// Impl
		vers = append(vers, &generator.DefaultPackage{
			PackageName: strings.ToLower(t.Name.Name),
			PackagePath: packagePath,
			HeaderText:  boilerplate,
			GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
				// Impl
				generators = append(generators, &injectionGenerator{
					DefaultGen: generator.DefaultGen{
						OptionalName: strings.ToLower(t.Name.Name),
					},
					outputPackage:               packagePath,
					groupVersion:                gv,
					groupGoName:                 groupGoName,
					typeToGenerate:              t,
					imports:                     generator.NewImportTracker(),
					typedInformerPackage:        typedInformerPackage,
					groupInformerFactoryPackage: factoryPackagePath,
				})

				return generators
			},
			FilterFunc: func(c *generator.Context, t *types.Type) bool {
				tags := util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
				return tags.GenerateClient && tags.HasVerb("list") && tags.HasVerb("watch")
			},
		})

		// Fake
		vers = append(vers, &generator.DefaultPackage{
			PackageName: "fake",
			PackagePath: packagePath + "/fake",
			HeaderText:  boilerplate,
			GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
				// Impl
				generators = append(generators, &fakeInformerGenerator{
					DefaultGen: generator.DefaultGen{
						OptionalName: "fake",
					},
					outputPackage:           packagePath + "/fake",
					imports:                 generator.NewImportTracker(),
					typeToGenerate:          t,
					groupVersion:            gv,
					groupGoName:             groupGoName,
					informerInjectionPkg:    packagePath,
					fakeFactoryInjectionPkg: factoryPackagePath + "/fake",
				})

				return generators
			},
			FilterFunc: func(c *generator.Context, t *types.Type) bool {
				tags := util.MustParseClientGenTags(append(t.SecondClosestCommentLines, t.CommentLines...))
				return tags.GenerateClient && tags.HasVerb("list") && tags.HasVerb("watch")
			},
		})
	}
	return vers
}

redpajama_set_name: RedPajamaGithub


Punjab Chief Minister Captain Amarinder Singh on Wednesday lashed out at the Akalis for not taking care of even the 'Guru Ghars' during their 10-year of destructive rule, while announcing a slew of development projects for Chamkaur Sahib, including in-principle approval for the region's upgradation as a Municipal Committee (MC).The Chief Minister was here to lay the foundation stone of Sri Guru Gobind Singh Skills Institute, as a constituent college of Inder Kumar Gujral Punjab Technical University. The project is part of the government's plans to spruce up the infrastructure in the holy city of Sri Chamkaur Sahib.The Chief Minister also announced construction of two gates in the city in the name of the 'Bade' Sahibzadas, Baba Ajit Singh and Baba Jujhar Singh.Recalling that his government had constructed the memorial of 40 Muktas in Muktsar and four gates at Fatehgarh Sahib, Captain Amarinder Singh said the Akalis had failed to do anything for any section of the society during their decade-long misrule. They had, in fact, ruined the state's economy, he added.The Chief Minister also initiated two more development works worth Rs.15.11 crore, including beautification and facade development projects at a cost of Rs.11.50 crore and strengthening & upgradation of Sri Guru Gobind Singh Marg at an estimated cost of Rs. 3.61 crore. The Chief Minister, who paid obeisance at the Chamkaur Sahib earlier, said the shortage of parking space and proper roads around the gurdwara had been brought to his notice. He announced an additional Rs. 4 crores to Rs.11 crore already sanctioned for the Galliara scheme.Underlining the importance of equipping youngsters with the skills needed to become employable, the Chief Minister said the Institute would provide the requisite skills to youngsters irrespective of their educational background. It would be built at a cost of Rs.500 crore, of which Rs. 100 crore would go into construction and the remaining would be spent on machinery, equipment, furniture and other infrastructure. He said that Public Works Department would finalise the layout and the construction would be completed in a phased manner.
Pointing to the revival of industry in the state, he said industrial units needed skilled people who can work with their hands. Money will not be allowed to be a constraint for the development of new colleges and universities, Captain Amarinder Singh added. The proposed Punjab Skill University (PSU) would provide nationally/internationally acknowledged training and certification, he further announced, underscoring the importance of skills training.Reiterating his pledge to target 1000 jobs for youth a day, the Chief Minister disclosed that under the Ghar Ghar Rozgar & Karobar Mission, as many as 808 youth got employment just yesterday under government/private/self-employment schemes.Noting that the last time link roads were repaired in the state was in 2006 during his earlier tenure, he said his government had already spent Rs.32000 crore on repair of such roads and would be spending another Rs.30000 crore this year.Giving details of the other projects, Captain Amarinder Singh said facade beautification under 'Swadesh Darshan Scheme' would be implemented at a cost of Rs.11.50 crore, which includes beautification of Chowk connecting Morinda-Bela Road and Sanduan Road at a cost Rs.30 lakh, parking along with basic utilities for Rs.5 crore, facade development of market & improvement of premises in front of Gurdwara Sri Katalgarh Sahib worth Rs.5 crore, besides improvement of premises and parking at Gurdwara Sri Garhi Sahib at Rs.1.20 crore. He also laid the foundation stone for strengthening and upgradation of Sri Guru Gobind Singh Marg (Section- Village Singh to Sri Chamkaur Sahib) at a cost of Rs.3.61 crore, to be completed within eight months.
The chief minister said that his government would also complete the Theme Park at a cost of Rs. 14 Crores. He said the work for this park was started by him in 2006 but was stopped by the Akali government.Earlier, Technical Education Minister Charanjit Singh Channi spoke about the historic and religious significance of Sri Chamkaur Sahib and pointed out that even during his previous term, Captain Amarinder Singh had given a major boost to its development and had upgraded it as Sub Division. He urged the Chief Minister to come out with a lift irrigation project for the area.Addressing the gathering, PWD Minister Vijay Inder Singh Singla said that it was a historic day for Sri Chamkaur Sahib with the launch of various development works. He said that at a cost of Rs. 55 crore, 400 km stretches of roads were being laid and repaired in Sri Chamkaur Sahib.Local Government Minister Navjot Singh Sidhu said that Congress Government was committed to the region's holistic development besides providing all basic amenities in the area. Lambasting the Akalis for trying to scuttle the development works, he said that the Congress Government had brought funds to the tune of Rs.20 crore from the Centre for Sri Chamkaur Sahib, Rs.20 crore for Fatehgarh Sahib and Rs. 32 crore for Sri Anandpur Sahib.Others present on the occasion included Media Advisor to CM Raveen Thukral, MLAs Darshan Lal Mangupur and Gurpreet Singh GP, Principal Secretary Technical Education DK Tiwari, Principal Secretary Tourism & Cultural Affairs Vikas Pratap, Special Principal Secretary to CM Gurkirat Kirpal Singh and Deputy Commissioner Sumit Jarangal.


text:
namespace juce
{
namespace dsp
{

/**
    This class contains various fast mathematical function approximations.

    @tags{DSP}
*/
struct FastMathApproximations
{
    /** Provides a fast approximation of the function cosh(x) using a Pade approximant
        continued fraction, calculated sample by sample.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -5 and +5 for limiting the error.
    */
    template <typename FloatType>
    static FloatType cosh (FloatType x) noexcept
    {
        auto x2 = x * x;
        auto numerator = -(39251520 + x2 * (18471600 + x2 * (1075032 + 14615 * x2)));
        auto denominator = -39251520 + x2 * (1154160 + x2 * (-16632 + 127 * x2));
        return numerator / denominator;
    }

    /** Provides a fast approximation of the function cosh(x) using a Pade approximant
        continued fraction, calculated on a whole buffer.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -5 and +5 for limiting the error.
    */
    template <typename FloatType>
    static void cosh (FloatType* values, size_t numValues) noexcept
    {
        for (size_t i = 0; i < numValues; ++i)
            values[i] = FastMathApproximations::cosh (values[i]);
    }

    /** Provides a fast approximation of the function sinh(x) using a Pade approximant
        continued fraction, calculated sample by sample.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -5 and +5 for limiting the error.
    */
    template <typename FloatType>
    static FloatType sinh (FloatType x) noexcept
    {
        auto x2 = x * x;
        auto numerator = -x * (11511339840 + x2 * (1640635920 + x2 * (52785432 + x2 * 479249)));
        auto denominator = -11511339840 + x2 * (277920720 + x2 * (-3177720 + x2 * 18361));
        return numerator / denominator;
    }

    /** Provides a fast approximation of the function sinh(x) using a Pade approximant
        continued fraction, calculated on a whole buffer.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -5 and +5 for limiting the error.
    */
    template <typename FloatType>
    static void sinh (FloatType* values, size_t numValues) noexcept
    {
        for (size_t i = 0; i < numValues; ++i)
            values[i] = FastMathApproximations::sinh (values[i]);
    }

    /** Provides a fast approximation of the function tanh(x) using a Pade approximant
        continued fraction, calculated sample by sample.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -5 and +5 for limiting the error.
    */
    template <typename FloatType>
    static FloatType tanh (FloatType x) noexcept
    {
        auto x2 = x * x;
        auto numerator = x * (135135 + x2 * (17325 + x2 * (378 + x2)));
        auto denominator = 135135 + x2 * (62370 + x2 * (3150 + 28 * x2));
        return numerator / denominator;
    }

    /** Provides a fast approximation of the function tanh(x) using a Pade approximant
        continued fraction, calculated on a whole buffer.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -5 and +5 for limiting the error.
    */
    template <typename FloatType>
    static void tanh (FloatType* values, size_t numValues) noexcept
    {
        for (size_t i = 0; i < numValues; ++i)
            values[i] = FastMathApproximations::tanh (values[i]);
    }

    //==============================================================================
    /** Provides a fast approximation of the function cos(x) using a Pade approximant
        continued fraction, calculated sample by sample.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -pi and +pi for limiting the error.
    */
    template <typename FloatType>
    static FloatType cos (FloatType x) noexcept
    {
        auto x2 = x * x;
        auto numerator = -(-39251520 + x2 * (18471600 + x2 * (-1075032 + 14615 * x2)));
        auto denominator = 39251520 + x2 * (1154160 + x2 * (16632 + x2 * 127));
        return numerator / denominator;
    }

    /** Provides a fast approximation of the function cos(x) using a Pade approximant
        continued fraction, calculated on a whole buffer.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -pi and +pi for limiting the error.
    */
    template <typename FloatType>
    static void cos (FloatType* values, size_t numValues) noexcept
    {
        for (size_t i = 0; i < numValues; ++i)
            values[i] = FastMathApproximations::cos (values[i]);
    }

    /** Provides a fast approximation of the function sin(x) using a Pade approximant
        continued fraction, calculated sample by sample.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -pi and +pi for limiting the error.
    */
    template <typename FloatType>
    static FloatType sin (FloatType x) noexcept
    {
        auto x2 = x * x;
        auto numerator = -x * (-11511339840 + x2 * (1640635920 + x2 * (-52785432 + x2 * 479249)));
        auto denominator = 11511339840 + x2 * (277920720 + x2 * (3177720 + x2 * 18361));
        return numerator / denominator;
    }

    /** Provides a fast approximation of the function sin(x) using a Pade approximant
        continued fraction, calculated on a whole buffer.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -pi and +pi for limiting the error.
    */
    template <typename FloatType>
    static void sin (FloatType* values, size_t numValues) noexcept
    {
        for (size_t i = 0; i < numValues; ++i)
            values[i] = FastMathApproximations::sin (values[i]);
    }

    /** Provides a fast approximation of the function tan(x) using a Pade approximant
        continued fraction, calculated sample by sample.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -pi/2 and +pi/2 for limiting the error.
    */
    template <typename FloatType>
    static FloatType tan (FloatType x) noexcept
    {
        auto x2 = x * x;
        auto numerator = x * (-135135 + x2 * (17325 + x2 * (-378 + x2)));
        auto denominator = -135135 + x2 * (62370 + x2 * (-3150 + 28 * x2));
        return numerator / denominator;
    }

    /** Provides a fast approximation of the function tan(x) using a Pade approximant
        continued fraction, calculated on a whole buffer.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -pi/2 and +pi/2 for limiting the error.
    */
    template <typename FloatType>
    static void tan (FloatType* values, size_t numValues) noexcept
    {
        for (size_t i = 0; i < numValues; ++i)
            values[i] = FastMathApproximations::tan (values[i]);
    }

    //==============================================================================
    /** Provides a fast approximation of the function exp(x) using a Pade approximant
        continued fraction, calculated sample by sample.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -6 and +4 for limiting the error.
    */
    template <typename FloatType>
    static FloatType exp (FloatType x) noexcept
    {
        auto numerator = 1680 + x * (840 + x * (180 + x * (20 + x)));
        auto denominator = 1680 + x *(-840 + x * (180 + x * (-20 + x)));
        return numerator / denominator;
    }

    /** Provides a fast approximation of the function exp(x) using a Pade approximant
        continued fraction, calculated on a whole buffer.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -6 and +4 for limiting the error.
    */
    template <typename FloatType>
    static void exp (FloatType* values, size_t numValues) noexcept
    {
        for (size_t i = 0; i < numValues; ++i)
            values[i] = FastMathApproximations::exp (values[i]);
    }

    /** Provides a fast approximation of the function log(x+1) using a Pade approximant
        continued fraction, calculated sample by sample.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -0.8 and +5 for limiting the error.
    */
    template <typename FloatType>
    static FloatType logNPlusOne (FloatType x) noexcept
    {
        auto numerator = x * (7560 + x * (15120 + x * (9870 + x * (2310 + x * 137))));
        auto denominator = 7560 + x * (18900 + x * (16800 + x * (6300 + x * (900 + 30 * x))));
        return numerator / denominator;
    }

    /** Provides a fast approximation of the function log(x+1) using a Pade approximant
        continued fraction, calculated on a whole buffer.

        Note: This is an approximation which works on a limited range. You are
        advised to use input values only between -0.8 and +5 for limiting the error.
    */
    template <typename FloatType>
    static void logNPlusOne (FloatType* values, size_t numValues) noexcept
    {
        for (size_t i = 0; i < numValues; ++i)
            values[i] = FastMathApproximations::logNPlusOne (values[i]);
    }
};

} // namespace dsp
} // namespace juce


Police in Quincy, Massachusetts are after the driver who was not at fault in a fatal accident. Boston Globe reports.
He was driving within the speed limit, through a green light, and hit a pedestrian crossing against the light. It was dark and the pedestrian was wearing dark clothes. Police in Massachusetts don't normally charge the driver in such cases.
They're going after him because leaving the scene of a fatal accident has a mandatory minimum one year jail sentence even if you are not at fault. MGL 90-24(a½)(2). The only defense is if you didn't know you hurt somebody. Police think the driver did know.
We can only speculate about why he fled the scene.
Some hit-and-run drivers are drunk. Being legally drunk automatically converts an accidental death into a homicide. MGL 90-24G(b). If you just happened to have a .08% BAC when somebody walked in front of you, it's a short jail sentence plus 15 year license suspension. If you were at fault, add a felony and a few years in prison.
Some people drive away because they don't have a license and fear arrest for that. Many of those are illegal immigrants who can't get licenses. California's new policy to give them licenses is not just liberal politics at work. It aims to solve a problem with hit-and-runs in LA.
Being poor is also a major cause of unlicensed driving. Leave parking tickets unpaid and you will lose your license forever. Uncollected revenue is worse than murder in the eyes of the RMV.
Most license suspensions are for owing money, not for bad driving. It could be an unpaid ticket, income tax, or a growing pile of fees. In New Hampshire, they'll revoke your license if you don't pay the rescue fee after getting hurt or lost in the White Mountains.
Once you pay off your debts, you owe an extra fee to reinstate your license.
Rich people can afford fees, fines, taxes, and surcharges. They can afford the lawyers to beat tickets. They can afford reinstatement fees if they do something really bad and can't pay off the system. They don't get caught in the hole where they can't afford to buy back their license, still need to drive, and collect more tickets for driving without a license.
Or maybe he felt a bump, didn't notice the dark body on the dark pavement, and drove away.


Why pedal a stationary exercise bike for exercise? Put all that sweat equity to good use while getting into shape. Turn you exercise bike into a power generator to run lights, a TV, stereo, blender, etc. Recharge a 12V battery or drive appliances directly. This is an excellent educational tool for science and technology classes. There are several options for how you design and build it. I'll show you how to build this one and point out other options along the way.
Start prepping you exercise bike for conversion by removing unnecessary equipment. Most exercise bikes have either brake pads or a web strap that rides on the perimeter of the flywheel. This one has a watt meter hooked to the drag brakes.
On this model, you'll also need to remove the rubber banding from the perimeter of the flywheel.
The flywheel needs a groove to receive a drive belt. Some models have a wide shallow groove, others have a narrow, deep groove. The easy way to do this is clamp a carbide-tipped square shank cutting tool in a pair of vise grips and hold it securely against a base with the tip against the fly wheel.
Have someone pedal the exercise bike while you gradually turn the metal groove to the desired width and depth. This can take a little while, especially if your human motor is out of shape. Take your time and take light cuts.
An approximate width and depth as shown in the second picture will work adequately. Test fit your belt periodically to ensure you are getting an appropriate fit.
I like to use a link belt available from numerous sources, one of them being Woodcraft.comWoodcraft.com. It's easy to add or remove links to get just the length you want.
There are many ways to mount the generator. I created a base and an adjustable cradle for the generator.
Cut a piece of 1/2" birch plywood large enough to hold the generator cradle reach the frame of the exercise bike on each side of the flywheel. Drill a hole for a 5/16" T-nut which will be used to fasten the cradle. Cut and screw 2x4's to the base on the underside the plywood.
Attach 2x4 boards to the bottom of the base using glue and screws. Lag bolt the cross piece 2x4 to the ends of the other 2x4's at the front of the base.
The two long boards need to have the ends cut to match the angle of the exercise bike frame. I chose to use a U-bolt to attach the base to the frame by drilling a series of small holes to create a slot for the U-bolt tang. An easier way would be to drill a 1/4" hole through the frame and into end of the 2x4's. You could use a lag bolt or a machine bolt into a cross dowel nut.
I chose to attach wheels to facilitate rolling the energy bike around. Because I used 1-1/8" x4 boards rather than 2x4's, I needed to add wood to support the wheels as shown in the picture.
Two of the boards need slots cut in them for the pipe section. You can drill and jigsaw slots or use a router for this task.
Cut two pieces of 1/2" plywood to fit the diameter of your generator. Cut slots in the cradle base by drilling a series of small holes close together. An 1/8" router bit could also be used to cut a slot.
Glue and screw the two sides to the cradle base.
Attach the base to the exercise bike frame. If you attached wheels, make sure the base is level when attached to the frame.
Attach the generator cradle to the base. Insert a hard sheet of plastic such as Plexiglass or clear acetate between the base and the cradle. This will help the cradle slide easier for adjustment. Lay the generator in the cradle and insert the 1"x8" pipe section through the base. Insert the 18" pipe strap through the slots, around the pipe and around the generator. Tighten the strap to hold the generator to the cradle. Insert a 5/16" by 1" T-bolt through the slot into the T-nut.
You may find you need to cut a piece of angle iron or strap and attach it between the base and the axle for the flywheel to make the assembly more rigid. (See the second picture).
Place the link belt around the flywheel and around the 1-1/2" pulley on the generator. Add or remove links as necessary to get the length correct. Slide the cradle assembly back until the belt is tight. If you reach the end of the adjustment slot, take another link out of the belt.
Attach the 12V power jack (a regular out let is recommended if using a 120V generator). Radio ShackRadio Shack catalog # 270-1556 is shown in the picture.
This display has 3 switched light sockets, a switched outlet, and two meters. It is 24" tall, 8" wide, and 5" deep. Use 1/4" birch plywood to build the box with 3/4" x 3/4" pine for the internal frame. Drill holes for the sockets, switches, and meters.
I used 3/4" x 5" pine for the top and bottom with holes drilled for a 1-1/2" PVC pipe. After installing and wiring the meters, switches and sockets, install the pipe. After the pipe is in place, the top piece of 1/4" plywood is installed. Drill a 1-3/8" hole in the bottom plywood and attach. This will hold the PVC pipe captive.
Step 7: Start Pedaling Power!
With the meter display plugged in, starting to pedal should start to deflect the volt meter. If the meter moves the wrong way (negative), reverse the leads connecting the generator to the 12V socket. Screw in an incandescent and a compact fluorescent.
If you're using a 12V generator, you'll need to use 12V rated bulbs. These are available at most RV centers. If you use a 120V generator, you'll need to use resistive loads or appliances with magnets in the motors. Many compact fluorescents will work on 120Vdc, but not all.
If you find that you have to pedal to slow or too fast to get the desired voltage, change the size of the pulley on the generator. A larger pulley will turn the generator more slowly and generate a lower voltage for a given pedal speed.
I added a smaller handlebar for smaller kids. An 8-year-old on frost sugar pops can crank out an amazing amount of energy, over 200 Watts!
Have fun pedaling different DC appliances. Read a book with pedal-powered lights. Hook a 12V TV to the Energy Bike. Make your kids pedal if they want to watch TV. They can rest during the commercials. If you have a laser engraver, make a side plate with a picture of an Energy Bike cranking out lighting bolts!
Ok who wants to partner with me and open a gym that generates power?! Or has that already been done?
Hello, I think it would be great to start some kind of co operative that helps set people up who are down and out with the ability to improve their situation through generating electricity via exercise.
At 100-150 Watts/hr, it would take 6-10 hours to generate 1 kWh. The average home uses 20-30 kWh/day.
It would be beneficial in 3rd world countries where a cyclist could recharge a cell phone or battery for LED lights.
Hi Wingsinger, if you were looking at powering some basic items rather than the average household use it could be considerably less. Such as charging a phone or computer, boiling a jug or recharging an appliance such as a fan. It could be useful for people wanting to go off-grid or for those who are unable to access power for some reason. My neighbour's power was cut because she couldn't afford to replace a pole. She is now living without power ongoing.
I absolutely love your project. it's close to something i'm hoping to achieve. Do you know enough about electricity wiring in a home to know how to wire a source of power to your home to run your electricity meter backwards safely?
Thanks! The power put out by a human isn't very much compared to the amount we use daily. It takes 10 hours of cycling to generate 1 kWh; a home typically uses 20-30 kWh/day.
You really need to consult an electrician in your area to do this. If not done properly you can backfeed to the power company and do some serious damage. I've been in the electrical business for many years so I know this can be dangerous.
For something like this it's not worth the effort. That said it's tricky wiring doing what you want. Dangerous too as unless you call you're electric company you'll be working with live wires.
Hook it up to a battery and a small TV and you'll get you're exercise in.
I've done that, but it's more of a workout than I wanted!
I made something similar to that, to help a friend lose weight. Mine didn't generate the power, but used a headligh generator to switch a solonoid I hooked into his TV. Yours is quite clearly better and much more versatile! Great work!!
Thanks! Using an energy bike to power a relay and switch TV power on is a nice idea. I've used mine to run a small TV, but it can be quite a workout. I used a high quality DC servo motor to maximize mechanical-to-electrical conversion efficiency.
it ? Does this serves the purposes of daily needs of house ?
You can only generate about 100 Watts/hr. 10 hours of cycling would give you 1 kWh. The average home uses about 20-30 kWh/day. It's more practical for energy education and charging small battery systems in remote areas.
I salvaged parts from a recycler, so I spent less than $30. The exercise bike was found on the curb.
Is there a way to hook it up to my house? So I can put electricity back into the grid, if I want, or use the energy to power whatever is presently running in my home?
You would need an inverter that could match the grid frequency, but you would only be able to generate 1kWh every 6-10 hours.
Big up for the design. Although I'm not a gym-goer, I have been entertaining the idea of setting up a 'generator gym', in which each device generates power. One way to go about it would be to set up universal power connectors as outputs of each piece of equipment, thereby allowing members to come in, work out, and charge their mobile phone at the same time. Another way would be to have all the units connected up to the gym's (low-voltage DC) electricity system, with a battery (linked to the grid via a transformer) to accumulate generated power and supply consistent voltage to the gym. In this case members would come in, work out and collect energy credits. Each member would own a card, which would have to be inserted into a machine before use to record the amount of electricity generated, thereby earning them tradeable credits and/or a reduced membership bill. Does anyone think this is a realistic/workable idea or would the equipment dwarf the forseeable profits? Does one of these already exist? Would the generated electricity be worth all the hassle and cost?


text:
Masked men spotted fighting with weapons in The Meadows
Police have launched a witness appeal
Sandays Close, in The Meadows. (Image: Nottinghamshire Police)
Police were called out to reports of masked men fighting in The Meadows.
Officers were called to Sandays Close at around 10.45pm on Monday, October 19, after a member of the public reportedly saw a number of men fighting with weapons in the streets.
Detectives have asked anyone with information to come forward.
Detective Sergeant Jon Kerry said: "Fighting is totally unacceptable and we will always look to take action against those who commit such offences. Officers were swiftly on the scene, but could not find any individuals in the area.
"We will now be searching on local CCTV footage and we are appealing for witnesses to come forward.
"We have no reports of any injuries from the incident. No arrests have been made.
"We are appealing for anyone who witnessed the event or anyone who has any information to please come talk to us."
Anyone with information is asked to call Nottinghamshire Police on 101, quoting incident 779, of October 19.
TV chef James Martin warns about storing eggs in the fridge
food&drinkThe subject is controversial


Luxury resorts, rejuvenating spas, a breathtaking Sonoran Desert environment and unbeatable weather with 330 days of sunshine a year. It's why travelers come to Scottsdale, and it's why our four-legged friends visit the city, too. According to the U.S. Bureau of Labor Statistics, Americans spend more than $60 billion on their furry, winged and scaled sidekicks. It's safe to say our pets are family. Lucky for you, Scottsdale is a top-notch playground for man's best friend, so canines, cats and other furry buddies are welcome to enjoy pampering, adventure, relaxation and dining in their proper place – right by your side.
The Westin Kierland Resort & Spa accommodates all cats and dogs into its Kierland Companion's Club, designed to make the resort a home away from home. Dogs receive a complimentary Westin Heavenly Dog Welcome Kitincluding clean-up bags to use in the nearby Kierland Companion Park, food dishes and a Westin Heavenly dog bed.
The Hyatt Regency Scottsdale Resort & Spa at Gainey Ranch welcomes cats and dogs to stay and play with the resort's 4Pawspet friendly program. Furry guests receive all- natural gourmet treats, a toy, Labor of Love bed, suggested walking routes on property, and food and water dishes. Grab some food to go for your dog or cat in Canyon Market. Locally sourced, all-natural freeze dried dog and cat food is available for purchase in single-serving biodegradable bowls.
Pets are treated like royalty at Canyon Suites at The Phoenician, where plush dog bedding and signature bowls, along with elegant bone-shaped mats, come standard. Canines enjoy a welcome amenity such as a "Bark Jacobs" shoe cookie and eco-healthy toy. Also on the menu, literally, is room service specifically for pooches. The bill of fare features delectable options like Puppy Poppers (grilled chicken bits in natural juices), Slobbering Salmon (from Skuna Bay, served with brown rice), and Canine Casserole (turkey, carrots, green beans and brown rice).
The Posh Pawsprogram at the Fairmont Scottsdale Princess lets pets stay at the resort for an additional $25 per night and includes a plush bed, "pet in residence" doorknob hanger, food and water bowls, food mat, toys and of course, treats. Fairmont Scottsdale's concierge can point out nearby walking paths, parks and grassy areas suitable for four-legged friends. And if your dapper dog has a taste for the finer things, the room service team can whip up something special just for him. Traveling without your pet and craving some canine companionship? Visit Bixby, a Yellow Labrador Retriever that acts as the resort's dog-in-residence, in the lobby for some much needed puppy love.
Pets and owners relax in style at the W Scottsdale with the property's signature P.A.W. (Pets are Welcome) program. Your pet will feel right at home with a W Hotels pet tag, W pet bed, food and water dishes, Pet-in-Room door sign and turndown treat amenity. Plus, check with the Whatever/Whenever concierge for leashes, toys and Bow-ow Boxes (first aid kits). Don't forget to bring a yoga mat and some treats for Doga, or Dog Yoga, available at the property the first Tuesday of each month. And for special occasions, the W Scottsdale offers doggie birthday cakes to celebrate.
Other animal-friendly properties in Scottsdale include Sanctuary on Camelback Mountain Resort and Spa, The Hermosa Inn, a boutique hotel, JW Marriott Camelback Inn Resort & Spa, Hotel Valley Ho, and Four Seasons Resort Scottsdale at Troon North.
Located in downtown, Oh My Dog! boutique + spa is a dream for any canine lover. The boutique boasts a vast selection of specialized merchandise that you won't find in any chain retail store – everything from organic treats and holistic food to Huggle Hounds toys. The independent shop carries lines like Susan Lanci Designs, Petote, Bowsers Pet Products and more. Oh My Dog! is also a doggy day spa with pampering services like deep conditioning massages and custom hairstyles and hair color.
Stop by Olive & Ivy Restaurant & Marketplace at the Scottsdale Waterfront, where humans can choose from any one of the market's Mediterranean-influenced items while pups can delight in complimentary doggie bones fresh from the marketplace. Just down the street, people and animals alike go gaga over the melt-in-your-mouth pastry delights from Sprinkles Cupcakes. The bakery offers doggie cupcakes made with eggs, honey and vanilla and topped with a yogurt frosting.
Chaparral Park has four acres of off-leash doggie fun that includes grass frolic zones, turf areas, seating for people, play features and water fountains. There's also another specially designated area for other types of pets. If you're looking to commune with nature, take your dog to Scottsdale's McDowell Sonoran Preserve, approximately 30,200 acres of protected Sonoran Desert land featuring miles of untouched terrain perfect for leisurely walks and heart-pumping hikes.
The stylish dogs of Scottsdale hit the catwalk during Canine Couture at The Bentley Scottsdale Polo Championships, hosted by Applewood Pet Resort. Spend the afternoon watching dogs strut down the runway in fashionable and creative duds.


text:
Q: I'm looking for detailed explanation on FCM push notification sending to Android device Our backend is developed in Ruby on Rails and our clients are native iOS (swiftUI) and Android (Java).
Our backend has a function where it need to send a push notification to a mobile device.
For iOS we got all working perfect.
For Android we've implemented the following class which seem to work correctly
public class MyFirebaseMessagingService extends FirebaseMessagingService {
    SharedPreferences sharedPref;

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        //showNotification(remoteMessage.getNotification().getBody());
        Log.e(TAG, "From: " + remoteMessage.getFrom());
        Log.e(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());

    }
    @Override
    public void onNewToken(String token) {
        Log.d(TAG, "Refreshed token: " + token);
        sendRegistrationToServer(token);
    }

    private void sendRegistrationToServer(String token) {
        Log.d("TOKEN ", token);
        sharedPref = this.getSharedPreferences(
                getString(R.string.preference_file_key), Context.MODE_PRIVATE);
        sharedPref.edit()
                .putString("aps_token", token)
                .apply();
        ApiServer.getInstance().sendToken(token);
    }

The server is receiving the token and links it to the device
On server side in case it is Android we need to send an FCM notification to the token (not topics or groups).
I've tried ruby gems fcm and fcmpush and I will always result in a senderId mismatch.
I've tried doing it using CURL to post directly but without success.
I assume the problem lies in the area of the way google authenticates things with service accounts, json files etc.
Can anyone who cracked this before explain in detail the following:

*

*which credentials (files, keys) to use from fireebase console on both server side and client side

Examples are highly appreciated

redpajama_set_name: RedPajamaStackExchange


It isn't often that we find an adventure as tempting as Arizona's Devil's Highway, otherwise known as "El Camino Del Diablo", who could resist a name like that. Paging through the Backcountry Adventures of Arizona guidebook, published by Alder Backcountry Guides, we found the trailhead off I-80 just outside of Yuma. That was convenient. Since we were headed to the Overland Expo 2010, why not do a little Overlanding on the way. The Devil's Highway was given a "Difficulty Rating" of 4, so we figured The Turtle V would not have a problem.
Signs gave clear warning of requirements and the possible dangers.
The 130 miles of remote dirt tracks lead through the 2 million-acre air-to-ground and air-to-air Barry M. Goldwater Air Force training range, (third largest land-based military range in the U.S.), the Cabeza Prieta National Wildlife Area, (the third largest in the lower 48 states), and the Organ Pipe Cactus National Monument, all in close proximity to the Mexican border. Never mind that they don't recommend you drive this route alone.
We did need a permit to traverse all three of these protected areas, but despite what some sources advised, we only needed one that covered all three. We picked that up at the Marine Corp Air Station (928 269-7150), just off Hwy 80. The map they supplied with our permit, (last updated in 2008), gave trail markers.
With a "Difficulty Rating" of 4, we aired down our big XZLs to 35 psi and headed east on a washboard-graded road.
Arriving at the end of the pavement, we aired down our big XZLs to 35 psi and headed east on a washboard-graded road across a wide valley below the Gila Mountains. This was a drive in the country so far. Flaming Ocotillo flags gave color to the desert. Concentrations of spiny Teddybear Cholla and signs warning DANGER–LASER IN USE–DO NOT ENTER kept us from even thinking of wandering off the road. Unexploded ordnances were not something we wanted to find. At least we didn't have the problems of thirst or exposure faced by early Spanish explorers and missionaries using the trail as a short cut to California. More than 2,000 souls could be buried in the desert, victims of what has earned El Camino Del Diablo a reputation of being the most deadly of immigration trails. The number grows today as illegal immigrants and drug smugglers attempt to sneak into the U.S. across the unfenced border.
A setting sun across the Barry M. Goldwater Air Force training range brought a silence you could touch.
Morning was cool enough to build a little fire in an existing pit. There was plenty of down wood, and the ridge behind us gave an extra couple of hours of shade as we watched the sun slowly burn across the desert in front of us. It was the beginning of a mild April day, but heat waves gave a clear sign of what summer could bring.
Strange rock formations resembling melting wax in the setting sun, prompted us to find a camp near the tip of Vopoki Ridge.
The Route Description in our Alder Backcountry Guide gave us a wash-by-wash, sidetrack-by-sidetrack, mile-by-tenth of a mile log. Using our Lowrance iFinder 500 as a trip meter, we quickly saw the mileages were not always accurate, but the GPS coordinates were right on. Particularly in the Goldwater Range, we were instructed to stay on the main road at all times. It was sort of like being on a train. We knew where we were, but there was really no choice. Sit back and enjoy the scenery. There was plenty of that. Thanks to late rains, nearly every flower and cactus was in full bloom. We explored a side trail at the A9 marker leading up the backside of Vopoki Ridge on the edge of the Davis Plain. There were some nice campsites and a colorful display of Ocotillo and brilliant Brittlebush.
Clusters of brilliant flowers were a constant delight, demanding we stop for a picture.
Thanks to late rains, the brittlebush and dozens of other flowers were in full bloom.
Early Spring showers brought the desert into full bloom.
Our GPS gave us a warm fuzzy feeling when nothing else matched. We did not want to find any unexploded ordnances.
The graded road was rapidly becoming more of a two-track, and a few deep washes added some interest. We stayed in two-wheel drive, letting our long wheelbase walk us through. With the low-end torque of our Power Stroke, augmented by the new ATS Aurora 3000 turbo we had recently installed, we didn't even shift into low range. There were a couple of spots that might encourage a small SUV to turn around. We wondered if this was the start of the "Class 4" rating. We veered left to climb over Tinajas Altas Pass. Numbers on military marker posts seem to have changed, and mileages seemed to vary significantly, so our GPS gave us a warm fuzzy feeling when nothing else matched. We were still not looking for unexploded ordnances.
Things got a little weird around marker A15, A16,–or was it A16a. There was an unmarked triangle that was missing signs. One road went northwest, following Camino Del Diablo Este (east). We had been following Camino Del Diablo Oeste (west). (Yeah, there are two main trails.) What we were looking for was the unmarked track to the Tinajas Altas or "High Tanks". Called Agua Escondido, "hidden water", by Padre Kino, they are a string of nine natural rock basins running up a cliff in the Tinajas Altas Range. When full, they can hold 20,000 gallons of precious water. Often the lower pools are dry, and the upper tanks are only reached by a difficult and dangerously steep climb. Many died being too weak to reach them, or falling to their death in an attempt.
The stagnant tea-colored water at Las Tinajas Altas was nothing you would want to drink.
On a long walk up a dry wash near our second camp, we could still keep an eye on our truck in the distance.
While always unique, we had never seen a Saguaro with such comical personality.
Backtracking to the ambiguous junction, we took the most obvious road southeast and soon entered the Cabeza Prieta Refuge. A couple of Border Patrol trucks stopped at the entrance parking area to check on their passengers, half a dozen illegal immigrants who had snuck across the border. We began to see the stately, sometimes humorous, Saguaro cacti.
The stately Saguaro can live to be over 150 years, the monarch of the desert.
This area is closed to the public from March 12 to July to protect the endangered Sonoran Pronghorn, unless otherwise adjusted. They must be endangered, because we never saw one. There are over 300 kinds of wildlife calling this parched land home, including 24 species of snakes, six of which are rattlers. Over 90% of the refuge is designated Wilderness Area. Vehicles may park and camp up to 50 feet from the main road in areas previously used by others.
Much of the sandy sections had been "graded" using a strange contraption of seven tires chained together and drug behind a Border Patrol pick-up.
Long sections of soft sand prompted us to stop and lock the hubs, but lowered tire pressure was enough to continue in two-wheel drive. We like to keep 4X4 as an option. If you get stuck, you can almost always flip a lever and back up to assess the situation. If you're already in 4X4 mode, you have a problem. Much of the sandy sections had been "graded" using a strange contraption of seven tires chained together and drug behind a Border Patrol pick-up. We assumed the smooth, untracked surface would make it easy to spot illegal foot traffic. To our advantage, it also leveled much of the washboard.
About eleven miles from the entrance to the Cabeza Prieta Refuge we saw an unmarked trail lined with rocks on both sides. It looked like the entrance to a campground or something important. We followed a graded road that shortly turned into several washouts requiring 4X4 and low range to crawl through. After a little over a mile, our GPS map clearly showed we were driving straight toward the Mexican border. We backtracked and made a quick stop at Tule Wells to sign the guest book.
Bumping over a low rocky pass, we found what we were looking for 4.3 miles from Tule Wells. Just as we stopped, a Border Patrol flashed his lights behind us. Apparently the little side road we had explored earlier was a known drug running route. The officer had seen the unusual tracks of our Michelin XZLs, and was sure we were smugglers. We all had a good laugh. The next morning, after a long walk up a dry wash and through fields of wild flowers stretching into the nearby hills, we didn't get started until after 11:00. This camp was so peaceful, we wish we could have stayed a week.
Near Tule Wells we entered a section of soft sand, deep mud ruts, and bull dust. The braided tracks would not be passable after a heavy rain.
Teddybear and Chainfruit Cholla were common along the entire route.
Twenty-one miles from Tule Wells we entered a section of sand, deep mud ruts, and bull dust. Clearly, the braided tracks would not be passable after a heavy rain. For several miles the trail wound through the desert like a coyote chasing a rabbit. Perhaps part of the original historic trail, it seemed to be made by someone on foot or horseback, following the best path through the Cholla and Ocotillo. In other areas, the road was so eroded, vertical sidewalls were over three feet high. It was like driving down a bobsled run through soft sand. It was the kind of road you wanted to turn around and drive again, but it was so narrow, it would have been difficult to do so.
We crept over a rocky five miles across the Pinacate Lava Flow and back into more bull dust. Mesquite trees racked the sides of the truck. Having been forewarned that there were narrow brushy sections, we had taken the precaution of covering our Seitz windows and the lower half of the truck and camper with 3M Removable Paint Protection Film. This easy to apply product can do wonders to keep the gouging mesquite needles out of your truck's paint job.
The old grave site of a prospector named Dave O'Neills was one of hundreds, maybe thousands, along this trail.
Passing the gravesite of Dave O'Neills, a prospector who died from exposure and dehydration, we came to the huge Border Patrol station, not shown on any maps. A little further on, the Papago Well and tank made a good lunch stop, and there was water, despite repeated warnings that "there is no water anywhere on the route". The sand was deeper now. We could hear the pitch of the engine change in the soft spots. Apparently it gets even worse in the heat of the summer. One section was "paved" with interlocking steel aircraft landing mats.
We had taken the precaution of covering our Seitz windows and the lower half of the truck and camper with 3M Removable Paint Protection Film.
As we passed into the Organ Pipe Cactus National Monument, the desert was progressively greener. Bates Well was our last stop. Abandoned now, the Border Patrol has a 6X6 flatbed parked at the entrance for a refueling station. From here it was an easy 15 miles to the blacktop of Hwy 85 where we aired up and peeled off the 3M Protective Film, which had limited the damage to a few minor pinstripes. In three days, we had seen fewer than ten vehicles, and most of them were friendly Border Patrol. No animals. No illegal immigrants. No drug smugglers. No unexploded ordnances.
Ajo to the north held little of interest, and Lukeville to the south even less. We headed for the convenience of the scenic Twin Peaks Campground inside the Organ Pipe Cactus National Monument. Snowbirds were already packing up their big RVs and heading north with the geese.
El Camino Del Diablo is a beautiful route. If you time it right, (about six weeks after the rain), the flowers can be as spectacular as the silence. A full-size Ford should have no problem on this mini adventure, but do go equipped for the worst, with plenty of fuel, water, and necessary equipment for backroad travel.