text:
Start - Smart Words
Basic Instructions & Examples:
Writing Personal Letters
Writing Business Letters
Choose a Letter Type:
Last Will
A short Guide for writing a Poem
Poetry is one of the most ancient forms of art in the world. It even predates writing. Ancient poems were handed down from one generation to the next orally. Only until a particular civilization is able to write a poem down are they actually put down on paper.
Probably the most basic way of writing a poem is by giving lines a rhyme and structuring them into verses. But a lot of poems today are written in unorthodox ways. But there are some things that make a poem different from the rest of forms of writing. Want to know about them? Read the guide on writing a poem below.
Play with your words. Alright, your mother told you not to play with your food. But she didn't say anything about playing with your words, right? There can be several meanings to a certain word and there could be more in a phrase or sentence. Play around them to your heart's delight.
Poems are meant to be read aloud. You should keep this in mind when writing your poem. While some words look good or witty on paper, they may sound lame or weak when you read them aloud.
Remember the basic rhyming poem? Rhyme can be hard or soft. Hard rhymes refer to those identical-sounding words while soft rhymes are those which are similar-sounding.
Check these Synonyms for Feelings for inspiration in love song lyrics. They can help you out find the right start, rhymes or mood for your poem. Use it for educational purpose.
Familiarize yourself with the different forms of poetry. Examples of which include the ode, sonnet, sestina, villanelle and the pantoum. Learning about them can give you a wider view of looking at poems in general and would help you be more creative in the pieces that you write.
While editing other written works can be done without reading them aloud, the opposite is true for poetry. If something sounds uncomfortable when it comes out of your tongue, you may consider changing it to create a better poem.
These basics instructions can be use for many different sort of poems like:
love poem
friendship poem
poem valentine
funny poem
birthday poem
poem romantic
child poem
inspirational poem


text:
Home/World/What is a Stryker Car? And why were they sent to Ukraine?
What is a Stryker Car? And why were they sent to Ukraine?
The Pentagon has announced it will send 90 Stryker armored combat vehicles to Ukraine, the first delivery of the multi-role eight-wheel weapon from the US military stockpile to foreign countries.
Strykers will be joined by 59 Bradley infantry fighting vehicles and other weapons as part of a $2.5 billion military aid package to Kiev. Combined with the 50 Bradleys announced for Ukraine on January 6, the package will provide Kiev with the equivalent of two armored brigades, according to a statement emailed to reporters on Wednesday night. Year.
According to the US Army, there are 18 different variants of the Stryker. Some were built primarily to move infantrymen in and out of battle, while others were designed to carry weapons such as 120mm mortars for fire support. Others carried medium and large weapons to shoot directly at the enemy with a 30mm cannon or even a larger 105mm gun.
The early Strykers were built with flat-bottomed hulls, which proved vulnerable to improvised bombs placed beneath them by Iraqi insurgents. In response, the Army has phased out those vehicles with newer Strykers equipped with V-shaped bottoms similar to those used on Mine Ambush Protected Vehicles, also known as MRAPs. .
It is not clear exactly what versions or versions will be made available to Ukraine.
Why were they created?
In the 1990s, U.S. Army leaders decided that the military needed a more mobile strike force that could travel anywhere in the world in just four days. That meant they needed a vehicle that was well armed and armored while still being relatively light and small enough to be carried by a C-130 cargo plane.
The Stryker was chosen as a vehicle the Army could build forces around. They first fought in Iraq in 2003.
How are they different from Bradley?
Strykers are less armored than Bradleys. And at 20 to 23.5 tons, they are much lighter than the Bradley, which can weigh up to 40 tons, according to a 2016 report by the Congressional Research Service.
While the Bradley rides on a track, providing excellent traction on uneven terrain, the eight-wheeled Stryker can still operate even if they are hit by bullets or shrapnel.
The Strykers are also much faster than the Bradleys, capable of reaching speeds of 60 miles per hour, according to a congressional report.
The Stryker can also be configured in a number of different variants, including some for engineer or ambulance use.
How will they be used in Ukraine?
The Pentagon's announcement on Thursday said 90 Strykers will also be supplied with 20 mine-rollers – wheeled sledges designed to be heavy enough to activate anti-vehicle mines and be propelled in front of armored vehicles with hoping to clear a safe path through the minefield.
As the war between Ukraine and Russia has evolved into a more static battle between entrenched soldiers protected by a belt of anti-tank mines, the Stryker's combination with mine wheelchairs and demolition equipment complements what what the Pentagon calls "obstacle clearance," indicates that the United States is providing Ukraine with specific capabilities designed to allow Kyiv's armed forces to disrupt Russian defenses.
Super Playback | The Silent Hill – Part 6
Netflix's 'Cobra Kai' ends with season 6 – The Hollywood Reporter
Indonesian teacher convicted of raping students for years
Brittney Griner prolonged detention in Russia
More mixed signals from Russia as Ukraine War enters sixth week
Brazil polarizes as Bolsonaro seeks re-election and Lula aims for return
Japan asks China to stop military exercises off Taiwan

redpajama_set_name: RedPajamaCommonCrawl


text:
The Sri Lanka Campaign is delighted to announce that we are expanding, and looking to hire our second member of staff.
Please find the advert below (also available to download here). The deadline for applications is Tuesday 30 July 2019.
Organisation The Sri Lanka Campaign for Peace and Justice
Position Deputy Campaign Director
Salary £20,000 pro rata (0.6 FTE). i.e. £12,000 per annum for 3 days per week, plus pension
Contract One year, with possibility of extension depending on successful fundraising
Leave 25 days paid annual leave pro rata
Hours Part-time (3 days/21 hours per week) with scope for flexible working arrangements
Location Central London (Embankment), with occasional national and international travel (including to Sri Lanka)
Reports to Director
The Sri Lanka Campaign for Peace and Justice is a multi-ethnic non-partisan organisation that aims to bring about a just and lasting peace in Sri Lanka based upon accountability and respect for human rights. We are a small but effective operation, currently employing just one full-time member of staff and drawing on the energy and talents of our network of volunteers. We are seeking an exceptional candidate to fill the role of Deputy Campaign Director.
The Deputy Campaign Director's role will be to support the Director across all aspects of the organisation's work, including communications, research, advocacy, fundraising, and volunteer management.
The ideal candidate will possess a good understanding of the human rights situation in Sri Lanka, the circumstances surrounding the civil war and its aftermath, and recent political dynamics in the country.
A strong administrative skill set is a must. But even more importantly, candidates should be passionate about the aims of the Campaign and possess the ability to communicate ideas in a persuasive and effective manner. The right candidate will be someone who is not just able to follow instructions, but who is also willing to take the initiative and develop their own ideas and projects in partnership with the Director.
Candidates will ideally have demonstrable experience of working on human rights issues in an ethnically or politically divided context, and of engaging with a broad range of stakeholders in a sensitive, thoughtful and respectful way. Demonstrable experience of running campaigns, conducting substantive human rights research, or undertaking community or grant fundraising, will be regarded as a significant plus – as will evidence of 'hands-on' skills, for example, in graphic or web design.
To keep abreast of the political and human rights situation in Sri Lanka
To oversee the development and maintenance of the Sri Lanka Campaign's blog and social media channels (including by commissioning, editing and writing articles)
To assist the Director in designing and delivering public campaigns, human rights research projects, and face-to-face advocacy work
To engage with our network of volunteers and supporters; instilling enthusiasm, and harnessing their energy and talents towards the fulfilment of our organisational objectives
To maintain our supporter and contact databases
To assist, where required, with the financial administration of the organisation, including managing budgets and payroll
To develop the organisation's fundraising strategy, including running fundraising appeals and drafting grant funding applications
Self-starter with strong project management skills, and the ability to prioritise and work to agreed deadlines, often with limited supervision
Exceptional written communications skills
High level of accuracy and attention to detail
An approach to organising which is inclusive and collaborative, and a proven ability to build relationships with a variety of different people
A demonstrable passion for human rights, and a commitment to a pluralist non-partisan approach to their advancement in the Sri Lankan context
A strong understanding of the human rights situation in Sri Lanka (NB: detailed knowledge of the politics and history of the country is not a requirement. But a willingness to get up to speed quickly is essential)
A relevant academic qualification (for example, in law, human rights or peacebuilding)
Experience of human rights campaigning, research, or face-to-face advocacy work
Experience of working within a small non-profit organisation
Experience of writing blog pieces, articles or supporter emails
Experience of using social media in a professional capacity
An understanding of the workings of the UN human rights system, and especially the Human Rights Council
Experience of working with volunteers
Skills in graphic design, web editing and design (WordPress), or SEO
The ability to start work in September 2019
To apply, please email a copy of your CV (2 pages max, including details of two references), along with a cover letter (500 words max) explaining why you are a good fit for the role, to Richard Gowing at info@srilankacampaign.org. Please mark the subject line as follows: [Your Name] – Deputy Campaign Director Application
The deadline for applications is 11.30pm Tuesday 30 July 2019 (BST). Interviews are planned to be held in central London in mid-August and will involve a short written assessment and administrative test. Due to our limited organisational capacity, we regret that only those applicants who are shortlisted for interview will be contacted and offered feedback.
As an equal opportunities employer, we welcome applications from all suitably qualified persons regardless of their race, ethnicity, disability, religious belief, sexual orientation, gender identity, or age. Applicants must have the right to work in the UK.
For any questions about the role or the application process, please feel free to contact us at the email listed above.


text:
Articles relating to: hacking
Losing Campaign Managers Form Anti-Election Hacking Team at Harvard University
by Accuracy In Media on August 28, 2017
Losing campaign managers for two electoral campaigns formed a joint effort to combat election hacking. Mitt Romney's 2012 campaign manager, Matt Rhoades, and Hillary Clinton's manager, Robby Mook, have formed a group to combat possible election hacking by the likes of Russia. The project will be headquartered at Harvard University under the name "Defending Digital […]
McDonald's Twitter Account Hacked, Anti-Trump Tweet Sent Out
by Spencer Irvine on March 18, 2017
McDonald's, a fast-food restaurant chain, claimed it was hacked by an external party this past week when its corporate Twitter account sent out an anti-Trump tweet on Twitter. You can see the tweet below:
Oops: CNN Used Video Game Footage in Segment about Hacking
by Spencer Irvine on January 4, 2017
CNN used an image from the popular game series known as Fallout, a game where the player is in a post-apocalyptic world after nuclear war hits the United States homeland. That's embarrassing, CNN: In a video from December 30, 2016, CNN used footage from Fallout's hacking mini-game as B-roll to illustrate reports of recent, real-life hacks […]
Washington Post Erroneously Claimed Russians Hacked US Electrical Grid
In an article published on New Year's Eve, the Washington Post claimed that the Russians had hacked into the U.S. electrical grid via a Vermont utility company. However, the Post was wrong in their assumption. Their correction is telling and you can read it for yourself: Editor's Note: An earlier version of this story incorrectly said […]
Very Ironic: Obama Administration Blames Liberal Media for Ignoring Russia Hacking and Focusing on Leaked Documents
From NBC News' piece questioning why Obama wasn't strong with Russia on hacking allegations: An administration official, in turn, criticized the news media for focusing more on the leaked documents than on the Russian covert operation that hacked into political entities to steal the documents. Administration officials pointed out that the day the intelligence assessment […]
Why did Obama Wait Until Now to get Tough on Russia?
Interesting narrative not talked about by the liberal media: Why didn't Obama take a stronger stance before against Russia in Crimea and Ukraine, and choose now to make a stand less than month before he is out of office? It appears that Obama is only trying to be tough on Russia now that the election […]
Hacker Released Democrats' Internal Document Showing Preference for Hillary Clinton Before Primaries
by Spencer Irvine on June 20, 2016
This news doesn't really shock anyone, but the issue is whether this document is legitimate.
Russian Government Hackers Got Into DNC's Database
Holy (crap)! That's quite a hack: Russian government hackers penetrated the computer network of the Democratic National Committee and gained access to the entire database of opposition research on GOP presidential candidate Donald Trump, according to committee officials and security experts who responded to the breach. The intruders so thoroughly compromised the DNC's system that […]
Myspace Still Exists? Yup and It Got Hacked
by Spencer Irvine on June 2, 2016
360 million user email addresses and passwords were stolen, Myspace reported.
"It was Easy" to Breach Hillary Clinton's Email Server, says Hacker
by Spencer Irvine on May 5, 2016
Guccifer, a Romanian hacker, claimed he hacked Hillary Clinton's secret email server multiple times.
8/28/2017 - Losing Campaign Managers Form Anti-Election Hacking Team at Harvard University
3/18/2017 - McDonald's Twitter Account Hacked, Anti-Trump Tweet Sent Out
1/4/2017 - Oops: CNN Used Video Game Footage in Segment about Hacking
1/3/2017 - Washington Post Erroneously Claimed Russians Hacked US Electrical Grid
12/19/2016 - Very Ironic: Obama Administration Blames Liberal Media for Ignoring Russia Hacking and Focusing on Leaked Documents
12/19/2016 - Why did Obama Wait Until Now to get Tough on Russia?
6/20/2016 - Hacker Released Democrats' Internal Document Showing Preference for Hillary Clinton Before Primaries
6/15/2016 - Russian Government Hackers Got Into DNC's Database
6/2/2016 - Myspace Still Exists? Yup and It Got Hacked
5/5/2016 - "It was Easy" to Breach Hillary Clinton's Email Server, says Hacker
4/27/2016 - Pro-ISIS Hacker Group Claims They Stole Information about State Dept Employees
4/22/2016 - FBI Paid Hackers Over $1 Million to Access San Bernardino Terrorist's iPhone
11/18/2015 - Obama Administration Won't Testify about the OPM Hack
11/9/2015 - Internal State Dept Docs: Hillary Clinton's Blackberry Vulnerable to Hacks
10/20/2015 - FBI Investigating Claims of CIA Director's AOL Email Account being Hacked
10/14/2015 - Hillary Clinton's Private Email Server was Vulnerable to Hackers
10/1/2015 - Russian-Based Hackers Tried to Access Hillary Clinton's Emails
9/25/2015 - ObamaCare Website is Gold for ID Thieves
9/24/2015 - OPM Admits 5.6 Million had Fingerprint Data Stolen
9/18/2015 - Hillary Clinton Won't Admit the Security Problems with Her Secret, Private E-mail Server
9/16/2015 - China is Indexing Stolen Fed Employee Data like Facebook
9/6/2015 - Conservative Think Tank Heritage Foundation Hacked
7/30/2015 - Planned Parenthood Claimed They were Hacked, but It Feels Like a PR Stunt
7/28/2015 - Hackers Take on Planned Parenthood's Database
7/17/2015 - Chinese Hackers Used American Servers in Cyberattack
7/12/2015 - Feds Fail to Protect Sensitive Info in ObamaCare Enrollment
6/17/2015 - Obama claims White House is Considering All Options after OPM Hacking Attack from China
6/15/2015 - State Dept has No Record of Hillary Clinton getting IT Training
6/15/2015 - Chinese Hackers may have gotten between 7 to 14 Million Files
6/12/2015 - China Hacks U.S. Feds Database, Takes Most of Fed Employee Info
6/6/2015 - Hacking Blame Game: Obama White House Blames Congress for Hacking
6/5/2015 - China Blamed for Hacking U.S. Federal Workers Database
5/28/2015 - IRS Hackers traced to Russia
5/21/2015 - Health Insurer CareFirst Hacked back in 2014
4/24/2015 - Dept of Defense Chief Admits Network was Hacked by Russians
4/22/2015 - State Department says There Have Been Hacking Attacks on their Network
3/14/2015 - Hackers find Huge Security Holes in Hillary Clinton's E-mail Server
2/19/2015 - Google: FBI's Expanded Hacking Powers a "Monumental" Violation
12/28/2014 - North Korea blames U.S. for Internet Outages
12/24/2014 - North Korea's Sony Hack made this the Age of the Bully
5/24/2014 - EBay Passwords Hacked, 145 Million Users Affected
1/4/2014 - Syrian Hackers claimed they hacked Skype accounts


On Nov. 6, the U.S. Supreme Court was scheduled to hear oral arguments in Town of Greece, N.Y. vs. Galloway - a case that revisits the volatile issue of public prayers in government settings.
It's been 30 years since the Court upheld the constitutionality of legislative prayers in Marsh vs. Chambers, citing the "unbroken history" of such prayers dating back to the founding of the nation.
According to the majority opinion in Marsh, legislatures, city councils and other government bodies may open their sessions with prayer, as long as the prayer isn't used to "proselytize or advance any one, or to disparage any other, faith or belief."
But rather than ending the fight over public prayers, the Court's murky guidance in Marsh has caused widespread confusion and conflict over who gets to pray and what they can say. What has been ruled legal by a lower court in one part of the country has been struck down as illegal in another.
Now a case involving the "prayer policy" of the Town Board in Greece, N.Y., gives the justices an opportunity to clear up the mess created by Marsh.
At issue is the town's practice of soliciting volunteers to be the "chaplain of the month," free to determine the content of his or her prayers. In a decade of prayer giving at Town Board meetings, Christian clergy have offered the vast majority of the prayers - frequently "in the name of Christ."
Does Greece's prayer policy result in government endorsement of one religion over others, as critics charge? Or does the fact that prayer-givers are volunteers make the prayers constitutional, even if most of the prayers are from one faith? Do legislative prayers need to be "non-sectarian" to avoid proselytizing?
After the 2nd Circuit Court of Appeals ruled that the policy violates the Establishment clause of the First Amendment, the town appealed to the Supreme Court.
Short of overturning Marsh and ruling all legislative prayers unconstitutional (a very unlikely outcome), none of the answers the High Court can give to these questions will end the battle over legislative prayer.
That's because the fight isn't really about prayer; it's about power and politics.
Most of the litigation challenging legislative prayer comes out of communities where members of the majority faith are determined to keep the practice. Although they must allow people of other religions to participate or risk losing the prayers, they often find creative ways to ensure that most of the prayers reflect their faith.
For proponents of legislative prayer, the issue seems to be less about the act of prayer and more about the symbolic act of re-affirming America's dependence on the God of the Bible. For these Americans, ending legislative prayer would be tantamount to re-defining the nation.
If the issue were really about providing opportunities for authentic prayer, the solution would be creating a moment of silence where each person could pray (or not) as conscience dictates. The answer would not be government-sponsored prayers that either impose one God on everyone or offer "universal" supplications to no God in particular.
People of faith (any and all faiths) who care about authentic prayer should be first in line to get the government out of the prayer business. The integrity and autonomy of religion is undermined when government officials determine who gets to pray and who does not - or when prayers are "proselytizing" and when they are not.
No matter how the Supreme Court re-draws the guidelines for government-sponsored prayer, the problem remains that government entanglement with prayer always has been and always will be a threat to religious freedom and a recipe for conflict and division.


text:
sport-centrum
Current Sports News
Archive for July 11, 2020
Uzi Style Airsoft Guns
Developed in Israel as a personal defense weapon, the Uzi is now one of the most recognizable firearms in the world. It has been used by such organizations as the US Secret Service, where it was their standard submachine gun until about the 1990s. The Uzi has also been heavily associated with criminals. This is likely more of a Hollywood illusion, as Uzis are quite rare and extremely expensive. In warfare the Uzi has proven extremely effective at clearing out bunkers and as a PDW for tank crews. Over 2 billion dollars worth of Uzis have been sold to over 90 different countries since it was developed. The Uzi was designed in the late 1940s by Uziel Gal of the Israel Defense Forces. Apparently he did not want the weapon named after him but his requests were ignored. It was selected for use by the IDF in 1951. In 1954 it was issued to Special Forces, and by 1956 was being issued for general use. It stayed in general service till the 1980s and was still being used until 2003. The Uzi is one of only a few automatic weapons that house the magazine in the pistol grip. The receivers are simply made from stamped sheet metal and were therefore cheaper to manufacture. The main Uzi variants are the full sized Uzi, the Mini-Uzi, Micro-Uzi and recently the Uzi-Pro. The Mini-Uzi is lighter and smaller than the standard Uzi, and the Micro-Uzi is lighter and smaller still. The Uzi-Pro was introduced in 2010 and is essentially a redesigned Micro-Uzi. It is made entirely from polymer to reduce weight and features three Picatinny rails.
The grip has also been redesigned to better incorporate two-handed firing. Civilian versions of the standard, Mini and Micro Uzi were produced with longer barrel lengths to make them legal for civilian sales in the US. Uzis have long been a favorite in airsoft, most likely because of the image that is associated with them. They are also very easy to wield one-handed, making them great side arms for snipers. Also they can be fired akimbo which on second thought is probably the real reason for their popularity in airsoft. A number of companies produce Uzi replicas in all price ranges. They are particularly popular "cheapy" guns, and 1:5 scale full auto replicas are very common. High quality ones are produced as well, however, and many of these are gas blowback which makes them even more of a riot.
One such GBB Uzi is the HFC Assault Eagle. It is constructed mostly from ABS but with metal components and fires around 350 FPS using .2g BBs and green gas. It features a folding stock and comes packaged with a 40 round magazine which is not hi-cap and does not have to be wound. The best feature of the HFC Assault Eagle is the gigantic, almost cartoonish silencer. It doesn't do anything except look sweet, but man does it look sweet. The HFC Assault eagle is very affordable and makes a great first airsoft gun for Uzi enthusiasts. Another blowback Uzi comes from Tactical Force, this one powered by C02. The TF11 is technically based on the Mac 10, a US designed weapon that is similar to the Mini-Uzi but is open bolt. For airsoft purposes they may as well be the same thing. This Mac 10 features full metal construction and a 50 round magazine. There is an adjustable rear sight and the Tactical Force TF11 Mac 10 fires around 300 FPS using .2g BBs.
Roof Racks For All 4×4 Offroad Occasions
Popular Places To Go Inland Skimboarding
Rock Climbing Techniques
Second Time On Jumping Stilts First Time To The Hospital
Kayaking ? Can You Take On The Rapids In Just Your One-man Boat?
© 2022 All Rights Reserved by sport-centrum. Theme Developed by Theme Rally. Powered by WordPress.


Nestled in amongst the idyllic Chilterns scenery in Ley Hill stands The Swan; a delightfully quaint Grade II listed pub which provides an enticing range of traditional food and ale to punters.
As you go inside, you can really feel the charm and history of the place. The pub originates from the 1520s, when it was three cottages.
Lots of the original features were left after a big refurbishment back in 2011. Low wooden beams, an inglenook fireplace and a cast iron stove give it a very traditional and cosy feel, whilst being light and airy.
Owners Nigel and Sam Byatt are celebrating ten years in charge after leaving their office jobs in the city to run The Swan and it seems like this is what they were born to do. They are both incredibly warm and welcoming and treat all their customers like friends.
My boyfriend Stephen and I went along to The Swan on a warm Friday evening and were seated in the snug, a lovely, private little booth – perfectly placed in the corner of the pub, but conveniently near the bar. It can seat around six to eight people comfortably, so it's a great place to enjoy the company of friends and family in peace.
The pub stocks such a vast range of beer, cider, wine and champagne that it was tough to choose, but I opted for a San Valentino Pinot Grigio (£5 for 175ml).
On to the food and for starters, I went for the homemade soup of the day (£5.25) which was roasted red pepper and tomato, served with a generous helping of crusty bread and butter. I never usually choose soup at restaurants, but I was quite impressed with this one. The soup was very creamy and tasty and the portion was very generous.
Stephen chose the black pudding with sautéed new potatoes, crispy bacon and a poached egg (£6.95). Everything was fresh, tasty and hot and the egg was poached perfectly.
For mains, there is a wide range of different meals to suit every taste, including fillet of sea bream, sirloin steak and tiger and Atlantic prawn linguini as well as pub classics like ham, egg and chips or beef burger.
I went for the belly of pork, slow cooked and incredibly tender with crackling, fondant potato, seasonal vegetables, apple puree and a red wine jus (£14.75). The huge slab of crackling was crunchy and full of flavour and added texture to the meal. Black pepper on the pork gave it a welcome kick. The vegetables were just soft enough and the apple puree was a refreshingly sweet accompaniment. I also noticed there was a very generous amount of jus compared to what you usually get, which was nice to see.
Stephen opted for confit duck leg with dauphinoise potato, bok choi and a plum sauce (£14.50). The duck was juicy and fell off the bone and was complemented by the rich, flavoursome plum sauce. The dauphinoise potato was creamy and seasoned well with garlic; definitely the best I have tasted.
The dessert list, which includes vanilla crème brulee with fresh berries and sticky toffee and date pudding, was too delectable to miss out on so I chose the dark and white chocolate fondant with berries and vanilla ice cream (£6.50).
This dessert is a chocolate lover's absolute dream. Fondant is very difficult to get right and the sponge was perhaps a little overdone for my liking, but the centre was just as it should be – when I cut into it, warm chocolate came oozing out. Accompanied by soft vanilla ice cream and tangy compote with berries, the dessert is very well balanced.
Each fondant is cooked to order so there may be a waiting time of up to 15 minutes for it, but it was worth the wait.
Stephen chose strawberry mess with strawberries, ice cream, crushed meringue and fruit compote (£5.75). It was presented nicely and had lots of fresh fruit and creamy vanilla ice cream.
Overall, The Swan has a lovely charm about it and I couldn't fault Nigel and Sam and their team for their dedication to the pub and their visitors.
Every ingredient was good quality, fresh, homemade and sourced locally where possible. The presentation on each plate was very impressive; more reminiscent of a top restaurant instead of a village pub.
And I would definitely recommend you book the snug if you can; the cosy, private space made the delicious meal even more special.
Visit www.swanleyhill.com to view the menu or call 01494 783075 to book a table.


Google sites search not working-how to fix?
If your Google sites search is not working, you could try the following steps to get your google sites search up and running.
IMPORTANT NOTE !! : Please make sure your site is live and published before following the steps below. you can do this by using the publish button on the right hand top corner.
Before following the steps below make sure your google site is live . If not, our search engine crawlers will not be able to crawl and index your website pages. Open your website in a incognito browser and check if it is live. Here is a example of non live google site.
To publish, login to your google sites search login and click on this publish button (if not our search engine will not be able to access your site pages for crawling and indexing).
Enter your google sites website URL. (!!!!! do not enter your edit URL for example – https://sites.google.com/s/1lH7Y6QaaxZkii9IELSV_i__pD7wek96j/p/10SjUsqw2dCjTexmps3SXRiRIXy8OmDSS/edit) This is a wrong URL to enter.
Now you will get the correct website URL (example- https://sites.google.com/view/muthalis-site/home).
Enter your sitemap URL if you have one.
Choose your nearest data center based on your location.
Wait for your website crawl to complete.
Login to your google sites login https://sites.google.com/.
Paste the code from your expertrec control panel in the embed code place and click next and insert.


Proseal Cheshire now offer driveway design and installation at a very affordable price.
If you are looking to improve the appearance of your property then having a brand new driveway is a great way to make a fantastic first impression. We are able to transform your driveway with either a block paved driveway or new smooth tarmac driveway.
Block paving is a great, low cost solution to help transform the front or back of your house and is very durable and easy to clean.
Tarmac driveways are quick to install and easuy to mantain and last for many many years without having to be replaced, making them a great choice for your home.
We have been installing new driveways across Cheshire and Staffordshire for many years and have lots of happy customers, so why not give us a call and we can come to your home for a free no obligation quotation.


text:
Swedenborg and Life Recap: Do Spirits Play a Role in Addiction? – 2/13/17
Watch full episode here!
When you "get a craving" for something, where do you get it from? It's not like a piece of clothing you buy at a store—it's a thought that invades your head.
According to eighteenth-century scientist and mystic Emanuel Swedenborg, the origins of that thought can be traced. In this episode, host Curtis Childs and featured guests explore his spiritual writings about how spirits can influence our mental states.
But before we start, here is an important caveat: This episode talks about addiction, and this discussion of the spiritual factors involved is meant to supplement current scientific research, not replace it. If you or someone you know is struggling with these issues, please don't neglect proper medical or psychological treatment!
Who Really Wants What You Want?
Swedenborg learned that spirits have a part in everything, even the way we think, eat, and dress.
Everything whatever that exists in a person's mental life and feelings, evil as well as good, has spirits, and societies of spirits, who exactly interact with it. . . . So there is not anything mental or emotional in a human being that does not have societies of spirits that indulge and favor it. (Spiritual Experiences §2169)
We don't sense these spirits around us. Neither did Swedenborg, until he began to have experiences of the spiritual world, and what he saw convinced him that we are all constantly in contact with spirits. One of the sub-categories he identified was the "spirits of bodily desires," who would cause him to crave very specific things: cheese, for example, or baths.
This can cause a problem when a craving for something small becomes a major goal in life. Swedenborg observed spirits gathering around people and feeding their obsessions with getting things they didn't really need. That kind of preoccupation might even lead us to choose a path in life, such as a career choice or a partner, that isn't what's best for us spiritually. Curtis uses a visual aid to demonstrate how these spirits gather around us.
These spirits can become much more dangerous when feeding darker impulses.
Spiritual Pushers
Therapist Jerry Marzinsky joins to discuss his experiences with people suffering from addiction disorders and how these experiences seemed to echo Swedenborg's discoveries. Many of the people he worked with actually described spirits moving them toward specific drugs or distractions.
Their experiences with spirits were echoed across years of conversations, and—alongside modern medicine and treatments—these new understandings of addiction helped them understand their own challenges better. Identifying the thoughts and cravings as coming from somewhere else can help addicts to reject the fear and guilt.
So how do we put these learnings into action? It takes two tools: rationality and conviction. Evil spirits love to attack our rationality first. And as Dr. Soni Werner explains, loss of rationality weakens all our defenses. While our brains are hard-wired to seek pleasure, our rationality can intervene and override that impulsive behavior.
The reason we are reformed and regenerated by means of the two abilities known as rationality and freedom, the reason that in fact we cannot be reformed and regenerated without them, is that it is through our rationality that we can discern and know what is evil and what is good and therefore what is false and what is true. Then through our freedom we can intend what we discern and know. (Divine Providence §85)
Author Peter Rhodes joins to talk about his own journey through addiction and how replacing your own will with God's will can help you make a real change. Conviction, or the resolve to do something good, is a tool for accomplishing that.
Convictions clothe a person with a nature, and then spirits of the same nature are associated with the person. (Spiritual Experiences §2926)
Once one has been imbued with a conviction that is true and good, and has been strengthened in it by the Lord so as to be held in the conviction, one can never be torn away from it. (Spiritual Experiences §2882)
In other words, the simple act of resolving to be a good person can attract angels to help you. It's not just a single moment or a single decision that makes a long-term difference, though: you have to keep confirming and reinforcing that conviction.
In the wrap-up, Curtis reviews the upside and the downside of the influence of spirits in our lives and how we can use the positive influence to become stronger.
Can you pray or do anything for another who has addictions to lift them up?
Jerry stated that one of his patients was "harassed by dead alcoholics." Does that mean that when we die, we take our addictions with us?
Why would the spirits of dead humans be given the right to torture others and not have to suffer for their own lives on earth before they died?
What do you do if you think you have latched on to something that was not the best God had for you?
How do you distinguish between "real" spirits influencing your thoughts and those effects of mental illness where people hear voices, etc.?
Related Swedenborg and Life Videos
"How Spirits Are Connected to Your Health"
"How to Deal with Evil Spirits"
"The Lies Evil Spirits Tell Us"
"Who was Swedenborg? What should I read?"
Divine Providence
Secrets of Heaven
Support Swedenborg and Life! Enjoy our programming and want to help us produce more free videos, books, and other faith and spirituality content? Make a donation or become a member of the nonprofit Swedenborg Foundation!
Want to watch more Swedenborg and Life videos? Visit our offTheLeftEye YouTube channel and be sure to subscribe for new uploads!
Read more Swedenborg and Life episode recaps >
About Swedenborg and Life
In a lighthearted and interactive live webcast format, host Curtis Childs from the Swedenborg Foundation and featured guests explore topics from Swedenborg's eighteenth-century writings about his spiritual experiences and afterlife explorations and discuss how they relate to modern-day life and death.
View the entire Swedenborg and Life Playlist
About offTheLeftEye
When we wake up in heaven, Swedenborg tells us, angels roll a covering from off of our left eye so that we can see everything in a spiritual light. The offTheLeftEye YouTube channel uses an array of educational and entertaining video formats to look at life and death through an uplifting spiritual lens.
View our offTheLeftEye YouTube channel


Several users of the Dericam H502W (Cybernova WIP604MW, and equivalent...) have reported the appearance of an "Invalid License File" warning in their System Information page after a firmware update.
While the exact cause is still undetermined, some precaution should be taken before applying a new firmware.
This constitutes your license file in case you end up with a Invalid License File warning. It could then be re-installed via the auth.htm page (you should take a snapshot of your own page also, while all is ok). Only the manufacturer can provide a new valid license file. The board.dat is unique to each device so it won't help to upload one from someone else!
The Dericam, Cybernova and other Maygion-based H.264 IP Cameras are assigned with a unique Hardware Identification (HID), a User ID (for the newer ones, adding P2P support) and a free DDNS ID (all visible in that auth.htm page mentionned above).
Apparently, a compound of this data is challenged against the encrypted board.dat file, and any mismatch results in an invalid license situation.
In theory all this information burned-in the camera at factory should not be affected by firmware upgrade and not easy to damage even through FTP access, but several cases have been reported already, all following update from very official firmware.
The cause is not clear but I suspect the older production of this IP Camera to be particularly affected once they get updated with a certain firmware version. The introduction of P2P maybe changed the way the license file is validated. I'll update this section if I ever get more information.
Have a 520W and it has the "invalid license file".
Admin on that board has some suggestions how to fix this.
Hi PJzzz, I suppose they mean that repair tool ? Did you try it.
Personally I gave remote access to Cybernova and they fixed it, but it would be interesting to find out if that tool would repair the license as well.
I have one cybernova cam with "invalid license file".Tool from Dericam not repare this for mi.After repair with this tool mi camera have "invalid license file" .
Thanks for checking, that's what I thought. So the best is to give a temporary admin access to Cybernova, or Dericam.
I gave remote access to Cybernova and they fixed it. Now all its ok!


We are always together. No matter what. Since we take her, we love each other more then everything. Nothin' else can break our love. Some people tell me that i must leave her because I'm pregnant, but she's like my child ... I wouldn't ever leave my 1st child because of the second one. Never! We'll be always one family till she's alive. I swear I'll protect her when she need it, warm her when she's cold, and love her till she exists. TRUE LOVE FOREVER!!!


text:
Q: Magento 2, preference for Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection does not work When filters  + Ancor is enabled for category, sorting by product name doesn't work. I know the fix as I tested in  Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection. So now I'm trying to override it in my module but below does not work. It still reads from core file.
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection" type="MyVendor\Mymodule\Model\ResourceModel\Fulltext\Collection" />
</config>

Below did not work too:

 <virtualType name="MyVendor\MyModule\Model\ResourceModel\Fulltext\CollectionFactory" type="Magento\Catalog\Model\ResourceModel\Product\CollectionFactory">
            <arguments>
                <argument name="instanceName" xsi:type="string">MyVendor\MyModule\Model\ResourceModel\Fulltext\Collection</argument>
            </arguments>
 </virtualType>

A: It work for me. I override the Catalog\Model\ResourceModel\fulltext\Collection.php. Create a etc\di.xml file. write the code
<virtualType name="Magento\CatalogSearch\Model\ResourceModel\Fulltext\CollectionFactory"
             type="Magento\Catalog\Model\ResourceModel\Product\CollectionFactory">
    <arguments>
        <argument name="instanceName" xsi:type="string">Vendor\Catalog\Model\ResourceModel\Fulltext\Collection</argument>
    </arguments>
</virtualType>
<virtualType name="Magento\CatalogSearch\Model\ResourceModel\Fulltext\SearchCollection"
             type="Vendor\Catalog\Model\ResourceModel\Fulltext\Collection">
    <arguments>
        <argument name="searchRequestName" xsi:type="string">quick_search_container</argument>
    </arguments>
</virtualType>

create Collection.php file.
<?php
namespace Vendor\Catalog\Model\ResourceModel\Fulltext;

class Collection extends \Magento\Catalog\Model\ResourceModel\Product\Collection
{
}

A: Try following way:

<virtualType name="VendorName\ModuleName\Model\ResourceModel\Fulltext\CollectionFactory" type="Magento\Catalog\Model\ResourceModel\Product\CollectionFactory">
    <arguments>
        <argument name="instanceName" xsi:type="string">VendorName\ModuleName\Model\ResourceModel\Fulltext\Collection</argument>
    </arguments>
</virtualType>
<virtualType name="Magento\CatalogSearch\Model\ResourceModel\Fulltext\SearchCollection" type="VendorName\ModuleName\Model\ResourceModel\Fulltext\Collection">
    <arguments>
        <argument name="searchRequestName" xsi:type="string">quick_search_container</argument>
    </arguments>
</virtualType>

VendorName/ModuleName/Model/ResourceModel/Fulltext/Collection.php

<?php
namespace VendorName\ModuleName\Model\ResourceModel\Fulltext;

class Collection extends \Magento\Catalog\Model\ResourceModel\Product\Collection
{
}

A: The reason the override for Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection doesn't work is because of the virtual type override in vendor/magento/module-elasticsearch/etc/di.xml. In your di.xml you need to declare the following preferences:
<preference for="elasticsearchFulltextSearchCollection" type="Vendor\Module\Model\ResourceModel\Fulltext\Collection" />
    <preference for="elasticsearchCategoryCollection" type="Vendor\Module\Model\ResourceModel\Fulltext\Collection" />
    <preference for="elasticsearchAdvancedCollection" type="Vendor\Module\Model\ResourceModel\Fulltext\Collection" />

A: The reason why it doesn't work is because the class
Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection

is used in the CatalogSearch with customization through virtual types and there is no direct usage of this class.
Customization of the source class for a virtual type is not possible because the ObjectManager resolves preference before resolving is a virtual type used and if that, then which class it should instantiate.
However, with the current implementation, you can customize specific virtual types and it should help you.
In Magento latest version I can find only one virtual type for the class
Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection :
<virtualType name="Magento\CatalogSearch\Model\ResourceModel\Fulltext\SearchCollection" type="Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection">
    <arguments>
        <argument name="searchRequestName" xsi:type="string">quick_search_container</argument>
    </arguments>
</virtualType>

So to resolve your problem need define preference for the virtual type:
<preference for="Magento\CatalogSearch\Model\ResourceModel\Fulltext\SearchCollection" type="CompanyName\ModuleName\Model\ResourceModel\Fulltext\Collection" />

redpajama_set_name: RedPajamaStackExchange


The inevitable has happened. Kobe Bryant's ex-wife Vanessa, fresh off the heels of their much publicized divorce, is already being recruited by the infamous reality show Basketball Wives. According to TMZ, Vanessa is being recruited to appear on the next season of the show. Since filing for divorce from Kobe, Vanessa's become quite wealthy after winning all three of their California mansions and $75 million dollars from the Black Mamba's empire. Vanessa has also became a highly sought after commodity when it comes to the reality TV world.
As one source told TMZ, "Vanessa has more than enough storyline and would bring the show to another level." Considering her recent break-up from Kobe, the timing is perfect, as producers would have never "dreamed" of approaching her before because "she would not have been receptive."
If Vanessa Bryant accepts the offer, producers are prepared to instantly make her a lead on the LA edition of the series. That would actually make her one of the only fame whores on the show who've actually held the legal title of "wife". Go figure.


text:
New Zealand's 'Small Five' Safari
Mar 30, 2012 12:22am
Mark Carwardine, The Daily Telegraph, March 30, 2012
To paraphrase my old friend the late Douglas Adams, the wildlife of New Zealand can be divided into three main categories: endangered, odd, and sheep. The land of the kiwi has more endangered species than most other parts of the world and, indeed, there are 10 times as many sheep as people. It is also true that many of its unique inhabitants are so strange they could easily have been dreamed up by the writer of humorous science fiction himself.
I recently spent two weeks travelling the length and breadth of New Zealand, in search of an outlandish menagerie of animals known as the "Small Five". They may be less well known than Africa's Big Five (lion, elephant, rhino, leopard and buffalo) but they were more than worth every aching air mile to see.
First, there is the tuatara – a lizard-like animal that isn't a lizard and looks as if it has just walked off the set of Jurassic Park. Then there's Hector's dolphin, the smallest marine dolphin in the world, which has a dorsal fin that resembles one of Mickey Mouse's ears. Third, there's the kea, a devilish mountain parrot feared by hire car companies; fourth, the yellow-eyed penguin, which has a penchant for hiking and refuses to nest within sight of other penguins. Finally, there's the national bird of New Zealand, the kiwi, which is best described as an honorary mammal (it has feathers like hair and fills a similar niche to the one filled by hedgehogs and badgers in less peculiar parts of the world).
My journey took me to North Island, South Island and Stewart Island, as well as several smaller islands in between, across vast and desolate mountain ranges, along the wild shores of lakes and rivers, through lush rainforests, down deserted coastlines – and, best of all, through lots of space. With just four million people in an area roughly the size of the United Kingdom, New Zealand feels almost empty. Weird and wonderful wildlife, and sheep, are the order of the day.
My first stop was a wildlife haven called Tiritiri Matangi (Tiri for short), a tiny island with a big secret just off the coast of Auckland. I had been there once before, many years ago, to listen to the dawn chorus. I realise that flying more than 11,000 miles just for that could be regarded as slightly eccentric, but Tiri is reputed to have the best dawn chorus in the world. And it more than lives up to expectations: it is a place where you can immerse yourself in a cacophony of birdsong so vibrant that it takes on orchestral proportions.
Tiri island is what it is thanks to a phenomenally successful conservation programme. During the Eighties and early Nineties, volunteers planted about 300,000 native trees, while the government's Department of Conservation removed all the mammalian predators (there were no mammalian predators in New Zealand until a host of hungry ferrets, stoats, weasels, rats, cats, dogs, hedgehogs and possums were introduced by people – and they have been enthusiastically eating the country's native wildlife ever since). Once the island was predator-free, umpteen native bird species were reintroduced and, hey presto, now there are birds flitting about all over the place.
I saw North Island saddlebacks, bouncing from branch to branch like arboreal kangaroos; North Island robins, which suddenly appeared like apparitions on the path in front of me, invariably curious and always completely fearless (one even perched on the end of my camera lens); and diminutive rifleman (or should that be riflemen?), the smallest birds in New Zealand. Their calls were so high-pitched they were beyond my range of hearing; I had to take the word of some students working on the island that they called at all. I even had a fleeting glimpse of a kokako, a particularly rare bird with a blue wattle, a Lone Ranger mask and a beautifully haunting, mournful song.
I also bumped into a gnarly old takahe called Greg. A takahe is a critically endangered bird that looks rather like a giant flightless moorhen, and Greg is the most famous of the few hundred left. I had met him on my first visit to Tiri, in 1997, and although now 19 years old and a little the worse for wear, he greeted me like an old friend (I felt quite emotional, until I was told that he greeted all visitors like old friends – in the hope of eating their packed lunches).
But I must have been one of the few people to visit Tiri for something other than birds. This is where I went to see the first of the Small Five: the lizard-that-isn't-a-lizard, the tuatara. It isn't a lizard for all sorts of reasons – its razor-sharp teeth aren't really teeth but serrations of the jaw, for a start – but it's best known for living longer than almost any other animal (certainly long enough to get a telegram from the Queen, and usually a lot longer).
I found a tuatara on my very first morning. About 2ft long, it was standing completely motionless next to a forest path. It had enormous eyes and sharp-looking spines along its back. But it quickly scuttled off into the bushes as I approached. I saw several others, and tried creeping towards them more slowly on my hands and knees, but they too scuttled off into the bushes.
I was told they would be less skittish after dark, so I tried looking for them later that night. I bumbled around in the forest, with a frustratingly feeble torch, and somehow found another tuatara. Sure enough, it allowed me to lie next to it for several minutes, before ambling off into the dark. One down, four to go.
Then it was on to Christchurch, South Island. I drove the short distance from the airport to Akaroa, a delightful seaside village on the Banks Peninsula, to join a Black Cat Cruises boat trip. Akaroa is probably the best place to see one of the most beautiful and rarest dolphins in the world. Hector's dolphin is found only in New Zealand and numbers have declined by about 75 per cent since 1970, owing to damaging fishing methods. Akaroa Harbour is believed to be home to about one fifth of the surviving population.
We didn't find the dolphins – they found us. We took the boat out to the harbour entrance, cut the engines and waited. Before you could say "on the verge of extinction", we were surrounded by the tiniest dolphins I had ever seen. They were small enough to fit inside a bathtub, with room to spare.
One minute they were off the bow, the next they were racing down the port side, then they were off the stern, and suddenly they were back at the bow again. They genuinely seemed pleased to see us, even though there are umpteen boat trips to see them and swim with them every day. Everyone on board was laughing and whooping and cheering as the dolphins, dressed in black, grey and white, with dark face masks, put on the kind of show that only dolphins can.
Last time I was in New Zealand, filming the BBC television series Last Chance to See with Stephen Fry, I had to fight off the amorous attentions of one of the world's largest parrots – a kakapo. The kakapo in question (at the time, one of only 124 left in the world) was a humanoid individual called Sirocco and the incriminating film clip of him rocking backwards and forwards on my head like a mentally retarded dachshund became something of an internet sensation.
So it was with some trepidation that I went in search of the third animal on my list – another giant parrot. This time it was an equally notorious, mountain-dwelling olive-green parrot, with gorgeous bright flashes of red, yellow and orange, called a kea.
The kea is widely lauded as the most intelligent bird in the world, but it is also charismatic, curious, bold, destructive and downright reckless. And it's one of the few large birds in New Zealand that hasn't forgotten how to fly. There are only about 5,000 left (I won't even mention that the kea is another endangered species, as that is almost a given when you're in New Zealand) and they are found only in the mountainous areas of the South Island. If you want to see one, go to a busy public place. Keas tend to loiter around ski resorts, alpine picnic sites and car parks, partly because these offer an easy source of junk food and partly because that's where they can get up to most mischief.
I parked my hire car at a spectacular mountain overlook, just outside Arthur's Pass in the heart of the Southern Alps, and before I had even closed the door a gang of five kea had landed on the roof and bonnet. I watched as they tugged and pulled at the aerial, attempted to peel off the rubber door seals and then started to chew through the wiper blades. They set about their task with such determination that it was hard not to imagine them hoarding enough bits to build their own hybrid car somewhere in the mountains. Just a couple of hubcaps and a wing mirror and they'll be done…
Next stop was the beautiful Peninsula, a short scenic drive along a meandering coastal road from Dunedin. In a few days I had wonderful close encounters with endangered yellow-eyed penguins at Penguin Place (which has a unique system of hides, tunnels and covered walkways – reminiscent of the Vietnam War – to allow for close-up views of the birds), as well as on a reserve of the Yellow-eyed Penguin Trust and at a private conservation area run by Elm Wildlife Tours.
My final quest, for the kiwi, took me to Stewart Island, in the extreme south of the country. This is my kind of place. There is only one settlement on the island, with a human population of just 400 hardy souls and no banks or cash machines, and it is surrounded by lush primeval forest and sweeping sandy beaches.
I did manage to find a kiwi, in the dark, in the middle of nowhere, hiding behind a bush. All I could see at first was a big ball of shaggy feathers about the size of a chicken. I crept closer, lay down on the grass and suddenly realised that it was no more than a foot in front of my face. Two eyes stared back at me for a few moments and then my first-ever kiwi squeezed itself into the bush and disappeared from sight.
I had done it – in a couple of weeks I had seen every one of the Small Five. But I had also seen so much more along the way. I haven't even mentioned the captivating gannet colony at Muriwai; the Fiordland crested penguins at Lake Moeraki; the majestic royal albatrosses on Taiaroa Head; the mind-boggling spectacle of feeding shy mollymawks on Stewart Island; everything from red-crowned parakeets to variable oystercatchers on gorgeous Ulva Island; or the Hooker's sea lions, New Zealand fur seals, blue penguins, wekas…
Suffice it to say, I'll be going back.


text:
IRTF Issues
Support people's pro-democratic, nonviolent movements, and people's sovereignty and democracy over military and coup-imposed governments.
End US training of Latin American military and other security forces in Central America and Colombia and on US soil, and the militarization of humanitarian, economic, environmental and other foreign assistance to Central America & Colombia. Working to eliminate long-term US military presence in Central America and Colombia, including personnel and bases.
In honor of the victims - Close the SOA
Just days ago in Bolivia, at least six SOA-WHIN-SEC graduates, led by General Wiliams Kaliman Romero, facilitated a coup against the will of the Bolivian people that Democratically elected President Evo Morales. We condemn this imperialist assault on Bolivia´s people. We denounce the burning of the Wiphala, a symbol of indigenous unity, strength, and resistance. We stand with the indigenous and campesina communities and support their autonomy, right to organize, and to decide the fate of their territories outside the grasp of the United States. As long as the Wiphala is flown, the fire of the resistance will continue to light Abya Yala. Together, we cry!
Migration and forced displacement are byproducts of a system that uses capitalism, colonization, militarism, racism, classism, and anti-indigenous ideology and policy to uplift those in power. We support those individuals and families who are forced to flee their home countries, regardless of the reason. We see all displaced people as refugees of a system that actively oppresses them and has left them with little choice but to seek higher ground, literally and figuratively.
Degradation and Mega Projects
To stand with communities (particularly indigenous and Afro-descendant) as they resist exploitation to preserve their lands and resources from profiteering.
To stand in solidarity with oppressed communities.
We stand with all those who feel the effects of the climate crisis, a crisis which was caused by capitalist colonialism and which preys especially on poor, Black, and Indigenous communities of color in Latin America.
Stopping the "race to the bottom" and demanding trade policies that protect workers, consumers and the environment.
Standing with workers across the hemisphere to promote just wages and safe working conditions, calling for consumer actions, corporate responsiblity and government policies to end the exploitation of labor
Supporting cooperatively-owned business so that people work for themselves and do not have to be dependent on the dominant economic model. Instead, self-determination, gender equality, transparency, and democratic organization are the norm.
Educating and organizing consumers to get fair trade and other sweatshop-free products into their schools, congregations, grocery stores and other local businesses.
Fair Trade is a system of exchange that honors producers, communities, consumers, and the environment. It is a model for the global economy rooted in people-to-people connections, justice, and sustainability.
Through education, advocacy, and action, IRTF amplifies the calls for justice from women and LGBTQ+ persons who have faced oppression, abuse, or gender-based violence.
To help support communities, particularly indigenous and Afro-descendant, who organize their lives according to traditional values and ways, by challenging repression and supporting economic ventures.
Promoting dignity and equality for Afro-descendant and native peoples across the hemisphere and resisting state-sponsored violence and institutionalized racism.
tpnw_-_we_banned_the_bomb.jpg
Celebrate! We banned the nuclear bomb! The Treaty on the Prohibition of Nuclear Weapons goes into effect today.
The Treaty on the Prohibition of Nuclear Weapons (TPNW) was approved at the United Nations in July 2017 by 122 nations. On October 24, 2020, Honduras became the 50th nation to deposit its ratification at the United Nations, triggering an automatic entry into force of the treaty 90 days later: January 22, 2021. In addition to the 50 countries that have ratified the treaty, 34 more have signed -- a total of 84 countries agreeing to ban nuclear weapons. We use this day--the enactment of the treaty--to call attention to the nuclear threat posed by the US and other nuclear states and create a pressure campaign to move Congress to introduce legislation calling on the US to sign the treaty and ban nuclear weapons for good! Join us!
worldbeyondwar.png
The Overseas Military Base Empire
Did you know that the United States has over 200,000 troops stationed on more than 800 bases in more than 80 countries and all 7 continents? The bases are the framework for the U.S. military strategy of "Full Spectrum Dominance." There are all kinds of reasons why these bases should be closed: 1- US military bases are provocative and increase tensions throughout the world; 2- they are the cause of untold, irreversible damage to the environment; 3- they are a huge waste of hundreds of billions of dollars that could be used to fund human needs. Webinar presenter Leah Bolger is a retired U.S. Naval officer who was stationed in four foreign countries. She currently serves as president of World BEYOND War. Leah Bolger will present on the social, environmental, and economic impact of U.S. bases and how to close them.
abolish_ice.jpg
TAKE ACTION: Sign a Petition - Abolish ICE
From the American Friends Service Committee: U.S. Immigration and Customs Enforcement (ICE) is an abusive agency with a history of human rights violations dating back to its inception in 2003. Neither Congress nor the courts have been successful in ending these abuses. Sign our petition urging Congress to abolish ICE today.
IRTF has been connecting with the LGBTQ+ community in El Salvador especially since we co-organized the first-ever LGBTQ+ delegation from Ohio to Central America in 2013. While visiting El Salvador, we have become friends with many transgender persons (particularly transgender women). Here in the US, we've also gotten to know many who have fled to the US seeking refuge and asylum. This new "cooperative agreement" makes an almost impossible asylum process even more impossible. But there might be hope: US President-elect Joe Biden has pledged to terminate the deeply flawed agreement.
guatemala_mine.jpg
On January 6, 2021, the former head of security for a subsidiary of the Toronto-based mining company Hudbay Minerals officially pled guilty in a Guatemalan court to killing a local Indigenous community leader and paralyzing another Indigenous man. This could have important ramifications for two lawsuits against Hudbay underway in Ontario that centre on the Sept. 27, 2009, killing and maiming of the Indigenous men. Mynor Padilla, the former security chief of CGN, a Guatemalan nickel-mining company that was owned by Hudbay between 2008 and 2011, pled guilty to the crimes on Dec. 17, 2020, as part of an agreement struck between Padilla and his victims, among them Angelica Choc, the widow of slain community leader Adolfo Ich, and German Chub, who was paralyzed. On Wednesday, the court accepted and ratified the guilty pleas.
usaid.jpg
The coup plotters in Nicaragua (along with their allies in Miami and Washington) have a plan similar to the one used for Venezuela that would be activated for the Nicaraguan elections in November 2021. Basically, these are the steps: 1- don't recognize the vote (call it a "stolen election"); 2- raise the level of violence and chaos in the country and declare a political crisis; 3- then set up a domestic legislative front; 4- appoint a non-elected interim president and seek international recognition from the likes of the EU and OAS, bodies that have already offered repeated expressions of political hostility towards the Sandinista government. With funds from USAID and other organizations (that pretend to be neutral but, as they themselves recognize, are playing a practical role supporting the CIA) the coup promoters are working on this new coup plan to push the Nicaraguan government to use force and then call for international solidarity against the "repression." Washington would like to see a volatile electoral campaign in Nicaragua in order to destabilize the Sandinista government. So Washington has been dishing out lots of economic sanctions and diplomatic aggression.
en_30_anos_el_desplazamiento_forzado_dejo_145_mil_victimas-e1531318710276.jpg
The year 2020 was the most violent in Colombia since the peace agreement was signed in November 2016, with widespread attacks on social activists, trade unionists and former guerrillas in the peace process. The figures released by the INDEPAZ human rights NGO make for shocking reading. During the calendar year, 309 social activists and human rights defenders were killed (totalling 1,109 since the peace agreement was signed) and 64 FARC former guerrillas were killed (249 in total). There were also 90 massacres which claimed the lives of 375 people. Additionally, state security forces killed at least 78 people.
asylum_seekers.jpg
TAKE ACTION: Join Voices with Asylum Seekers
At the U.S.-Mexico border, there are thousands of families in danger and waiting for a positive response to their asylum claims for more than a year. They have sent a message to President-Elect Joe Biden and Vice President-Elect Kamala Harris and you can join them.
irtf_40th_anniversary_logo_v3_-_csp_grants.png
Help us build a new normal – healing and liberation for all!
As we enter our 40th year, please show your support for IRTF's crucial work of cross-border, cross-sectional solidarity work. We'll put your donation to work to stand with marginalized and vulnerable communities in Latin America, at our border, in immigration detention facilities, and on the streets of Cleveland. All people deserve care and safety. Through acts of solidarity and mutual aid, together we will build a better world of healing and liberation for all. Join with us to create a new normal.
5fea7dbf4c1ca.image_.jpg
US cuts military aid to El Salvador amid intense lobbying
The Foreign Military Financing (FMF) program is one point of leverage that legislators have (responding to the advocacy efforts of Latin America solidarity groups ) to tie US foreign aid to respect for human rights. Cutting military aid like FMF tells the recipient country that the human rights movement in the US is paying attention to what is happening there. So, despite intense lobbying by the president of El Salvador, a provision in the recently approved Congressional spending bill but FMF funding for the Northern Triangle of Central America: El Salvador, Guatemala, and Honduras.


hello bloggyland! how was life? wait wait... IS THIS MY FIRST POST IN 2013??? OMG. so sorry for no post for very looong time...no im not too busy or vacuum or stop blogging (OF COURSE NOT) or something, im just still enjoying my holiday hehehe. i can't believe that time fliiiiieeessssss as fast as jet. happy new year anw! not too late people, it's still third month. there are still 9 months waiting to the next year..have you made your resolutions for this year? mention. honestly, i havent yet hehehe..where to go, my life? just let it flow..no no dont follow me. it's better to have a resolutions in order to we know where we will go to because we have some plans before. get my point? im going to make my own soon. so people..lemme tell you about my disappearing. i got my holiday since January and now already March, long enough huh? but im going to back campus 3 days later..back to reality back to study back to do some assignments back to face my killer lecturers *sighs* but well people...just enjoy every second of your life. yes, the famous nowadays quote, yolo.
so im still enjoying my holiday...no i didnt have great holiday such traveling to dream places like Paris France or Rome or Grand Canyon USA, but i went to a village in Pare Kediri, East Java. actually Indonesian called Pare as Kampung Inggris because here was the English education center in Indonesia. there were hundred English institutes that you could choose, such as OXFORD, PEACE, etc. you could take some classes also like speaking, grammar, TOEFL, IELTS, vocabulary, pronunciation. i obviously knew that my english is still low, so that was why i lived in Pare for two weeks..to improve my english skill. i only took 2 classes, TOEFL and speaking class. my toefl score was not that good but i felt satisfy with my speaking score hehe..in there i lived in english camp area, that was 24 hours using full english (no Bahasa) and it was so fun! at the first maybe we could say a sentence "how to say blablabla..." if we didnt know how to say that something in english, but then we have to use english and got punishment if we broke the rules! i loved living there due to there were sprawling fields that i visited in morning also evening, to see beautiful sunset. also no pollution because mostly people there used bicycle to go, just same like me. i also rented a bicycle to go to somewhere. living in there really taught me about everything, not only about english language. one of those all was...it really taught me the real meaning of starving hahaha you know i never ever lived far away with my parents, and now i lived far away for them for two weeks and i have to manage everything by my self, manage my own money, manage my breakfast/lunch/dinner by my own. usually in the morning my mom always made me a breakfast and a glass of milk, but at that time i made my own milk and cereals...well i was being independent. i met new people also all over Indonesia, that was great. i had my little family that i loved here, really. im going to back there, soon.
at the end of this trip, then i traveled to Mt. Bromo! it's been a long time since my last visited here...and as always, i was struck with the spectacular view on Mt. Bromo, damn beautiful. i didnt take many photos because sadly i didnt bring my camera, that was only some photos taken by ipad. anyway..between a thousand happiness, God always remind by one problem. God gave me happiness that never stop, but then He gave me a problem. so buddies, i lost my wallet there.....i didnt know exactly how it happened, but i did sure that i put it in my backpack, and i always brought my backpack with me. there were also my blackberry and ipad, but thanks God i just lost my wallet. oh stupid me, i brought cash money and i put it all in my wallet. all money. thanks for reminding me, God. whatta memorable trip.
after spending my time in East Java, i spent the rest of my holiday in West Java, Bandung...just took a little time in Bandung, and then back to hometown, Central Java, and spend my time with my bed. that's a real holiday.
you look so pretty as always!
know such detailed about my tгouble. You're wonderful! Thanks!
It is in гealitу a niсe and useful piece of info.
this. Thank уou foг ѕhаring.
A 23 years old girl living in Jakarta, Indonesia.
WHAT R U LOOKING FOR?
Like this blog? Please turn off your adblocker.


"Noh." YourDictionary, n.d. Web. 24 April 2019. <https://www.yourdictionary.com/NOH>.
The classical drama of Japan, with music and dance performed in a highly stylized manner by elaborately dressed performers on an almost bare stage.
The carbonyl oxygen may also be replaced by the oxime group,: N OH; thus the acids yield the hydroxamic acids, R C(OH): NOH, and the acid-amides the amidoximes, R C(NH 2): NOH.
The aldoximes are converted by the action of dehydrating agents into nitriles: RCH: NOH-->R C: N+H 2 0.
Chloraloxime, CC1 3 CH: NOH, is obtained when one molecular proportion of chloral hydrate is warmed with four molecular proportions of hydroxylamine hydrochloride and a little water.


Many factors lead to infertility and there is no one cause as to why some couples have difficulties conceiving.
Couples generally are leaving having a baby until a lot later than they used to and that is having an impact on overall fertility, as fertility declines with age.
Click here to keep reading for Dr Jessup's top tips for conceiving naturally.


text:
#define NO_THE_INDEX_COMPATIBILITY_MACROS
#include "cache.h"

struct dir_entry {
	struct hashmap_entry ent;
	struct dir_entry *parent;
	int nr;
	unsigned int namelen;
	char name[FLEX_ARRAY];
};

static int dir_entry_cmp(const struct dir_entry *e1,
		const struct dir_entry *e2, const char *name)
{
	return e1->namelen != e2->namelen || strncasecmp(e1->name,
			name ? name : e2->name, e1->namelen);
}

static struct dir_entry *find_dir_entry__hash(struct index_state *istate,
		const char *name, unsigned int namelen, unsigned int hash)
{
	struct dir_entry key;
	hashmap_entry_init(&key, hash);
	key.namelen = namelen;
	return hashmap_get(&istate->dir_hash, &key, name);
}

static struct dir_entry *find_dir_entry(struct index_state *istate,
		const char *name, unsigned int namelen)
{
	return find_dir_entry__hash(istate, name, namelen, memihash(name, namelen));
}

static struct dir_entry *hash_dir_entry(struct index_state *istate,
		struct cache_entry *ce, int namelen)
{
	/*
	 * Throw each directory component in the hash for quick lookup
	 * during a git status. Directory components are stored without their
	 * closing slash.  Despite submodules being a directory, they never
	 * reach this point, because they are stored
	 * in index_state.name_hash (as ordinary cache_entries).
	 */
	struct dir_entry *dir;

	/* get length of parent directory */
	while (namelen > 0 && !is_dir_sep(ce->name[namelen - 1]))
		namelen--;
	if (namelen <= 0)
		return NULL;
	namelen--;

	/* lookup existing entry for that directory */
	dir = find_dir_entry(istate, ce->name, namelen);
	if (!dir) {
		/* not found, create it and add to hash table */
		FLEX_ALLOC_MEM(dir, name, ce->name, namelen);
		hashmap_entry_init(dir, memihash(ce->name, namelen));
		dir->namelen = namelen;
		hashmap_add(&istate->dir_hash, dir);

		/* recursively add missing parent directories */
		dir->parent = hash_dir_entry(istate, ce, namelen);
	}
	return dir;
}

static void add_dir_entry(struct index_state *istate, struct cache_entry *ce)
{
	/* Add reference to the directory entry (and parents if 0). */
	struct dir_entry *dir = hash_dir_entry(istate, ce, ce_namelen(ce));
	while (dir && !(dir->nr++))
		dir = dir->parent;
}

static void remove_dir_entry(struct index_state *istate, struct cache_entry *ce)
{
	/*
	 * Release reference to the directory entry. If 0, remove and continue
	 * with parent directory.
	 */
	struct dir_entry *dir = hash_dir_entry(istate, ce, ce_namelen(ce));
	while (dir && !(--dir->nr)) {
		struct dir_entry *parent = dir->parent;
		hashmap_remove(&istate->dir_hash, dir, NULL);
		free(dir);
		dir = parent;
	}
}

static void hash_index_entry(struct index_state *istate, struct cache_entry *ce)
{
	if (ce->ce_flags & CE_HASHED)
		return;
	ce->ce_flags |= CE_HASHED;
	hashmap_entry_init(ce, memihash(ce->name, ce_namelen(ce)));
	hashmap_add(&istate->name_hash, ce);

	if (ignore_case)
		add_dir_entry(istate, ce);
}

static int cache_entry_cmp(const struct cache_entry *ce1,
		const struct cache_entry *ce2, const void *remove)
{
	/*
	 * For remove_name_hash, find the exact entry (pointer equality); for
	 * index_file_exists, find all entries with matching hash code and
	 * decide whether the entry matches in same_name.
	 */
	return remove ? !(ce1 == ce2) : 0;
}

static int lazy_try_threaded = 1;
static int lazy_nr_dir_threads;

#ifdef NO_PTHREADS

static inline int lookup_lazy_params(struct index_state *istate)
{
	return 0;
}

static inline void threaded_lazy_init_name_hash(
	struct index_state *istate)
{
}

#else

#include "thread-utils.h"

/*
 * Set a minimum number of cache_entries that we will handle per
 * thread and use that to decide how many threads to run (upto
 * the number on the system).
 *
 * For guidance setting the lower per-thread bound, see:
 *     t/helper/test-lazy-init-name-hash --analyze
 */
#define LAZY_THREAD_COST (2000)

/*
 * We use n mutexes to guard n partitions of the "istate->dir_hash"
 * hashtable.  Since "find" and "insert" operations will hash to a
 * particular bucket and modify/search a single chain, we can say
 * that "all chains mod n" are guarded by the same mutex -- rather
 * than having a single mutex to guard the entire table.  (This does
 * require that we disable "rehashing" on the hashtable.)
 *
 * So, a larger value here decreases the probability of a collision
 * and the time that each thread must wait for the mutex.
 */
#define LAZY_MAX_MUTEX   (32)

static pthread_mutex_t *lazy_dir_mutex_array;

/*
 * An array of lazy_entry items is used by the n threads in
 * the directory parse (first) phase to (lock-free) store the
 * intermediate results.  These values are then referenced by
 * the 2 threads in the second phase.
 */
struct lazy_entry {
	struct dir_entry *dir;
	unsigned int hash_dir;
	unsigned int hash_name;
};

/*
 * Decide if we want to use threads (if available) to load
 * the hash tables.  We set "lazy_nr_dir_threads" to zero when
 * it is not worth it.
 */
static int lookup_lazy_params(struct index_state *istate)
{
	int nr_cpus;

	lazy_nr_dir_threads = 0;

	if (!lazy_try_threaded)
		return 0;

	/*
	 * If we are respecting case, just use the original
	 * code to build the "istate->name_hash".  We don't
	 * need the complexity here.
	 */
	if (!ignore_case)
		return 0;

	nr_cpus = online_cpus();
	if (nr_cpus < 2)
		return 0;

	if (istate->cache_nr < 2 * LAZY_THREAD_COST)
		return 0;

	if (istate->cache_nr < nr_cpus * LAZY_THREAD_COST)
		nr_cpus = istate->cache_nr / LAZY_THREAD_COST;
	lazy_nr_dir_threads = nr_cpus;
	return lazy_nr_dir_threads;
}

/*
 * Initialize n mutexes for use when searching and inserting
 * into "istate->dir_hash".  All "dir" threads are trying
 * to insert partial pathnames into the hash as they iterate
 * over their portions of the index, so lock contention is
 * high.
 *
 * However, the hashmap is going to put items into bucket
 * chains based on their hash values.  Use that to create n
 * mutexes and lock on mutex[bucket(hash) % n].  This will
 * decrease the collision rate by (hopefully) by a factor of n.
 */
static void init_dir_mutex(void)
{
	int j;

	lazy_dir_mutex_array = xcalloc(LAZY_MAX_MUTEX, sizeof(pthread_mutex_t));

	for (j = 0; j < LAZY_MAX_MUTEX; j++)
		init_recursive_mutex(&lazy_dir_mutex_array[j]);
}

static void cleanup_dir_mutex(void)
{
	int j;

	for (j = 0; j < LAZY_MAX_MUTEX; j++)
		pthread_mutex_destroy(&lazy_dir_mutex_array[j]);

	free(lazy_dir_mutex_array);
}

static void lock_dir_mutex(int j)
{
	pthread_mutex_lock(&lazy_dir_mutex_array[j]);
}

static void unlock_dir_mutex(int j)
{
	pthread_mutex_unlock(&lazy_dir_mutex_array[j]);
}

static inline int compute_dir_lock_nr(
	const struct hashmap *map,
	unsigned int hash)
{
	return hashmap_bucket(map, hash) % LAZY_MAX_MUTEX;
}

static struct dir_entry *hash_dir_entry_with_parent_and_prefix(
	struct index_state *istate,
	struct dir_entry *parent,
	struct strbuf *prefix)
{
	struct dir_entry *dir;
	unsigned int hash;
	int lock_nr;

	/*
	 * Either we have a parent directory and path with slash(es)
	 * or the directory is an immediate child of the root directory.
	 */
	assert((parent != NULL) ^ (strchr(prefix->buf, '/') == NULL));

	if (parent)
		hash = memihash_cont(parent->ent.hash,
			prefix->buf + parent->namelen,
			prefix->len - parent->namelen);
	else
		hash = memihash(prefix->buf, prefix->len);

	lock_nr = compute_dir_lock_nr(&istate->dir_hash, hash);
	lock_dir_mutex(lock_nr);

	dir = find_dir_entry__hash(istate, prefix->buf, prefix->len, hash);
	if (!dir) {
		FLEX_ALLOC_MEM(dir, name, prefix->buf, prefix->len);
		hashmap_entry_init(dir, hash);
		dir->namelen = prefix->len;
		dir->parent = parent;
		hashmap_add(&istate->dir_hash, dir);

		if (parent) {
			unlock_dir_mutex(lock_nr);

			/* All I really need here is an InterlockedIncrement(&(parent->nr)) */
			lock_nr = compute_dir_lock_nr(&istate->dir_hash, parent->ent.hash);
			lock_dir_mutex(lock_nr);
			parent->nr++;
		}
	}

	unlock_dir_mutex(lock_nr);

	return dir;
}

/*
 * handle_range_1() and handle_range_dir() are derived from
 * clear_ce_flags_1() and clear_ce_flags_dir() in unpack-trees.c
 * and handle the iteration over the entire array of index entries.
 * They use recursion for adjacent entries in the same parent
 * directory.
 */
static int handle_range_1(
	struct index_state *istate,
	int k_start,
	int k_end,
	struct dir_entry *parent,
	struct strbuf *prefix,
	struct lazy_entry *lazy_entries);

static int handle_range_dir(
	struct index_state *istate,
	int k_start,
	int k_end,
	struct dir_entry *parent,
	struct strbuf *prefix,
	struct lazy_entry *lazy_entries,
	struct dir_entry **dir_new_out)
{
	int rc, k;
	int input_prefix_len = prefix->len;
	struct dir_entry *dir_new;

	dir_new = hash_dir_entry_with_parent_and_prefix(istate, parent, prefix);

	strbuf_addch(prefix, '/');

	/*
	 * Scan forward in the index array for index entries having the same
	 * path prefix (that are also in this directory).
	 */
	if (k_start + 1 >= k_end)
		k = k_end;
	else if (strncmp(istate->cache[k_start + 1]->name, prefix->buf, prefix->len) > 0)
		k = k_start + 1;
	else if (strncmp(istate->cache[k_end - 1]->name, prefix->buf, prefix->len) == 0)
		k = k_end;
	else {
		int begin = k_start;
		int end = k_end;
		while (begin < end) {
			int mid = (begin + end) >> 1;
			int cmp = strncmp(istate->cache[mid]->name, prefix->buf, prefix->len);
			if (cmp == 0) /* mid has same prefix; look in second part */
				begin = mid + 1;
			else if (cmp > 0) /* mid is past group; look in first part */
				end = mid;
			else
				die("cache entry out of order");
		}
		k = begin;
	}

	/*
	 * Recurse and process what we can of this subset [k_start, k).
	 */
	rc = handle_range_1(istate, k_start, k, dir_new, prefix, lazy_entries);

	strbuf_setlen(prefix, input_prefix_len);

	*dir_new_out = dir_new;
	return rc;
}

static int handle_range_1(
	struct index_state *istate,
	int k_start,
	int k_end,
	struct dir_entry *parent,
	struct strbuf *prefix,
	struct lazy_entry *lazy_entries)
{
	int input_prefix_len = prefix->len;
	int k = k_start;

	while (k < k_end) {
		struct cache_entry *ce_k = istate->cache[k];
		const char *name, *slash;

		if (prefix->len && strncmp(ce_k->name, prefix->buf, prefix->len))
			break;

		name = ce_k->name + prefix->len;
		slash = strchr(name, '/');

		if (slash) {
			int len = slash - name;
			int processed;
			struct dir_entry *dir_new;

			strbuf_add(prefix, name, len);
			processed = handle_range_dir(istate, k, k_end, parent, prefix, lazy_entries, &dir_new);
			if (processed) {
				k += processed;
				strbuf_setlen(prefix, input_prefix_len);
				continue;
			}

			strbuf_addch(prefix, '/');
			processed = handle_range_1(istate, k, k_end, dir_new, prefix, lazy_entries);
			k += processed;
			strbuf_setlen(prefix, input_prefix_len);
			continue;
		}

		/*
		 * It is too expensive to take a lock to insert "ce_k"
		 * into "istate->name_hash" and increment the ref-count
		 * on the "parent" dir.  So we defer actually updating
		 * permanent data structures until phase 2 (where we
		 * can change the locking requirements) and simply
		 * accumulate our current results into the lazy_entries
		 * data array).
		 *
		 * We do not need to lock the lazy_entries array because
		 * we have exclusive access to the cells in the range
		 * [k_start,k_end) that this thread was given.
		 */
		lazy_entries[k].dir = parent;
		if (parent) {
			lazy_entries[k].hash_name = memihash_cont(
				parent->ent.hash,
				ce_k->name + parent->namelen,
				ce_namelen(ce_k) - parent->namelen);
			lazy_entries[k].hash_dir = parent->ent.hash;
		} else {
			lazy_entries[k].hash_name = memihash(ce_k->name, ce_namelen(ce_k));
		}

		k++;
	}

	return k - k_start;
}

struct lazy_dir_thread_data {
	pthread_t pthread;
	struct index_state *istate;
	struct lazy_entry *lazy_entries;
	int k_start;
	int k_end;
};

static void *lazy_dir_thread_proc(void *_data)
{
	struct lazy_dir_thread_data *d = _data;
	struct strbuf prefix = STRBUF_INIT;
	handle_range_1(d->istate, d->k_start, d->k_end, NULL, &prefix, d->lazy_entries);
	strbuf_release(&prefix);
	return NULL;
}

struct lazy_name_thread_data {
	pthread_t pthread;
	struct index_state *istate;
	struct lazy_entry *lazy_entries;
};

static void *lazy_name_thread_proc(void *_data)
{
	struct lazy_name_thread_data *d = _data;
	int k;

	for (k = 0; k < d->istate->cache_nr; k++) {
		struct cache_entry *ce_k = d->istate->cache[k];
		ce_k->ce_flags |= CE_HASHED;
		hashmap_entry_init(ce_k, d->lazy_entries[k].hash_name);
		hashmap_add(&d->istate->name_hash, ce_k);
	}

	return NULL;
}

static inline void lazy_update_dir_ref_counts(
	struct index_state *istate,
	struct lazy_entry *lazy_entries)
{
	int k;

	for (k = 0; k < istate->cache_nr; k++) {
		if (lazy_entries[k].dir)
			lazy_entries[k].dir->nr++;
	}
}

static void threaded_lazy_init_name_hash(
	struct index_state *istate)
{
	int nr_each;
	int k_start;
	int t;
	struct lazy_entry *lazy_entries;
	struct lazy_dir_thread_data *td_dir;
	struct lazy_name_thread_data *td_name;

	k_start = 0;
	nr_each = DIV_ROUND_UP(istate->cache_nr, lazy_nr_dir_threads);

	lazy_entries = xcalloc(istate->cache_nr, sizeof(struct lazy_entry));
	td_dir = xcalloc(lazy_nr_dir_threads, sizeof(struct lazy_dir_thread_data));
	td_name = xcalloc(1, sizeof(struct lazy_name_thread_data));

	init_dir_mutex();

	/*
	 * Phase 1:
	 * Build "istate->dir_hash" using n "dir" threads (and a read-only index).
	 */
	for (t = 0; t < lazy_nr_dir_threads; t++) {
		struct lazy_dir_thread_data *td_dir_t = td_dir + t;
		td_dir_t->istate = istate;
		td_dir_t->lazy_entries = lazy_entries;
		td_dir_t->k_start = k_start;
		k_start += nr_each;
		if (k_start > istate->cache_nr)
			k_start = istate->cache_nr;
		td_dir_t->k_end = k_start;
		if (pthread_create(&td_dir_t->pthread, NULL, lazy_dir_thread_proc, td_dir_t))
			die("unable to create lazy_dir_thread");
	}
	for (t = 0; t < lazy_nr_dir_threads; t++) {
		struct lazy_dir_thread_data *td_dir_t = td_dir + t;
		if (pthread_join(td_dir_t->pthread, NULL))
			die("unable to join lazy_dir_thread");
	}

	/*
	 * Phase 2:
	 * Iterate over all index entries and add them to the "istate->name_hash"
	 * using a single "name" background thread.
	 * (Testing showed it wasn't worth running more than 1 thread for this.)
	 *
	 * Meanwhile, finish updating the parent directory ref-counts for each
	 * index entry using the current thread.  (This step is very fast and
	 * doesn't need threading.)
	 */
	td_name->istate = istate;
	td_name->lazy_entries = lazy_entries;
	if (pthread_create(&td_name->pthread, NULL, lazy_name_thread_proc, td_name))
		die("unable to create lazy_name_thread");

	lazy_update_dir_ref_counts(istate, lazy_entries);

	if (pthread_join(td_name->pthread, NULL))
		die("unable to join lazy_name_thread");

	cleanup_dir_mutex();

	free(td_name);
	free(td_dir);
	free(lazy_entries);
}

#endif

static void lazy_init_name_hash(struct index_state *istate)
{
	if (istate->name_hash_initialized)
		return;
	hashmap_init(&istate->name_hash, (hashmap_cmp_fn) cache_entry_cmp,
			istate->cache_nr);
	hashmap_init(&istate->dir_hash, (hashmap_cmp_fn) dir_entry_cmp,
			istate->cache_nr);

	if (lookup_lazy_params(istate)) {
		hashmap_disallow_rehash(&istate->dir_hash, 1);
		threaded_lazy_init_name_hash(istate);
		hashmap_disallow_rehash(&istate->dir_hash, 0);
	} else {
		int nr;
		for (nr = 0; nr < istate->cache_nr; nr++)
			hash_index_entry(istate, istate->cache[nr]);
	}

	istate->name_hash_initialized = 1;
}

/*
 * A test routine for t/helper/ sources.
 *
 * Returns the number of threads used or 0 when
 * the non-threaded code path was used.
 *
 * Requesting threading WILL NOT override guards
 * in lookup_lazy_params().
 */
int test_lazy_init_name_hash(struct index_state *istate, int try_threaded)
{
	lazy_nr_dir_threads = 0;
	lazy_try_threaded = try_threaded;

	lazy_init_name_hash(istate);

	return lazy_nr_dir_threads;
}

void add_name_hash(struct index_state *istate, struct cache_entry *ce)
{
	if (istate->name_hash_initialized)
		hash_index_entry(istate, ce);
}

void remove_name_hash(struct index_state *istate, struct cache_entry *ce)
{
	if (!istate->name_hash_initialized || !(ce->ce_flags & CE_HASHED))
		return;
	ce->ce_flags &= ~CE_HASHED;
	hashmap_remove(&istate->name_hash, ce, ce);

	if (ignore_case)
		remove_dir_entry(istate, ce);
}

static int slow_same_name(const char *name1, int len1, const char *name2, int len2)
{
	if (len1 != len2)
		return 0;

	while (len1) {
		unsigned char c1 = *name1++;
		unsigned char c2 = *name2++;
		len1--;
		if (c1 != c2) {
			c1 = toupper(c1);
			c2 = toupper(c2);
			if (c1 != c2)
				return 0;
		}
	}
	return 1;
}

static int same_name(const struct cache_entry *ce, const char *name, int namelen, int icase)
{
	int len = ce_namelen(ce);

	/*
	 * Always do exact compare, even if we want a case-ignoring comparison;
	 * we do the quick exact one first, because it will be the common case.
	 */
	if (len == namelen && !memcmp(name, ce->name, len))
		return 1;

	if (!icase)
		return 0;

	return slow_same_name(name, namelen, ce->name, len);
}

int index_dir_exists(struct index_state *istate, const char *name, int namelen)
{
	struct dir_entry *dir;

	lazy_init_name_hash(istate);
	dir = find_dir_entry(istate, name, namelen);
	return dir && dir->nr;
}

void adjust_dirname_case(struct index_state *istate, char *name)
{
	const char *startPtr = name;
	const char *ptr = startPtr;

	lazy_init_name_hash(istate);
	while (*ptr) {
		while (*ptr && *ptr != '/')
			ptr++;

		if (*ptr == '/') {
			struct dir_entry *dir;

			ptr++;
			dir = find_dir_entry(istate, name, ptr - name + 1);
			if (dir) {
				memcpy((void *)startPtr, dir->name + (startPtr - name), ptr - startPtr);
				startPtr = ptr;
			}
		}
	}
}

struct cache_entry *index_file_exists(struct index_state *istate, const char *name, int namelen, int icase)
{
	struct cache_entry *ce;

	lazy_init_name_hash(istate);

	ce = hashmap_get_from_hash(&istate->name_hash,
				   memihash(name, namelen), NULL);
	while (ce) {
		if (same_name(ce, name, namelen, icase))
			return ce;
		ce = hashmap_get_next(&istate->name_hash, ce);
	}
	return NULL;
}

void free_name_hash(struct index_state *istate)
{
	if (!istate->name_hash_initialized)
		return;
	istate->name_hash_initialized = 0;

	hashmap_free(&istate->name_hash, 0);
	hashmap_free(&istate->dir_hash, 1);
}

redpajama_set_name: RedPajamaGithub


This position is located in the Population Division of the Department of Economic and Social Affairs (DESA). The Population Division was created in 1947 with the mandate of strengthening the capacity of the international community to address current and emerging population issues by providing timely and accessible population data for all countries and areas of the world and to contribute to the advancement of population studies and to the informed development of population-related policies. The Associate Population Affairs Officer reports to the Population Affairs Officer of the Population Data Unit (PDU).
Professionalism: Ability to apply demographic techniques and research methods to issues. Ability to determine the suitability, validity and accuracy of the data or estimates available. Ability to devise sound methods for the derivation of population estimates. Ability to draft reports on population issues. Shows pride in work and in achievements; demonstrates professional competence and mastery of subject matter; is conscientious and efficient in meeting commitments, observing deadlines and achieving results; is motivated by professional rather than personal concerns; shows persistence when faced with difficult problems or challenges; remains calm in stressful situations. Takes responsibility for incorporating gender perspectives and ensuring the equal participation of women and men in all areas of work.
An Advanced university degree (Master's degree or equivalent degree) in demography, or in sociology, statistics or economics with an emphasis on demography or related field is required. A first-level university degree in combination with an additional two years of qualifying work experience may be accepted in lieu of the advanced university degree.
A first-level university degree and no experience will be accepted for candidates who have passed the Young Professionals Programme Examination/United Nations National Competitive Recruitment Examination or the General Service to Professional Examination.
A minimum of two years of progressively responsible experience in population analysis and research or related area is required. Experience with complex statistical databases and analysis of census and survey microdatasets is desirable. Experience applying indirect demographic estimation techniques is desirable.
No experience is required for candidates who have passed the Young Professionals Programme Examination/United Nations National Competitive Recruitment Examination or the General Service to Professional Examination.
English and French are the working languages of the United Nations Secretariat. For this post, fluency in English is required. Knowledge of another United Nations official language is an advantage.
Extension of the appointment is subject to extension of the mandate and/or the availability of the funds. If the selected candidate is an internal staff member of the UN Secretariat, the selection will be recorded as a temporary assignment.