text:
The Kazakhstan Klondike
Forums: Asia, Kazakhstan, Land Use, Development, Urban Plannng
Reply	Sat 25 Nov, 2006 09:12 pm
Link to Der Spiegel article on new capital city
There is a slide show with the article - to see it, click on link above.
CENTRAL ASIAN POWERHOUSE
By Christian Neef
Forget Borat. Kazakhstan is hoping to become a powerhouse in Central Asia. President Nursultan Nazarbayev has built himself a brand new capital city in the middle of the steppes as a symbol of his country's riches.
Every evening in Astana, when the welders arrive at the construction site across the street for their night shift, Vassily Lestyev realizes that he has already lost his battle. His living room becomes bathed in pale blue light and the din from the jackhammers is even louder than it is during the day.
A new hotel is being built next door to Lestyev's mud cottage, and its concrete skeleton is only eight meters (about 25 feet) from Kossygin Street 8 -- Lestyev's address. His house's days are numbered. The water has already been shut off, and since bulldozers began traveling through his front yard, thumb-wide cracks have appeared in the walls.
Lestyev is 80. He wears a worn sweater and blue jogging pants, and he can barely walk still. His 86-year-old wife is braising onions on their coal-fired stove. The couple built the little house with their own hands, but now a letter from the district court sits on the table, demanding that they vacate the premises "within one week." If they fail to comply they will be forcibly removed. "In this case," the letter reads, "we will assume no responsibility for your belongings."
The drone and hiss and bang of construction can be heard on every street corner in Astana, now that Kazakh President Nursultan Nazarbayev has declared this Cossack settlement 970 kilometers (603 miles) north of the former capital Almaty the country's new capital. The decision has transformed this once-sleepy little town into a pulsating city, and yet the boom has divided its inhabitants into two classes. The Lestyevs are clearly among the losers.
Sleepy village
Yury Braun, on the other hand, is a winner. Braun, a Kazakh businessman who bears a resemblance to French character actor Lino Ventura, is well-fed and unashamedly sports a tan from his recent nine-day vacation in the United Arab Emirates.
Braun sits in his office on Auesov Street, drinking green tea, visibly pleased. His various businesses -- the large restaurant downstairs, the adjacent hotel, a bakery and a shop at the street level -- are thriving. One hundred and twenty-five employees keep his small realm humming along. As well it should: It's in an excellent location in Astana, and its 50-year-old owner is a man who says he always knew that things would "take a turn for the better one day" in this small town on the Kazakh steppes.
Braun is of German descent. Astana, formerly known as Zelinograd, was still a "German" city only a decade and a half ago, populated mainly by the descendants of Volga Germans former Soviet dictator Josef Stalin had banned to the wilds of Central Asia.
But when the Soviet empire collapsed, when the area's big agricultural machine factories were shut down and the surrounding wheat fields were no longer tilled, most Germans packed their belongings and moved to the West -- back to the German "Reich." Suddenly the region, which former Communist Party leader Nikita Khrushchev had envisioned as the country's breadbasket, but which ultimately proved to be far less productive than expected, was abandoned by many of its residents.
Braun decided to stay. A construction engineer by trade, he used the "bit of money" he had made in a goldmine to buy the building he now owns on Auesov Street. Kazakh President Nursultan Nazarbayev visited Braun's restaurant, "Yegorkino," six times and, as Braun says, "he liked our food." He proudly displays photos showing him posing with the president. And now, miracle of miracles, he has suddenly come into a new piece of property where he plans to build a second hotel that will include a billiards club. The new building will stand on the left bank of the Ishim River, where construction on Nazarbayev's new presidential palace is already complete. It's a prime location, sure to be extremely valuable in a few years time.
Braun's and Lestyev's stories are only two of the many tales of success and failure, of the haves and have-nots, in this remote Kazakh Klondike on a bleak plain halfway between the Russian south and the Chinese border. But unlike the American West 110 years ago, Astana's boom is not fuelled by a gold rush so much as by the iron will of a despotic ruler.
"Palace of Peace and Harmony"
The Bayterek Tower, or "Tree of Life," a large glass sphere perched at the top of a 100-meter (328-foot) metal shaft that looks a bit like the FIFA World Cup trophy, embodies the fierce resolve with which Nazarbayev, Kazakhstan's last Communist leader and re-elected for a fourth term last year with 91 percent of the votes, is stamping his new capital into the vast emptiness of the Central Asian steppes.
The tower forms the center of a monumental axis running straight through the government district that links the country's new centers of power. At the western end of this axis stand the headquarters of the partially state-owned oil and gas companies, linked by a triumphal arch, and the eastern end is marked by "Ak Orda," the presidential residence, a white marble and granite structure crowned by a sky-blue dome. The celebrated architect Norman Foster designed a 62-meter (203-foot) glass pyramid, the "Palace of Peace and Harmony," that now stands in the park behind Nazarbayev's new palace.
Other symbols of the Nazarbayev realm straddle the axis, including the high-rises that will house the country's parliament and senate, the supreme court building, a national archive building shaped like a giant egg and the "Transport Tower" with its gold-tinted glass façade. Behind these structures lies the diplomatic quarter, a collection of red-roofed miniature mansions lined up in the landscape like rows of obedient soldiers, a convenient stone's throw from the presidential palace. The cupolas of what is now Kazakhstan's largest mosque and, farther back, the towers of the "Triumph" Palace -- a perfect replica of a Moscow behemoth from the days of Josef Stalin -- glint in the sunlight on the other side of this avenue.
Pile drivers drone in the midst of this collection of ornate towers and minarets, voluptuous facades and onion-shaped roofs. But what is missing are the people. The new Astana is an artificial creation, a cross between Moscow and Las Vegas, between the high-tech of modern-day Wolfsburg (Volkswagen's headquarters in Germany) and an aging factory town, a cocktail of Eurasian modernity and Soviet confectionary. Critics have disparaged the new city for everything from its "Arabian Nights" pretensions to its "fantasies of power cast in concrete."
Czar Peter the Great, in a move to open up Russia to Europe, had his new capital, St. Petersburg, built in the swamps on the Gulf of Finland. Oscar Niemeyer envisioned his Brasilia as a model capital city, the Australian capital Canberra is the result of a dispute between Sydney and Melbourne, and the new Burmese capital, Naypyidaw, was conceived as a remote haven for the country's paranoid military junta.
Two billion dollars a year
But Astana? "I too was surprised by the decision to move the capital," admits Amanshol Chikanayev. Chikanayev, Nazarbayev's first chief architect, now serves as the president's advisor on urban planning issues. In his office behind the new city hall, the professor sits among models and cabinets filled with drawings and discusses the presumed reasons behind his president's decision to build a new capital for the world's ninth-largest country, a gargantuan effort that will cost the state $2 billion a year for many years to come.
The location of the current capital, Almaty, directly on the country's southern border and in close proximity to China, was "a dead-end economically," says Chikanayev. It also posed a security risk to the government, because ethnic Kazakhs were a minority to the ethnic Russian majority after the country declared its independence in 1991, with half the country remaining uncomfortably exposed to its bigger neighbor to the north. Finally, says Chikanayev, Nazarbayev believed that the best way to align his then economically troubled country with the West was to separate himself and his government from the powerful business clans in Almaty.
Success has apparently proved Nazarbayev right. Kazakhstan has boomed since it managed to gain control over its own natural resources, including oil, natural gas, uranium and gold. It has already set aside $13 billion in reserves, is sending its own satellites into space and, with $40 billion in foreign direct investment, is, with the exception of the Baltic states, the biggest per capita recipient of foreign capital among the states of the former Soviet Union.
This former realm of nomadic herders now has a power and natural gas grid, a comprehensive secondary education system, a modern banking network and private pension funds -- the stuff of dreams for many in Kazakhstan's larger neighbor to the north, Russia. Indeed, the Kazakhs have plenty of reasons for complaining that the new comedy "Borat!: Cultural Learnings of America for Make Benefit Glorious Nation of Kazakhstan," which has made Kazakhstan a laughing stock the world over, paints a completely misleading picture of their thriving country.
The president is also convinced that Kazakhstan is well on its way to making the transition to one of the world's most successful countries. Nazarbayev has made it clear that he has plans to turn his country into one of the "50 most prosperous countries in the world" by 2030, and that it will be the world's fifth-largest oil exporter even sooner and, implicitly, the dominant power in the Central Asian region.
Fat spiders in a web
The energy-hungry West, eager to share in the wealth of the Kazakhs, has been more than willing to turn a blind eye to Nazarbayev's authoritarian style, to the country's lack of free elections, to the murders of members of the opposition and to nepotism within the presidential clan. Indeed, Nazarbayev's daughters and sons-in-law are comfortably ensconced in the oil and construction business, and in the media sector, like fat spiders in a web.
Of course, Almaty was in an uproar when the president made it clear that his cabinet minister, foreign ambassadors, international airlines and even the national circus would have no choice but to pack up and move -- to a provincial town that is now second only to the Mongolian capital Ulan Bator as the world's most frigid capital, a place that is still blanketed in snow by the time the almond trees are blooming in Almaty. Astana, says an offended citizen of the former capital, "doesn't even have sidewalks, and every brick, every gutter has to be brought in from someplace else."
But 60-year-old Chikanayev, the architect, sees Astana's innocence as its greatest opportunity. He believes that the city will become a symbol for a country on the verge of reinventing itself. "We will not revive the manufacturing industries of the Soviet era," says Chikanayev, "and in addition to selling raw materials, we also intend to take advantage of our intellectual potential." Astana, he believes, represents Kazakhstan's departure from the past.
Oddly enough, the man making these rosy predictions is someone who came of age under communism and whose suit looks as though it too may have originated in that era. But for Chikanayev, the son of a wealthy Kazakh cattle rancher, the new city is also a form of compensation for past injustices. The Soviets "de-Kulaked" (the term Kulak refers to those who were wealthy farmers or peasants during the Russian empire and were later persecuted by the Soviets) his father in the 1920s and drove him into the forests of the Ural Mountains. Chikanayev was born in the Russian city of Yekaterinburg. Up to 2 million Kazakhs lost their lives at the time, and the Chikanayevs only managed to return to their homeland 30 years later.
And now, says Chikanayev, the Kazakhs have finally regained their sovereignty. He has plans to entice fellow Kazakhs from the former Soviet biological weapons research center on Vozrozhdeniye Island in the Aral Sea to return to Astana. Indeed, if Chikanayev has his way, "those people who are valuable to us" will return home, including experts from the former weapons industry, Kazakh mathematicians and computer specialists who have been doing their research in Russia. He hopes to see Astana develop into a "high-tech city," and to convince as many qualified people as possible to settle in the new capital he is currently redesigning the city's master plan by preeminent Japanese architect Kisho Kurokawa who, according to Chikanayev, saw Astana as nothing but "an attractive façade."
But to achieve that goal the city will need many more high-rises to house the "800,000 people who will live here by 2030." The new capital's population has already reached 500,000, which explains the astonishing pace of construction in Astana's old section. While the long-time residents of neighborhoods that are gradually giving way to bulldozers fight to gain what they feel is fair compensation, and while retirees complain about the loss of their now-flattened vegetable gardens and about the outrageous prices in new restaurants, the spirit of the "New Kazakhs," nicknamed the "Kasanovas," already dominates the capital's new thoroughfares. Astana's urban planners have concealed Khrushchev's pre-fabricated concrete high-rises behind white façades, creating space for pubs and nightclubs on their ground floors. Developers advertise a "new sense of life" for those who buy their condominiums, and banks like Texaka are offering "fast money" to those willing to pay 12 percent interest. A horn-honking avalanche of Western-made cars coated in cement dust constantly surges past rows of billboards hawking these and other services to Astana's new residents.
Though just completed, the 459 "Elite" and "Deluxe" condominiums in the "Triumph" Palace behind the "Astana Tower" are already sold out, at a price per square meter of about €1,300. The sum is roughly the equivalent of a Kazakh teacher's average annual salary -- nevertheless "every second customer paid in cash," says Shanar Ainabulatova, the deputy director of Basis-A, the developer of Astana's new high-rise residences. Almaty may be turning up its nose at its rival Astana, but its citizens have had no qualms about investing their money in the new capital.
Basis-A's next project is an entire urban neighborhood that will be called "Romance" and will feature replicas of 19th-century European architecture. "The refined style of the English, the chic of the French and the airiness of the Italians," says Ainabulatova as she flips through a glossy brochure. The images depict a Kazakh Disneyland, but what they fail to show is a sense of proportionality and good taste. Indeed, megalomania is the name of the game in Astana. The footprint of the new finance ministry, which sits across the street from the glass-enclosed headquarters of the KNB, Kazakhstan's national intelligence agency, was designed in the shape of a dollar sign. An expert reveals that Foster's pyramid, which will house a conference center and opera house, will consume as much electricity as a "small German city."
Nazarbayev is about as unconcerned about this ostentation as he is about the inroads the construction industry is making in Astana, which has been flooded with an army of Swiss and Italians, Kuwaitis and Jordanians. The Sheikh of Qatar donated the money for the new mosque. The Saudi Binladin Group, under the cover of a company called "KazArabInvest," built a cardiological center and is now constructing four 20-story towers. The South Korean Highvill Corporation is building an entire district complete with 600,000 square meters (6.45 million square feet) of residential space.
But none of this can hold a candle to the omnipresence of the Turks, who built the mosque and the pyramid. "They buy up property as if they were on a production line, use subcontractors and then sell the finished product," says one city official. According to the official, it is common knowledge that the Turks pour concrete at minus 40 degrees Celsius (minus 40 degrees Fahrenheit) and that their projects have the highest rate of deadly accidents. He points to the skeleton of a giant residential development that will likely have to be torn down before long. Astana is full of "temporary architecture" that will hardly last 20 years, warns Tsubokura Takashi, an assistant to Japanese urban planner Kurokawa.
Where are the Germans?
Andreas Seewalt, a businessman who runs a small trading company in an abandoned combine harvester factory, says that the Turks "are not popular among ordinary Kazakhs. But the higher-ups are under the fairy tale impression that the Turks rebuilt all of Germany after the war. And Germany has a solid reputation here."
Oddly enough, Germans are almost nowhere to be found in Astana. Lufthansa yielded to pressure from the Kazakhs and now offers two flights a week to the new capital. Industrial giant ThyssenKrupp supplies escalators for the Turkish-built high-rises. Wirtgen, a German company specializing in road construction and maintenance equipment, is providing asphalt technology; a Berlin company was involved in the construction of the presidential palace and even the German Foreign Minister Frank-Walter Steinmeier paid a visit to Astana last week. But German firms have been loath to submit direct bids for development contracts. "It's the usual situation here," says Seewalt, "the Germans want German prices and government guarantees, but neither of those two things is an option here. If you want to get involved in this giant Astana project, you have to get the right people on your side first -- and that's too much work for the Germans."
Seewalt is familiar with both worlds. He is 43, and like hotelier Yury Braun, he was born, he is a Kazakh of German origin. He studied electrical engineering and emigrated to Bavaria with his parents in 1992. But when his businesses failed there he returned to Kazakhstan with four trucks loaded with German paint. He is undaunted by challenges for which he is in fact unqualified, and he knows how to deal with the city's powerbrokers. The approach paid off when he was awarded a slice of Astana's construction boom, a contract to install the siding on the new circus arena, which crouches like some UFO between the city's old and new sections. Friends in Germany helped Seewalt recruit professionals and track down the necessary material. His next project is a €10 million contract to install a glass façade on the railroad administration's 182-meter (597-foot) office tower.
But city planners and local businesspeople alike are still waiting for the "real" Germans, especially those who are undaunted by the risks of investing in Astana. Perhaps in anticipation, someone has even opened a German-style beer garden, where classic German beer brands like Weihenstephan and Franziskaner are on tap and Bavarian sausages on the menu. The clientele -- all Kazakhs -- drink German beer and listen to German drinking songs. But there's no one there who can translate the lyrics.
Joe Nation
Reply	Sun 26 Nov, 2006 05:36 am
The third world is skipping from no phones to cellphones in less than ten years.
Joe(they may zoom by us)Nation
Indian Diaries of worldly and streetsmart travelers	- Discussion by dagmaraka
North Korea Pledges Nuclear Assault on USA	- Discussion by gungasnake
Did the atomic bombs on Hiroshima and Nagasaki essentially save the rest of Asia?	- Question by LazarusR
meaning of second paragraph	- Question by tanguatlay
The next time you think you don't have enough space...	- Discussion by Green Witch
FREE TIBET!!!!...and then what?	- Discussion by dagmaraka
This time to China and Tibet for 22-days	- Discussion by cicerone imposter
Can / Should Bhutan Adjust to the Modern World?	- Discussion by nimh
artificial famines	- Discussion by brahmin
Nepal's Civil Unrest	- Discussion by littlek
Indian Diary of other not-so-smart travellers	- Discussion by brahmin
» The Kazakhstan Klondike


Compare plans below and choose the plan that's best for you and your company. With our best price guarantee we can assure you that no other web accounting solution in Serbia will offer better features or price.
**Phone support is available every Serbian work day from 8:00 until 16:00 CET. Prolonged phone support is available every February and March. For users without phone support contract support is billed on time basis based on pricing specified in the Services pricing.


text:
ANALYSIS: 2020 M&A Closings and Terminations Show Resilience
By Grace Maral Burnett
Jan. 7, 2021, 9:08 AM
The impressive number of M&A deals that made it to the finish line and closed in 2020, as well as a typical number of deals that fell apart, are both causes for optimism in 2021. Together, they paint a picture of how resilient and persistent the M&A market and deal makers have been amid this pandemic.
Last year, a total of 7,156 mergers and acquisitions deals valued at $1 million or greater resulting in control of the acquired company or assets were successfully completed. Consistent with the overall lower level of deal activity last year, this number of completed transactions marks an 18% drop from 2019's total.
But 2020's deal completions are still notable, considering the extraordinary hurdles to successfully closing deals that arose as a result of the pandemic in 2020. Beyond illness, there were travel restrictions, social distancing, business disruptions, and market volatility—all serving to cause delays in due diligence, interference with critical in-person meetings between parties (including, of course, physical closings), valuation dilemmas, and even the complete loss of the rationale for the contemplated transactions.
The monthly data show that, in addition to an end-of-year rush in deal announcements, December also saw a rush in deal closings. A total of 952 deals closed last month—the second-highest number of completed deals for any month in the past two years, and a number reassuringly close to 2019's December monthly total of 1,085.
As for deals that were terminated after a definitive agreement was entered into by the parties, 2020's number is also a reason to be hopeful. A total of 305 mergers and acquisitions deals valued at $1 million or greater for the control of the company or assets to be acquired were terminated last year. That's lower than the total number of deals terminated in 2019, and, as a percentage of all completed and terminated deals combined, represents only a modest increase of less than 1% in terminated deals compared to 2019.
Monthly termination counts by deal target country show that terminations involving U.S. targets stand out as noticeably higher in March, April, and May—following the declaration of the pandemic on March 11—than in previous months. But as of August 2020, terminations involving U.S. targets appear to have returned to pre-pandemic levels.
Behind these hopeful 2020 numbers were remarkable efforts and strategy shifts on the part of deal makers to adapt to the challenges of the crisis—all of which they will also need this year too, as the pandemic continues on and evolves.
With assistance from Jacquelyn Palmer.
Bloomberg Law subscribers can find related content on our M&A Deal Analytics resource.
If you're reading this on the Bloomberg Terminal, please run BLAW OUT<GO> in order to access the hyperlinked content.
Grace Maral Burnett
Legal Analyst
ANALYSIS: U.S. Auto Targets Draw Most M&A, Investment Since 2009
Dec. 22, 2020, 9:26 AM
ANALYSIS: S&P 500 Buybacks and M&A Reach Pre-Pandemic Levels
ANALYSIS: The Winners (and Losers) in a Rebounding M&A Market

redpajama_set_name: RedPajamaCommonCrawl


Resume Template ~ Free Creativesume Templates For Microsoft Word Downloads Template Designs Modern Creative Resume Templates. Modern Creative Resume Templates Free Printable Word. Creative Resume Templates Downloads. Modern Creative Resume Templates Word Free Download.


text:
From Crazy Ideas to Social Innovation Breakthroughs
How do crazy ideas become breakthroughs? Read http://3bl.me/9z6kxs to find out! #SIS11 #socialinnovation
A recap of the key themes from the Social Innovation Summit in Palo Alto, CA. Held November 30, 2011, the Summit brought together 300 changemakers from the corporate, public and nonprofit sectors.
NEWSROOM: WE Communications
CONTENT: Blog
Last week, in the hotbed of innovation, start-ups, and entrepreneurship, 300 changemakers from the corporate, public and nonprofit sectors gathered at the Social Innovation Summit in Palo Alto.
One clear theme stemming from the Summit was that continued innovation (and knowledge-sharing) is needed to solve the world's largest social problems, ranging from education to healthcare to sustainability. And with more limited resources from governments, the role of nonprofits and the private sector – working in partnership – has become more important than ever in driving change. During a panel with leaders from the Silicon Valley, including Intel and Microsoft, Peter Diamandis, Chairman and CEO of The X PRIZE Foundation, astutely noted: "The day before something is truly a breakthrough, it's just a crazy idea." So how do those crazy ideas become breakthroughs? And how do breakthroughs lead to impact? Below are the 5 key themes (and tips) we saw emerge from the event that help answer these questions.
Think big and then make it even bigger. Entrepreneurs are known for thinking big, and social entrepreneurs are no exception. Scott Harrison, who founded charity: water wanted to tackle what he saw as the biggest problem – unsafe water, which contributes to 88% of disease in the world. And to talk about impact, Harrison's nonprofit has raised over $40 million to reach more than 2 million people through 4,200 water projects in 17 countries over the past 5 years. In 2010, charity: water achieved 85% growth, nearly doubling their ability to impact the water crisis. Harrison's goal now is even bigger – he wants to raise $1 billion for clean water. So what makes charity: water attractive to corporate partners like Saks Fifth Avenue and The Macallan? Harrison has a bold vision and his organization provides demonstrated proofs of impact to show ROI. charity: water also has a proven track record of achieving scale which has enabled it to attract many additional supporters and partners.
Content is king but metrics (and stories) make him powerful. As Jonathan Greenbladt, director of the White House Office of Social Innovation remarked "we manage what we measure." Measuring social impact is an ongoing challenge for many nonprofits and CSR teams alike. It is compounded by the lack of good metrics when it comes to programs that focus on human capital, as Silicon Valley pioneer and philanthropist Mitch Kapor noted, and the fact that social change takes time. And don't forget the often primary culprit: the time and expense that goes into actually tracking data. Greenbladt also noted "there can be tension between innovation and impact, and new and shiny might not always be the most impactful." But for a nonprofit to prove ROI to its stakeholders and continue to receive funding for their programs, demonstrating progress – even in the short term – is important. Storytelling – especially "hopeful" storytelling – is a great way to show impact and progress beyond numbers (for more on this, be sure to read Marianne Allison's blog post on this here).
Behave like a business (a responsible one). With individual and corporate donors' funds more strained than ever during our prolonged recession, there is a heightened demand (and scrutiny) for nonprofits to be transparent in running their organizations and make data-driven decisions. As Jen Boynton from Triple Pundit wrote in her blog post on the summit "when the tools of business are applied to NGO models, redundancies vanish." Thinking like a business can also bring to light the innovation solutions that are needed to solve big problems. John Wood, who left a successful career at Microsoft to start Room to Read, made the point that businesses are not afraid to think big. At Microsoft, he was encouraged to take risks and have "BHAG" (Big, Hairy, Audacious Goals) and he took this same approach with Room to Read, which has benefitted more than 6 million children in the last decade.
Flaunt failure. Given the pressure to demonstrate impact and effectiveness, most nonprofits only want to talk about the good stuff. Yet, where the social innovation community can benefit society the most is learning about each other's failures in order to not repeat mistakes. Jacqueline Fuller, Director of Charitable Giving and Advocacy at Google, said she looks for nonprofits who share Google's "fail fast" motto and likes to see engineers and developers in the C-suite because they are so used to things breaking or evolving constantly. A risk-taking mentality is also what makes young entrepreneurs like Andrew Yang, who founded Venture for America, ideal leaders of truly innovative nonprofits. More companies and donors should encourage nonprofits not to be afraid to fail and to share their failures as much as their successes.
Be social. Charles Best, founder and CEO of DonorsChoose.org, noted that being "social" is in the organization's DNA: "We do everything we can to make sure a donor feels like they didn't simply transact a donation, but forge a relationship with the beneficiary." With more than 1.9 million click throughs from Facebook last year, it's no wonder that 50% of all public school teachers in the U.S. have used DonorChoose.org to fund a project. From fundraising to storytelling, social media continues to be a powerful (and affordable!) tool for nonprofits, social enterprises and companies. But as Charles Porch, who manages community programs for Facebook, said organizations "should lead with your voice and people" to be effective on social media. Being authentic and genuine drives true engagement and loyalty with audiences.
To see the robust Twitter dialogue from the Summit, check out #SIS11. Stay tuned for more information on the next Social Innovation Summit that will be hosted by Landmark Ventures at the United Nations in New York City, May 31, 2012 (follow #SIS12 on Twitter).
WAGG19316
Waggener Edstrom
http://www.waggeneredstrom.com/
CATEGORY: Responsible Business & Employee Engagement
More From WE Communications
2017 Global Philanthropy Forum Conference to Focus on Trust & Civil Society
Tuesday, April 11, 2017 - 8:00am
Social Innovation Summit Gathers Leading Decision-Makers to Catalyze Dynamic Partnerships That Maximize Social Impact
Friday, November 4, 2016 - 9:30am
2016 Global Philanthropy Forum Conference Kicks Off Next Week, Focuses on Mass Migration
Videos from WE Communications
Digital Persuasion in Action Rule 5: Build a Digital Persuasion Dream Team by Ensuring All Staff are Members
Kate Spade & Company Creates Impact in Rwanda
Brightening up the Branding for Pro Bono Client Portland Sunshine Division


Russia Openly Attacks Ukraine. Why Now?
On November 25, Russia opened fire on three Ukrainian ships in the Kerch Strait and then seized them. On November 26, Kyiv imposed martial law in ten regions for thirty days as a response to the attack.
Contrary to Russia's previous military presence in Crimea or its military support of pro-Russian separatists in eastern Ukraine, both of which the Kremlin initially denied, this incident is an act of open and unmasked aggression against Ukraine.
On Sunday, two of Ukraine's gunboats and a tug were sailing from the Ukrainian port of Odesa on the Black Sea to Mariupol on the Sea of Azov. Ukraine's defense ministry says that it gave Russia advance warning about the boats' planned passing through the strait, but Russia denies having received any and accuses Ukraine of illegally entering its waters.
Russia's coast guard ship rammed the Ukrainian tug.
Russia later blocked civil vessels' passage through the strait, justifying its actions by pointing to possible provocations by Ukrainian ships. A Russian tanker was placed under the Kerch bridge to physically block any passage. The Russians said that the tanker was stranded, though permission to pass was granted to Russia's coast guard boats. Passage through the strait was not renewed for civil vessels until the next day.
Russia also deployed two fighter jets and two helicopters.
According to Ukraine's security service, one jet used two combat missiles against Ukrainian boats.
When three Ukrainian vessels turned and headed back to the port of Odesa, Russian vessels chased them, opening fire and seizing all three. They were taken to the port of Kerch.
According to Ukraine, six crew members were injured, although the Russian FSB says only three people were injured; they have received medical aid, according to the Russians. Russia opened a criminal case against the sailors for illegally crossing the Russian border. There were twenty-four crew members on all three boats combined.
These are not new violations by the Kremlin. Russia's previous illegal actions in the Black Sea region are already being considered by the Permanent Court of Arbitration in the Hague.
Since April, the Russian coast guard has halted commercial ships sailing to Ukrainian ports. This has negatively affected Ukrainian exports, 80 percent of which pass through water. Maritime traffic in Mariupol port dropped by15 percent, while in Berdiansk it was reduced by a third. The Kremlin became more active in the sea in May, after it completed construction of the bridge over the Strait of Kerch, the only entrance to the Sea of Azov.
Mykhailo Honchar, president of the Strategy XXI Center for Global Studies in Kyiv, notes that Russia has been waiting for an opportunity to escalate the conflict, because it has recently suffered a number of defeats, including the Skripal case, the uncovering of Russian hackers in the Netherlands, and Tomos for the Ukrainian Orthodox Church.
In his opinion, Russia will use the escalation in the Azov Sea to prove to the West that it's still powerful, and also to test Ukraine's reaction. "Russia counts on a weak response from Kyiv, and if there will be one, Moscow will test Ukraine further," he noted. The best response for Ukraine is to introduce martial law and turn the attention of the international community to Russia's actions, according to Honchar.
Honchar also pointed out that Russia is willing to protect its huge infrastructure project—the Kerch Bridge—at any cost. This shows why the construction of Nord Stream 2 and Turkish Stream poses security threats for nearby states: the Kremlin would be able to use its military under the pretext of defending its vital infrastructure.
Ukraine is counting on Western support. Pavlo Klimkin, Ukraine's foreign minister, said in an interview for European Pravda that Ukraine expected its partners to not only make statements but also take specific steps to counter Russian aggression. Poroshenko has made a number of phone calls during the day—to NATO Secretary General Jens Stoltenberg; Germany's Chancellor Angela Merkel; the president of the European Council, Donald Tusk; and Poland's President Andrzej Duda—to outline future steps in the international response toward Russian aggression.
Ukraine also raised the issue with various international institutions, including the OSCE Permanent Council, NATO-Ukraine Commission, and UN Security Council. The meeting of the UNSC was requested by both Ukraine and Russia. The council rejected the Russian request since the Kremlin insisted that Ukrainian sailors "illegally crossed" the border. However, the international community does not recognize Russia's seizure of Crimea. Thus, the meeting proceeded according to the agenda proposed by Ukraine.
Russian media say the "provocation" was allegedly planned by Ukraine in close cooperation with the US and is aimed at imposing martial law in Ukraine and, henceforth, canceling the elections, with Poroshenko being a main beneficiary. This is despite the Ukrainian president's announcement that martial law would last only thirty days, to allow the presidential campaign to start in time. To ensure this, Ukraine's parliament passed a decree setting the date of the next presidential elections for March 31, 2019.
Since September, Ukraine has been building a military base in the Sea of Azov to respond to increased hostilities from Russia in the area. However, currently its military presence there is quite weak. In September, the US agreed to transfer two of its decommissioned Coast Guard cutters to Ukraine, but they won't arrive until after July 2019.
What Ukraine can do now is to appeal to the international community to enhance sanctions.
Ruslan Minich and Vitalii Rybak are analysts and journalists at Internews Ukraine and at UkraineWorld, an information and networking initiative.
Why Is the Sea of Azov So Important?


text:
package quasar.mimir

import quasar.yggdrasil.bytecode._

import quasar.precog.common._
import quasar.precog.util.{ IdGen, Identifier }
import quasar.yggdrasil._

import scala.collection.mutable

import scalaz._, Scalaz._

trait DAG extends Instructions {
  type TS1

  import instructions._
  import library._
  import TableModule.CrossOrder // TODO: Move cross order out of yggdrasil.
  import dag.BucketSpec

  type SpecOrGraph = Either[BucketSpec, DepGraph]

  private def findGraphWithId(id: Int)(spec: BucketSpec): Option[DepGraph] = spec match {
    case dag.UnionBucketSpec(left, right)     => findGraphWithId(id)(left) orElse findGraphWithId(id)(right)
    case dag.IntersectBucketSpec(left, right) => findGraphWithId(id)(left) orElse findGraphWithId(id)(right)
    case dag.Group(`id`, target, _)           => Some(target)
    case dag.Group(_, _, child)               => findGraphWithId(id)(child)
    case dag.UnfixedSolution(`id`, target)    => Some(target)
    case dag.UnfixedSolution(_, _)            => None
    case dag.Extra(_)                         => None
  }

  private case class OpenSplit(spec: BucketSpec, oldTail: List[SpecOrGraph], id: Identifier)

  sealed trait Identities {
    def ++(other: Identities): Identities = (this, other) match {
      case (Identities.Undefined, _)                  => Identities.Undefined
      case (_, Identities.Undefined)                  => Identities.Undefined
      case (Identities.Specs(a), Identities.Specs(b)) => Identities.Specs(a ++ b)
    }

    def length: Int
    def distinct: Identities
    def fold[A](identities: Vector[dag.IdentitySpec] => A, undefined: A): A
  }

  object Identities {
    object Specs extends (Vector[dag.IdentitySpec] => Identities.Specs) {
      def empty = Specs(Vector.empty)
    }
    case class Specs(specs: Vector[dag.IdentitySpec]) extends Identities {
      override def length                                                   = specs.length
      override def distinct                                                 = Specs(specs map { _.canonicalize } distinct)
      override def fold[A](identities: Vector[dag.IdentitySpec] => A, b: A) = identities(specs)
    }
    case object Undefined extends Identities {
      override def length                                                           = 0
      override def distinct                                                         = Identities.Undefined
      override def fold[A](identities: Vector[dag.IdentitySpec] => A, undefined: A) = undefined
    }
  }

  sealed trait DepGraph {
    import dag._

    def identities: Identities

    /** Returns true if the identities are guaranteed to be unique. */
    def uniqueIdentities: Boolean

    /** The set of available value-sorted keys. */
    def valueKeys: Set[Int]

    def isSingleton: Boolean //true implies that the node is a singleton; false doesn't imply anything

    def containsSplitArg: Boolean

    def mapDown(body: (DepGraph => DepGraph) => PartialFunction[DepGraph, DepGraph]): DepGraph = {
      val memotable = mutable.Map[DepGraphWrapper, DepGraph]()

      def memoized(node: DepGraph): DepGraph = {
        lazy val pf: PartialFunction[DepGraph, DepGraph] = body(memoized)

        def inner(graph: DepGraph): DepGraph = graph match {
          case x if pf isDefinedAt x => pf(x)

          // not using extractors due to bug
          case s: dag.SplitParam =>
            dag.SplitParam(s.id, s.parentId)

          // not using extractors due to bug
          case s: dag.SplitGroup =>
            dag.SplitGroup(s.id, s.identities, s.parentId)

          case dag.Const(_) => graph

          case dag.Undefined() => graph

          case graph @ dag.New(parent) => dag.New(memoized(parent))

          case graph @ dag.Morph1(m, parent) => dag.Morph1(m, memoized(parent))

          case graph @ dag.Morph2(m, left, right) => dag.Morph2(m, memoized(left), memoized(right))

          case graph @ dag.Distinct(parent) => dag.Distinct(memoized(parent))

          case graph @ dag.AbsoluteLoad(parent, jtpe) => dag.AbsoluteLoad(memoized(parent), jtpe)

          case graph @ dag.RelativeLoad(parent, jtpe) => dag.RelativeLoad(memoized(parent), jtpe)

          case graph @ dag.Operate(op, parent) => dag.Operate(op, memoized(parent))

          case graph @ dag.Reduce(red, parent) => dag.Reduce(red, memoized(parent))

          case dag.MegaReduce(reds, parent) => dag.MegaReduce(reds, memoized(parent))

          case s @ dag.Split(spec, child, id) => {
            val spec2  = memoizedSpec(spec)
            val child2 = memoized(child)
            dag.Split(spec2, child2, id)
          }

          case graph @ dag.Assert(pred, child) => dag.Assert(memoized(pred), memoized(child))

          case graph @ dag.Cond(pred, left, leftJoin, right, rightJoin) =>
            dag.Cond(memoized(pred), memoized(left), leftJoin, memoized(right), rightJoin)

          case graph @ dag.Observe(data, samples) => dag.Observe(memoized(data), memoized(samples))

          case graph @ dag.IUI(union, left, right) => dag.IUI(union, memoized(left), memoized(right))

          case graph @ dag.Diff(left, right) => dag.Diff(memoized(left), memoized(right))

          case graph @ dag.Join(op, joinSort, left, right) => dag.Join(op, joinSort, memoized(left), memoized(right))

          case graph @ dag.Filter(joinSort, target, boolean) => dag.Filter(joinSort, memoized(target), memoized(boolean))

          case dag.AddSortKey(parent, sortField, valueField, id) => dag.AddSortKey(memoized(parent), sortField, valueField, id)

          case dag.Memoize(parent, priority) => dag.Memoize(memoized(parent), priority)
        }

        def memoizedSpec(spec: BucketSpec): BucketSpec = spec match { //TODO generalize?
          case dag.UnionBucketSpec(left, right) =>
            dag.UnionBucketSpec(memoizedSpec(left), memoizedSpec(right))

          case dag.IntersectBucketSpec(left, right) =>
            dag.IntersectBucketSpec(memoizedSpec(left), memoizedSpec(right))

          case dag.Group(id, target, child) =>
            dag.Group(id, memoized(target), memoizedSpec(child))

          case dag.UnfixedSolution(id, target) =>
            dag.UnfixedSolution(id, memoized(target))

          case dag.Extra(target) =>
            dag.Extra(memoized(target))
        }

        memotable.get(new DepGraphWrapper(node)) getOrElse {
          val result = inner(node)
          memotable += (new DepGraphWrapper(node) -> result)
          result
        }
      }

      memoized(this)
    }

    trait ScopeUpdate[S] {
      def update(node: DepGraph): Option[S]       = None
      def update(spec: BucketSpec): Option[S] = None
    }
    object ScopeUpdate {
      def scopeUpdate[S: ScopeUpdate] = implicitly[ScopeUpdate[S]]

      implicit def depGraphScopeUpdate = new ScopeUpdate[DepGraph] {
        override def update(node: DepGraph) = Some(node)
      }
      implicit def bucketSpecScopeUpdate = new ScopeUpdate[BucketSpec] {
        override def update(spec: BucketSpec) = Some(spec)
      }
    }

    trait EditUpdate[E] {
      def edit[T](inScope: Boolean, from: DepGraph, edit: (E, E), replace: DepGraph => T, retain: DepGraph => T): T
      def edit[T](inScope: Boolean, from: BucketSpec, edit: (E, E), replace: BucketSpec => T, retain: BucketSpec => T): T
      def bimap[T](e: E)(fg: DepGraph => T, fs: BucketSpec => T): T
    }
    object EditUpdate {
      def editUpdate[E: EditUpdate]: EditUpdate[E] = implicitly[EditUpdate[E]]

      implicit def depGraphEditUpdate: EditUpdate[DepGraph] = new EditUpdate[DepGraph] {
        def edit[T](inScope: Boolean, from: DepGraph, edit: (DepGraph, DepGraph), replace: DepGraph => T, retain: DepGraph => T): T =
          if (inScope && from == edit._1) replace(edit._2) else retain(from)
        def edit[T](inScope: Boolean, from: BucketSpec, edit: (DepGraph, DepGraph), replace: BucketSpec => T, retain: BucketSpec => T): T =
          retain(from)

        def bimap[T](e: DepGraph)(fg: DepGraph => T, fs: BucketSpec => T): T = fg(e)
      }
      implicit def bucketSpecEditUpdate: EditUpdate[BucketSpec] = new EditUpdate[BucketSpec] {
        def edit[T](inScope: Boolean, from: DepGraph, edit: (BucketSpec, BucketSpec), replace: DepGraph => T, retain: DepGraph => T): T = retain(from)
        def edit[T](inScope: Boolean,
                    from: BucketSpec,
                    edit: (BucketSpec, BucketSpec),
                    replace: BucketSpec => T,
                    retain: BucketSpec => T): T =
          if (inScope && from == edit._1) replace(edit._2) else retain(from)

        def bimap[T](e: BucketSpec)(fg: DepGraph => T, fs: BucketSpec => T): T = fs(e)
      }
    }

    /**
      * Performs a scoped node substitution on this DepGraph.
      *
      * The substitution is represented as a pair from -> to both of type E. The replacement is performed everywhere in
      * the DAG below the scope node of type S. Both S and E are constained to be one of DepGraph or BucketSpec by
      * the availability of instances of the type classes EditUpdate[E] and ScopeUpdate[S] as defined above.
      *
      * @return A pair of the whole rewritten DAG and the rewritten scope node.
      */
    def substituteDown[S: ScopeUpdate, E: EditUpdate](scope: S, edit: (E, E)): (DepGraph, S) = {
      import ScopeUpdate._
      import EditUpdate._

      case class SubstitutionState(inScope: Boolean, rewrittenScope: Option[S])

      val monadState = StateT.stateMonad[SubstitutionState]
      val init       = SubstitutionState(this == scope, None)

      type BucketSpecState = State[SubstitutionState, BucketSpec]
      type DepGraphState   = State[SubstitutionState, DepGraph]

      val memotable = mutable.Map[DepGraph, DepGraphState]()

      def memoized(node: DepGraph): DepGraphState = {

        def inner(graph: DepGraph): DepGraphState = {

          val inScopeM = for {
            state <- monadState.gets(identity)
            inScope = state.inScope || graph == scope
            _ <- monadState.modify(_.copy(inScope = inScope))
          } yield inScope

          def fn1(rep: DepGraph): DepGraphState = monadState gets identity map (_ => rep)
          def fn2(rep: DepGraph): DepGraphState = rep match {
            // not using extractors due to bug
            case s: dag.SplitParam =>
              for { state <- monadState.gets(identity) } yield dag.SplitParam(s.id, s.parentId)

            // not using extractors due to bug
            case s: dag.SplitGroup =>
              for { state <- monadState.gets(identity) } yield dag.SplitGroup(s.id, s.identities, s.parentId)

            case graph @ dag.Const(_) =>
              for { _ <- monadState.gets(identity) } yield graph

            case graph @ dag.Undefined() =>
              for { _ <- monadState.gets(identity) } yield graph

            case graph @ dag.New(parent) =>
              for { newParent <- memoized(parent) } yield dag.New(newParent)

            case graph @ dag.Morph1(m, parent) =>
              for { newParent <- memoized(parent) } yield dag.Morph1(m, newParent)

            case graph @ dag.Morph2(m, left, right) =>
              for {
                newLeft <- memoized(left)
                newRight <- memoized(right)
              } yield dag.Morph2(m, newLeft, newRight)

            case graph @ dag.Distinct(parent) =>
              for { newParent <- memoized(parent) } yield dag.Distinct(newParent)

            case graph @ dag.AbsoluteLoad(parent, jtpe) =>
              for { newParent <- memoized(parent) } yield dag.AbsoluteLoad(newParent, jtpe)

            case graph @ dag.Operate(op, parent) =>
              for { newParent <- memoized(parent) } yield dag.Operate(op, newParent)

            case graph @ dag.Reduce(red, parent) =>
              for { newParent <- memoized(parent) } yield dag.Reduce(red, newParent)

            case dag.MegaReduce(reds, parent) =>
              for { newParent <- memoized(parent) } yield dag.MegaReduce(reds, newParent)

            case s @ dag.Split(spec, child, id) => {
              for {
                newSpec <- memoizedSpec(spec)
                newChild <- memoized(child)
              } yield dag.Split(newSpec, newChild, id)
            }

            case graph @ dag.Assert(pred, child) =>
              for {
                newPred <- memoized(pred)
                newChild <- memoized(child)
              } yield dag.Assert(newPred, newChild)

            case graph @ dag.Observe(data, samples) =>
              for {
                newData <- memoized(data)
                newSamples <- memoized(samples)
              } yield dag.Observe(newData, newSamples)

            case graph @ dag.IUI(union, left, right) =>
              for {
                newLeft <- memoized(left)
                newRight <- memoized(right)
              } yield dag.IUI(union, newLeft, newRight)

            case graph @ dag.Diff(left, right) =>
              for {
                newLeft <- memoized(left)
                newRight <- memoized(right)
              } yield dag.Diff(newLeft, newRight)

            case graph @ dag.Join(op, joinSort, left, right) =>
              for {
                newLeft <- memoized(left)
                newRight <- memoized(right)
              } yield dag.Join(op, joinSort, newLeft, newRight)

            case graph @ dag.Filter(joinSort, target, boolean) =>
              for {
                newTarget <- memoized(target)
                newBoolean <- memoized(boolean)
              } yield dag.Filter(joinSort, newTarget, newBoolean)

            case dag.AddSortKey(parent, sortField, valueField, id) =>
              for { newParent <- memoized(parent) } yield dag.AddSortKey(newParent, sortField, valueField, id)

            case dag.Memoize(parent, priority) =>
              for { newParent <- memoized(parent) } yield dag.Memoize(newParent, priority)
          }

          val rewritten: DepGraphState = inScopeM flatMap (inScope => editUpdate[E].edit(inScope, graph, edit, fn1 _, fn2 _))

          if (graph != scope)
            rewritten
          else
            for {
              node <- rewritten
              _ <- monadState.modify(_.copy(rewrittenScope = scopeUpdate[S].update(node)))
            } yield node
        }

        memotable.get(node) getOrElse {
          val result = inner(node)
          memotable += (node -> result)
          result
        }
      }

      def memoizedSpec(spec: BucketSpec): BucketSpecState = {
        val inScopeM = for {
          state <- monadState.gets(identity)
          inScope = state.inScope || spec == scope
          _ <- monadState.modify(_.copy(inScope = inScope))
        } yield inScope

        val rewritten: BucketSpecState = inScopeM flatMap { inScope =>
          def fn1(rep: BucketSpec): BucketSpecState = monadState gets identity map (_ => rep)
          def fn2(rep: BucketSpec): BucketSpecState = rep match {
            case UnionBucketSpec(left, right)     => memoizedSpec(left) flatMap (nl => memoizedSpec(right) map (nr => UnionBucketSpec(nl, nr)))
            case IntersectBucketSpec(left, right) => memoizedSpec(left) flatMap (nl => memoizedSpec(right) map (nr => IntersectBucketSpec(nl, nr)))
            case Group(id, target, child)         => memoized(target) flatMap (t => memoizedSpec(child) map (c => Group(id, t, c)))
            case UnfixedSolution(id, target)      => memoized(target) map (UnfixedSolution(id, _))
            case Extra(target)                    => memoized(target) map (Extra(_))
          }
          editUpdate[E].edit(inScope, spec, edit, fn1 _, fn2 _)
        }

        if (spec != scope)
          rewritten
        else
          for (n <- rewritten; _ <- monadState.modify(_.copy(rewrittenScope = scopeUpdate[S].update(n)))) yield n
      }

      val resultM = for {
        preMemo <- editUpdate[E].bimap(edit._2)(memoized _, memoizedSpec _)
        result <- memoized(this)
      } yield result

      val (state, graph) = resultM(init)
      (graph, state.rewrittenScope.getOrElse(scope))
    }

    def foldDown[Z](enterSplitChild: Boolean)(f0: PartialFunction[DepGraph, Z])(implicit monoid: Monoid[Z]): Z = {
      val f: PartialFunction[DepGraph, Z] = f0.orElse { case _ => monoid.zero }

      def foldThroughSpec(spec: BucketSpec, acc: Z): Z = spec match {
        case dag.UnionBucketSpec(left, right) =>
          foldThroughSpec(right, foldThroughSpec(left, acc))

        case dag.IntersectBucketSpec(left, right) =>
          foldThroughSpec(right, foldThroughSpec(left, acc))

        case dag.Group(_, target, forest) =>
          foldThroughSpec(forest, foldDown0(target, acc |+| f(target)))

        case dag.UnfixedSolution(_, solution) => foldDown0(solution, acc |+| f(solution))
        case dag.Extra(expr)                  => foldDown0(expr, acc |+| f(expr))
      }

      def foldDown0(node: DepGraph, acc: Z): Z = node match {
        case dag.SplitParam(_, _) => acc

        case dag.SplitGroup(_, identities, _) => acc

        case node @ dag.Const(_) => acc

        case dag.Undefined() => acc

        case dag.New(parent) => foldDown0(parent, acc |+| f(parent))

        case dag.Morph1(_, parent) => foldDown0(parent, acc |+| f(parent))

        case dag.Morph2(_, left, right) =>
          val acc2 = foldDown0(left, acc |+| f(left))
          foldDown0(right, acc2 |+| f(right))

        case dag.Distinct(parent) => foldDown0(parent, acc |+| f(parent))

        case dag.AbsoluteLoad(parent, _) => foldDown0(parent, acc |+| f(parent))

        case dag.RelativeLoad(parent, _) => foldDown0(parent, acc |+| f(parent))

        case dag.Operate(_, parent) => foldDown0(parent, acc |+| f(parent))

        case node @ dag.Reduce(_, parent) => foldDown0(parent, acc |+| f(parent))

        case node @ dag.MegaReduce(_, parent) => foldDown0(parent, acc |+| f(parent))

        case dag.Split(specs, child, _) =>
          val specsAcc = foldThroughSpec(specs, acc)
          if (enterSplitChild)
            foldDown0(child, specsAcc |+| f(child))
          else
            specsAcc

        case dag.Assert(pred, child) =>
          val acc2 = foldDown0(pred, acc |+| f(pred))
          foldDown0(child, acc2 |+| f(child))

        case dag.Cond(pred, left, _, right, _) =>
          val acc2 = foldDown0(pred, acc |+| f(pred))
          val acc3 = foldDown0(left, acc2 |+| f(left))
          foldDown0(right, acc3 |+| f(right))

        case dag.Observe(data, samples) =>
          val acc2 = foldDown0(data, acc |+| f(data))
          foldDown0(samples, acc2 |+| f(samples))

        case dag.IUI(_, left, right) =>
          val acc2 = foldDown0(left, acc |+| f(left))
          foldDown0(right, acc2 |+| f(right))

        case dag.Diff(left, right) =>
          val acc2 = foldDown0(left, acc |+| f(left))
          foldDown0(right, acc2 |+| f(right))

        case dag.Join(_, _, left, right) =>
          val acc2 = foldDown0(left, acc |+| f(left))
          foldDown0(right, acc2 |+| f(right))

        case dag.Filter(_, target, boolean) =>
          val acc2 = foldDown0(target, acc |+| f(target))
          foldDown0(boolean, acc2 |+| f(boolean))

        case dag.AddSortKey(parent, _, _, _) => foldDown0(parent, acc |+| f(parent))

        case dag.Memoize(parent, _) => foldDown0(parent, acc |+| f(parent))
      }

      foldDown0(this, f(this))
    }

    final def size: Int = {
      import scalaz.std.anyVal._
      val seen = mutable.Set[DepGraph]()

      foldDown(true) {
        case n if !seen(n) =>
          seen += n
          1
      }
    }
  }

  class DepGraphWrapper(val graph: DepGraph) {
    override def equals(that: Any) = that match {
      case (that: DepGraphWrapper) => this.graph eq that.graph
      case _                       => false
    }

    override def hashCode: Int = System identityHashCode graph
  }

  object dag {
    sealed trait StagingPoint extends DepGraph
    sealed trait Root         extends DepGraph

    object ConstString {
      def unapply(graph: Const): Option[String] = graph match {
        case Const(CString(str)) => Some(str)
        case _                   => None
      }
    }

    object ConstDecimal {
      def unapply(graph: Const): Option[BigDecimal] = graph match {
        case Const(CNum(d))    => Some(d)
        case Const(CLong(d))   => Some(d)
        case Const(CDouble(d)) => Some(d)
        case _                 => None
      }
    }

    //tic variable node
    case class SplitParam(id: Int, parentId: Identifier) extends DepGraph {
      val identities = Identities.Specs.empty

      def uniqueIdentities = false

      def valueKeys = Set.empty

      val isSingleton = true

      val containsSplitArg = true
    }

    //grouping node (e.g. foo where foo.a = 'b)
    case class SplitGroup(id: Int, identities: Identities, parentId: Identifier) extends DepGraph {
      def valueKeys = Set.empty

      def uniqueIdentities = false

      val isSingleton = false

      val containsSplitArg = true
    }

    case class Const(value: RValue) extends DepGraph with Root {
      lazy val identities = Identities.Specs.empty

      def uniqueIdentities = false

      def valueKeys = Set.empty

      val isSingleton = true

      val containsSplitArg = false
    }

    class Undefined() extends DepGraph with Root {
      lazy val identities = Identities.Undefined

      def uniqueIdentities = false

      def valueKeys = Set.empty

      val isSingleton = false

      val containsSplitArg = false

      override def equals(that: Any) = that match {
        case that: Undefined => true
        case _               => false
      }

      override def hashCode = 42
    }

    object Undefined {
      def apply: Undefined = new Undefined
      def unapply(undef: Undefined): Boolean = true
    }

    case class New(parent: DepGraph) extends DepGraph {
      lazy val identities = Identities.Specs(Vector(SynthIds(IdGen.nextInt())))

      def uniqueIdentities = true

      def valueKeys = parent.valueKeys

      lazy val isSingleton = parent.isSingleton

      lazy val containsSplitArg = parent.containsSplitArg
    }

    case class Morph1(mor: Morphism1, parent: DepGraph) extends DepGraph with StagingPoint {
      private def specs(policy: IdentityPolicy): Vector[IdentitySpec] = policy match {
        case IdentityPolicy.Product(left, right) => (specs(left) ++ specs(right)).distinct // keeps first instance seen of the id
        case (_: IdentityPolicy.Retain)          => parent.identities.fold(Predef.identity, Vector.empty)
        case IdentityPolicy.Synthesize           => Vector(SynthIds(IdGen.nextInt()))
        case IdentityPolicy.Strip                => Vector.empty
      }

      lazy val identities = Identities.Specs(specs(mor.idPolicy))

      def uniqueIdentities = false

      def valueKeys = Set.empty

      lazy val isSingleton = false

      lazy val containsSplitArg = parent.containsSplitArg
    }

    case class Morph2(mor: Morphism2, left: DepGraph, right: DepGraph) extends DepGraph with StagingPoint {

      private def specs(policy: IdentityPolicy): Vector[IdentitySpec] = policy match {
        case IdentityPolicy.Product(left, right) => (specs(left) ++ specs(right)).distinct // keeps first instance seen of the id
        case IdentityPolicy.Retain.Left          => left.identities.fold(Predef.identity, Vector.empty)
        case IdentityPolicy.Retain.Right         => right.identities.fold(Predef.identity, Vector.empty)
        case IdentityPolicy.Retain.Merge =>
          IdentityMatch(left, right).identities.fold(Predef.identity, Vector.empty)
        case IdentityPolicy.Retain.Cross =>
          (left.identities ++ right.identities).fold(Predef.identity, Vector.empty)
        case IdentityPolicy.Synthesize => Vector(SynthIds(IdGen.nextInt()))
        case IdentityPolicy.Strip      => Vector.empty
      }

      lazy val identities = Identities.Specs(specs(mor.idPolicy))

      def uniqueIdentities = false

      def valueKeys = Set.empty

      lazy val isSingleton = false

      lazy val containsSplitArg = left.containsSplitArg || right.containsSplitArg
    }

    case class Distinct(parent: DepGraph) extends DepGraph with StagingPoint {
      lazy val identities = Identities.Specs(Vector(SynthIds(IdGen.nextInt())))

      def uniqueIdentities = true

      def valueKeys = parent.valueKeys

      lazy val isSingleton = parent.isSingleton

      lazy val containsSplitArg = parent.containsSplitArg
    }

    case class AbsoluteLoad(parent: DepGraph, jtpe: JType = JType.JUniverseT) extends DepGraph with StagingPoint {
      lazy val identities = parent match {
        case Const(CString(path))                     => Identities.Specs(Vector(LoadIds(path)))
        case Morph1(expandGlob, Const(CString(path))) => Identities.Specs(Vector(LoadIds(path)))
        case _                                        => Identities.Specs(Vector(SynthIds(IdGen.nextInt())))
      }

      def uniqueIdentities = true

      def valueKeys = Set.empty

      val isSingleton = false

      lazy val containsSplitArg = parent.containsSplitArg
    }

    case class RelativeLoad(parent: DepGraph, jtpe: JType = JType.JUniverseT) extends DepGraph with StagingPoint {
      // FIXME we need to use a special RelLoadIds to avoid ambiguities in provenance
      lazy val identities = parent match {
        case Const(CString(path))                     => Identities.Specs(Vector(LoadIds(path)))
        case Morph1(expandGlob, Const(CString(path))) => Identities.Specs(Vector(LoadIds(path)))
        case _                                        => Identities.Specs(Vector(SynthIds(IdGen.nextInt())))
      }

      def uniqueIdentities = true

      def valueKeys = Set.empty

      val isSingleton = false

      lazy val containsSplitArg = parent.containsSplitArg
    }

    case class Operate(op: UnaryOperation, parent: DepGraph) extends DepGraph {
      lazy val identities = parent.identities

      def uniqueIdentities = parent.uniqueIdentities

      def valueKeys = parent.valueKeys

      lazy val isSingleton = parent.isSingleton

      lazy val containsSplitArg = parent.containsSplitArg
    }

    case class Reduce(red: Reduction, parent: DepGraph) extends DepGraph with StagingPoint {
      lazy val identities = Identities.Specs.empty

      def uniqueIdentities = false

      def valueKeys = Set.empty

      val isSingleton = true

      lazy val containsSplitArg = parent.containsSplitArg
    }

    case class MegaReduce(reds: List[(TS1, List[Reduction])], parent: DepGraph) extends DepGraph with StagingPoint {
      lazy val identities = Identities.Specs.empty

      def uniqueIdentities = false

      def valueKeys = Set.empty

      val isSingleton = false

      lazy val containsSplitArg = parent.containsSplitArg
    }

    case class Split(spec: BucketSpec, child: DepGraph, id: Identifier) extends DepGraph with StagingPoint {
      lazy val identities = Identities.Specs(Vector(SynthIds(IdGen.nextInt())))

      def uniqueIdentities = true

      def valueKeys = Set.empty

      lazy val isSingleton = false

      lazy val containsSplitArg = {
        def loop(spec: BucketSpec): Boolean = spec match {
          case UnionBucketSpec(left, right) =>
            loop(left) || loop(right)

          case IntersectBucketSpec(left, right) =>
            loop(left) || loop(right)

          case Group(_, target, child) =>
            target.containsSplitArg || loop(child)

          case UnfixedSolution(_, target) => target.containsSplitArg
          case Extra(target)              => target.containsSplitArg
        }

        loop(spec)
      }
    }

    case class Assert(pred: DepGraph, child: DepGraph) extends DepGraph {
      lazy val identities = child.identities

      def uniqueIdentities = child.uniqueIdentities

      def valueKeys = child.valueKeys

      lazy val isSingleton = child.isSingleton

      lazy val containsSplitArg = pred.containsSplitArg || child.containsSplitArg
    }

    // note: this is not a StagingPoint, though it *could* be; this is an optimization for the common case (transpecability)
    case class Cond(pred: DepGraph, left: DepGraph, leftJoin: JoinSort, right: DepGraph, rightJoin: JoinSort) extends DepGraph {
      val peer = IUI(true, Filter(leftJoin, left, pred), Filter(rightJoin, right, Operate(Comp, pred)))

      lazy val identities = peer.identities

      def uniqueIdentities = peer.uniqueIdentities

      def valueKeys = peer.valueKeys

      lazy val isSingleton = peer.isSingleton

      lazy val containsSplitArg = peer.containsSplitArg
    }

    case class Observe(data: DepGraph, samples: DepGraph) extends DepGraph {
      lazy val identities = data.identities

      def uniqueIdentities = data.uniqueIdentities

      def valueKeys = Set.empty

      lazy val isSingleton = data.isSingleton

      lazy val containsSplitArg = data.containsSplitArg || samples.containsSplitArg
    }

    case class IUI(union: Boolean, left: DepGraph, right: DepGraph) extends DepGraph with StagingPoint {
      lazy val identities = (left.identities, right.identities) match {
        case (Identities.Specs(a), Identities.Specs(b)) => Identities.Specs((a, b).zipped map CoproductIds)
        case _                                          => Identities.Undefined
      }

      def uniqueIdentities = false

      def valueKeys = Set.empty // TODO not correct!

      lazy val isSingleton = left.isSingleton && right.isSingleton

      lazy val containsSplitArg = left.containsSplitArg || right.containsSplitArg
    }

    case class Diff(left: DepGraph, right: DepGraph) extends DepGraph with StagingPoint {
      lazy val identities = left.identities

      def uniqueIdentities = left.uniqueIdentities

      def valueKeys = left.valueKeys

      lazy val isSingleton = left.isSingleton

      lazy val containsSplitArg = left.containsSplitArg || right.containsSplitArg
    }

    // TODO propagate AOT value computation
    case class Join(op: BinaryOperation, joinSort: JoinSort, left: DepGraph, right: DepGraph) extends DepGraph {

      lazy val identities = joinSort match {
        case Cross(_) => left.identities ++ right.identities
        case _        => IdentityMatch(left, right).identities
      }

      def uniqueIdentities = joinSort match {
        case Cross(_) | IdentitySort => left.uniqueIdentities && right.uniqueIdentities
        case _                       => false
      }

      lazy val valueKeys = left.valueKeys ++ right.valueKeys

      lazy val isSingleton = left.isSingleton && right.isSingleton

      lazy val containsSplitArg = left.containsSplitArg || right.containsSplitArg

    }

    case class Filter(joinSort: JoinSort, target: DepGraph, boolean: DepGraph) extends DepGraph {
      lazy val identities = joinSort match {
        case Cross(_) => target.identities ++ boolean.identities
        case _        => IdentityMatch(target, boolean).identities
      }

      def uniqueIdentities = joinSort match {
        case IdentitySort | Cross(_) => target.uniqueIdentities && boolean.uniqueIdentities
        case _                       => false
      }

      lazy val valueKeys = target.valueKeys ++ boolean.valueKeys

      lazy val isSingleton = target.isSingleton

      lazy val containsSplitArg = target.containsSplitArg || boolean.containsSplitArg
    }

    /**
      * Evaluator will deref by `sortField` to get the sort ordering and `valueField`
      * to get the actual value set that is being sorted.  Thus, `parent` is
      * assumed to evaluate to a set of objects containing `sortField` and `valueField`.
      * The identity of the sort should be stable between other sorts that are
      * ''logically'' the same.  Thus, if one were to sort set `foo` by `userId`
      * for later joining with set `bar` sorted by `personId`, those two sorts would
      * be semantically very different, but logically identitical and would thus
      * share the same identity.  This is very important to ensure correctness in
      * evaluation of the `Join` node.
      */
    case class AddSortKey(parent: DepGraph, sortField: String, valueField: String, id: Int) extends DepGraph {
      lazy val identities = parent.identities

      def uniqueIdentities = parent.uniqueIdentities

      lazy val valueKeys = Set(id)

      lazy val isSingleton = parent.isSingleton

      lazy val containsSplitArg = parent.containsSplitArg
    }

    case class Memoize(parent: DepGraph, priority: Int) extends DepGraph with StagingPoint {
      lazy val identities = parent.identities

      def uniqueIdentities = parent.uniqueIdentities

      def valueKeys = parent.valueKeys

      lazy val isSingleton = parent.isSingleton

      lazy val containsSplitArg = parent.containsSplitArg
    }

    sealed trait BucketSpec

    case class UnionBucketSpec(left: BucketSpec, right: BucketSpec)     extends BucketSpec
    case class IntersectBucketSpec(left: BucketSpec, right: BucketSpec) extends BucketSpec

    case class Group(id: Int, target: DepGraph, forest: BucketSpec) extends BucketSpec

    case class UnfixedSolution(id: Int, solution: DepGraph) extends BucketSpec
    case class Extra(expr: DepGraph)                        extends BucketSpec

    sealed trait IdentitySpec {
      def canonicalize: IdentitySpec       = this
      def possibilities: Set[IdentitySpec] = Set(this)
    }

    case class LoadIds(path: String) extends IdentitySpec
    case class SynthIds(id: Int)     extends IdentitySpec

    case class CoproductIds(left: IdentitySpec, right: IdentitySpec) extends IdentitySpec {
      override def canonicalize = {
        val left2  = left.canonicalize
        val right2 = right.canonicalize
        val this2  = CoproductIds(left2, right2)

        val pos = this2.possibilities

        pos reduceOption CoproductIds orElse pos.headOption getOrElse this2
      }

      override def possibilities: Set[IdentitySpec] = {
        val leftPos = left match {
          case left: CoproductIds => left.possibilities
          case _                  => Set(left)
        }

        val rightPos = right match {
          case right: CoproductIds => right.possibilities
          case _                   => Set(right)
        }

        leftPos ++ rightPos
      }
    }

    sealed trait JoinSort
    sealed trait TableSort extends JoinSort

    case object IdentitySort extends TableSort
    case class ValueSort(id: Int) extends TableSort

    // sealed trait Join
    // case object IdentityJoin(ids: Vetor[Int]) extends Join
    // case class PartialIdentityJoin(ids: Vector[Int]) extends Join
    // case class ValueJoin(id: Int) extends Join
    case class Cross(hint: Option[CrossOrder] = None) extends JoinSort

    case class IdentityMatch(left: DepGraph, right: DepGraph) {
      def identities: Identities = (left.identities, right.identities) match {
        case (Identities.Specs(lSpecs), Identities.Specs(rSpecs)) =>
          val specs = (sharedIndices map { case (lIdx, _) => lSpecs(lIdx) }) ++
              (leftIndices map lSpecs) ++ (rightIndices map rSpecs)
          Identities.Specs(specs map (_.canonicalize))
        case (_, _) => Identities.Undefined
      }

      private def canonicalize(identities: Identities) = identities match {
        case Identities.Specs(ids) => Identities.Specs(ids map (_.canonicalize))
        case other                 => other
      }

      private val leftIdentities  = canonicalize(left.identities)
      private val rightIdentities = canonicalize(right.identities)

      private def intersects(a: IdentitySpec, b: IdentitySpec): Boolean =
        !(a.possibilities intersect b.possibilities).isEmpty

      private def union(a: IdentitySpec, b: IdentitySpec): IdentitySpec = (a, b) match {
        case (CoproductIds(_, _), CoproductIds(_, _)) =>
          (a.possibilities ++ b.possibilities).reduceRight(CoproductIds(_, _))
        case (CoproductIds(_, _), _) => a
        case (_, CoproductIds(_, _)) => b
        case _                       => a
      }

      private def findMatch(specs: Vector[IdentitySpec])(spec: (IdentitySpec, Int)): Option[(IdentitySpec, (Int, Int))] = {
        val idx = specs indexWhere { s =>
          intersects(spec._1, s)
        }
        if (idx < 0) None else Some((union(spec._1, specs(idx)), (spec._2, idx)))
      }

      private def matches = (leftIdentities, rightIdentities) match {
        case (Identities.Specs(a), Identities.Specs(b)) =>
          a.zipWithIndex flatMap findMatch(b)
        case (Identities.Undefined, _) | (_, Identities.Undefined) => Vector.empty
      }

      private def extras(identities: Identities): Vector[Int] = identities match {
        case Identities.Specs(ids) =>
          ids.zipWithIndex collect {
            case (id, index) if !(sharedIds contains id) =>
              index
          }
        case _ => Vector.empty
      }

      val (sharedIds, sharedIndices) = matches.unzip
      val leftIndices                = extras(leftIdentities)
      val rightIndices               = extras(rightIdentities)

      def mapLeftIndex(i: Int): Int = {
        val j = sharedIndices.unzip._1.indexOf(i)
        if (j < 0) leftIndices.indexOf(i) + sharedIndices.size else j
      }

      def mapRightIndex(i: Int): Int = {
        val j = sharedIndices.unzip._2.indexOf(i)
        if (j < 0) rightIndices.indexOf(i) + sharedIndices.size + leftIndices.size else j
      }
    }
  }
}

redpajama_set_name: RedPajamaGithub


"One Nation, Indivisible" features excerpts from The Sun's archives that speak to the current political moment.
Irrespective of human accomplishments and human folly, the sun will eventually run out of fuel, expand into a red giant, and vaporize the planet. Of course, something catastrophic could happen well before then: massive solar flares spewing murderous gamma rays into the atmosphere; a supervolcano bringing on a global ice age; a killer asteroid crashing into the earth. Actually the threat from outer space isn't as remote as it once seemed. Earth has been hit many times by asteroids; there's no doubt it will happen again. The very largest asteroids, capable of causing global climactic catastrophe, collide with the earth on the average of once every hundred thousand years. But even a smaller space rock could kill tens of millions of people if it struck a densely populated area — and there's a 1 percent chance of such an asteroid hitting the earth this century. Talk about a terrorist threat! And right now we're as clueless about how to deflect such a rock as we are about how to find a bomb in an airline passenger's underpants.
I will forever be haunted by the vision of those people hanging out the shattered portals of the upper floors of [the World Trade Center]. It is a beautiful windswept day, with an achingly blue sky. There are dozens of them waving white towels, flags of hope (the day was so lovely), waving, waiting for help. Those white flags, for some sad reason, reminded me of the scraps of paper, hastily scrawled notes that, they tell us, were found along the tracks where the trains bound for Treblinka, Buchenwald, and Auschwitz had passed in the night. . . .
Our reality has been profoundly changed by it. We will never see clouds of debris, people in high windows, and bearded men with Middle Eastern accents the same way again.
Can there be any end to our fears now?
Unless you're from one of the targeted immigrant communities [in the U.S. after 9/11], you have no idea what's going on there. Streets are empty. Stores and businesses are closed because people have been detained or deported, or their customers have disappeared, or residents are just afraid to go out. These used to be bustling, vibrant neighborhoods, but if you don't live there or have reason to visit, you would never know the impact homeland-security policies have had. In the two months following September 11, more than twelve hundred Muslim, Arab, and South Asian men were rounded up for indefinite detention. Then, starting in September 2002, there was "special registration," where noncitizen males from Islamic countries were required to register with the INS.
In the early sixties, my family lived in Alabama, the "Heart of Dixie," or so the state motto says. I was taught to take pride in the fact that our city did not fall to the Union Army during the Civil War: General Lee may have surrendered, but we never did.
One evening my father came home from work at the meatpacking plant and announced that there was to be a cross-burning in our neighborhood that night. A white man from out of town had brought his black wife to live here, and the Ku Klux Klan would not stand for such an affront.
After we'd finished our supper, Dad took down his shotgun and gave it a cleaning. Mom pitched a fit. She didn't think Dad should be involved with this mess; after all, he was a married man with a family. Dad left her crying on the porch as he climbed in his old Dodge pickup and drove off.
Dad came home the next morning after the sun had risen, tired and bleary-eyed. Mom clucked around him like a hen over a lost chick, but pride sparkled in her hazel eyes.
There had been no cross-burning the night before, because my father had spent a sleepless night sitting on a porch and waiting, shotgun across his lap, beside a man he didn't know, to face a flock of cowards wearing sheets whom he knew far too well.
I went to the Jordan Downs housing project in Watts right after the Rodney King police verdict had sparked riots in 1992. There was still smoke rising from burning buildings. I was going as a representative of the NAACP Legal Defense Fund, where I'd been for maybe five months. I went straight from court that day, and I waltzed into the Grape Street gym looking like a black Republican, wearing more pearls than Barbara Bush. [Laughter.] And a group of women looked at me as if to say, What are you doing here? I said I wanted to help. They told me to go help their men, and they directed me to a trailer. Two rival gangs were inside brokering a truce, but I didn't know that, so I just went and stupidly knocked on the door: pearls, pumps, business suit, and all. I said to the man who answered, "I'm Connie Rice from the NAACP Legal Defense Fund, and I'm here to help you." Inside I could see black men with red bandannas and blue bandannas seated around a table — red on one side, blue on the other. The Crips and the Bloods. I probably looked like an extraterrestrial to them. They slammed the door in my face.
Peace is active, not passive. You can't sit back and wait for peace to come to you. You must work for it. You must shake off your apathy and demand it. This is not always easy in a culture of war, such as we have in the U.S., but it is necessary.
It is clear that war makes great demands on its participants. We need to think of peace in the same way. Peace is not the absence of war or the space between wars; it is a goal to be achieved by actively demanding that the world's governments find nonviolent means of settling disputes.
My first job after college was with an environmental-activist organization. We went door-to-door armed with an environmental "scorecard" of the various congressional, senate, and assembly members, registering people to vote and inviting them to join our organization. Our staff members were mostly white, middle-class folks like myself. There was much talk about diversifying, but our attempts were feeble and unproductive.
One night a young black man joined us. As was usual, he was dropped off in a neighborhood with a seasoned canvasser to learn the ropes. At the end of the night I picked them up and found his trainer highly agitated and the young man sitting quietly on the curb. The trainer pulled me aside and told me door after door had been shut in their faces, and someone had called the police to report "suspicious persons" in the neighborhood — something that had never happened to him before.
The young man on the curb was shaken. I went to talk with him, but I had trouble finding the right words. How do you apologize for or explain prejudice and ignorance? His voice broke as he told me how much he wanted to work with us, but that there was no way he could handle that kind of rejection. I said something like, Not all communities are like this, but in my heart I knew this neighborhood was typical. Seeing the slight tremble in his chin as he struggled to hold on to his composure, realizing he was unable to meet my eyes, I felt for a moment what it must be like to wear his shoes — and it hurt.


Does anyone now what is the rate to applying Asulox on a pretty damaged, full of weed st.augustine grass. I think I have all the species available of weeds in my yard!
quote:Originally posted by gonecrazy:Does anyone now what is the rate to applying Asulox on a pretty damaged, full of weed st.augustine grass. I think I have all the species available of weeds in my yard! Any sugestions.
ASULOX is no longer labeled for residential use. Another one of those great products stripped from the hands of professionals because of the miss-application and most often over application by homeowners getting there hands on it. Read the label, it will tell you exactly what to do. If you can't figure it out by the label then you shouldn't be using it. Sorry. Yes, a sore subject for me. I hope you figure it out without killing your lawn or more importantly hurting the enviroment.
Since losing Asulox, the best way to repair your St. Augustine lawn is to kill all the crabgrass with Roundup (or similar herbicide), then replant with grass plugs. The herbicide will also kill the intermingled St. Augustine, but replanting with grass plugs will solve that.
The plugs are available in all St. Augustine varieties (Floratam, Delmar, Palmetto, Raleigh, etc.), so select the type that you have (likely Floratam). They're available at Home Depot and other garden centers; there are pamphlets there with directions, but it's not hard. The pluggin tool makes it easier (& faster).
I have to disagree with RMahanJr's response. 1)Crabgrass does not have rhizomes and therefore doesn't need to be killed first inorder to prevent the plant from growing back from underground plant parts. 2)If you kill the crabgrass with Roundup and plug you will most likely have trouble keeping crabgrass from smothering the plugs that will germinate from viable seed that will be in the dead crabgrass areas. 3) You will remove a lot of seed by removing the crabgrass live and resodding. While this takes more effort and expense than plugging, you have a better chance of getting rid of the crabgrass with resodding.
I have had good luck using common backing soda. At first I sprinkled the soda on the affected areas which worked, but found that mixing it with water (about 1 cup/gal) was easier to apply. The area will turn brown but it is the crabgrass and not the good stuff!


There will be a memorial Mass for Cecil Leon Wachsman at noon Saturday at St. Teresa of Avila Catholic Church.
Mr. Wachsman died May 13, 2002, in Reno. He was born Nov. 24, 1938, in Wichita Falls, Texas, to Hartwig "Hardy" Henry and Mary Barbara Kocks Wachsman.


text:
A mix of clouds and sun during the morning will give way to cloudy skies this afternoon. High 44F. Winds light and variable..
Cloudy skies. Low near 30F. Winds light and variable.
Nita Johnson/CNHI Kentucky
The recent return in popularity of vinyl records was nothing new to Laurel County native Gary Onkst who operates a music store at Flea Land Flea Market. Onkst has spent his adult life working in the entertainment business, from music stores to video stores and now to his own music and memorabilia store.
Country classics have a large section in Onkst's booth, Ticket to Ride Music and Memorabilia, along with rock, reggae, jazz, grunge, show tunes and other music genres.
CNHI Kentucky's Heart of the Bluegrass series.
HEART OF THE BLUEGRASS: Onkst is the music man
Nita Johnson
CNHI Kentucky
LONDON, Ky. -- The return in popularity of vinyl records to the music scene was no big deal for Laurel County native Gary Onkst.
"Records never died for me," he said with a laugh. "I've always sold a lot of records."
Onkst has the evidence to prove his point -- his booth in Aisle B of Flea Land Flea Market at 235 Barbourville Road, London, is stocked with 45s, LPs, cassettes and CDs. The only type of music not featured in his music store is the now-obsolete 8-track tapes that rose to popularity in the 1970s but soon faded into history when CDs hit the market.
But for this lifelong music lover, music survives the best and worst of times and trends, and Onkst keeps that close in mind and heart in his everyday life.
"I've always been in the entertainment field," he said. "I worked for a video company and recording company. When the video phased out, I worked for a record store."
He cites Asher's Music Store on East Fourth Street in London as well as another music store known as Sounds Around Town.
Many music lovers are often musicians themselves, but Onkst quickly counteracts that myth.
"I can't play any instrument. I took guitar lessons once, but I was so bad the instructor quit showing up," he said, laughing.
What he can play is a variety of music, ranging from the sounds of the 1960s to the early millennium sounds. At 63, Onkst still remembers when the rock and roll era launched in America.
"Do you remember where you were on Feb. 9, 1964?" he asked. "I remember it very well. I was glued to the TV watching The Beatles' American debut on 'The Ed Sullivan Show.' My eyes were glued to the TV. I saw these guys with long hair dancing, and I thought to myself, 'They are good. I like them.'"
His love for the British band only intensified as its popularity grew across the world and Onkst never phased from his adoration for the amazing talent of the Fab Four. He makes no secret of his admiration for their talent and the wide range of music they recorded as a group as well as their individual musical contributions to the music world. In fact, his booth is named after one of their songs -- "Ticket to Ride Music and Memorabilia."
And if he asks you who your all-time favorite group is, you'd better think carefully about the booth you're standing in, who operates the booth and even what the name of the booth is before you answer.
"If I ask that, you're always supposed to say The Beatles," Onkst emphasized.
His love for The Beatles is obvious just walking by his booth in Flea Land. A locked glass cabinet holds a guitar that was signed by all four Beatles -- Paul McCartney, Ringo Starr, John Lennon and George Harrison -- from a concert in 1966. Next to that is a copy of the Cincinnati Post with photos and headlines of The Beatles' concert in August 1964 at Cincinnati Gardens.
Other collectible and sentimental celebrity-signed posters and pictures also adorn this booth that gets the attention of shoppers with its wide array of music playing each day the flea market is open for business.
But music isn't all rock and roll, and Onkst carries a variety of musical selections for any music lover. Jazz, country, reggae and show tunes also fill the shelves of music available, making those in the 60-plus age range recall those Saturday evenings of childhood when the family would gather around the black and white TV to enjoy the sounds of the big bands under the direction of Glenn Miller, Count Basie, Louis Armstrong and the great leaders of jazz and swing music.
Then are those many records of the original country sound -- Hank Williams Sr., Dolly Parton, Patsy Cline and Gene Autry.
The melodic crooners of the 1960s, such as Pat Boone, Bing Crosby, Dean Martin and others who made their way into the TV show hosts and guests are also available for those wishing to go back to the purer days of music.
While he quickly admits that rap music has never been his forte, Onkst does realize the popularity of some of that music, although his own stock is somewhat slim in those categories. But the grunge sounds that brought artists such as Kurt Cobain and other members of Nirvana to stardom are an easily found section of his music selection that includes Alice in Chains, Soundgarden and Pearl Jam. So are the sounds of the 1960s groups that range from Janis Joplin to The Temptations and other groups that marked the soft rock and easy listening categories of music.
Although he readily admits that he is a die-hard fan of the Beatles, Onkst knows the other genres of music are just as important to his customers as his own personal tastes. That's why his store is stocked with nearly any type of music imaginable.
"If you want it and I don't have it, I'll help you find it," he said.
For those wishing to have more than the music, Onkst also carries posters and other memorabilia that emphasize music and musical performances. One, for example, is a 6-foot signed poster of Raquel Welch. Other posters immortalize music icons such Pink Floyd, Kurt Cobain and Elvis, while the King of Rock and Roll offers an entire section in the music selections.
"I also sell on Amazon and eBay," he said.
Whatever the musical preference, Onkst is always ready and willing to help his customers find the music they want and need, while he does what he likes best -- talking and selling music.
"I'm the luckiest guy in the world," he said. "I've always been in the entertainment business and I've never had a job I didn't like. I love music. I just can't imagine a world without music."
Gary Onkst


text:
TRESPASSER SOUNDTRACK
One of the grandest things about the game was the music itself, filling the player with awe, tension, and fear; even when the malfunctioning visuals on the screen did not.
The entire soundtrack is available to download below. There are two different presentations to choose from. CD covers also available.
Complete Soundtrack MP3
Complete Soundtrack FLAC
This is the most complete presentation using the best available sources (including the one below). It has been edited in an order faithful to the game's events and made to hear each track individually.
Bill Brown's Promo M4A
Bill Brown's original promotional album, featuring most of the soundtrack; but it is missing some standout tracks. It is set up to have the tracks overlap so it can be heard in a suite-like fashion. It has been left untouched in its original M4A format.
Special thanks to Bill Brown for providing and giving permission for his promotional soundtrack. All audio files from this page are copyrighted by Bill Brown unless otherwise notated. Complete Soundtrack includes tracks edited from the Dreamworks Interactive PC Game Trespasser- The Lost World: Jurassic Park.
Be sure to also check out TresCom's interview with Bill Brown.
"...Spielberg himself commented on how impressive this relatively unknown composer puts music together."- 3DSoundSurge Interview with Brady Bell of Dreamworks Interactive
"The musical score is top notch but only plays at key areas. Hearing some fast music as you fall off of a cliff into a pack of three raptors will really get you going."- 3DGaming
"The sound is top notch... The music kicks in at certain times and is a compelling score similar to breathtaking scenes from the movies... [the music] adds effectiveness in displaying importance to certain areas."- Gamer's Alliance
"The sound effects and score are haunting echoes of John Williams' film scores."- GamePro
"The music is one of Trespasser's best accomplishments."- Gamasutra
Complete Soundtrack Track List:
01- DreamWorks Logo Music (0:24)
02- Trespasser Intro (0:59)
03- Apartment - Crash (1:05)
04- Ambient Jungle Road (0:42)
05- Ambient Uneasy (0:40)
06- Reveal Dinosaur Plains (1:02)
07- Mayan Face - Crashed Jeep (0:32)
08- Plantation House (0:35)
09- T-Rex Encounter 2 (0:39)
10- Hunter's Camp (0:39)
11- Beach Ambient (0:44)
12- Industrial Jungle Reveal (0:35)
13- Industrial Jungle Ambient (0:33)
14- Industrial Jungle Ambient 2 (0:37)
15- Raptor Chase 3 (0:41)
16- Crashed Helicopter (0:27)
17- Crashed Smuggler Plane (0:25)
18- Town Ambient 1 (0:33)
20- Hammonds House (1:02)
21- Albertasaur Booms (0:37)
22- Raptor Attack 1 (0:34)
23- Opening The East Gate (0:37)
24- Traveling Music 1 (0:34)
27- Forest Walk (0:34)
28- Reveal of Landscape (0:33)
29- Pine Valley (0:55)
31- Hidden Village (0:44)
32- Geothermal Plant (0:42)
33- Geothermal Control Room (0:28)
34- Island Power Restored (0:35)
36- Harbor Ambient (0:35)
37- Complex Ambient (0:34)
38- InGen Biotech Building (0:30)
39- InGen Computer Building (1:05)
40- Mayan City Ambient (0:38)
41- Mayan Temple Theme (0:46)
42- View Of The Island (0:54)
44- Trespasser Theme (0:47)
45- Summit Victory (End Credits) (1:29)
46- Plantation House (Version 1) (0:53)
47- Crashed Helicopter (Version 2) (0:21)
48- Mayan Face - Crashed Jeep (Version 2) (1:11)
49- Raptor Chase (0:41)
50- Beach Ambient (Game Version) (0:35)
51- Hammond's House (Slow) (1:10) - Edit for Jurassic Time
52- Overture- Atmospheres (Monolith Source Music) (2:51) - Composed by Gyorgy Ligeti
53- View Of The Island (Piano) (0:43) - Performed by Philip Abaji
54- Trespasser Intro (Game Version) (1:47)
55- Apartment - Crash (Game Version) (1:08)
56- Win Game (0:42)
Email: jurassictimememoir@gmail.com
jurassictime.trescom.org
© 2020 by Derrick Davis
HAMMOND MEMOIR
JURASSIC MEMOIRS
LINKS, ETC.


•	Provide a platform for sharing the research ideas before distinguished experts.
•	Provide a platform to research scholars to meet domain experts to discuss research ideas, methodologies and career issues.
•	Provide a platform to make formal and informal networks with their peers from other institutions.
This workshop is for keen researchers and management faculties in the area of Management studies and related areas of General Management.