text:
Heat Falls In Detroit 98-93
Filed Under:Basketball, Detroit Pistons, Dwyane Wade, Local TV, Miami Heat, NBA
DETROIT (CBSMiami/AP) -— Dwyane Wade scored 20 points for the Heat, but missed badly on an off-balance 3-pointer in the final seconds that could have tied the game.
Blake Griffin had 32 points and 11 rebounds, and the Detroit Pistons overcame an early exit by injured Andre Drummond to beat the Miami Heat 98-93 on Friday night.
Detroit led by 16 in the first half and was up 53-39 at halftime, but the Pistons were outscored 30-12 in the third quarter. They rebounded in the fourth and held on.
Drummond left with a nasal injury after being hit in the face in the first quarter by the arm of Miami's James Johnson. Drummond finished with no points in 7:14, and backup Zaza Pachulia scored only two — on a tip-in that put Detroit up 94-91 with 26.7 seconds remaining.
The Heat were done in by their abysmal foul shooting. They went 5 of 19 at the line, with center Hassan Whiteside missing all eight of his attempts.
Luke Kennard scored 22 points for the Pistons, and Reggie Bullock added 19. Griffin finished an assist shy of a triple-double.
Wade received a nice ovation when he checked into the game in the first quarter, and a message went up on the scoreboard congratulating him on his career. This is Wade's final NBA season, and the Heat won't come to Detroit again unless the teams meet in the playoffs.
Heat: Miami was without G Josh Richardson (illness).
Pistons: G Ish Smith, who missed 19 games after a right adductor tear in December, left with adductor tightness in his third game back.
Heat: Visit the Chicago Bulls on Saturday night.
Pistons: Host the Sacramento Kings on Saturday night.
Follow Noah Trister at http://www.Twitter.com/noahtrister


If you politely remind that French person that you do not, in fact, eat meat…they will stare vacantly at you then probably feed you fish.
Berlin is the best. No matter who you are, what you're into, or what you want from a city break, Berlin's got you covered.
Almost ninety extra quid in your pocket, just for you, to fritter away however you please in the Eternal city.


text:
A Sake-Brewers' House Steeped in Tradition
A 200-year-old Japanese house has evolved for modern lifestyles but stays true to its heritage.
By Nancy Matsumoto
| Originally Published On September 13, 2017 | The Wall Street Journal
View of the Yamaguchi home and garden from the 180-year-old brewery, known for its Niwa No Uguisu brand of sake. According to tradition, the home is sited on the same lot as the family brewery. The family dates back 11 generations in the town Kurume, located in Fukuoka Prefecture on Japan's southwestern island of Kyushu.
Ben Weller for The Wall Street Journal
Tetsuo Yamaguchi's home is located just steps from the "office," a sake brewery founded by his family 180 years ago in the Japanese city of Kurume.
And like the fermented-rice beverage, the Yamaguchi home is steeped in tradition. The family's presence in Kurume, Kyushu, dates back to 1737 and the home to about 1800. That's when Rishichi Yamaguchi, a rice distributor and banker, had the home erected by local craftsmen. Back in its 19th-century heyday, the traditional, cedar-beamed house bustled with domestic and commercial activity.
Sited on the same lot as the brewery, five of its 30 rooms were used to billet sake-brewery workers, their extended families and live-in help. Five kitchens kept both family and staff fed. "There were a lot of kids and grandparents," says Tetsuo Yamaguchi, the 11th-generation heir.
Now, just Mr. Yamaguchi, his wife and two children, and his mother, Reiko, live there. Only five of the original 15 bedrooms remain, the rest converted for other uses. In the late 1960s, when Reiko came to the home as a new bride, westernizing old Japanese homes was in vogue: exposed roof beams would be concealed with drop ceilings, tatami-matted floors and earthen walls were covered.
The Yamaguchi family, however, kept its Japanese-style decor. (Today, by contrast, families with traditional homes "want to treasure them and keep them as they are," says Mr. Yamaguchi, who is 48 years old.)
More: Tequila Titan Lists Plaza Hotel Penthouse for $34.95M
Where most traditional Japanese homes have just one rough-hewn central pillar, or hashira, Mr. Yamaguchi proudly notes his home's five cedar pillars. These were traditionally erected first, followed by tie beams and the roof. The pillars are still considered objects of beauty—proof of the carpenter's craftsmanship. Polished to a high gloss, they are a focal point of the main tatami-matted sitting/dining room.
In homes with more than one hashira, the pillars had to be spaced widely enough apart so that if the area flooded, boats could navigate through the home and around the pillars. Their symbolic significance is contained in another name for them: daikoku bashira, meaning "head of the household," or "the person who supports the family structure."
The largest pillared room hosts formal occasions, such as the dinners for 50 that the Yamaguchis hold occasionally for guests and clients. But when the family is alone, they gravitate to the kitchen. There, Mr. Yamaguchi points out the family's cherished 100-year-old wood-burning stove. Concessions to the modern age go only as far as an electric rice cooker, says Reiko, who is famous throughout the region for her expertise in culinary arts and crafts.
She has perfected the art of cooking over the many geothermal vents in the area, dehydrates and preserves food, and produces a line of her own artisanal and disaster-relief food products. Reiko, who is 72 years old, is also renowned for her skills as a quilt designer and teacher. It was a craft she picked up as a new bride, she says, wanting to offer something "hand-crafted and from the heart" as traditional New Year's gifts to clients and distributors. "They were not popular," she says wryly. "People wanted department-store wrapped gifts."
More: Vineyard Dreams: Owning One of These Elite Properties Has to Be a 'Love Affair'
Mr. Yamaguchi says he doesn't know how many sake-brewers' houses remain in Japan's Fukuoka Prefecture, just one of the many regions in Japan that produce top-quality sake. There are very few, he ventures, that are still home to three generations, as his is.
Old sake brewery houses like his "are very much in demand," he says, sometimes for dismantling and rebuilding elsewhere, or to be plundered for prized "old wood" to incorporate into new construction. Mr. Yamaguchi says he has been offered large sums for his home, offers he declines because of his belief that "in Japan, when homes are over 100 years old, there are gods that dwell in them, and family ancestors have left their mark." He adds, "You can't exchange gods for money."
The only time sake-brewery homes come up for sale, he adds, is when the brewery itself ceases to operate—a common occurrence across Japan as the overall sake market shrinks even as global appetite for premium sake rises.
More: Japanese Billionaire Developer Selling Trump International Residence for $29.5M
The Yamaguchis have no plans to move from their small craft brewery, Niwa No Uguisu, named after the nightingales that once flitted about the courtyard. Here, the family produces 20 different kinds of small-batch sake using locally grown rice and spring water.
Future renovations are in the offing, although limited to making the home more user friendly. One plan is to have dedicated areas where shoes do not have to be shed—still the norm in Japanese homes and even inside the brewery, where street shoes are traded for sanitized rubber work boots.
"As much as possible," says Mr. Yamaguchi, "we want to hang on to traditional ways, and preserve this space."
JAPAN INVESTMENT INCOME SINGLE FAMILY HOME DESIGN LIFESTYLE
The Luxury Way to Live with Multiple Generations
This Week in Celebrity Homes: Larry King, Charlie Sheen
Week in Review: Larry King, London and the Latest Technology

redpajama_set_name: RedPajamaCommonCrawl


text:
Drugs made him kill
THIS angelic looking boy is drug-fuelled killer Kevin Fell, jailed along with fellow heroin addict Paul Green for the murder of David Stretch.
ECHO crime reporter GREGG FRAY speaks to the mother of heroin addict Kevin Fell who was jailed for life yesterday for the murder of David Stretch.
It would have been impossible to predict that the bright, sporty teenager would turn into a monster.
But his life hit a downward spiral when he turned to heroin. Years later he was desperate enough to punch, kick and stamp production manager Mr Stretch to death.
Fell, 32, and Green, 30, were jailed for life yesterday after being found guilty of murdering the 38-year-old during a burglary at his flat in Dale Street.
The pair pounced as they were disturbed by Mr Stretch. They beat him unconscious, dragged him into his bathroom and stamped on his head and neck until he died.
Today, Kevin Fell's mother Maria Hughes told how her son had been driven to murder by his heroin addiction.
She said: "When he was not on drugs, he was a completely different person, gifted in sports, intelligent.
"He had problems in his youth and turned to drugs and I have seen him turn. It has all gone to waste.
"He has tried and tried to get off it, but he has never had any proper help in Liverpool.
"There has to be more to stop some other drug addict doing something like this in the future."
Mrs Hughes, 52, added: "There is not a day goes by when I do not think of Mr Stretch's family.
"Can you imagine how they feel? And I had to go to court with them, knowing what my son had done to their son."
It was in the early hours of June 6 when Fell went with Green to the victim's flat in the exclusive Imperial Chambers complex.
Green had been there a couple of nights before after Mr Stretch, a homosexual, invited him. But realising Green was a crook, Mr Stretch threw him out.
The Lancaster University graduate was asleep when his "guest" returned with Fell.
He awoke to find the pair inside, looking for spoils to fund their heroin habits.
Det Supt Julieanne Wallace-Jones, who led the police investigation, said: "Mr Stretch was subjected to a very violent, prolonged attack."
A post mortem revealed he had received 54 injuries.
Mr Stretch's hands were behind his back as if they had been tied and a piece of cord was found nearby. Fell had stuffed a towel in his mouth to stop him screaming.
The flat was turned into a blood bath.
Fell and Green stole a television, stereo, mobile phone and #400 from the dead man.
Some 16 hours later, the scene was discovered after Mr Stretch failed to turn up for work at Liverpool's Domino UK Ltd.
His friends, John and Pauline Sweeney, found his body.
But in the meantime, Green had returned to the flat to steal more.
Mrs Wallace-Jones said: "The callousness of that act is beyond comprehension.
"I think he went back into the murder scene and untied David before stealing more property."
A number of items were found packed in bags and suitcases, ready to be collected later.
The pair were caught by police days later because Fell gave himself up after seeing an article in the ECHO. Detectives learned that Green had tried with little success to sell Mr Stretch's property.
Mr Jones said police found a disposable camera in Fell's room showing pictures of his victim on holiday with friends.
Mrs Wallace-Jones said: "Kevin Fell did surrender and showed some remorse for his actions. Paul Green never showed any remorse."


text:
Home > Free Essays > Philosophy > Philosophers > Socrates' Conception of Law and Justice
Socrates' Conception of Law and Justice Essay
Socrates' philosophy had a great influence on shifting thinking from basic scientific principles to matters that would satisfy the soul. Plato, one of his students, recorded many of Socrates' teachings. Socrates was born in Athens. This is the place where he lived and where he came up with most of his ideas. A great philosopher based his conception of justice on the principle: "The man who is good is just".
We will write a custom Essay on Socrates' Conception of Law and Justice specifically for you
Socrates advocated the idea that justice was good, and that meant that injustice was equal to evil. Furthermore, he emphasized that good was a natural deed and not what man thinks he needs. In addition, he said that a person's nature was an inner self that needed fulfillment, thus the desire to do good was natural.
Providing the explanation of relationship between good and justice, Socrates presented the example of an ill seeking treatment, and who gets a cure and, is finally happy. He also gives the example of another man, who is completely healthy and is, therefore, happier. The point he makes here is that justice is the cure for evil, and that a man who never commits an evil deed do not need to be punished, and thus, happier than a man punished for his misdeeds (Vlastos 300).
Socrates explains the role of justice in man's life by stating that men should do harm to enemies when they are evil, and be just to those who are good. He, however, does not accept this chain of thoughts, as, according to his belief, doing harm to others makes more harm to ourselves.
This was the beginning of the concept that individual should not harm anyone, even his enemies. Socrates also explains that men fall into pleasures of doing harm to those who harm them instead of being just. Summing up his idea of justice, Socrates declares that to be a poor man who is just is better than being a rich man with wealth acquired through injustice, because injustice taints the soul.
In the Crito, there is a dialogue between Socrates and Crito in Socrates' prison cell. Socrates was awaiting for his execution, but Crito notes Socrates' peacefulness, his calm way, and his lack of fear in front of the face of the death. This leads to a debate, because Crito assisted Socrates' escape, and he argues that accepting death would be a great victory of his enemies. He also adds that Socrates was responsible for the education of young people and could not leave them behind as orphans.
In his response, Socrates insists that reason will guide his decisions unlike the masses that are dependent on random acts as a guide. He asks Crito what the laws say about his escape, and he proceeds to state that the Laws say that a resident's position in reference to the municipality was like a child in reference to the parent, or like a slave to his master.
He explains that he made a deal with the Laws by remaining in the city and benefiting from it, and that he could not now condemn it on the basis that he was unjustly accused. He further states that the Laws argue that he accepted to obey the law by remaining in Athens after having attained maturity and raised a family within the city walls. Socrates tells Crito that he does not agree with the Law's argument, but asks if they should accept it, and Crito says that they should. This brings the debate, and then Socrates is executed.
We can sum up Socrates' conception of law and justice in the Crito, and the Apology as the understanding of what is good means, and that accepting law as justice is important because we accept the law that governs us, and by residing in the law's jurisdiction, we are subjected to its implementation.
Vlastos, Gregory. Socrates: Ironist and Moral Philosopher. United States of America: Cambridge University Press, 1991.
This essay on Socrates' Conception of Law and Justice was written and submitted by your fellow student. You are free to use it for research and reference purposes in order to write your own paper; however, you must cite it accordingly.
Socrates Main Idea Epicureanism and Stoicism Comparison
Need a custom Essay sample written from scratch by
Select a citation style:
IvyPanda. (2018, November 5). Socrates' Conception of Law and Justice. Retrieved from https://ivypanda.com/essays/socrates-conception-of-law-and-justice/
"Socrates' Conception of Law and Justice." IvyPanda, 5 Nov. 2018, ivypanda.com/essays/socrates-conception-of-law-and-justice/.
1. IvyPanda. "Socrates' Conception of Law and Justice." November 5, 2018. https://ivypanda.com/essays/socrates-conception-of-law-and-justice/.
IvyPanda. "Socrates' Conception of Law and Justice." November 5, 2018. https://ivypanda.com/essays/socrates-conception-of-law-and-justice/.
IvyPanda. 2018. "Socrates' Conception of Law and Justice." November 5, 2018. https://ivypanda.com/essays/socrates-conception-of-law-and-justice/.
IvyPanda. (2018) 'Socrates' Conception of Law and Justice'. 5 November.
Plato's dialogue Crito
"Crito" by Plato - Politics and Philosophy
"The last Days of Socrates" by Plato
Views of Philosophy
History of Western Civilization
The Dialog "Crito" by Socrates
The Biography of Socrates
Ancient Greek Philosophy: Socrates and Plato Comparison
Thoreau, Socrates, and Civil Disobedience - Compare and Contrast Essay
St Augustine's Philosophy
Greek Philosopher Socrates
Cartesian Dualism
Philosophical Suicide
Epicurus' perception of pleasure and justice
Philosophy	Philosophers
Plato's dialogue Crito "Crito" by Plato - Politics and Philosophy "The last Days of Socrates" by Plato Views of Philosophy History of Western Civilization The Dialog "Crito" by Socrates Social and Political Philosophy
Pss... Stuck with your
assignment? 😱
Pss... Stuck with your assignment? 😱
Do you need an essay to be done?
What type of assignment 📝 do you need?
How many pages (words) do you need?
What's your deadline? ⏰ Let's see if we can help you!
1p 275w
4p 1100w


Industrial food processing equipment designed for professional kitchens, commercial food manufacturing facilities, restaurants, chocolate manufacturers, and catering companies.
AMC Chocolate PU Belt Conveyor Cooling Tunnel 108" x 23" x 33"
Beverage Can Cooler Refrigerator with Glass Door 70 Can Capacity 2.4 cu.ft.
FT-4 Ice Cream Stainless Refrigerator Freezer 2.8 cu.ft.
AMC Chocolate PU Belt Conveyor Cooling Tunnel Belt Width 15.7"


These sessions run on Sunday mornings during the Spring and start at 9am.They are for those Y&J who have completed at least 4 sessions of Saturday Improvers, can competently sail a triangular course and want to start racing.
Experienced club racers contribute to these sessions to help keep the costs down so we don't need to hire in a Race Coach.The session will comprise of a series of short races, all with advice and encouragement.A series prize is awarded at the Y&J Laying Up Supper party in October.The club boats are available to hire for these sessions via the on-line booking system.
Kickstarters are encouraged to join in the club racing immediately afterwards to put the practice into play.To help with this, club boats hire is for the entire day when you book and pay for a club boat for Kickstarter (but please don't book it if you aren't coming to Kickstarter as we don't have enough boats to go round).Please be reassured that regular club racers are expected to support and encourage Kickstarters in the club racing and will often offer advice and feedback either at the time, or afterwards when everyone has returned to shore.Don't be afraid to ask questions either, it's the only way to learn!
This series runs in the autumn and is designed as a catch-up session for Y&J who have progressed through the scheme during the summer months and are ready to move on to racing.It is also open to those Y&J who are participated in the earlier Kickstarter series as well as possibly open events at other clubs during the summer months.
The format is exactly the same as for Kickstarter, and again, we award prizes at the Laying Up Supper in October.
The club benefits from the RYA's Youth & Junior development scheme by receiving free coaching for Youth & Junior sailors each year.To obtain this free training, the club needs to actively support the annual Zone Championships held each September by sending as many Y&J sailors to the event as possible as well as having a good turnout at the training itself!
Please see the website, emails and noticeboards for dates for these sessions.This is the only external event that the club boats are available for, normally club boats remain at Ripon SC but to get maximum benefit from the Zone Championships, the club boats are available for use in the overall interests of the overall club.


text:
Tony Bakshi
Articles by Tony Bakshi (54)
Aboubakare '11 hits top of Brown record books
February 18, 2011	0 comments
Bianca Aboubakare '11 walked on the court a Women's tennis player last Saturday. She walked off it a school record-holder. With a straight-set win, 6-4, 6-0, over Alison Rauh of Davidson College, Aboubakare clinched her 85th career singles victory, breaking a Brown women's tennis record set nearly 12 years ago by Saranga Sangakkara '99. Aboubakare — partnered with Jessica Harrow '14 — also notched her 72nd doubles win on the same day and now needs just one more victory to take sole possession of the career doubles mark. For her day of record performances, The Herald has named Aboubakare Athlete of the Week.
W. icers endure winless stretch
The women's hockey team has struggled mightily over the past two months, compiling a 0-8-1 record. The Bears (2-14-3, 1-8-3 ECAC) scored only seven goals over the course of nine games, though five have come in the past two games — losses at St. Lawrence University (12-11-2, 7-6-0) and Clarkson University (9-13-3, 6-6-1).
M. soccer scores upset in NCAA
The No. 22 men's soccer team has made it to the NCAA tournament Sweet 16 after defeating the No. 9 University of Connecticut in a thrilling game that went to a penalty shootout. The Bears won the shootout, 7-6, after battling the Huskies to a 1-1 deadlock in the 110 minutes of regulation and overtime play.
Football halts two-game losing streak
The football team bounced back from two straight conference losses to grab a 35-28 comeback victory against the Big Green on Saturday afternoon.
W. soccer falls to Bulldogs in season's final game
The women's soccer team bid farewell to the class of 2011 and wrapped up its season on a chilly Saturday afternoon at Stevenson Field, dropping a 2-1 game to Yale.
Czech it out: hockey player looks for gold
Most student athletes at Brown have to carefully balance their schoolwork and the meetings, practices and road trips that make up Division I athletics.
Computer science tops in academic violations last year
Forty-two students were cited with potential violations of the Academic Code last academic year — with nearly 70 percent of the cases coming from the Department of Computer Science.
M. tennis sees twist in season opener
September 23, 2010	0 comments
The men's tennis team hosted the Northeast Intercollegiate last weekend in its first tournament of the fall season.
Ten new faces set to take field for women's soccer
After a class of eight seniors graduated last fall, women's soccer Head Coach Phil Pincince admits he does not quite know what to expect from his fresh-faced squad in the upcoming season.
What to watch: September
August 30, 2010	0 comments
Fear not, first-years. While you may not be attending a sports-crazed university, there are still games to watch, underdogs to root for and stars to admire at Brown. Below, a rundown of key September home games that the Class of 2014 will want to attend:


I advocate strongly for my clients, helping them to traverse buying and selling with the confidence that they are being represented by a professional who will put their needs first. You need someone informed, experienced and honest on your side for such an important life event.
With a Master's Degree in Mass Communications and over 8 years of successful digital marketing experience under my belt, you can rest assured that I will expertly market your home to a well-targeted audience and use analytics to drive strategy giving your listing maximum exposure for a competitive edge!
También puedo atender clientes en español.


Here you can read about my favorite TV-series. In the future I hope to have time to write about movies and other interesting stuff.
First of all, I want you to check out the Internet Movie Database: www.us.imdb.com. It is the biggest, best, most award-winning movie site on the planet!
To see my list of favourite TV-series, go to the link below. The other page about my favourite movies is still not made.
Meanwhile feel free to check out my Facebook for a list of movies that I like. Actually my Facebook is more up to date on favourite TV-series as well.


text:
Peace or 'we will continue to fight': Taliban
US-Taliban peace talks collapsed earlier this month as a deal seemed imminent to end America's longest war. File photo
As Afghans await the results of a presidential election roiled by Taliban threats, the government used its platform at the UN General Assembly on Monday to tell the insurgents: "Join us in peace, or we will continue to fight."
Afghanistan was not the only country sending a message: North Korea had one for the United States, saying it was up to Washington whether now-stalled nuclear negotiations "become a window of opportunity or an occasion that will hasten the crisis."
Taliban attack kills at least 11 policemen: Afghan officials
Afghan protesters claim US strikes kill 5 civilians in east
And even in the final hour of this year's UN gathering of world leaders, Iran and Saudi Arabia traded barbs sharpened by a recent missile and drone strike on major Saudi oil facilities.
Monday's speeches wrapped up a meeting marked by global worries over the rising tensions in the Persian Gulf region , the changing climate and the very future of the idea of large-scale international cooperation that the UN represents.
As General Assembly President Tijjani Muhammad-Bande put it in his closing remarks, "The world will not survive for long unless we cultivate the give-and-take spirit" of multilateralism.
Afghan security forces prepare to counter any action from Taliban. File photo
Afghanistan's national security adviser, Hamdullah Mohib, spoke two days after his countrymen voted in a presidential election in which hundreds of polling centers weren't opened because the country couldn't secure them against the Taliban. The militants control or hold sway over roughly half the country and warned voters not to go to the polls.
Results of the elections aren't due for weeks.
Mohib trumpeted the democratic commitment of Afghans who voted despite the threats — some despite having had fingers cut off by the Taliban during prior elections, he noted.
In a country where a new generation of leaders has grown up in wartime, "the opportunities afforded to us through the gains of the past 20 years have allowed us to change hope into something much more powerful — belief," Mobib said.
"We believe in our abilities to bring about the peace we have hoped for all our lives."
Afghan flag waves near blast site in Kabul. File photo
The path is far from clear. US-Taliban peace talks collapsed earlier this month as a deal seemed imminent to end America's longest war. It began in 2001 as a US effort to dislodge Afghanistan's then-ruling Taliban for harboring Al Qaeda leader and 9/11 mastermind Osama Bin Laden.
The Afghan government had been sidelined in the talks; the Taliban refused to talk directly with an administration the insurgents see as a US puppet.
Taliban Afghanistan Fight US United Nations
Afghan foes resume talks for peace
Stakes are high for the talks which follow a week of US-Taliban negotiations with both sides eyeing a resolution to the bloody 18-year conflict.
Afghan President Ghani says now is the time for peace
The Taliban have steadfastly refused to discuss peace with Ghani, whom they consider a US stooge heading an illegitimate regime.
US envoy, Ghani push 'intra-Afghan' talks: Palace
Their meeting came during a marathon multi-country tour by Khalilzad, who is to visit Qatar — the usual venue for talks with the Taliban.
Afghan president promises to free 175 Taliban prisoners ahead of Ramadan
Ghani said the message of the five-day gathering was clear: "Afghans want peace" and offered a ceasefire, though he stressed it would not be unilateral. In the statement on Friday, the Taliban rejected a ceasefire, saying attacks will continue during Ramadan but said "fighters are very careful of civilians during any operation."
Meet the Emirati man who caught a huge shark weighing 350kg in Fujairah
It is not clear how he caught the shark. Gulf Today could not reach Suleiman for details about the shark. It is not clear how he caught the shark.
Sheikh Sultan inaugurates Sharjah's first geological park


text:
Vunipola brothers extend Saracens deals
24 December 2021, 6:17 am ·2-min read
New Saracens deal - England's Billy Vunipola (left) (AFP/Glyn KIRK)
England internationals Billy and Mako Vunipola have both signed new contracts at Saracens, it was announced Friday.
The brothers have been key figures in the success of the north London side during the past decade.
The English Premiership club did not reveal the length of either No 8 Billy or prop forward Mako's new contracts but Mark McCall, Saracens' director of rugby, said: "Everyone involved with Saracens will be thrilled that Mako and Billy have chosen to extend their time at the club.
"In their own unique ways, they have been instrumental in how we have grown and progressed and have been key figures in the success the club has enjoyed."
McCall added: "Mako is a world-class operator, with an incredible skill set and an innate understanding of the game. His competitive spirit and leadership have helped drive standards within the group and he has the desire and determination to take his own game and that of the team to new levels in the years ahead.
"Billy's level of performance for nearly a decade at the club has been staggering and he has demonstrated great resilience and perseverance to overcome a number of serious injury setbacks over that time.
"He is highly influential on and off the field and has a great feel for what the group needs at any given moment.
"We are grateful to Mako and Billy for the loyalty they have shown to the club."
Billy, who has made 135 appearances for Saracens since joining from Wasps in 2013, has won four Premiership titles and three European crowns during his time with the club.
The 29-year-old, at his best a dynamic force in open play, has won 61 caps for England and also scored a try in Saracens' 2019 European Cup final win over Leinster.
Mako has represented Saracens 187 times since joining in 2011.
The 30-year-old has won eight trophies during his time with the club.
He has also been capped 67 times by England and been selected for three British and Irish Lions tours, including this year's series against South Africa.
jdg/pi
KL mayor: Study on Federal Hill section to address possible future landslides, erosion
KUALA LUMPUR, Jan 18 — The Kuala Lumpur City Hall (DBKL) and its consultants were conducting an ongoing study on slope areas along the Lingkungan Negri Sembilan (LNS) at Federal Hill here, where...


text:
package org.wso2.carbon.apimgt.core.template;

import org.apache.commons.lang3.StringUtils;
import org.apache.velocity.VelocityContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.wso2.carbon.apimgt.core.template.dto.CompositeAPIEndpointDTO;
import org.wso2.carbon.apimgt.core.template.dto.TemplateBuilderDTO;

import java.util.List;

/**
 * Composite api context to generate the ballerina template
 */
public class CompositeAPIConfigContext extends ConfigContext {

    private ConfigContext configContext;
    private static final Logger log = LoggerFactory.getLogger(CompositeAPIConfigContext.class);
    private List<TemplateBuilderDTO> apiResources;
    private List<CompositeAPIEndpointDTO> compositeApiEndpoints;

    public CompositeAPIConfigContext(ConfigContext context, List<TemplateBuilderDTO> apiResources,
                                     List<CompositeAPIEndpointDTO> compositeApiEndpoints) {
        this.configContext = context;
        this.apiResources = apiResources;
        this.compositeApiEndpoints = compositeApiEndpoints;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void validate() throws APITemplateException {
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public VelocityContext getContext() {
        VelocityContext context = configContext.getContext();
        context.put("StringUtils", StringUtils.class);
        context.put("apiResources", this.apiResources);
        context.put("compositeApiEndpoints", this.compositeApiEndpoints);
        return context;
    }
}

redpajama_set_name: RedPajamaGithub


text:
Rimbey Spartans
Rimbey Renegades
Green party Leader Annamie Paul talks about the party's position on the government's speech from the throne during a news conference in Ottawa, Tuesday, Oct. 6, 2020. THE CANADIAN PRESS/Adrian Wyld
Liberals survive throne speech confidence vote, with support of NDP
The Greens also faulted the throne speech for failing to promise a guaranteed livable income
Prime Minister Justin Trudeau's minority Liberal government survived a confidence vote Tuesday on its throne speech, with crucial support from New Democrats.
The speech was approved by a vote of 177-152 in the House of Commons.
There was little suspense about the outcome of the vote, which could have plunged the country into an election had the Liberals lost it.
NDP Leader Jagmeet Singh had said his party would support the speech after winning some key changes to legislation last week setting up new benefits for workers left jobless or underemployed by the COVID-19 pandemic.
The Conservatives and Bloc Québécois had promised, almost immediately after the speech was delivered on Sept. 23, to vote against it. And newly minted Green Leader Annamie Paul announced earlier Tuesday that her party's three MPs would join them.
Paul said there were some very good things in the Liberals' agenda-setting speech last month but the Green party won't support it because it lacks a plan to protect those living in long-term care from COVID-19.
"I'm not just speaking of seniors. I'm also speaking of people with special needs and with disabilities," Paul said at a news conference on Parliament Hill.
"Those people are not protected."
Paul was to meet Prime Minister Justin Trudeau on Tuesday.
The Greens also faulted the throne speech for failing to promise a guaranteed livable income, which Paul said would make Canadians more resilient against economic shocks.
Paul said she was encouraged to hear many Liberal and New Democrat MPs talk about the need for a guaranteed basic income before the throne speech.
"They call it a guaranteed basic income, we call it livable income, because you need to be able to live on it and live in dignity," she said. "I had been looking for at least an indication that the government was going to be introducing a pilot program."
READ MORE: National child-care plan could help Canada rebound from COVID-induced economic crisis: prof
Paul said she was pleased to see the government extend emergency pandemic benefits to those who are most in need, but she said the plan still leaves out too many Canadians, including students.
The new leader said the Liberal government is also failing to demonstrate national and international leadership on climate change and the Green party could not support any plan that does not protect Canadians' future in this way.
"The climate emergency is as urgent today as it was when the pandemic hit," she said.
"I will remind the prime minister that we were obliged to increase our Paris (emission reduction) targets this year. It was a non-negotiable date."
This story was produced with the financial assistance of the Facebook and Canadian Press News Fellowship.
LiberalsThrone Speech
Canadian defence minister calls out China for 'hostage diplomacy'
International couples plan reunions in Canada under new travel exception
Explore Rimbey Review
Rimbey News
Rimbey Weather
Rimbey Classifieds
© 2021, Rimbey Review and Black Press Group Ltd.


The spirit of Christmas heals a sorrowing woodcarver's heart in this stunning 20th anniversary edition of a Kate Greenaway winning festive classic.
A stunning 20th anniversary edition of a Kate Greenaway winning Christmas classic, this is the poignant tale of Jonathan Toomey. Although Jonathan is the best woodcarver in the valley, he is always alone and never smiles. No one knows about the mementos of his lost wife and child that he keeps in an unopened drawer. But one early winter's day, a widow and her young son approach him with a gentle request – a request which leads to a joyful miracle. This moving, lyrical tale which unfolds with mastery, humour and emotional force, has been widely hailed by critics and readers as a true Christmas classic, and is gloriously illustrated by the inimitable P.J. Lynch.


Join me for a three night landscape masterclass in the stunning setting of the Cathedral Peak section of the Drakensberg this May.
This landscape oriented photography workshop takes place between the 8th and 11th May at Didima Camp - one of Ezemvelo Wildlife's premier camps. The workshop caters to photographers who have a little more than basic photography skills and are wanting to hone their landscape abilities. In particular the workshop concentrates on landscape composition, use of filters, HDR blending and star trails (if weather permits).
A strong focus of the workshop is in leader - photographer feedback, and various critique sessions are built into the workshop where participants are able to discuss images that are shot during the course of each day.
Itinerary (subject to change based on weather).
Thursday 8th May: Arrive midday. Short sit-down lunch and meet with the other participants. After lunch a short seminar then afternoon shoot above Didima Camp. Evening shoot (if weather permits after dinner).
Friday 9th: Early morning rise to reach river for sunrise shots. Return for breakfast and seminar session along with processing and critique. After lunch travel to the top of Mike's Pass for afternoon shoot high on the Lower Berg (driven by parks board). Return for dinner at Didima.
Saturday 10th: Optional early morning sunrise shoot followed by breakfast. We then head out to the Rainbow gorge to photograph waterfalls and forests. We take a packed lunch so as to maximise the shooting time. Returns after lunch to a processing session, dinner and a critique session.
Sunday 11th: Early morning sunrise shoot. Return for breakfast and to print out participants best image. Leave Cathedral Peak after 10am checkout.
Cost: R4300 per person sharing. Includes all park fees, accommodation, meals, tuition and one A3 Fine Art Print. Does not include beverages in the restaurant.
The chalets at Didima camp looking towards the Cathedral Peak range.


text:
#include "Render/Highlevel/GeometryGenerator.h"
#include "Render/3D/MeshUtils.h"

namespace DAVA
{
namespace GeometryGenerator
{
PolygonGroup* CreatePolygonGroup(uint32 vertexCount, uint32 indexCount, GeometryGenOptions genOptions)
{
    uint32 vertexFormat = EVF_VERTEX;

    if (genOptions.textureCoordsChannels == 1)
        vertexFormat |= EVF_TEXCOORD0;
    if (genOptions.textureCoordsChannels == 2)
        vertexFormat |= EVF_TEXCOORD1;
    if (genOptions.textureCoordsChannels == 3)
        vertexFormat |= EVF_TEXCOORD2;
    if (genOptions.textureCoordsChannels == 4)
        vertexFormat |= EVF_TEXCOORD3;

    if (genOptions.generateNormals)
        vertexFormat |= EVF_NORMAL;
    if (genOptions.generateTangents)
        vertexFormat |= EVF_TANGENT;
    if (genOptions.generateBinormals)
        vertexFormat |= EVF_BINORMAL;

    PolygonGroup* geometry = new PolygonGroup();
    geometry->AllocateData(vertexFormat, vertexCount, indexCount);
    return geometry;
}

PolygonGroup* GenerateUVSphere(const AABBox3& boundingBox, Map<FastName, float32> objectDimentions, GeometryGenOptions genOptions)
{
    DVASSERT(0, "Not implemented");
    return nullptr;
}

class IcoSphereGenerator
{
public:
    struct Triangle
    {
        uint32 vertex[3];
    };

    static const float32 X;
    static const float32 Z;
    static const float32 N;

    using Lookup = std::map<std::pair<uint32, uint32>, uint32>;

    uint32 VertexForEdge(Lookup& lookup,
                         Vector<Vector3>& vertices, uint32 first, uint32 second)
    {
        Lookup::key_type key(first, second);
        if (key.first > key.second)
            std::swap(key.first, key.second);

        auto inserted = lookup.insert({ key, static_cast<uint32>(vertices.size()) });
        if (inserted.second)
        {
            auto& edge0 = vertices[first];
            auto& edge1 = vertices[second];
            auto point = Normalize(edge0 + edge1);
            vertices.push_back(point);
        }

        return inserted.first->second;
    }

    Vector<Triangle> Subdivide(Vector<Vector3>& vertices,
                               Vector<Triangle> triangles)
    {
        Lookup lookup;
        Vector<Triangle> result;

        for (auto&& each : triangles)
        {
            std::array<uint32, 3> mid;
            for (int edge = 0; edge < 3; ++edge)
            {
                mid[edge] = VertexForEdge(lookup, vertices,
                                          each.vertex[edge], each.vertex[(edge + 1) % 3]);
            }

            result.push_back({ each.vertex[0], mid[0], mid[2] });
            result.push_back({ each.vertex[1], mid[1], mid[0] });
            result.push_back({ each.vertex[2], mid[2], mid[1] });
            result.push_back({ mid[0], mid[1], mid[2] });
        }

        return result;
    }

    void GenerateIcoSphere(uint32 subdivisionsCount, Vector<Vector3>& verticesOut, Vector<Triangle>& trianglesOut)
    {
        const Vector<Vector3> _vertices =
        {
          Vector3(-X, N, Z),
          Vector3(X, N, Z),
          Vector3(-X, N, -Z),
          Vector3(X, N, -Z),
          Vector3(N, Z, X),
          Vector3(N, Z, -X),
          Vector3(N, -Z, X),
          Vector3(N, -Z, -X),
          Vector3(Z, X, N),
          Vector3(-Z, X, N),
          Vector3(Z, -X, N),
          Vector3(-Z, -X, N)
        };

        const Vector<Triangle> _triangles =
        {
          { 1, 4, 0 }, { 4, 9, 0 }, { 4, 5, 9 }, { 8, 5, 4 }, { 1, 8, 4 },
          { 1, 10, 8 },
          { 10, 3, 8 },
          { 8, 3, 5 },
          { 3, 2, 5 },
          { 3, 7, 2 },
          { 3, 10, 7 },
          { 10, 6, 7 },
          { 6, 11, 7 },
          { 6, 0, 11 },
          { 6, 1, 0 },
          { 10, 1, 6 },
          { 11, 0, 9 },
          { 2, 11, 9 },
          { 5, 2, 9 },
          { 11, 2, 7 }

          //            {0,4,1},{0,9,4},{9,5,4},{4,5,8},{4,8,1},
          //            {8,10,1},{8,3,10},{5,3,8},{5,2,3},{2,7,3},
          //            {7,10,3},{7,6,10},{7,11,6},{11,0,6},{0,1,6},
          //            {6,1,10},{9,0,11},{9,11,2},{9,2,5},{7,2,11}
        };

        Vector<Vector3> vertices = _vertices;
        Vector<Triangle> triangles = _triangles;

        for (uint32 i = 0; i < subdivisionsCount; ++i)
        {
            triangles = Subdivide(vertices, triangles);
        }

        AABBox3 boundingBox;
        for (const Vector3& v : vertices)
        {
            boundingBox.AddPoint(v);
        }

        verticesOut = vertices;
        trianglesOut = triangles;
        return;
    }
};

const float32 IcoSphereGenerator::X = .525731112119133606f;
const float32 IcoSphereGenerator::Z = .850650808352039932f;
const float32 IcoSphereGenerator::N = 0.f;

PolygonGroup* GenerateIcoSphere(const AABBox3& boundingBox, Map<FastName, float32> objectDimentions, GeometryGenOptions genOptions)
{
    IcoSphereGenerator icosphereGen;
    Vector<Vector3> vertices;
    Vector<IcoSphereGenerator::Triangle> triangles;
    uint32 subdivisionCount = static_cast<uint32>(objectDimentions[FastName("subdivisionCount")]);
    icosphereGen.GenerateIcoSphere(subdivisionCount, vertices, triangles);

    uint32 vertexCount = static_cast<uint32>(vertices.size());
    uint32 indexCount = static_cast<uint32>(triangles.size() * 3);

    PolygonGroup* geometry = CreatePolygonGroup(vertexCount, indexCount, genOptions);

    for (uint32 vertexIndex = 0; vertexIndex < vertexCount; ++vertexIndex)
    {
        geometry->SetCoord(vertexIndex, boundingBox.min + (vertices[vertexIndex] * 0.5 + 0.5) * boundingBox.GetSize());

        if (genOptions.generateNormals)
        {
            Vector3 normal = Normalize(vertices[vertexIndex]) * ((genOptions.flipNormals) ? (-1.0f) : (1.0f));
            geometry->SetNormal(vertexIndex, normal);
        }

        for (uint32 tc = 0; tc < genOptions.textureCoordsChannels; ++tc)
        {
            Vector3& v = vertices[vertexIndex];
            float theta = acos(v.z / v.Length());
            float phi = atan2(v.x, v.y);
            geometry->SetTexcoord(tc, vertexIndex, Vector2(theta, phi));
        }
    }

    for (uint32 triIndex = 0; triIndex < indexCount / 3; ++triIndex)
    {
        geometry->SetIndex(triIndex * 3 + 0, triangles[triIndex].vertex[0]);
        geometry->SetIndex(triIndex * 3 + 1, triangles[triIndex].vertex[1]);
        geometry->SetIndex(triIndex * 3 + 2, triangles[triIndex].vertex[2]);
    }

    return geometry;
}

PolygonGroup* GenerateBox(const AABBox3& boundingBox, Map<FastName, float32> objectDimentions, GeometryGenOptions genOptions)
{
    uint32 segmentsOnX = static_cast<uint32>(objectDimentions[FastName("segments.x")]);
    uint32 segmentsOnY = static_cast<uint32>(objectDimentions[FastName("segments.y")]);
    uint32 segmentsOnZ = static_cast<uint32>(objectDimentions[FastName("segments.z")]);

    //
    uint32 vertexCount = (segmentsOnX + 1) * (segmentsOnY + 1) * 2 + (segmentsOnY + 1) * (segmentsOnZ + 1) * 2 + (segmentsOnZ + 1) * (segmentsOnX + 1) * 2;
    uint32 indexCount = (segmentsOnX) * (segmentsOnY)*4 * 3 + (segmentsOnY) * (segmentsOnZ)*4 * 3 + (segmentsOnZ) * (segmentsOnX)*4 * 3;

    PolygonGroup* geometry = CreatePolygonGroup(vertexCount, indexCount, genOptions);

    Vector3 step = boundingBox.GetSize() / Vector3(static_cast<float32>(segmentsOnX), static_cast<float32>(segmentsOnY), static_cast<float32>(segmentsOnZ));

    uint32 order[6][2] = { { 0, 1 }, { 0, 0 }, { 1, 0 }, { 0, 1 }, { 1, 0 }, { 1, 1 } };

    uint32 vertexIndex = 0;
    uint32 indIndex = 0;
    uint32 baseVertex = 0;
    for (uint32 side = 0; side < 2; ++side)
        for (uint32 sx = 0; sx < segmentsOnX + 1; ++sx)
            for (uint32 sy = 0; sy < segmentsOnY + 1; ++sy)
            {
                float32 fsx = static_cast<float32>(sx);
                float32 fsy = static_cast<float32>(sy);
                Vector3 point(
                boundingBox.min.x + fsx * step.x,
                boundingBox.min.y + fsy * step.y,
                (side == 0) ? (boundingBox.min.z) : (boundingBox.max.z));
                geometry->SetCoord(vertexIndex, point);
                if (genOptions.generateNormals)
                {
                    bool flip = (side == 1);
                    if (genOptions.flipNormals)
                        flip = !flip;
                    Vector3 normal = Vector3(0.0f, 0.0f, -1.0f) * ((flip) ? (1.0f) : (-1.0f));
                    geometry->SetNormal(vertexIndex, normal);
                }
                for (uint32 tc = 0; tc < genOptions.textureCoordsChannels; ++tc)
                {
                    geometry->SetTexcoord(tc, vertexIndex, Vector2(fsx / static_cast<float32>(segmentsOnX), fsy / static_cast<float32>(segmentsOnY)));
                }

                vertexIndex++;
                if (sx < segmentsOnX && sy < segmentsOnY)
                {
                    uint32 sideShift = side * (segmentsOnX + 1) * (segmentsOnY + 1);

                    for (uint32 tri = 0; tri < 6; ++tri)
                    {
                        uint32 finalIndex = (side)*tri + (1 - side) * (5 - tri);
                        geometry->SetIndex(indIndex++, baseVertex + sideShift + (sx + order[finalIndex][0]) * (segmentsOnY + 1) + (sy + order[finalIndex][1]));
                    }
                }
            }

    baseVertex += 2 * (segmentsOnX + 1) * (segmentsOnY + 1);

    for (uint32 side = 0; side < 2; ++side)
        for (uint32 sx = 0; sx < segmentsOnX + 1; ++sx)
            for (uint32 sz = 0; sz < segmentsOnZ + 1; ++sz)
            {
                float32 fsx = static_cast<float32>(sx);
                float32 fsz = static_cast<float32>(sz);

                Vector3 point(boundingBox.min.x + static_cast<float32>(sx) * step.x,
                              (side == 0) ? (boundingBox.min.y) : (boundingBox.max.y),
                              boundingBox.min.z + static_cast<float32>(sz) * step.z);
                geometry->SetCoord(vertexIndex, point);

                if (genOptions.generateNormals)
                {
                    bool flip = (side == 1);
                    if (genOptions.flipNormals)
                        flip = !flip;
                    Vector3 normal = Vector3(0.0f, -1.0f, 0.0f) * ((flip) ? (1.0f) : (-1.0f));
                    geometry->SetNormal(vertexIndex, normal);
                }
                for (uint32 tc = 0; tc < genOptions.textureCoordsChannels; ++tc)
                {
                    geometry->SetTexcoord(tc, vertexIndex, Vector2(fsx / static_cast<float32>(segmentsOnX), fsz / static_cast<float32>(segmentsOnZ)));
                }

                vertexIndex++;
                if (sx < segmentsOnX && sz < segmentsOnZ)
                {
                    uint32 sideShift = side * (segmentsOnX + 1) * (segmentsOnZ + 1);

                    for (uint32 tri = 0; tri < 6; ++tri)
                    {
                        uint32 finalIndex = (1 - side) * tri + (side) * (5 - tri);
                        geometry->SetIndex(indIndex++, baseVertex + sideShift + (sx + order[finalIndex][0]) * (segmentsOnZ + 1) + (sz + order[finalIndex][1]));
                    }
                }
            }

    baseVertex += 2 * (segmentsOnX + 1) * (segmentsOnZ + 1);

    for (uint32 side = 0; side < 2; ++side)
        for (uint32 sy = 0; sy < segmentsOnY + 1; ++sy)
            for (uint32 sz = 0; sz < segmentsOnZ + 1; ++sz)
            {
                float32 fsy = static_cast<float32>(sy);
                float32 fsz = static_cast<float32>(sz);
                Vector3 point((side == 0) ? (boundingBox.min.x) : (boundingBox.max.x),
                              boundingBox.min.y + fsy * step.y,
                              boundingBox.min.z + fsz * step.z);
                geometry->SetCoord(vertexIndex, point);
                if (genOptions.generateNormals)
                {
                    bool flip = (side == 1);
                    if (genOptions.flipNormals)
                        flip = !flip;
                    Vector3 normal = Vector3(1.0f, 0.0f, 0.0f) * ((flip) ? (1.0f) : (-1.0f));
                    geometry->SetNormal(vertexIndex, normal);
                }

                for (uint32 tc = 0; tc < genOptions.textureCoordsChannels; ++tc)
                {
                    geometry->SetTexcoord(tc, vertexIndex, Vector2(fsy / static_cast<float32>(segmentsOnY), fsz / static_cast<float32>(segmentsOnZ)));
                }

                vertexIndex++;

                if (sy < segmentsOnY && sz < segmentsOnZ)
                {
                    uint32 sideShift = side * (segmentsOnY + 1) * (segmentsOnZ + 1);

                    for (uint32 tri = 0; tri < 6; ++tri)
                    {
                        uint32 finalIndex = (side)*tri + (1 - side) * (5 - tri);
                        geometry->SetIndex(indIndex++, baseVertex + sideShift + (sy + order[finalIndex][0]) * (segmentsOnZ + 1) + (sz + order[finalIndex][1]));
                    }
                }
            }

    if (genOptions.generateTangents || genOptions.generateBinormals)
    {
        DVASSERT(genOptions.generateTangents == true);
        MeshUtils::RebuildMeshTangentSpace(geometry, genOptions.generateBinormals);
    }
    return geometry;
}

PolygonGroup* GenerateTorus(const AABBox3& boundingBox, Map<FastName, float32> objectDimentions, GeometryGenOptions genOptions)
{
    DVASSERT(0, "Not implemented");
    return nullptr;
}

PolygonGroup* GenerateGeometry(eGeometryBasicPrimitive geometryType, const AABBox3& boundingBox, Map<FastName, float32> objectDimentions, GeometryGenOptions genOptions)
{
    switch (geometryType)
    {
    case TYPE_BOX:
        return GenerateBox(boundingBox, objectDimentions, genOptions);
    case TYPE_ICO_SPHERE:
        return GenerateIcoSphere(boundingBox, objectDimentions, genOptions);
    /*/
    case TYPE_UV_SPHERE:
        return GenerateUVSphere(boundingBox, objectDimentions, genOptions);
    case TYPE_TORUS:
        return GenerateTorus(boundingBox, objectDimentions, genOptions);
    case TYPE_CYLINDER:
        return GenerateCylinder(boundingBox, objectDimentions, genOptions);
    // */
    default:
        DVASSERT(0, "Invalid geometry type specified, box will be generated.");
        return GenerateBox(boundingBox, objectDimentions, genOptions);
    };
}
};
};


Scotland's public sector requires strong leadership and clear priorities if it is to cope with the "most difficult financial conditions since devolution", according to Audit Scotland.
Over the next four years, public sector budgets in Scotland will drop from £29.2bn to £25.9bn – down 6% in 2011/12 and 11% in 2014/15, according a report published today (25 August 2011).
Audit Scotland says public bodies are facing increasing pressures and demands, such as Scotland's ageing population, the effects of the recent recession, and the public sector's maintenance backlog.
The report says pay restraint and reducing workforces are the most common approaches being taken by public bodies to reduce costs over the next few years, with many bodies already beginning to make staff cuts through recruitment freezes and voluntary redundancy schemes.
It encourages public bodies to focus on planning their budgets and workforces to enable them to focus on the sector's long-term financial sustainability and ensure effective public services in the future.
Commenting on the report's findings, BMA Scotland warned against politicians using the NHS "as a political football" amid falling budgets.
"It is important that in responding to the challenges, our politicians do not get bogged down by tribal politics and instead look to the dedicated professionals working across the public sector to help them to make the changes and achieve the savings without compromising on the service or care provided to the public," said Dr Brian Keighley, Chairman of BMA Scotland.
"It is disappointing that cuts to the NHS workforce and attacks on doctors' contracts have been identified by politicians as the way to navigate through these difficult financial times.
"While this might deliver some savings in the short term, this approach will have a long-term and persistent damaging impact on morale and patient care.


text:
You should avoid giving hummingbirds nectar with red dye in it, as it can be harmful.Photograph: Thomas Winz/Getty Images
Jun 14, 2020 7:00 AM
A Bird Feeder Will Bring You Joy
The world seems terrible these days. Let yourself soar above it all—at least for a moment—by making some new feathered friends.
It's hard to fight the feeling that, right now, everything is horrible. The world is battling a pandemic. Communities of color are still fighting police brutality and systemic racism. Millions are struggling to stay afloat during an economic meltdown. Protests are happening in all 50 states. Society is hanging by a thread—we can't even agree that we should all be wearing masks, a scientifically proven defense against the coronavirus.
Seeking respite from this vortex of madness, I've found myself relying heavily on an oasis of happiness for me: birds. But even that has been infected by the world's ugliness. While writing this, a video came out showing a white woman calling the police on a black man bird-watching in Central Park simply because he asked her to put her dog on a leash (Central Park's rule, not his). Turning to birding, a peaceful hobby, is not the end-all answer, I know. It won't change the world, stop the pandemic, or abolish racism, but it can still bring some joy. Since I'm mostly stuck in my second-floor apartment in a complex that, while it has trees, is lacking on outdoor relaxation space, my bird feeder allows me, even for just a few minutes a day, to forget what's happening out there besides what's right in front of my window.
Birb Lover
While cleaning out my bedroom post-college, I found a diary entry from my childhood that described whistling at the birds outside my window. As I read it many years later, I could remember how magical it felt when they whistled back to me, like I was, just for a moment, connected to them and not something they feared. I'm an animal lover through and through, but that moment set me up for a lifetime fascination with avians.
It was several years later that I finally got my own bird feeder. I had gone through a series of life changes with jobs, cities, and relationships, and I craved the bliss I got that day from the simple act of watching birds.
Owning a bird feeder as an adult has been incredible. While there are tons of options to choose from, a clear window feeder opens you up to another world of bird voyeurism. "Once you get a bird feeder, your life will change forever," Lauren D. Pharr, a graduate research assistant of fisheries, wildlife, and conservation biology at North Carolina State University, told me. I agree.
Birds are beautiful, mysterious creatures that can fly in unison, sing exquisite songs, and dance to attract prospective mates. New Yorkers love to hate pigeons, but I think they're stunning little weirdos who, despite possessing the gift of flight, sometimes choose to walk down the sidewalk like us neanderthals. For me, their cooing is an aural embodiment of peace.
Feeder Me
Video: Medea Giordano
I have yet to go on a bird-watching excursion, but Pharr (whose Instagram and Twitter are full of amazing bird content) assured me that watching from anywhere, even from inside my house, is considered birding. So if you, like me, are more of a homebody even when there aren't stay-at-home orders in place, you can still be a part of this quite beautiful community.
One great thing about a window feeder is that you can own one even if you live in an apartment with no outdoor space. Fifth-floor walkup? Stick them to windows you can't reach from outside, as long as you can safely remove the screen and stick the suction cups to the glass without leaning too far out several stories above ground.
Window feeders come in a few designs. There is the triangle, which mirrors that classic birdhouse feel, or arched double feeders. You can opt for a simple rectangle similar to the one that I own, though it may be time to upgrade, perhaps to one with wood pillars. Feeders that use suction cups are more reliable that you'd think and typically won't come down unless you pick at it with a fingernail. Just dampen the cups slightly before attaching and push them in place for at least 30 seconds to ensure they're stuck.
If you have the outdoor space, you can get cute houses that can be hung anywhere, hummingbird feeders, or suet baskets.
Photograph: Frank Blackburn/Getty Images
You can attract your favorite birds based on the seeds you choose. I consider cardinals specifically to be my familiar (whenever I see one it's as if they've just shared a secret with me), so I chose a mixed option that appeals to them as well as a number of other year-round birds. Pharr says that mixed seeds will also attract chickadees and tufted titmice, while suet cakes will bring woodpeckers.
Hummingbird feeders will give you a front-row seat to those enchanted creatures flapping their tiny wings and chasing each other. Red attracts them, so opt for a feeder that has red parts, but do not buy nectar that has been dyed red. "Although it has not been scientifically proven, red dyes are associated with causing harm to them," Pharr says. Many bird information sites agree. Pharr's blog post on hummingbirds offers helpful information, including how to easily make your own nectar with one part sugar and four parts water.
No matter the design or seeds used, be sure to keep the feeders clean. You don't want to increase the spread of avian diseases. Hummingbird feeders need to be cleaned frequently, as much as every two to three days. As Pharr explained, nectar attracts ants and other bugs, and feeders sitting in the sun will allow bacteria to grow, which can be lethal for hummingbirds. That's the opposite of what you're trying to do here. Use warm water and soap to scrub it, let it sit for a bit, then rinse it thoroughly with warm water. You should be periodically cleaning all feeders with a bleach-and-water solution to prevent bacterial growth, Pharr says. Be sure to thoroughly rinse the bleach away before refilling.
"Write down the birds that you see, and remember to be quiet and listen. Not only can you identify birds by sight, but with practice you can identify them by their song as well," Pharr says. You can also go the virtual route and keep track with the eBird app (available on iOS and Android), and use apps like Audubon Bird Guide (on iOS and Android) or Merlin Bird ID (on iOS and Android) to help identify your new feathered friends.
Give birding a try. You might even soar above your worries for a while.
More Great WIRED Stories
A virtual DJ, a drone, and an all-out Zoom wedding
Remote work has its perks, until you want a promotion
All the tools and tips you need to make bread at home
The confessions of Marcus Hutchins, the hacker who saved the internet
On the moon, astronaut pee will be a hot commodity
👁 Is the brain a useful model for AI? Plus: Get the latest AI news
🏃🏽♀ Want the best tools to get healthy? Check out our Gear team's picks for the best fitness trackers, running gear (including shoes and socks), and best headphones
Medea Giordano turned her shopping problem into a career as a product writer for WIRED. She covers a little bit of everything but loves health, beauty, and pet tech. Prior to WIRED, she was an assistant editor at Wirecutter and an assistant in the newsroom of The New York Times.... Read more
TopicsShoppingbirdsnatureanimal behaviorBackyard
The Best Fitness Trackers and Watches for Everyone
Whether you're skiing in the backcountry or trampolining in the backyard, we have an activity tracker for you.
How to (Finally) Break That Bad Habit
Neuroscientists and psychologists explain how to keep yourself on track—for good this time.
Saira Mueller
The Best Password Managers to Secure Your Digital Life
Keep your logins locked down with our favorite apps for PC, Mac, Android, iPhone, and web browsers.
You've Been Choosing Your Goals All Wrong
If you're about to set your resolutions for 2023, stop. According to experts, this is how to pick the right ones, build good habits, and stay motivated.
The 18 Best Wireless Headphones for Everyone
Whether you need workout earbuds or gaming over-ears, these WIRED-tested picks sound like a million bucks.
Parker Hall
WIRED Tested Miracle Hangover Cures. You're Welcome
Do "anti-hangover" supplements really work? With the sterling help of a UK rugby team, we raised a glass or five to find out.
Emily Peck
Whether you're biking to the office or schlepping a camera to a shoot, a laptop bag is your constant companion. These WIRED-reviewed packs do the job.
Don't bolt at the first sight of something that needs repair. You can nail most DIY jobs with the right gear and the right attitude.
Score 10% off select $899 XPS and Inspiron PCs - Dell coupon code
Best Buy Coupon
Deal of the Day! Grab as much as 50% off - Best Buy coupon
VistaPrint promo code
New customers can get 25% off with VistaPrint coupon code


turns strategy from a complicated, messy and often deeply confusing and divisive chore, to a systematic exercise that is actually rather simple, fun and effective – and teaches these vital skills to senior management groups worldwide.
How did a new strategy rejuvenate and reinvent a storied but aging brand?
When so many mergers go so wrong, how did P&G leverage its capabilities to create real value in its acquisition of Gillette?
How did the Bounty team effectively expand its playing field, reaching new consumers and creating new value?
How did P&G find itself in the fine fragrance business, and how did it build a plan to win there?


What's Behind India's Big Export Decline?
A long period of falling exports defies an easy explanation.
Starting from Dec 2014, the last ten months have seen a series of contractions in India's merchandise shipments, the last nine months by double-digit percentage points. Most analysts offer three explanations for the drops: the adverse effect of fall in crude prices; the relative appreciation of rupee against dollar vis-à-vis other currencies like the euro, real, rouble, or yuan; and slower growth in world trade.
Doubtless, the fall in crude prices has affected the dollar earnings from exports of refined petroleum products like diesel and petrol. Slower growth in world trade is an irrefutable reality that is bound to affect India's exports.
However, India's merchandise exports have been hovering around $300 billion for more than four years now, and that can't fully be explained by low crude prices or slowing global trade, given India's modest share of 1.7 percent of world exports.
Similarly, India's top competitor in its key exports such as steel, chemicals and textiles is China, and the yuan has fallen just 3 percent against dollar (compared to the rupee's 10 percent depreciation) since July 1, 2014.
It's not that only exports of petroleum products are declining, exports of other items have also trended lower. For example, in Sepember shipments of engineering goods were down 23 percent, apparel 12 percent, and gems and jewellery 19 percent. Thus, the declines in India's exports are quite broad-based.
The roots of India's declining exports are deeper, and have no short-term fix, such as letting the rupee depreciate against the dollar, simply because India's export basket is no longer as price elastic as it once was. Hence, currency depreciation would have to be truly dramatic to give a meaningful push to India's exports. That may not work, as other countrys are trying to do the same thing to capture an increasing share of sluggish global demand. And one little can be done about subdued crude prices, which are likely to persist for the foreseeable future. So what's holding up India's exports?
Despite all attempts at diversification, India's merchandise exports have a narrow base, with the top 20 categories accounting for 78 percent of the total. Even in top export categories like textiles, India is exporting low value commodities such as cotton yarn or apparel rather than technical textiles.
India's manufacturing exports are fast losing price competiveness, primarily because of poor logistics infrastructure compounded by a weak trade facilitation regime. India's over-dependence on road freight means that the cost of logistics as a percentage of GDP remains as high as 13-14 percent, compared with 7-8 percent in developed countries. Exports incentives in the range of 2 to 3 percent of export value can't fully compensate for the additional cost incurred on account of an inefficient trade infrastructure.
Nor is the failure of India's trade negotiators to get improved market access for the country's exports helping. As a result, the country's top exports are facing prohibitive tariff and non-tariff barriers in developing and emerging markets. In developed markets, where import tariffs are lower, India's exports are subject to all kinds of non-tariff barriers.
India has signed many trade pacts, more for geo-political reasons than commercial ones. The best example is the South Asian Free Trade Agreement, which has not resulted in any significant export gains despite the obvious logistical advantage and similar consumer preferences of the South Asian population.
The conclusion of an ASEAN-China FTA prompted India to hastily sign its on FTA with ASEAN, to protect its existing tariff advantages. Further, most of India's preferential trade agreements (PTAs) are shallow in terms of product coverage. For example, the India-Mercosur PTA doesn't include textiles and apparel items, which face prohibitive import duties of up to 35 percent.
India's pharmaceutical exports have not benefited from tariff reductions under the India-Japan CEPA, mainly because it's too cumbersome to deal with Japan's drug regulator. Japan allows the duty free import of apparel from India only if all of the raw materials used are of either Indian or Japanese origin, with an exception of 7 percent content by weight that can be sourced from third countries. No surprise, the utilization of India's PTAs for export promotion remains very low.
Strangely, India itself has not imposed any sourcing restrictions, even for sensitive items like textiles, granting unilateral duty free market access to countries like Bangladesh when restrictions would have helped its export of textile intermediates.
India's ill-conceived trade pacts have also resulted in inverted duty structure – high import duties on raw materials and intermediates, and lower duties on finished goods – that discourage the production and export of value-added items. Thus, apparel can be imported into India duty free while its raw material –manmade fibres attract an import duty of 10 percent. That makes no sense. Similarly, finished products such as laptops or cell phones can be imported more cheaply than all their parts (imported) separately because of duty inversion.
Fixing the trade regime should be the top priority for the government. However, that first calls for an admission that there is a problem with the way India has negotiated its trade deals. Facing criticism that India's FTAs are aiding imports rather than exports, the Ministry of Commerce claimed that FTAs are not being used much by traders and hence can't be responsible for rising imports. That begs the question: Why then did India spend so much time and energy negotiating them.
India is also going slow on trade pacts that could be immensely beneficial. Vietnam has already concluded an FTA with the largely untapped Eurasian Customs Union comprising Russia, Belarus and Kazakhstan, while India has been slow to move ahead with negotiations. Meanwhile, India has been unable to bridge differences blocking a free trade deal with EU, its biggest trading partner. Worse, in a move that revealed its immaturity in trade negotiation, India recently called off the trade talks with EU.
The recently concluded Trans-Pacific Partnership (TPP) – a trade bloc that has apparently held no interest for India – could be highly damaging for its exports. A tighter intellectual property regime may adversely affect India's export of generic medicines to TPP countries, the U.S. in particular. Given the high applied duties for apparel items in the U.S., the TPP will create a direct tariff disadvantage for India's apparel exporters (vis-à-vis Vietnam), which operate on margins as low as 6 percent.
The imposition of yarn forward (a highly restrictive sourcing rule) will not let India benefit indirectly from supplying textile intermediates to Vietnam. Moreover, TPP may lead to investment moving out of India to TPP countries, dealing another blow to India's future exports.
Reviving India's exports call for a carefully considered trade strategy and a much more radical policy mix than that which India could manage during the global boom years (2000-2007), when its exports surged 20 percent a year. Any takers?
Ritesh Kumar Singh is a corporate economic advisor based in Mumbai and former assistant director of the Finance Commission of India. The article expresses the author's personal views.
Should India Join the TPP?
In the wake of this week's historic agreement, what should India do now?
India Needs a Renaissance The CPTPP Trade Agreement Will Enter Into Force on December 30TPP, RCEP and the Liberal Economic OrderTPP's Regulatory Capitalism and China's Belt and Road ChallengesWhat Now for Economic Integration in the Asia-Pacific?


text:
$17.280.0100% 24H
Evangelos Marinakis on CPLP's bond listing at the Athens Stock Exchange: "Green investments are the future"
The CPLP fleet will increase to 22 vessels with acquisitions funded by the bond issue, including 15 Neo-Panamax container vessels, one Capesize bulk carrier and six LNG carriers
"We have been engaged with financial markets since 2007 when we were first listed in New York at the Nasdaq stock exchange. Since then we have paid more than $800 million in dividends to our investors" Evangelos Marinakis, the Founder and President of Capital Maritime & Trading Corp. said today, on the occasion of the listing of CPLP's bond on the Athens Stock Exchange (ATHEX).
Marinakis, a mainstay of Lloyd's List's annual 'Power 100' ranking of the most influential people in shipping worldwide for the past decade added:
"We successfully weathered very severe crises, always with respect towards our investors; we enjoy a very good reputation as we coped under very difficult conditions, succeeding not only to manage crises, but to also emerge victorious. We have, in fact, grown through these crises!"
In reference to the current political and economic situation in Greece, Capital's home base, Marinakis noted that "in Greece something is moving to the right direction, there is an increasing sense of confidence towards Greece and foreign investors come and invest in the country; that's why the Greek stock market and the Hellenic Capital Market Commission should be particularly diligent, especially with bonds, because all investors must feel confident and be protected. What is necessary, therefore, is for them to be particularly careful in terms of which companies are listed on the Greek stock exchange."
Marinakis, who continuously features among the most prominent global shipowners, promoting "green" energy and eco-friendly shipping investments, again referred to the specter of climate change, stressing that "green investments are the future … we saw the wildfires over the summer; climate conditions have changed, and the task of environmental protection is not only the responsibility of governments. We must all contribute; we need to invest in green energy because it is the future, the future of our children."
He added "we were very lucky to start this, together with Costamare a very reliable company with very good reputation" and he added "Let ATHEX continue to attract trustworthy companies with good reputation".
Referring specifically to the role of ocean-going shipping, he pointed out that "through shipping, millions of tons of cargo are transported, and there is evidence proving that this kind of transportation is much cleaner compared to others."
Socrates Lazaridis: It is an honor to list the CPLP bond on ATHEX
"It's an honor to list the CPLP bond on the ATHEX," said the CEO of the Athens Exchange group, Socrates Lazaridis, at the beginning of the event. He added that "it is a great pleasure to feature one of the most important shipping companies in the world on the Athens Stock Exchange." He noted that he hopes to continue this process for "the good of shipping and the stock market", thanking the company's management for listing the bond.
G. Kalogiratos: We thank Greek retail investors for the trust they've shown us
The CEO of CPLP, Mr. Gerasimos (Jerry) Kalogiratos, after thanking all those involved in the issue, said: "We are very satisfied with the over-subscription of the CPLP bond and our listing on the Athens Stock Exchange. We thank the Greek investing community for the trust they have shown us. The success of the transaction leaves an important legacy to our company but also to future issuers, as it shows the efficiency of the Greek capital markets and the lively interest of Greek investors in reliable companies. "CPLP has a long-term investment plan that focuses on technologically advanced ships with innovative elements, thus contributing to 'green' growth."
V. Lazarakou: CPLP is a company that adapts to the standards and demands of green growth.
The president of the Hellenic Capital Market Commission, Vasiliki Lazarakou, stressed the importance of listing trustworthy companies in the ATHEX, pointing out that CPLP comes to the Greek market after having won investor's trust internationally. Capital markets worldwide move towards the aim of integrating ESG criteria and CPLP is a company that adapts to the standards and demands of green growth, which is appreciated by the investor community, as is well proven by the over-subscription of the issue by more than five times.
K. Papastavrou: We welcome an important industry of the Greek economy
At the same time, Kalliopi Papastavrou, Director of the Securities & Issuance Division of the ATHEX Market Operations and Development Directorate, said, regarding the listing of the CPLP Shipping bond on the Greek Stock Exchange: "We welcome shipping, as an important industry of the Greek economy. The confidence it shows in the Greek capital markets is important. We hope that we will honor the confidence of the Greek shipowners in the Greek Stock Exchange ".
Beyond expectations
The code of the Bond is "CPLPB1". The starting price of the Company's Bonds is € 1,000 per Bond, i.e. 100% of its nominal value.
It is noted that the issuance of the bond, amounting to 150 million euros, set a record for bond subscription in Greece.
Registered offers exceeded 800 million euros, as announced by the main coordinators of the public offer, "PIRAEUS BANK", "ALPHA BANK" and "EUROXX SECURITIES SA" and Optima Bank.
In particular, the total valid demand expressed by investors, who participated in the Public Offering, amounted to 801.37 million euros, marking an overrun of the Issue by 5.3 times with very significant interest from private and institutional investors.
The record-setting success of the issue is due, in large part, to the significant commercial size of the broader Marinakis-owned shipping group. CPLP announced that it aims to use the 150 million euros raised to partly finance a "green" strategic business plan totaling 1.2 billion euros, in order to boost its fleet with state-of-the-art, environmentally-friendly LNG carriers, which also use LNG as propulsion fuel.
The technologically advanced newbuilding vessels are chartered on long-term contracts to major energy companies, such as BP, ENGIE and Cheniere.
The CPLP fleet will increase to 22 vessels with acquisitions funded by the bond issue, including 15 Neo-Panamax container vessels, one Capesize bulk carrier and six LNG carriers.
Ειδήσεις σήμερα Record-breaking over-subscription for CPLP bond issue
CPLP Shipping HoldingsEVANGELOS MARINAKIS
19.01.2022 | 15:32 Obrela Security – Acquisition of Encode cyber security company 19.01.2022 | 15:19 Κερδίζει έδαφος η κρουαζιέρα στη Θεσσαλονίκη 19.01.2022 | 15:17 Morgan Stanley – Καλύτερα από τα αναμενόμενα κέρδη χάρη στις απολαβές από τον κλάδο των M&A 19.01.2022 | 15:15 Υπουργείο Εργασίας – Τι απαντά στον ΣΥΡΙΖΑ για τις άδειες νόσησης λόγω Covid-19 19.01.2022 | 15:13 Σεργκέι Λαβρόφ – Ψυχρός, κυνικός και αφοσιωμένος στον Πούτιν 19.01.2022 | 15:02 Hellenic Shipowners Association – Postgraduate Scholarships of up to 10,000 euros
19.01.2022 | 14:57 Obrela Security – Εξαγορά της εταιρείας κυβερνοασφάλειας Encode 19.01.2022 | 14:56 Πολωνία – Επιστροφή σε τηλεργασία στο Δημόσιο εν μέσω έξαρσης κρουσμάτων 19.01.2022 | 14:45 Τζόνσον – Κρίσιμη η σημερινή μέρα με αποστασία και ανταρσία βουλευτών των Τόρις 19.01.2022 | 14:43 Γέλεν – Η Όμικρον δεν θα εκτροχιάσει την οικονομία 19.01.2022 | 14:43 Bonus malus 19.01.2022 | 14:30 Ενωση Ελλήνων Εφοπλιστών – Υποτροφίες μεταπυχιακών σπουδών έως 10.000 ευρώ
Πρόσφατα Άρθρα English Edition
English Edition | 19.01.2022 | 15:32
Obrela Security – Acquisition of Encode cyber security company
Greek Obrela Security Industries announced the acquisition of Encode, thus becoming one of the largest companies in the world in the market of Managed Detection and Response services.
Hellenic Shipowners Association – Postgraduate Scholarships of up to 10,000 euros
Five postgraduate scholarships in fields related to the shipping industry, have been announced again this year by the Hellenic Shipowners' Association
The six fighters took off from Istria, France, near Marseilles, and flew directly to Greece
The offer book for the new 10-year bond ha opened
The initial interest rate on the new Greek bond stood at 145 basis points plus the mid swap (44 points), ie 1.89%
Greek universities… go abroad
Joint "technology transfer office" from two leading universities in Greece and three research centers - Collaboration of the University of Athens with Harvard, Thessaloniki University with Columbia - Great cooperation with Athens Economics University, National Technical University of Athens, Democritus and two more research centers that join their scientific forces
The most common tricks today in the theft of deposits through e-banking
Domestic credit institutions have launched a major information campaign to prevent fraud through e-banking services.
IPTO – Applications for the IPTO talent program open 19 January
The program is aimed at qualified Electrical Engineers, qualified Mechanical Engineers and IT graduates, with minimal (up to two years) or no work experience.
Natural gas transmission system operator – Record year in 2021 for natural gas consumption
Domestic gas consumption increased by 10.87% reaching 69.96 million megawatt hours
ATHEX – In search of direction
The Greek stock market, although showing high nervousness, seems to want to raise buttresses in the uncertainty that prevails in the world markets
The yellow kiwi is coming to make a difference
The superiority of yellow kiwi also lie in its selling price, consequently providing a higher annual income for producers.
Αυξημένα κέρδη από την Morgan Stanley
Για εκπληκτική χρονιά έκανε λόγο ο πρόεδρος και διευθύνων σύμβουλος , Τζέιμς Γκόρμαν, καθώς τα συνολικά έσοδα του 2021 διαμορφώθηκαν στα 59,8 δισ. από 48,8 δισ. δολάρια το 2020
Ο διπλωμάτης που… ήρθε από το κρύο - Ποιος είναι ο Σεργκέι Λαβρόφ
Το «δεξί χέρι» του Πούτιν παίζει καθοριστικό ρόλο και στη νέα κρίση της Ουκρανίας, ενώ αποτελεί πρόσωπο-κλειδί στη διεθνή διπλωματία εδώ και δύο δεκαετίες
Λιμάνια | 19.01.2022 | 15:19
Κερδίζει έδαφος η κρουαζιέρα στη Θεσσαλονίκη
Αλματώδης είναι η ανάπτυξη της κρουαζιέρας στο λιμάνι της Θεσσαλονίκης σύμφωνα με τα στοιχεία από τον Οργανισμό Λιμένος Θεσσαλονίκης.


phpMyFAQ is a multilingual, completely database-driven FAQ-system. It supports various databases to store all data. phpMyFAQ also offers a multi-language Content Management-System with a WYSIWYG editor and an Image Manager, flexible multi-user support with user and group based permissions on categories and records, a wiki-like revision feature, a news system, user-tracking, language modules and more.


text:
Q: Detect Changes between two XML files using Python I'm working on a project where I need to detect changes in two XML files, generated at different times.
The XML files contain airport data, runways, obstacles etc. so a lot of nested information, and only a fraction of the airports in the file are relevant.
I've tried the xmldiff module but it takes a long time to run and obviously returns information not relevant to the airports I'm interested in.
I've decided to write a python script to extract only the airports I need from the XML's, and store the data in two separate dictionaries, I will then compare them and try to identify the changes.
Could anyone advise on whether this is the correct way to go about the problem? Any advice at all is much appreciated!
Thanks

A: Extracting the airports and saving them in a data structure that you can compare feels like a good way to approach the problem to me. Depending on how you handle duplicates you could think about using dictionaries (one key - multiple values) or sets (no duplicates).
Here is a pretty good explanation on how to compare the contents of two different sets.

redpajama_set_name: RedPajamaStackExchange


I love the Running Club because not only does it give us a chance as employees to live the Life Fitness model, but it establishes a bond with fellow workers that you don't get in any other environment. The lunch-time runs and races give people the chance to connect with fellow employees they might never have met from the other departments.
But, you don't have to work for a fitness equipment manufacturer to bring your workout to work.
1. Form your own running or walking club. Recruit some coworkers to start walking with you at lunch and work with HR to send out an email to your department or entire company with an invitation to join. Create cool t-shirts to make it feel more official.
2. Organize group exercise classes. Speak to your boss or HR department and find a space where you could hold Zumba or Pilates classes. At Life Fitness we're lucky enough to have former trainers on hand to help, but popping in an exercise video could be just as effective.
3. Register your team for a charity 5K. It's great for team building and you can hold each other accountable for training and preparation outside of work.
4.Get a stability ball or standing desk. Studies are showing that it's not just about the 1 hour of exercise anymore; it's about what you're doing for the other 23 hours of the day that has the biggest impact on your health.
5. Get up more! Print your papers at the printer further away from your desk and set an alarm every hour to do a lap around the floor above or below you.
If you want to take these tips a step further and learn more about formal corporate wellness programs, this Inc.com article has some good resources: How to Build a Wellness Program.


I love Jennifer L's layout featuring both of my favorite trends...how fun is that misted flower w/the journaling?!!
Megan Klauer uses a lot of mist here, but in such a fun whimsical way...love the misted clouds with the pen detail!
I love Chelseavn's funky style....she uses mist SO well!
What are your favorite trends? Any trends you're tired of seeing these days? I'd love to hear!
I love sewing, misting, punching, and bannering (had to keep up with the -ing. lol). They all add such wonderful detail!
I like the borders in the tops and/or corners of layouts.
Aw, thanks for showing a page I loved! I love the bright colors I'm seeing all over.
I love the trend towards honesty in journalling. I love seeing real pieces of peoples lives revealed through journalling and simple photos. I find it very inspiring.


text:
NASA mission extension enables first flybys of Jupiter's moons in 20 years
In a pair of mission extensions, NASA has cleared the way for more seismic observations on Mars with the robotic InSight lander and approved plans for the Juno spacecraft to alter its orbit and perform close flybys of Jupiter's icy moon Europa, Ganymede, and the volcanic moon Io.
NASA taps SpaceX's Falcon Heavy rocket to launch mission to metal asteroid
NASA has selected SpaceX's Falcon Heavy rocket to launch a robotic mission in July 2022 to explore Psyche, a metal-rich asteroid located between the orbits of Mars and Jupiter. The Psyche probe is NASA's first mission assigned to fly on SpaceX's heavy-lift launcher.
NASA to assess proposals for probes to Venus, moons of Jupiter and Neptune
NASA announced Thursday it will fund four concept studies for potential robotic missions to Venus, Jupiter's moon Io and Neptune's moon Triton ahead of a decision next year to approve up to two of the projects for launch in the mid-to-late 2020s.
SpaceX files protest of NASA's Lucy launch contract awarded to ULA
SpaceX has filed a protest challenging a nearly $150 million NASA contract awarded to United Launch Alliance last month to send a robotic asteroid probe into space.
ULA wins contract to launch NASA's Lucy mission to visit unexplored asteroids
NASA has selected United Launch Alliance's Atlas 5 rocket to dispatch the Lucy spacecraft on a mission from Cape Canaveral in October 2021 to fly by seven unexplored asteroids, including six objects locked in orbits leading and trailing Jupiter, where scientists expect swarms of miniature worlds could hold clues about the formation of the solar system.
NASA's InSight mission lands on Mars to study planet's hidden interior
NASA's InSight spacecraft plunged into the rarefied atmosphere of Mars at a speed of more than 12,000 mph Monday and braked to a gentle touchdown, setting the stage for a two-year surface mission to probe the planet's deep interior.
Live coverage: InSight probe lands on Mars
NASA's robotic InSight spacecraft, carrying a pair of European-built science instruments, successfully landed Monday on a broad, flat equatorial Martian plain named Elysium Planitia. Touchdown was confirmed at 2:54 p.m. EST (1954 GMT) to begin a science mission focused on studying the deep interior of Mars.
InSight tweaks trajectory to home in on Mars landing site
On the eve of its blazing entry into the Martian atmosphere, NASA's InSight spacecraft briefly pulsed its control jets Sunday to target a safe, flat landing zone near the planet's equator — the last in a series of trajectory correction maneuvers since the mission's launch in May.
InSight's entry, descent and landing timeline
NASA's InSight lander will fly from the outer edge of the Martian atmosphere at a speed of more than 12,000 mph to a controlled descent rate of 5 mph just above the red planet's surface in less than seven minutes.
Video: JPL's Rob Manning explains InSight's entry, descent and landing
JPL chief engineer Rob Manning, a veteran of Mars mission teams dating back to Mars Pathfinder more than two decades ago, describes how the InSight spacecraft will enter the Martian atmosphere and touch down on the red planet.


Class 2 National Insurance Contributions (NICs) are currently paid by self-employed taxpayers and members of partnerships if their annual profits exceed £6,025. Class 2 NICs are payable at a flat weekly rate currently, £2.85. Class 2 NICs count towards benefits such as the basic State Pension, the employment and support allowance, maternity allowance and bereavement benefits.
In last year's Autumn Statement, it was confirmed that Class 2 NICs will be abolished from April 2018. This measure was first announced at Budget 2016. Going forward the self-employed contributory benefit entitlement will be accessed through Class 3 and Class 4 NICs. Self-employed people with profits below the Small Profits Limit will be able to access contributory employment and support allowance through Class 3 NICs.
We have been told that provisions will be put in place to support self-employed individuals with low income levels. However, as things stand, Class 4 NICs are not payable until income reaches £8,164. If a self-employed person wants to protect their NIC contributions record they will have to pay voluntary Class 3 NICs. Class 3 NICs are currently chargeable at £14.25 a week, quite a significant increase from the current £2.85 per week Class 2 NIC payment.
Low-income self-employed persons can still top up their contributions record for 2017-18 by making Class 2 contributions.
The changes we have highlighted need to be considered, especially if you are approaching the State retirement age and you are uncertain if you have sufficient NIC contribution years to secure the full State Pension. If this is the case we can help you apply for a State Pension forecast. This will indicate how many years contributions you have made.


text:
Les Délices News
Les Délices welcomes new Executive Director: Laura Potter
Cleveland-based early music ensemble Les Délices is thrilled to welcome Laura Potter as its new Executive Director, effective January 1st, 2023. In the 14 years since its founding by Artistic Director Debra Nagy, Les Délices has developed a national reputation as...
16:24 / News & Reviews / Press
Press Release: LD escapes to an Enchanted Island
LES DÉLICES ESCAPES TO AN ENCHANTED ISLAND IN THREE PERFORMANCES, FEBRUARY 24-26, 2023 This February 24-26, the lush soundscapes of Rameau and Clérambault will transport you to a mystical island, where nymphs and muses play love games amid the rippling waves...
17:24 / Concert Series / News & Reviews
Review: Winds of Change
From ClevelandClassical.com: "Rarely is there a program title as accurate as Les Délices' "Winds of Change." The program embraced the new and different in a variety of ways — referencing both specific events, like the French and Haitian revolutions, and...
17:25 / Concert Series / News & Reviews / Press
Preview: Winds of Change
From "Les Delices transforms virtual 'Winds of Change' into live program with expansive message" by Zachary Lewis for Cleveland.com "CLEVELAND, Ohio – Clevelanders who join Les Delices for its "Wind of Change" program Oct. 21-23 may never hear French Baroque music...
17:33 / Uncategorized
Press Release: Debra Nagy wins Cleveland Art Prize
Debra Nagy, Artistic Director & founder of Les Délices, Awarded Cleveland Arts Prize 2022 September 16, 2022 - Les Délices founder and Artistic Director Debra Nagy has been awarded the 2022 Cleveland Arts Prize in the Mid-Career Artist category. This prestigious award is given...
18:46 / Artists / News & Reviews / Press
Preview: LD to open season with "The Highland Lassie"
"My luve is like a red red rose That's newly sprung in June; O my Luve's like the melodie That's sweetly play'd in tune; While these words are attributed to the Scottish bard Robert Burns, he was more accurately the compiler of the famous...
Press Release: Winds of Change
Inspired by the philosophies that sparked the French and Haitian Revolutions at the end of the 18th century, acclaimed Cleveland chamber ensemble Les Délices' presents Winds of Change in three performances Oct 21-23, 2022. Expanded by the participation of local choirs along with a...
Press Release: SalonEra Season 3
FOR IMMEDIATE RELEASE: Les Délices' award-winning web series SalonEra announces an exciting new direction for its third season. Treasured by a global audience of early music enthusiasts, each episode of SalonEra streams free and combines high-quality recordings with insights from an...
03:18 / News & Reviews / Press / SalonEra
Press Release: Special Performances of The Highland Lassie on Sept. 24th
Les Délices announces two special performances of The Highland Lassie on Saturday September 24th, 2022 at 4:00 pm and 7:30 pm at Cleveland's Historic Dunham Tavern. The Highland Lassie celebrates the permeable borders between folk song and art song, between country dance and cotillion. Truly, the...


text:
Q: test round-robin in kubernetes Context:
2 Nodes with 3 Pods
Node-1:Pod-A,Pod-B
Node-2:Pod-C
use NodePort to expose the service in my local virtual boxes(centos).
If I visit application by k8s service-clusterIP, I can see the round-robin is working among the 3 pods
If I visit application By Node-1, I didn't see the round-robin is working. only Pod-A is hit.
the round-robin is not working if access by Node IP? (the node have more than 1 pod)

10.144.39.* (company network)
192.168.*  k8s  network
Env:
Mac laptop
k8s cluster is hosted in the VM(3 instances:Master,Node-1,Node-2)
k8s clusters
Master
Node-1:Pod-A,Pod-B
Node-2:Pod-C
IP info:
Master 10.144.39.107
Node-1: 10.144.39.108  192.168.84.128
Node-2: 10.144.39.109  192.168.247.0
Testcases:
1.send request from Mac env
step:
wget -qO- http://10.144.39.108:1651 (node-2 with 2 pods)

Result:
Round-Robin:only hit the Pod-A

2.send reqeuset from the master/node-1/node-2 VM (Master server)
step:
wget -qO- http://10.144.39.108:1651 (node-2 with 2 pods)

Result:
Round-Robin: only hit the Pod-A,Pod-B

3.send request from the cluster inside:
steps:
1.kubectl exec busybox -it /bin/sh
2.wget -qO- http://10.144.39.108:31651
3.exit
Round-Robin:  hit the Pod-A,Pod-B,Pod-C