text:
Sure Enough: Illegal Aliens Signing Up For Obamacare
Hate to say I Told You...
Posted by Zesko at 1:45 AM 1 comment:
Knowing what we know of Obama's "promises," here's a little something for illegal aliens to think about...
Posted by Zesko at 10:47 PM No comments:
HOO BOY... Portugal Drug Legalization Held Up as a Model for America?
2012 pro-decriminalization meme that is still circulating on Facebook.
To Which I Reply...
Socialist Portugal just opened all the doors and windows in 2001 and let the drugs flow and dealt with the addicts after the fact, using other people's money. Yep, that sounds fairly Socialist, alright. Not surprisingly, the Democrat Socialist Party was voted out of power in Portugal in 2011, ten years after legalizing all drugs. Yet, U.S. proponents of drug legalization still seize upon Portugal as a model for success.
To put this in perspective, the entire nation of Portugal has a population of only 10 million people. That's just slightly more than the population of New York City. Without fail, these "success stories" of legalized drugs and nationalized healthcare are always found in comparatively tiny countries that represent little more than classroom experiments.
Socialism can be made to work in the classroom; but it consistently FAILS when implemented in populations of hundreds of millions.
It would make more sense, to me, for the super-nations to secure their borders and try to keep illicit drugs (and Socialism) on the outside, rather than to permit the cancer to spread throughout the population, draining the economy, dividing society, and fracturing national will.
The citizens of the Russian Federation and the European Union can tell you all about depleted economies, divided societies and fractured national will; but, then again, the Russian Federation and the European Union are accustomed to a thousand years of decadence and oppression and brutality and submission.
The United States, however, is not a submissive country. Traditionally, the USA tends to fight back.
As one of the most militarily-imposing nations the world has ever seen, the United States has a history of approaching our various national challenges as "wars" — not just military operations, either, but social challenges, such as the "War on Cancer" and the "War on Obesity" and the "War on Poverty" and the "War on Terrorism" and the "War on Drugs," et cetera, ad infinitum.
I mean, it's not as if the United States ever actually pursued a real "War on Drugs" or a "War on Poverty" or any of those other "wars"... We did NOT pursue them, except to give the American people vigorous lip service. This is not unlike our repeated "Immigration Reform" initiatives that go thoroughly unenforced.
I contend that we have never tried to staunch the flow of drugs into this country in any manner that could be accurately described as a "war"... Rather, we pumped billions of dollars into the corrupt governments of Colombia and Mexico, presumably to prop-up their "wars" against drug cartels; however, the cartels OWN so much of the government in Latin America, I'm sure that most of our money went straight into the cartels themselves.
That's a leadership problem in the USA; that's the scheme of throwing money at a problem but never taking definitive ACTION. When such schemes fall flat on their faces, the U.S. government retreats to its ivory tower, offering only denial and obfuscation, and relying on the state-run press to divert the public's limited attention elsewhere.
Even when we hear about these bloody shootouts on the Mexican/U.S. border — precipitated by debacles such as "Operation Fast & Furious," through which the Department of Justice PROVIDED illegal weapons to drug traffickers in Mexico — our press somehow distorts the the story into a lament over the "proliferation of guns" in the USA.
Which is not what it's about. Not at all.
These shootouts with drug traffickers who are packing American-made weapons are a testament to our ineffectual and backwards border security policies.
For godsake, our U.S. federal government is trafficking weapons and money and drugs into and out of foreign nations under the pretense of "U.S. National Security"; that is more than mere lip service or a lie to the American people, it's TREASON, inasmuch as our government is instigating and participating in highly illegal activities that are killing American citizens.
For the billions of dollars that the USA has spent on the bogus "War on Drugs," we could've constructed a 1500-mile-long steel-and-concrete barrier 20 feet high along our entire southern border, manned with observers and the highest-tech surveillance equipment and weaponry available — thus stemming the flow of illegal aliens and drug traffickers and potential terrorist threats.
Instead, our federal government has actively financed and supplied and enabled all of these illegal activities and made the problems exponentially WORSE than they were. Now their "solution" is to grant amnesty and citizenship to tens of millions of illegal aliens (the very rumor of which has increased illegal immigration and border violence by 25% in the last 3 years), and then address border security after the fact.
Whereupon we're right back to "throwing open all the doors and windows," permitting a virtual invasion from Mexico, and passing the consequences on to the American taxpayer.
This sort of thinking — legalizing that which is illegal, opening the floodgates, and then sorting out the aftermath using other people's money — is entirely backwards and counter-productive. If we would only take decisive and timely and committed action from the beginning, instead of playing Socialist politics, we wouldn't HAVE most of the social and economic crises that we endure today in America.
Posted by Zesko at 1:30 AM No comments:
DISCIPLES OF SAGAN: Hyping Pop-Science to a Dumbed-Down Audience
PBS photo-retouch for the "Secret Lives of Scientists and Engineers" Website, replacing the
busts of American leaders with the grinning heads of left-leaning pop-science personalities.
Disciples of Carl Sagan, indeed.
It's important to note that the "disciples" cited in the above-linked blog are politically-motivated eco-alarmists...especially Michelle Thaller, Bill Nye and Neil Tyson. These latter-day spewers of scientific dogma have parroted their cherished Saganisms — vague cliches such as "all the grains of sand" and "primordial soup" and "nuclear winter" and "not a matter of IF but WHEN" — for decades, without even attempting to advance any fresh metaphor or rhetoric.
The real difference between these "disciples" and their departed guru is that Carl Sagan actually was brilliant and original and able to effectively communicate complex astrophysical concepts to the general public; and Sagan did so without supercilious editorialism.
This latest crop of Saganites, however, have significantly lowered the bar when it comes to science and education, siezing every opportunity to not only lecture their audience in kiddie-speak, but to impart their political sentiments above and beyond any actual scientific insights.
The "disciples" and their zealous followers will protest: "That's the whole point of lowering the bar — so more DUMMIES can understand our stagnant scientific theories. That's how modern education works!"
But, no, the point is that these "edutainment" personalities are not providing science educations so much as condescending political lectures. American education has been in a death spiral for more than 20 years thanks to lowered educational standards; and these pop-science personalities such as Thaller, Nye and Tyson aren't actually INSPIRING anyone, as did Carl Sagan.
Rather, and deplorably, these modern talking heads spend more time spreading FEAR of asteroid impacts and super volcanoes and tsunamis and gamma ray bursts and anthropogenic global warming THEORIES than they do teaching scientific method. Because, surely, if they were teaching REAL science, they would warn their audience of the perils of fear-mongering THEORY.
Uber Liberal Chris Matthews Admits that Democrats will LOSE THE SENATE in 2014...
FIGHT BACK CONNECTICUT Tees, Hoodies and Stickers! GET 'EM HERE!
It's not just a slogan — it's the historical legacy of Connecticut, where anti-gunnners are today crusading to CONFISCATE your firearms and throw you in prison for owning them.
Speak out against the unconstitutional hysteria in Connecticut with these premium FIGHT BACK CONNECTICUT Tees, Hoodies and Stickers (featuring the Second Amendment) in white print or black print on your choice of background color.
Sure Enough: Illegal Aliens Signing Up For Obamaca...
Knowing what we know of Obama's "promises," here's...
HOO BOY... Portugal Drug Legalization Held Up as a...
DISCIPLES OF SAGAN: Hyping Pop-Science to a Dumbed...
Uber Liberal Chris Matthews Admits that Democrats ...
FIGHT BACK CONNECTICUT Tees, Hoodies and Stickers!...


The first thing that comes to my mind when I think of New Year's Eve celebrations is sparkling wine. I just love Champagne and California sparkling. So that is why this week I visited J Vineyards & Winery. They have a variety of sparkling wines to fit the bill. Their bubbly ranges from the appetizers to the New Year's toast. And as always their Pinot Noirs are phenomenal!
The tasting room is open daily from 11am to 5pm and offers a variety of options to their visitors. For a nominal fee you can enjoy the food and wine pairing at the main bar, always fun and definitely worth it. Other options include tours, the Wine Club Room and the Bubble Room; reservations are required, but the attention to detail is exceptional.
The Bubble Room is a tasting salon with seating and table service. The selection changes regularly, one of the current offerings is the Indulgence Flight; pairing delicate caviars and exquisite sparkling.
If you are local to the Sonoma County area, the J Wine Club , is one that I highly recommend. When you join the wine club you have the option to request being a "Pick-Up Client". This means you won't automatically have your wine shipments sent to you; you will be notified that the wines are available and you are invited to a Pick-Up Party. I joined the wine club for the Pick-Up Parties alone. Good times. J Vineyards & Winery hosts the most fabulous events, offering an abundance of sparkling and current vintages with the chef's choice of perfectly paired nibbles. All of this set to the sound of local musicians.


We have had storm after storm after storm this week alone. And it's mid-late February and I think winter is just getting to everyone. But the magic of falling snow, and fresh snow, heavy on the branches still makes me gaze in wonder. I'll probably hate it by afternoon, but the early morning after a storm I do, truly, like snow.
This afternoon, though, it's very warm. For February anyway. So we went out and constructed the first 'Frosty' of the season. So far every storm that we've gone out and tried to make our Z a snowman, the snow has just been fluffy and no good for packing together and rolling around the yard. So we were excited. Little A, however, tolerates it. He doesn't really enjoy sitting in a snowbank, and the suit is kind of bulky so he can't move much. I did see him leaning over with his tongue out to lick the walkway. In the picture he is just babbling and babbling loudly at me. I wish I knew what he was saying! But soon enough we'll understand every word and we'll try to remember what it was like when he just babbled. I must remember to take a video of his talking.
And then we came inside, and there was cocoa made with steamed almond milk and homemade chocolate syrup. Okay, so truthfully, I kind of hate making Z cocoa. I always usually do, because, that's just what you're supposed to do when you come in from playing in the snow. But she doesn't really drink it. She plays with it. Then she leaves it mostly full on the table and it gets cold. So that's that.
In other news, I've been trying to muster up a blog post that's kind of a "part 2" to the post I wrote a couple weeks ago titled 'good mornings.' I have so many thoughts and maybe at some point I'll sort them out, but for now, I just can't come up with a post that makes sense. I understand it in my head, but on paper it's just confusing and disconnected thoughts. What I'm trying to get at on paper is that the way I like to start my mornings, isn't the only way to have a good morning. God has been working on my heart lately in the area of sleep issues and more importantly control over those sleep issues. Ever since I wrote that post, A has been up around 5:30 each day. Hilarious, right? I think I understand what God is saying to me, and I'm in the beginning stages of letting go. It feels good.


text:
Memo of Opposition – "Toll Payer Protection Act"
MEMO OF OPPOSITION
S3587-C (Comrie) /A3801-A (Abinanti)
The "toll payer protection act"
TITLE OF BILL
An act to amend the public authorities law, in relation to enacting the "toll payer protection act"; and providing for the repeal of certain provisions upon expiration thereof
SUMMARY OF PROVISIONS
Section 1 of the bill establishes the "toll payer protection act".
Section 2 designates section 2985 of public authorities law as title 11-A of article 9 of such law.
Section 3 amends public authorities law to add new sections that:
– Set parameters for cashless tolling programs, including requirements for toll liability notification, customer education, display of tolls on signage, debt collection procedures, reporting requirements, among others.
– Cap the penalty that may be assessed for non-payment of tolls at $5 after 30 days and the greater of $25 or double the unpaid toll after 60 days.
– Allow toll customers to contest tolls or any toll violations, among other provisions.
Section 4 requires the Triborough Bridge and Tunnel Authority to implement an amnesty program for any person who owes tolls, fees, fines, or penalties for a toll incurred at any cashless tolling facility operated by the authority for a period of at least five weeks for toll obligations incurred on or after November 1, 2016.
Section 5 states that the act shall take effect on the 120th day after the bill becomes law, and expire 5 years after the effective day.
STATEMENT OF OPPOSITION
Reinvent Albany urges Governor Hochul to veto S3587-C/A3801-A, which establishes the toll payer protection act. We oppose this legislation because it will constrain the ability of tolling authorities to collect tolls and penalties for nonpayment.
The bill requires that tolling authorities bill drivers within 30 days, and if the authority fails to do so, the driver is not liable for tolls. Some tolling authorities, however, take longer than 30 days to bill drivers. For instance, the Thruway Authority's own website states that it sends bills within 30-40 days.
More than 90 percent of MTA and Thruway Authority tolls are paid by EZ-Pass and have accounts that are automatically replenished by credit card. This bill appears to be an attempt to reduce the time it takes tolling authorities to bill by mail the roughly 10% of motorists on the state's "cashless tolling" systems that do not have EZ-Pass. However, tolling authorities know they make more money by billing quicker because of the time value of money, a rule of basic finance that says a dollar in hand is worth more than a dollar in the future. We believe this bill will deprive public transit, roads and bridges of tolls without providing a commensurate public benefit. Broadly, it is not clear to us why receiving a toll bill by mail in say 29 days instead of 39 days would be meaningful to many potential toll payers.
The bill would codify the current $5 late fee for nonpayments after 30 days and reduce the penalty for nonpayments after 60 days, which is currently $50. We strongly agree with the Citizens Budget Commission and veto memos for previous versions of this bill that lowering the late fee to such a nominal amount would impede a tolling authority's enforcement ability.
Section 4 of this bill, which creates an "amnesty program" for any driver who owes tolls, fees, fines, or penalties to the Triborough Bridge and Tunnel Authority, is particularly programmatic. In particular, there is no fiscal impact analysis accompanying this bill and thus no way to know what the fiscal impact would be to MTA Bridges and Tunnels. Further, granting amnesty for drivers who fail to pay their tolls would set a bad and unfair precedent; if drivers believe their liabilities may eventually be cleared, what's the point in paying a toll? Those who do not pay subway fares may be subject to $100 fines under the MTA Code of Conduct, with no amnesty program.
Toll revenues are a smart and effective way to fund and finance the highways, bridges, tunnels, and transit operations that are so important to our state's economy. For instance, MTA Bridges and Tunnels relies on strong toll receipts to support operations and the capital plan for bridges, tunnels, and transit. In 2023, it is projected that toll revenue will be a whopping 13% of the MTA's operating budget, or $2.4 billion dollars. For transit specifically, the bridges and tunnels operating surplus transfer is $1 billion.
Broadly, it is troubling that this bill does not include a fiscal impact statement that estimates reductions in tolls and penalty revenues. The MTA is facing a "fiscal cliff," with large projected deficits once federal COVID-19 emergency aid runs out, and there is no estimate showing how much worse the deficit would be if the Toll Payer Protection Act is signed into law. To pass a bill without knowing how much revenue would be lost at this crucial time is nonsensical. To sign it would be even worse.
We urge Governor Hochul to veto this bill.
« Subsidy Sheet: Replacing 421-a real estate tax abatements shaping up as biggest subsidy fight of 2023
Reinvent Albany Says Legislative Pay Raise Must Include Limit on Outside Income »

redpajama_set_name: RedPajamaCommonCrawl


Isobel Bennett provides Holly Wreaths and Noble Fir bases to commercial and private customers.
All our wreaths are hand made on Noble Fir bases for door or cemetary use.
Bases are available from mid November and plain and decorated wreaths from early December.
Holly wreaths should be kept cool and damp or they will quickly shrivel and discolour. A frequent light misting will help keep them looking fresh.
Prices for Noble Fir bases are from £5.50. Decorated wreaths are available from £12.50 to £20.00.
Collection or delivery locally or nationally (postage and packaging extra).
Wreaths have been used symbolically for centuries. The circle or ring shape is symbolic of eternity or eternal life. In Roman days people used decorative wreaths as a sign of victory. Nowadays a wreath is a traditional decoration on many front doors during the festive season.


text:
"""
Routes all the requests to the task manager.
"""

import traceback
import sys

from trove.common import cfg
from trove.common.manager import ManagerAPI
from trove.openstack.common import log as logging

CONF = cfg.CONF
LOG = logging.getLogger(__name__)

#todo(hub-cap): find a better way to deal w/ the fakes. Im sure we can
# use a fake impl to deal w/ this and switch it out in the configs.
# The ManagerAPI is only used here and should eventually be removed when
# we have a better way to handle fake casts (see rpc fake_impl)
class API(ManagerAPI):
    """API for interacting with the task manager."""

    def _transform_obj(self, obj_ref):
        # Turn the object into a dictionary and remove the mgr
        if "__dict__" in dir(obj_ref):
            obj_dict = obj_ref.__dict__
            # We assume manager contains a object due to the *clients
            if obj_dict.get('manager'):
                del obj_dict['manager']
            return obj_dict
        raise ValueError("Could not transform %s" % obj_ref)

    def _fake_cast(self, method_name, **kwargs):
        from trove.tests.fakes.common import get_event_spawer
        from trove.taskmanager.manager import Manager
        method = getattr(Manager(), method_name)

        def func():
            try:
                method(self.context, **kwargs)
            except Exception:
                LOG.exception("Error running async task")
                raise

        get_event_spawer()(0, func)

    def _get_routing_key(self):
        """Create the routing key for the taskmanager"""
        return CONF.taskmanager_queue

    def resize_volume(self, new_size, instance_id):
        LOG.debug("Making async call to resize volume for instance: %s"
                  % instance_id)
        self._cast("resize_volume", new_size=new_size, instance_id=instance_id)

    def resize_flavor(self, instance_id, old_flavor, new_flavor):
        LOG.debug("Making async call to resize flavor for instance: %s" %
                  instance_id)
        self._cast("resize_flavor", instance_id=instance_id,
                   old_flavor=self._transform_obj(old_flavor),
                   new_flavor=self._transform_obj(new_flavor))

    def reboot(self, instance_id):
        LOG.debug("Making async call to reboot instance: %s" % instance_id)
        self._cast("reboot", instance_id=instance_id)

    def restart(self, instance_id):
        LOG.debug("Making async call to restart instance: %s" % instance_id)
        self._cast("restart", instance_id=instance_id)

    def migrate(self, instance_id, host):
        LOG.debug("Making async call to migrate instance: %s" % instance_id)
        self._cast("migrate", instance_id=instance_id, host=host)

    def delete_instance(self, instance_id):
        LOG.debug("Making async call to delete instance: %s" % instance_id)
        self._cast("delete_instance", instance_id=instance_id)

    def create_backup(self, backup_id, instance_id):
        LOG.debug("Making async call to create a backup for instance: %s" %
                  instance_id)
        self._cast("create_backup",
                   backup_id=backup_id,
                   instance_id=instance_id)

    def delete_backup(self, backup_id):
        LOG.debug("Making async call to delete backup: %s" % backup_id)
        self._cast("delete_backup", backup_id=backup_id)

    def create_instance(self, instance_id, name, flavor,
                        image_id, databases, users, service_type,
                        volume_size, security_groups, backup_id=None,
                        availability_zone=None):
        LOG.debug("Making async call to create instance %s " % instance_id)
        self._cast("create_instance", instance_id=instance_id, name=name,
                   flavor=self._transform_obj(flavor), image_id=image_id,
                   databases=databases, users=users,
                   service_type=service_type, volume_size=volume_size,
                   security_groups=security_groups, backup_id=backup_id,
                   availability_zone=availability_zone)

redpajama_set_name: RedPajamaGithub


text:
Bubba Trammell: 2000 N.L. Champion Mets Utility Player (2000)
Thomas Bubba Trammell was born on November 6, 1971, in Knoxville, Tennessee. He was named after famed Tennessee football quarterback Bubba Wyche.
The young Bubba always wanted to be a baseball player. When he was 14 his father put a batting cage in the backyard & bought him an automatic ball feeder to pitch, as he would be in the cage eight hours a day & more.
The six foot three, right hand hitting outfielder attended the University of Tennessee. He was originally drafted by the Baltimore Orioles in 1992 but did not sign. He was then drafted by the Detroit Tigers in 1994 and did sign.
Trammell showed a lot of power in the minor leagues, hitting 27 HRs at AA Jacksonville in 1996 getting promoted to AAA Toledo where he hit six more HRs to end his year. The following year he hit 28 HRs with 75 RBIs including a big four HR game for the AAA Toledo Mud Hens.
MLB Debut: Trammell made his MLB debut with the Tigers, on the opening week of the 1997 season. He hit four HRs in the month of April & was hitting .238 in May when he was sent back to AAA returning as September call up.
That November he was drafted by the newly formed Tampa Bay Devil Rays in the 22nd round of the expansion draft. On March 31st, 1998, he made a pinch-hit appearance in the first game of Tampa's history, vs his old Tiger teammates.
By mid April he was batting just .176 & was sent back down to the minors. That season at AAA Durham he hit .290 with 16 HRs in 57 games, returning to the Rays that July. He hit 12 HRs with 35 RBIs & a .286 average in 59 games.
In 1999 he played in 82 games hitting a solid .290 with 14 HRs with 19 doubles & 39 RBIs.
At the 2000 trade deadline he was hitting .275 with 7 HRs (189 at bats) when Tampa sent him to the New York Mets. He came to New York along with relief Rick White in exchange for Jason Tyner and Paul Wilson.
Mets Career: Trammell made his Mets debut at Shea Stadium on July 30th, 2000, in a game against the Cincinnati Reds. He got the start in left field & hit a three run HR, in his first Mets at bat. This led to him becoming an immediate Shea Stadium favorite, as the fans cheered for a curtain call. More importantly it led to a 4-2 Mets win.
On August 20th, he came in as a pinch hitter in the top of the 6th inning, facing Darren Dreifort with the Mets trailing the Dodgers 5-4. Trammel delivered with his second Mets HR, tying the game. Lenny Harris followed with a back-to-back HR, leading New York to a 9-6 win.
On September 3rd, he hit a two-run shot off the Cards, Dave Veres in St. Louis, driving in all three Mets runs although they lost the game 4-3.
In 56 regular season at bats, in 36 games with the Mets he hit .232 with three HRs, two doubles and 13 RBIs posting a .345 on base %. Trammell played as a pinch hitter, and reserve outfielder one of Bobby Valentine's secret weapons off the bench, getting into his first post season.
2000 Post Season- NLCS: Trammell did not play in the NLDS win over the Giants.
In the NLCS against the St. Louis Cardinals he went 0-3 striking out twice in three pinch hit at bats. Although Trammel's time was very brief in New York, he must be remembered for having some big World Series hits in a Met uniform.
2000 World Series: In the World Series he saw action in four of the five Subway Series games.
In Game #1 Trammell came to bat as a pinch hitter in the 7th inning with the Mets down 2-0. He singled to left field off Andy Pettite scoring Benny Agbayani & Jay Payton with the tying runs. He was then left stranded on third base when Mike Piazza flew out to deep center, just missing a HR.
In Game #3 at Shea Stadium, he came to bat as a pinch hitter in the 8th inning after Benny Agbayani doubled to put the Mets ahead 3-2. Trammell hit a sac fly scoring Joe McEwing who had come in to pinch run for Agbayani. The RBI was an insurance run in the Mets 4-2 victory.
He would drive in three runs in just five at bats. He was tied for second with teammate Jay Payton (and two AL New York players) behind Mike Piazza with the most RBIs in the Series.
After the Pennant: That December the Mets traded Trammell to the San Diego Padres for pitcher Donnie Wall who would go 0-4 in New York. The trade was another bad move by GM Steve Phillips after the Mets pennant season.
In 2001 for San Diego, Trammell went on to hit 25 HRs with 20 doubles 92 RBIs & bat .261 as a full-time player. He was voted the "Favorite San Padre" Award as well. In 2002 he hit 17 HRs with 16 doubles while driving in 56 runs, in 133 games although his average fell to .243.
In March of 2003 he was traded to the AL New York team in exchange for Rondell White. Trammell played 22 games batting .279. He then suffered a meniscus injury.
Personal Issues & Dramas: Around that time, his mother & sister were both diagnosed with cancer. At around the same time, his great uncle & great grandfather were also hospitalized.
His marriage to his wife Melissa, with whom he has three children, also fell apart, as the two went through a messy divorce. She was living with a man she claimed was a platonic friend, Trammell confronted the man & threatened to kill him. She got custody of the kids & remarried.
Trammell soon began to suffer with a bout of depression that would end up help finishing off his playing career early. He also had
After ten brief games at AAA in 2004, he did not return to play again for three years. After recovering from his depression, he returned for one more season in the minor leagues in 2007 in the Orioles organization. He did not make it back onto the big leagues.
Career Stats: In his seven-year career, Trammell was a lifetime .261 hitter, with 469 hits 82 HRs, 96 doubles, 7 triples & 285 RBIs with a .339 on base % in 584 games.
Remembering Christine McVie (1943-2022)
George Foster: Early/Mid Eighties Mets Outfielder ...
Craig Swan: 1978 N.L. ERA Leader (1973-1984)
Wes Westrum: The Second Manager in Mets History (1...
Howard Johnson "Hojo": (Part 2- The Nineties & Bey...
Randy Tate: Mid Seventies Mets Pitcher (1975)
Howard Johnson "Hojo"- (Part One: The Eighties) Wo...
Josh Smoker: Former Mets Reliever (2016 - 2017)
"Super" Joe McEwing: 2000 NL Champion Mets Utility...
Mike Scioscia: Former Italian / American Player & ...
Ruben Tejada: Former Mets Short Stop Who Got the R...
Jeff Torborg: Former Mets Manager (1992-1993) / Wh...
Pedro Martinez: The Mets Years (2005-2008)
Al Leiter- The Mets Years / 2000 NL Champion (1998...
Gene Tenace: Former Italian / American Player & Th...
Yoenis Cespedes: 2015 NL Champion Mets All Star (2...
Eddie Yost "the Walking Man" & Long Time Mets Coac...
Jay Payton: 2000 N.L. Champion Mets Center Fielder...
Rich Chiles: Short Time 1973 N.L. Champion Mets Ou...
Former New York Giants Four Time Pennant Winning H...
Kevin McReynolds: 1988 N.L. Eastern Champion Mets ...
Two Time Eighties Mets Infielder: Bill Almon (1980...
Rich Folkers: Former Mets First Round Pick (1970)
Amed Rosario: Mets Short Stop (2017-2019)
Roy Campanella: Italian/African American Hall of F...
Late Seventies Mets Pitcher: Jackson Todd (1977)
Jay Hook: The Pitcher Who Won the First Game In Me...
Cal Koonce: 1969 World Champion Mets Pitcher (1967...
Remembering "The Midnight Massacre" - The Tom Seav...
Tom Seaver (Part Four): After The Pennant & The M...
Tom Seaver (Part Three): 1973 Cy Young Award & Met...
Tom Seaver: Hall of Famer (Part Two: The Early Sev...
Tom Seaver: Hall of Famer (Part One) the Sixties
Sid Fernandez "El Sid": 1986 World Champion Mets P...
Gus Bell: An Original 1962 Met (1962) & His Baseba...
Don Hahn: 1973 N.L. Champion Mets Centerfielder (1...
Animated Career of Former Met Who Once Ran Around ...
George Theodore: 1973 N.L. Champion Mets Folk Hero...
Bobby Pfeil: 1969 World Champion Mets Utility Play...
Jeurys Familia: 2015 NL Champion Mets Closer (2012...
Aaron Heilman: 2006 N.L. Eastern Champion Mets Rel...
Butch Huskey: Mid Nineties Mets Outfielder (1993-1...
Damion Easley: Late 2000's Mets Utility Player (20...
Patrick Mazeika: Former Mets Back Up Catcher & Bri...
Shawn Green: 2006 N.L. Eastern Champion Mets Outfi...
Mike Vail: 1970's Met Who Tied the Rookie Game Hi...
Ed Kranepool: Mets Team Hall of Famer- Part Two (T...
Ed Kranepool: New York Mets Team Hall of Famer (Pa...
Edgardo Alfonzo: 2000 NL Champion Mets Second Base...
Glendon Rusch: 2000 N.L. Champion Mets Pitcher (19...
Bubba Trammell: 2000 N.L. Champion Mets Utility Pl...
Jim Gosger: Former Member of Two Mets Pennant Team...
Early Eighties Mets Pitcher: Brent Gaff (1982-1984)
Jerry Grote: New York Mets Hall of Fame Catcher (P...
Bobby Hofman: Former New York Giants Player & Yogi...
Ryan Thompson: 1990's Mets Outfielder (1992-1995)
Armando Benitez: 2000 NL Champion Mets Closer (199...
Spider Jorgensen: Short Time 1951 N.L. Champion NY...
Dennis Cook: 2000 NL Champion Mets Reliever (1998-...
Joe Frazier: Mid Seventies Mets Manager (1976-1977)
Gene Clines: Mid Seventies Mets Outfielder (1975)


text:
URGENT Notice to Our Patients Regarding COVID-19. LEARN MORE.
Meet Your Providers
Meet Your Therapists
Hand & Wrist Injuries
Nerve Release
Physician Referral
Patients Reviews
Bone Fracture Risk Increased with Antidepressants
Wisconsin River Orthopaedics Blog Bone Fracture Risk Increased with Antidepressants
Did you know selective serotonin reuptake inhibitors (SSRI) antidepressants can increase the risk of bone fracture? Researchers from the Canadian Multicentre Osteoporosis Study (CaMos) Research Group suggested that the risk is particularly higher for people aged 50 and above who are taking this type of antidepressant.
For more than five years, researchers monitored over 5,000 adults over age 50. These individuals, having an average age of 65.1 and randomly selected, had suffered from bone breakages as a result of falling off a chair or bed or had experienced trauma incidents.
Looking into their questionnaires, the researchers discovered about 130 patients who were taking SSRI antidepressants on a day-to-day basis. The antidepressants commonly used included fluvoxamine, citalopram, fluoxetine, sertraline and paroxetine. After gathering all the data, the researchers found that the antidepressants increased the risk of bone fragility and fracture. In addition, doubling the dosage of the antidepressants resulted in an increase of bone fracture risk.
SSRI antidepressants help overcome symptoms of moderate to severe depression. While they are relatively safe, these medications may display certain side effects in some patients, but which are still considerably fewer compared to the other kinds of antidepressants. The common side effects include dizziness or nausea, insomnia, reduced sexual desire, diarrhea or vomiting, headache and changes in weight.
With this new study, the researchers cited that taking SSRI antidepressants may pose additional health consequences for patients over 50. When prescribing these medications, the study group suggested that doctors should account for the bone fragility and fracture risks for these patients.
How to Live With Gout
Do you suffer from chronic gout?
Tips to Alleviate Suffering Due to Rheumatoid Arthritis
Are you suffering from pain resulting from rheumatoid arthritis? Here are some easy ways to bring relief from your condition.
Picking the Right Shoes for Older People
When it comes to choosing shoes, the subject may be ordinary for many of us. But for older people, having the right pair can make a huge difference when it comes to avoiding falls and injuries.
Physical Activity Promotes Healing of Low Back Pain
Do you struggle with low back pain? Did you know there's a simple way to get rid of the discomfort and bring you back to living a pain-free life? Just be active; that will help your back heal.
Averting Joint Damage Due to Rheumatoid Arthritis
Do you suffer from joint stiffness or swelling on a daily basis? Then you face a higher risk of incurring damage to your joints.
Easy-on-the-Joints Exercises for Rheumatoid Arthritis Patients
Rheumatoid arthritis (RA) can be an immobilizing condition. You get stiff joints, achy muscles and you can't move.
Wisconsin River Orthopaedics , Wisconsin Rapids, WI
Address: 140 24th Street South, Wisconsin Rapids, WI 54494


[08:20] - Flight SAF0100 is ready to depart LGIR with a final destination of LICJ.
[10:34] - Landed at -108fpm. With 1552lbs of fuel onboard and a pitch angle of 1deg.
[10:38] - Arrived safely at LICJ. We hope you enjoyed your flight!


text:
Austin Front Runners donate to the Trail Foundation
December 17, 2015 Uncategorized.
Herron, left, says the Butler Trail around Lady Bird Lake, has transformed his life. Photo courtesy Dale Herron.
Dale Herron, left, and his partner Ted Yanecek, right, lead a campaign to donate to the Trail Foundation each year. Photo courtesy Dale Herron.
Dale Herron says running on the Butler Trail around Lady Bird Lake transformed his life, and three years ago he decided to do something to give back.
Herron and his partner Ted Yanecek, both members of the Front Runners, Austin's lesbian, gay, bisexual and transgender running group, challenged their running buddies to contribute to The Trail Foundation, either through a donation, purchasing or renewing a membership, or volunteering time. For every dollar other Front Runners gave, the couple would match it up to $1,500.
So far, that's meant a $6,000 infusion into the Trail Foundation, a non-profit organization that works to maintain and enhance the Butler Trail.
Herron, 52, says neither he nor Yanecek were runners when they were younger, but Herron saw the health issues his parents faced and decided to do something to avoid similar problems.
"I wanted to take care of myself," Herron says. "I started running in 1999 and ran my first marathon 22 months later."
Now he runs regularly on the Butler Trail with the Front Runners, many of whom use the crushed granite pathway as a training ground for 5K, 10K or long-distance races or triathlons. It's where they spend time with friends, share stories, welcome new club members and push their bodies.
Herron also serves as a board member for the Trail Foundation.
"(The trail) is tied into our hearts and minds, and it helps us achieve our health goals, our performance goals and stress reduction," he says. "It's changing our lives, and our ability to give back in this small but meaningful way is very powerful."
Want to donate too? Go here.
Paralyzed triathlete Laurie Allen heads to surgery, prepares for first Christmas since accident
Salado church plans 3 Kings race


Developing innovative materials is only the beginning for EUROFLEX. A further decisive step is creating the product in a quality that convinces the customer. All of our tubes, wires, sheets and components are manufactured with the highest precision and comply with the high standards prevailing in the field of medical technology. Securing maximum quality in this sense is, for us, a matter of course.
And this is a principle that we also base our service on. We are a competent partner for our customers and gladly help them with their requirements. Many of our further developments of the alloys, which we currently employ, originate from the dialog we maintain with our customers. This is because we are only satisfied once we have found the optimal solution for you.


Pharmax – Vitamin B12 CWS – Supports Overall Health, Red Blood Cell Formation, and Metabolism* – 0.5 fl oz (15 ml) – Exellent quality and price. When you need one of these you hardly can do without.
What is the Pharmax – Vitamin B12 CWS – Supports Overall Health, Red Blood Cell Formation, and Metabolism* – 0.5 fl oz (15 ml) good for?
Vitamin B12 from hydroxocobalamin. Maintains overall good health. Supports healthy red blood cell formation. Supports normal carbohydrate, fat, and protein metabolism. Ideal for vegans. Vitamin B12 CWS contains 50 mcg of B12 per dose. Vitamin B12 is a vitamin that helps to maintain overall health, supports normal red blood cell formation, and promotes normal macronutrient metabolism…. You want to know more about this product?
I have found most affordable price of Pharmax – Vitamin B12 CWS – Supports Overall Health, Red Blood Cell Formation, and Metabolism* – 0.5 fl oz (15 ml) from Amazon store. It offers fast and free shipping. Best b12 vitamins for sale will be limited stock of certain product and discount only for limited time, so do order now to get the best deals. Before you buy, check to see if a product is available online at store, read and compare experiences customers have had with b12 vitamins below.
All the latest best b12 vitamins reviews consumer reports are written by real customers on websites. You should read more consumer reviews and answered questions about Pharmax – Vitamin B12 CWS – Supports Overall Health, Red Blood Cell Formation, and Metabolism* – 0.5 fl oz (15 ml) below.


text:
Angelo Aloysius Adkins
February 21, 1964 - March 17, 2020
Angelo Aloysius Adkins was born on February 21, 1964 in Tacoma, Washington. He was the Middle of five children born to Inez and the late Albert Adkins Jr. Angelo was educated in the Public Schools of Perth Amboy, New Jersey. At the age of thirteen he honed his dance skills and found his love of dance and performing arts at Miss Ruth's School of Dance in Fords, New Jersey. Angelo brought his talent to Perth Amboy High School where he was a standout performer in several plays. During the summers he also performed in Plays- in- the Park at Roosevelt Park in Edison, New Jersey. Angelo later earned a B.A. in dance from Point Park College, in Pittsburg, PA in 1985. His career in dance and performing arts took off as a principal dancer in the Calypso Carnival Show in St. Thomas, U.S. Virgin Islands. Over a span of 40 years, Angelo performed in many dinner theater and off Broadway plays such as Take 4 Revue, My One and Only, Fiorello, Struttin', Honey in Rock and others. He toured with the European Touring Co. performing in productions of West Side Story and Hair. In addition to theater, Angelo also landed several commercial roles with Island Finance, Coors Light and Hoover Vacuum Companies. Angelo embarked on a new phase in his career when he produced, directed and acted in the musical production of Soul Time which was performed at The Perth Amboy Community Theater in 2015. Aside from performing in the United States and Abroad, Angelo was a dance instructor teaching tap and jazz at Miss Ruth's School of Dance and City Dance Academy. He was also a substitute teacher with Perth Amboy Public Schools, member and Treasurer for the NAACP (Perth Amboy Chapter) and a member of the Actors' Equity Association. Outside of entertaining, Angelo truly enjoyed laughing and spending time with his mother, siblings, family members and close friends. He loved dancing at family cookouts and birthday parties. When he wasn't dancing or singing Angelo enjoyed watching classic and western movies. He especially loved listening to his albums on his record player. Angelo was a lifelong member of the historic Second Baptist Church in Perth Amboy, where he was baptized in the early 80's. He was a member of the youth choir, a Sunday School teacher and Assistant pianist during his teenage years. Angelo was preceded in death by: His father Albert Adkins; He leaves to cherish in many fond memories to: His mother Inez Adkins of Perth Amboy, New Jersey; Four siblings Adrian Adkins (Reca) of Boston MA, Adolphus Adkins of Perth Amboy, New Jersey, Anita (close friend Jim) of Mount Pocono PA, Alex (Kisha) Adkins of Piscataway, New Jersey. His niece & nephews Janelle Quarles, Shivhon Adkins, Janine Quarles, Brandon Payne, Andre Adkins, Aturo Adkins, Alex Jr. Adkins, Josh Adkins, Shamiah Johnson, David Johnson and a host of cousins, neighbors and friends. In Lieu of flowers, please make donations in honor of Angelo Adkins to The Lighthouse Home: Light House Home Inc. P. O. Box 636 Taarboro Rocky Mt., North Carolina 27886 https://thelighthousehome.com/about/donate
Angelo Aloysius Adkins was born on February 21, 1964 in Tacoma, Washington. He was the Middle of five children born to Inez and the late Albert Adkins Jr. Angelo was educated in the Public Schools of Perth Amboy, New Jersey. At the age of... View Obituary & Service Information
The family of Angelo Aloysius Adkins created this Life Tributes page to make it easy to share your memories.
Angelo Aloysius Adkins was born on February 21, 1964 in Tacoma,...
Send flowers to the Adkins family.


Landlord Insurance - Keene, NH | Kapiloff Insurance Agency, Inc.
Get the right coverage to protect your rental properties. Serving Keene and all of New Hampshire.
To find out more about this product and other products and services, contact Kapiloff Insurance Agency, Inc. today.


text:
Q: what is the difference between ( )=>React.FC and ( )=>JSX.Element In React, it seems that I can declare a functional component or just a function returns a JSX element.
What confusing me is I don't know the key difference between these two approaches.
Is there anything only one approach can do while another can not?
import React from "react";

type ItemProps = {
    id: number
    name: string
}

const Item: React.FC<ItemProps> = ({ id, name }) =>
    (

            my id is {id}
            my name is {name}

    )

const item = ({ id, name }: ItemProps) =>
    (

            my id is {id}
            my name is {name}

    )

export const Container = () =>
    (

            {item({ id: 1, name: "item-1" })}
            <Item id={1} name={"item-1"} />

    )

A: React.FC offers Type checking support
You can also write components with React.FunctionComponent (or the shorthand React.FC - they are the same):
const App: React.FunctionComponent<{ message: string }> = ({ message }) => (

{message}

);

Some differences from the "normal function" version:

*

*React.FunctionComponent is explicit about the return type, while the
normal function version is implicit (or else needs additional
annotation).

*It provides typechecking and autocomplete for static properties like
displayName, propTypes, and defaultProps.

*

*Note that there are some known issues using defaultProps with
React.FunctionComponent. See this issue for details. We maintain a
separate defaultProps section you can also look up.

*It provides an implicit definition of children

Checkout docs for more information
https://github.com/typescript-cheatsheets/react/blob/main/README.md#section-2-getting-started

A: In React, the return of a function is JSX.Element. Even the return of the declaration in React.FC must be JSX.Element
If you have implicit return:
const Component: React.FC = () => {}

If you have explicit return
const Component = (): JSX.Element => {}

A: Summarising the differences:
React.FC:

*

*has an implicit children prop, which means even if your component does not allow children, typescript would not complain if you are using React.FC and the parent passes a children. This does not impact anything at the runtime, but it is better to be more explicit about the children prop. This might be going away in the next version of React.FC, even now you can use React.VFC

*does not work well with defaultProps

*does not allow generics

*can't be used to annotate a function declaration, only function expressions

*makes "component as a namespace" pattern difficult to type

JSX.element + props interface

*

*does not have an implicit children prop, so you need to declare it explicitly, which is good, and some people prefer implicit return type anyway. This does not have default support for other/static properties like propTypes, displayName etc, so they would need to be added explicitly if required.

*does not care about default props, this is just regular function typing for arguments and return types

*can be used with generics

*can be used to annotate a function declaration as well as expressions

Resources

*

*https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/function_components/

*https://fettblog.eu/typescript-react-why-i-dont-use-react-fc/

*https://github.com/facebook/create-react-app/pull/8177

A: difference between these two approaches are documented here.

provides type checking and auto complete,

redpajama_set_name: RedPajamaStackExchange


text:
Nathan M Rose | Feb 19, 2019
This rendition of Robin Hood is a great modernization of a tale that has lasted for centuries. Whether or not this version appeals to you will be based on a lot of geographical and age factors, but it definitely is a worthy retelling of the tale. | Full Review...
Judith Raymer | Feb 18, 2019
A Star Is Born has already received innumerable honors, awards, and nominations. Hurry to own your own personal copy so that you can say you owned it before the sweep of Oscar wins! | Full Review...
Can You Ever Forgive Me?
Allison Hazlett-Rose | Feb 18, 2019
Can You Ever Forgive Me? is a pleasure to watch even as you witness Israel's world crumbling around her. Some of McCarthy's finest work to date. | Full Review...
The Sisters Brothers
Audiard did a great job putting together a terrific cast that plays out the drama on screen beautifully. | Full Review...
Isn't It Romantic does offer a terrific message about loving oneself before anyone or anything else and finding one's self-worth and Wilson delivers it in the nicest possible way. | Full Review...
Freddie Mercury was a brilliant musician who left an everlasting mark on the world. Bohemian Rhapsody offers a small insight into Freddie's world and that of the band Queen. | Full Review...
While The Front Runner is a commentary on how this incident changed journalism forever, it is also a story with which many of us are already familiar. | Full Review...
Nobody's Fool
Maureen Buccellato | Feb 11, 2019
Nobody's Fool provides a fun two hours, and watching Tiffany Haddish act on screen is always a huge treat. | Full Review...
Allison Skornick-Rose | Feb 11, 2019
Rosa Salazar is more than believable as the innocent, wide-eyed (literally and figuratively) cyborg who eventually discovers she is a fierce warrior. | Full Review...
Davis is masterful as the strong leader of this resilient group of women and Rodriguez and Debicki match her in every scene. | Full Review...


text:
Things to Do in Mentor, Ohio
Dan Ketchum, Leaf Group
Mentor is just four miles from Lake Erie. (Photo: Hemera Technologies/Photos.com/Getty Images )
Things to Do Around Ortonville, Michigan
Restaurants in Pennsville, New Jersey
Discount New Orleans Hotels
Things to Do in Rockville Centre, New York
The mid-sized town of Mentor in northeastern Ohio rests on the shores of Lake Erie, offering plenty of boating, fishing and water sports attractions. Named one of the "100 Best Places to Live" by CNN Money in 2010, Mentor has no shortage of things to do: beautiful landscapes provide hiking and outdoor activities and the town -- nicknamed the "City of Choice" -- offers a surprising number of dining options and cultural attractions.
According to the town's official website, Mentor hosts more than 1,200 acres of green land, including a whopping 34 parks and public facilities such as the Eleanor B. Garfield Park and the Civic Center Park. Wildlife enthusiasts enjoy the 691-acre Mentor Marsh State Nature Preserve, and beach bums tan and swim at the Headlands Beach State Park. In the satellite town of Mentor-on-the-Lake, visitors enjoy all that Lake Erie offers, including boating, fishing, water sports and birdwatching.
The James A. Garfield National Historic Site (nps.gov/jaga) in Mentor showcases the 1880 restored home of America's 20th president. Gallery One (galleryone.com) on Center Street exhibits paintings, sculptures, crafts and wearable art from local artists, and regularly hosts art auctions. The Mentor Fire Museum (mentorsafetyvillage.com) helps educate youth on fire safety and the history of the fire department, while the Western Reserve Model Railroad Museum (wrmrr.org) showcases a model railroad with over 130 cars.
Entertainment and Events
During the summer season, the Old Village Market at the James A. Garfield National Historic Site offers a festive atmosphere with fresh local produce, artisan crafts, live music, games and entertainment. The Wildwood Cultural Center hosts events throughout the year, including Garden Club plant sales, the Wildwood Fine Arts Festival and a Mother's Day Breakfast. Atlas Cinemas on Mentor Avenue (atlascinemas.net) shows current movies on two screens, while the amphitheater at the Civic Center Park features live musical events.
Typical Weather
Mentor, Ohio in JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember
--°F High
--°F Low
The temperature in Mentor, Ohio in July tends to be very predictable, so you can generally count on the forecast and travel light.
The temperature in Mentor, Ohio in July is somewhat unpredictable, so be on the safe side and prepare for a variety of conditions.
The temperature in Mentor, Ohio in July is highly unpredictable, so use the forecast as a guide, but be ready for anything!
Mentor offers a selection of 150 diverse restaurants, ranging from Italian-style fine dining at Molinari's Food and Wine and the Noosa Bistro to casual American-style dining at local establishments such as Aladdin's Eatery, Deeker's Side Tracks and Center Street Pizza. Bumper's Beach Club, Cleat's Sports Bar and Tot's Place serve pub food such as wings and sandwiches along with bar drinks. Local cafes, such as the Bear Creek Coffee House, specialize in small-batch microbrews, and Spudnut Donuts offers a quick cup of joe.
City of Mentor: Eleanor B. Garfield Park
City of Mentor: Civic Center Park
Cleveland Museum of Natural History: Mentor Marsh
ODNR: Headlands Beach State Park
City of Mentor: Wildwood Cultural Center
CNN Money: Best Places to Live 2010: 37. Mentor, Ohio
City of Mentor: Attractions
City of Mentor: Cultural Arts
City of Mentor: Mentor's Dining and Shopping Guide
City of Mentor: 2011 Parks and Recreation Guide
Dan Ketchum has been a professional writer since 2003, with work appearing online and offline in Word Riot, Bazooka Magazine, Anemone Sidecar, Trails and more. Dan's diverse professional background spans from costume design and screenwriting to mixology, manual labor and video game industry publicity.
Attribution: Ruhrfisch, Nyttend, Dbenbenn, and Yassie; License: Creative Commons Attribution-Share Alike 3.0 Unported license
Ketchum, Dan. "Things to Do in Mentor, Ohio." Travel Tips - USA Today, https://traveltips.usatoday.com/things-mentor-ohio-54943.html. Accessed 16 July 2019.
Ketchum, Dan. (n.d.). Things to Do in Mentor, Ohio. Travel Tips - USA Today. Retrieved from https://traveltips.usatoday.com/things-mentor-ohio-54943.html
Ketchum, Dan. "Things to Do in Mentor, Ohio" accessed July 16, 2019. https://traveltips.usatoday.com/things-mentor-ohio-54943.html
Hotels Near Manalapan, New Jersey
Appleumpkin Festival in Tecumseh, Michigan
Pet Friendly Hotels in Princeton, New Jersey
Things to Do in Elmira, New York
Entertainment in Ogunquit, Maine
Tupelo, Mississippi Hotels
Chinese Restaurants in Aberdeen, Washington
Places to Swim Near Sharon, Pennsylvania
Things to Do With Kids in Eatontown, NJ
Things to Do Near Ashland, Ohio
Breakfast Restaurants Near University Village in Seattle
Hotels on Redbank Road, Cincinnati, Ohio
Places of Interest near Lumberton, NC
Motels Near Cabot, Vermont
Images related to Mentor, Ohio
Map highlighting City of Mentor, Lake County, Ohio, United States.
Things to Do in Detroit in December
Hotels Near Matawan, New Jersey
Midwest US Travel»
Ohio Travel»
Fun Things to Do in Ohio»


text:
Global Issuing & Acquiring Processor Digital Cash Processing Names Ram Chary CEO and Chairman of the Board
PRIOR LAKE, Minn. - WisconsinEagle -- Digital Cash Processing (DCP), a fintech corporation and international issuing and acquiring processor, announced today that Ram Chary has been retained as Chief Executive Officer and will serve as Chairman of the Board.
"I am pleased that Ram will lead us in our next phase of growth," said Craig Potts, owner and chairman of Digital Cash Processing's predecessor Innovative Computer Professionals. "He brings deep experience in the payments and technology space along with extensive business development expertise that will accelerate DCP's growth."
Earlier this month the company announced their certification and the official launch of their robust transaction processing platform in the United States. A registered MasterCard Issuer Processor, Digital Cash Processing operates in several countries, works with some of the largest financial institutions in Latin America and the Caribbean, and has interfaces into several core banking software systems including Jack Henry.
Chary most recently served as Executive Chairman of CloudStreet Gaming, a software platform development company.
During his tenure as CEO of Everi, Chary identified and led the $1.2 billion acquisition of Multimedia Games, which transformed the company from a payments-only provider to a full solution supplier to the gaming industry.
Prior to joining Everi he led the global commercial services segment at FIS, the largest FinTech provider in the world. Chary was responsible for technology, global supply chain management, global contact center operations, offshore development and technology resources. In addition, he was in charge of FIS' retail payment solutions.
Earlier in his career, Ram spent 13 years at IBM Global Services leading large scale infrastructure outsourcing and consulting for financial institutions, as well as holding several leadership roles in operations and global finance.
Chary holds a BA in economics from the University of Colorado and a MS in finance and operations management from the Purdue University.
The Digital Cash Processing product suite includes the OmniCommerce issuer/acquirer switch, OmniServices API, OmniPortal Admin, customer service, Cardholder and InfoServer portals, notification and IVR services, OmniWallet mobile applications, and OmniRecon back office settlement reporting and reconciliation system. Moreover, for financial institutions or ATM deployers that want to own and operate their own switch, DCP's OmniCommerce suite of services can be licensed to run in-house or in the cloud ‒ in multiple languages and a variety of currencies.
About Digital Cash Processing — With offices in Minnesota, Arizona and Nevada, Digital Cash Processing is a single source solution for global issuing and acquiring including ATM, POS and e-commerce processing. Founded in 1996 as Innovative Computer Professionals, DCP is a MasterCard Issuer Processor that offers a multitude of solutions including custom ATM application development, casino financial services applications, and dynamic currency conversion with granted patents related to cash advance automation and settlement, cashless slot ticket redemption, integrated player tracking cash access and more.
Alicia Blanda
Blanda Marketing & Public Relations
***@blandamarketing.com
Source: Digital Cash Processing
e-ImageData Receives Platinum in 2021 Modern Library Awards for the fourth consecutive year
Overstock Promo: Thermal Transfer Labels On Sale Now


Lucy Railton (UK) is a cellist and curator, and has been making sonic work since 2009. She was trained at the New England Conservatory in Boston, and the Royal Academy of Music in London, graduating in 2008. She has since been a leading figure in the performance and development of contemporary music in the UK, performing with prominent UK soloists and groups, such as Ensemble Plus Minus and the London Sinfonietta. She founded the new music series Kammer Klang in 2008 and is co-director and founder of the London Contemporary Music Festival.


text:
//-----------------------------------------------------------------------
// <copyright file="ShardCoordinator.cs" company="Akka.NET Project">
//     Copyright (C) 2009-2020 Lightbend Inc. <http://www.lightbend.com>
//     Copyright (C) 2013-2020 .NET Foundation <https://github.com/akkadotnet/akka.net>
// </copyright>
//-----------------------------------------------------------------------

using System;
using Akka.Actor;
using Akka.Event;
using System.Collections.Immutable;
using System.Linq;
using System.Threading.Tasks;

namespace Akka.Cluster.Sharding
{
    using ShardId = String;

    internal interface IShardCoordinator
    {
        PersistentShardCoordinator.State CurrentState { get; set; }
        ClusterShardingSettings Settings { get; }
        IShardAllocationStrategy AllocationStrategy { get; }
        IActorContext Context { get; }
        ICancelable RebalanceTask { get; }
        Cluster Cluster { get; }
        IActorRef Self { get; }
        IActorRef Sender { get; }
        ILoggingAdapter Log { get; }
        ImmutableDictionary<string, ICancelable> UnAckedHostShards { get; set; }
        ImmutableDictionary<string, ImmutableHashSet<IActorRef>> RebalanceInProgress { get; set; }
        ImmutableHashSet<IActorRef> RebalanceWorkers { get; set; }

        // regions that have requested handoff, for graceful shutdown
        ImmutableHashSet<IActorRef> GracefullShutdownInProgress { get; set; }
        ImmutableHashSet<IActorRef> AliveRegions { get; set; }
        ImmutableHashSet<IActorRef> RegionTerminationInProgress { get; set; }
        TimeSpan RemovalMargin { get; }
        IActorRef IgnoreRef { get; }
        void Update<TEvent>(TEvent e, Action<TEvent> handler) where TEvent : PersistentShardCoordinator.IDomainEvent;
        bool HasAllRegionsRegistered();
    }

    internal static class ShardCoordinator
    {
        #region shared part

        internal static void Cancel<TCoordinator>(this TCoordinator coordinator) where TCoordinator : IShardCoordinator
        {
            coordinator.RebalanceTask.Cancel();
            coordinator.Cluster.Unsubscribe(coordinator.Self);
        }

        static bool IsMember<TCoordinator>(this TCoordinator coordinator, IActorRef region) where TCoordinator : IShardCoordinator
        {
            var addr = region.Path.Address;
            return addr == coordinator.Self.Path.Address || coordinator.Cluster.ReadView.Members.Any(m => m.Address == addr && m.Status == MemberStatus.Up);
        }

        internal static bool Active<TCoordinator>(this TCoordinator coordinator, object message) where TCoordinator : IShardCoordinator
        {
            switch (message)
            {
                case PersistentShardCoordinator.Register msg: HandleRegister(coordinator, msg); return true;
                case PersistentShardCoordinator.RegisterProxy msg: HandleRegisterProxy(coordinator, msg); return true;
                case PersistentShardCoordinator.GetShardHome msg:
                    {
                        if (!HandleGetShardHome(coordinator, msg))
                        {
                            var shard = msg.Shard;
                            // location not known, yet
                            var activeRegions = coordinator.CurrentState.Regions.RemoveRange(coordinator.GracefullShutdownInProgress);
                            if (activeRegions.Count != 0)
                            {
                                var getShardHomeSender = coordinator.Sender;
                                var regionTask = coordinator.AllocationStrategy.AllocateShard(getShardHomeSender, shard, activeRegions);

                                // if task completed immediately, just continue
                                if (regionTask.IsCompleted && !regionTask.IsFaulted)
                                    ContinueGetShardHome(coordinator, shard, regionTask.Result, getShardHomeSender);
                                else
                                    regionTask.PipeTo(coordinator.Self,
                                        success: region => new PersistentShardCoordinator.AllocateShardResult(shard, region, getShardHomeSender),
                                        failure: _ => new PersistentShardCoordinator.AllocateShardResult(shard, null, getShardHomeSender));
                            }
                        }
                        return true;
                    }
                case PersistentShardCoordinator.AllocateShardResult msg: HandleAllocateShardResult(coordinator, msg); return true;
                case PersistentShardCoordinator.ShardStarted msg: HandleShardStated(coordinator, msg); return true;
                case ResendShardHost msg: HandleResendShardHost(coordinator, msg); return true;
                case RebalanceTick _: HandleRebalanceTick(coordinator); return true;
                case PersistentShardCoordinator.RebalanceResult msg: ContinueRebalance(coordinator, msg.Shards); return true;
                case RebalanceDone msg: HandleRebalanceDone(coordinator, msg.Shard, msg.Ok); return true;
                case PersistentShardCoordinator.GracefulShutdownRequest msg: HandleGracefulShutdownRequest(coordinator, msg); return true;
                case GetClusterShardingStats msg: HandleGetClusterShardingStats(coordinator, msg); return true;
                case ClusterEvent.ClusterShuttingDown msg:
                    coordinator.Log.Debug("Shutting down shard coordinator");
                    // can't stop because supervisor will start it again,
                    // it will soon be stopped when singleton is stopped
                    coordinator.Context.Become(ShuttingDown);
                    return true;
                case GetCurrentRegions _:
                    var regions = coordinator.CurrentState.Regions.Keys
                        .Select(region => string.IsNullOrEmpty(region.Path.Address.Host) ? coordinator.Cluster.SelfAddress : region.Path.Address)
                        .ToImmutableHashSet();
                    coordinator.Sender.Tell(new CurrentRegions(regions));
                    return true;
                case ClusterEvent.CurrentClusterState _:
                    /* ignore */
                    return true;

                case Terminate _:
                    coordinator.Log.Debug("Received termination message");
                    coordinator.Context.Stop(coordinator.Self);
                    return true;
                default: return ReceiveTerminated(coordinator, message);
            }
        }

        private static void AllocateShardHomesForRememberEntities<TCoordinator>(this TCoordinator coordinator) where TCoordinator : IShardCoordinator
        {
            if (coordinator.Settings.RememberEntities && coordinator.CurrentState.UnallocatedShards.Count > 0)
            {
                foreach (var unallocatedShard in coordinator.CurrentState.UnallocatedShards)
                {
                    coordinator.Self.Tell(new PersistentShardCoordinator.GetShardHome(unallocatedShard), coordinator.IgnoreRef);
                }
            }
        }

        private static void SendHostShardMessage<TCoordinator>(this TCoordinator coordinator, String shard, IActorRef region) where TCoordinator : IShardCoordinator
        {
            region.Tell(new PersistentShardCoordinator.HostShard(shard));
            var cancel = coordinator.Context.System.Scheduler.ScheduleTellOnceCancelable(
                coordinator.Settings.TuningParameters.ShardStartTimeout,
                coordinator.Self,
                new ResendShardHost(shard, region),
                coordinator.Self);
            coordinator.UnAckedHostShards = coordinator.UnAckedHostShards.SetItem(shard, cancel);
        }

        /// <summary>
        /// TBD
        /// </summary>
        public static void StateInitialized<TCoordinator>(this TCoordinator coordinator) where TCoordinator : IShardCoordinator
        {
            foreach (var entry in coordinator.CurrentState.Shards)
                SendHostShardMessage(coordinator, entry.Key, entry.Value);

            AllocateShardHomesForRememberEntities(coordinator);
        }

        internal static void WatchStateActors<TCoordinator>(this TCoordinator coordinator) where TCoordinator : IShardCoordinator
        {
            // Optimization:
            // Consider regions that don't belong to the current cluster to be terminated.
            // This is an optimization that makes it operational faster and reduces the
            // amount of lost messages during startup.
            var nodes = coordinator.Cluster.ReadView.Members.Select(x => x.Address).ToImmutableHashSet();

            foreach (var entry in coordinator.CurrentState.Regions)
            {
                var a = entry.Key.Path.Address;
                if (a.HasLocalScope || nodes.Contains(a))
                    coordinator.Context.Watch(entry.Key);
                else
                    RegionTerminated(coordinator, entry.Key);    // not part of the cluster
            }

            foreach (var proxy in coordinator.CurrentState.RegionProxies)
            {
                var a = proxy.Path.Address;
                if (a.HasLocalScope || nodes.Contains(a))
                    coordinator.Context.Watch(proxy);
                else
                    RegionProxyTerminated(coordinator, proxy);        // not part of the cluster
            }

            // Let the quick (those not involving failure detection) Terminated messages
            // be processed before starting to reply to GetShardHome.
            // This is an optimization that makes it operational faster and reduces the
            // amount of lost messages during startup.
            coordinator.Context.System.Scheduler.ScheduleTellOnce(TimeSpan.FromMilliseconds(500), coordinator.Self, PersistentShardCoordinator.StateInitialized.Instance, ActorRefs.NoSender);
        }

        internal static bool ReceiveTerminated<TCoordinator>(this TCoordinator coordinator, object message) where TCoordinator : IShardCoordinator
        {
            switch (message)
            {
                case Terminated terminated:
                    var terminatedRef = terminated.ActorRef;
                    if (coordinator.CurrentState.Regions.ContainsKey(terminatedRef))
                    {
                        if (coordinator.RemovalMargin != TimeSpan.Zero && terminated.AddressTerminated &&
                            coordinator.AliveRegions.Contains(terminatedRef))
                        {
                            coordinator.Context.System.Scheduler.ScheduleTellOnce(coordinator.RemovalMargin, coordinator.Self,
                                new DelayedShardRegionTerminated(terminatedRef), coordinator.Self);
                            coordinator.RegionTerminationInProgress = coordinator.RegionTerminationInProgress.Add(terminatedRef);
                        }
                        else
                            RegionTerminated(coordinator, terminatedRef);
                    }
                    else if (coordinator.CurrentState.RegionProxies.Contains(terminatedRef))
                        RegionProxyTerminated(coordinator, terminatedRef);
                    return true;
                case DelayedShardRegionTerminated msg:
                    RegionTerminated(coordinator, msg.Region);
                    return true;
            }
            return false;
        }

        private static void HandleGracefulShutdownRequest<TCoordinator>(this TCoordinator coordinator, PersistentShardCoordinator.GracefulShutdownRequest request) where TCoordinator : IShardCoordinator
        {
            if (!coordinator.GracefullShutdownInProgress.Contains(request.ShardRegion))
            {
                if (coordinator.CurrentState.Regions.TryGetValue(request.ShardRegion, out var shards))
                {
                    coordinator.Log.Debug("Graceful shutdown of region [{0}] with shards [{1}]", request.ShardRegion, string.Join(", ", shards));
                    coordinator.GracefullShutdownInProgress = coordinator.GracefullShutdownInProgress.Add(request.ShardRegion);
                    coordinator.ShutdownShards(request.ShardRegion, shards.ToImmutableHashSet());
                }
                else
                {
                    coordinator.Log.Debug("Unknown region requested graceful shutdown [{0}]", request.ShardRegion);
                }
            }
        }

        private static void HandleRebalanceDone<TCoordinator>(this TCoordinator coordinator, string shard, bool ok) where TCoordinator : IShardCoordinator
        {
            coordinator.RebalanceWorkers = coordinator.RebalanceWorkers.Remove(coordinator.Sender);

            if (ok)
            {
                coordinator.Log.Debug("Shard [{0}] deallocation completed successfully.", shard);

                // The shard could have been removed by ShardRegionTerminated
                if (coordinator.CurrentState.Shards.TryGetValue(shard, out var region))
                {
                    coordinator.Update(new PersistentShardCoordinator.ShardHomeDeallocated(shard), e =>
                    {
                        coordinator.Log.Debug("Shard [{0}] deallocated after", shard);

                        coordinator.CurrentState = coordinator.CurrentState.Updated(e);
                        coordinator.ClearRebalanceInProgress(shard);
                        AllocateShardHomesForRememberEntities(coordinator);
                        coordinator.Self.Tell(new PersistentShardCoordinator.GetShardHome(shard), coordinator.IgnoreRef);
                    });
                }
                else
                {
                    coordinator.ClearRebalanceInProgress(shard);
                }
            }
            else
            {
                coordinator.Log.Warning("Shard [{0}] deallocation didn't complete within [{1}].", shard, coordinator.Settings.TuningParameters.HandOffTimeout);

                // was that due to a graceful region shutdown?
                // if so, consider the region as still alive and let it retry to gracefully shutdown later
                foreach (var region in coordinator.CurrentState.Shards.Values)
                    coordinator.GracefullShutdownInProgress = coordinator.GracefullShutdownInProgress.Remove(region);

                coordinator.ClearRebalanceInProgress(shard);
            }
        }

        private static void ClearRebalanceInProgress<TCoordinator>(this TCoordinator coordinator, string shard) where TCoordinator : IShardCoordinator
        {
            if (coordinator.RebalanceInProgress.TryGetValue(shard, out var pendingGetShardHome))
            {
                var msg = new PersistentShardCoordinator.GetShardHome(shard);
                foreach (var sender in pendingGetShardHome)
                {
                    coordinator.Self.Tell(msg, sender);
                }
                coordinator.RebalanceInProgress = coordinator.RebalanceInProgress.Remove(shard);
            }
        }

        private static void DeferGetShardHomeRequest<TCoordinator>(this TCoordinator coordinator, string shard, IActorRef from) where TCoordinator : IShardCoordinator
        {
            coordinator.Log.Debug("GetShardHome [{0}] request from [{1}] deferred, because rebalance is in progress for this shard. It will be handled when rebalance is done.", shard, from);
            var pending = coordinator.RebalanceInProgress.TryGetValue(shard, out var prev)
                ? prev
                : ImmutableHashSet<IActorRef>.Empty;
            coordinator.RebalanceInProgress = coordinator.RebalanceInProgress.SetItem(shard, pending.Add(from));
        }

        private static void HandleRebalanceTick<TCoordinator>(this TCoordinator coordinator) where TCoordinator : IShardCoordinator
        {
            // don't rebalance with un-acked shards, will cause unnecessary rebalance
            if (coordinator.CurrentState.Regions.Count != 0 && coordinator.UnAckedHostShards.IsEmpty)
            {
                var shardsTask = coordinator.AllocationStrategy.Rebalance(coordinator.CurrentState.Regions, coordinator.RebalanceInProgress.Keys.ToImmutableHashSet());
                if (shardsTask.IsCompleted && !shardsTask.IsFaulted)
                    ContinueRebalance(coordinator, shardsTask.Result);
                else
                    shardsTask.ContinueWith(t => !(t.IsFaulted || t.IsCanceled)
                        ? new PersistentShardCoordinator.RebalanceResult(t.Result)
                        : new PersistentShardCoordinator.RebalanceResult(ImmutableHashSet<ShardId>.Empty), TaskContinuationOptions.ExecuteSynchronously)
                    .PipeTo(coordinator.Self);
            }
        }

        private static void HandleResendShardHost<TCoordinator>(this TCoordinator coordinator, ResendShardHost resend) where TCoordinator : IShardCoordinator
        {
            if (coordinator.CurrentState.Shards.TryGetValue(resend.Shard, out var region) && region.Equals(resend.Region))
                SendHostShardMessage(coordinator, resend.Shard, region);
        }

        private static void HandleShardStated<TCoordinator>(this TCoordinator coordinator, PersistentShardCoordinator.ShardStarted message) where TCoordinator : IShardCoordinator
        {
            var shard = message.Shard;
            if (coordinator.UnAckedHostShards.TryGetValue(shard, out var cancel))
            {
                cancel.Cancel();
                coordinator.UnAckedHostShards = coordinator.UnAckedHostShards.Remove(shard);
            }
        }

        private static void HandleAllocateShardResult<TCoordinator>(this TCoordinator coordinator, PersistentShardCoordinator.AllocateShardResult allocateResult) where TCoordinator : IShardCoordinator
        {
            if (allocateResult.ShardRegion == null)
                coordinator.Log.Debug("Shard [{0}] allocation failed. It will be retried", allocateResult.Shard);
            else
                ContinueGetShardHome(coordinator, allocateResult.Shard, allocateResult.ShardRegion, allocateResult.GetShardHomeSender);
        }

        internal static bool HandleGetShardHome<TCoordinator>(this TCoordinator coordinator, PersistentShardCoordinator.GetShardHome getShardHome) where TCoordinator : IShardCoordinator
        {
            var shard = getShardHome.Shard;

            if (coordinator.RebalanceInProgress.ContainsKey(shard))
            {
                coordinator.DeferGetShardHomeRequest(shard, coordinator.Sender);
                return true;
            }
            else if (!coordinator.HasAllRegionsRegistered())
            {
                coordinator.Log.Debug("GetShardHome [{0}] request ignored, because not all regions have registered yet.", shard);
                return true;
            }
            else
            {
                if (coordinator.CurrentState.Shards.TryGetValue(shard, out var region))
                {
                    if (coordinator.RegionTerminationInProgress.Contains(region))
                        coordinator.Log.Debug("GetShardHome [{0}] request ignored, due to region [{1}] termination in progress.", shard, region);
                    else
                        coordinator.Sender.Tell(new PersistentShardCoordinator.ShardHome(shard, region));

                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        private static void RegionTerminated<TCoordinator>(this TCoordinator coordinator, IActorRef terminatedRef) where TCoordinator : IShardCoordinator
        {
            foreach (var rebalanceWorker in coordinator.RebalanceWorkers)
                rebalanceWorker.Tell(new RebalanceWorker.ShardRegionTerminated(terminatedRef));

            if (coordinator.CurrentState.Regions.TryGetValue(terminatedRef, out var shards))
            {
                coordinator.Log.Debug("ShardRegion terminated: [{0}]", terminatedRef);
                coordinator.RegionTerminationInProgress = coordinator.RegionTerminationInProgress.Add(terminatedRef);

                foreach (var shard in shards)
                    coordinator.Self.Tell(new PersistentShardCoordinator.GetShardHome(shard), coordinator.IgnoreRef);

                coordinator.Update(new PersistentShardCoordinator.ShardRegionTerminated(terminatedRef), e =>
                {
                    coordinator.CurrentState = coordinator.CurrentState.Updated(e);
                    coordinator.GracefullShutdownInProgress = coordinator.GracefullShutdownInProgress.Remove(terminatedRef);
                    coordinator.RegionTerminationInProgress = coordinator.RegionTerminationInProgress.Remove(terminatedRef);
                    coordinator.AliveRegions = coordinator.AliveRegions.Remove(terminatedRef);
                    AllocateShardHomesForRememberEntities(coordinator);
                });
            }
        }

        private static void RegionProxyTerminated<TCoordinator>(this TCoordinator coordinator, IActorRef proxyRef) where TCoordinator : IShardCoordinator
        {
            if (coordinator.CurrentState.RegionProxies.Contains(proxyRef))
            {
                coordinator.Log.Debug("ShardRegion proxy terminated: [{0}]", proxyRef);
                coordinator.Update(new PersistentShardCoordinator.ShardRegionProxyTerminated(proxyRef), e => coordinator.CurrentState = coordinator.CurrentState.Updated(e));
            }
        }

        private static void HandleRegisterProxy<TCoordinator>(this TCoordinator coordinator, PersistentShardCoordinator.RegisterProxy registerProxy) where TCoordinator : IShardCoordinator
        {
            var proxy = registerProxy.ShardRegionProxy;
            coordinator.Log.Debug("ShardRegion proxy registered: [{0}]", proxy);
            if (coordinator.CurrentState.RegionProxies.Contains(proxy))
                proxy.Tell(new PersistentShardCoordinator.RegisterAck(coordinator.Self));
            else
            {
                var context = coordinator.Context;
                var self = coordinator.Self;
                coordinator.Update(new PersistentShardCoordinator.ShardRegionProxyRegistered(proxy), e =>
                {
                    coordinator.CurrentState = coordinator.CurrentState.Updated(e);
                    context.Watch(proxy);
                    proxy.Tell(new PersistentShardCoordinator.RegisterAck(self));
                });
            }
        }

        private static void HandleRegister<TCoordinator>(this TCoordinator coordinator, PersistentShardCoordinator.Register message) where TCoordinator : IShardCoordinator
        {
            var region = message.ShardRegion;
            if (IsMember(coordinator, region))
            {
                coordinator.Log.Debug("ShardRegion registered: [{0}]", region);
                coordinator.AliveRegions = coordinator.AliveRegions.Add(region);

                if (coordinator.CurrentState.Regions.ContainsKey(region))
                {
                    region.Tell(new PersistentShardCoordinator.RegisterAck(coordinator.Self));
                    AllocateShardHomesForRememberEntities(coordinator);
                }
                else
                {
                    var context = coordinator.Context;
                    var self = coordinator.Self;

                    coordinator.GracefullShutdownInProgress = coordinator.GracefullShutdownInProgress.Remove(region);
                    coordinator.Update(new PersistentShardCoordinator.ShardRegionRegistered(region), e =>
                    {
                        coordinator.CurrentState = coordinator.CurrentState.Updated(e);
                        context.Watch(region);
                        region.Tell(new PersistentShardCoordinator.RegisterAck(self));

                        AllocateShardHomesForRememberEntities(coordinator);
                    });
                }
            }
            else coordinator.Log.Debug("ShardRegion [{0}] was not registered since the coordinator currently does not know about a node of that region", region);
        }

        private static void HandleGetClusterShardingStats<TCoordinator>(this TCoordinator coordinator, GetClusterShardingStats message) where TCoordinator : IShardCoordinator
        {
            var sender = coordinator.Sender;
            Task.WhenAll(
                coordinator.AliveRegions.Select(regionActor => regionActor.Ask<ShardRegionStats>(GetShardRegionStats.Instance, message.Timeout).ContinueWith(r => (regionActor, r.Result), TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.OnlyOnRanToCompletion))
                ).ContinueWith(allRegionStats =>
                {
                    if (allRegionStats.IsCanceled)
                        return new ClusterShardingStats(ImmutableDictionary<Address, ShardRegionStats>.Empty);

                    if (allRegionStats.IsFaulted)
                        throw allRegionStats.Exception; //TODO check if this is the right way

                    var regions = allRegionStats.Result.ToImmutableDictionary(i =>
                    {
                        Address regionAddress = i.Item1.Path.Address;
                        Address address = (regionAddress.HasLocalScope && regionAddress.System == coordinator.Cluster.SelfAddress.System) ? coordinator.Cluster.SelfAddress : regionAddress;
                        return address;
                    }, j => j.Item2);

                    return new ClusterShardingStats(regions);
                }, TaskContinuationOptions.ExecuteSynchronously).PipeTo(sender);
        }

        private static bool ShuttingDown(object message)
        {
            // ignore all
            return true;
        }

        /// <summary>
        /// Start a RebalanceWorker to manage the shard rebalance.
        /// Does nothing if the shard is already in the process of being rebalanced.
        /// </summary>
        /// <typeparam name="TCoordinator">TBD</typeparam>
        /// <param name="coordinator">TBD</param>
        /// <param name="shard">TBD</param>
        /// <param name="from">TBD</param>
        /// <param name="isRebalance">TBD</param>
        private static void StartShardRebalanceIfNeeded<TCoordinator>(
            this TCoordinator coordinator,
            ShardId shard,
            IActorRef from,
            bool isRebalance)
            where TCoordinator : IShardCoordinator
        {
            if (!coordinator.RebalanceInProgress.ContainsKey(shard))
            {
                coordinator.RebalanceInProgress = coordinator.RebalanceInProgress.SetItem(shard, ImmutableHashSet<IActorRef>.Empty);

                var regions = coordinator.CurrentState.Regions.Keys.Union(coordinator.CurrentState.RegionProxies);
                coordinator.RebalanceWorkers = coordinator.RebalanceWorkers.Add(coordinator.Context.ActorOf(
                    RebalanceWorker.Props(shard, from, coordinator.Settings.TuningParameters.HandOffTimeout, regions, isRebalance)
                    .WithDispatcher(coordinator.Context.Props.Dispatcher)));
            }
        }

        private static void ContinueRebalance<TCoordinator>(this TCoordinator coordinator, IImmutableSet<ShardId> shards) where TCoordinator : IShardCoordinator
        {
            if (coordinator.Log.IsInfoEnabled && (shards.Count > 0 || !coordinator.RebalanceInProgress.IsEmpty))
            {
                coordinator.Log.Info("Starting rebalance for shards [{0}]. Current shards rebalancing: [{1}]",
                    string.Join(",", shards),
                    string.Join(",", coordinator.RebalanceInProgress.Keys));
            }

            foreach (var shard in shards)
            {
                // optimisation: check if not already in progress before fetching region
                if (!coordinator.RebalanceInProgress.ContainsKey(shard))
                {
                    if (coordinator.CurrentState.Shards.TryGetValue(shard, out var rebalanceFromRegion))
                    {
                        coordinator.Log.Debug("Rebalance shard [{0}] from [{1}]", shard, rebalanceFromRegion);
                        coordinator.StartShardRebalanceIfNeeded(shard, rebalanceFromRegion, isRebalance: true);
                    }
                    else
                        coordinator.Log.Debug("Rebalance of non-existing shard [{0}] is ignored", shard);
                }
            }
        }

        private static void ShutdownShards<TCoordinator>(this TCoordinator coordinator, IActorRef shuttingDownRegion, IImmutableSet<ShardId> shards)
            where TCoordinator : IShardCoordinator
        {
            if (coordinator.Log.IsInfoEnabled && shards.Count > 0)
                coordinator.Log.Info("Starting shutting down shards [{0}] due to region shutting down.", string.Join(", ", shards));
            foreach (var shard in shards)
            {
                coordinator.StartShardRebalanceIfNeeded(shard, shuttingDownRegion, isRebalance: false);
            }
        }

        private static void ContinueGetShardHome<TCoordinator>(this TCoordinator coordinator, string shard, IActorRef region, IActorRef getShardHomeSender) where TCoordinator : IShardCoordinator
        {
            if (!coordinator.RebalanceInProgress.ContainsKey(shard))
            {
                if (coordinator.CurrentState.Shards.TryGetValue(shard, out var aref))
                {
                    getShardHomeSender.Tell(new PersistentShardCoordinator.ShardHome(shard, aref));
                }
                else
                {
                    if (coordinator.CurrentState.Regions.ContainsKey(region) && !coordinator.GracefullShutdownInProgress.Contains(region))
                    {
                        coordinator.Update(new PersistentShardCoordinator.ShardHomeAllocated(shard, region), e =>
                        {
                            coordinator.CurrentState = coordinator.CurrentState.Updated(e);
                            coordinator.Log.Debug("Shard [{0}] allocated at [{1}]", e.Shard, e.Region);

                            SendHostShardMessage(coordinator, e.Shard, e.Region);
                            getShardHomeSender.Tell(new PersistentShardCoordinator.ShardHome(e.Shard, e.Region));
                        });
                    }
                    else
                        coordinator.Log.Debug("Allocated region {0} for shard [{1}] is not (any longer) one of the registered regions", region, shard);
                }
            }
            else
            {
                coordinator.DeferGetShardHomeRequest(shard, getShardHomeSender);
            }
        }

        #endregion

    }
}


There are two versions of this portrait of composer Jaume Pahissa: this one, in which the head emerges from a half-carved block of marble, and a second bronze one that spotlights the figure's face, which is also housed in the museum.
Marès participated with the former in several official art shows, most notably the 1918 Barcelona Art Exhibition. This marked Marès' official presentation to the city as an artist, and he won the prize granted by the Royal Artistic Circle.
The portrait, which was carved from life, shows the influence of the output of sculptor Auguste Rodin, mainly through the use of the resource of the modelled face which emerges from rough marble, which was popularised by manyModernistes artists, as well as by the treatment of the facial features and the hair. Nonetheless, it in no way exudes the intense expressivity of the portraits by this French sculptor. Rather, Marès' way of presenting the personage shows a clearly idealistic vein that distances him from Rodin and his sphere of influence.


text:
HOME -> B2B Marketing -> Acquisition -> Aon Sends Message of Equal Pay for Women with Golf Sponsorship Campaign
Aon Sends Message of Equal Pay for Women with Golf Sponsorship Campaign
Posted on November 27, 2019 by Evan Vladem
Golfer Carlota Ciganda, winner of the Aon Risk Reward Challenge, with Aon CMO Andy Weitz
The culmination of a first-year sponsorship campaign by professional services firm Aon left pro women's golfer Carlota Ciganda in tears at a press conference last week.
With her parents in the audience, the 29-year-old golfer from Spain took home a prize of $1 million for winning a season-long sponsorship program uniquely developed by the brand. Dubbed the Aon Risk Reward Challenge, the season-long competition rewards golfers who exhibit strategic decision-making skills, and in doing so highlights parallels between business and golf.
What was bigger than the hefty check, though, was the powerful message Aon communicated surrounding equal pay for men and women. As a part of a multi-year deal, the amount of prize money and the campaign itself were exactly the same for both the Ladies Professional Golf Association (LPGA) Tour and the PGA Tour.
Andy Weitz, CMO of Aon, sat down with Evan Vladem on behalf of Chief Marketer to discuss how the campaign was developed, how it performed in its first year, and the wider message the professional services firm sent out.
EVAN VLADEM: Aon just culminated the first year of the Aon Risk Reward Challenge. How did you see the opportunity to actually create your own award within professional golf?
ANDY WEITZ: It all started with the audience we were trying to reach. We wanted to reach a more strategic buyer, change perception, evolve how we're seen in the marketplace. We asked, 'how do we reach that really busy, time-poor leader?'
We found they were passionate about golf, they made time for it, they played it and they consumed it. The question then became, how do we break through the clutter? How do we talk about Aon in a way that engages them and changes perception of the firm? For us, it was really about driving an understanding of how Aon is evolving and how we create value for our clients.
EV: With so many pieces to engage consumers and a competition with the pros, how did it evolve from there?
AW: We focused not just on a tournament sponsorship, but how we could tell a story over the course of a season—one that's authentic, that fits into how broadcasters, fans and players already talk about the game. For us, that was 'Risk/Reward.' You hear it all the time.
For Aon, that's a natural fit because that's how we create value for our clients. We help them make better decisions. That's how a caddy advises a player. He helps him or her make better decisions during a moment that matters most. We grasped that concept and we ran with it.
We loved that natural connection and then we figured, let's not just tell the story through signage or brand work, let's actually integrate it into broadcast and do some storytelling.
EV: Talk to me about the channels Aon hit with the campaign. How did engagement and performance look?
AW: We have three categories we pay the most attention to. First is storytelling, second are events, and third is what we call memorable moments.
From a storytelling perspective, we had a broad-based content strategy that was anchored in broadcast but also supplemented through social media channels where we could target audiences and bring them back to this idea of Risk/Reward by highlighting the holes on the LPGA Tour and PGA Tour each week. Throughout that, our key messages were around associating Aon with insight through data and analytics. We were able to actually measure a considerable uptick in association with Aon among that target audience over the course of the season. We succeeded in shifting perception, which we think is really powerful in terms of measuring the impact of storytelling because that helps us create conditions for growth.
Secondly, we looked at who we could host. We have all these great events over the course of the entire season, not a single tournament, where we can bring clients and prospects together and empower our local leaders through the PGA Tour and LPGA Tour stops to actually tell the story for us with the backdrop of golf. We can measure the amount of revenue we've hosted, we can measure from a pipeline perspective, how that's matured, what we've retained, what's rolled over.
Finally, memorable moments, which for both colleagues and clients are really important. The idea that we can create access in and outside of the ropes with our ambassador program and the broader Aon Risk Reward Challenge program that we can't do otherwise. That's really paid off. You can't measure it as quantitatively, but the stories, the anecdotes, the experiences have been exceptional.
Visible's CMO on Creating Consumer Connections Through Experiences
CMO Q&A: McAffe's Cybersecurity Marketing Challenges
CMO Pressure Forces Dramatic Agency Transformation in 2020
EV: Sitting here now and reflecting on the first year, what was the biggest take away?
AW: We're most proud of the equal prize money.
The idea that we're offering the men and the women the same reward for the same basic execution, if you will. That has paid off in ways we never could have anticipated, both in terms of the pride within our firm about that decision and the earned media we've seen where people have commented, 'Explain to us how you made this decision, explain why it's important to your firm.' It's given us an additional platform to tell this story on.
EV: That's huge—the conversation of men and women pay, especially in sports. You made it even. Talk to me about that decision as a company.
AW: We actually took the concept separately to both tours in parallel and basically agreed that we were going to do equal prize money across both. For our leadership team, it was never really a question. We knew that if we were going to do this, we had an opportunity to make a statement and at this point it felt like the right thing to do. We try to live our values at Aon and this was a great example to do just that. I think our colleagues have been really inspired by that.
EV: With everything going on in the world and where we're at politically, tell me about the power of that message and feedback.
AW: Our decision to award equal prize money on the LPGA and PGA Tours has been uniformly positive. It's a decision we made almost two years ago now in the planning process. It was one that arguably was made well before this issue became the important hot topic that it has become today. For us, it was just kind of fundamental to our values and it's played out in a way that it's benefited the program. I think we're most proud of the way our own team, our colleagues feel about that decision.
EV: You have so many activation points on the ground today. You have ambassadors, you have the TV, social, digital and on-site. What do you think is the most powerful for Aon?
AW: It's tough to say which channel has been the most effective, because I think the value of the program is in the multichannel approach. Every moment we create throughout the course of the golf season we view as an opportunity to tell the story again and again through multiple channels.
I think what's been most measurable has been the broadcast integration because we can measure the audience that's watching and we can, over time, sample that audience to measure a change in perception.
All of that is also reinforced by social media and how we can target that audience. The great thing about this is, the golf season goes basically all year. It has its peaks and valleys, but we can use those different channels.
Our ambassador program has been fantastic in personalizing that story and allowing us to work with leading PGA and LPGA players to kind of bring it to life in a way that really resonates with both the avid fan and the average fan who maybe is more the business person that we're trying to target.
EV: How did you approach each ambassador and choose who's going to be part of your program?
AW: We built some criteria that we wanted to use as guardrails for making those choices. I think first and foremost, we wanted a diverse international group of ambassadors. We also wanted players who were beginning to incorporate data and analytics into how they made decisions because we knew they'd be more comfortable telling the story we wanted to tell. We also wanted players who had a great relationship with their caddy so they could share anecdotes and insights, windows, if you will, into how risk-reward comes to life.
Finally, we wanted players who had a team, who felt like it wasn't just them and all about them but it was about who they surrounded themselves with, their advisors, if you will, which goes back to that parallel we're trying to draw between what happens on the golf course and what happens in the boardroom. And the idea that Aon should have a seat at that table in the boardroom advising our clients, just like that team is advising those players.