text:
Airport Improvement Program (AIP)
ATC Privatization in the UK
Has Resulted in a "Total Meltdown"
Privatized Foreign Systems Continue to Fall
Further Behind the U.S.
An Offer You Can't Refuse…40,000 Passengers
Per Year Have Their Seats Taken From Them
Big Airlines Keep Raking in Fees
Yet Still Can't Manage Their Own Systems
Law Enforcement, Medical Care,
and Emergency Services
Big Airlines Push to Privatize Our
Nation's Air Traffic Control System
Poll: Majority Oppose
Air Traffic Control Privatization
Letters to Congress from Mayors
ICYMI – American Prospect Article Highlights the Big Airlines'
Record of Collusive and Anticompetitive Behavior
ICYMI – Big Airlines Call for Federal Control Over Airspace,
Affirm that US Aviation System is the "Envy of the World"
ICYMI – Nav Canada Announces Need for
Renewed Investments in Air Traffic Control
ICYMI - Think Tank Confirms that Big Airline Consolidation
Is Bad for Consumers and Rural Communities
Letter to Congress from
the Alliance and Partners
About ATC Privatization
Major Consumer & Passenger Rights Groups Launch Ad
Opposing Air Traffic Privatization
We Won the Fight!
Alliance in the News
and Resolutions
State-by-State Impact
Write to Congress
AERO NEWS NETWORK
GAMA, AAAA Applaud House Transportation Committee's Passage Of H.R. 1108
The Aviation Funding Stability Act Would Protect FAA Programs From Government Shutdowns
GAMA is praising the U.S. House of Representatives Transportation and Infrastructure Committee and its members for passing H.R. 1108, the Aviation Funding Stability Act of 2019.
"We vigorously support this legislation and commend Committee Chairman Peter DeFazio (D-OR) and Aviation Subcommittee Chairman Rick Larsen (D-WA) for introducing the bill, as well as full Committee Ranking Member Sam Graves (R-MO) and Aviation Subcommittee Ranking Member Garret Graves (R-LA) for their support," said GAMA president and CEO Pete Bunce. "H.R. 1108 would provide targeted stability for the aviation system to function in the event of another U.S. government shutdown, including air traffic and critical elements of aviation safety, while ensuring congressional oversight."
The U.S. aviation system is an extremely complex and interconnected one that provides the highest levels of safety and the largest and most robust air services network in the world. The strength of aviation manufacturing's jobs creation and economic contribution is dependent on a fully operating and functioning FAA being able to undertake regulatory actions and approvals in order to bring aircraft, engines, avionics and other new technologies and products to the U.S. and global marketplace and to properly maintain in the existing fleet.
The aviation industry's recovery from the recent 35-day U.S. partial government shutdown will be both lengthy and complicated, and any subsequent shutdown of the FAA would multiply the negative impacts on small businesses, the economy and safety. The Aviation Funding Stability Act of 2019 will help the aviation industry avoid any further harmful disruptions.
"We look forward to working with members of this Committee, the broader Congress and other stakeholders who share jurisdiction in a bipartisan way to advance this legislation in the near-term and mitigate the consequences of any future government shutdown on the FAA," said Bunce.
"We are pleased that the House Transportation and Infrastructure Committee passed legislation to help protect funding for the FAA. In particular, we commend the Committee for including an amendment to increase funding for the Airport Improvement Program, which supports critical long-term funding projects and our national system of airports as a whole," said Alliance for Aviation Across America Executive Director Selena Shilad in a statement released to the media. "There are over 5000 airports around the country, the majority of which are general aviation airports, and play an essential role in supporting local businesses, driving economic activity and connecting communities to medical care, disaster relief, fire-fighting, and many other critical services.
"We look forward to working with Members of Congress on issues important to general aviation and local airports, including support for the Airport Improvement Program."
http://www.aero-news.net/index.cfm?do=main.textpost&id=b797896c-1161-49ee-9fa7-348545529627


text:
Mukike è un comune del Burundi situato nella provincia di Bujumbura Rurale con 24.660 abitanti (censimento 2008).

Suddivisione amministrativa
Il comune è suddiviso in 10 colline.

Note

Comuni del Burundi

redpajama_set_name: RedPajamaWikipedia


in conjunction with the Ohio State University Extension Master Gardener Volunteers.
People exploring the new Kiwanis Children's Garden during the 2018 Jubilee.
Holly LeFevre teaching crafts during the 2018 Jubilee.
Janet Oberlin teaching crafts during the 2018 Jubilee.
View of flatrock junction on left, covered bridge and Kenton's challenge on right.
Aerial view of sunflower alley, covered bridge, flatrock junction and Kenton's challenge.
Aerial view from the treetops of the Children's Garden.
Aerial view of the Sensory Garden.


These are 10 of the most famous big game hunters of all time.
With that in mind, we've compiled a list of 10 of the most famous big game hunters to ever live and exactly what made them into the legendary outdoor figures they are today.
Is there any name more synonymous with the American West than Buffalo Bill? Yeah, we don't think so either.
Of course these days, those sorts of things wouldn't happen, considering what we now know about conservation and wildlife management. But it certainly helped Cody make a name for himself in the American West!
If you visit the Buffalo Bill Center of the West in Cody, Wyoming today, you'll learn that Cody often wished he had more time for hunting, but his busy schedule with his Wild West Shows, which took him all over the United States, Canada and Europe, kept him away from the field. You'll still be hard-pressed to find a more well-known American bison hunter than Cody.
Hemingway is a household name for his literature of course, having penned classics like "A Farewell to Arms," "For Whom the Bell Tolls," and of course, "The Old Man and the Sea." Hemingway loved fishing of course, but he was also an extremely avid hunter.
At least two of Ernest Hemingway's homes, one in Florida and another in Idaho, still contain some of his trophies.
Davy Crockett was obviously best known for his military exploits and his death in the battle at the Alamo. But as far as his hunting adventures are concerned, they're the stuff of legend.
There is some controversy surrounding some of his big game hunting tales, with folks often claiming they are too good to be true. The rumors that he killed a bear at the age of three and 105 in a single season are no doubt exaggerated, but someone doesn't get a reputation like that and the nickname "King of the Wild Frontier" without being one hell of a hunter.
The other half of the Boone & Crockett name (It is not known if they ever met each other), Boone was no doubt the most famous fur trapper that ever lived. He was not a family man by any means; he fathered 10 children in his life, but often left his wife and kids alone for months or even years at a time while he went out on extensive game hunting trips. Obviously he wasn't a trophy hunter, as he sold the hides to earn a living.
While Boone shot untold numbers of deer and trapped countless numbers of beavers in his day, he is also best known for hunting bears. No one knows for sure, but there are rumors he killed hundreds of them on his hunting trips. In fact, it is said he had a habit of documenting the occasion by carving his name and the year onto a tree. This led to a tourist phenomenon of visiting "Boone Trees" scattered all over Kentucky and Tennessee. The trees have all since died, but the legend still remains.
By profession Pope was a surgeon, but he is better known for his contributions to bowhunting. A Texas native, Pope learned his bow making and hunting skills from a Native American named "Ishi," who was the last known member of the Yana people.
Pope bowhunted bears, mountain lions, deer, and more with his handmade bows everywhere from the Alaska wilderness to the confines of Yellowstone National Park (with special permission).
But Pope is probably best known for writing one of the first definitive books on bowhunting: "Hunting with the Bow and Arrow" in 1923. Of course, these days his name is honored in the name of the bowhunting record-keeping organization Pope & Young.
You can't talk about Saxton Pope without also mentioning Art Young, the other half of that Pope & Young name.
Young was introduced to archery through another legendary American bowhunting figure, William "Chief" Compton, who in turn, introduced him to Saxton Pope and Ishi. The four of them undertook a number of hunting expeditions.
If not for the chance meetings of these historic hunting figures, one has to wonder if modern bowhunting would be anywhere near the million dollar industry it is today.
But while Young and Pope were the students of Ishi and Compton, they arguably helped advance modern big game hunting with archery equipment much farther than anyone dreamed possible. In Young's case, he was a writer for Sports Afield and helped make the first bowhunting movie.
But the biggest thing he is noted for is harvesting dangerous game in North America like grizzly bears, brown bears, moose, bighorn sheep. He even took on lions with archery equipment in Africa at a time when not many hunters had the guts to even try.
He sent many of his animals to the Smithsonian Institution's collections. The institution was so overwhelmed by the sheer number of animals sent back that now Roosevelt's harvests can be found in museums all over the United States.
When it comes to American hunters who have had the biggest impacts on the planet, perhaps none can challenge Roosevelt's big game hunting accomplishments.
Most of the big game hunters on this list built their legacies through decades of commitment and contributions to hunting. British colonel John Henry Patterson earned infamy from a single African hunt. When he left England in 1898, he was sent to what is now Kenya to oversee the construction of a railroad bridge by the Uganda Railway Commission over the Tsavo River.
But the project hit a major snag when two male lions without manes started killing and devouring the Indian workmen in the night. Patterson and the workers tried everything to protect the workers; fire, thorn fences, curfews, but nothing stopped the lions from coming into the camps and killing men.
Fortunately, Patterson had gained some big cat hunting experience in India during his time in the British Army. So he took matters into his own hands, stalking and shooting the two lions just 20 days apart. During the previous nine months the dangerous game animals terrorized the workers, they took an estimated 135 victims with them.
Patterson details the whole hunt in his excellent book: "The Lions of Tsavo." He was later portrayed in film form by Val Kilmer in the movie "The Ghost and the Darkness." Patterson continued his hunting exploits as a game warden in east Africa. But he will forever be known as the man who stopped the Tsavo Man Eaters. There are plenty of famous big-game hunters who made names for themselves in Africa, but Patterson's is among the most well-known.
Another British soldier, Corbett is probably the most famous professional hunter who ever lived. Corbett earned fame for killing 31 tigers and two leopards, all of them man eaters. Included in that group are some of history's most infamous man-eating big cats.
Corbett successfully hunted down and ended the reigns of terror of the Panar Leopard (400 victims), the Leopard of Rudraprayag (125 victims), and the famous Champawat Tiger (436 victims). Corbett often hunted these dangerous animals alone and he later detailed the hunts for these big cats in many of his books. Often he found the man eaters had damaged teeth that didn't allow them to pursue natural prey.
Corbett continued to be a champion for conservation and the preservation of natural areas long after his retirement in Kenya. He even had a hand in establishing the first Indian National Park, which was later re-named in his honor and now holds a thriving population of tigers. Not many famous big game hunters have a National Park named after them!
Interestingly, Corbett did not consider himself to be a trophy hunter of dangerous game animals. In fact, it is rumored he only hunted tigers or leopards if they had killed someone. It is estimated the 33 man eaters he shot were responsible for a staggering 1,200 or more human deaths.
Obviously we couldn't leave the father of modern bowhunting off a list of the most famous big game hunters. Bear's contributions to archery and hunting are almost unquestioned.
An avid archer all his life, he gave up on making it into Detroit's burgeoning auto industry in the late 1920s and early 1930s and started his own archery company, Bear Archery. In the late 1940s, Bear and his wife actually lived in a tent for a time in northern Michigan in order to facilitate the growth the company. Even then, it took years for the sport to take off and get as popular as it is today. Talk about someone who was committed to what he loved and believed in!
Bear won Michigan's archery state championships in 1934, 1937, and 1939. And he further showed his skills were no fluke as his business took off and he started traveling the world on hunting trips to pursue some of the biggest and most dangerous game animals using only archery gear.
Elk, deer, bear, moose, lions, and even an elephant, he pretty much hunted it all and inspired a whole generation of hunters to take up the stick and string.
NEXT: 5 CHILLING REAL-LIFE "MAN-EATERS"


text:
Chris Worfolk's Blog
Posts Tagged 'wealth inequality'
What does a year in triathlon cost?
Sunday, October 6th, 2019 | Religion & Politics, Sport
If you have done some triathlon, you may have noticed that it is dominated by white people. There is very little representation for minorities. One reason could be the cost. Triathlon is expensive. I am not talking about the super-aero bike, or fancy wetsuit, or all the other gear you need. You can get by without most of that. But just entering races is expensive.
In this article, I will break down just how expensive it is, based on my 2019 season.
The biggest cost is registering for races. I did 15 races this year.
Skipton £38
Driffield £54
Tadcaster £45
Leeds £95
Yorkshireman £285
Allerthorpe sprint £54
Castle Howard £99
Redcar £42
Allerthorpe Classic £64
Coalville £46
Sundowner sprint £54
Evolve sprint £40
Nidderdale £47
Ironman Weymouth £281
Evolve mixed relay £20
That makes for an eye-watering total cost of £1,263. Bear in mind that my registration fees are slightly lower than some other people's because I have already paid for a British Triathlon race licence, that typically saves me £5 on each race. That cost me £40 but has since increased in price.
It is also worth noting that almost half of my fees came from two races: my full distance race and the IRONMAN 70.3. So, if you wanted to stick to short format racing, you could 10 races a year for £500. This is still a lot of money, though, and requires you to avoid big-brand events like World Triathlon Leeds and the Castle Triathlon Series.
Are these fees justified?
On the whole, yes. Some people have argued that £50 is too much of a race. But if you think of the logistics of triathlon: water safety crew, swim caps, a secure transition to avoid bike theft, timing chips, aid stations, bike mechanics and (often, but not always) free photos, there are a lot of costs.
Once you move up to full distance, there are even more considerations. You have to have changing tents, overnight security so people can rack the day before, marshalls on the course for 17 hours, a tonne of nutrition, 180km of road to cover, massages and food after the race, toilets everywhere just to mention a few.
That said, some fees are suspicious. Why does the Castle Howard triathlon cost twice as much as other standard distances races? Why does IRONMAN 70.3 Weymouth cost twice as much as other middle distance races?
Other hidden costs
As well as race registration fees, there are some other hidden costs that I think often get forgotten about.
Transport. Most triathlons take place in rural locations where the roads are quiet. This means you have to drive to them. It is difficult to car share because you need to fit the bikes in the car. So, you need to be able to run and fuel a car.
Parking. About half the races I did had free car parking. The others charged extra and while it was typically a small amount, that is another £30 to add on over the course of a year.
Nutrition. This is not a big issue in short format racing. But starts to add up when you are doing long format (or running a marathon). For my full distance race, I took 18 gels and 4 energy bars. At around £2 a pop, that is £44 worth of nutrition in a single race. For Weymouth, I took 8 gels and 1 energy bar, so a much more reasonable £18.
But then there are the drinks, too. I take two 750ml bottles filled with a carb drink. I often discard these bottles at the aid station bottle drops, which means an additional £15 per race. Plus, you need to do long training runs and rides. Which means you need to pay for nutrition for these, too. I did two 100-mile rides and an 80-mile ride as prep for my full distance, and those could well have been £30 per ride in nutrition.
Twelve hundred pounds on registration fees, plus several hundred of nutrition, is an incredibly large amount of money. People can spend a lot on their hobbies, and that is arguably justified if it brings them a lot of pleasure. But that is not even including all the equipment and fancy bike stuff I buy.
Of course, few triathletes race as much as I do. And many stick to short format racing. But I know there are people who do not race as much as they would like to because they cannot afford to. I do not think this is because event organisers are ripping people off (maybe some are). But it is no surprise that the sport is full of rich white people.
Thursday, July 16th, 2015 | Books
How has wealth inequality changed over the previous few centuries and what does that tell us about the present? That is the rather large question that French economist Thomas Piketty attempts to answer in this book.
No doubt his writing is in a far more coherant and structured format than my description of it, but here goes.
H begins with a global outlook. Poor countries are gradually catching up with rich countries, and he notes that wealth inequality is primarily within a country. China is making rapid progress in catching up with Europe for example, while the working class of Europe are not making the same gains on the upper class.
Nevertheless, it is a long and hard struggle. Once one country has an advantage, it can essentially own another. This is how European nations managed to maintain colonial domination while running a trade deficit. We could simply put our colonies into debt and then force them to work for us to pay it off.
Once they do grow, they are unlikely to overtake us because as they become a first world country the growth levels off. They are also a long way behind. Europe has 2000% the wealth of China for example, so even growing at 8% a year, once you factor in that Europe is also growing, that is a long way to catch up.
The oil countries could see huge growth though because of their sovereign wealth funds.
Europe itself remains incredibly rich. Richer than anyone else in the world. Though admittedly the United States are the only real competition. However this wealth is all in private hands. European governments themselves are heavily in debt, mostly to their own citizens, and typically have a capital of 0, because their public assets only just cover said debts.
It is traditionally highly unequal wealth. Far from being the land of the financially free, it was the United States that pioneered high tax of the wealthiest and it is only in recent decades that America's wealth inequality has become greater than Europe's.
This wealth is very concentrated. One way is labour inequality. Some people are paid far more than others. Though this is not always the close. In 1970s Scandinavia the top 10% of earners claimed 20% of the earnings. This seems a reasonable level of inequality to me.
A much more pressing issue though is capital inequality. Even in the most equal societies the bottom 50% will typically own nothing. Before the World Wars 1% typically owned 50% and 10% owned another 40%. The Wars changed this, but only as far as to allow the next 40% to buy their own home, which is not much by comparison, and still leaving 50% without assets.
Capital inequality is typically inherited. Thus it is not a useful form of inequality because it does not provide motivation for people to earn money. The point of inequality is to motivate people to work hard and earn money, but there is no utility in allowing people to merely inherit large amounts of capital – in fact this encourages them to do nothing.
It is also worth noting that labour inequality does not necessarily provide this motivation either. This is because the differences in "super manager" compensation cannot be directly related to a persons output but rather by industry and non-talent based conditions (luck).
Once people are rich the problem of wealth inequality perpetuates itself. Inflation, which many assume would reduce wealth, actually makes the situation worse. This is because poor people see their savings eroded by inflation while large amounts of capital is able to better protect itself.
It does this in a number of ways. By being larger, the capital of American university endowments when compared to individual savers for example, can afford to spend far more on management. Harvard has around $30 billion, so can spend $100 million a year on management with that only being 0.3% of their capital, which will be more than made up for in growth.
Secondly, with a bigger fund you can diversity into more risky assets. This produces a less predictable short term but a more profitable long term. Thirdly, many options that Harvard invest in may simply be entirely unavailable to small amounts of capital, such as products which require a large minimum investment.
Thus the rich get richer and the poor get poorer with no relation to the work, productivity or utility of the individual. There is no self-correcting mechanism for this.
What can we do about this?
Free university could be one way. It seems to have reduced inequality in the Nordics, though this has not been entirely proven. Picketty also suggests minimum wage will not help in the long run.
He suggests a global tax on capital. This would be low, initially at 0.1% of total capital, progressively rising to 0.5% for the largest fortunes.
This would have to be done in a global level, or at least a European level and require cooperation from banks. Otherwise people would just hide their assets. Indeed, it should be noted that the balance of payments for Earth is currently negative! More wealth flows out that comes in. This is of course theoretically impossible, but could be accounted for by tax heavens not being transparent.
A global tax on capital would encourage people to generate money and become rich, which ensuring that these fortunes cannot be used by future generations to unfairly dominate the economic landscape.
In summary, the following points:
Capital inequality is the biggest form of inequality
The twentieth century saw some reduction in the importance of inheritance, but this is now returning
Large inherited fortunes serve no utility to society
Large fortunes are able to perpetuate themselves and thus the rich get richer and the poor get poorer
There is no natural self-correcting mechanism for this
The best way to tackle this would be with a global tax on capital
Income inequality around the world
Wednesday, March 25th, 2015 | Religion & Politics
Michael Shermer recently tweeted a link about income inequality in different countries. One of the most interesting graphs can be seen here.
This shows the share of income that the top 1% have. In the UK this peaked (technically it troughed) in 1977 when the level reached 6%, the lowest on record. This suggests we had the lowest levels of income inequality at this time.
From here on it goes up. The data only goes as far as 1988, but other sources shows that it has continued to increase.
Notably, 1977 is two years before Margaret Thatcher came to power. "Ah ha!" I hear you yell, "I know it all along". To some extend, it probably is Thatcher's fault, as the UK income equality gap has grown more than most. However, it is unfair to lay all the blame at her door (or grave) because this has been a global trend. Almost all countries in the developed world peaked in the late 70s and have since become less equal.
70's low
United States 8% 15%
Canada 8% 12%
Australia 5% 9%
France 7% 8%
Italy 6% 9%
Sweden 4% 7%
Finland 3% 7%
According to an article on the BBC, the UK has reached 16% by 2005. This means that despite a decade under Labour, the income equality in the UK did not stop growing after Thatcher was gone.
Ultimately, what this tells us is that we should definitely vote Loony.
Wednesday, July 11th, 2012 | Religion & Politics
John Rentoul recently published an article on The Independent's website, pointing to a report by the Institute for Fiscal Studies showing that the recession had actually reduced income inequality.
Key findings in the report highlight that the turn of the decade marked the biggest drop in income inequality since 1962 based upon the Gini coefficient (one of the many ways you can measure income inequality). Contrary to popular belief, it is actually the wealth that have seen the biggest percentage slashed off their income, at least according to the report.
If it is the case, then while income fails are never a good thing, it is positive that we are moving towards a more equal society – of course there is no guarantee such a trend will remain when economic times are brighter.
Doctors' pensions
Friday, June 1st, 2012 | Religion & Politics, Thoughts
Recently, Nicola said this…
Wow doctors are selfish or stupid. The rising life expectancy and massive deficit means they need to work longer and get a reduction in pension.
£68,000 on top of probably huge savings isn't too shabby, but they're striking!
I really rather wish she hadn't, because it lead to a huge amount of comments, some of which were nonsense and as such, I am now unable to sleep because people are wrong on the internet and I can't just let that be.
I don't really have a problem with the strikes. They're not putting people at much risk and they have a right to strike if they want to. But I don't think they should expect a great deal of public sympathy for their cause.
While Nicola quoted £68,000. The BBC News article I read put the figure at £58,000. But that is still a huge amount of money. To retire on! That is more money than I earn while I'm still working. That is more money than my mum earns having spent twenty years tirelessly working as a teacher at an inner city school – surely an equally noble profession?
Ashwin chipped in…
Seriously though, speak to other Doctors and Medical students, and find out just how hard and long (that's what she said!) a Doctor works and then you'll appreciate our perspective much more.
But I probably won't. Why? Because we don't live in a society where hard work equals more money. You want to know about hard work? Go to my friend Eric who works 60 hours at week scrubbing floors at McDonald's for a pitance. I'm sure a lot of doctors do more hours than that. But with the average GP earning a six figure salary, do they do ten times more hours than that? Of course not, because that is more hours than exist.
Paul I think you're grossly confusing Doctors with Footballers. Also, this may be news to you, but Doctors do have loans and mortgages to pay off!
Which is probably true, as doctors are probably the only people who can afford to get on the property ladder these days. The rest of us have to rent.
Moz adds some good points…
I think the difficulty in debates like this is the gross inequality that people see between salaries across the various sectors. At the end of the day there are people in each sector who work just as hard as each other and do very difficult jobs, but receive vastly different salaries/pensions. In the private sector (e.g. bankers) you get people earning obscene salaries doing non-specialist jobs that don't even benefit society that much. In the health sector you have people also earning obscene salaries, but at least doing a highly-skilled job that greatly benefits society (I wouldn't include dentists in this – how they demand the salaries they receive is beyond me). Whereas in academia you have people earning very little to do a very difficult highly-skilled job. As an academic, I don't moan about not being paid enough (well not much at least). But tbh I would love to see other people who have easier jobs than me earning less than I do. Its selfish but it would make me feel a lot better and more valued. Overall I think there should be a salary/pension cap that applies to everyone including doctors. Afterall no one person can be *that* much value to society.
But this just reinforces the point that you're not paid in proportion to how much work you do, it's how much value you are to society. In Moz's case, that isn't that much value. Not because Moz doesn't do important stuff, he does. But because it would be fairly easy to replace him, because lots of people would like an academic research drop, which drives wages down.
But the important point here is that we live in a free market economy where you enjoy a choice of careers. If you don't think you're getting a fair deal, go do something else. If people vote with their feet, the government will be forced to offer higher wages. But actually almost nobody does, because people are actually still quite happy with the sweet deal they get as a doctor, so the government can cut their pensions.
No they are different points. How about going to a cornershop and buy a packet of sweets worth 50p and offer 45p. It's only 5p difference. But you'll probably be told to bugger off. Principles at stake
No, there isn't a principle here. If everyone turned round and said "I'm only paying 45p" any half intelligent businessman would drop their prices. Similarly, if they were constantly selling out at 50p, they would put their prices up to 55p. That is how supply and demand works.
If doctors aren't happy with their pay they need to vote with their feet – don't work for the NHS (you can practice privately in the UK), go work in a different country (you have the right to work in any other EU country and as a doctor will get a visa for almost any other country too) or change career entirely (why not become a banker, for example).
In the IT industry we offer some really high wages (though not as high as doctors, I might add) because you simply can't get the staff. They're like gold dust, there just aren't enough of them. That drives up wages. We can get the doctors (say what you want about the shortage, we still have a world class healthcare system and the government is so confident in our ability to retain them it's even slashing pensions), but if there is some point where we can't, we will have to start offering more money and benefits.
Strikers always make out they are the victim. But you're never a victim in the free market unless you choose to be.
Business & Marketing (27)
Distractions (246)
Family & Parenting (54)
Humanism (463)
Religion & Politics (294)
Success & Productivity (19)
© 2020 Chris Worfolk. All rights reserved. Privacy policy. Contact me.

redpajama_set_name: RedPajamaCommonCrawl


Have You Ever Met A Reindeer?
Windsong Chorus, Centennial State Chorus and special guests present, "A Red, White and Blue Christmas" concert on Sunday, December 2, at 3 pm in the Frank Hunter Auditorium at Sterling High School. Admission is a suggested $8 donation and two non-perishable food items.
It might be chilly outside but it's always warm and friendly inside Simkins Parlour. Stop in for a cold treat or warm soup. There's coffee and ice cream and wraps and gourmet soups and salads and homemade sweets and more! Relax with your family, or unwind with a rousing board game among friends.


Two Wisconsin groups say their efforts to promote sound science will continue beyond the Saturday marches that brought thousands of people out across the state and more across the globe.
Members of the recently formed Wisconsin's Green Fire: Voices for Conservation took part in a March for Science, a national and global movement originally billed as a nonpartisan event, on Earth Day. But many attendees across the United States chanted and told reporters the Trump administration is a threat to the environment and science, and wanted to call attention to climate change and potential budget cuts to organizations tied to scientific research.
And now that the marches are over, the next step is for the group's 70 active and retired federal and state scientists to be a source of accurate information, said Terry Daulton, a coordinator for Wisconsin's Green Fire.
"Policy statements on big issues like climate change or water quality and the importance of those things to the public, but also be available for when things come up," Daulton said. "We would have a referral service for scientists who have expertise in those areas and are able to speak."
Many scientists who have left the public sector still want to contribute to the quality of life in Wisconsin, Daulton said. Another group, Milwaukee Area Science Advocates, plans to support science education in the schools and community, public health and sustainability.
Brandon Gross, a water researcher at the University of Wisconsin-Milwaukee and member of Milwaukee Area Science Advocates, said his group will advocate for science education and try to be a resource on policy debates.
Gross also said there are many issues to tackle.
"The reduction of funding for scientific efforts, funding for conservation and sustainability efforts, also just things like gag orders, things like the government being barred from using terms like climate change or talking about sustainable energy," Gross said.


text:
package org.jclouds.cloudstack.compute.extensions;

import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Predicates.notNull;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
import static org.jclouds.cloudstack.predicates.SecurityGroupPredicates.ruleCidrMatches;
import static org.jclouds.cloudstack.predicates.SecurityGroupPredicates.ruleGroupMatches;

import java.util.Set;

import javax.inject.Inject;

import org.jclouds.cloudstack.CloudStackApi;
import org.jclouds.cloudstack.domain.IngressRule;
import org.jclouds.cloudstack.domain.ZoneAndName;
import org.jclouds.cloudstack.domain.ZoneSecurityGroupNamePortsCidrs;
import org.jclouds.cloudstack.options.ListSecurityGroupsOptions;
import org.jclouds.cloudstack.strategy.BlockUntilJobCompletesAndReturnResult;
import org.jclouds.collect.Memoized;
import org.jclouds.compute.domain.SecurityGroup;
import org.jclouds.compute.extensions.SecurityGroupExtension;
import org.jclouds.compute.functions.GroupNamingConvention;
import org.jclouds.domain.Location;
import org.jclouds.net.domain.IpPermission;
import org.jclouds.net.domain.IpProtocol;

import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.base.Supplier;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;

/**
 * An extension to compute service to allow for the manipulation of {@link org.jclouds.compute.domain.SecurityGroup}s. Implementation
 * is optional by providers.
 */
public class CloudStackSecurityGroupExtension implements SecurityGroupExtension {
   protected final CloudStackApi api;
   protected final Function<org.jclouds.cloudstack.domain.SecurityGroup, SecurityGroup> groupConverter;
   protected final LoadingCache<ZoneAndName, org.jclouds.cloudstack.domain.SecurityGroup> groupCreator;
   protected final GroupNamingConvention.Factory namingConvention;
   protected final Supplier<Set<? extends Location>> locations;
   protected final BlockUntilJobCompletesAndReturnResult blockUntilJobCompletesAndReturnResult;
   protected final Predicate<String> jobComplete;

   @Inject
   public CloudStackSecurityGroupExtension(CloudStackApi api,
                                           Function<org.jclouds.cloudstack.domain.SecurityGroup, SecurityGroup> groupConverter,
                                           LoadingCache<ZoneAndName, org.jclouds.cloudstack.domain.SecurityGroup> groupCreator,
                                           GroupNamingConvention.Factory namingConvention,
                                           @Memoized Supplier<Set<? extends Location>> locations,
                                           BlockUntilJobCompletesAndReturnResult blockUntilJobCompletesAndReturnResult,
                                           Predicate<String> jobComplete) {
      this.api = checkNotNull(api, "api");
      this.groupConverter = checkNotNull(groupConverter, "groupConverter");
      this.groupCreator = checkNotNull(groupCreator, "groupCreator");
      this.namingConvention = checkNotNull(namingConvention, "namingConvention");
      this.locations = checkNotNull(locations, "locations");
      this.blockUntilJobCompletesAndReturnResult = checkNotNull(blockUntilJobCompletesAndReturnResult,
              "blockUntilJobCompletesAndReturnResult");
      this.jobComplete = checkNotNull(jobComplete, "jobComplete");
   }

   @Override
   public Set<SecurityGroup> listSecurityGroups() {
      Iterable<? extends org.jclouds.cloudstack.domain.SecurityGroup> rawGroups =
              api.getSecurityGroupApi().listSecurityGroups();
      Iterable<SecurityGroup> groups = transform(filter(rawGroups, notNull()),
              groupConverter);
      return ImmutableSet.copyOf(groups);
   }

   /**
    * Note that for the time being, security groups are not scoped by location in
    * CloudStack, so this will simply return listSecurityGroups().
    *
    * @param location
    * @return security groups
    */
   @Override
   public Set<SecurityGroup> listSecurityGroupsInLocation(final Location location) {
      return listSecurityGroups();
   }

   @Override
   public Set<SecurityGroup> listSecurityGroupsForNode(String id) {
      checkNotNull(id, "id");

      Iterable<? extends org.jclouds.cloudstack.domain.SecurityGroup> rawGroups =
              api.getSecurityGroupApi().listSecurityGroups(ListSecurityGroupsOptions.Builder
                      .virtualMachineId(id));

      Iterable<SecurityGroup> groups = transform(filter(rawGroups, notNull()),
              groupConverter);
      return ImmutableSet.copyOf(groups);
   }

   @Override
   public SecurityGroup getSecurityGroupById(String id) {
      checkNotNull(id, "id");

      org.jclouds.cloudstack.domain.SecurityGroup rawGroup
              = api.getSecurityGroupApi().getSecurityGroup(id);

      if (rawGroup == null) {
         return null;
      }

      return groupConverter.apply(rawGroup);
   }

   @Override
   public SecurityGroup createSecurityGroup(String name, Location location) {
      checkNotNull(name, "name");
      checkNotNull(location, "location");

      String markerGroup = namingConvention.create().sharedNameForGroup(name);

      ZoneSecurityGroupNamePortsCidrs zoneAndName = ZoneSecurityGroupNamePortsCidrs.builder()
              .zone(location.getId())
              .name(markerGroup)
              .build();

      return groupConverter.apply(groupCreator.getUnchecked(zoneAndName));
   }

   @Override
   public boolean removeSecurityGroup(String id) {
      checkNotNull(id, "id");

      org.jclouds.cloudstack.domain.SecurityGroup group =
              api.getSecurityGroupApi().getSecurityGroup(id);

      if (group == null) {
         return false;
      }

      for (IngressRule rule : group.getIngressRules()) {
         jobComplete.apply(api.getSecurityGroupApi().revokeIngressRule(rule.getId()));
      }

      api.getSecurityGroupApi().deleteSecurityGroup(id);

      // TODO find something better here maybe - hard to map zones to groups
      for (Location location : locations.get()) {
         groupCreator.invalidate(ZoneSecurityGroupNamePortsCidrs.builder()
                 .zone(location.getId())
                 .name(group.getName())
                 .build());
      }

      return true;
   }

   @Override
   public SecurityGroup addIpPermission(IpPermission ipPermission, SecurityGroup group) {
      checkNotNull(group, "group");
      checkNotNull(ipPermission, "ipPermission");
      String id = checkNotNull(group.getId(), "group.getId()");

      if (!ipPermission.getCidrBlocks().isEmpty()) {
         jobComplete.apply(api.getSecurityGroupApi().authorizeIngressPortsToCIDRs(id,
                 ipPermission.getIpProtocol().toString().toUpperCase(),
                 ipPermission.getFromPort(),
                 ipPermission.getToPort(),
                 ipPermission.getCidrBlocks()));
      }

      if (!ipPermission.getTenantIdGroupNamePairs().isEmpty()) {
         jobComplete.apply(api.getSecurityGroupApi().authorizeIngressPortsToSecurityGroups(id,
                 ipPermission.getIpProtocol().toString().toUpperCase(),
                 ipPermission.getFromPort(),
                 ipPermission.getToPort(),
                 ipPermission.getTenantIdGroupNamePairs()));
      }

      return getSecurityGroupById(id);
   }

   @Override
   public SecurityGroup addIpPermission(IpProtocol protocol, int startPort, int endPort,
                                        Multimap<String, String> tenantIdGroupNamePairs,
                                        Iterable<String> ipRanges,
                                        Iterable<String> groupIds, SecurityGroup group) {
      IpPermission.Builder permBuilder = IpPermission.builder();
      permBuilder.ipProtocol(protocol);
      permBuilder.fromPort(startPort);
      permBuilder.toPort(endPort);
      permBuilder.tenantIdGroupNamePairs(tenantIdGroupNamePairs);
      permBuilder.cidrBlocks(ipRanges);
      permBuilder.groupIds(groupIds);

      return addIpPermission(permBuilder.build(), group);
   }

   @Override
   public SecurityGroup removeIpPermission(IpPermission ipPermission, SecurityGroup group) {
      checkNotNull(group, "group");
      checkNotNull(ipPermission, "ipPermission");
      String id = checkNotNull(group.getId(), "group.getId()");

      org.jclouds.cloudstack.domain.SecurityGroup rawGroup = api.getSecurityGroupApi()
              .getSecurityGroup(id);

      if (!ipPermission.getCidrBlocks().isEmpty()) {
         for (IngressRule rule : filter(rawGroup.getIngressRules(),
                 ruleCidrMatches(ipPermission.getIpProtocol().toString(),
                         ipPermission.getFromPort(),
                         ipPermission.getToPort(),
                         ipPermission.getCidrBlocks()))) {
             jobComplete.apply(api.getSecurityGroupApi().revokeIngressRule(rule.getId()));
         }
      }

      if (!ipPermission.getTenantIdGroupNamePairs().isEmpty()) {
         for (IngressRule rule : filter(rawGroup.getIngressRules(),
                 ruleGroupMatches(ipPermission.getIpProtocol().toString(),
                         ipPermission.getFromPort(),
                         ipPermission.getToPort(),
                         ipPermission.getTenantIdGroupNamePairs()))) {
             jobComplete.apply(api.getSecurityGroupApi().revokeIngressRule(rule.getId()));
         }
      }

      return getSecurityGroupById(id);
   }

   @Override
   public SecurityGroup removeIpPermission(IpProtocol protocol, int startPort, int endPort,
                                           Multimap<String, String> tenantIdGroupNamePairs,
                                           Iterable<String> ipRanges,
                                           Iterable<String> groupIds, SecurityGroup group) {
      IpPermission.Builder permBuilder = IpPermission.builder();
      permBuilder.ipProtocol(protocol);
      permBuilder.fromPort(startPort);
      permBuilder.toPort(endPort);
      permBuilder.tenantIdGroupNamePairs(tenantIdGroupNamePairs);
      permBuilder.cidrBlocks(ipRanges);
      permBuilder.groupIds(groupIds);

      return removeIpPermission(permBuilder.build(), group);
   }

   @Override
   public boolean supportsTenantIdGroupNamePairs() {
      return true;
   }

   @Override
   public boolean supportsTenantIdGroupIdPairs() {
      return false;
   }

   @Override
   public boolean supportsGroupIds() {
      return false;
   }

   @Override
   public boolean supportsPortRangesForGroups() {
      return false;
   }

   @Override
   public boolean supportsExclusionCidrBlocks() {
      return false;
   }

}

redpajama_set_name: RedPajamaGithub


An Australian individual who is a non-resident with a taxable income of $155,000.
An Australian resident, aged 25 years, with a taxable income of $18,000.
An Australian resident, eligible for a Seniors tax offset, with a taxable income of $32,000.
An Australian resident, aged 45 years, with a taxable income of $45,000.
A taxpayer who is not a resident for tax purposes, with a taxable income of $45,000.
An Australian company with a taxable income of $2,500,000.
An Australian resident, aged 45 years, with a taxable income of $110,000, holding private health insurance.
An Australian resident, aged 45 years, with a taxable income of $110,000, and no private health insurance.
An Australian resident with a taxable income of $150,000, holding private health insurance for 90 days of the income year.
Victor and his wife are Australian residents. Victor has a taxable income of $110,000 and his wife Jackie a taxable income of $75,000. They have no children and no private health care service.
An Australian couple have four children and no private hospital health insurance. What would be the family's minimum Medicare levy surcharge threshold?
Each question has 10 parts and for the correct answer of each part, 1 mark will be allocated.


text:
CANNONS Reveals a Stunning New Official Video For 'Bad Dream'
Rising pop band CANNONS are back with a brand new magnificent official video for 'Bad Dream'
The new official video was directed by Ryan Rundle, the movielike visual finds lead-singer Michelle Joy in a precarious situation with a serial killer who takes her hostage after a CANNONS show.
The rising band has been sharing performance videos as part of their 'Covers by CANNONS' series, which kicked off in November with a performance of Harry Styles' "Golden." In the latest installment released last week, CANNONS reinterpret Kings of Leon's smash hit "Sex on Fire."
Lifted from their sophomore album Shadows, which was independently released in 2019, "Fire for You" reached #1 on The Hollywood Reporter's Top TV Songs Chart in May following a sync in a pivotal episode of the NETFLIX smash Never Have I Ever.
With early radio support from KROQ LA, Alt 987 LA, SiriusXM Alt Nation, KKDO Sacramento and more, the track hit #1 at Alternative and Triple A, spending multiple weeks atop the charts.Additionally,CANNONS were named to Sirius XM's 'Class of 2020' and were featured as one of YouTube's 'Artists on the Rise' as well as an MTV 'PUSH: Radar' artist earlier this year.


House of H (HoH) is a Nigerian owned business located in Lagos. We design and create modern contemporary hand made furniture pieces. We work closely with Interior designers to help bring their vision to reality, offering much-needed professionalism currently lacking in the sector. You can visit our studio where you can view our range of modern, contemporary, custom made furniture.


IJIER adopts an international review standard which emphasizes research groundwork, novelty, presentation, and format. Papers that authors submit to IJIER must be original work, never published earlier in any medium, and not currently under consideration for publication elsewhere. It also focuses on whether the paper based on original research, as well as the creativity of research method and rationality of conclusion. There shall be a review process of manuscripts by one or more independent referees who are conversant in the pertinent subject area.
Authors should strive for maximum clarity of expression, bearing in mind that the purpose of publication is the disclosure of technical knowledge and that an excessively complex or poorly written presentation can only obscure the significance of the work presented. Material which is not essential to the continuity of the text (e.g., proofs, derivations, or calculations) b placed in Appendices The editor evaluates the recommendation and notifies the author of the manuscript status.
*Accepted for publication as it is.
*Accepted for publication with minor changes, with no re-review necessary.
*Accepted for publication after substantial revision and additional review.
The comments of the anonymous reviewers will be forward to the authors, and when the authors are ready to submit their revised manuscript, read the comments of the editors and reviewers, and respond to them by telling what modifications they have made in their paper or why they have not made the suggested changes. Material which has been previously copyrighted, published, or accepted for publication will not be considered for publication in the journals. The review process shall ensure that all authors have equal opportunity for publication of their papers. Acceptance and scheduling of release of documents in these periodicals not implement added criteria and procedures beyond those contained in the review process.
The editorial board is highly committed to the quick review process of the paper, but not with the sacrifice of the right judgment of paper. The review process takes maximum two weeks.


text:
SOMERSET: Dunball services plans
CREDIT: Sedgemoor District Council
A new services area near Bridgwater is having to be redesigned due to land ownership issues dating back to the construction of the M5.
The Euro Garages Group is currently constructing a new petrol station, a Starbucks drive-thru and a KFC branch on the northern side of the Dunball roundabout near Junction 23 of the motorway.
The new services will eventually expand with further outlets, with motorists being able to access it from both the A38 Bristol Road and the A39 Bath Road.
However, due to legal issues, the company has been unable to make progress on the latter exit – and applied successfully to Sedgemoor District Council to change the plans so the facility can still upon on time.
Under the original plans approved in November 2019, the two access roads to the new services must both be completed before the site can open to the public – a two-way exit onto the A38 and an entrance-only slip road on the eastbound side of the A39.
Planning officer Adrian Noon explained the company's position at a meeting of the council's development committee in Bridgwater on Tuesday morning (October 12).
He said: "The A39 entrance was considered essential as part of this development, to serve both the detailed bits [currently under construction] and the outline element [future units].
"It is unfortunate that it cannot be delivered now to the timing of the opening. There is difficulty with third-party ownership running alongside the A39, left over from when the motorway was built – which goes back to 1975.
"It is quite difficult to get the legal agreements in place at a county level to get the road built to the county council's standards."
The company said it was confident that it could resolve the legal issues and deliver the A39 access road within six months – but Councillor Kathy Pearce did not share this enthusiasm.
She said: "I really don't share optimism that this could be resolved in months – legal issues can take years.
"I'm really concerned about the temporary access dragging on and on and on, and the impact this could have.
"I also fail to see the need for another petrol station when there's one across the road."
In addition to changing the access arrangements, the developer also applied to extend the opening times to the drive-thru outlets.
Councillor Bill Revans said: "This is a bit of a pickle, to put it mildly. I think this is a good, pragmatic solution to move this forward."
After around 45 minutes' debate, the committee voted unanimously to approve the plans.
In addition to the Euro Garages proposals, the entire Dunball roundabout could be upgraded in the near-future in a bid to ease congestion and unlock land for future housing and employment.
The council voted in February to borrow up to £4.7M to turn the roundabout into a 'through-about', with an unspecified amount being allocated to the project as part of the £22.6M Bridgwater town deal.
Words: Daniel Mumby, Local Democracy Reporter


Talk to your child's healthcare provider about treatment for epilepsy.
Seizures are sudden, uncontrollable events that occur when the brain sends out abnormal electrical signals to the body. There are many reasons why people have seizures. When a child has seizures repeatedly, he or she is considered to have epilepsy. Usually, this condition can be partially or completely controlled. With proper treatment, epilepsy won't stop your child from enjoying life.
Why do people develop epilepsy?
Most cases of epilepsy start in childhood. Many children who are diagnosed with epilepsy continue to have seizures into adulthood. Often, doctors can't explain why a child has epilepsy. Certain factors, such as head injury, brain infection, stroke, or tumors can raise a child's risk for getting epilepsy. Seizure disorders like epilepsy may run in families. More and more people are being diagnosed with genetic causes for epilepsy as genetic testing becomes more widely available.
A child may feel sudden fear, anger, or panic before a seizure. He or she may notice changes in the way things look, sound, smell, or feel before the seizure. These are referred to as auras and are actually the earliest part of a seizure. After the seizure is over, the child is often weak or confused. Sometimes children will sleep for a prolonged period of time after a seizure. This is referred to as the postictal period.
A neurologist is a doctor who specializes in the brain and other parts of the nervous system. If your child has seizures, a neurologist will evaluate him or her to see if a cause can be found. You'll be asked questions about your child's health and the history of the seizures. An EEG (electroencephalogram) is often done. This is a test that records brain activity. Other tests may also be done, including an MRI or a lumbar puncture (spinal tap). In some cases, the doctor may order genetic testing.
Your doctor will discuss with you the best way to control your child's epilepsy. Seizures can often be controlled with medicine. Some medicines are given on a daily basis to prevent seizures. Others are prescribed to stop a seizure once it has started. In some cases, it may be hard to control the frequency of your child's seizures. In such cases, doctors may suggest a special diet called the ketogenic diet. There is also a magnetic device that can be implanted underneath the skin in your child's chest. This device stimulates the vagus nerve in an effort to end the seizure. For some children, surgery may be an option. Many children stop having seizures as they get older. Even those who continue to have seizures can live normal and happy lives.


Mixmag has teamed up with LIFEWTR to showcase forward thinking art, design and music at an event in Philadelphia featuring Wolf + Lamb, Jay Hill and Mixmag All Stars along with a special installation curated by Daniel Cloke.
Taking place on October 3 at Front & Palmer, located within the Kensington art district, the event will celebrate the new LIFEWTR bottle designs, titled Series 6: Diversity in Design.
In partnership with the CFDA, the LIFEWTR Series 6: Diversity in Design spotlights bold, empowered and emerging designers including Jamall Osterholm, Daniel Cloke and Ji Won Choi, who are all part of the cultural mosaic of the fashion design industry. These creatives were tapped to deliver three unique bottles that express each artist's diverse background while also revealing original perspectives that inspire positive change.
To coincide with the artwork and Daniel Cloke's installation, the event space will be soundtracked with DJ sets by Wolf + Lamb, the Brooklyn-based duo of Zev Le Wolfe and Gadi Mizrahi who also lead a collective of the same name that includes Soul Clap, No Regular Play, Slow Hands, Nick Monaco and more. Joining Wolf + Lamb to heat up the dancefloor will be Jay Hill, a Philadelphia-based DJ and producer whose material has landed on labels such as King Street Sounds, Induction Muzic, Static Music and FM Elle among others.
The LIFEWTR and Mixmag collaborative event will begin at 7:00 PM on October 3 at Front & Palmer.


The course provides you with an introduction to literary studies and presents opportunities for reading widely and for making creative and informed responses to each of the major literary genres of poetry, prose and drama. You will be required to show knowledge and understanding of: the functions and effects of structure, form and language; some of the ways in which texts are interpreted by different readers and relate to one another, and some of the contexts in which they are written and read. As the course continues you will develop and enhance your techniques of analysis, evaluation and comparison of literary texts in the context of a wider range of texts of cultural and literary significance. You will be required to show knowledge and understanding of: the significance of the ways in which writers use and adapt language, form and structure as well as undertaking independent and sustained studies to deepen your appreciation and understanding of literature.
The analysis of texts, critical reading, discussion and written expression developed in this subject would be ideal for many degree courses, including English Studies, Drama, History, Media Studies, Sociology, Psychology, Law and Journalism, to name but a few.
To discuss this course please contact our Team Leader of English, Mr T Ashworth.
If you want to apply for this course, you will need to contact Roundhay School All through education from 4 to 18 directly.


text:
FTC Probes High Gas Prices in 2 Cities
The Federal Trade Commission is investigating high retail gasoline prices in the San Diego and San Francisco areas after Sen. Barbara Boxer (D-Calif.) and others complained. FTC Chairman Robert Pitofsky, in a letter to Boxer, said pricing information she and others provided "warrants further inquiry." He said he has asked FTC employees to gather more data. Drivers in San Francisco pay as much as 30 cents more per gallon than do those in Los Angeles, and San Diego residents pay 10 to 15 cents more than those in L.A., Boxer said. Boxer has complained about California's higher-than-average gas prices in the past. Last year, she was among those arguing that Texaco Inc.'s plan to merge its Midwestern and Western refining operations with those of Shell Oil Co. should be blocked by antitrust regulators. After finding that prices were artificially high in Southern California, the FTC proposed a consent order that would require the Shell-Texaco combination to sell some San Diego gas stations.


Uplift your spirit with Enliven Coconut Basil Petite Bath Affirmations. This handcrafted bathing experience includes a glass tube filled with mineral rich herbal bath salts, a muslin tea bag for effortless clean up and a hand selected positive affirmation scroll to set the mood for a rejuvenating soak in the tub. This mindful moment in bathing is sure to send you into a state of restorative bliss.


text:
After Biden's push for probe into COVID-19 origin, China says US does not care about real facts
US-China. (Xinhua/IANS)
Beijing, May 27 (ANI): After the Biden administration asked the US intelligence community to "redouble their efforts" to come to a conclusion on the origins of COVID-19, China appears to be on the backfoot and hit back at the US saying that it does not care about real facts.
Speaking at a presser on Thursday, Chinese Foreign Ministry spokesperson Zhao Lijian termed the Biden administration's move as disrespect for science. "Some people in the US completely ignore facts and science, do not pay attention to ambiguous parts of their own research and their failures in the fight against the pandemic, over and over making the buzz that a re-investigation needs to be conducted regarding China," Zhao said.
"This is disrespect for science and irresponsibility in relation to people's lives, as well as undermining global unity in the fight against the epidemic," he added.
Biden on Wednesday had asked the US intelligence community to "redouble their efforts" to come to a conclusion on the origins of COVID-19 and report back to him within 90 days.
"I have now asked the Intelligence Community to redouble their efforts to collect and analyze information that could bring us closer to a definitive conclusion, and to report back to me in 90 days," Biden said in a statement on the investigation into the origins of COVID-19.
"The United States will also keep working with like-minded partners around the world to press China to participate in a full, transparent, evidence-based international investigation and to provide access to all relevant data and evidence," he added.
Biden said that the intelligence community had already prepared a report at his request that analyzed whether COVID-19 "emerged from human contact with an infected animal or from a laboratory accident" that he received earlier this month, but that officials did not make a definitive conclusion.
A senior White House coronavirus adviser on Tuesday said the world needs to "get to the bottom" of the origins of the COVID-19 pandemic while adding that the WHO and China need to do more to reach the definitive answers in the matter.
"It is our position that we need to get to the bottom of this and we need a completely transparent process from China. We need the WHO (World Health Organization) to assist in that matter. We don't feel like that we have that now," said WH Covid advisor Andy Slavitt on Tuesday during a briefing.
A few days back, an explosive report by Wall Street Journal had stated that three researchers from China's Wuhan Institute of Virology sought hospital care after they fell ill in November 2019, a month before Beijing reported the first patient with COVID-like symptoms.
"The US government has reason to believe that several researchers inside the WIV became sick in autumn 2019, before the first identified case of the outbreak, with symptoms consistent with both COVID-19 and common seasonal illnesses," the report read, fueling debate of the lab leak theory.
The revelations come amid growing calls for a fuller probe on whether the COVID-19 virus may have escaped from the Chinese laboratory.
Previous article'Marks of torture' reported on Mehul Choksi's body, claims his lawyer
Next articleJaishankar meets business leaders in Washington
https://thelinknews.net/slot-gacor/
https://pwanhomes.com/wp-includes/slot-gacor
https://www.lonelantern.org/
https://rumahasyam.com/sbobet88


text:
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { AlertService } from 'app/core/util/alert.service';
import { HttpErrorResponse, HttpResponse } from '@angular/common/http';
import { ExampleSubmissionService } from 'app/exercises/shared/example-submission/example-submission.service';
import { Result } from 'app/entities/result.model';
import { TutorParticipationService } from 'app/exercises/shared/dashboards/tutor/tutor-participation.service';
import { UMLModel } from '@ls1intum/apollon';
import { ModelingEditorComponent } from 'app/exercises/modeling/shared/modeling-editor.component';
import { ExampleSubmission } from 'app/entities/example-submission.model';
import { Feedback, FeedbackCorrectionError, FeedbackType } from 'app/entities/feedback.model';
import { ExerciseService } from 'app/exercises/shared/exercise/exercise.service';
import { ModelingAssessmentService } from 'app/exercises/modeling/assess/modeling-assessment.service';
import { ModelingSubmission } from 'app/entities/modeling-submission.model';
import { ModelingExercise } from 'app/entities/modeling-exercise.model';
import { ModelingAssessmentComponent } from 'app/exercises/modeling/assess/modeling-assessment.component';
import { concatMap, tap } from 'rxjs/operators';
import { getLatestSubmissionResult, setLatestSubmissionResult } from 'app/entities/submission.model';
import { getPositiveAndCappedTotalScore } from 'app/exercises/shared/exercise/exercise.utils';
import { onError } from 'app/shared/util/global.utils';
import { IconProp } from '@fortawesome/fontawesome-svg-core';
import { FeedbackMarker, ExampleSubmissionAssessCommand } from 'app/exercises/shared/example-submission/example-submission-assess-command';
import { getCourseFromExercise } from 'app/entities/exercise.model';
import { Course } from 'app/entities/course.model';
import { faChalkboardTeacher, faCheck, faCircle, faCodeBranch, faExclamation, faExclamationTriangle, faInfoCircle, faSave, faTimes } from '@fortawesome/free-solid-svg-icons';
import { ArtemisNavigationUtilService } from 'app/utils/navigation.utils';

@Component({
    selector: 'jhi-example-modeling-submission',
    templateUrl: './example-modeling-submission.component.html',
    styleUrls: ['./example-modeling-submission.component.scss'],
})
export class ExampleModelingSubmissionComponent implements OnInit, FeedbackMarker {
    @ViewChild(ModelingEditorComponent, { static: false })
    modelingEditor: ModelingEditorComponent;
    @ViewChild(ModelingAssessmentComponent, { static: false })
    assessmentEditor: ModelingAssessmentComponent;

    isNewSubmission: boolean;
    usedForTutorial = false;
    assessmentMode = false;
    exerciseId: number;
    exampleSubmission: ExampleSubmission;
    modelingSubmission: ModelingSubmission;
    umlModel: UMLModel;
    explanationText: string;
    feedbackChanged = false;
    assessmentsAreValid = false;
    result: Result;
    totalScore: number;
    invalidError?: string;
    exercise: ModelingExercise;
    course?: Course;
    readOnly: boolean;
    toComplete: boolean;
    assessmentExplanation: string;
    isExamMode: boolean;

    legend = [
        {
            text: 'artemisApp.exampleSubmission.legend.positiveScore',
            icon: faCheck as IconProp,
            color: 'green',
            size: '2em',
        },
        {
            text: 'artemisApp.exampleSubmission.legend.negativeScore',
            icon: faTimes as IconProp,
            color: 'red',
            size: '2em',
        },
        {
            text: 'artemisApp.exampleSubmission.legend.feedbackWithoutScore',
            icon: faExclamation as IconProp,
            color: 'blue',
            size: '1.66em',
        },
        {
            text: 'artemisApp.exampleSubmission.legend.incorrectAssessment',
            icon: faExclamationTriangle as IconProp,
            color: 'yellow',
            size: '2em',
        },
    ];

    private exampleSubmissionId: number;

    referencedFeedback: Feedback[] = [];
    unreferencedFeedback: Feedback[] = [];
    get assessments(): Feedback[] {
        return [...this.referencedFeedback, ...this.unreferencedFeedback];
    }

    // Icons
    faSave = faSave;
    faCircle = faCircle;
    faInfoCircle = faInfoCircle;
    faExclamation = faExclamation;
    faCodeBranch = faCodeBranch;
    faChalkboardTeacher = faChalkboardTeacher;

    constructor(
        private exerciseService: ExerciseService,
        private exampleSubmissionService: ExampleSubmissionService,
        private modelingAssessmentService: ModelingAssessmentService,
        private tutorParticipationService: TutorParticipationService,
        private alertService: AlertService,
        private route: ActivatedRoute,
        private router: Router,
        private navigationUtilService: ArtemisNavigationUtilService,
    ) {}

    ngOnInit(): void {
        this.exerciseId = Number(this.route.snapshot.paramMap.get('exerciseId'));
        const exampleSubmissionId = this.route.snapshot.paramMap.get('exampleSubmissionId');
        this.readOnly = !!this.route.snapshot.queryParamMap.get('readOnly');
        this.toComplete = !!this.route.snapshot.queryParamMap.get('toComplete');

        if (exampleSubmissionId === 'new') {
            this.isNewSubmission = true;
            this.exampleSubmissionId = -1;
        } else {
            // (+) converts string 'id' to a number
            this.exampleSubmissionId = +exampleSubmissionId!;
        }

        // if one of the flags is set, we navigated here from the assessment dashboard which means that we are not
        // interested in the modeling editor, i.e. we only wanna use the assessment mode
        if (this.readOnly || this.toComplete) {
            this.assessmentMode = true;
        }
        this.loadAll();
    }

    private loadAll(): void {
        this.exerciseService.find(this.exerciseId).subscribe((exerciseResponse: HttpResponse<ModelingExercise>) => {
            this.exercise = exerciseResponse.body!;
            this.course = getCourseFromExercise(this.exercise);
            this.isExamMode = this.exercise.exerciseGroup != undefined;
        });

        if (this.isNewSubmission) {
            this.exampleSubmission = new ExampleSubmission();
            return; // We don't need to load anything else
        }

        this.exampleSubmissionService.get(this.exampleSubmissionId).subscribe((exampleSubmissionResponse: HttpResponse<ExampleSubmission>) => {
            this.exampleSubmission = exampleSubmissionResponse.body!;
            if (this.exampleSubmission.submission) {
                this.modelingSubmission = this.exampleSubmission.submission as ModelingSubmission;
                if (this.modelingSubmission.model) {
                    this.umlModel = JSON.parse(this.modelingSubmission.model);
                }
                // Updates the explanation text with example modeling submission's explanation
                this.explanationText = this.modelingSubmission.explanationText ?? '';
            }
            this.usedForTutorial = this.exampleSubmission.usedForTutorial!;
            this.assessmentExplanation = this.exampleSubmission.assessmentExplanation!;

            // Do not load the results when we have to assess the submission. The API will not provide it anyway
            // if we are not instructors
            if (this.toComplete) {
                return;
            }

            this.modelingAssessmentService.getExampleAssessment(this.exerciseId, this.modelingSubmission.id!).subscribe((result) => {
                this.updateAssessment(result);
                this.checkScoreBoundaries();
            });
        });
    }

    upsertExampleModelingSubmission() {
        if (this.isNewSubmission) {
            this.createNewExampleModelingSubmission();
        } else {
            this.updateExampleModelingSubmission();
            this.updateAssessmentExplanationAndExampleAssessment();
        }
    }

    private createNewExampleModelingSubmission(): void {
        const modelingSubmission: ModelingSubmission = new ModelingSubmission();
        modelingSubmission.model = JSON.stringify(this.modelingEditor.getCurrentModel());
        modelingSubmission.explanationText = this.explanationText;
        modelingSubmission.exampleSubmission = true;

        const newExampleSubmission: ExampleSubmission = this.exampleSubmission;
        newExampleSubmission.submission = modelingSubmission;
        newExampleSubmission.exercise = this.exercise;
        newExampleSubmission.usedForTutorial = this.usedForTutorial;

        this.exampleSubmissionService.create(newExampleSubmission, this.exerciseId).subscribe({
            next: (exampleSubmissionResponse: HttpResponse<ExampleSubmission>) => {
                this.exampleSubmission = exampleSubmissionResponse.body!;
                this.exampleSubmissionId = this.exampleSubmission.id!;
                if (this.exampleSubmission.submission) {
                    this.modelingSubmission = this.exampleSubmission.submission as ModelingSubmission;
                    if (this.modelingSubmission.model) {
                        this.umlModel = JSON.parse(this.modelingSubmission.model);
                    }
                    // Updates the explanation text with example modeling submission's explanation
                    this.explanationText = this.modelingSubmission.explanationText ?? '';
                }
                this.isNewSubmission = false;

                this.alertService.success('artemisApp.modelingEditor.saveSuccessful');

                // Update the url with the new id, without reloading the page, to make the history consistent
                this.navigationUtilService.replaceNewWithIdInUrl(window.location.href, this.exampleSubmissionId);
            },
            error: (error: HttpErrorResponse) => {
                onError(this.alertService, error);
            },
        });
    }

    private updateExampleModelingSubmission() {
        if (!this.modelingSubmission) {
            this.createNewExampleModelingSubmission();
        }
        this.modelingSubmission.model = JSON.stringify(this.modelingEditor.getCurrentModel());

        this.modelingSubmission.explanationText = this.explanationText;
        this.modelingSubmission.exampleSubmission = true;
        if (this.result) {
            this.result.feedbacks = this.assessments;
            setLatestSubmissionResult(this.modelingSubmission, this.result);
            delete this.result.submission;
        }

        const exampleSubmission = this.exampleSubmission;
        exampleSubmission.submission = this.modelingSubmission;
        exampleSubmission.exercise = this.exercise;
        exampleSubmission.usedForTutorial = this.usedForTutorial;
        this.exampleSubmissionService.update(exampleSubmission, this.exerciseId).subscribe({
            next: (exampleSubmissionResponse: HttpResponse<ExampleSubmission>) => {
                this.exampleSubmission = exampleSubmissionResponse.body!;
                this.exampleSubmissionId = this.exampleSubmission.id!;
                if (this.exampleSubmission.submission) {
                    this.modelingSubmission = this.exampleSubmission.submission as ModelingSubmission;
                    if (this.modelingSubmission.model) {
                        this.umlModel = JSON.parse(this.modelingSubmission.model);
                    }
                    if (this.modelingSubmission.explanationText) {
                        this.explanationText = this.modelingSubmission.explanationText;
                    }
                }
                this.isNewSubmission = false;

                this.alertService.success('artemisApp.modelingEditor.saveSuccessful');
            },
            error: (error: HttpErrorResponse) => {
                onError(this.alertService, error);
            },
        });
    }

    onReferencedFeedbackChanged(referencedFeedback: Feedback[]) {
        this.referencedFeedback = referencedFeedback;
        this.feedbackChanged = true;
        this.checkScoreBoundaries();
    }

    onUnReferencedFeedbackChanged(unreferencedFeedback: Feedback[]) {
        this.unreferencedFeedback = unreferencedFeedback;
        this.feedbackChanged = true;
        this.checkScoreBoundaries();
    }

    showAssessment() {
        if (this.modelChanged()) {
            this.updateExampleModelingSubmission();
        }
        this.assessmentMode = true;
    }

    private modelChanged(): boolean {
        return this.modelingEditor && JSON.stringify(this.umlModel) !== JSON.stringify(this.modelingEditor.getCurrentModel());
    }

    explanationChanged(explanation: string) {
        this.explanationText = explanation;
    }

    showSubmission() {
        if (this.feedbackChanged) {
            this.saveExampleAssessment();
            this.feedbackChanged = false;
        }
        this.assessmentMode = false;
    }

    public saveExampleAssessment(): void {
        this.checkScoreBoundaries();
        if (!this.assessmentsAreValid) {
            this.alertService.error('modelingAssessment.invalidAssessments');
            return;
        }
        if (this.assessmentExplanation !== this.exampleSubmission.assessmentExplanation && this.assessments) {
            this.updateAssessmentExplanationAndExampleAssessment();
        } else if (this.assessmentExplanation !== this.exampleSubmission.assessmentExplanation) {
            this.updateAssessmentExplanation();
        } else if (this.assessments) {
            this.updateExampleAssessment();
        }
    }

    private updateAssessmentExplanationAndExampleAssessment() {
        this.exampleSubmission.assessmentExplanation = this.assessmentExplanation;
        this.exampleSubmissionService
            .update(this.exampleSubmission, this.exerciseId)
            .pipe(
                tap((exampleSubmissionResponse: HttpResponse<ExampleSubmission>) => {
                    this.exampleSubmission = exampleSubmissionResponse.body!;
                    this.assessmentExplanation = this.exampleSubmission.assessmentExplanation!;
                }),
                concatMap(() => this.modelingAssessmentService.saveExampleAssessment(this.assessments, this.exampleSubmissionId)),
            )
            .subscribe({
                next: (result: Result) => {
                    this.updateAssessment(result);
                    this.alertService.success('modelingAssessmentEditor.messages.saveSuccessful');
                },
                error: () => {
                    this.alertService.error('modelingAssessmentEditor.messages.saveFailed');
                },
            });
    }

    /**
     * Updates the example submission with the assessment explanation text from the input field if it is different from the explanation already saved with the example submission.
     */
    private updateAssessmentExplanation() {
        this.exampleSubmission.assessmentExplanation = this.assessmentExplanation;
        this.exampleSubmissionService.update(this.exampleSubmission, this.exerciseId).subscribe((exampleSubmissionResponse: HttpResponse<ExampleSubmission>) => {
            this.exampleSubmission = exampleSubmissionResponse.body!;
            this.assessmentExplanation = this.exampleSubmission.assessmentExplanation!;
        });
    }

    private updateExampleAssessment() {
        this.modelingAssessmentService.saveExampleAssessment(this.assessments, this.exampleSubmissionId).subscribe({
            next: (result: Result) => {
                this.updateAssessment(result);
                this.alertService.success('modelingAssessmentEditor.messages.saveSuccessful');
            },
            error: () => {
                this.alertService.error('modelingAssessmentEditor.messages.saveFailed');
            },
        });
    }

    /**
     * Calculates the total score of the current assessment.
     * Returns an error if the total score cannot be calculated
     * because a score is not a number/empty.
     */
    public checkScoreBoundaries() {
        if (this.assessments.length === 0) {
            this.totalScore = 0;
            this.assessmentsAreValid = true;
            return;
        }

        const credits = this.assessments.map((feedback) => feedback.credits);
        if (!credits.every((credit) => credit != undefined && !isNaN(credit))) {
            this.invalidError = 'The score field must be a number and can not be empty!';
            this.assessmentsAreValid = false;
            return;
        }

        const maxPoints = this.exercise.maxPoints! + this.exercise.bonusPoints!;
        const creditsTotalScore = credits.reduce((a, b) => a! + b!, 0)!;
        this.totalScore = getPositiveAndCappedTotalScore(creditsTotalScore, maxPoints);
        this.assessmentsAreValid = true;
        this.invalidError = undefined;
    }

    async back() {
        const courseId = this.exercise.course?.id || this.exercise.exerciseGroup?.exam?.course?.id;
        if (this.readOnly || this.toComplete) {
            await this.router.navigate(['/course-management', courseId, 'assessment-dashboard', this.exerciseId]);
        } else if (this.isExamMode) {
            await this.router.navigate([
                '/course-management',
                courseId,
                'exams',
                this.exercise.exerciseGroup?.exam?.id,
                'exercise-groups',
                this.exercise.exerciseGroup?.id,
                'modeling-exercises',
                this.exerciseId,
                'example-submissions',
            ]);
        } else {
            await this.router.navigate(['/course-management', courseId, 'modeling-exercises', this.exerciseId, 'example-submissions']);
        }
    }

    checkAssessment() {
        // scroll to top that the user definitely recognizes the response message (success OR score too low/high)
        window.scroll(0, 0);
        this.checkScoreBoundaries();
        if (!this.assessmentsAreValid) {
            this.alertService.error('artemisApp.modelingAssessment.invalidAssessments');
            return;
        }

        const exampleSubmission = Object.assign({}, this.exampleSubmission);
        const result = new Result();
        setLatestSubmissionResult(exampleSubmission.submission, result);
        delete result.submission;
        getLatestSubmissionResult(exampleSubmission.submission)!.feedbacks = this.assessments;

        const command = new ExampleSubmissionAssessCommand(this.tutorParticipationService, this.alertService, this);
        command.assessExampleSubmission(exampleSubmission, this.exerciseId);
    }

    markAllFeedbackToCorrect() {
        this.assessments.forEach((feedback) => {
            feedback.correctionStatus = 'CORRECT';
        });
        this.assessmentEditor.resultFeedbacks = this.referencedFeedback;
    }

    markWrongFeedback(correctionErrors: FeedbackCorrectionError[]) {
        correctionErrors.forEach((correctionError) => {
            const validatedFeedback = this.assessments.find((feedback) => feedback.reference === correctionError.reference);
            if (validatedFeedback != undefined) {
                validatedFeedback.correctionStatus = correctionError.type;
            }
        });
        this.assessmentEditor.resultFeedbacks = this.referencedFeedback;
    }

    readAndUnderstood() {
        this.tutorParticipationService.assessExampleSubmission(this.exampleSubmission, this.exerciseId).subscribe(() => {
            this.alertService.success('artemisApp.exampleSubmission.readSuccessfully');
            this.back();
        });
    }

    private updateAssessment(result: Result) {
        this.result = result;
        if (result) {
            this.referencedFeedback = result.feedbacks?.filter((feedback) => feedback.type !== FeedbackType.MANUAL_UNREFERENCED) || [];
            this.unreferencedFeedback = result.feedbacks?.filter((feedback) => feedback.type === FeedbackType.MANUAL_UNREFERENCED) || [];
        }
    }
}