John Kaminski on Inside the Eye – Live! – 1.24.15 | Inside the Eye - Live!
John Kaminski, featured Internet essayist at "The Rebel.org" joined Inside the Eye – Live! for a special two hour conversation that covered more topics than can be covered here. As always, Kaminski was colorful and full of insights and opinions that directly relate to the Jewish governance over Western civilization and, as Jewish power (through control of media and money) continues to spread its tentacles, increasingly across more and more of the larger civilized world.
The result of this expansion of power is predictable: a noticeable "Biblical" fall of humanity from a higher state of existence.
One of the themes running through the show was that of "fatigue and depression". Kaminski commented that the "depression" is not just being witnessed from who work to bring reality into the light, but also among those who have no interest in ascertaining reality (the masses) but equally are becoming aware that the reality they are being shaped into believing is itself entirely false.
Although it may be true that depression and fatigue is setting in among those that have worked tirelessly to raise awareness of the organizational dangers facing Western Civilization, it can also be said that that enormous strides have been made in raising awareness equally.
Gone are the days when an intelligence agency can engage in criminal and treasonous activities and not have the event pried open often before the "main stream media" is able to "roll out the narrative".
Where John Kaminski agrees is that the strides and audience has grown to where those who were at the forefront of educating about Jewish control of Western civilization and the harm that such control entails, what generates fatigue is lack of progress on the "jewdicial" front.
No one, and especially Jews, are being held accountable for either their failures (negligence to an extreme) – which are too numerous to list, nor is anyone being held accountable within the media for the projection of obviously false to malicious narratives passed off as "real news", nor do we find any arrests and progress being made on taking out individuals responsible for what has become a tsunami of criminal assaults on humanity.
In what has become an absolutely glaring example of Jewish bigotry and hypocrisy, enter stage right; "Hebdo: The Face of Jewish Hypocrisy". The entire French story regarding Charlie Hebdo is absurd. Within hours, the supposed "Islamic extremist" attack on the offices of "Charlie Hebdo", the alternative media forces had destroyed the story.
But the narrative had to go on, and that is where the glaring irrationality of Jewish thinking was brought clearly into focus. The narrative's agenda came rapidly into focus: in the name of protecting "free speech", any speech against Jews was to be deemed as "criminal".
It is okay for Jews to assault and attack the sensibilities of everyone, no matter how irresponsible the activity, but in order to prevent "extremism", everyone's right to free speech has to be sacrificed – except of course for the speech of Jews.
The truth of the matter is, Jews have been against the Western ideal of "freedom of speech" from their very formation and arrival on the historical scene. Within the United States, Jewish assaults on freedom of speech are legendary, which makes you wonder if it was not Jews themselves that saw the founding fathers of the United States instill "freedom of speech" as the very first "Bill of Rights".
This article, from 1941, shows just how long Jews have been using the "anti-Semite" canard to limit others from airing their political views.
Now Jews would like all of us to remind ourselves that "We are all Charlie".
Jews should be reminded of this meme each and every time we see Jews seeking to silence others in the arena of public opinion.
From the Middle East to Ukraine, and from the United States to global Jewish hegemony, this special two hour conversation is sure to have quite a bit of brain food to chomp on. What this show presents is John Kaminski, a warrior who has never shied from doing his part in the "information war".
Hour number one for January 24, 2015 consisted of a recap of recent events in Yemen whereby the President and Prime Minister resigned, US death drone attacks were halted, and the US Embassy sought to reduce non-essential staff in the face of a near total overthrow of the capital Sana'a by Shia Huthi rebels.
In addition, the show discussed some of the accomplishments of Saudi Arabia's "King Abdullah".


text:
complimenteulogycommendcongratulationslaudextolcommendationadmirationacclaimapplausekudoscongratulateapplaudsaluteaccolades
Praise Jokes
The pastor asked if anyone in the congregation would like to express praise for answered prayers.
A lady stood and walked to the podium.
She said, "I have a praise. Two months ago, my husband Tom had a terrible bicycle wreck, and his scrotum was completely crushed. The pain was excruciating and the doctors didn't know if they could help him."
You could hear a muffled gasp from the ...
Neo-nazis don't praise Hitler
They praise the man who killed him
Grandma is eighty-eight and drives her own car...
She writes:
Dear Grand-daughter,
The other day I went up to our local Christian book store and saw a
'Honk if you love Jesus' bumper sticker.
I was feeling particularly sassy that day because I had just come from a
thrilling choir performance, followed by a thunder...
Fun Fact: The Mortal Kombat theme was actually inspired by an old European song of praise.
It was a Finnish hymn.
A man is pulled over for drunk driving
The cop walks up to his window,
"Sir, have you been drunk driving?"
"No sir!" Says the man
"What's in that bottle?" Says the cop
"Just water sir!" Says the man
The cop says, "Hand it to me and let me see"
The man hands him the bottle and the cop says "sir t...
Albert Einstein was a genius and worthy of praise and study.
His brother Frank was an absolute monster.
An Irishman is walking on a beach when he stubs his toe on an old metal box
He opens the lid
And a Genie pops out and praises him for letting him out after 500 years…
He offers him a wish… and the Irishman says… every evening after dinner when I pee, I want to pee the finest Irish Whiskey…
Done says the genie and vanishes in a flash…
That evening af...
Russian freedom is not different to US freedom.
An american and a russian both praise their homeland.
\- Russian freedom is not different to US freedom.
The american says:
\-Now look, I could go right now in front of the white house and hold a protest against president Biden and nothing would happen to me.
\-My friend,...
When Karl Marx was a young philosophy student, he took it upon himself to travel across the country to see the wide world and learn all that he could to develop his theories.
Hither and thither he would ride across the German countryside, in his little pony-cart pulled by a pair of strong, hardy donkeys, meeting people, studying their lives and professions, and seeking to understand the world.
A time came when he was high in the German mountains. Snow was thick ...
Apparently my great-grandpa was a controversial figure when he served in WWII
Which is weird, I thought he'd be praised more considering my family tells me he killed Hitler
Foul Mouthed Parrots
This lady approaches a priest and tells him, "Father, I have a problem. I have these two talking female parrots, but they only know how to say one thing, 'Hi, we're prostitutes. Do you want to have some fun?'"
"That's terrible!" the priest exclaims, "but I have a solution to your problem. Bri...
If you donate one kidney everyone praises you!
But donate five and suddenly everyone is yelling and you lose your job as a surgeon.
Sheesh!
A guy starts working at a bakery
He's handed his rota and his eyes lighten up: "Great, it's dinner-roll day!". The supervisor is puzzled to see such enthusiasm for so mundane a task as baking dinner rolls, but sure enough, the new guy goes to it with zest and panache and is soon turning out dinner rolls the like of which the superv...
As a scientist, I received a lot of praise for figuring out a new method of getting drugs to enter cells more effectively and efficiently.
As a prisoner, I received another 2 years on my sentence.
Xi Jinping was on his balcony during the early morning, admiring all that Bejing has become
He inhaled a sweet breath of fresh Bejing air and looked East to see the sun smiling down.
"Hello, Sun", said Xi Jinping.
The sun replied "Hello Glorious Leader, the architect of a grand Communist Utopia. Best wishes leading your already prosperous nation."
Xi Jinping, despite h...
Once there was a guy named Bill who wanted a horse.
On Craigslist, Bill saw a Christian horse so he went to check it out.
When Bill got to the ranch, the horse's owner said "It's easy to ride him. Just say 'praise the Lord' to make him go, and 'amen' to make him stop." Bill got on the horse and said "praise the Lord." the horse started to...
A mail carrier is about to retire…
So he puts a note in all of his mailboxes letting people know that his last day would be at the end of the week.
On his last day, neighbors were showering him with gifts and praise for his many years of faithful service.
As he approaches a house in his route, he realizes that he's ne...
Every day, a woman stood on her porch and shouted ,"Praise the Lord!"
And every day the atheist next door yelled, "There is no Lord!"
One day she prayed, "Lord, I'm hungry. Please send me groceries."
The next morning she found a big bag of food on the stairs. "Praise the Lord," she shouted.
"Ha! I told you there was no Lord," her neighbour said, j...
A man suddenly appeared at the gates of Hell… (Story Joke)
He looked up to see the Devil sitting at a chair.
"Hello my friend," The Devil said kindly, "How are you this fine eternity?"
"A bit confused," the man replied, "I didn't realise that I was dead."
"I understand," the Devil said sympathetically, "Why don't you tell me how you go...
What is something you can say to praise a Christmas tree but shouldn't say about a woman?
Looks pretty in the darkness.
I swear autocorrect is amazing.
No that's not what I said, I meant to say autocorrect is wonderful.
No! That's not it either. Autocorrect is a piece of technology I couldn't live without. Praise autocorrect.
Oh you gotta be kidding me. No one likes you autocorrect, they love you.
I didn't even type that.
A pastor walked by a ranch when he noticed a sign, "Christian Horse for Sale"
Being that the Pastor owned a large ranch, he was immediately interested, and went into the shop.
The owner took the Pastor out to the back, where he saw a beautiful Arabian stallion.
He agreed to allow the Pastor to take a "test run."
The Pastor grabbed the reins. "giddyap." Th...
An immigrant teen is walking home from the supermarket when he sees an older gentleman with a broken down car on the side of the road...
He stops to help and immediately makes a good impression on the older fellow. Eventually they get the car going and the gentleman offers the boy a ride home. The teenager accepts, thinking it would be a great way to get home quickly, considering it's getting late and his mother was probably worried ...
Puns are the only form of humor where a groan is high praise and a laugh is a fair attempt.
Well, that and sex.
Alexander Graham Bell is always given a huge amount of praise for inventing the first telephone
The credit should really go to whomever invented the SECOND telephone.
The Christian horse.
A man was driving down the long highway in his car. All of a sudden his car broke down.
The man walked for a while and ended up at a farm. As he was trying to find the owner of the farm, he spotted one horse and wanted to see if he could borrow the horse. He met with the farmer and asked him...
To make a fool love you, praise their intelligence...
...but you already knew that, because you're so intelligent.
Three hunters meet
Three hunters meet and praise how good their dogs are.
- I went hunting once - I took the rifle and forgot the ammunition. I gave the dog to sniff a rifle, then he brought a box of ammunition.
- I went hunting once - I took the ammunition and forgot the rifle. I gave the d...
Four Gentlemen Are out Golfing ,,,
Four older gentlemen are out golfing, sharing about their lives and eventually the topic of their children's professional success is brought up. The first guy steps up, hurriedly takes his shot, knocks the ball off into the woods, and starts walking to find his ball without saying a word…
The s...
A religious woman, upon waking up each morning, would open her front door, stand on the porch, and say, "Praise the Lord!"
This infuriated her atheist neighbor who would always make sure to yell out his door, "There is no Lord!"
One morning the atheist neighbor overheard his religious ...
An elderly lady was well-known for her faith and for her boldness in talking about it. She would stand on her front porch and shout "PRAISE THE LORD!"
Next door to her lived an atheist who would get so angry at her proclamations he would shout, "There ain't no Lord!!"
Hard times set in on the elderly lady, and she prayed for GOD to send her some assistance. She stood on her porch and shouted "PRAISE THE LORD. GOD I NEED FOOD!! I AM HAVING A HAR...
Did you see on the news the boy who was born with no eyelids?
The doctors rushed him to emergency surgery for his circumcision and immediately replaced his eyelids with his foreskin in a miraculous surgery. The doctor was praised and during an interview stated "the boy is going to be just fine, we don't see any major complications in his future however he may ...
I was constantly praised and flattered by a colony of ants....
It turns out that they were sycophants!
My dad wronged me...
I brought home a test score of 90 and showed it to my dad. I thought he would praise me for it, but my dad took one look at the test script and said I added the "0" there. I got a big scolding and was grounded for the week. I really didn't add the "0".
I added the "9".
4 Monks are being chased by a Hungry Lion!
4 Monks are being chased by a Hungry Lion. As they run, they cry out to God yelling, "PLEASE LORD! CONVERT THIS LION TO BE A CHRISTIAN LION!"
They run until they reach a dead end.
They hungry lion approaches slowly, as they cry out louder:
"PLEASE LORD HEAR OUR PRAYERS AND CONVE...
Stalin is having a shitty day...
One day, Stalin, is in a shitty mood. One thing he loves is to hear praise. He loved it when people spoke highly of him but it loses its luster at gun point. So, one day Stalin wears a disguise, and goes to a local café with the intention of listening to people chat. He sits down with his back to th...
What medicine is praised for being a murderer?
A pain killer
I don't understand when someone donates a kidney they get praised a hero,
But when I donate 5, I get arrested?
A man walks into a bar…
Takes a seat and orders a drink. There's a bowl of peanuts on the bar. He leans over to take one and is shocked to hear the peanuts talking to him.
'Hey handsome, looking GOOD'
'Did you lose weight? You're looking really fit'
Confused, he accepts the praise and nurses his drin...
My friend GLADOS said there would be cake for me today
But all I see is praise and up votes. I'm starting to think the cake is a lie.
Boy it's hot in here too
Yo mama's so fat, when she wears yellow...
I praise the Sun.
A priest is driving home
When suddenly his car breaks down, and he must go ask the local farmer for a horse. The farmer obliges, but says that this is a HOLY horse, so you had to say "Praise the Lord" to make it go, and "Amen" to make it stop.
The priest says okay. So he starts off. About a mile down the road, the ho...
Stalin was visiting a town (actual joke from Soviet era)
Stalin was visiting a small town in Russia. Huge crowd was there to receive him, holding signs with words of praise for Stalin, Party, Union etc.
Among them, secret police officers spotted a particularly old man holding a sign saying "Thank you comrade Stalin, for a happy childhood!".
Praise the Lord and pass me my walking shoes
The preacher laid his hands on my head and said, "Praise Jesus, today you will walk!"
"But... but I'm not paralyzed."
The Rabbi came, laid his hands on my hand and said, "By the will of God Almighty, you will walk today!
The Mullah came, took my hands and said, "Insha Allah, you...
A zookeeper loses his Bible while at work...
... A week later when he's feeding the penguins one of them waddles up to him holding his Bible in its beak.
"Praise God, it's a miracle!" says the delighted zookeeper.
"Not really," says the penguin, "Your name is written on the inside cover."
A teachers praises one of their students to his mother
"Johnny excels at pretty much every subject and is really eager to learn. Where did he get his amazing thirst for knowledge?"
"Well, it's a combination really. The knowledge is from me, but the thirst is definitely from his father's side."
"The word of the day is 'contagious'" Said the teacher, "Who can use it in a sentence?"
Little Jenny stood up and said "My dad has a cold and said its contagious"
The teacher praised Jenny and ask for an example from another student.
Billy stood up and said "Miss, my mum has the flu, and I think its contagious"
Happy with Billy's response, the teacher asked for on...
Feet go to heaven first
Little Johnny was sitting in class one day. On this particular day, the teacher wanted to ask her class which part of the body went to heaven first. One little girl raised her hand and said, "I think your mind goes to heaven first because you have to have a mind in order to believe in God."
The Three-Legged Pig
So, there's a traveling salesman who has been on the road for too long. He decides that, to fix his boredom, the next thing he sees he's going to stop and ask somebody about it.
Well wouldn't you know it, he sees a pig with three legs at the edge of a farm.
"Ok," he says to himself. "...
After earning his DDS; a dentist went and opened up his own practice.
He became widely known for his amazing skills, and was highly praised + recommended by every patient he ever had. One year; he was nominated for (and won) a prestigious medical award. Inscribed upon its ornate surface was his name and the specific honor: "Global Recognition of Outstanding Surgical S...
What do you call a person who steals and is then praised by his/her friends?
A Redditor.
Close Call Accident
1) = First driver
2) = Priest
During the night, 2 cars bumped to each other.
The first comes out furious starting cursing at the other driver.
The second comes out and it turns out he was a high priest.
1)Sorry 'Father' i didn't meant what i said...
2)My child, ...
A cop pulls over a car swerving all over the road
After the cop tells the driver why he stopped him and asks for his license and registration, he notices an open, half-empty bottle sitting on the floor.
Cop: "Sir, what is that bottle between your feet?"
Driver (burping): "Uh, it's a bottle of water officer."
Cop: "I can see...
A priest, a Buddhist monk and a rabbi argue about who's the greater spiritual leader.
They agree to test their abilities by attempting the impossible: who can convert a bear to their religion.
Two weeks pass, the monk and the rabbi get a call from the priest to show up at the local church. They show up, and see the bear sitting in the front pew, singing psalms to the Lord.
It was time for the Sunday morning service to begin but there was no trace of the main preacher.
A young priest was asked to take his place. Worried out of his mind, he went to the bishop's room. "What shall I do, bishop? They're asking me to give a sermon and I don't have anything prepared!"
"Trust the Lord, good man, trust the Lord." said the Bishop. Having found no solution, the pries...
< Healing >
A guy in a wheelchair entered a restaurant one afternoon and asked
the waitress for a cup of coffee. The guy looked across the
restaurant and asked, "Is that Jesus sitting over there?" The waitress
nodded "yes," so the guy requested that she give Jesus a cup of
coffee...
Aliens visit earth
People were found by extraterrestrials. Aliens descended from the skies on the earth surface. Humanity wondered who should they sent to talk to the aliens. Top scientists from around the world agreed to send prominent biologist and well-known religion critique Richard Dawkins. He approached the spac...
At school one day, Little Johnny's teacher asks the class to use the word "contagious" in a sentence…
Cindy raises her hand. "Yes, Cindy?" She answers, "I was at the dentist's office with my mom, and she said not to play with the toys in the waiting room because the other kids were contagious."
"Very good, Cindy!" the teacher said, "Anyone else want to try?" Samantha raises her hand. "Yes, Sa...
I don't get why all these people praise lawyers just for being U2 fans
Suddenly they're special for taking on Pro-Bono cases?
Oil well fire fighters
3 tycoons own an oil well that catches on fire. They try everything they can think of to put it out, to no avail. So they call Red Adair, the famous oil well fire fighter. He tells them he can put out the fire, but it will be 3 weeks before he can get there and will cost half a million dollars. ...
An Irish priest has a rat problem...
He tries everything to get rid of them. Traps, poison, setting cats loose in his church. Nothing works, and they are starting to deter some of his regular attendees because they see the rats during communion.
One day a Bishop is visiting and the priest tells him his woes.
"Hav...
Q: What's the highest form of praise you can receive from a pimp?
A: A back-handed compliment.
A man walks into a bar and orders a beer from the bartender.
As the bartender goes to get the drink, the bowl of peanuts pipes up, "excellent choice, on the beer! A really great decision."
Thinking he is hearing things, the man goes to the bathroom to wash his face.
On his way there, the juke box yells at him, "a goddamn beer? Horrible choice. ...
Three guys on a hiking trip find a lamp, so they rub it until a genie appears who generously offers to grant each of them three wishes.
The first one goes "I would love to be as rich as I ever want, with enough money appearing in my bank account whenever I want to buy anything." The second one says "that's amazing, I want the same!", but the third one says "I want my left arm to constantly rotate clockwise."
- "Done", says the ge...
John and the parrot
John brought home a parrot as his pet. He taught the bird how to speak, and was amazed at its learning pace. Being a quick learner, the parrot started picking up words from its surroundings and would keep John entertained.
All was lovely and peaceful until one fine day, the parrot started usi...
An Irish priest is driving home from a night at his favourite bar.
A police officer notices a car swerving all over the road and proceeds to pursue. The Irishman pulls over and the cop makes his way to the driver.
Checking the vehicle and noticing bottles all over the floorboard, the policeman asks, "Have you been drinking?"
"I don't know what you're...
One day my Gramma was out, and my Grampa was in charge of me.
I was maybe 2 1/2 years old. Someone had given me a little 'tea set' as a gift, and it was one of my favorite toys.
Grampa was in the living room engrossed in the evening news when I brought him a little cup of 'tea', which ...
A man wants to go horseback riding
When the man gets to the ranch, he asks the owner if he can ride of the horses. The owner replies "Looks like we have one horse you can ride, however this horse is a little different than our other horses".
The man asks "How so?"
"This horse is religious. I ride this horse to church, i...
Genghis Khan stumbles across a great palace in Northern China
It was a magnificent golden palace, with beautiful ornaments covering every surface as it towered over the surrounding landscape with its size. The steps leading up to the front entrance were crafted from the finest marble, the pillars holding up the ceiling sculpted with the rarest jade. It was tru...
Jesus and Moses
Jesus and Moses were sitting up in heaven in the late 70s early 80s looking down on the beaches of California. Jesus says, "Damn Moses, I'm bored." Moses says,"Me too. it looks like they are having a good time. Let's go down."
So they go down and are walking along the beach with their long...
Two priests go into the shower
In the shower they notice that there are no soap.
One of them says "Il go to my room and bring 2 soap bars" runs naked to the room, grabs 2 bars of soap and when he was running back...
3 nuns show up, first thing he remembers to do "freezes like a statue"..
Nuns look at the s...
A coffin thief's dying request to his son
So a coffin thief is on his death bed and his son asks if there is anything he'd like his son to do.
He says I've spent my life stealing coffins and unfortunately, I've earned a very bad reputation along the way. However, he wants people to remember him in good words. He dies shortly thereaft...
An Irishman walking the streets of Belfast...
Paddy was walking down a dark alley in Belfast one night at the height of the troubles when he feels a gun pointed at his back and hears a harsh raspy whisper "Protestant or Catholic?".
Paddy was absolutely shitting bricks and was thinking fast and replied "As a matter a fact, Oim Jewish!" to wh...
When Bill Gates donates 30% of his net worth
He is praised as a generous hero, But when I do it people tell me they don't accept donations under a dollar.
The man and the mule
A man found a priest selling a mule, so he walked over to him and said, "What can it do?" the priest says, "Well if you say praise the lord he starts runnin'." "Show me." The priest says praise the Lord and the mule takes off runnin. then the priest said,"If you say amen he'll stop." "Show me." He s...
Little Johnny walked into a Bar
Little Johnny walked into a Bar and
aggressively shouted his order to the bar man,
"Please give me half chicken tandoori and then
give everyone half a kilo steak and mutton,
bcoz when I eat, I want everyone to eat!"
Bar man processed his request and gave him
meal and everyon...
I'm starting a new pasta cult
May we praise the Noodle Lord for eternity. Ramen.
A man and a woman get married
After twenty years of marriage, the wife tragically passes away before her time.
As they are carrying the casket in the church, one of the pall bearers bumps it on a corner, and from the casket they hear a gasp.
The woman climbs out of the casket, it's a miracle, she's on the news, peo...
There's this newcomer to a small Southern town.
His first Sunday there, he walks into town, excited to praise the Lord in his new church with his new neighbors.
But glowering faces step out from the darkness behind the open doors before he even makes it up the stairs. The congregation tells him he has to go to "his" church, which is on the...
A trooper pulls over a priest and immediately smells alcohol on his breath. The next thing he notices is an empty wine bottle on the passenger seat. "Have you been drinking?" the trooper asks. "Just water!", the priest replies. "Then why do I smell wine?"
The priest looks at the bottle and shouts, "Praise the Lord, He's done it again!"
A gentleman on his way to a job interview in Brooklyn breaks the sole of his shoe.
Not wanting to arrive at the interview with a broken shoe, he asks some by-standers where the closest cobbler is.
"You'll want Olaf Von Gundersen." says one gentleman. "He isn't very close by but he's quick and his prices are just right."
Having no choice, the man with the broken shoe...
Locked My Keys In The Car
A devout lady was feeling drowsy while driving home on a quiet highway, so she pulled over, and got out for a walk and some fresh air. When she returned to her car, she was horrified to discover that she had locked her keys inside. She searched her pockets but found nothing to help; no keys; no ph...
Spiderman, Iron-man and Superman decided to check who has the strongest erection
Iron-man thinks about Pepper Potts hangs 5-gallon bucket on his shlong and walks 5 yards. Everybody praises him.
Spiderman thinks about Gwen Stacy hangs 20-gallon ke...
A woman gets married and has 10 kids.
Eventually, her husband dies, and she waits a year to grieve and gets married a second time. With that husband she has 8 kids.
That husband also dies, so she ends up getting married a third time. She has 6 kids with this man.
After a few years, this husband also dies. Finally, the wo...
A police man pulls over a priest for swerving..
As the officer approaches the window he notices a bottle in a brown bag on the seat.
Officer says, "father, I pulled you over for swerving back there. You haven't been drinking have you?"
"No my son. Why would you ask that?"
"Well I noticed the bottle on the seat next to you."
A father just had his first son...
"I'm going to give him everything he desires" the father said as he saw his newborn son.
As soon as the son started speaking, "Son what do you wish for?" The son replied..."ping pong balls" , the father wanting to keep his promise bought him that.
The child grew and was a brilliant kid...
English Literature Class
Professor starts the literature class. "Today's lesson is metaphors. A metaphor conceptualizes and exaggerate a big thing into a small creative image. As an example you can say 'The snow is a white blanket' instead of saying that snow is white. Can anyone say a similar metaphor ? "
"Tom Crui...
A guy was asked this question.
Host: YOU & YOUR FAMILY ARE CARRYING 50 KG OF GOLD FROM DUBAI IN A BOAT. IMBALANCED DUE TO EXCESS WEIGHT YOU HAVE TO GET RID OF THE WEIGHT TO BALANCE IT
AFTER 50 MILES, THE BOAT SUDDENLY GETS
THERE ARE 4 PEOPLE..
YOUR BEST FRIEND, YOUR MOTHER, YOUR FUTURE LIFE PARTNER & ...
A person decided to buy a horse from a monk
So, he paid the priced and got very excited to ride it. "Hyah!" he said. But the horse didn't move. So, he asks the monk,"Why won't the horse go?". The monk replied,"This horse is a religious horse. If you say ' Thank god', it will start moving. If you say ' All the praise be to god', it will stop.<...
praise the lord
complimenteulogycommendcongratulationslaudextolcommendationadmirationacclaimapplausekudoscongratulateapplaudsaluteaccoladesgratitudeappreciationtributeworshipwelcomeadorationtributesthankcongratulationencouragementthanksrecommendationhomagecriticismgloryscornrebukeattentionovationaccoladedevotionprayacknowledgementdedicationvaluesuperlativeevaluateapprovalassessappraisehallelujahtrolltestimonialexaltproclaim

redpajama_set_name: RedPajamaCommonCrawl


An all-party committee examining ride-hailing regulations in British Columbia recommends few restrictions when it comes to boundaries, fares, and supplies of vehicles and drivers.
The nine-member committee recommends drivers only need a Class 5 licence to operate ride-hailing vehicles, but Trevena says she's staying firm with a Class 4 requirement because it provides more safety for passengers.
Most drivers in B.C. hold a Class 5 licence, but drivers of taxis, ambulances and small buses must hold Class 4 licences.
Liberal Stephanie Cadieux, who is the deputy chairwoman of the select standing committee on Crown corporations, says she expects ride hailing won't be available until next year.
Trevena says the government introduced legislation last year that aims to pave the way for the introduction ride-hailing later this year.


Therefore, following a proper format when writing an outline of your research paper is easily the most important step. No matter which type of college paper you require, while it's an essay or any type of report, you're guaranteed to acquire an exemplary paper. Write a concise summary for a conclusion The conclusion of your paper has to be a concise overview of all of the points you have made in the paper.
Each of these forms of paper is owned by the category of informative essay. For writing an outline for a research paper, you will need to understand the proper format, which may help you to explain your suggestions and observations in an impressive way. You always have to make an outline of what you plan to write even dissertation problem statement if you are writing the essay on a test.
Thesis statement needs to be debatable. After the work by means of your thesis statement is completed, begin to consider your essay organization. Try to remember your rebuttal is as critical as your paper in conditions of correct grammar and spelling.
The program can generate a whole essay in under a second, dependent on a few keywords. Our primary goal is to supply you with academic college essay help. Scholars will need to understand if there's a particular field their chosen journal focuses on.
The title, which is a significant portion of the essay, ought to be written in bold letters and ought to be apt and catchy. Put simply, in order to get a straight-A your essay must read readily, it has to demonstrate your clear comprehension of the topic and it must showcase your essay writing skills. Select your topic or, if the topic was assigned, choose how you want to approach it.
Given below is an appropriate format to compose such essays. Crib-book It is a small book made of torn pages from the major one. In the English classroom, though, a text has traditionally been a parcel of literature.
In order to be sure your literature review flows, consider at each step of the writing process how what you're writing relates to your study. You are able to write about all of the literature kinds of a specific age, say Elizabethan literature https://www.privatewriting.com/ or Victorian literature. This list comprises essay topics based on an assortment of genres.
Writing an essay outline can be hard. An essay might be a reflection of the author's views and individual values, molded in the kind of a story. Writing this kind of essay isn't a simple job.
Writing is among the vital methods of expressing your thoughts, and communicating thoughts and views to others. Be certain that the primary story is introduced in such a way that would distinctly indicate if it's a personal experience or merely an observation. Furthermore, it's possible to also offer the story behind every picture taken to make it even more informative of course.
There is not any way of knowing the prompt beforehand and teaching yourself specific truth about the topic would not be possible, so the best method to get ready for the essay is to read and write often. While writing, the most crucial consideration to remember is that it's your whole life that you're describing and writing about. In the long run, it's important to pick topics that one feels comfortable to write on so you can do justice to them.
Attempting to assess the circulation of your paper is difficult if you're stopping to correct formatting errors at exactly the same time. Certainly to compose a paper is exactly not the simplest way for an apprentice and must learn and with the trade the old-fashioned method of writing an assignment. Be sure that your paper is only one of it's kind.
Experience gained from the very first job can be a turning point in somebody's life. Thus, the skills of tactful writing are important for achieving career and company targets. Always place your order when you have sufficient time to permit writers do through work.
Content writing requires not just the content http://www.nacc.edu/Content/Uploads/nacc.edu/files/OIPA/SACSCOC/Complete%20Compliance%20Certification_022414.pdf of internet pages. Readers of the journal don't necessarily specialize in your field, so be certain they will comprehend the aim of your research. Deciding upon the topic is a rather important step.
Be Though you need to encompass all of your research info, including its purpose, method and conclusion, you need to be brief. One other important aspect in regards to proposal is to concentrate on a well written introduction. The very first step here, ought to be to acquaint yourself with the many techniques of research and implement them.
Go for genuine writersSince the net is saturated with essay writers, it is necessary to come across a formula of telling reliable from con providers. So YOU TOO can write articles on your preferred subject in your online marketing efforts. Find out how to edit and proofread your company writing with our help.


text:
/////////////////////////////////////////////////////////////////////////////
// Name:        src/gtk/combobox.cpp
// Purpose:
// Author:      Robert Roebling
// Copyright:   (c) 1998 Robert Roebling
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"

#if wxUSE_COMBOBOX

#include "wx/combobox.h"

#ifndef WX_PRECOMP
    #include "wx/intl.h"
    #include "wx/settings.h"
    #include "wx/textctrl.h"    // for wxEVT_TEXT
    #include "wx/arrstr.h"
#endif

#include <gtk/gtk.h>
#include "wx/gtk/private.h"
#include "wx/gtk/private/gtk2-compat.h"

// ----------------------------------------------------------------------------
// GTK callbacks
// ----------------------------------------------------------------------------

extern "C" {
static void
gtkcombobox_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
{
    wxCommandEvent event( wxEVT_TEXT, combo->GetId() );
    event.SetString( combo->GetValue() );
    event.SetEventObject( combo );
    combo->HandleWindowEvent( event );
}

static void
gtkcombobox_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
{
    combo->SendSelectionChangedEvent(wxEVT_COMBOBOX);
}

static void
gtkcombobox_popupshown_callback(GObject *WXUNUSED(gobject),
                                GParamSpec *WXUNUSED(param_spec),
                                wxComboBox *combo)
{
    gboolean isShown;
    g_object_get( combo->m_widget, "popup-shown", &isShown, NULL );
    wxCommandEvent event( isShown ? wxEVT_COMBOBOX_DROPDOWN
                                  : wxEVT_COMBOBOX_CLOSEUP,
                          combo->GetId() );
    event.SetEventObject( combo );

#ifndef __WXGTK3__
    // Process the close up event once the combobox is already closed with GTK+
    // 2, otherwise changing the combobox from its handler result in errors.
    if ( !isShown )
    {
        combo->GetEventHandler()->AddPendingEvent( event );
    }
    else
#endif // GTK+ < 3
    {
        combo->HandleWindowEvent( event );
    }
}

}

//-----------------------------------------------------------------------------
// wxComboBox
//-----------------------------------------------------------------------------

wxBEGIN_EVENT_TABLE(wxComboBox, wxChoice)
    EVT_CHAR(wxComboBox::OnChar)

    EVT_MENU(wxID_CUT, wxComboBox::OnCut)
    EVT_MENU(wxID_COPY, wxComboBox::OnCopy)
    EVT_MENU(wxID_PASTE, wxComboBox::OnPaste)
    EVT_MENU(wxID_UNDO, wxComboBox::OnUndo)
    EVT_MENU(wxID_REDO, wxComboBox::OnRedo)
    EVT_MENU(wxID_CLEAR, wxComboBox::OnDelete)
    EVT_MENU(wxID_SELECTALL, wxComboBox::OnSelectAll)

    EVT_UPDATE_UI(wxID_CUT, wxComboBox::OnUpdateCut)
    EVT_UPDATE_UI(wxID_COPY, wxComboBox::OnUpdateCopy)
    EVT_UPDATE_UI(wxID_PASTE, wxComboBox::OnUpdatePaste)
    EVT_UPDATE_UI(wxID_UNDO, wxComboBox::OnUpdateUndo)
    EVT_UPDATE_UI(wxID_REDO, wxComboBox::OnUpdateRedo)
    EVT_UPDATE_UI(wxID_CLEAR, wxComboBox::OnUpdateDelete)
    EVT_UPDATE_UI(wxID_SELECTALL, wxComboBox::OnUpdateSelectAll)
wxEND_EVENT_TABLE()

wxComboBox::~wxComboBox()
{
    if (m_entry)
        GTKDisconnect(m_entry);
}

void wxComboBox::Init()
{
    m_entry = NULL;
}

bool wxComboBox::Create( wxWindow *parent, wxWindowID id,
                         const wxString& value,
                         const wxPoint& pos, const wxSize& size,
                         const wxArrayString& choices,
                         long style, const wxValidator& validator,
                         const wxString& name )
{
    wxCArrayString chs(choices);

    return Create( parent, id, value, pos, size, chs.GetCount(),
                   chs.GetStrings(), style, validator, name );
}

bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
                         const wxPoint& pos, const wxSize& size,
                         int n, const wxString choices[],
                         long style, const wxValidator& validator,
                         const wxString& name )
{
    if (!PreCreation( parent, pos, size ) ||
        !CreateBase( parent, id, pos, size, style, validator, name ))
    {
        wxFAIL_MSG( wxT("wxComboBox creation failed") );
        return false;
    }

    if (HasFlag(wxCB_SORT))
        m_strings = new wxGtkCollatedArrayString();

    GTKCreateComboBoxWidget();

    if (HasFlag(wxBORDER_NONE))
    {
        // Doesn't seem to work
        // g_object_set (m_widget, "has-frame", FALSE, NULL);
    }

    GtkEntry * const entry = GetEntry();

    if ( entry )
    {
        // Set it up to trigger default item on enter key press
        gtk_entry_set_activates_default( entry,
                                         !HasFlag(wxTE_PROCESS_ENTER) );

        gtk_editable_set_editable(GTK_EDITABLE(entry), true);
    }

    Append(n, choices);

    m_parent->DoAddChild( this );

    if ( entry )
        m_focusWidget = GTK_WIDGET( entry );

    PostCreation(size);

    if ( entry )
    {
        if (style & wxCB_READONLY)
        {
            // this will assert and do nothing if the value is not in our list
            // of strings which is the desired behaviour (for consistency with
            // wxMSW and also because it doesn't make sense to have a string
            // which is not a possible choice in a read-only combobox)
            SetStringSelection(value);
            gtk_editable_set_editable(GTK_EDITABLE(entry), false);
        }
        else // editable combobox
        {
            // any value is accepted, even if it's not in our list
            gtk_entry_set_text( entry, wxGTK_CONV(value) );
        }

        g_signal_connect_after (entry, "changed",
                                G_CALLBACK (gtkcombobox_text_changed_callback), this);

        GTKConnectInsertTextSignal(entry);
        GTKConnectClipboardSignals(GTK_WIDGET(entry));
    }

    g_signal_connect_after (m_widget, "changed",
                        G_CALLBACK (gtkcombobox_changed_callback), this);

#ifndef __WXGTK3__
    if ( !gtk_check_version(2,10,0) )
#endif
    {
        g_signal_connect (m_widget, "notify::popup-shown",
                          G_CALLBACK (gtkcombobox_popupshown_callback), this);
    }

    return true;
}

void wxComboBox::GTKCreateComboBoxWidget()
{
#ifdef __WXGTK3__
    m_widget = gtk_combo_box_text_new_with_entry();
#else
    m_widget = gtk_combo_box_entry_new_text();
#endif
    g_object_ref(m_widget);

    m_entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(m_widget)));
}

GtkEditable *wxComboBox::GetEditable() const
{
    return GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(m_widget)));
}

void wxComboBox::OnChar( wxKeyEvent &event )
{
    switch ( event.GetKeyCode() )
    {
        case WXK_RETURN:
            if ( HasFlag(wxTE_PROCESS_ENTER) && GetEntry() )
            {
                // GTK automatically selects an item if its in the list
                wxCommandEvent eventEnter(wxEVT_TEXT_ENTER, GetId());
                eventEnter.SetString( GetValue() );
                eventEnter.SetInt( GetSelection() );
                eventEnter.SetEventObject( this );

                if ( HandleWindowEvent(eventEnter) )
                {
                    // Catch GTK event so that GTK doesn't open the drop
                    // down list upon RETURN.
                    return;
                }
            }
            break;
    }

    event.Skip();
}

void wxComboBox::EnableTextChangedEvents(bool enable)
{
    if ( !GetEntry() )
        return;

    if ( enable )
    {
        g_signal_handlers_unblock_by_func(gtk_bin_get_child(GTK_BIN(m_widget)),
            (gpointer)gtkcombobox_text_changed_callback, this);
    }
    else // disable
    {
        g_signal_handlers_block_by_func(gtk_bin_get_child(GTK_BIN(m_widget)),
            (gpointer)gtkcombobox_text_changed_callback, this);
    }
}

void wxComboBox::GTKDisableEvents()
{
    EnableTextChangedEvents(false);

    g_signal_handlers_block_by_func(m_widget,
        (gpointer)gtkcombobox_changed_callback, this);
    g_signal_handlers_block_by_func(m_widget,
        (gpointer)gtkcombobox_popupshown_callback, this);
}

void wxComboBox::GTKEnableEvents()
{
    EnableTextChangedEvents(true);

    g_signal_handlers_unblock_by_func(m_widget,
        (gpointer)gtkcombobox_changed_callback, this);
    g_signal_handlers_unblock_by_func(m_widget,
        (gpointer)gtkcombobox_popupshown_callback, this);
}

GtkWidget* wxComboBox::GetConnectWidget()
{
    return GTK_WIDGET( GetEntry() );
}

GdkWindow* wxComboBox::GTKGetWindow(wxArrayGdkWindows& /* windows */) const
{
#ifdef __WXGTK3__
    return GTKFindWindow(GTK_WIDGET(GetEntry()));
#else
    return gtk_entry_get_text_window(GetEntry());
#endif
}

// static
wxVisualAttributes
wxComboBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
{
#ifdef __WXGTK3__
    return GetDefaultAttributesFromGTKWidget(gtk_combo_box_new_with_entry(), true);
#else
    return GetDefaultAttributesFromGTKWidget(gtk_combo_box_entry_new(), true);
#endif
}

void wxComboBox::Clear()
{
    wxTextEntry::Clear();
    wxItemContainer::Clear();
}

void wxComboBox::SetValue(const wxString& value)
{
    if ( HasFlag(wxCB_READONLY) )
        SetStringSelection(value);
    else
        wxTextEntry::SetValue(value);
}

void wxComboBox::SetString(unsigned int n, const wxString& text)
{
    wxChoice::SetString(n, text);

    if ( static_cast<int>(n) == GetSelection() )
    {
        // We also need to update the currently shown text, for consistency
        // with wxMSW and also because it makes sense as leaving the old string
        // in the text but not in the list would be confusing to the user.
        SetValue(text);

        // And we need to keep the selection unchanged, modifying the item is
        // not supposed to deselect it.
        SetSelection(n);
    }
}

// ----------------------------------------------------------------------------
// standard event handling
// ----------------------------------------------------------------------------

void wxComboBox::OnCut(wxCommandEvent& WXUNUSED(event))
{
    Cut();
}

void wxComboBox::OnCopy(wxCommandEvent& WXUNUSED(event))
{
    Copy();
}

void wxComboBox::OnPaste(wxCommandEvent& WXUNUSED(event))
{
    Paste();
}

void wxComboBox::OnUndo(wxCommandEvent& WXUNUSED(event))
{
    Undo();
}

void wxComboBox::OnRedo(wxCommandEvent& WXUNUSED(event))
{
    Redo();
}

void wxComboBox::OnDelete(wxCommandEvent& WXUNUSED(event))
{
    RemoveSelection();
}

void wxComboBox::OnSelectAll(wxCommandEvent& WXUNUSED(event))
{
    SelectAll();
}

void wxComboBox::OnUpdateCut(wxUpdateUIEvent& event)
{
    event.Enable( CanCut() );
}

void wxComboBox::OnUpdateCopy(wxUpdateUIEvent& event)
{
    event.Enable( CanCopy() );
}

void wxComboBox::OnUpdatePaste(wxUpdateUIEvent& event)
{
    event.Enable( CanPaste() );
}

void wxComboBox::OnUpdateUndo(wxUpdateUIEvent& event)
{
    event.Enable( CanUndo() );
}

void wxComboBox::OnUpdateRedo(wxUpdateUIEvent& event)
{
    event.Enable( CanRedo() );
}

void wxComboBox::OnUpdateDelete(wxUpdateUIEvent& event)
{
    event.Enable(HasSelection() && IsEditable()) ;
}

void wxComboBox::OnUpdateSelectAll(wxUpdateUIEvent& event)
{
    event.Enable(!wxTextEntry::IsEmpty());
}

void wxComboBox::Popup()
{
     gtk_combo_box_popup( GTK_COMBO_BOX(m_widget) );
}

void wxComboBox::Dismiss()
{
    gtk_combo_box_popdown( GTK_COMBO_BOX(m_widget) );
}

wxSize wxComboBox::DoGetSizeFromTextSize(int xlen, int ylen) const
{
    wxSize tsize( wxChoice::DoGetSizeFromTextSize(xlen, ylen) );

    GtkEntry* entry = GetEntry();
    if (entry)
    {
        // Add the margins we have previously set, but only the horizontal border
        // as vertical one has been taken account in the previous call.
        // Also get other GTK+ margins.
        tsize.IncBy(GTKGetEntryMargins(entry).x, 0);
    }

    return tsize;
}

#endif // wxUSE_COMBOBOX

redpajama_set_name: RedPajamaGithub


This class will teach students the safety protocols, shooting skills, and management issues associated with shooting air rifles in state-operated facilities. Students will learn about and practice shooting range protocols, gun safety, range safety, range safety as well as the physical and mental principles of marksmanship. Students will also learn to utilize proper rifle nomenclature in their on-range exercises and competition communications as well as learn to handle .177 Olympic grade, air rifles.


Liverpool confirmed on their official website on Monday evening that midfielder Joe Allen has completed his move to Premier League rivals Stoke City.
Allen, 25, was a major signing for Brendan Rodgers back in the summer of 2012, as after the former Reds manager had moved from Swansea, he took midfielder Allen with him. from the Liberty Stadium to Anfield.
The Welsh international was an important player under Rodgers, but seemingly wasn't fancied by his replacement Jurgen Klopp, and Allen has now moved on to join Stoke City.
Allen's Anfield exit comes just weeks after he proved his quality on the international stage with Wales, serving up a number of top drawer displays to help his side into the semi-finals of Euro 2016.
Now, Allen is off to join Stoke and their Welsh manager Mark Hughes, potentially forming a superb partnership with Giannelli Imbula in the heart of Stoke's midfield.
As excited as Stoke fans may be by the signing of Allen, Liverpool supporters don't appear to be quite so keen with the midfielder's move.
Fans took to Twitter on Monday evening to react to Allen's exit, with many admitting they were gutted by the deal, given how Allen had become something of a cult hero at Anfield in 2016.
Others believe manager Klopp has made a mistake, as Allen still had a role to play having starred at Euro 2016, and should be in the Liverpool team ahead of Jordan Henderson.
Some simply wished Allen the best of luck at Stoke after four years on Merseyside, but it's clear that this transfer has left many supporters unhappy.


Get ready for the Authentic Mystic Tan experience. You benefit from a consistently smooth, natural-looking tan that leaves your skin nourished and beautifully bronzed. The secret to providing the perfect tan? The Mystic Tan Myst is specially formulated to work with the exclusive MagneTan™ Technology, ensuring a consistent tan every time – with no streaks.
Our exclusive line of Mystic Tan booths and products provide you with the Authentic Mystic Tan experience that meets your individual needs.
*Glow: produces a hint of color for a natural, healthy looking "glow"
*Revitalize: used as a pre-sunless treatment enhancer or as a stand alone skin treatment.
Contains anti-aging vitamins & moisturizers to revitalize your skin and keep your skin looking healthy & fresh!
*Ask us about our spray tan wedding package special today!
Post-tan Care: Avoid showering or getting wet/sweaty for 4-8 hours after your session.
We also carry and recommend a variety of products created to enhance and extend the life of your Mystic tan; any of our well trained staff can help you choose the product that is right for YOU!


text:
using RLESUtils, RunUtils, IFTTTUtils

const COMP = gethostname()
const DATA = "nvn_dasc"
const CONFIG = "normal"
const I_START = 1
const I_END = 50
const NOTIFY = false

template_gp(i) =
"""
using GrammarExpts,ACASX_GP,RLESUtils,IFTTTUtils
config=configure(ACASX_GP,"$CONFIG","$DATA")
acasx_gp(;seed=$i, outdir=Pkg.dir("GrammarExpts/results/ACASX_Compare/ACASX_GP/seed$i"), config...)
$NOTIFY && sendifttt(;value1="gp,$i", value2="$COMP", value3="$DATA")
"""

template_ge(i) =
"""
using GrammarExpts,ACASX_GE,RLESUtils,IFTTTUtils
config=configure(ACASX_GE,"$CONFIG","$DATA")
acasx_ge(;seed=$i, outdir=Pkg.dir("GrammarExpts/results/ACASX_Compare/ACASX_GE/seed$i"), config...)
$NOTIFY && sendifttt(;value1="ge,$i", value2="$COMP", value3="$DATA")
"""

template_mc(i) =
"""
using GrammarExpts,ACASX_MC,RLESUtils,IFTTTUtils
config=configure(ACASX_MC,"$CONFIG","$DATA")
acasx_mc1(;seed=$i, outdir=Pkg.dir("GrammarExpts/results/ACASX_Compare/ACASX_MC/seed$i"), config...)
$NOTIFY && sendifttt(;value1="mc,$i", value2="$COMP", value3="$DATA")
"""

template_mcts(i) =
"""
using GrammarExpts,ACASX_MCTS,RLESUtils,IFTTTUtils
config=configure(ACASX_MCTS,"$CONFIG","$DATA")
acasx_mcts(;seed=$i, outdir=Pkg.dir("GrammarExpts/results/ACASX_Compare/ACASX_MCTS/seed$i"), config...)
$NOTIFY && sendifttt(;value1="mcts,$i", value2="$COMP", value3="$DATA")
"""

template_ce(i) =
"""
using GrammarExpts,ACASX_CE,RLESUtils,IFTTTUtils
config=configure(ACASX_CE,"$CONFIG","$DATA")
acasx_ce(;seed=$i, outdir=Pkg.dir("GrammarExpts/results/ACASX_Compare/ACASX_CE/seed$i"), config...)
$NOTIFY && sendifttt(;value1="ce,$i", value2="$COMP", value3="$DATA")
"""

notifydone() = sendifttt(;value1="$COMP done")

A = JuliaSource[]
append!(A, [JuliaSource(template_ce(i)) for i=I_START:I_END])
append!(A, [JuliaSource(template_ge(i)) for i=I_START:I_END])
append!(A, [JuliaSource(template_gp(i)) for i=I_START:I_END])
append!(A, [JuliaSource(template_mc(i)) for i=I_START:I_END])
#append!(A, [JuliaSource(template_mcts(i)) for i=I_START:I_END])

#include("script.jl")
#fs=julia_process(A, np); notifydone()


Blogging became very popular in recent years and it just keeps getting more and more traction. Since WordPress is the most popular blogging platform out there on the market, it's only logical that it is on top of the list of every future blogger. However, new bloggers are faced with the question of choosing the right hosting service for their blog. Hosting is very important, especially when you're planning on turning your blog into a profitable career.
There are a lot of hosting options, but let's focus on what interest bloggers the most – managed WordPress hosting. What managed WordPress hosting means is that the hosting provider is solely focusing on improving your WordPress platform. That includes more speed, improved security, more storage space and so on. To help you better understand this, here are pros and cons of managed WordPress hosting.
Nowadays, speed is the most important factor for the online population. Being able to navigate through your website without delays is important to customers. It can mean the difference between making a purchase and leaving for good. Also, if your blog is sluggish, you won't generate many leads yet alone convert them into customers. That's why managed WordPress hosting offers an increased speed for your platform.
Compared to shared hosting where speed is divided to all users, managed hosting is specifically dedicated to you, which means you're entitled to the full extent of the speed that's offered. That means your website will run smoothly and you won't have to worry about bad reviews from your visitors. Moreover, fast website speed can reduce the page loading time by two seconds, which is a lot in today's standards.
Security of your website is crucial for you and your visitors. As technology progressed so did the hackers become more sophisticated. Today, every bit of information can be found online and hackers tend to exploit that fact to get their hands on valuable data. Your website security should be your top priority and with managed WordPress hosting, your security will be handled properly.
Hosting providers perform regular scans that protect you from spam, malware, and other malicious software. They also protect you from DDoS attacks (Distributed Denial of Service). Also, if you're a victim of an attack, the hosting providers will offer you an efficient recovery solution.
Software updates are essential for smooth operation of your website. Managed hosting providers update your software automatically and regularly in order to ensure that your website performs accordingly.
With automatic updates, you're entitled to the latest features, bug fixes, and security patches that will make your website run smoother than before. Furthermore, every update that's made available will be automatically implemented and you won't have to do anything on your own.
Every website owner should be aware of how important backups really are. Just imagine running your website for a couple of months or maybe even a year. Then, all of a sudden, your website crashes for some reason and you have to rebuild it from scratch. You can also imagine how difficult and frustrating that would be – to put it mildly.
What backups do is save the current version of your website and store it for emergencies. If your website happens to crash for whatever reason, you can restore it in a matter of seconds thanks to the managed hosting providers who backup your website regularly.
This is a con of managed hosting – their services and all the benefits they offer demand a significant investment. Again, compared to shared hosting where you can procure services for around $10 per month, managed hosting costs a bit more, with around $20-$30 for a basic package. If you want more storage space, faster speed, and other features, you will either have to pay extra or buy a better package.
These services are expensive, especially for blog or website owners who haven't started to generate any profit yet. However, compared to the benefits of services provided, the price is reasonable. The only problem is whether you can afford it or not. Moreover, you may want to opt for cheaper or shared hosting solutions in the beginning, but as soon as you can afford it, you should consider managed hosting as a worthy investment.
People love to use plugins because they add additional features to your website or blog. Some even offer valuable metrics that website owners use to measure their progress. However, some plugins are open source or third-party software and managed hosting providers may block access to them. This con is mostly because of security and performance reasons. Remember, you opted for a service that holds your best interest at hand and anything they consider a threat of any kind will be blocked.
Managed WordPress hosting offers a lot of benefits to website owners. However, with pros come the cons, and it's up to you to decide whether or not managed hosting is the right option for you.
Previous article: What Is MarTech and How Can It Help Your Startup?


text:
/**
 * Search expression routines
 */

#include "libxq.h"
#include "xqutil.h"

#include <string.h>

const xmlChar* XQ_EMPTY_NAMESPACE = (xmlChar*)"";

// local (private) routines and data types
typedef enum {
  XQ_TT_NONE = 0,
  XQ_TT_TOKEN,
  XQ_TT_IDENT,
  XQ_TT_STRING,
} xQTokenType;

typedef struct _xQToken {
  xQTokenType type;
  xmlChar* content;
  int length;
  const xmlChar* strPtr;
  xQStatusCode lastStatus;
} xQToken;

typedef xQStatusCode (*xQSearchExprCtorPtr)(xQSearchExpr**, xmlChar*, xmlChar*);

static xQStatusCode xQSearchExpr_alloc_init_copy(xQSearchExpr** self);
static xQStatusCode xQSearchExpr_alloc_init_allDescendants(xQSearchExpr** self);
static xQStatusCode xQSearchExpr_alloc_init_searchDescendants(xQSearchExpr** self, xmlChar* name, xmlChar* ns);
static xQStatusCode xQSearchExpr_alloc_init_searchImmediate(xQSearchExpr** self, xmlChar* name, xmlChar* ns);
static xQStatusCode xQSearchExpr_alloc_init_searchNextSibling(xQSearchExpr** self, xmlChar* name, xmlChar* ns);
static xQStatusCode xQSearchExpr_alloc_init_filterAttrEquals(xQSearchExpr** self, xmlChar* name, xmlChar* value);
static xQStatusCode xQSearchExpr_parseSelector(xQSearchExpr** expr, xQToken* tok);
static XQINLINE xQStatusCode xQSearchExpr_parseSingleSelector(xQSearchExpr** expr, xQToken* tok);
static XQINLINE xQStatusCode xQSearchExpr_parseCombinator(xQToken* tok, xQSearchExprCtorPtr* ctor);
static XQINLINE xQStatusCode xQSearchExpr_parseSimpleSelector(xQSearchExpr** expr, xQToken* tok, xQSearchExprCtorPtr ctor);
static XQINLINE xQStatusCode xQSearchExpr_parseElementName(xQToken* tok, xmlChar** nsPrefix, xmlChar** name, int* isWildcard);
static xQStatusCode xQSearchExpr_parseAttribs(xQSearchExpr** expr, xQToken* tok);
static xQStatusCode nextToken(xQToken* tokenContext);
static int xmlstrpos(const xmlChar* haystack, xmlChar needle);
#define initToken(t) memset(t, 0, sizeof(xQToken))
#define copyToken(dest, src) memcpy(dest, src, sizeof(xQToken))
#define tokenFirstChar(t) ((t)->content ? (t)->content[0] : 0)
#define destroyToken(t) if ((t) && (t)->content) xmlFree((t)->content);

#define freeAndResetPtr(s) if (s) { xmlFree(s); s = 0; }

/*
 * Selector grammar:
 *
 * selector        ::= single_selector | single_selector selector
 * single_selector ::= combinator simple_selector | simple_selector
 * combinator      ::= '>' | '+'
 * simple_selector ::= element_name | element_name attribs
 * element_name    ::= IDENT ':' IDENT | IDENT | '*'
 * attribs         ::=  attrib | attrib attribs
 * attrib          ::= '[' IDENT  '='  ( string | IDENT ) ']'
 * string          ::= '"' ( [^'"\\] | "'" | escape )* '"' | "'" ( [^'"\\] | '"' | escape )* "'"
 * escape          ::= '\' [\\'"]
 * IDENT           ::= [^ \t\r\n"'*+:=>\[\\\]]+
 */

// table for tokenizing
typedef xmlChar xQCharacterClass;
#define XQ_TYPE_NS 1
#define XQ_TYPE_SPACE 2
#define XQ_TYPE_NQ 4
#define XQ_TYPE_TOKEN 8

static const xQCharacterClass characterClassTable[] = {
  0, // NULL
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_SPACE | XQ_TYPE_NQ, // tab
  XQ_TYPE_SPACE | XQ_TYPE_NQ, // nl
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_SPACE | XQ_TYPE_NQ, // cr
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_SPACE | XQ_TYPE_NQ, // space
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_TOKEN, // "
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_TOKEN, // '
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_TOKEN | XQ_TYPE_NQ, // *
  XQ_TYPE_TOKEN | XQ_TYPE_NQ, // +
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_TOKEN | XQ_TYPE_NQ, // :
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_TOKEN | XQ_TYPE_NQ, // =
  XQ_TYPE_TOKEN | XQ_TYPE_NQ, // >
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_NS | XQ_TYPE_NQ,
  XQ_TYPE_TOKEN | XQ_TYPE_NQ, // [
  XQ_TYPE_TOKEN, // backslash
  XQ_TYPE_TOKEN | XQ_TYPE_NQ // ]
};
#define LAST_TABLE_ENTRY ']'
#define DEFAULT_CHARACTER_CLASS (XQ_TYPE_NS | XQ_TYPE_NQ)

#define xqCharacterClass(c) (c > LAST_TABLE_ENTRY ? DEFAULT_CHARACTER_CLASS : characterClassTable[c])
#define xqIsSpace(c) (xqCharacterClass(c) & XQ_TYPE_SPACE)
#define xqIsNotSpace(c) (xqCharacterClass(c) & XQ_TYPE_NS)
#define xqIsToken(c) (xqCharacterClass(c) & XQ_TYPE_TOKEN)
#define xqIsNotQuote(c) (xqCharacterClass(c) & XQ_TYPE_NQ)

/**
 * Return the position of needle in haystack or -1
 */
static int xmlstrpos(const xmlChar* haystack, xmlChar needle) {
  int i;

  for (i = 0; haystack[i]; i++)
    if (haystack[i] == needle)
      return i;

  return -1;
}

/**
 * Return the next token from the string
 */
static xQStatusCode nextToken(xQToken* tokenContext) {
  const xmlChar* start = tokenContext->strPtr;
  xmlChar* strStr = 0;
  xmlChar* strOut = 0;

  tokenContext->type = XQ_TT_NONE;
  if (tokenContext->content) xmlFree(tokenContext->content);
  tokenContext->content = 0;
  tokenContext->length = 0;

  // consume any leading space
  while (*start && xqIsSpace(*start))
    ++start;

  // advance the pointer to the end of the token
  tokenContext->strPtr = start;

  // STRING
  if (*start == '"' || *start == '\'') {
    ++(tokenContext->strPtr);

    strStr = malloc(xmlStrlen(tokenContext->strPtr));
    if ((!strStr) && *(tokenContext->strPtr))
      return tokenContext->lastStatus = XQ_OUT_OF_MEMORY;
    strOut = strStr;

    while (*(tokenContext->strPtr)) {
      while (xqIsNotQuote(*(tokenContext->strPtr)))
        *(strOut++) = *(tokenContext->strPtr++);

      // escape
      if (*(tokenContext->strPtr) == '\\') {
        if (xqIsNotQuote(*(tokenContext->strPtr+1))) {
          *(strOut++) = *(tokenContext->strPtr++);
          *(strOut++) = *(tokenContext->strPtr++);

        } else if (*(tokenContext->strPtr+1)) {
          ++(tokenContext->strPtr);
          *(strOut++) = *(tokenContext->strPtr++);
        }

      // opposite quote
      } else if (*(tokenContext->strPtr) && (*(tokenContext->strPtr) != *start)) {
        *(strOut++) = *(tokenContext->strPtr++);

      // end of string
      } else if (*(tokenContext->strPtr)) {
        ++(tokenContext->strPtr); // move past the end of string marker
        *strOut = 0;
        tokenContext->type = XQ_TT_STRING;
        tokenContext->content = strStr;
        tokenContext->length = strOut - strStr;
        return tokenContext->lastStatus = XQ_OK;

      }
    }

    // unterminated string
    if (strStr) free(strStr);
    return tokenContext->lastStatus = XQ_INVALID_SEL_UNTERMINATED_STR;

  // TOKEN
  } else if (xqIsToken(*start)) {
    tokenContext->type = XQ_TT_TOKEN;
    ++(tokenContext->strPtr);

  // IDENT
  } else if (*start) {
    tokenContext->type = XQ_TT_IDENT;
    while (xqIsNotSpace(*(tokenContext->strPtr)))
      ++(tokenContext->strPtr);

  } else {

    return tokenContext->lastStatus = XQ_NO_TOKEN;

  }

  tokenContext->content = xmlStrndup(start, tokenContext->strPtr - start);
  tokenContext->length = tokenContext->strPtr - start;
  return tokenContext->lastStatus = XQ_OK;
}

/*
void dumpAST(xQSearchExpr* self, int level) {
  int i;

  if (level == 0)
    printf("parsed expression:\n ");
  else
    printf(" ");

  for (i = 0; i < level; i++) { printf(" "); }

  printf("0x%lx ", (long)self);

  if (self->operation == _xQ_findDescendantsByName) {
    printf("_xQ_findDescendantsByName %s\n", self->argv[0]);
  } else if (self->operation == _xQ_findChildrenByName) {
    printf("_xQ_findChildrenByName %s\n", self->argv[0]);
  } else if (self->operation == _xQ_filterAttributeEquals) {
    printf("_xQ_filterAttributeEquals %s %s\n", self->argv[0], self->argv[1]);
  } else if (self->operation == _xQ_addToOutput) {
    printf("_xQ_addToOutput\n");
  } else {
    printf("unknown\n");
  }

  if (self->next)
    dumpAST(self->next, level + 1);
}
*/

/**
 * Allocate and initialize a new xQSearchExpr object from an expression
 * string.
 *
 * Returns a pointer to the new instance or 0 on error
 */
xQStatusCode xQSearchExpr_alloc_init(xQSearchExpr** self, const xmlChar* expr) {
  const xmlChar* ptr = expr;
  xQStatusCode status = XQ_OK;
  xQToken tok;

  initToken(&tok);

  tok.strPtr = expr;
  nextToken(&tok);

  status = xQSearchExpr_parseSelector(self, &tok);

  if (status == XQ_NO_MATCH) {
    if (tok.lastStatus != XQ_OK && tok.lastStatus != XQ_NO_TOKEN)
      status = tok.lastStatus;
    else if (tok.type != XQ_TT_NONE)
      status = XQ_INVALID_SEL_UNEXPECTED_TOKEN;
    else
      status = XQ_OK;
  }

  destroyToken(&tok);

  if (status == XQ_OK && (!*self))
    status = xQSearchExpr_alloc_init_copy(self);

  if (status != XQ_OK) {
    xQSearchExpr_free(*self);
    *self = 0;
  }

  return status;
}

/**
 * Allocate and initialize a new xQSearchExpr object from an expression
 * string. The created expression can be used for filtering a node list,
 * as opposted to searching (searching self instead of descendants).
 *
 * Returns a pointer to the new instance or 0 on error
 */
xQStatusCode xQSearchExpr_alloc_initFilter(xQSearchExpr** self, const xmlChar* expr) {
  const xmlChar* ptr = expr;
  xQStatusCode status = XQ_OK;
  xQToken tok;

  initToken(&tok);

  tok.strPtr = expr;
  nextToken(&tok);

  status = xQSearchExpr_parseSelector(self, &tok);

  if (status == XQ_NO_MATCH) {
    if (tok.lastStatus != XQ_OK && tok.lastStatus != XQ_NO_TOKEN)
      status = tok.lastStatus;
    else if (tok.type != XQ_TT_NONE)
      status = XQ_INVALID_SEL_UNEXPECTED_TOKEN;
    else
      status = XQ_OK;
  }

  destroyToken(&tok);

  if (status == XQ_OK && (!*self))
    status = xQSearchExpr_alloc_init_copy(self);
  else if (status == XQ_OK) {
    // convert to self-search
    if ((*self)->operation == _xQ_findDescendants)
      (*self)->operation = _xQ_addToOutput;
    else if ((*self)->operation == _xQ_findDescendantsByName)
      (*self)->operation = _xQ_filterByName;
  }

  if (status != XQ_OK)
    xQSearchExpr_free(*self);

  return status;
}

/**
 * Return the tail from an xQSearchExpr list
 */
static XQINLINE xQSearchExpr* expressionTail(xQSearchExpr** expr) {
  xQSearchExpr* lastExpr = *expr;

  while (lastExpr && lastExpr->next)
    lastExpr = lastExpr->next;

  return lastExpr;
}

/**
 * Parse a selector from the string
 *
 * Grammar:
 *
 * selector        ::= single_selector | single_selector selector
 */
static xQStatusCode xQSearchExpr_parseSelector(xQSearchExpr** expr, xQToken* tok) {
  xQStatusCode status = XQ_OK;
  *expr = 0;

  // single_selector
  status = xQSearchExpr_parseSingleSelector(expr, tok);

  // | single_selector selector
  if (status == XQ_OK)
    status = xQSearchExpr_parseSelector(&(expressionTail(expr)->next), tok);

  return status;
}

/**
 * Parse a single selector from the string
 *
 * Grammar:
 *
 * single_selector ::= combinator simple_selector | simple_selector
 */
static XQINLINE xQStatusCode xQSearchExpr_parseSingleSelector(xQSearchExpr** expr, xQToken* tok) {
  xQStatusCode status = XQ_OK;
  xQStatusCode cmbStatus = XQ_OK;
  xQSearchExprCtorPtr ctor = xQSearchExpr_alloc_init_searchDescendants;
  *expr = 0;

  // combinator simple_selector
  cmbStatus = xQSearchExpr_parseCombinator(tok, &ctor);

  // | simple_selector
  status = xQSearchExpr_parseSimpleSelector(expr, tok, ctor);

  if (status == XQ_NO_MATCH && cmbStatus != XQ_NO_MATCH)
    return XQ_INVALID_SEL_UNEXPECTED_TOKEN;

  return status;
}

/**
 * Parse a combinator and selector from the string
 *
 * Grammar:
 *
 * combinator      <= '>' | '+'
 */
static XQINLINE xQStatusCode xQSearchExpr_parseCombinator(xQToken* tok, xQSearchExprCtorPtr* ctorPtr) {

  if (tok->type == XQ_TT_TOKEN && tokenFirstChar(tok) == '>') {
    *ctorPtr = xQSearchExpr_alloc_init_searchImmediate;
    nextToken(tok);
    return XQ_OK;

  } else if (tok->type == XQ_TT_TOKEN && tokenFirstChar(tok) == '+') {
    *ctorPtr = xQSearchExpr_alloc_init_searchNextSibling;
    nextToken(tok);
    return XQ_OK;

  } else {
    return XQ_NO_MATCH;
  }

}

/**
 * Parse a simple selector
 *
 * Grammar:
 *
 * simple_selector ::= element_name | element_name attribs
 */
static XQINLINE xQStatusCode xQSearchExpr_parseSimpleSelector(xQSearchExpr** expr, xQToken* tok, xQSearchExprCtorPtr ctor) {
  xQStatusCode status = XQ_OK;
  xmlChar* nsPrefix = 0;
  xmlChar* name = 0;
  int isWildcard = 0;

  // element_name
  status = xQSearchExpr_parseElementName(tok, &nsPrefix, &name, &isWildcard);

  if (status == XQ_OK && isWildcard)
    status = xQSearchExpr_alloc_init_allDescendants(expr);
  else if (status == XQ_OK)
    status = ctor(expr, name, nsPrefix);

  // | element_name attribs
  if (status == XQ_OK)
    status = xQSearchExpr_parseAttribs(&((*expr)->next), tok);

  return status;
}

/**
 * Parse an element name
 *
 * Grammar:
 *
 * element_name    ::= IDENT ':' IDENT | IDENT | '*'
 */
static XQINLINE xQStatusCode xQSearchExpr_parseElementName(xQToken* tok, xmlChar** nsPrefix, xmlChar** name, int* isWildcard) {
  xQStatusCode status = XQ_OK;
  *isWildcard = 0;

  // IDENT ':' IDENT | IDENT
  if (tok->type == XQ_TT_IDENT) {

    *name = xmlStrndup(tok->content, tok->length);
    if (!(*name))
      status = XQ_OUT_OF_MEMORY;

    if (status == XQ_OK)
      nextToken(tok);

    // IDENT ':' IDENT
    if (status == XQ_OK && tok->type == XQ_TT_TOKEN && tokenFirstChar(tok) == ':') {

      nextToken(tok);

      if (tok->type != XQ_TT_IDENT)
        status = XQ_INVALID_SEL_UNEXPECTED_TOKEN;

      if (status == XQ_OK) {
        *nsPrefix = *name;
        *name = xmlStrndup(tok->content, tok->length);
      }

      if (status == XQ_OK)
        nextToken(tok);

      if (!(*name))
        status = XQ_OUT_OF_MEMORY;
    }

  // | '*'
  } else if (tok->type == XQ_TT_TOKEN && tokenFirstChar(tok) == '*') {

    *isWildcard = 1;
    nextToken(tok);

  } else {
    return XQ_NO_MATCH;
  }

  if (status != XQ_OK) {
    freeAndResetPtr(*name);
    freeAndResetPtr(*nsPrefix);
  }

  return status;

}

/**
 * Parse any attribute specifications from the string
 *
 * Grammar:
 *
 * attribs         ::=  attrib | attrib attribs
 * attrib          ::= '[' IDENT  '='  ( string | IDENT ) ']'
 */
static xQStatusCode xQSearchExpr_parseAttribs(xQSearchExpr** expr, xQToken* tok) {
  xQStatusCode status = XQ_OK;
  xmlChar* attrName = 0;
  xmlChar* attrValue = 0;

  // [
  if (tok->type == XQ_TT_TOKEN && tokenFirstChar(tok) == '[') {

    nextToken(tok);

    // IDENT
    if (tok->type != XQ_TT_IDENT)
      status = XQ_INVALID_SEL_UNEXPECTED_TOKEN;

    if (status == XQ_OK)
      status = (attrName = xmlStrndup(tok->content, tok->length)) ? XQ_OK : XQ_OUT_OF_MEMORY;

    if (status == XQ_OK)
      nextToken(tok);

    // =
    if (status == XQ_OK && (tok->type != XQ_TT_TOKEN || tokenFirstChar(tok) != '='))
      status = XQ_INVALID_SEL_UNEXPECTED_TOKEN;

    if (status == XQ_OK)
      nextToken(tok);

    // string | IDENT
    if (status == XQ_OK && (tok->type != XQ_TT_STRING && tok->type != XQ_TT_IDENT))
      status = tok->lastStatus == XQ_OK ? XQ_INVALID_SEL_UNEXPECTED_TOKEN : tok->lastStatus;

    if (status == XQ_OK)
      status = (attrValue = xmlStrndup(tok->content, tok->length)) ? XQ_OK : XQ_OUT_OF_MEMORY;

    if (status == XQ_OK)
      nextToken(tok);

    // ]
    if (status == XQ_OK && (tok->type != XQ_TT_TOKEN || tokenFirstChar(tok) != ']'))
      status = XQ_INVALID_SEL_UNEXPECTED_TOKEN;

    if (status == XQ_OK)
      nextToken(tok);

    if (status == XQ_OK)
      status = xQSearchExpr_alloc_init_filterAttrEquals(expr, attrName, attrValue);

    if (status != XQ_OK) {
      freeAndResetPtr(attrName);
      freeAndResetPtr(attrValue);
    }

    if (status == XQ_OK)
      return xQSearchExpr_parseAttribs(&((*expr)->next), tok);

  }

  return status;
}

/**
 * Allocate and initialize a new xQSearchExpr object that copies the
 * input node to the output.
 *
 * Returns a pointer to the new instance or 0 on error
 */
static xQStatusCode xQSearchExpr_alloc_init_copy(xQSearchExpr** self) {

  *self = (xQSearchExpr*) malloc(sizeof(xQSearchExpr));
  if (!*self)
    return XQ_OUT_OF_MEMORY;

  (*self)->argc = 0;
  (*self)->argv = 0;
  (*self)->operation = _xQ_addToOutput;
  (*self)->next = 0;

  return XQ_OK;
}

/**
 * Allocate and initialize a new xQSearchExpr object that copies all
 * descendants of the input node to the output.
 *
 * Returns a pointer to the new instance or 0 on error
 */
static xQStatusCode xQSearchExpr_alloc_init_allDescendants(xQSearchExpr** self) {

  *self = (xQSearchExpr*) malloc(sizeof(xQSearchExpr));
  if (!*self)
    return XQ_OUT_OF_MEMORY;

  (*self)->argc = 0;
  (*self)->argv = 0;
  (*self)->operation = _xQ_findDescendants;
  (*self)->next = 0;

  return XQ_OK;
}

/**
 * Allocate and initialize a new xQSearchExpr object that searches the
 * input node for descendants with a given name.
 *
 * Returns a pointer to the new instance or 0 on error
 */
static xQStatusCode xQSearchExpr_alloc_init_searchDescendants(xQSearchExpr** self, xmlChar* name, xmlChar* ns) {

  *self = (xQSearchExpr*) malloc(sizeof(xQSearchExpr));
  if (!(*self)) {
    xmlFree(name);
    return XQ_OUT_OF_MEMORY;
  }

  (*self)->argv = (xmlChar**) malloc(sizeof(xmlChar*) * 2);
  if ((*self)->argv) {
    (*self)->argc = 2;
    (*self)->argv[0] = name;
    (*self)->argv[1] = ns;
    (*self)->operation = _xQ_findDescendantsByName;
    (*self)->next = 0;
  } else {
    xmlFree(name);
    free(*self);
    return XQ_OUT_OF_MEMORY;
  }

  return XQ_OK;
}

/**
 * Allocate and initialize a new xQSearchExpr object that searches the
 * input node for immediate children with a given name.
 *
 * Returns a pointer to the new instance or 0 on error
 */
static xQStatusCode xQSearchExpr_alloc_init_searchImmediate(xQSearchExpr** self, xmlChar* name, xmlChar* ns) {

  *self = (xQSearchExpr*) malloc(sizeof(xQSearchExpr));
  if (!(*self)) {
    xmlFree(name);
    return XQ_OUT_OF_MEMORY;
  }

  (*self)->argv = (xmlChar**) malloc(sizeof(xmlChar*) * 2);
  if ((*self)->argv) {
    (*self)->argc = 2;
    (*self)->argv[0] = name;
    (*self)->argv[1] = ns;
    (*self)->operation = _xQ_findChildrenByName;
    (*self)->next = 0;
  } else {
    xmlFree(name);
    free(*self);
    return XQ_OUT_OF_MEMORY;
  }

  return XQ_OK;
}

/**
 * Allocate and initialize a new xQSearchExpr object that searches the
 * input node for next siblings with a given name.
 *
 * Returns a pointer to the new instance or 0 on error
 */
static xQStatusCode xQSearchExpr_alloc_init_searchNextSibling(xQSearchExpr** self, xmlChar* name, xmlChar* ns) {

  *self = (xQSearchExpr*) malloc(sizeof(xQSearchExpr));
  if (!(*self)) {
    xmlFree(name);
    return XQ_OUT_OF_MEMORY;
  }

  (*self)->argv = (xmlChar**) malloc(sizeof(xmlChar*) * 2);
  if ((*self)->argv) {
    (*self)->argc = 2;
    (*self)->argv[0] = name;
    (*self)->argv[1] = ns;
    (*self)->operation = _xQ_findNextSiblingByName;
    (*self)->next = 0;
  } else {
    xmlFree(name);
    free(*self);
    return XQ_OUT_OF_MEMORY;
  }

  return XQ_OK;
}

/**
 * Allocate and initialize a new xQSearchExpr object that copies the
 * input node only if it has a named attribute with a given value.
 *
 * Returns a pointer to the new instance or 0 on error
 */
static xQStatusCode xQSearchExpr_alloc_init_filterAttrEquals(xQSearchExpr** self, xmlChar* name, xmlChar* value) {

  (*self) = (xQSearchExpr*) malloc(sizeof(xQSearchExpr));
  if (!self) {
    xmlFree(name);
    xmlFree(value);
    return XQ_OUT_OF_MEMORY;
  }

  (*self)->argv = (xmlChar**) malloc(sizeof(xmlChar*) * 2);
  if ((*self)->argv) {
    (*self)->argc = 2;
    (*self)->argv[0] = name;
    (*self)->argv[1] = value;
    (*self)->operation = _xQ_filterAttributeEquals;
    (*self)->next = 0;
  } else {
    xmlFree(name);
    xmlFree(value);
    free(*self);
    return XQ_OUT_OF_MEMORY;
  }

  return XQ_OK;
}

/**
 * Release an xQSearchExpr object and all resources allocated by it
 *
 * Returns a 0 (XQ_OK) on success, an error code otherwise
 */
xQStatusCode xQSearchExpr_free(xQSearchExpr* self) {
  unsigned int i;

  if (!self)
    return XQ_OK;

  if (self->argv)
    for (i = 0; i < self->argc; i++)
      if (self->argv[i] && self->argv[i] != XQ_EMPTY_NAMESPACE)
        xmlFree(self->argv[i]);

  if (self->next)
    return xQSearchExpr_free(self->next);

  return XQ_OK;
}

/**
 * Evaluate a search expression and populate a node list with the results
 *
 * Returns a 0 (XQ_OK) on success, an error code otherwise
 */
xQStatusCode xQSearchExpr_eval(xQSearchExpr* self, xQ* context, xmlNodePtr node, xQNodeList* outList) {
  xQNodeList tmpList;
  xQStatusCode result;
  unsigned int i;

  if (!self->next)
    return self->operation(context, self->argv, node, outList);

  xQNodeList_init(&tmpList, 8);
  result = self->operation(context, self->argv, node, &tmpList);

  for (i = 0; result == XQ_OK && i < tmpList.size; i++)
    result = xQSearchExpr_eval(self->next, context, tmpList.list[i], outList);

  xQNodeList_free(&tmpList, 0);
  return result;
}


So, we left Malvern, and said goodbye to the beautifully decorated holiday house with the symmetrically-arranged glassware in the cupboards and impeccably laid-out kitchen tools described a few days ago in this post here. Here's a reminder of what the kitchen drawer looked like when we got there last Thursday.
I did my best to leave it as I'd found it.
Joke. I found that picture on the Internet.
We'd even got a little fond of the Monster Lamp, in a Stockholm Syndrome kind of way.
We came home at midday to a house full of plaster dust and littered with tools and a man in our hall who said, 'Oh dear. I thought you were coming home a bit later than this.' It was our landlord, come to do some repairs.
I am on holiday in Malvern, Worcestershire. Come along with me to see the sights. Be warned, though. I can't promise that any of them are in the 'Things you Must See' official brochures. But who wants to see pictures of abbeys and ancient wells when you can see pictures of kitchenware and monster lamps instead?
And that was just the first day! Imagine what excitements are in store!
These are a few of my favourite things."
I agree with Julie. There's nothing better than a long bus ride and if I don't have one at least once a week, I get a tremor.
I've written before about my favourite Warwickshire bus, the G1. One of the local G1 buses has a STOPPING sign at the front that lights up when you press the bell, but on which the STOP bit of the word has broken, so that the only bit which lights up says PING!. I think that's just brilliant, and if they ever mend it, I'm going to write to the Chief of Buses and say Why Are You Ruining My Life? I may even send them a poem.
to see it back agin.
We gather here today to pay respect; he suffered much but then could take no more. He lies here now; his time of pain has gone, released at last from years of being ignored. His early days had seen him rise to fame as someone who could punctuate a list of items far too long for comma use; he made sure readers wouldn't lose the gist. A main achievement was the way he'd join two sentences; this was so efficacious when using a full stop was too abrupt and using a conjunction too loquacious. Alas, we used him less and less and less; we unappreciated him to death.
over here now to look at it.
Three important lessons learned from a weekend in the Cotswolds.
Lesson 1. Don't ever say to your horticulturally-minded husband in a botanical garden, 'Hey, look, that lily plant is broken.' The chances are, despite what he KNOWS about how lily pollen can stain, he will more or less climb INTO the bush to help out the stricken stems.
Lesson 2. A book soaked in beer is not as pleasant to read as a book not soaked in beer.


text:
<?php
/**
 * A task that sends a reminder email to users assigned to a workflow that has
 * not been actioned for n days.
 *
 * @package advancedworkflow
 */
class WorkflowReminderTask extends BuildTask {

	protected $title       = 'Workflow Reminder Task';
	protected $description = 'Sends out workflow reminder emails to stale workflow instances';

	public function run($request) {
		$sent   = 0;
		$filter = '"WorkflowStatus" IN (\'Active\', \'Paused\') AND "RemindDays" > 0';
		$join   = 'INNER JOIN "WorkflowDefinition" ON "DefinitionID" = "WorkflowDefinition"."ID"';
		$active = DataObject::get('WorkflowInstance', $filter, null, $join);

		if ($active) foreach ($active as $instance) {
			$edited = strtotime($instance->LastEdited);
			$days   = $instance->Definition()->RemindDays;

			if ($edited + $days * 3600 * 24 > time()) {
				continue;
			}

			$email   = new Email();
			$bcc     = '';
			$members = $instance->getAssignedMembers();
			$target  = $instance->getTarget();

			if (!$members || !count($members)) continue;

			$email->setSubject("Workflow Reminder: $instance->Title");
			$email->setBcc(implode(', ', $members->column('Email')));
			$email->setTemplate('WorkflowReminderEmail');
			$email->populateTemplate(array(
				'Instance' => $instance,
				'Link'     => $target instanceof SiteTree ? "admin/show/$target->ID" : ''
			));

			$email->send();
			$sent++;

			$instance->LastEdited = time();
			$instance->write();
		}

		echo "Sent $sent workflow reminder emails.\n";
	}

}


The election of our next constable is not one to be taken lightly. This elected position is for a peace officer tasked with the execution of orders from the Justice Court. These orders can include, but are not limited to, evictions, protection, seizure of property, service of criminal and civil subpoenas and summonses, orders to collect judgments, and more.
As a mom, I am endorsing Mr. Andre LaFond as he brings with him a strong commitment to service and community while using his skills and experience to carry out those orders and tasks. Andre LaFond brings with him 14 years of private law enforcement, experience as an Army veteran, leadership experience as an Eagle Scout and various community outreach training, service and collaborative ethics to put service before self. Mr. LaFond hopes to further his impact as constable by offering resources and support to people such as evictees or domestic violence victims and expand support programs. He holds this position in the highest regard and will work hard to ensure the safety of our citizens while collaborating with law enforcement.
Most important to me is his desire and commitment to work with the City of Maricopa Police Department to bridge the gap and build a partnership. I have seen Mr. LaFond at school safety meetings, community meetings and various events. Not only does he engage in the discussions and works to become a part of the solutions but he goes the extra step to provide information and resources by way of posting recaps on social media especially when it comes to safety. We need continued support from our elected officials to lead by example while increasing community engagement and involvement.
I see Mr. LaFond holding this position with the utmost respect while working hard to develop community support and increase partnerships to better our community. Creating and developing a partnership with local and county law enforcement while bridging the gap with city organizations, schools, citizens and leaders will only lead to a thriving community all while serving and protecting our citizens.
Join me in electing Andre LaFond as our next constable.
Merry Grace is a resident of Maricopa.


The Böcker Junior Construction Lift is the result of long-lasting experience in the field of lift technology. The compact construction lift has been designed for operation on narrow construction sites in particular. Nowadays, many classical construction lifts are oversized as there is hardly any space on construction sites especially in crowded cities. Renovation works in small lanes of the old towns are equally challenging. The Böcker Junior Construction Lifts are tailor-made solutions to these obstacles. Due to the compact dimensions and the minimum required space, these lifts are always the right choice if construction sites are extremely narrow. And thanks to the low dead weight, the construction lift may be towed by almost any passenger car.
The product line starts with the HD 18/0-5 and a maximum lifting height of 18 metres whereas the HD 24/0-7 with 24 metres maximum lifting height is the top model of this series.
Böcker recently launched the brand-new Junior construction lift HD 24 K/0-7. By this new model, the integrated knee joint which has been very popular among Böcker construction lifts over the past decades is finally introduced to the company's compact lift series. It provides customers with even more efficiency and operational convenience as there is no need for manual assembly anymore. Furthermore, the knee joint can be extended mechanically. Thanks to the enormous adjusting range from 0° to 44° optimal adjustment to virtually any inclined roof is easily possible.