At MACH 2018, global engineering technologies company, Renishaw, is exhibiting its precision measurement and additive manufacturing solutions. From the 9th-13th April, the company will demonstrate its offering as a manufacturing partner, showcasing how its measurement technologies can be integrated into a manufacturing process to achieve intelligent machining. The company will exhibit new products alongside its existing range.
The company will exhibit its extensive metrology products on Stand H19-430. Renishaw will also exhibit on a separate, dedicated additive manufacturing stand in the 3D printing and additive manufacturing zone, on stand H20-150.
One key highlight on the main stand, is a high-productivity machining cell concept, boasting integrated process control. By monitoring key process inputs, analysing data and continuous improvement, manufacturers can increase accuracy and productivity. Measurement is essential before, during and after machining to control all sources of variation.
Other highlights include the company's latest scanning system for CNC machine tools, intelligent process control software for the Equator™ gauge and apps to simplify machine tool probing. The company will also present a non-contact tool setter for machining centres, a multi-probe optical interface system, a new surface finish probe and enhanced software for Renishaw's XM-60 multi-axis calibration system.
Following its launch at EMO Hannover 2017, Renishaw will highlight its improved surface finish probe for use on the REVO® 5-axis measurement system on co-ordinate measuring machines (CMMs). The SFP2 probe is interchangeable with other REVO probe options and offers the ability to fully integrate surface measurement and dimensional inspection on a single CMM. This is a significant improvement from traditional methods, which require separate processes.
New Intelligent Process Control (IPC) software for Renishaw's Equator™ flexible gauge, will be demonstrated on the stand. The software allows the automation of tool offset updates in CNC manufacturing processes. Monitoring and adjustment can be automated using the software, to keep part dimensions within process control limits.
The software improves machining capability by reducing setting and adjustment time and enabling integration with automation systems. Any drift is corrected in real-time.
Visitors to Renishaw's main MACH stand will be introduced to the latest development in Renishaw's SPRINT™ product family for on-machine scanning – the new SPRINT system with SupaScan. The technology can be integrated into machine tool applications to perform advanced scanning with a reduced cycle time of up to 70 per cent compared to a standard high-speed touch-trigger cycle. The SPRINT system with SupaScan, widens the appeal of scanning technology by allowing exceptionally fast workpiece set-up and highly-accurate measurement, even at rapid feedrates.
Enabled by ever more capable machine controllers, Renishaw has developed a suite of on-machine apps. Machine tool probe routines can be created, executed and reviewed quickly and easily to minimise cycle times and improve productivity. The company will exhibit the Set and Inspect app for probe calibration, part setting, tool setting and inspection. Alongside this, Renishaw will also showcase Reporter, an app which presents feedback on measurement status.
Alongside on-machine apps, Renishaw has developed a range of smartphone apps to benefit machine tool probes and tool setters, including the GoProbe app. Another product, the Trigger Logic app, simplifies the customisation of probe settings for a specific application, by presenting illustrations and videos to clearly explain the configuration process.
To build on the success of its NC4 non-contact tool setting system, Renishaw will demonstrate the capabilities of its enhanced solution for machining centres. The NC4 non-contact tool setter, combined with the NCi-6 interface, provides an efficient, high-precision system to determine tool geometry, check tool condition and track thermal changes on both 3 and 5-axis machining centres.
Renishaw's latest multi-probe optical interface system will be presented on the stand. The system uses a spindle-mounted OMM-2C receiver to allow up to three machine tool probes to be installed with optical signal transmission. System design ensures robust operation, whatever the environment – air blast technology ensures the receiver window is not interrupted by debris and modulated optical transmission technology resists light interference.
Also on the stand will be CARTO software, which enables users of the XM-60 calibration system to capture real-time data, without defining position or target numbers. The software displays straightness, pitch, yaw and roll errors against linear position. There are three options for triggering — manual, automatic or continuous.
"Industry 4.0 depends on connected systems, able to communicate, interpret and respond to information in real time," explained Paul Maxted, Director of Industrial Metrology Applications at Renishaw. "Measurement data is essential to gather information to be used in intelligent decision making to prevent process variation.
From its dedicated additive manufacturing stand in Hall 20, Renishaw will exhibit its software and systems for the production of metal parts. This includes the RenAM 500M, alongside demonstrations of QuantAM, the company's build preparation software. At the show, Renishaw will highlight the productivity benefits of its four-laser system, which offers increased productivity in the most commonly used machine platform size.
MACH is the UK's leading trade show for the manufacturing technologies industry. Chris Pockett, Head of Communications at Renishaw, is Chair of the MTA's Exhibition Committee which has oversight of the organisation of MACH exhibitions.


text:
Why Is Oregon Cyclist On Hood of Speeding Car?
TomBrooklyn
A video clip was posted on Breitbart TV at 1219hrs today showing a guy clinging to the hood of a speeding car with a title that says he's a cyclist.
http://www.breitbart.tv/?p=131483&comments=1#comments
What's this about?
buck-50
Looks a bit like a setup to me...
"It's Saturday night. I have no date, a two-liter bottle of Shasta and my all-Rush mix tape. Let's rock!"
Media frenzy
Our local paper and TV media are on a wank over motorist-cyclist road rage stories. The cyclist on the hood of the car story is covered in these two places... the first being a discussion with the cyclist, the second being the original story about the incident and the arrest of the driver.
http://bikeportland.org/2008/07/15/words-of-wisdom-from-the-guy-on-the-windshield/
http://bikeportland.org/2008/07/14/arrest-made-in-new-road-rage-incident/
This story follows one earlier in the week about another road rage incident in which a cyclist driving his car told a guy on his bike the running red lights was bad form. That degenerated into the cyclist attacking the driver's car and threatening the driver, who was by then out of his car. The editors of the local paper later explained that the front page, above-the-fold, super-sized headline was justified as a type of "man bites dog" story. The effect seems to have inflamed whatever simmering tension there was between motorists and the increasing numbers of cyclists on the road here.
Basically, the local media are playing up the level of conflict between drivers & cyclists. The effect is that drivers with even minimal frustration in dealing with cyclists are giving vent to every rant that comes to mind.
Man, Madison is looking more and more like a biking paradise- sure, we've got 6 months of wretched winter, but our hipsters aren't dukeing it out with the local drivers, either.
I really hate seeing stuff like this- you just know that it won't end until someone is dead.
This stuff has been on my mind the last couple days- trying to figure it out. What is it about bikes vs cars that's so volatile?
This morning as I was driving my daughter to daycare, I pulled onto the highway/main road but I was accelerating pretty slow (shifted into 5th instead of 3rd). A Semi came up behind me a lot faster than I had expected, but instead of rolling down his window and flipping me off or honking or running me off the road, he just slowed down and we both rolled down to the light, no problem.
Figure that Semi outweighed my little car about as much as the average car outweighs my bike.
So, it's not just about size...
GH-Mike
Portland Thoughts
PDXMark nailed it - lots of media hype. I share the same roads as Mark and think the media hype needs to be turned down so a more thoughtful discussion can take place.
It's my opinion that the 80/20 rule applies here. 80% of the cyclist and motorist do a great job sharing the road. The other 20 % of cyclist and motorist need a good public lashing or group hug - whatever works to make it better. We simply don't need the "media", including local blogs, to sourer a generally tolerant respectful environment.
Can you hear the grasshopper at your feet?
filtersweep
I thought the video looked staged, and there are far too few details to convince me otherwise--- at this point.
filtersweep said:
Not a very funny joke for the driver if it was staged: Millican has been arrested on one count each of Attempted Assault in the Second Degree (felony), DUII, Criminal Mischief in the Third Degree and Reckless Driving (all misdemeanors).
Here's the link to his jail booking info:
http://www.mcso.us/PAID/BookingDetail.aspx?ID=03SJn2ZUmClHMvA3ZvZ1cw==
uber-stupid
I've been pondering it a lot too. It comes up in here pretty regularly, whether it's pictures and video, or someone posting that they got PO'd and spit on someone's car. Within a day an article in the Boston Globe had over 300 responses, duking out whether or not cyclists were psychotic anarchists or had a legitimate right to the road...
After a while, it starts to sound like Chris Rock's routine about Black people versus Ni... well, you know the word. So many of us just trying to go about our day and not bother people. And the 10-20% of cyclists give the rest of us such a bad reputation as law dismissing anti-christ figures who should be run off the road or just flat run over.
And it's a growing problem. The minority get the majority of the motorists pissed off, so they hate the rest of us, so more of us get put on the defensive, and we're even more likely, sooner or later, to respond in a way that is hard to back up when you're not wearing a ton and a half of steel.
Another Chris Rock quote... "Who's more racist... black people or white people. Black People! 'Cause black people hate black people too!"
One guy, apparently an upstanding local bike mechanic, who happened to be driving, gets assaulted by a (drunken) cyclist for pointing out that the cyclist was giving other cyclists a bad name. Come on!
How does this get settled?
Can it be?
And it's just going to get worse. Some folks, like the poor girl in DC that just died, are new to urban cycling, and make typical, nervous, newbie mistakes. Some of them are clearly illegal, but it feels a little aggressive to go after a newbie who's just trying to stay safe. (Versus the idiot college kids riding the wrong way in the bike lane, not holding onto the bars, talking on their call phone, in traffic... those guys I think should be put into shackles so they have to walk for a while.)
Someone who's used to driving and took up cycle commuting because of the cost of fuel is naturally more nervous, and more likely to ride like they were 12 again, because that's the last time they really rode anywhere, and they really don't feel that safe on the road. Sure their tactics are illegal, and understandable because of where they're coming from... but those people are a growing demographic, and they really don't know any better. They end up looking inexperienced or reckless, and get yelled at or hit on their way to work, but get blamed by motorists. Hell, even the Mayor of Boston got hit when he tried to take up commuting to work.
So, as the roads begin to fill with new cyclists who aren't experienced, and a growing number of motorists who are frustrated on many levels, how do we fix this?
That's my question. We have a defined problem. What's next, how do we get something organized to address this? On any level?
uber-stupid said:
As much as I hate to admit it, part of treating cyclists like they belong on the road means writing tickets for cyclists who blow lights or break the law.
Right now, drivers see us get away with stuff that would make them lose their license. That's frustrating.
So, figure out a few problem intersections. Post a couple cops. Write tickets for drivers and for riders. See what happens.
Or, maybe there's just a weed shortage in Portland and all the hipsters are getting edgy.
Many red lights are bad for people and the enviroment. They fustrate drivers and cause vehicles to stand still while emmitting toxins. It's bad enough cars emit toxins when they're moving. To have them sit still for no reason when there's nobody or no vehicles coming in the other directions is a crime against humanity and the planet.
I say run the red whenever you can do it safely, whether on a bike or in a car.
TomBrooklyn said:
Give one more reason for motorists to be able to judge for themselves how they feel like behaving on the road? Maybe it's environmentally... something... but in terms of road safety, turning every red light into a yield sign sounds like a horrible idea, and will result in more crimes against humanity than just idling engines. Better to start thinning the herd, and shoot every other car, if we're really so worried about what they're emitting. There are more cars than parking spaces in a few cities already.
So, fight vehicular overpopulation... next time you're on a ride, bring a big F'ing gun, or some caltrops, and take out the old, the slow, and the sickly cars that are out and about. They're just taking up space, and would be better used as scrap metal to make more guns, to shoot more cars.
Sure--- just like no motorist ever rolls through a stop sign or speeds.
The real issue is that motorists use their vehicles as a bully pulpit-- whether road raging against their fellow motorists, or against the lowest on the totem pole: cyclists.
No matter what- the roads are clogged with other motorized traffic--- not cyclists.
buck-50 said:
Not to be a d!ck, but let's face it, a lot of cyclists use their bikes as a bully pulpit as well.
Just because some cars roll through stop signs doesn't make it OK for cyclists. And, having been ticketed for doing so in my car, I can tell you, I'm a lot more careful now.
Cyclists need to follow the rules. Drivers need to follow the rules.
On a personal level, I completely agree with you--- however, cyclists could all ride like perfect citizens, and they would still be hated, for even sharing the same roads. It is just an empty excuse--- and no cyclist deserves the level of disrespect of being deliberately harrassed or assaulted by a vehicle. And simply saying the cyclists or drivers need to follow the rules doesn't mean anything. People will drive or ride they way they want. In a perfect world, there would be no car "accidents."
Mr. Versatile
· Resident Curmudgeon
I watched the video, and I gotta ask...How come that guy just happened to be standing there with his video camera already turned on and focused on an apparently quiet street where there was nothing else happening? Interesting question, no?
Don't forget to give me extra points for the run-on sentence.
Before you criticize someone walk a mile in their shoes. That way when you criticize them you'll be a mile away & you'll have their shoes.
DavidsonDuke
To have them sit still for no reason when there's nobody or no vehicles coming in the other directions is a crime against humanity and the planet.
Anarchists unite . . . er . . . or not.
P.D.E.
Looks like the verdict is in. 45 days for "unlawful use of a weapon, attempted second degree assault and driving under the influence."
I don't get the "attempted" assault part. So ramming a cyclist onto your hood isn't actual assault, or did he politely ask him to get on his car so he could drive around and try to kill him?
aliensporebomb
· Alien Musician
Unreal video.
Yeah, unfortunately, a lot of newspapers and media outlets LIKE to whip up the motorist
versus cyclist thing because it sells papers and gets a lot of attention.
Makes me angry because it makes the situation worse.
my music is online at aliensporebomb dot com yes indeed.
my twitter for those bored: http://www.twitter.com/aliensporebomb
aliensporebomb Nov 19, 2008

redpajama_set_name: RedPajamaCommonCrawl


text:
Search By Place
Voices: Stories of Change. Charleston, SC
Charleston is one of the earliest cities in which the African presence in North America began. While the tortured circumstances of human bondage and enslavement will never be erased, more attention has turned to the valuable retention of African cultural expression. Rather than being seen as laborers with no history or cultural heritage, Africans and their descendants are credited with having shared agricultural, technical, culinary, artistic, and other talents that help define the Lowcountry and the nation.
Not only did African Americans play important roles in creating Colonial era wealth as enslaved people, they also advocated for universal freedoms and rights, and demanded first class citizenship for all through the tumultuous eras of the American Revolution, Civil War, Emancipation and Reconstruction, Jim Crow, the modern Civil Rights movement and beyond. In 2018, the city of Charleston passed a resolution that denounced slavery, acknowledged that the city profited greatly from slave labor, and extended an apology on behalf of the city.
Discover Charleston's unique African American historical and cultural traditions, past and present. Hear the evolving narratives of those who share their ancestral legacies as evidence of their determination to claim their rightful place in the annals of the region. Through city, sea island, and plantation tours, oral history and musical performances, archival collections and museum exhibits, statues and historical markers, we invite you to explore several centuries of African and African American history.
The stories shared here are a varied blend of personal observations, recollections and perspectives shared by our local contributors, a beautifully complex collection of voices.
These are stories of change.
Courtesy of the Avery Institute
Take A Scroll Through History
Discover Charleston
Gullah Foodways & Traditions
Gullah food is one of the oldest world traditions being practiced in America today. It is about ancestral ties and American living, adaptability, and creativity. It is rooted in the crops and preparation methods brought here from Africa and further evolved from a history of poverty and learning to "make do".
Cooking methods were passed down without written documentation. Gullah cooks today pride themselves on their ability to season and judge quantities simply by experience.
The Africans brought to the Carolina Colony used the similarities between the culinary environments of the Lowcountry and the African West Coast. Consequently, their cuisine is characterized by the consistent use of rice. Vegetables such as yams, peas and beans were introduced to the New World and then cultivated by slaves.
Explore African American history and culture firsthand
Plan your Charleston trip
Social, Economic, & Political Leadership
In 1982, Mt. Pleasant resident Travis Ascue competed as the first African American athlete in the South Carolina Independent School Athletic Association. But this story is not about what Travis [...]
Contributor: Tom O'Rourke
Cultural Impact
The Legacy of Dr. Lucy Hughes Brown
Dr. Lucy Hughes Brown (1863-1911) was the first African-American woman doctor licensed in the states of North and South Carolina. She was also the first woman doctor to practice in [...]
Contributor: Ruth M. Miller
Courtesy of the Gullah Geechee Cultural Heritage Corridor Commission
African & Gullah Roots
Freedom's Eve: Celebrating a Gullah Geechee Tradition
We look forward to celebrating Freedom's Eve with you just as our ancestors did on New Year's Eve 1862. When a day that they had long dreamed of was about [...]
Contributor: Heather L. Hodges
COPYRIGHT © 2021 AFRICAN AMERICAN HERITAGE. ALL RIGHTS RESERVED.


text:
Snohomish CSO Facility
The first phase of the City of Snohomish's Combined Sewer Overflow (CSO) project involved the reduction of untreated sewage flow from the historic downtown area going into the Snohomish River during heavy rains. The project also transitioned the site from its current use as a maintenance yard into a city park surrounded by trails.
To meet the client's goals—to produce a building that would compliment the City's industrial past and historical present, Rolluda Architect's design team incorporated unique building elements—special masonry, exposed structural steel, and customized lighting fixtures. The multi-colored brick exterior and the "flying" roof line supported by ornamental brackets echo the City's historic buildings. Colors and finishes were chosen to compliment the artistic theme. Rain gardens were installed to capture and treat runoff from surrounding paved areas. Accordingly, trails around the pump station and future public restrooms in the pump station building were incorporated into the design.
"The result is a new project that is not just functional and practical, but it has now become an attractive and inviting gateway for the City of Snohomish." – ACEC Award Committee. Awarded "Best in State" Silver Awards from the American Council of Engineering Companies (ACEC) Engineering Excellence Awards, 2012.


For us, we believe that each new acquaintance begins with a cute greeting, therefore, without delay, "Hello!" From the outset like to set up a genuine relationship with visitors to our website, so please allow us to introduce you.
Echt Casino Spiele Techniken Sie können nicht Pass up!
Roulette und Spielautomaten in Österreich - sollten Sie spielen?
Pläne für Casino Games? Sehen Sie sich diese Zuvor!


As one of Canada's leading research universities, innovation, discovery and learning is at the heart of all that we do. We have a relentless pursuit of quality in our teaching and research programs and are guided by our mission to contribute to the well-being of the people of Alberta, Canada and the world. The discoveries in our various faculties, institutes, and multi-faculty initiatives can be found throughout the web pages of the University of Calgary.
For more information about research at the University of Calgary, visit the Research website.
We are a research centre that focuses on major research problems and projects in the field of computational and discrete geometry.


This entry was posted in blog book tour, books, cozy mystery, film noir, hard-boiled, hot chocolate, mystery, reading, theatrical mystery, Uncategorized, writing and tagged blog book tour, mysteries, readg, widgets, writing by Dana. Bookmark the permalink.
Does Dani look like Yoda too? Cause that would be freaky.
No, Mr. Fab, Dani does NOT look like Yoda. At least, I don't think she does. Dani, look like Yoda you do not, right?
Nessa, may I be a POSITIVE life lesson! And thank you again for particpating!!
Sitting here at my desk at work, trying really hard not to giggle out loud.
Just finished Chapter 1 after picking up my special order copy of MFH from Barnes and Noble on my lunch hour. This is going to be fun! – and unfortunately, I'll finish it too fast, I can tell that already. Oh well, back to work – I'm 20 minutes over as it is…how long 'til break time?
Whoo hoo! Special order copy – thank you, Peggy! That rocks! Glad you're enjoying it…make sure you get some chocolate chip cookies!


text:
Culinary Cannabis
Michigan's Cannabis Laws
Ann Arbor & Ypsilanti
Detroit & Metro Detroit
Flint, Bay City, Saginaw & Northeast Michigan
Grand Rapids, Muskegon & West Michigan
Kalamazoo, Battle Creek & Southwest Michigan
Lansing, Jackson & Mid-Michigan
Traverse City & Northwest Michigan
Michigan's Upper Peninsula, Marquette & Sault Ste. Marie
Michigan's Culinary Cannabis Scene
About the Michigan Cannabis Trail
Andrew McFarlane, Michigan Cannabis Trail Founder
Tag Archive for: traverse city
Traverse City (finally) allows Recreational Dispensaries
Dispensary, News
The Traverse City Ticker reports that Traverse City commissioners approved new rules Monday allowing recreational marijuana businesses to open in the city.
https://i2.wp.com/michigancannabistrail.com/wp-content/uploads/2019/12/Sunrise-on-the-Spires-at-The-Village-at-Grand-Traverse-Commons-scaled.jpg?fit=2560%2C1912&ssl=1 1912 2560 MCT https://michigancannabistrail.com/wp-content/uploads/2019/12/Michigan-Cannabis-Trail-2020-600x114.png MCT2020-08-18 09:31:352020-08-18 09:31:35Traverse City (finally) allows Recreational Dispensaries
LSSU offering cannabis classes in Lower Michigan
Cannabis, Education, News
US News & World Report says that Lake Superior State University will offer classes at Charlton Heston Academy in St. Helen in Roscommon County, about 150 miles north of Lansing.
https://i1.wp.com/michigancannabistrail.com/wp-content/uploads/2020/07/Lake-Superior-State-University-Cannabis-Education.jpg?fit=1600%2C1600&ssl=1 1600 1600 MCT https://michigancannabistrail.com/wp-content/uploads/2019/12/Michigan-Cannabis-Trail-2020-600x114.png MCT2020-07-26 08:18:542020-07-26 08:21:18LSSU offering cannabis classes in Lower Michigan
Pincanna Market opening Friday in Kalkaska
Farmington Hills-based Pincanna plans to open its first retail store for medical and adult-use marijuana.
https://i1.wp.com/michigancannabistrail.com/wp-content/uploads/2020/05/Pincanna-Market.jpeg?fit=2560%2C1920&ssl=1 1920 2560 MCT https://michigancannabistrail.com/wp-content/uploads/2019/12/Michigan-Cannabis-Trail-2020-600x114.png MCT2020-05-27 08:06:222020-05-27 08:06:22Pincanna Market opening Friday in Kalkaska
Skymint & Short's Brewing collaborate on gummies
Cannabis, Culinary Cannabis, Dispensary
The Traverse City Record-Eagle reports that Green Peak Innovations aka Skymint has collaborated with Short's Brewing Company on craft beer flavored medicated edibles.
https://i1.wp.com/michigancannabistrail.com/wp-content/uploads/2020/05/Skymint-Mosa-Gummies.jpg?fit=1440%2C1440&ssl=1 1440 1440 MCT https://michigancannabistrail.com/wp-content/uploads/2019/12/Michigan-Cannabis-Trail-2020-600x114.png MCT2020-05-24 08:24:152020-08-15 08:16:31Skymint & Short's Brewing collaborate on gummies
Checking in on Northern Michigan's Cannabis Scene
Cannabis, Dispensary, News
The Northern Express has a great feature feature on the newest additions to the Northern Michigan recreational cannabis market.
https://i0.wp.com/michigancannabistrail.com/wp-content/uploads/2020/04/Dense-Buds-Ganja-tographer-scaled.jpg?fit=2304%2C2560&ssl=1 2560 2304 MCT https://michigancannabistrail.com/wp-content/uploads/2019/12/Michigan-Cannabis-Trail-2020-600x114.png MCT2020-04-13 19:50:252020-04-13 19:50:25Checking in on Northern Michigan's Cannabis Scene
Traverse City Commissioners Close to Approving Recreational Operations
The TC Ticker reports that Traverse City commissioners are getting close to approving rules that will allow recreational marijuana businesses to operate in the city.
https://i2.wp.com/michigancannabistrail.com/wp-content/uploads/2020/03/Cannabis-Jars.jpg?fit=670%2C488&ssl=1 488 670 MCT https://michigancannabistrail.com/wp-content/uploads/2019/12/Michigan-Cannabis-Trail-2020-600x114.png MCT2020-03-10 16:48:392020-08-10 08:52:09Traverse City Commissioners Close to Approving Recreational Operations
Womxn in Cannabis SeriesJanuary 19, 2021 - 2:33 pm
Apply for Michigan Medical Marijuana Card OnlineJanuary 30, 2019 - 9:20 am
Petition Coming for Adult Social Marijuana Use in Ann A...February 6, 2019 - 3:09 pm
Lume Cannabis opens Sault Ste Marie recreational dispen...January 19, 2021 - 8:00 am
Dig into edibles with the latest Four20PostJanuary 15, 2021 - 8:21 am
business cannabis Detroit dispensary event government medical michigan Michigan Cannabis Laws recreational
© 2021 Michigan Cannabis Trail


text:
Daniel Philpott
Whatever Happened to the Arab Uprisings?
At 11:30 in the morning of December 17, 2010, Mohamed Bouazizi, a produce vendor in the city of Sidi Bouzid, Tunisia, set himself on fire in front of the local government headquarters in order to protest governmental corruption and in so doing provoked a historic wave of demonstrations and uprisings across the entire Arab world.
Did the Arab Uprisings succeed?
Alexandre Le Coz
LAÏCITÉ: A MODEL OR A THREAT FOR FREEDOM OF ...
The French secular model of laïcité—which aims to mark a formal separation of church and state—is a core republican value of the French state and some segments of French society. However, it is often poorly or only partially understood, both domestically and abroad. In its original formulation, laïcité was not designed to eliminate religion from areas outside the jurisdiction and purview of the state, nor to uphold a specific faith over another. Rather, it was supposed to dissipate religious practices from the operations of the secular French state. In public or private matters outside the functioning of the state, laïcité should be no threat to freedom of religion. But in practice, recent instrumentalizations of this model have attempted to contain people of minority religious faiths or coerce them into a closed secularism. Such rampant abuses of laïcité threaten and sometimes violate religious freedom, ultimately undermining pluralism and social stability.
The Islamists You Have Heard About (Excerpt)
In the last two posts, I have argued that Islam is not hardwired for violence, but even a casual consumer of contemporary news in the West is likely to ask: What about the shootings by an Islamist in the nightclub in Orlando, Florida in 2016? Or the violence that Islamists have perpetrated in Paris, London, Madrid, Berlin, Fort Hood, Ottawa, Boston, and so many other places? Or the Islamic State? Or the attacks of September 11, 2001? A more informed observer might add this: What about the many Muslims around the world who have been victims of Muslim terrorism? These phenomena did not appear motivated by the rationales of religious freedom or secular repression, the political theologies that I have argued govern other patterns of Muslim-majority states. No, this violence appears motivated by the Islamic faith.
Rev. Daniel L. Mode
The Intersection of U.S. National Security ...
Religious freedom and national security are closely intertwined. Far from being a boutique human rights issue, the advancement of religious freedom can play a major role in advancing national and international security. There is an increasing recognition of this link as evidenced in the development of language in the National Security Strategy, statements and activities led by high-level officials across the U.S. Government, and emerging academic research.
The French Revolution, Not Just the Iranian ...
The secular repressive pattern in Islam follows the French Revolution and is a rival to the Iranian Revolution in its low levels of religious freedom. Most practitioners of the secular repressive pattern have been authoritarian rulers: Shah Reza Pahlavi of Iran, Saddam Hussein of Iraq, Egypt's Gamal Abdel Nasser, Syria's Assads. It is often through brutal force, including torture, that they restrict religion—and necessarily so because their populations are far more religious than they are.
LAÏCITÉ: A MODEL OR A THREAT FOR FREEDOM OF RELIGION?
Tagged: religious restrictions, Muslim minorities, religious minorities, religious freedom, religious discrimination, European Union, Europe
Permanent Link: https://www.religiousfreedominstitute.org/cornerstone/lacit-a-model-or-a-threat-for-freedom-of-religion
Kareem Padraig A. McDonald
Denmark's Recent "Burqa Ban" – Unnecessary, Counterproductive, and Hypocritical
The target of the new law is the burqa and niqab but, already the Danish People's Party have turned their attention to the head scarf, launching a new poster campaign that tells women to "throw of the headscarf and become part of Denmark." Given the rise in religious apathy and intolerance towards religion generally, who knows what will come next; tomorrow the cross or the yarmulke could be the next target. This is why it is important now, more than ever, for all freedom-loving people to come together, to stand together and oppose this unnecessary, counterproductive and hypocritical law.
Tagged: 2018dbb, religious bans, religious discrimination, Religious Freedom, religious liberty, Europe, European Muslims, European Union
Permanent Link: https://www.religiousfreedominstitute.org/cornerstone/denmarks-recent-burqa-ban-unnecessary-counterproductive-and-hypocritical
Jocelyne Cesari
Securitization of Islam and Religious Freedom
Securitization is not simply state prevention of foreign political violence. It is also increasingly aimed at Islamic religious practices like the burqa which are interpreted as signs of political radicalism. One of the unexpected consequences of such a situation has been to grant governments greater means to control religions in general. As such, it is a very serious threat to religious freedom and democracy across Europe.
Tagged: 2018dbb, religious bans, Religious freedom, religious discrimination, religious coercion, Religious Freedom, European Union, European Muslims, Europe
Permanent Link: https://www.religiousfreedominstitute.org/cornerstone/securitization-of-islam-and-religious-freedom
Faraz Sanei
A "Burqa Litmus Test" for Religious Liberty Advocates: A Response to Sohrab Ahmari's "Confessions of a Burka-Phobe"
Theatrics aside, Ahmari missed a critical opportunity to engage in a constructive debate about the niqab and the limits of religious liberty and pluralism in the public square. Instead he turned to seemingly more pressing issues: the bullying and silencing of free and honest debate in Europe by progressive liberals. "Does liberal opinion permit Europeans to discuss the burka openly, honestly, and fearlessly?" he asks. "The answer is almost certainly 'no,' judging by the furious reaction that greeted Boris Johnson's recent remarks," he answers. The Johnson controversy, Ahmari would have us believe, has little if anything to do with "Islamophobia," anti-Muslim bigotry, or the right to manifest one's religious beliefs. It has everything to do with "a prohibition against expressing any discomfort, enforced on pain of social ostracism and joblessness" by "illiberal liberalism." A prohibition that is "a recipe for populist backlash."
Permanent Link: https://www.religiousfreedominstitute.org/cornerstone/a-burqa-litmus-test-for-religious-liberty-advocates
The Winding Way to Same-Sex Unions: A Euro-Italian Lesson
By: Andrea Pin
The legal recognition of same-sex couples varies considerably from one state to another. Some countries have introduced same-sex marriage, whereas others have implemented civil union pacts. Some states have legislated, while in others courts have enforced same-sex partnerships. Also, the types of arguments involved vary widely from one country to another, giving shape to very different policies of recognition.
Tagged: religious freedom, Supreme Court, marriage equality, Obergefell v. Hodges, Europe, Italy
Permanent Link: https://www.religiousfreedominstitute.org/cornerstone/2016/7/30/the-winding-way-to-same-sex-unions-a-euro-italian-lesson


text:
Shelter Initiatives
Hope House
The First Light Foundation of Hope was incorporated in 2018 as a faith-based registered charity for the homeless, addicted, and marginalized members located in the Durham Region.
Rev. Roy Graves Executive Director
We are located at 253 Simcoe Street South in Oshawa, Ontario where we operate a before and after-hours Drop-in Centre available to all those in need. Our Outreach Centre is 100% volunteer-driven with no paid staff at this time.
Current Hours of Operation:
Monday – Friday: 6:00am – 8:00am – Providing Hot Sandwich, Breakfast Bag & Beverages Monday – Sunday: 6:00pm – 8:00pm – Providing Pizza, Hot Meals, Beverages
*During COVID-19, all meals are to go*
At the First Light Outreach Centre, we provide:
Support for the homeless
Resources to those struggling with addictions
Practical help to those of lesser means within our community
Basic nutritional staples, clothing, foot care services
Warmth during the coldest hours of the day throughout the winter months and a cool refreshing environment during hot summer days.
Our outreach centre also offers access to counseling and a support network in a safe, loving environment where we can further provide hope and help.
The First Light Foundation of Hope Outreach Centre is made possible by the generous support of individuals, businesses and local government. To make a donation to help our work, please
We also operate a mobile unit from the hours of 8:00am to 9:30am which seeks out individuals in the alleyways and streets of Durham region and go directly into environments known as "Tent Cities"
Our Outreach is unique, providing help and basic support during the early hours of the morning and later hours of the evening when there are few other resources in the community readily available.
We work in cooperation with other community outreach providers and centres providing referrals to other agencies and services when necessary.
CRA Registered Charity # 744589680 RR 0001
First Light Foundation of Hope 2023


text:
Celtics Give Brown Five Days Rest
Heavy Sports
Heavy on Celtics
By	Adam Taylor
Updated Nov 6, 2021 at 12:12pm
Getty	Jaylen Brown blocks DeMar DeRozan's shot.
Jaylen Brown will miss Saturday's game against the Dallas Mavericks due to hamstring tightness and will get a full five days rest before the Boston Celtics return to action.
Brown has a history with hamstring issues, leading the Celtics to be cautious with the latest flare-up, especially with the problems occurring so early into the season. However, following Saturday's game against the Mavericks, the Celtics aren't back in action until Wednesday, November 10th.
#NEBHInjuryReport for tomorrow vs. Dallas:
Jaylen Brown (right hamstring tightness) – OUT
Josh Richardson (left foot contusion) – QUESTIONABLE
Read More From Heavy
Bet $5, Win $150 on Any NFL Playoff Game This Weekend
— Boston Celtics (@celtics) November 5, 2021
The Celtics will possibly be without another of their wings. Josh Richardson remains questionable heading into Saturday after missing the teams' victory over the Miami Heat earlier in the week.
With no Brown and possibly no Richardson, the Celtics will rely on their young wings Romeo Langford and Aaron Nesmith against the Dallas Mavericks, as Boston looks to take their season back to .500 after a rough start to the year.
"He's a guy who we know can light it up, bring us a spark off the bench, and then being solid on defense is just an added bonus there," Udoka said when asked about Nesmith's performance off the bench against Miami.
Brown Dealing With Multiple Injuries to Start the Season
Brown's season was cut short last year due to a torn scapholunate ligament in his left wrist, which required surgery to resolve. Once he returned from his injury, Brown began training with the team as they ramped up their preparations for the 2021-22 NBA season.
After only one preseason game, Brown was again unable to train with the team, this time due to contracting COVID and having to self-isolate as a result. "I've been talking to our medical staff about that. I feel great, and then it feels like instead of playing one game, it kind of feels like I played three. I'm used to my body responding and recovering a lot faster, and I know I just turned 25, but this can't be what it looks like on the other side." Brown said when discussing the longer-term effects the virus has had on his body.
Jaylen Brown on recovering from COVID:
"Instead of feeling like I played one game, it feels like I played three." pic.twitter.com/iMi5wz6Lx2
— Celtics on NBC Sports Boston (@NBCSCeltics) October 29, 2021
Brown returned on opening night to drop 46 points in an overtime loss to the New York Knicks despite his preseason layoff. Since the season got underway, Brown has also missed time due to left patella tendinopathy, which the team has been aware of for some time.
Brown's Hot Start to The Season
Brown's injury struggles haven't interfered with his development on the court; instead, he's currently playing at the highest level of his young career on offense. According to NBA Stats, Brown leads the Celtics in points per game with 25.6 on a 60.3 true shooting percentage.
Brown's ability to get downhill has ensured the Celtics continue to pressure the rim, despite Jayson Tatum's slow start to the season. The All-Star wing is also shooting 39.7% from three on 7.3 attempts per game, as his improvements when shooting off the dribble have been incredibly prominent over the last twelve months.
While Tatum is often considered the superstar on the roster, and Brown is usually considered the "Robin to Tatum's Batman," the narrative has been flipped in recent weeks as Tatum continues to start seasons slowly. Hence why the Celtics have opted to treat Brown's latest injury with caution, as his offensive production has been at an All-Star level since the opening tip of the season.
On Wednesday, Brown will return to playing action against the Toronto Raptors when the Celtics will be looking to avenge their worst loss of this young season.
Basketball NBA
Follow Heavy on Celtics!
Discover more from Heavy on Celtics↓
Unlock the latest Boston Celtics news, rumors and exclusives — direct to your inbox. ↓
Join Heavy on Celtics!
More Heavy on Celtics
Brown has been struggling with a slew of injuries for the last few months.


Baisakhi Festival falls on the first day of Vaisakh month (April-May) according to Nanakshahi or Sikh Calendar. For this reason, Baisakhi is also popularly known as Vaisakhi. According to the English calendar, the date of Baisakhi corresponds to April 13 every year and April 14 once in every 36 years. The festival of Baisakhi is celebrated by Punjabis all over the country. Not only in India, but Sikhs and other Punjabis also commemorate the festival around the world in countries like Canada and the UK too.
Baisakhi is also known as the harvest festival for on this day farmers in Punjab thank the almighty for the bountiful harvest that has filled their life with happiness. People buy new clothes and make merry by singing, dancing and enjoying the best of festive food.
The festival holds a special place in the hearts of the Sikhs as on this day in 1699, the Tenth Guru of Sikhs, Guru Gobind Singh, had founded the 'Khalsa Panth' or the 'Order of Pure Ones' at a gathering in wake of the religious oppression the community was facing at the hands of Mughal rulers. Five Sikhs who paid heed to the Guru's call were eventually known as the 'Panj Pyare' or 'Beloved Five' and are considered to be the first people to have been initiated into the 'Khalsa Panth'. Major celebrations are held in Punjab's Anandpur Sahib, where Guru Gobind Singh is said to have established the 'Khalsa Panth'.
Punjab's folk dance, Bhangra, is an important feature of fairs held across North India and elsewhere. Men and women break into the bhangra and gidda dance to express their joy. In several villages, Baisakhi Fairs are organized where besides other recreational activities, wrestling bouts are also held.
Sikh faith takes out a Baisakhi procession under the leadership of Panj Piaras. The procession moves through the major localities of the city. Devotees also visit Gudwaras and participate in street processions called 'Nagar Kirtans' that feature scripture-reciting and hymn-chanting.
You should partake the festive food of Gur Ka Halwa, Makki De Roti Sarson Da Saag, Punjabi Kadhi, and Cholle bhature.
This year the day also marks the 100th anniversary of the Jalianwalla Bagh massacre in which hundreds of Indians were killed on the orders of British army official General Dyer in Punjab's Amritsar city on April 14, 1919.
Baisakhi date coincides with 'Rongali Bihu' in Assam, 'Naba Barsha' in Bengal, Puthandu in Tamil Nadu and 'Pooram Vishu' in Kerala.
Happy Baisakhi to all and may God fill your coffers with joy and happiness.


What are custom action and filter points?
As we discussed previously, it's possible to use actions to run your own code at key points during a WordPress page load, as well as using filters to modify text, settings or just about anything with a filter on it, to tailor your WordPress installation to be exactly as you'd like it. What about themes and plugins though? How do I inject my own custom goodness in there? That's where custom action and filter points come in.
This is the core of what makes up a WordPress action point. The do_action() function instructs WordPress to look for any hooks attached to whatever tag is specified (in our case, that would be "wpcandy_news_widget_before") and run that function. Simple, right?
Hold on a moment, that's not all. The `do_action()` function can also accept multiple arguments (parameters) which are then passed through, if desired, to the function we're hooking on. Sounds complicated, right? Not really. Let's use the same example above, but extend it a bit.
To the snippet, I've added 2 extra arguments; a `$limit` variable and an `$id` variable. These are example variables that would be created by the plugin, holding the number of articles to display and the ID we're assigning to an element in the widget respectively. If we setup our `add_action()` call correctly, we should receive these values in our function, ready for us to use.
Hold on, where does add_action() come into this?
Now that's great and all, but what about `$limit` and $id`? Enter our last two parameters; the "priority" and the "accepted arguments".
Priority allows us to optionally specify an ordering for when our action should be executed, if multiple actions are assigned to the same `do_action()` call. This can be extremely useful in controlling the flow of your theme or plugin. Additionally, the accepted arguments number allows us to optionally specify that multiple arguments will be passed through to our action. The default value is 1, so no need to specify anything if you only have 1 argument going through.
Added the "priority" and "accepted arguments" parameter values, set at 1 and 2 respectively.
Added `$limit` and `$id` values to our function, to be passed through by `do_action()`.
Made example use of our `$limit` variable inside the function.
Often, for scalability's sake and keeping things clean and future proof, developers often encase these `do_action()` calls within functions. An example of this would be the `wp_head()` function, added to the vast majority of WordPress themes (so much so, that it is deemed a requirement). This function, in essence, runs `do_action( 'wp_head' )`, which is as straight forward as explained above. Magical, right?
Okay, but what about filters?
The concept of custom filter points is much the same as for custom action points, except it relates to filters. As we discussed in part 1, it's possible to place a filter on just about anything, from a snippet of content to an array of settings or options. The requirements here are much the same as with `do_action()`, except for two aspects; the first being that we're using the `apply_filters()` function and the second being that we require two parameters instead of just the tag. The second parameter involved is the core of what makes the `apply_filters()` function necessary- the data itself.
This code says; "take the value of the `$title` variable, apply any filters attached to the 'widget_title' hook, and assign the filtered value back to the `$title` variable". Simple, right?
The concept is that we're passing a value through to our function and getting a value back. This is the core of what a filter function does.
Much like `do_action()`, the `apply_filters()` function can also accept additional arguments. These function in exactly the same way as with `do_action()` and are made available using the "priority" and "accepted arguments" parameters on the `add_filter()` function, in the same way as they are used on `add_action()`. As can be seen, the differences between "action" and "filter" hooks and how they are created is marginal (they both function off of the same backbone code).
Even if you don't intend to create your own action and filter points, it's important to understand the full scope of how they work and how the `add_action()` and `add_filter()` functions fit into the grand scheme of things. If you use themes such as Canvas, for example, you'll notice these types of custom hooks in use, which are there to allow maximum flexibility and control over the way you'd like the theme to display and function.
Enough about hooks, what are these "pluggable function" things?
The concept of a "pluggable function" has become popular within the WordPress community, particularly in the realm of parent themes and theme frameworks. These are functions that are overrideable by simply creating a new instance of the function within a child theme or in a part of the theme that's triggered before the function's original location (this is commonly the root of the `functions.php` file). This concept is option used for functions that generate commonly customised areas of themes, such as the post metadata below the title on a theme's blog posts archives, or the area below the post content on single blog post screens. As with "action" and "filter" hooks, there are virtually infinite uses for pluggable functions.
Okay, I get it. How do I create these?
This part is really simple. It involves two skills; the first being knowing which functions in a theme are pluggable (and therefore, knowing the theme) and the second being knowing how to make the modification you'd like to make.
This line is the beginning of a conditional statement that would commonly wrap around a function with the name "insert_function_name_here". This just says that the function should only be created if it doesn't already exist, which leaves room for the function to be overridden. Lets create an example of this.
// This is where we'd run the meat of the function.
Overriding this in our child theme is as simple as copying the code and removing the conditional statement (the first line and the bracket at the end), and placing this in our child theme, where we can then make any modifications to it that we desire, without needing to modify the parent theme.
Hooks and pluggable functions are great, but when do I use which?
A general rule of thumb that I like to stick to is: a function should only be made pluggable if not attached to an "action" or "filter" hook. The reason for this is that it's possible to remove functions from hooks, as well as to override them using the "priority" setting explained above, which renders the pluggable nature of the function redundant. This also makes it easier to decipher the nature of a function (if it's pluggable, it's not attached to a hook), which can speed up development time as well as making it easier for developers who are looking at the code for the first time to decipher what's going on under the hood.
And that, ladies and gentlemen, is a tutorial on how to create your own action and filter points, as well as a brief introduction into the concept of pluggable functions, how to use them and when to use which techniques.
Excellent explanation of all three, Matt.
Now I finally understand why every single function in canvas is not pluggable. Great tutorial..
Yeah, while it is possible to have every function pluggable, it isn't always necessary, as it could be overridden via the action/filter, or simply removed via remove_action() or remove_filter().
Very well explained, all new in wordpress development should read this! Congrats!


text:
package org.codehaus.mojo.animal_sniffer.ant;

/**
 * Created by IntelliJ IDEA.
 *
 * @author Stephen Connolly
 * @since 07-Sep-2009 16:55:55
 */
public class Ignore
{
    private String className;

    public String getClassName()
    {
        return className;
    }

    public void setClassName( String className )
    {
        this.className = className;
    }

    public boolean equals( Object o )
    {
        if ( this == o )
        {
            return true;
        }
        if ( !( o instanceof Ignore ) )
        {
            return false;
        }

        Ignore ignore = (Ignore) o;

        if ( className != null ? !className.equals( ignore.className ) : ignore.className != null )
        {
            return false;
        }

        return true;
    }

    public int hashCode()
    {
        return 0;
    }

    public String toString()
    {
        return "Ignore{" + "className='" + className + '\'' + '}';
    }
}

redpajama_set_name: RedPajamaGithub


text:
Now Reading: Glenn Hegar Releases Better-Than-Expected Revenue Estimate
Glenn Hegar Releases Better-Than-Expected Revenue Estimate
The legislative session won't kick off in earnest until tomorrow, but the starting pistol shot came today, when new Comptroller Glenn Hegar released his first biennial revenue estimate. It's Hegar's job to predict the levels of funding the state can count on for each biennial budget period, and his estimates set the boundaries of the Legislature's budget negotiations. He's basically asked to predict the future and set a ceiling on how much lawmakers can spend.
A number of Lege-watchers, including a number of legislators, expected Hegar to produce a fairly conservative budget estimate. In 2011, the office dramatically overcorrected during the economic slowdown, and the Legislature ended up having to make a lot of unnecessary cuts, especially to public education. The recent oil shock, and some unhappy predictions for the state from a number of national economists, had some thinking that the comptroller's office would once again play it safe.
But Hegar's estimate is comparatively rosy, actually. The comptroller's office estimates that the state is going to pull in a little over $110 billion dollars during the next biennium, plus $7.5 billion in "surplus" revenue at the end of the current one. With $5 billion of that $110 billion being split between the state highway fund and the state's rainy day fund, the men and women of the 84th session will have, Hegar says, about $113 billion for the next budget.
To put that into perspective, the budget for the 2014-15 biennium was about $95 billion. According to the left-leaning think tank Center for Public Policy Priorities, it would take $101 billion this session just to maintain the level of services that were provided for in the old budget—new money needed in part because of the state's rapid population growth. But that would still leave $12 billion for legislators to play with.
On one hand, it's not a crisis budget, and it's not one that will require legislators to make cuts (though they might anyway.) The office of Lt. Gov.-elect Dan Patrick released a brief statement that characterized the comptroller's estimate as a green light for his agenda, which has included the promise of significant tax cuts: It provided "adequate revenue to secure our border, provide property and business tax relief while focusing on education and infrastructure. I intend to accomplish these goals."
On the other, the "surplus" is a lot less than it looks at first glance, in part because the amount of budget trickery the Legislature has employed over the years. Gov.-elect Greg Abbott and Patrick have called for ending road funding diversions and making the Texas Department of Transportation whole again. But about $3 billion in additional revenue is needed to end diversions, and TxDOT says it needs an additional $5 billion just to keep the system at the current level of congestion—that is, without making any forward progress.
In education, the state has not yet gotten back to the level of funding that preceded 2011's gargantuan cuts to public ed—a portion was restored in 2013, but a significant amount of money is needed even beyond what was the case in 2011, thanks to population growth. And it's unclear how proposed voucher programs would affect the system's overall cost.
And then there's tax cuts. The truly sweeping tax overhauls that were talked about during the election, like substituting property taxes for increased sales taxes, seem to have fallen off the radar for now. In the past, GOP lawmakers of all stripes have passed minor tax bills and sold them to the voters as massive ones. That may be Patrick's play, but even modest tax reductions will shave the "surplus" down in a hurry.
On the general state of the economy, Hegar told reporters that he didn't see Texas heading toward a recession this year. The economy, he said, "will continue to expand, but at a much slower pace than we've seen recently." His estimate, he said, was premised on the price for a barrel of oil returning to $65 a barrel in the last four months of this year, with it continuing an upward trajectory thereafter. That's roughly in line with Goldman Sachs' projection, though the Houston Chronicle's Chris Tomlinson reported industry speculation that the price slump would last 18 months to two years. A lot depends on how it unwinds.
The bottom line: The budgetary picture legislators will be pondering as the session starts is not nearly as bad as it might have been—but it remains difficult to see the state fully coping with long-standing under-investment in schools, roads and social services.
Christopher Hooks is a freelance journalist in Austin.
Read More: 84th Texas Legislature, Dan Patrick, Glenn Hegar
The most interesting story in American politics in the coming year isn't in Iowa, but on the outskirts of Houston and Dallas. by Christopher Hooks
Texas' New Medical Marijuana Law Doesn't Cover Veterans Suffering from PTSD
The Legislature recently passed medical cannabis reform, but the debate was marred by misinformation and left out people who say the drug eases their symptoms of post-traumatic stress disorder. by Stephen Paulsen
Loon Star: Trump University, Department of Mendacity
Ben Sargent's latest 'toon takes on Trump's "truth." by Ben Sargent


text:
2022 Stewardship Campaign Update
STEWARDSHIP NOTES FOR NOVEMBER 2021:
Christmas Flowers 2021
Monthly Zoom Calls With the Bishop
A Thanksgiving Prayer
Three Things....
CHRISTMAS PROJECT!
147th Convention of the Diocese of Southern Ohio
2022 Stewardship Campaign
Hygiene Kits for the Homeless
A Concert for Halloween
Learn to Zoom Sunday
2021 Diocesan Convocation
Afghanistan and Haiti
GUIDELINES FOR IN-PERSON WORSHIP UPDATE
Lift Every Voice and Sing!
CRAYONS TO CLASSROOMS
NEW GUIDELINES FOR IN-PERSON WORSHIP
LAY READER PRACTICE
Birtdays and Anniversaries in July 2021
FOR THIS SUNDAY
Flag Day June 14, 2021
Birthday and Anniversary Blessings - June 2021
Ice Cream Social Today!
Flags for Heroes
Canterbury Court Ministry Opportunities
WANT TO SING AGAIN?
Bishop Price to hold two final Zoom gatherings
A Message from Bishop Curry
St. Mark's Softball
Flower Sunday
Diocesan Listening Sessions Scheduled
Hope Floats:
A message from Presiding Bishop Michael Curry
Spring 2021 Parish Directory
April is Child Abuse Prevention Month.
EASTER SERVICE and MORE!
Gem City Ballet
Meet with Bishop Price Online
FROM THE NATIONAL CATHEDRAL
The Easter Season!
Holy Week Schedule at Christ Church Cathedral
FORWARD MOVEMENT
Sparkle Day 2021
DAY OF CHANGE March 14!
The Life and Leadership of John Lewis
PALM SUNDAY and HOLY WEEK SCHEDULE
Ready for some upbeat music?
Forward Today
Forward Day by Day Lenten Reflections Booklet
Walking with Christ to the Cross
Lent Madness 2021
Birthdays and Anniversaries in February 2021
By Elizabeth Wagner, delegate
Last Saturday was the Annual Diocesan Convention, and for the second consecutive year it was a one-day event held via zoom. The final count of voting participants this year was 108 clergy and 199 laity, for a total of 307 members. St. Mark's delegation this year consisted of Rowena as our priest, Carol Nancarrow and Jim Rudd as the Wardens, and Katherine and Elizabeth Wagner as the elected delegates.
There were six resolutions on the ballot this year; the first was completed as the first order of business, as it changed the status of St. Paul's, Logan from Mission to Parish. The vote was unanimous, and with the change they gained two more voting members. Congratulations, St. Paul's, Logan!
Resolution 02 focused on Mission Share Funding. Our own Dwight Cass and Jim Rudd helped create it several years ago, and Jim helped revise it this year as well. The revision was actually two years ahead of schedule, as so many churches' finances have been negatively impacted by the pandemic, and the Diocese stepped in to determine how they could help. The resolution passed, and currently, St. Mark's mission share will decrease, which is great news for us!
Resolution 04, Continued Funding for Becoming Beloved Community, and Resolution 05, adding Bishop Barbara Clementine Harris to the Lesser Feasts and Fasts Calendar, both passed. Those resolutions do not involve direct changes in the Diocese just yet, we were actually voting to send the requests to the next General Convention which will be held in 2022. Resolution 06, Continued Work of the Reparations Task Force, also passed.
Resolution 03, Creation of a Capitol Improvement Fund, was the only resolution to fail. It also generated the most discussion at both the pre-convention meeting held a week prior and the Convention itself. The Trustees of the Church Foundation submitted this resolution, with the goal "…to help ease the burden for parishes currently in dire need and build a fund to better cover necessary maintenance and upgrades of all our beautiful, but aging physical resources…" (Connections, Issue 2 Volume 8, pg. 21). This would have had a direct impact on parish budgets. Most of the debate regarding this resolution was a cycle, in that the churches that would benefit the most from such a fund need the help because they have no money to cover their building expenses, and so have no money to put towards the fund. Interestingly, this resolution generated so much feedback at the pre-convention meeting that it was submitted before the Diocese at Convention with amendments already added. Those amendments were to lower the initial rates at which funds were pulled from churches, and then to either keep them that low or barely raise them over the following few years.
The Convention also included periodic stories and accounts from the Becoming Beloved Community campaign, and in fact the Convention's Invocation was such an account. It was delivered by a young woman named Nia McKenney, who I actually grew up with at Procter Camp. We roomed together a few times and even served as junior counselors together one summer, so it was a joy to see what she is now doing in the Diocese!
The 148th Diocesan Convention has been scheduled for December 9-10, 2022, at the Roberts Center in Wilmington, Ohio. God willing, it will be a two-day, in-person event. The sense of community through socialization with our Diocesan brothers and sisters is honestly the best part of Convention, so we are very much looking forward to it! Plus, I'm sure the Diocesan Staff will be thrilled that they won't have to continuously explain that on Zoom, you have to unmute yourself BEFORE you can speak.
If you wish to attend Convention as a voting delegate, please see Kendall Rubino or Gary Welch, as they are the Nominating Committee for next year's events. You may also be able to attend as a guest, so you would have seat and voice but no vote, but Covid protocols may not allow for that again just yet. As the Diocese releases information about the 148th Convention, we will let you know. New faces and voices are always welcomed and many times needed.
And the BEST part of the Convention this year was that with a single ballot cast, Katherine Wagner has now been elected to the Diocesan Council! She follows in the footsteps of our dearly beloved John Webster, whose spirit will no doubt guide her during this time.


text:
Egypt erupted in protests
By Sophie '13 on February 18, 2011
PROTEST: Above, Egyptians protest restrictions on access to technology. Photo taken from Wikimedia Commons
In Egypt, protest marches and demonstrations erupted on Tuesday, Jan. 25, when thousands of discontented Egyptians began taking to the street to protest poverty, rampant unemployment and the governance of President Hosni Mubarak, whose regime controlled the country for almost 30 consecutive years. The revolution culminated on Feb. 11 when Vice President Oman Suleiman announced Mubarak's resignation on state television and transferred executive power to the Supreme Council of the Armed Forces until elections can be organized.
The seeds of discontent were first sown on Dec. 18, 2010 when an explosive wave of street protesters in Tunisia led to the removal of autocratic President Zine el-Abidine Ben Ali, who had ruled for nearly 23 years. Like the Egyptian crisis, these Tunisian protests, formally known as the Jasmine Revolution, were reportedly caused by civilian anger over unemployment, food inflation, corruption and poor living conditions.
The largest protests in Egypt occurred on Friday, Jan. 28, at which point the government took the unprecedented step of blocking all Internet and social media services in the country. Twitter, Facebook and Google, which were previously being used by organizers to coordinate protests, became inaccessible. In addition, text messaging and cellular connections became strictly prohibited. Monitoring of these sites not only enraged Egyptian citizens but also brought increased international attention to the revolution.
Stuart Posin, Director of Academic and Administrative Technology at Marlborough, said that technology plays a significant role in facilitating political uprisings like the one in Egypt.
"Social media played a huge role in the Egyptian protests, which I believe established the new normal for political disputes around the world," he said. "Technology will do much more in the years to come. We have seen nothing yet."
Science instructor Dr. Nessim Lagnado, who is Egyptian, said that he could relate to the current situation, as he and his family lived through the Egyptian Revolution of 1952.
"When I grew up there, something very similar happened when the regime of King Farouk was upset by the military," Lagnado said in an e-mail. "People took to the streets rioting and in protest, burning things. So, when I look at the current pictures of Egypt in the midst of this crisis, I see something that I can identify with."
In the classroom, Marlborough has promoted awareness of the crisis by integrating these topical events into curricula of the Department of History and Social Sciences. 8th Grade Global Studies classes in particular have embraced classroom discussion and research pertaining to the revolution.
"It is interesting for my students to see this happening," Dean of Faculty and history instructor Martha Schuur said. "My class has been reporting on the crisis and following the affair online for homework and during class. It is definitely a Global Studies hot topic."
In the final week, protests multiplied and stretched from the capital, Cairo, into the cities of Alexandria and Suez. In a desperate attempt to monitor these uprisings, police arrested and injured numerous civilians with batons, tear gas and water cannons. Additionally, the Muslim Brotherhood, a long, fierce opponent of the Mubarak government and officially banned in Egypt, came out of hiding to support the protesters.
Clara '14, who is a member of the Current Events Club, said that she was optimistic about the results of the uprisings.
"Democracy is definitely not feasible in all countries in the Middle East, but Egypt is such a progressive nation that I think it is possible," Clara said. "Change is good, and I think democracy is the best alternative for the Egyptian government compared to Mubarak's authoritarianism."
Sophie '13


Applications for 2018 Electives Co-Officer are now open!
Join our team as Co-Electives Officer in 2018 and help us run our Elective Aid Program. If you want to lead a project creating tangible change in healthcare standards all around the developing world, this position is for you. You can bring much-needed medical supplies to third-world hospitals through the cohort of students travelling on their UNSW Medicine Electives. Learn more about our Elective Aid Program here.
For a role description and application form, click below. Applications due to chair@msap.org.au by midnight on Sunday 8th July.


text:
Los Angeles LA
LA Visitors Guide
5pm-12:30am
View the menu powered by SinglePlatform
The First Timer's Guide To Eating In LA
Not every great restaurant in Los Angeles - just the ones you should have on your list for your first visit.
The Los Angeles Greatest Hits List
Our guide to the quintessential restaurants that make Los Angeles dining what it is.
The Best Italian Restaurants In LA
Here are the best Italian restaurants in Los Angeles, according to us.
The Old Hollywood Guide: 11 Classic Places You Actually Need To Try
LA is full of restaurants that Old Hollywood stars used to frequent. These are the ones you should still be visiting.
Jakob Layman
Dan Tana's
Italian in West Hollywood
Brant Cox
Perfect For: Birthdays Celebrity Sightings Classic Establishment See And Be Seen
There's something very unsettling about year-round Christmas stores. The make-believe cheeriness, the July Santa sightings, and the dead-eyed cashier ringing up your discounted wrapping paper while silently screaming for help. The holiday season should be reserved for just that - the holiday season. Unless of course you're eating at Dan Tana's, the classic Italian restaurant where every meal feels like the greatest holiday celebration.
Located in a yellow bungalow along Santa Monica Blvd. in West Hollywood, Dan Tana's has been around since the 1960's and is one of the most iconic restaurants in the city. But unlike other famous LA restaurants, this red-boothed joint is hardly a tourist trap. None of your visiting US Weekly-clutching friends are going to beg you to eat at Dan Tana's. This is where you excitedly take them to prove how very little moon juice, farro bowls, and pre-paid gym memberships have to do with this city.
You'll see famous actors and sit next to the person who wrote your favorite TV show and not even realize it. But Dan Tana's also isn't your typical Hollywood scene. The interior, with Christmas lights all over, chianti bottles hanging from the ceiling, and sassy old waiters low-key flirting with everyone, is so small and cramped that it acts as an equalizer. At Dan Tana's, everyone's on the same level. You aren't eating with celebrities - you're eating with a bunch of people who live in the same city as you do, some of whom might happen to have an Academy Award sitting at home.
If anyone tells you Dan Tana's has the best Italian food in Los Angeles, don't believe them. If anyone tells you the food at Dan Tana's is bad, also don't believe them. Dan Tana's food is what it is: old-school, red-sauce classics that aren't going to blow your mind, but also taste damn good on a wine-soaked Saturday night. The chicken parmigiana is their signature dish - it's cheesy fried goodness and we're fairly positive they put sugar into every layer. You're also going to want the Nika's Caesar and the fried raviolis to start, the penne arrabiata for some kick, and the linguini and clams with white sauce. But no need to over-order, because almost every entree comes with its own side of pasta, and their tables are only so big.
Dan Tana's isn't about the food or the famous clientele who eat it. It's about being at a place where the party never stops, the wine is always flowing, and you're truly bummed when the holiday celebration is over. Luckily, no one has to wait a full year to experience it again.
Nika's Caesar
Made right in front of you, this isn't going to be the best caesar salad you ever put in your mouth. That said, it's the salty, creamy, crouton-filled starter you need tonight.
Fried Raviolis
Order two of these. One never lasts long enough to get around the table.
Chicken Parmagiana
After a soul-crushing week, there are few things we want more than Dan Tana's chicken parm. It's big, saucy, cheesy, and will instantly make you feel better. Don't leave here without ordering this.
You might expect this to be a fairly by-the-books version of the Italian classic, but Dan Tana's does not shy away from the spice, and we fully respect that. Also, the portion is huge.
Linguini And Clams
At some point in the evening, you will have too much red sauce. On the table, on your shirt, and in your stomach. Move to the linguini. It's definitely the lightest of the pasta dishes, but that white sauce has something magical in it. Hint: Sugar.
Birthdays Celebrity Sightings Classic Establishment
More spots in West Hollywood
Breakfast By Salt's Cure
Breakfast By Salt's Cure is one of the best, affordable breakfast spots in West Hollywood.
Pace Restaurant
Pace is an LA legend where you go to feel like you're eating in the Tuscan countryside, even if you're actually just in Laurel Canyon.
Hedley's
Hedley's is a rare healthy-ish lunch spot in Weho you can actually tolerate.
Lucques is a West Hollywood industry staple, but one that ultimately feels pretty boring.
Rao's Hollywood
Rao's is the LA location of the classic NYC Italian restaurant, and while the food won't blow your mind, it's still very crowd-pleasing.
Cecconi's
Cecconi's is the place for a power lunch in West Hollywood - plus the food is pretty good.
Little Dom's
Little Dom's is Los Feliz's signature neighborhood restaurant, and it's a great move any time of day.
Eatalian Cafe
Eatalian Cafe is a huge food emporium in Gardena, with fantastic pizzas and baked goods.
For Italian food in Los Angeles, it still doesn't get any better than Bestia in the Arts District.
Tom Tom is yet another Lisa Vanderpump restaurant that you don't need to be eating at.
Spago's not just a piece of LA history - it's also still a great restaurant.


text:
Azerbaijan Iran Iraq Turkmenistan All countries
All countries Iran Ardabil Ardabil
Weather in Ardabil
Weather archive at the airport ( 15 km, -6 °C+21 °F )
-4 °C25°F
52 minutes ago at the weather station it was -5.4 °C+22 °F, overcast, very high air pressure, very high humidity (98%), fresh breeze (9 m/s) (32 km/h) (20 miles/hour) (17 knots) (5 Bft) blowing from the north-northeast. Snow, slight. Horizontal visibility 5.0 km.Horizontal visibility 3.11 miles. Weather archive at the weather station
Today we expect -4..-6 °C°F, +25..+21 °C°F, without precipitation, gentle breeze. Tomorrow: -6..0 °C°F, +21..+32 °C°F, without precipitation, light breeze.
Local time 21:30 03:30 09:30 15:30 21:30 03:30 09:30 15:30 21:30 03:30 09:30 15:30 21:30 03:30 09:30 15:30 21:30 03:30 09:30 15:30 21:30 03:30 09:30 15:30 21:30 03:30
Feels like,
direction NE calm calm NE NE SW calm NE N N E NE NE calm calm W NW N NE NE W calm NW calm NW NE
Today, Thursday, February 9
Local time 16:30 17:30 18:30 19:30 20:30 21:30 22:30 23:30 00:30 01:30 02:30 03:30 04:30 05:30 06:30 07:30 08:30 09:30 10:30 11:30 12:30 13:30 14:30 15:30 16:30 17:30 18:30 19:30 20:30 21:30 22:30 23:30 00:30 01:30 02:30 03:30 04:30 05:30 06:30 07:30 08:30 09:30 10:30 11:30 12:30 13:30 14:30 15:30 18:30 21:30 00:30 03:30 06:30 09:30 12:30 15:30 18:30 21:30 00:30 03:30 06:30 09:30 12:30 15:30 18:30 21:30 00:30 03:30 06:30 09:30 12:30 15:30 18:30 21:30 00:30 03:30 09:30 15:30 21:30 03:30 Local time
direction NE NE NE NE NE NE NE NE NE calm calm calm calm calm SW SW SW calm SE N N NE NE NE NE NE NE NE NE NE calm calm calm calm W SW W W W W SW calm SE SE E E NE NE NE N calm N calm E NE NE NE NE N calm calm calm NW W SE NW W N NE NE NE NE NE W NW calm NW calm NW NE direction
77 77 77 78 82 83 83 83 83 84 84 85 84 84 83 82 80 78 73 69 65 61 62 64 68 75 79 81 82 82 80 80 81 81 80 79 78 79 80 82 81 78 71 66 59 54 54 65 82 84 81 85 90 92 82 82 84 94 95 94 95 92 68 57 75 86 95 96 97 98 83 85 92 94 95 96 79 68 89 96 Humidity,
07:14 17:47 07:13 17:48 07:12 17:50 07:10 17:51 07:09 17:52 07:08 17:53 07:07 17:54 07:06 Sun:
10:21 00:28 10:51 01:37 11:26 02:49 12:11 03:59 Moon:
2 hours ago, the minimum air temperature ( -6 oC +21 oF ) was observed in Ardabil (airport).
52 minutes ago, the maximum air temperature ( +4 oC +39 oF ) was observed in Pars Abad Moghan.
+4 +39
Astara
Lerik
Lenkoran (airport)
Yardymli
Ardabil (airport)
Khalkhal
Pars Abad Moghan
Parsabad-Moghan (airport)


text:
Shelley Barba and Joy Perrin on The Ascendance of Harley Quinn: Essays on DC's Enigmatic Villain
by Nicholas Yanes | in Interviews | Tue, 9 January 2018
Harley Quinn first appeared in a 1992 episode of Batman: The Animated Series. With no previous history in Batman's lore, Quinn could have just been another random character created for an animated series. However, she not only migrated into the comic books, she also gained a large fanbase and quickly became one of DC's most popular female characters. As scholars of popular culture, Shelley Barba and Joy Perrin took notice of Quinn's popularity and character evolution, and they decided to produce a manuscript examining the character. With The Ascendance of Harley Quinn: Essays on DC's Enigmatic Villain now in print, Shelley and Joy allowed me to interview them about this project and what they learned from it.
Nicholas Yanes: Growing up, what were your favorite comic books and cartoons?
Joy Perrin: I didn't read comic books as a kid. As for cartoons, I loved Gargoyles, Darkwing Duck, Chip and Dale's Rescue Rangers, and of course Batman: The Animated Series.
Shelley Barba: I rarely had access to comic books, but after the Batman movies of the late 80s/early 90s, I tried my hardest to find those. I didn't have much luck. I adored Batman: The Animated Series so much I remember racing home from school on my bike so I could get there in time for the amazing opening sequence.
Yanes: When did you two become fans of Harley Quinn?
Joy: I originally liked the character, but didn't really become a fan until I started reading comic books as an adult. I was actually trying to read more Poison Ivy, but as I went I realized Harley was the better character and fell in love.
Shelley: Her first appearance on B:TAS got me. I loved all of her silly jokes and how athletic she was.
Yanes: What was the inspiration behind creating The Ascendance of Harley Quinn?
Joy: She is such a versatile character, and surprisingly fleshed out for a villain, that I was sure there was enough to write about. Plus, I wanted to read what other people had to write, so the book was self-serving.
Shelley: I had a great (although exhausting) time on my previously edited work, In the Peanut Gallery with Mystery Science Theater 3000 (with Rob Weiner), and had finally recovered enough from it that I wanted to go again on another of my pop culture interests.
Yanes: There have been a few comic book characters that began in television. Why do you think Harley Quinn became so popular?
Joy: I think she's become so popular because she's both good and bad, smart and dumb, light and dark. The duality of her character leads people to identify with her more. She's not hated because she's not all bad. She's not entirely loved because she does bad things sometimes, so we just end up enjoying the character. There's an element of not knowing what she's going to do next that is particularly pleasing.
Yanes: While putting together this manuscript, was there anything you learned about Harley Quinn that took either of you by surprise?
Joy: I learned about hybristophilia, which is when women fall in love with Psychopaths, and I hadn't thought about her in those terms before. I also learned that one aspect of a character, viewed through many lenses, can yield different results. For example, the comic book "Mad Love" is referenced a lot in the book, and it is interesting to see how different people interpret what happens in that book. The same act, viewed through a feminist lens can be different from that same act viewed through a sociological lens. That was the most interesting to me.
Shelley: I knew it in a general sense, but until working on the book, it didn't really hit me just how prevalent the character has become in the Batman universe including video games, comics, shows, movies, and oh so much merchandising!
Yanes: Harley Quinn is largely defined by her relationship with the Joker. How did your contributors approach the problematic nature of Harley's bond with Mr. J?
Joy: You know, the funny thing about this was that when we were doing the index we were going to index the Joker, but then as we tried to do it we found that there were only a few pages in the text that didn't mention him. So, he's a big part of her story. Viewed from another perspective, if the Joker wasn't there, there wouldn't have been as much to write about. What makes her feminist or anti-feminist is her relationship with the Joker and how that is interpreted. What makes her story interesting is that she as a character has had to grow away from him, and that's what makes her interesting. I don't think anyone came out and said the relationship was good for her, but some made the argument that it wasn't as one-sided as people tend to think.
Yanes: Harley has a huge female fan following. Why do you two think so many women identify with her?
Joy: She has such a big personality. Women are told to be quiet, and still, and not to be too loud and not to be too pushy, and then Harley comes into the scene swinging a mallet and singing. It's refreshing to have a female character who is not afraid of what people think of her.
Shelley: Harley Quinn has amazing grit. She has battled so much, not always in the best or even legal way, but she keeps moving forward. She changes and grows without losing the essence of her character. Not many female characters are allowed that depth.
Yanes: There have been several versions of Harley Quinn. Which is your favorite?
Joy: I love the current Harley Quinn from Amanda Connor and Jimmy Palmiotti. As much as the animated Harley was fun, seeing the New 52 Harley away from the Joker, having a relationship with Poison Ivy, and doing her own thing is really fun to read.
Shelley: My current favorite is the "DC Super Hero Girls" Harley. Her look is cute and her energy is a good fit for her being younger. I love a good alternative universe, and am excited about the network series being developed for 2018.
Yanes: When people finish reading The Ascendance of Harley Quinn, what do you both hope that readers take away from it?
Joy: That things are not as clear cut as they may seem. That often, characters and their social situations are more complex because fiction reflects our society, and what we say about pretend people is a reflection of what we believe about real people. How society treats Harley says a lot about what society thinks of what is a good or a bad woman. How people interpret the relationship between the Joker and Harley is a reflection on what they think is important in a relationship.
Shelley: That if you only know this character from one place, like "B:TAS", Suicide Squad (movie), or the Arkham videogames, you are only getting one sliver a rather interesting character.
Yanes: Finally, what are you two working on that people can look forward to?
Joy: I'm going to be involved in a few podcasts about Harley in "Batman: The Animated Series." Other than that, it's not our work but people should take a look at the book Marvel's Black Widow from Spy to Superhero by Sherry Ginn and Superheroines and The Epic Journey by Valerie Estelle Frankel.
Shelley: I'm in the beginning stages of planning the next book. It's still very preliminary, but it will focus on a beloved video game series.
Remember to follow me on twitter @NicholasYanes, and to follow Sequart on Twitter @Sequart and on Facebook.
Tagged comics studies, Harley Quinn. Bookmark the permalink.
RSS feed for Nicholas Yanes
@nicholasyanes
Nicholas Yanes has a Ph.D. in American Studies, and his dissertation examined the business history of EC Comics and MAD Magazine. In addition to being a professional writer, he frequently consults entertainment companies in regards to video games, films, and comic books.
See more, including free online content, on Nicholas Yanes's author page.


text:
package com.dumptruckman.chestrestock;

import com.dumptruckman.chestrestock.api.CRChest;
import com.dumptruckman.chestrestock.api.CRChestOptions;
import com.dumptruckman.chestrestock.api.CRConfig;
import com.dumptruckman.chestrestock.api.CRDefaults;
import com.dumptruckman.chestrestock.api.ChestManager;
import com.dumptruckman.chestrestock.api.ChestRestock;
import com.dumptruckman.chestrestock.util.BlockLocation;
import com.dumptruckman.chestrestock.util.InventoryTools;
import com.dumptruckman.minecraft.pluginbase.config.ConfigEntry;
import com.dumptruckman.minecraft.pluginbase.util.Logging;
import com.dumptruckman.minecraft.pluginbase.util.Null;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.Chest;
import org.bukkit.entity.Player;
import org.bukkit.inventory.DoubleChestInventory;
import org.bukkit.inventory.InventoryHolder;

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;

class DefaultChestManager implements ChestManager {

    private final static String EXT = ".yml";

    private ChestRestock plugin;
    private File chestsFile;

    private Map<BlockLocation, CRChest> chestsMap = new HashMap<BlockLocation, CRChest>();
    private Set<CRChest> pollingSet = new LinkedHashSet<CRChest>();

    DefaultChestManager(ChestRestock plugin) {
        this.plugin = plugin;
        chestsFile = new File(plugin.getDataFolder(), "chests");
        if (!chestsFile.exists()) {
            chestsFile.mkdirs();
        }
        initPolling();
    }

    private void initPolling() {
        if (plugin.config().get(CRConfig.RESTOCK_TASK) < 1) {
            Logging.fine("Chest restock polling disabled");
            return;
        }
        Logging.fine("Initializing chest polling.");
        cacheAllChests();
    }

    @Override
    public void cacheAllChests() {
        File worldContainer = Bukkit.getWorldContainer();
        for (File file : worldContainer.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isDirectory();
            }
        })) {
            cacheChests(file.getName());
        }
    }

    @Override
    public void cacheChests(String worldName) {
        File worldFolder = getWorldFolder(worldName);
        if (worldFolder.exists()) {
            Logging.finer("Checking chests for world: " + worldFolder);
            for (File chestFile : worldFolder.listFiles(new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    return name.endsWith(EXT);
                }
            })) {
                String fileName = chestFile.getName();
                if (chestsMap.containsKey(BlockLocation.get(fileName.substring(0, fileName.lastIndexOf(EXT))))) {
                    continue;
                }
                CRChest chest = loadChest(chestFile);
                if (chest != null) {
                    Logging.finest("Polling check in for " + chest.getLocation());
                    pollingCheckIn(chest);
                    chestsMap.put(chest.getLocation(), chest);
                }
            }
        }
    }

    private File getWorldFolder(String worldName) {
        return new File(chestsFile, worldName);
    }

    private File getChestFile(BlockLocation location) {
        return new File(getWorldFolder(location.getWorldName()), location.toString() + EXT);
    }

    public CRChest getChest(Block block) {
        if (block == null) {
            throw new IllegalArgumentException("block may not be null!");
        }
        if (!(block.getState() instanceof InventoryHolder)) {
            throw new IllegalArgumentException("block must be an InventoryHolder!");
        }
        InventoryHolder holder = (InventoryHolder) block.getState();
        BlockLocation location = BlockLocation.get(block);
        Logging.finer("Searching for ChestRestock chest at " + location.toString());
        CRChest rChest = chestsMap.get(location);
        if (rChest != null) {
            Logging.fine("Got cached chest at " + location);
            return rChest;
        }
        File chestFile = getChestFile(location);
        if (!chestFile.exists()) {
            if (!(holder.getInventory() instanceof DoubleChestInventory)) {
                return null;
            }
            Chest otherSide = getOtherSide(block);
            if (otherSide == null) {
                Logging.fine("Chest claims to be double but other side not found!");
                return null;
            }
            location = BlockLocation.get(otherSide.getBlock());
            rChest = chestsMap.get(location);
            if (rChest != null) {
                Logging.fine("Got cached chest (other-side) at " + location);
                return rChest;
            }
            chestFile = getChestFile(location);
            if (!chestFile.exists()) {
                return null;
            }
        }
        rChest = loadChest(chestFile);
        chestsMap.put(location, rChest);
        return rChest;
    }

    @Override
    public CRChest getChest(Block block, InventoryHolder holder) {
        return getChest(block);
    }

    //public void removeChest()

    @Override
    public CRChest newChest(Block block, InventoryHolder holder) {
        return loadChest(getChestFile(BlockLocation.get(block)));
    }

    @Override
    public CRChest createChest(Block block) {
        if (block == null) {
            throw new IllegalArgumentException("block may not be null!");
        }
        if (!(block.getState() instanceof InventoryHolder)) {
            throw new IllegalArgumentException("block must be an InventoryHolder!");
        }
        InventoryHolder holder = (InventoryHolder) block.getState();
        CRChest rChest = newChest(block, holder);
        if (rChest == null) {
            return null;
        }
        CRDefaults defaults = plugin.getDefaults(block.getWorld().getName());
        CRDefaults globals = plugin.getDefaults(null);
        for (Field field : CRChestOptions.class.getFields()) {
            if (!ConfigEntry.class.isAssignableFrom(field.getType())) {
                continue;
            }
            try {
                ConfigEntry entry = (ConfigEntry) field.get(null);
                if (entry.getType().equals(Null.class)) {
                    continue;
                }
                Object obj = defaults.get(entry);
                if (obj == null) {
                    obj = globals.get(entry);
                }
                rChest.set(entry, obj);
                //count++;
            } catch (IllegalAccessException ignore) { }
        }

        if (InventoryTools.isEmpty(holder.getInventory().getContents())) {
            String emptyLootTable = defaults.get(CRDefaults.EMPTY_LOOT_TABLE);
            if (emptyLootTable == null) {
                emptyLootTable = globals.get(CRDefaults.EMPTY_LOOT_TABLE);
            }
            if (!emptyLootTable.isEmpty()) {
                rChest.set(CRChest.LOOT_TABLE, emptyLootTable);
            }
        }

        rChest.set(CRChest.LAST_RESTOCK, 0L);
        //rChest.set(CRChest.CREATION_TIME, System.currentTimeMillis());
        rChest.update(null);
        pollingCheckIn(rChest);
        chestsMap.put(rChest.getLocation(), rChest);
        return rChest;
    }

    @Override
    public CRChest createChest(Block block, InventoryHolder holder) {
        return createChest(block);
    }

    @Override
    public boolean removeChest(BlockLocation location) {
        boolean cached = chestsMap.remove(location) != null;
        boolean filed = getChestFile(location).delete();
        if (cached || filed) {
            Logging.fine("Removed chest from cache: " + cached + ".  Able to delete file: " + filed);
            return true;
        }
        Block chestBlock = location.getBlock();
        if (chestBlock != null) {
            Chest chest = getOtherSide(chestBlock);
            if (chest != null) {
                location = BlockLocation.get(chest.getBlock());
                cached = chestsMap.remove(location) != null;
                filed = getChestFile(location).delete();
                if (cached || filed) {
                    Logging.fine("Removed chest from cache: " + cached + ".  Able to delete file: " + filed);
                    return true;
                }
            }
        }
        Logging.fine("Found no chest to remove in cache or files");
        return false;
    }

    private CRChest loadChest(File chestFile) {
        Logging.fine("Loading chest from file: " + chestFile.getName());
        try {
            BlockLocation location = BlockLocation.get(
                    chestFile.getName().substring(0, chestFile.getName().indexOf(EXT)));
            if (location == null) {
                Logging.warning("Block location could not be parsed from file name: " + chestFile.getName());
                return null;
            }
            return new DefaultCRChest(plugin, location, chestFile, CRChest.class);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } catch (ArrayIndexOutOfBoundsException e) {
            Logging.warning("Block location could not be parsed from file name: " + chestFile.getName());
            return null;
        } catch (IllegalStateException e) {
            Logging.warning(e.getMessage());
            return null;
        }
    }

    @Override
    public Chest getOtherSide(Block chestBlock) {
        Chest otherSide = null;
        if (chestBlock.getRelative(1, 0, 0).getState() instanceof Chest) {
            otherSide = (Chest) chestBlock.getRelative(1, 0, 0).getState();
        } else if (chestBlock.getRelative(-1, 0, 0).getState() instanceof Chest) {
            otherSide = (Chest) chestBlock.getRelative(-1, 0, 0).getState();
        } else if (chestBlock.getRelative(0, 0, 1).getState() instanceof Chest) {
            otherSide = (Chest) chestBlock.getRelative(0, 0, 1).getState();
        } else if (chestBlock.getRelative(0, 0, -1).getState() instanceof Chest) {
            otherSide = (Chest) chestBlock.getRelative(0, 0, -1).getState();
        }
        return otherSide;
    }

    @Override
    public Block getTargetedInventoryHolder(Player player) throws IllegalStateException {
        return plugin.getTargetedInventoryHolder(player);
    }

    @Override
    public boolean pollingCheckIn(CRChest chest) {
        if (chest.get(CRChest.ACCEPT_POLL)) {
            if (pollingSet.add(chest)) {
                Logging.finer(chest.getLocation() + " added to polling");
            }
            return true;
        } else {
            if (pollingSet.remove(chest)) {
                Logging.finer(chest.getLocation() + " removed to polling");
            }
            return false;
        }
    }

    @Override
    public Set<CRChest> getChestsForPolling() {
        return pollingSet;
    }

    @Override
    public void pollChests() {
        Iterator<CRChest> it = pollingSet.iterator();
        while (it.hasNext()) {
            CRChest chest = it.next();
            Logging.finest("Polling chest " + chest.getLocation().toString());
            if (chest.getInventoryHolder() == null) {
                Logging.finest("Polled non-chest, removing from polling...");
                it.remove();
                continue;
            }
            if (chest.get(CRChest.ENABLED)) {
                chest.openInventory(null);
            }
        }
    }

    public int getNumberChestsPolled() {
        return pollingSet.size();
    }

    public int getNumberCachedChests() {
        return chestsMap.size();
    }

    @Override
    public int restockAllChests(World world, String name) {
        if (world == null) {
            plugin.getChestManager().cacheAllChests();
        } else {
            plugin.getChestManager().cacheChests(world.getName());
        }
        int count = 0;
        for (CRChest chest : chestsMap.values()) {
            if (world != null && !chest.getLocation().getWorldName().equals(world.getName())) {
                continue;
            }
            if (name != null && !chest.get(CRChest.NAME).equalsIgnoreCase(name)) {
                continue;
            }
            if (chest.isValid() && chest.get(CRChest.ENABLED)) {
                count++;
                chest.restockAllInventories();
            }
        }
        return count;
    }
}


This entry was posted in Life Musings, Photography, Tea, Teaware, White Tea and tagged Chinese white tea, White Point Reserve white tea.
Indeed a great weekend to sip and stare and get a little art in too.
Good white tea often amaze me- that pale brew can belie such a nuanced, full flavor.