Monopolies can exist under several situations but as you will come to understand, the detrimental effects are usually minimal when they do exist, except under very specific situations. Sadly, the political system and main stream media have misled the American people into believing government can and must be there to break these monopolies up when they do happen. We will review some very costly mistake initiated under corrupt motivations, of course hidden by the passing of time.
The New-Product/New Company Monopoly. The most famous case of a New Product Monopoly is the history of Alcoa Aluminum but there are many others. AIcoa was the company that invented the process for making aluminum, so initially there wasn't anybody competing with them, because nobody knew how to make aluminum before Alcoa started making it. It was by technological innovation, a monopoly.
Not surprisingly, Alcoa was able to make huge profits prior to other competitors entering into the market. We saw this same thing with cell phones and calculators in their infancy as new products. They were very expensive when they first came out and today some companies are given them away for free, as marketing incentives.
Of course, the government jumped into they picture telling the public they needed to do something. What do you do with a new product monopoly, however was the question? If you break up a company and nobody else can make the product, whose is going to make the product or how do you break it up? Now, here is the really interesting part of this story and why Free Market monopolies, discussed below, don't last very long. When ever you have excess money being created by a business, i.e. profit, somebody is going to figure out how to compete against that company to get a part of it. In the case of Alcoa, a group of employees from within the company itself, broke off and formed a new company, obviously quitting Alcoa to compete for the excess profits. Soon others also entered the market as the uses for this very light metal increased. Today, much of an airplane and many products are made out of aluminum, so many companies around the world, now compete in this market. This story shows that true monopolies will disappear on their own accord as profits rise in any industry and others come in to compete. How much market share a company has, can get or may lose in the future is one major issue that ever company must constantly evaluate for their specific market.
The most important elements or factor(s) involving monopolies; is if and when they harm consumers, workers or when they try to stifle competition, neither of which New-Product or Small-Town monopolies, can really accomplish. There are just not enough people affected to be of any significance, as we have already learned, someone will usually enter into the marketplace, if large enough, when there is price gouging and excess profits. This is common sense, right?
With New Products monopolies, the government also provides patent or copywrite protections as an incentive to spend the time, energy and money to invent and create new products. This can create a problem as we are seeing in the pharmaceutical drug industry. Because of the tremendous amounts of money involved, the industry is pushing politicians and even Judges to extend the patent protection periods beyond the original guidelines established by law. Then we wonder why drug costs are so high. Obviously, those in government are allowing big business and money to manipulate and influence society to the detriment of the majority. This happened with anti-trust legislation as well.
This brings up and allows me to segue into another form of monopoly, those granted by legislative Acts at the various levels of government. It can be as simple as a garbage company getting from a local municipality exclusive territory for garbage collections or a central bank like the Federal Reserve Bank enacted into law in 1913 by an Act of Congress. These are potentially the most dangerous type of monopoly because competition is prohibited and exclusive operating power is granted. Common sense tells us that granting a monopoly to one group or company is exacted what the Sherman Anti-trust Act was supposed to do, protect the public from Robber Barron's overcharging. How does government justify granting a true monopoly to a very financially powerful group of bankers and investors?
Why those in government think it's good to have a monopoly in a public setting and a bad idea for a privately-owned company is interesting. Or are the wealthy special interests just able to manipulate the political system to gain special benefits and privileges? It hard to know since no competition is legally allowed to see if one entity would do a better job at a cheaper price than the ones granted the monopoly.
Once again, history tells us different stories as to how monopolies have affected our lives. The government and main stream media tell us one thing and academics and common sense often tell us another.
As an example, within just 16 years of the Federal Reserve Act of 1913 (FRA), our society was in the deepest and longer Depression in U.S. history, exactly what the FRA was supposed to stop from happening. Bank runs, another situation the Federal Reserve Bank was supposed to stop, put many banks out of business with vast numbers of depositors losing their money under bankruptcy protections and the allowance by the Federal Reserve Bank (FRB), to fractional lend; lending out more money by using existing deposits as collateral to borrow money from the FRB. We're not really told that it was the FRB's own policies of allowing fractional lending is what caused million of Americans to lose all of their money held by the FRB's member banks.
One of the more recent best-selling books on the subject is The Creature From Jekyll Island, the non-fiction story about how Paul Warburg, other banking interests and U.S. Government officials met at Jekyll Island, GA, the hunting estate then owned by J.P. Morgan, to plan for the enactment of the Federal Reserve Act. Why was it secretly orchestrated and thus kept from most of the publics eye is a huge question? Some employees involved did leak it, but conspiratorial news back then travels at much slower speeds. Is it coincidental that the XVI Amendment allowing direct taxation on income without apportionment as well as the Revenue Tax Act of 1913 also passed that very year? That an income tax is the 2nd platform, and a central bank the 5th platform of communism and that the Zionist movement supporting these social polices was being financed by major world banking and corporate interests?
It is both more devious and brilliant than you can imagine. Corporate welfare long a favored social policy for wealthy special interest, started in the early 1800s with the western railroad expansion, expanded under the guise of general welfare, for both more infrastructure and defence spending. The bankers were of course guaranteed their interest payment on the loans they gave these companies by the U.S. taxpayers who paid for all the government spending. The central banking monopoly guaranteed their participation in the creating of money, lending guidelines and the determination of interest rates. Now this is where it's good to know a little about finance and economics. A central bank can slow down economic activity by simply raising interest rates and requiring more reserves from the member banks as they have done multiple times through history. Individual and businesses are less likely to borrow money when interest rates are high and more likely to borrow when interest rates are lower. Common sense, right? Additionally, the member banks cannot borrow as much themselves when they must put up more reserves as collateral, thus they have less money to lend.
So far, we have only reviewed those monopolies that do exist most often in society, but have minimal effects as do Small Town or New Product monopolies or can have profound affects if they are Government Granted ones.
As was previously briefly noted, true free market monopolies are very rare and if and when they exist, they are short lived but here's the problem. A true free market hasn't really exists for very lone, giving way to greater and greater government interventions after the overthrow of the European Monarchs in the late 1700s and early 1800s. Many smaller countries were still gaining their independence, well into the 20th century. Governments do not give up their powers and interventions easily.
The U.S. Federal Government started out with very few interventionists social polices with the entire Federal Government being paid for by only luxury import taxes. Not one single penny was paid by a Citizen of the United States to the Federal Government and what minimal taxes there was were assessed and collected by the State Governments. Consider that the best way of telling how capitalistic a nation is, is by determining the total taxes and redistribution of wealth social policies. The less the size and scope of government though redistributive taxes, the more capitalistic and vice versa, they more taxes and redistribution of wealth programs the more "socialistic" your society is considered. In generalized context this is my favored method of looking at the effects socio-economics has on society and how we define them. One could surely argue, that there are always various interests trying to manipulate the market for greater profits. how people do it is the key. If a company gets a local municipality to give it a garbage collection contract, they have just gotten a government granted monopoly to pick up the trash from all the Citizens in that community. That's obviously not a free market monopoly nor is generally the local sewer plant, unless it is a private sector company with no government restriction on who they can do business with and consumers are free to contract with others or have their own sewer system, both of which occur in our society. There are many smaller privately owned communities that own their own sewer treatment plants and people agree when they buy into the community to utilize the utility or provide their own. These are usually enforced with property covenants and restrictions as part of the deed when you purchase a property and the homeowners exercise management and financial control over the operations of the sewer plant. The point I'm trying to make is there are often two way to skin a cat and it doesn't have to be by the government. However, government and special interest will often try to intervene, such as the local garbage company noted above despite constitutional prohibitions legally prohibited Municipalities from granting monopolies to private companies.


text:
Марти́нівка — село в Україні, у Тростянецькому районі Сумської області. Населення становить 456 осіб. Орган місцевого самоврядування — Мартинівська сільська рада.

Після ліквідації Тростянецького району 19 липня 2020 року село увійшло до Охтирського району.

Географія
Село Мартинівка знаходиться на березі річки Олешня, вище за течією на відстані 1 км розташоване село Золотарівка, нижче за течією примикає село Олешня (Охтирський район). Поруч проходить залізнична гілка.

Історія
За даними на 1864 рік у казеній та власницькій слободі Олешанської волості Лебединського повіту Харківської губернії мешкало 784 особи (366 чоловічої статі та 418 — жіночої), налічувалось 129 дворових господарств, існувала православна церква, відбувалось 2 ярмарки на рік.

Станом на 1914 рік село було центром окремої, Мартинівської волості, кількість мешканців зросла до 1377 осіб.

Адміністративний устрій
Мартинівська сільська рада (Офіційний сайт http://martynovkasr.at.ua ) до якої входять село Артемо-Растівка та село Золотарівка.

Примітки

Джерела
 Історія міст та сіл України. Том Сумская область. стор. 579-580
 Погода в селі Мартинівка

Лебединський повіт
Села Сумської області
Населені пункти Охтирського району

redpajama_set_name: RedPajamaWikipedia


This course provides test engineers and test managers with the essential ideas, processes, tools and skills they need in order to set themselves on a path for true testing professionalism. This hands-on course covers the major test design techniques with lecture and exercises. The course provides the methodology behind a successful testing program and covers a wide range of issues, from those related to the individual tester to those related to the testing department as a whole. The testing process is presented, both through theory and hands-on exercises that follow an example project, including the difficult tasks of tracking and presenting tests results. Creation of a test environment and test automation is also covered, along with system development lifecycles and how they affect testing.
Created by Rex Black, past president of the International Software Testing Qualifications Board, past president of the American Software Testing Qualifications Board, and co-author of the International Software Testing Qualifications Board Foundation Syllabus, this course is ideal for testers and test teams preparing for certification. It covers the International Software Testing Qualifications Board Foundation Syllabus 2011 and has been accredited by an ISTQB-recognized National Board.
Solutions are provided for the exercises performed in the class, along with two mock exams, 120 sample questions covering every learning objective in the Syllabus, copies of the ISTQB Foundation Syllabus 2011 and Glossary, detailed advice on how to prepare for the exam, and more.
Have at least a minimal background in either software development or software testing, such as six months experience as a system or user acceptance tester or as a software developer.
Testers, Test Analysts, Test Managers, Test Leads, Project Managers, Business Analysts, Developers, any person in ICT with an interest in quality assurance.
The course runs for three days. Each day is about 360 minutes of class time, from 9:00 to 5:00. For accredited course offerings, materials are covered as described. For custom courses, materials may be deleted, added, or expanded upon as needed.
The class materials include an extensive bibliography of books related to software testing, project management, quality, and other topics of interest to the test professional.


For this week's class homework, I continued my enjoyable struggle with the dip pen. I also realized I don't really know how to draw water hitting the ground (and I didn't sketch that part beforehand, so my failed attempt was in permanent ink). Ah well. Not my best, but I think the class will enjoy it, since it's been raining all week, and will probably rain most of the weekend.


Now, I'm all about taking personal responsibility to donate to chairitable organizations. And, I'm also all about having fun! Is there a better way to accomplish both? Thanks to my golfing partners yesterday, too… God knows my game needs work, but you three gave me some great tips for improvement!


text:
using namespace std;

unsigned long fibonacci(unsigned long index, unsigned long *hash){
    if (index == 0) {
        return 0;
    }
    else if(index == 2 || index == 1){
        return 1;
    }
    else{
        if (hash[index -1] != 0 && hash[index -2] != 0) {
            return hash[index - 1] + hash[index - 2];
        }
        else if(hash[index -1] != 0){
            return hash[index - 1] + fibonacci(index -2, hash);
        }
        else if(hash[index -2] != 0){
            return fibonacci(index - 1, hash) + hash[index - 2];
        }
        else{
            return fibonacci(index - 1, hash) + fibonacci(index -2, hash);
        }

    }
}
int main(){
    clock_t begin = clock();
    unsigned long count = 0;
    unsigned long index = 0;
    unsigned long hash[200000] = {0};
    while(count < 1000){
        unsigned long number;
        if (hash[index] != 0) {
            number = hash[index];
        }
        else{
            number = fibonacci(index, hash);
            hash[index] = number;
        }
        cout<<number<<endl;
        stringstream ss;//create a stringstream
        ss << number;//add number to the stream
        count = ss.str().size();
        cout<<"Count: "<<count<<" at index "<<index<<endl;
        index++;
    }

    clock_t end = clock();
    double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;

    cout<<"Time elapse: "<<elapsed_secs<<" seconds"<<endl;
    return 1;
}

redpajama_set_name: RedPajamaGithub


text:
Imagining Other Histories: Pop Culture/American Culture Conference
Wednesday, September 9, 2009 - 8:51am
Southwest Texas Pop Culture Association/American Culture Association
Imagining Other Histories: The SW/TX PCA/ ACA in the area of Historical Fiction invites papers on the role of history and alternate history in fiction. To what extent have fiction writers, poets, filmmakers, myth makers, and other producers of pop culture bent the paths of history into different directions, into ur worlds, friendlier worlds, bleak worlds, parallel worlds, idealist worlds? Take, for example, the way that the reality of African American history was initially omitted from standard American historical accounts and the paths of history were bent toward the hegemony of a White world.
Frances Hodgson Burnett's THE SECRET GARDEN AT 100 1/10/2010
Joe Sutliff Sanders and Jackie C. Horne
Call for Papers: Frances Hodgson Burnett's The Secret Garden at 100
In honor of the 100th anniversary of Frances Hodgson Burnett's The Secret Garden, Jackie C. Horne and Joe Sutliff Sanders are soliciting essays for a proposed volume in the Children's Literature Association's Centennial Studies Series. The series seeks to reexamine children's classics from a contemporary perspective. All critical and theoretical approaches are welcome. Possible topics include, but are not limited to, the following:
11/12-13 Home/sickness: Desire, Decay, and the Seduction of Nostalgia
Tuesday, September 8, 2009 - 11:24pm
English Graduate Organization at University of Florida
The University of Florida's 9th annual English Graduate Organization conference will explore nostalgia, focusing on the contradictory relations among desires for recovered pasts as well as deliberate attempts to manipulate the present through representations of the past. Of particular interest will be the extent to which both nostalgia and the desire for utopia are linked to historical trauma, as textual manifestations of an extratextual cause.
Kinky Klingon and Asexual Androids: Exploring Sexuality and Gender in Star Trek (edited book)
Tuesday, September 8, 2009 - 9:28pm
Maryanne Fisher, PhD, Dept. of Psychology, and Women and Gender Studies Program, St. Mary's University, Halifax, Canada
The world of Star Trek has been a pervasive and extensive part of North American culture, starting with the classic television series of the 1960s and presently encompassing the blockbuster hit movie. There have been six television series (The Original Series, The Animated Series, The Next Generation, Deep Space Nine, Voyager, and Enterprise), eleven feature films, books, comics and countless paraphenalia. In the world of Star Trek, sexuality and gender have been presented to viewers in various ways, using the relationships we develop with the characters to impact our interpretations and perspectives with respect to these concepts.
Literary Studies and the Affective Turn Roundtable (9/30/09; NEMLA 4/7/10-4/11/10)
Rachel Greenwald Smith
Literary Studies and the Affective Turn Roundtable
41st Anniversary Convention, Northeast Modern Language Association (NeMLA)
Montreal, Quebec - Hilton Bonaventure
African and African Diaspora Studies (AADS) Dissertation Fellowship - Due Friday, December 18, 2009
African and African Diaspora Studies (AADS) Program, Boston College
Boston College's African and African Diaspora Studies Program (AADS) is proud to announce the inaugural year of its dissertation fellowship competition. Scholars working in any discipline in the Humanities or Social Sciences with projects focusing on any topic within African and/or African Diaspora Studies are eligible. We seek applicants pursuing innovative, preferably comparative, projects in dialogue with critical issues and trends within the field.
This 2010/2011 fellowship includes a $30,000 stipend, health insurance, a $1,500 research budget, and a fully equipped office. The fellow must remain in residence for the 9-month academic year, deliver one public lecture, and teach one seminar course.
[UPDATE] Redefining Masculinity in 20th-Century British Popular Fiction and Culture; Deadline: Sep. 30, 2009.
NEMLA 2010
This panel will examine redefinitions of masculinity that challenge and intersect with global and national relations. Since conceptions of British masculinity had been shaped by a longstanding culture of empire and its agenda, the shift from an imperial to a decolonized Britain and the impact of the World Wars make the 20th-century a particularly ripe period for inquiries into concomitant reformulations of masculinity in popular culture and literature.Genres may include adventure tales, comics, war/espionage fiction, graphic novels, sci-fi, fantasy, and film. Please submit a 300 word abstract to mcartt@sage.edu.
UPDATE--CFRP--Mothering and Migration Conference
Tuesday, September 8, 2009 - 10:15am
Association for Reseach on Mothering
Association for Research on Mothering (ARM) and the University of Puerto Rico are hosting a conference on
Mothering and Migration:
(Trans)nationalisms, Globalization, and Displacement
February 18-20, 2010, University of Puerto Rico, Río Piedras, Puerto Rico
Click here to see the full CFP.
"Hogar, Dulce Hogar": An Exploration...of "Home" 9/21 Toronto 6-9 October 2010
Tuesday, September 8, 2009 - 9:26am
Latin American Studies Association (LASA)
Topic: "Hogar, Dulce Hogar": An Exploration into the Latin American/Latino Conceptualization and Experience of "Home"
Abstracts are invited for a proposed WORKSHOP on the topic of "Home" to take place at the XXIX International Congress of the Latin American Studies Association (LASA) on October 6-9, 2010 in Toronto, Canada. The theme of the conference is "Crisis, Response, and Recovery" (see http://lasa.international.pitt.edu/eng/congress/index.asp).
'Truthiness' Across Cutures, Vol. 1 No. 1, Autumn 2009
Synaesthesia: Communication Across Cultures / Graduate School of Intercultural Communication, Okinawa Christian University
Presently receiving & reviewing submissions for the Autumn 2009 issue
Authors are asked to consider and/or critically discuss any novel definitions of or new perspectives on 'truthiness' in light of cultures. Authors may also choose to re-negotiate the concept of 'culture' in light of what passes as truth.
We are seeking work rigorous in its scholarship yet accessible in its style to audiences somewhat wider than highly trained specialists in the social sciences, particularly in areas such as applied-linguistics, communication, media studies, semiotics, rhetoric, or literature.
Papers accepted for publication in the online journal will receive subsequent reviews for the publication of future collected and bound volumes.
Poetry, Politics, and Pictures in the Nineteenth Century
From 'The Charge of the Light Brigade' to 'The White Man's Burden', from Honoré Daumier's lithographs to the Chartist poetry of the Northern Star, the politics of the nineteenth century both shaped and were shaped by poetry and images.
This interdisciplinary conference at the University of Sheffield will address such questions as: how do the images and poetry of the nineteenth century reflect or challenge British and European politics of their day? How do nineteenth-century politics intersect with aesthetics to create new theories and practices of art? What kind of correlation might there be between political representation and the representation of politics in word and image?
Feb 2010 North Georgia Arts and Letters Conference
Monday, September 7, 2009 - 8:15pm
North Georgia College and State University
North Georgia Arts and Letters Conference 2010:
What are the potential benefits and challenges of the growing relationship between the United States and China?
Myth & Fairy Tale Pop Culture
Southwest/Texas Popular & American Culture Associations 31st Annual Conference
Myth and Fairy Tale Call for Papers
Abstract/Proposals by 15 December 2009
Albuquerque, NM February 10-13 2010
Hyatt Regency Albuquerque
330 Tijeras
Panels now forming on topics related to all areas of myth and fairy tale and their connections to popular culture.
CfP: Call for Chapter Abstracts for the Book "The Internet & Surveillance"
Christian Fuchs
PDF version of CfP: http://fuchs.uti.at/wp-content/uploads/2009/09/CfP_Internet_Surveillance...
Editors: Christian Fuchs, Kees Boersma, Anders Albrechtslund, Marisol Sandoval
Supported by COST: European Cooperation in Science and Technology (http://www.cost.esf.org, COST Action Living in Surveillance Societies (LiSS, IS0807), Working Group 2: Surveillance Technologies in Practice
Women's Voices, Women's Connection at CEA 2010 (11/1/2009, 3/25-27/2010)
Carol Osborne/Women's Connection, College English Association
Call for Papers, Women's Connection at CEA 2010
Annual Conference | March 25-27, 2010 | San Antonio, Texas
Sheraton Gunter Hotel; 209 East Houston Street, San Antonio, TX 78205
PCA/ACA 2010 CONFERENCE / March 31-April 3 / Brazilian Popular Culture Call for Papers
Popular Culture Association / American Culture Association
BEMVINDOS!
PCA/ACA 2010 CONFERENCE
March 31-April 3, St. Louis, Missouti
Brazilian Popular Culture Call for Papers
We invite you to submit a proposal on aspects of Brazilian popular culture. Papers may include, but are not limited to, the following topics:
Soap operas and video games
Brazilian popular music
The body and the world of fashion
Afrobrazilian culture and tourism
Cities of Brazil as exotic places
Brazilian cinema
Brazilian carnival and the politics of identity
Literatura de Cordel
Oysters and Snails: Love & Sex in the Ancient World on Screen (11/1/09; 11/11-14/10)
Cynthia Miller/Film & History
"Oysters and Snails: Love & Sex in the Ancient World on Screen"
2010 Film & History Conference: Representations of Love in Film and Television
Hyatt Regency Milwaukee
www.uwosh.edu/filmandhistory
Second-Round Deadline: November 1, 2009
AREA: "Oysters and Snails: Love & Sex in the Ancient World on Screen"
Pro Patria Mori: Patriotism in Film & Television
"Pro Patria Mori: Patriotism in Film and Television"
2010 Film & History Conference: Representation of Love in Film and Television
AREA: Pro Patria Mori: Patriotism in Film and Television
Sex and Love in Asian Contexts (11/1/09; 11/11-14/10
"Sex and Love in Asian Contexts"
AREA: "Sex and Love in Asian Contexts"
Things of Love and the Love of Things (11/1/09; 11/11-14/10)
AREA: "Things of Love and the Love of Things"
2010 Film and History Conference: Representations of Love in Film and Television
Second Round Deadline: November 1, 2009
Vampire Love
"Vampire Love"
Lust in Space: Love in Science Fiction Film and Televisoin
"Lust in Space: Love in Science Fiction Film and Television"
Loving the Machine: Human-Machine Relationships in Film and Television
"Loving the Machine: Human-Machine Relationships in Film and Television"
Lovers on the Side: Tramps and Rogues in Film and History
"Lovers on the Side: Tramps and Rogues in Film and History"
AREA: Lovers on the Side: Tramps and Rogues in Film and History
Love and Violence: Action Heroes
"Love and Violence: Action Heroes"
AREA: Love and Violence: Action Heroes
Love Thy Leader: Charisma, Attraction, and Love Toward Figures of Identification (11/1/09; 11/11-14/10)
"Love Thy Leader - Charisma, Attraction, and Love toward Figures of Identification"
Area: "Love Thy Leader - Charisma, Attraction, and Love toward Figures of Identification"
Love, Marriage, and a Baby Carriage: Bonding and Parenthood in Film and Television (11/1/09; 11/11-14/10)
"Love, Marriage, and a Baby Carriage: Bonding and Parenthood in Film and Television"
AREA: Love, Marriage, and a Baby Carriage: Bonding and Parenthood in Film and Television
Love in the Golden Age of Television (11/1/09; 11/11-14/10)
"Love in the Golden Age of Television"
AREA: Love in the Golden Age of Television
Call for Registrations: Africans in Europe in the Long Twentieth Century: Transnationalism, Translation and Transfer
Monday, September 7, 2009 - 11:46am
School of Cultures, Languages and Area Studies, University of Liverpool, UK
AFRICANS IN EUROPE IN THE LONG TWENTIETH CENTURY: TRANSNATIONALISM, TRANSLATION AND TRANSFER
School of Cultures, Languages and Area Studies
Our Monsters, Ourselves - NEMLA 2010 Montreal, Quebec
Monday, September 7, 2009 - 8:48am
Lizzie Harris McCormick / NEMLA
Our Monsters, Ourselves
Following the line of thought that societies' monsters in many ways define them, "Our Monsters, Ourselves" hopes to open the discussion of the ways monsters in contemporary North American Anglophone fiction and film have come to represent the tacit panics, problems and pleasures of their specific historical moment. Papers representing work explaining monster/moment dialectics ranging from Steven King's 1989 "The Dark Half" to the contemporary Twilight and True Blood series will be read with equal interest. 200-400 word abstract to ourmonstersourselves@gmail.com by September 15th.

redpajama_set_name: RedPajamaCommonCrawl


text:
Beast Digital
Helping clients win in the contest of ideas.
Eric Cullen
Follow @ericbcullen
80 M Street SE
Eric Cullen has served in official and political capacities for five members of Congress and provided communications services to dozens of campaigns for over a decade. A native of Wisconsin, he resides in Washington, DC.
Prior to joining BEAST, Eric built and maintained a successful client base as a voter contact mail and general political consultant, working in federal and state level races across the country. He served as Deputy Campaign Manager to Barbara Cubin's final reelection campaign in Wyoming and as press secretary to George Nethercutt's US Senate campaign in Washington state. He has twice served as a Press Secretary in the US House. Eric began his career in politics on an early reelection campaign of his hometown Congressman, Paul Ryan.
Eric is a graduate of the University of Wisconsin where he earned a BA in History and served as Editor in Chief of the Badger Herald.
We send a carefully curated monthly update about digital politics, personal brand, and the smart things we're reading.
©2020 Beast Digital All rights reserved.


It takes somehow tough procedures to receive an immigration immigration green card even by getting married to get it. Learn some knowledge about the immigration green card process will help your way and receive the best conclusion.
In case you come to USA with a K-1 fiancé visa or a K-3 passport then it normally requires several years waiting or you may use a legal professional but it will cause you spend a lot more cash. Attorney is a great way to consult about this issue, so it will much better for you to get an immigration immigration green card instead of entering the Usa with these types of visas.
The quickest way to be granted as a fully permanent citizen of USA is to get marriage and fill all the paperworks there. The nonnative people need to reside in the country and fill all the agreements to get their objective.


text:
Q: Trouble accessing FTP internally I am currently running OS X Server 4. I have multiple websites (virtual hosts) set up with it. Lets call them domain1.com and domain2.com.
Internally, they are both being run off of the same IP. Let's say 192.168.0.5.
When I try to access the ftp server for domain1.com, sometimes I get the files for domain2.com, and vice versa.
However, this only occurs internally. When I access the servers from their domain name on an external internet connection, the FTP connection will always go to the correct server.
The host file on my client that is accessing the FTP connection has:
192.168.0.5     domain1.com
192.168.0.5     domain2.com

That allows me to connect internally to my websites. Is there something else I have to add to the hosts file in order to connect properly to the right site? As it is currently, it is a crapshoot whether or not I can edit my files from another machine on the same network.

redpajama_set_name: RedPajamaStackExchange


text:
Rolling Rains Report
Precipitating Dialogue on Travel, Disability, and Universal Design
Leader Profiles
"Authenticity" requires Accessibility
By Scott Rains on October 15, 2010 5:21 PM | 0 Comments
The following comes from Ethical Traveler. We were pleased to see Kerala's kettuvalam's included but note that their deck plans - as well as the site plans of several of the sites featured in this book do not allow for travelers with disabilities.
Of course, these environments provide challenges - but it the responsibility of all design to be inclusive in order to be responsible and socially sustainable.
Book Nook: In Search of the Authentic Ecolodge
Editor's Note: The following review was written by Annika Hipple and originally appeared on Ethicaltraveler.org. The foreward to Hitesh Mehta's new book was written by STI Board Member Costas Christ. Hitesh will soon be setting out on a worldwide book tour, so look for him in a book store near you. You can watch a short promotional video on his new book by clicking here.
With all the green buzzwords flying around these days, it can be hard for travelers to know what to trust. How do you know if a tourism business is truly sustainable? How can you be certain that an ecolodge is really "eco"? What kinds of criteria should you be looking at?
Enter Hitesh Mehta, a Kenyan-born architect and landscape architect who has traveled the world seeking to answer these very questions. The result is his new book, Authentic Ecolodges, which presents 36 lodges that Mehta considers to be among the best of the best.
Mehta is an acknowledged expert in the field - he's been referred to as an "ecolodge guru" - who has worked on ecodesign projects around the world and is a longtime member of the executive board of The International Ecotourism Society. Authentic Ecolodges is the outcome of a three-year, 46-country odyssey during which Mehta personally visited and evaluated all of the lodges included in the book, along with several others that did not make the cut.
With its coffee table format, stunning photographs and alluring descriptions, Mehta's book will delight both travelers and design aficionados, but in many ways, it's what's behind the book that's most interesting. Mehta's efforts to systematically define what makes a lodge "eco" offer guidance for travelers seeking authentic experiences and inspiration for planners seeking to develop new properties that minimize impacts on the environment and maximize benefits for local people.
Although most of the analytical background is left out of the book, Mehta outlines his basic methodology in his introduction. His definition of an ecolodge - developed though 10 years of research and interviews with professionals and stakeholders in a variety of ecotourism-related fields - is as follows: "a two- to 75-room, low-impact, nature-based, financially sustainable accommodation facility that helps protect sensitive neighboring areas; involves and helps benefit local communities; offers tourists an interpretive and interactive participatory experience; provides a spiritual communion with nature and culture; and is planned, designed, constructed and operated in an environmentally and socially sensitive manner."
Based on this definition Mehta developed a checklist of criteria that any lodge must satisfy in order to be considered "authentic." The lodges are scored based on these criteria and given a rating indicated with butterfly symbols.
According to Mehta, one thing that is unique about his project is that it is the first time "in the history of hotel-book writing and certification" that a single person has personally visited every included property and evaluated them according to a single set of criteria. He hopes that the rating system he developed will be used by travelers, architects, and others involved or interested in ecotourism.
Mehta explains, "There are two main reasons I have done this book: to create environmental and social awareness amongst travelers, professionals and researchers around the world and to celebrate the brilliant work of people on the ground - craftspersons, lodge owners etc. - people who would normally not make it in the glossy magazines and books like the so-called 'star architects.'"
Authentic Ecolodges will be released by HarperCollins on November 2, 2010. Preorder discounts are are available from Amazon.com and barnesandnoble.com. The book is also available from www.authenticecolodges.com and any bookstore.
This article originally appeared in Ethicaltraveler.org.
Career & Continuing Education
Futureproofing with Universal Design
If you don't build Universal Design in front the start at least build with it as a possible future option:Russ…
By Scott Rains | Comments (0)
Inclusion in Tourism: Time to Decide
New Zealand held its Inaugural Access Tourism Conference recognising the significance of the growing accessible tourism market.The Auckland University of…
The following comes from Ethical Traveler. We were pleased to see Kerala's kettuvalam's included but note that their deck plans…
WC on Wheels: The Universal Design for Better Living Trailer
A grant from the Iowa Department of Elder Affairs is appearing at shows and fairs across Iowa and beyond.…
Reframing Your Travel Expectations: Imagine Your Condition as a Two-Year Old Child - By Liz Hamill Scott
To RollingRains.com readers from travel author Liz Hamill Scott:Last week I read Scott's posts and comments on universal design, the…
Turismo Inclusivo en Argentina (Spanish)
Assiste la Jornada de Turismo Accesible en CESYT, San Isidro. Últimos días para inscribirse. Cupos limitados.Para más información: marketing@cesyt.net…
"80 % of Baby Boomers Desire THIS!"
Ashesville Real Estate Journal reports:From the Opinion Research Corporation for AARP, a "baby boomers" majority said they intend to stay in a one-level home, relocate…
FlyDubai - Well, actually don't. They discriminate against PwD!
This news from the Seattle Times: A blind American traveler says he was stopped from getting on a flight…


You can use Additional fields for entry forms of already created events.
On "Additional fields" page you can first check the "WRE ID" checkbox (1) if you are organizing a WR Event. Then click the "Add new custom field" button (2) for further Additional fields.
Field name: This is how you want the field to be named.
Enabled: You can any time check or uncheck this checkbox. In case it is disabled this Additional field will not be visible on the entry form.
Field type: Here you can choose between Drop down, Text and Checkbox types.
Apply fee to this field: Check this if you want to charge fee for items in this field.
Description: This is an explanation of the field which can be seen by runners when they point their mouse over custom field column in entry form. Often this is left blank.
After you fill in the necessary data, don't forget to Update the form (2).
If you chose Text type of Additional field you will only have to write default value, that is what competitors will see when they open Entry form (1). Usually this is left blank.
Display text (1) - that is the text that will appear in drop down menu for that particular value.
Max number of competitors (2) - This is only used when you want to set the upper limit of competitors who can choose this option. For example, you have space for 80 competitors to lodge in the gym hall, so you want to limit this option to 80. When this number is reached all the following competitors will not be able to opt it.
Fee (3) - If you checked "Enable fee to this field" you will have to write a value here 0-XY.
Value (4) - this is the value for Export purposes. If you will process this data in some other application you might want to set a value here. You can also leave it blank.
Default value (5) - this is the default value that is set on the entry form, when competitor opens it.
When you setup all the boxes, don't forget to Update the form (6).
If you chose Checkbox type of Additional field you will need to Check/Uncheck Default value (1). For example if you expact that the majority of competitors will want to have this checkbox checked you may as well set the default value as checked.
Then, if you opted for fees in this Additional field, you will have to set them up in "Fee unchecked / checked" boxes.
When you are finished do not forget to Update the form (3).


No 1 in a series about sourcing a brochure for your business.
When you're first thinking about a new brochure, there are a number of important decisions you need to make to ensure a smooth, successful project.
This is the first thing I would discuss with you about your brochure, because it helps me understand whether you have firm ideas about your brochure, or whether further discussion is needed.
Size-wise, are you thinking about an A4 size, something smaller or a non-standard size? Obviously, one of the limiting factors on brochure size is your budget.
Brochure size and shape may also be dictated by the purpose of the brochure and how it will be distributed. For example, a DL-sized brochure is the same size as a piece of A4 paper folded twice. So it fits into a business size envelope. DL is ideal for a brochure or flyer that will be mailed.
It's also a good size for a standard 'take-one'. A 'take-one' is a stand that sits on a desk or counter and displays your brochure to passing customers.
An over-sized brochure can have special impact. On the downside, it's difficult to file and so may be more likely to end up in the circular filing cabinet under the desk. An odd-sized or shaped brochure can stand out from the crowd. I have brochures in my portfolio that are square, some with pop-up sections, one that is hexagonal and others with curved or wavy edges.
If you need ideas about the ideal size of brochure to fit your purpose, give me a call and we can explore some options together. Alternatively have a look at the section of my website that displays my brochure work.
The next article in this series will look at the importance of choosing a printer early on in the process.
I hope this helps you get your brochure plans another step down the road. Please call me if you'd like further advice, or to have a chat about how I can help you with your brochure.
« Snail mail in the age of email.


Another one of our simple, classic beer mug designs, the Maritime looks best with an amber pour and frothy head. This is a 15 oz. glass, so there's plenty of room for your custom logo to be deep etched, decaled or imprinted with your custom logo. 12 per case- order now, and speak with one of our experts to get a quote on a design for your brand.


Jet Blue has launched an ab initio training program that it hopes will help to diversify its hiring pool and also give the company control over a pilot's training from start to finish. The four-year program, which has been in the works since last year, is now accepting online applicants, at a cost of $125,000.
The ideal applicant, the company says, would already have a college degree, but no previous flight experience is required. Applicants will undergo a range of tests and assessments, and 24 will be offered a slot in the program. They will be trained in a series of small groups, with the first group expected to begin training late this summer. Graduates are guaranteed a job with JetBlue.
JetBlue said it will partner with CAE to help deliver the curriculum. Students will begin with four weeks of training with JetBlue in Orlando, then continue at CAE's flight academy in Phoenix for 30 weeks, to complete their private pilot training. They will return to JetBlue to train in the Embraer 190 and earn their ATP. After another 12 weeks in Phoenix, trainees will earn their CFI, then work at CAE as salaried instructors until they log 1,500 hours. Once all requirements are met, the trainee will become a new hire at JetBlue, and join a six-week orientation class to become an E190 first officer. "We believe this is going to be an important part of how airlines are going to create pilots in the future," CAE President Nick Leontidis told The Associated Press. The pilots union for JetBlue does not support the plan, saying JetBlue should instead hire pilots working at regional airlines, who currently get passed over. The program is the first of its kind for a U.S. airline. Similar programs overseas generally are free for the applicants.
The application portal is now online. Applicants can submit an application, then are given information about completing application essays. If they are then invited to complete the assessment, a $200 fee is required. Applicants must then obtain a first-class FAA medical certificate to qualify for an on-site interview.


text:
Productivity & Performance
Mind & Meaning
Biohacking has been gaining in popularity in recent years, but what is it—and should you be doing it?
Much like hacking a computer, biohacking refers to interfering with a set process—and in this case, that set process is the human body.
Biohacking can take many forms, some very hi-tech and others very simple, but they all involve using technology or science to create improvements in the physical body.
In its simplest form, biohacking includes using a FitBit, Apple Watch or other wearable device to monitor your health, or implementing strategic dietary changes to increase energy and vitality. At its most extreme, it includes technological implants and genetic engineering.
Should you be doing it?
Like all things, it's a matter of personal choice, but if you are interested in optimising your health and increasing your energy (and who isn't?), biohacking can be a useful approach.
Tony Robbins is a big proponent of biohacking, and uses it himself to help him maintain a peak state.
"The possibilities [of biohacking] are endless," Tony says, "but they are all rooted in the idea that we can change our bodies and our brains, and that by doing so we can ultimately become smarter, faster and better as human beings."
Sounds pretty good, doesn't it? Let's get started!
Biohacking for Beginners
For your general health: Red Light Therapy
Most of us in the UK are well aware that our bodies need Vitamin D to function efficiently (and keep our mood up!) since our environment provides so little of it during the winter months.
You might have also heard of a SAD (Seasonal Affective Disorder) lamp—red light therapy is the next step up.
Red light therapy uses light wavelengths between 600 and 900 nanometers (nm), which are then absorbed by the skin to a depth of about 8 to 10 millimeters (at which point your mitochondrial chromophores absorb the photons). This activates a number of nervous system and metabolic processes.
Studies show it can help relieve pain, reduce inflammation and restore function, and it's often used to treat skin conditions such as eczema. Though it's currently only available through the NHS for certain skin conditions, there are private clinics in the UK where red light therapy is available.
For your bones: Exercise for Bone Strength
You might already be aware of how important exercise is for bone health. The NHS points out, "weight-bearing exercise and resistance exercise are particularly important for improving bone density and helping to prevent osteoporosis."
Tony advises using a computer-based system designed specifically for maximising bone health called Osteostrong. If you can't afford the hefty price tag, try working a variety of strength, aerobic and weight-bearing exercise into your workout routine.
The NHS has more information on how the different types of exercise can help prevent osteoporosis and bone density loss.
For your diet: Intermittent Fasting
Intermittent fasting involves limiting your food intake to within a certain window of time every day. A popular version is the 16/8 method, which involves limiting your daily period of eating to 8 hours – such as eating from 10am to 4pm, or 1pm to 9pm, and fasting the rest of the time.
Source: tonyrobbins.com
The idea behind intermittent fasting is to optimise your health by taking advantage of the benefits of being in a 'fed' state and a 'fasted' state. In a fed state, when you are digesting and absorbing food, your insulin levels are high and your body is focused on digestion.
In a fasted state, which starts 3-5 hours after you've last eaten, your body is allowed to rest. Your body's levels of growth hormones increase as much as five times, which increases your metabolic rate, and your blood sugar lowers and stored fat becomes more accessible to burn. Fasting might also help reduce LDL cholesterol (bad cholesterol) which is a major risk factor for heart disease.
Intermittent fasting has also been linked to improved cognitive function, cancer prevention, increased cellular waste removal and lower levels of inflammation.
If you're interested in trying it out, Tony recommends starting with a 14 hour fasting period for one week.
"With this fast, you can eat from 10am to 8pm, then fast the next 14 hours," Tony says. "Then, when that becomes comfortable, cut back to an eating period of 11am to 8pm for a week and so on until you reach a fasting period of 16 hours."
For your brain: Functional Music
Our brains process an extraordinary amount of input every single second, and sometimes all that noise can make it really difficult to concentrate. Cue functional music!
"Brain activity can be measured in a wave-like pattern and determines if you feel alert, sleepy, relaxed or stressed," says Tony.
"One of the most reliable ways to change your brainwaves is through a consistent sound wave. Audio entrainment, a form of music biohacking, uses binaural beats and tones to synchronise with your brain waves and induce a meditative, relaxed state."
Try a focused programme like brain.fm, or use one of your favourite playlists to help you chill out!
For your mindset: Gratitude
No emotion has the power to change your mindset quite like gratitude. Adopting an attitude of gratitude can help you to maintain a positive mindset in your daily life.
Taking a biohacking approach to gratitude means building a practice of taking stock and giving thanks into your routine.
Tony recommends trying these three simple steps:
Start a gratitude journal: every day, write down three to five things you're grateful for that day. It will help your reframe your day and put it into a positive light.
Take a gratitude walk: pay attention to the world around and give thanks and send positive energy to every living thing you see.
Write a weekly letter of gratitude: every week, pick someone who has helped you and write them a note to let them know how much they mean to you. From family members and friends, to your coworker who bought you a coffee, no act of kindness is too small to say thank you!
From small steps to big changes, biohacking offers many ways to try and make improvements in your life.
As Tony says, "your body will thank you for all the hard work you've put in to making it the best it can be."
More from Tony Robbins:
The Key to Limitless Energy
Change Your Story, Change Your Life
16 Limiting Beliefs Holding You Back
Want more content like this?	Sign up for our weekly newsletter!
Previous Post What is Biohacking? Next Post Why Women Need to Be Financially Confident
Sign up to recieve our weekly Newsletter
UPW Terms and Conditions
Success Resources UK Ltd
2nd Floor, St Clare House
30-33 Minories London
EC3N1DD United Kingdom
Follow @SuccessResUK
https://www.pinterest.com/srseminars/
Copyright 2021 Success Resources . Terms & Conditions . Privacy Policy . Cookie Policy


Posted by Anonymous on March 13, 2014. Brought to you by menupages.
Yum ! Great food, good service and beautiful atmosphere.
Posted by Anonymous on June 27, 2013. Brought to you by menupages.
City of New York is located at 52 Duane St Fl 10, New York, NY. This location is in the Civic Center neighborhood. This business specializes in Travel Agents.
Posted on May 03, 2014. Brought to you by hoovers.


Have the equipment that is best for your business without capital expenditure.
upgrade either in whole or in part to suit the needs of your changing business.
the effects of inflation, making cash flow forecasting and budgeting simpler.
your future payments will be.
equipment without an increase in your payments.
obtained, or cost savings made, by having the new equipment.
expense for tax purposes, often providing tax savings.


Have you made Bean Burrito Casserole?
1. This may be made without the brown rice; use 5 cups mashed cooked and drained beans instead.
2. The sauce can also be used in other Mexican recipes.
3. To make the enchilada sauce combine all ingredients in a saucepan and cook, stirring constantly, until the mixture boils and thickens, about 7 minutes.
4. Preheat the oven to 350 degrees. Spread 1 cup of the enchilada sauce in the bottom of a covered casserole dish.
5. Take one tortilla at a time and spread some beans, rice, and scallions down the center.
6. Roll up and place seam-side-down in the casserole dish.
7. Repeat until all ingredients are used. Pour the remaining enchilada sauce over the rolled-up tortillas, cover, and bake for 30 minutes.
This recipe is high in Vitamin A with 44% of your daily recommended intake per serving. This recipe is high in Vitamin C with 35% of your daily recommended intake per serving. This recipe is a good source of Vitamin E with 11% of your daily recommended intake per serving.
This recipe contains potential food allergens and will effect people with Wheat, Beans, Gluten, Tomato, Rice, Corn, Spring Onion, Garlic, Hot Pepper, Onion allergies.


Astronomy was thus the cradle of the natural sciences and the starting point of geometrical theories. The stars themselves gave rise to the concept of a 'point'; triangles, quadrangles and other geometrical figures appeared in the constellations; the circle was realized by the disc of the sun and the moon. Thus in an essentially intuitive fashion the elements of geometrical thinking came into existence.
In George Edward Martin, The Foundations of Geometry and the Non-Euclidean Plane (1982), 72.
Most of the arts, as painting, sculpture, and music, have emotional appeal to the general public. This is because these arts can be experienced by some one or more of our senses. Such is not true of the art of mathematics; this art can be appreciated only by mathematicians, and to become a mathematician requires a long period of intensive training. The community of mathematicians is similar to an imaginary community of musical composers whose only satisfaction is obtained by the interchange among themselves of the musical scores they compose.
In Anton Z. Capri, Quips, Quotes and Quanta: An Anecdotal History of Physics (2007), 151. The author described Lanczos invited up on the platform at the Trieste Conference to celebrate Dirac's 70th birthday, and gave an impromptu quote by Lanczos speaking about Pauli. The author followed that unrelated topic with another beginning, "Here is a comment by Lanczos…" followed by the subject quote above.


text:
Q: how to use autoresizing and autolayout and change its default behaviour? I have one parentview as Scrollview.I have added  two subviews view1,view2 on that scrollview.
But I need to do the following in same time

*

*when I increase the height of one of my subviews view1 in runtime,parentview height should be changed using either Autolayout or Autoresizing

*when I increase the height of one of my subviews view2 in runtime,parentview height should not be changed either Autolayout or Autoresizing

*When I change the height of parent view in time, it should not affect its subviews.
Any help please?

A: In Autolayout:

*

*Establish a minimum distance between view1 and top border of superview.

*Establish fixed (minimum) distance between view1 and bottom border of superview.

*Leave out these minimum distances for view2.

A: There is no need to use -layoutSubviews. When increasing subview view1's height, you can update scroll view's content size. When increasing subview view2's height or scroll view's height, does nothing else.


text:
Reception for Watercolor Society of N.C. 69th Juried Exhibition at Barton Art Galleries on Oct. 12
Exhibition on view from October 12 through November 26.
WILSON, N.C. – Barton College is pleased to announce the Watercolor Society of North Carolina 69th Juried Exhibition on view in the Barton Art Galleries in Case Art Building from October 12 through November 26. An opening reception to introduce the exhibition will be held on Sunday, Oct. 12, from 1 p.m. – 4 p.m. This event is open to the public at no charge, and the community is invited to attend.
In conjunction with the juried watercolor exhibition, Barton Art Galleries and the Barton College Friends of Visual Arts will host a Watercolor Workshop, featuring instructors Motsie Brooks and Gary Nemcosky, on Saturday, Oct. 18, from 9 a.m. – 4 p.m. in Case Art Building, with lunch provided. Reservations are required. The cost to attend is $40 for FOVA members, and $80 for non-members. Please contact Maureen O'Neill, director of exhibitions, at (252) 399-6477 or artgalleries@barton.edu, to make reservations for the workshop or for additional information about the exhibition. For information about joining the Barton College Friends of Visual Arts, please contact Frances Belcher at 252-399-6357 or fbelcher@barton.edu.
Judging the Watercolor Society of North Carolina 69th Juried Exhibition is noted painter Eric Wiegardt, AWS-DF, NWS. Wiegardt has taught more than 5,000 watercolorists his popular "Secrets of Painting Loose" workshops. More than 4,000 of his original paintings have been collected privately and corporately. He is a signature member of the American Watercolor Society (Dolphin Fellow), National Watercolor Society, Transparent Watercolor Society of America (Master Status), to name a few. Wiegardt has been awarded the 2012 AWS Gold Medal of Honor and 2014 AWS Judge, among other national and international awards and recognitions. His paintings have been exhibited in museums across the United States and in International Watermedia Shows in Nanchang and Shenzhen, China.
Wiegardt has been featured in a number of publications and was a cover artist for both "The Artist's Magazine" and "Watercolor Artist Magazine." He is the author of the book, "Watercolor Free and Easy," and also has a video series titled "Painting Loosely from Photographs." He is a graduate of the American Academy of Art in Chicago.
The Watercolor Society of North Carolina, Inc. is a non-profit art organization founded to encourage and recognize professional and artistic excellence, through competitions and by elevating standards in watermedia. Its mission is to increase the visibility and stature of watercolor as an artistic medium, and to involve the people of North Carolina in the arts.
Barton Art Galleries, in Case Art Building, is open Monday-Friday from 10 a.m. to 4 p.m., with the exception of college breaks and holidays.


The word "mandala" comes from the classical Indian language of Sanskrit. Loosely translated the word Mandala means "circle," though a mandala is far more than a simple shape. To me it depicts growth and transformation, wholeness and purpose, as each layer contains both a distinct individual identity while also radiating outward as part of a greater pattern that is ultimately cyclical, both complete and ever expanding. A mandala is more than an image seen with our eyes; it can be used as a vehicle to explore art, science, faith and life itself.
The mandalas featured on this page are available as original reproductions on wood or canvas, as well as sacred altars, drums, floor, wall or ceiling murals. To commission a custom mandala for your home or business, please contact me.
I crafted my first mandala on an old, second-hand kitchen table. It was a rather impulsive, spontaneous act of desperation to transform a long, rainy Thanksgiving weekend, and frankly, an eyesore of a table, into something greater. What began as a pin-sized dot and a 4 day weekend became a 3 year long journey of creative process, patience, healing and ultimately, one of the most transformative pieces of artwork I have ever created. Today, the art-form of mandalas has become an integral part of my life, and I continue to produce mandala artworks as explorations of life, the universe and everything.


text:
<?php
namespace Concrete\Attribute\Select;

use Concrete\Core\Attribute\FontAwesomeIconFormatter;
use Concrete\Core\Entity\Attribute\Key\Type\SelectType;
use Concrete\Core\Entity\Attribute\Value\Value\SelectValue;
use Concrete\Core\Entity\Attribute\Value\Value\SelectValueOption;
use Concrete\Core\Entity\Attribute\Value\Value\SelectValueOptionList;
use Concrete\Core\Entity\Attribute\Value\Value\SelectValueUsedOption;
use Concrete\Core\Search\ItemList\Database\AttributedItemList;
use Core;
use Database;
use Concrete\Core\Attribute\Controller as AttributeTypeController;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\HttpFoundation\JsonResponse;

class Controller extends AttributeTypeController
{
    private $akSelectAllowMultipleValues;
    private $akSelectAllowOtherValues;
    private $akSelectOptionDisplayOrder;

    protected $searchIndexFieldDefinition = array(
        'type' => 'string',
        'options' => array('default' => null, 'notnull' => false),
    );

    public function getIconFormatter()
    {
        return new FontAwesomeIconFormatter('list-alt');
    }

    public function type_form()
    {
        $this->set('form', Core::make('helper/form'));
        $this->load();

        if ($this->request->getMethod() == 'POST') {
            $akSelectValues = $this->getSelectValuesFromPost();
            $this->set('akSelectValues', $akSelectValues);
        } elseif (isset($this->attributeKey)) {
            $options = $this->getOptions();
            $this->set('akSelectValues', $options);
        } else {
            $this->set('akSelectValues', array());
        }
    }

    protected function load()
    {
        /*
         * @var \Concrete\Core\Entity\Attribute\Key\SelectKey
         */
        $ak = $this->getAttributeKey();
        if (!is_object($ak)) {
            return false;
        }

        /*
         * @var SelectType
         */
        $type = $ak->getAttributeKeyType();
        if (is_object($type)) {

            $this->akSelectAllowMultipleValues = $type->getAllowMultipleValues();
            $this->akSelectAllowOtherValues = $type->getAllowOtherValues();
            $this->akSelectOptionDisplayOrder = $type->getDisplayOrder();

            $this->set('akSelectAllowMultipleValues', $this->akSelectAllowMultipleValues);
            $this->set('akSelectAllowOtherValues', $this->akSelectAllowOtherValues);
            $this->set('akSelectOptionDisplayOrder', $this->akSelectOptionDisplayOrder);

        }
    }

    public function exportKey($akey)
    {
        $this->load();
        $db = Database::get();
        $type = $akey->addChild('type');
        $type->addAttribute('allow-multiple-values', $this->akSelectAllowMultipleValues);
        $type->addAttribute('display-order', $this->akSelectOptionDisplayOrder);
        $type->addAttribute('allow-other-values', $this->akSelectAllowOtherValues);
        $r = $db->Execute('select value, displayOrder, isEndUserAdded from atSelectOptions where akID = ? order by displayOrder asc',
            $this->getAttributeKey()->getAttributeKeyID());
        $options = $type->addChild('options');
        while ($row = $r->FetchRow()) {
            $opt = $options->addChild('option');
            $opt->addAttribute('value', $row['value']);
            $opt->addAttribute('is-end-user-added', $row['isEndUserAdded']);
        }

        return $akey;
    }

    public function exportValue(\SimpleXMLElement $akn)
    {
        $list = $this->getSelectedOptions();
        if ($list->count() > 0) {
            $av = $akn->addChild('value');
            foreach ($list as $l) {
                $av->addChild('option', (string) $l);
            }
        }
    }

    public function setAllowedMultipleValues($allow)
    {
        /**
         * @var $type SelectType
         */
        $type = $this->getAttributeKey()->getAttributeKeyType();
        $type->setAllowMultipleValues($allow);
        $this->entityManager->persist($type);
        $this->entityManager->flush();
    }

    public function setAllowOtherValues($allow)
    {
        /**
         * @var $type SelectType
         */
        $type = $this->getAttributeKey()->getAttributeKeyType();
        $type->setAllowOtherValues($allow);
        $this->entityManager->persist($type);
        $this->entityManager->flush();
    }

    public function setOptionDisplayOrder($order)
    {
        /**
         * @var $type SelectType
         */
        $type = $this->getAttributeKey()->getAttributeKeyType();
        $type->setDisplayOrder($order);
        $this->entityManager->persist($type);
        $this->entityManager->flush();
    }

    public function setOptions($options)
    {
        /**
         * @var $type SelectType
         */
        $type = $this->getAttributeKey()->getAttributeKeyType();
        $list = new SelectValueOptionList();
        $list->setOptions($options);
        $type->setOptionList($list);
        $this->entityManager->persist($type);
        $this->entityManager->flush();
    }

    public function importKey(\SimpleXMLElement $akey)
    {
        $type = $this->getAttributeKeyType();
        if (isset($akey->type)) {
            $akSelectAllowMultipleValues = $akey->type['allow-multiple-values'];
            $akSelectOptionDisplayOrder = $akey->type['display-order'];
            $akSelectAllowOtherValues = $akey->type['allow-other-values'];
            $type->setAllowMultipleValues((bool) $akSelectAllowMultipleValues);
            $type->setDisplayOrder($akSelectOptionDisplayOrder);
            $type->setAllowOtherValues((bool) $akSelectAllowOtherValues);
            $list = new SelectValueOptionList();
            if (isset($akey->type->options)) {
                $displayOrder = 0;
                foreach ($akey->type->options->children() as $option) {
                    $opt = new SelectValueOption();
                    $opt->setSelectAttributeOptionValue((string) $option['value']);
                    $opt->setIsEndUserAdded((bool) $option['is-end-user-added']);
                    $opt->setOptionList($list);
                    $opt->setDisplayOrder($displayOrder);
                    $list->getOptions()->add($opt);
                    ++$displayOrder;
                }
            }
            $type->setOptionList($list);
        }

        return $type;
    }

    private function getSelectValuesFromPost()
    {
        $displayOrder = 0;
        $options = array();
        foreach ($_POST as $key => $value) {
            if (!strstr($key, 'akSelectValue_') || $value == 'TEMPLATE') {
                continue;
            }
            $opt = false;
            // strip off the prefix to get the ID
            $id = substr($key, 14);
            // now we determine from the post whether this is a new option
            // or an existing. New ones have this value from in the akSelectValueNewOption_ post field
            if ($_POST['akSelectValueNewOption_' . $id] == $id) {
                $opt = new SelectValueOption();
                $opt->setSelectAttributeOptionValue($value);
                $opt->setDisplayOrder($displayOrder);
            } elseif ($_POST['akSelectValueExistingOption_' . $id] == $id) {
                $opt = $this->getOptionByID($id);
                $opt->setSelectAttributeOptionValue($value);
                $opt->setDisplayOrder($displayOrder);
            }

            if (is_object($opt)) {
                $options[] = $opt;
                ++$displayOrder;
            }
        }

        return $options;
    }

    public function form()
    {
        $this->load();
        $options = $this->getSelectedOptions();
        $selectedOptions = array();
        $selectedOptionValues = array();
        foreach ($options as $opt) {
            $selectedOptions[] = $opt->getSelectAttributeOptionID();
            $selectedOptionValues[$opt->getSelectAttributeOptionID()] = $opt->getSelectAttributeOptionValue();
        }
        $this->set('selectedOptionValues', $selectedOptionValues);
        $this->set('selectedOptions', $selectedOptions);
        $this->requireAsset('select2');
    }

    public function search()
    {
        $this->load();
        $selectedOptions = $this->request('atSelectOptionID');
        if (!is_array($selectedOptions)) {
            $selectedOptions = array();
        }
        $this->set('selectedOptions', $selectedOptions);
    }

    public function createAttributeValueFromRequest()
    {
        $data = $this->post();
        $this->load();

        $akSelectAllowMultipleValues = $this->akSelectAllowMultipleValues;
        $akSelectAllowOtherValues = $this->akSelectAllowOtherValues;
        $keyType = $this->attributeKey->getAttributeKeyType();
        $optionList = $keyType->getOptionList();
        if (!$akSelectAllowMultipleValues && !$akSelectAllowOtherValues) {
            // select list. Only one option possible. No new options.
            $option = $this->getOptionByID($data['atSelectOptionValue']);
            if (is_object($option)) {
                return $this->createAttributeValue($option);
            } else {
                return $this->createAttributeValue(null);
            }
        } else {
            if ($akSelectAllowMultipleValues && !$akSelectAllowOtherValues) {
                // checkbox list.  No new options.
                $options = array();
                if (is_array($data['atSelectOptionValue'])) {
                    foreach ($data['atSelectOptionValue'] as $optionID) {
                        $option = $this->getOptionByID($optionID);
                        if (is_object($option)) {
                            $options[] = $option;
                        }
                    }
                }
                return $this->createAttributeValue($options);
            } else {
                if (!$akSelectAllowMultipleValues && $akSelectAllowOtherValues) {

                    // The post comes through in the select2 format. Either a SelectAttributeOption:ID item
                    // or a new item.
                    $option = false;
                    if ($data['atSelectOptionValue']) {
                        if (preg_match('/SelectAttributeOption\:(.+)/i',
                            $data['atSelectOptionValue'], $matches)) {
                            $option = $this->getOptionByID($matches[1]);
                        } else {
                            $option = $this->getOptionByValue(trim($data['atSelectOptionValue']), $this->attributeKey);
                            if (!is_object($option)) {
                                $option = new SelectValueOption();
                                $option->setOptionList($optionList);
                                $option->setIsEndUserAdded(true);
                                $option->setDisplayOrder(count($optionList));
                                $option->setSelectAttributeOptionValue(trim($data['atSelectOptionValue']));
                            }
                        }
                    }
                    if (is_object($option)) {
                        return $this->createAttributeValue($option);
                    } else {
                        return $this->createAttributeValue(null);
                    }
                } else {
                    if ($akSelectAllowMultipleValues && $akSelectAllowOtherValues) {

                        // The post comes through in the select2 format. A comma-separated
                        // list of SelectAttributeOption:ID items and new items.
                        $options = array();
                        if ($data['atSelectOptionValue']) {
                            foreach (explode(',', $data['atSelectOptionValue']) as $value) {
                                if (preg_match('/SelectAttributeOption\:(.+)/i', $value, $matches)) {
                                    $option = $this->getOptionByID($matches[1]);
                                } else {
                                    $option = $this->getOptionByValue(trim($value), $this->attributeKey);
                                    if (!is_object($option)) {
                                        $option = new SelectValueOption();
                                        $option->setOptionList($optionList);
                                        $option->setDisplayOrder(count($optionList));
                                        $option->setSelectAttributeOptionValue(trim($value));
                                        $option->setIsEndUserAdded(true);
                                    }
                                }

                                if (is_object($option)) {
                                    $options[] = $option;
                                }
                            }
                        }

                        if (count($options)) {
                            return $this->createAttributeValue($options);
                        } else {
                            return $this->createAttributeValue(null);
                        }
                    }
                }
            }
        }
    }

    public function importValue(\SimpleXMLElement $akv)
    {
        if (isset($akv->value)) {
            $vals = array();
            foreach ($akv->value->children() as $ch) {
                $vals[] = (string) $ch;
            }

            return $this->createAttributeValue($vals);
        }
    }

    public function getOptionByID($id)
    {
        $orm = $this->entityManager;
        $repository = $orm->getRepository('\Concrete\Core\Entity\Attribute\Value\Value\SelectValueOption');
        $option = $repository->findOneBy(array(
            'avSelectOptionID' => $id
        ));

        return $option;
    }

    public function getOptionByValue($value, $attributeKey = false)
    {
        $orm = \Database::connection()->getEntityManager();
        $repository = $orm->getRepository('\Concrete\Core\Entity\Attribute\Value\Value\SelectValueOption');
        if ($attributeKey) {
            $existingList = $attributeKey->getAttributeKeyType()->getOptionList();
        }
        if (isset($existingList) && is_object($existingList)) {
            $option = $repository->findOneBy(array(
                'list' => $existingList,
                'value' => $value,
            ));
        } else {
            $option = $repository->findOneByValue($value);
        }

        return $option;
    }

    /**
     * Sets select options for a particular attribute
     * If the $value == string, then 1 item is selected
     * if array, then multiple, but only if the attribute in question is a select multiple
     * Note, items CANNOT be added to the pool (even if the attribute allows it) through this process.
     * Items should now be added to the database if they don't exist already & if the allow checkbox is
     * checked under the attribute settings
     * Code from this bug - http://www.concrete5.org/index.php?cID=595692
     */
    public function createAttributeValue($value)
    {
        $this->load();

        $options = array();

        if ($value != null) {
            if (is_array($value) && $this->akSelectAllowMultipleValues) {
                foreach ($value as $v) {
                    if ($v instanceof SelectValueOption) {
                        $option = $v;
                    } else {
                        // Retrieve the option by value. Only get those that are assigned to this attribute key.
                        $option = $this->getOptionByValue($v, $this->attributeKey);
                    }

                    if (!is_object($option) && $this->akSelectAllowOtherValues) {
                        $option = new SelectValueOption();
                        $option->setIsEndUserAdded(true);
                        $option->setSelectAttributeOptionValue($v);
                    }

                    if (is_object($option)) {
                        $options[] = $option;
                    }
                }
            } else {
                if (is_array($value)) {
                    $value = $value[0];
                }

                if ($value instanceof SelectValueOption) {
                    $option = $value;
                } else {
                    $option = $this->getOptionByValue($value, $this->attributeKey);
                }

                if (is_object($option)) {
                    $options[] = $option;
                }
            }
        }

        $av = new SelectValue();
        $av->setSelectedOptions($options);

        return $av;
    }

    public function getDisplayValue()
    {
        $list = $this->getSelectedOptions();
        $html = '';
        foreach ($list as $l) {
            $html .= $l->getSelectAttributeOptionDisplayValue() . '<br/>';
        }

        return $html;
    }

    public function getDisplaySanitizedValue()
    {
        return $this->getDisplayValue();
    }

    public function validateValue()
    {
        return is_object($value = $this->getValue()) && ((string) $value != '');
    }

    public function validateForm($p)
    {
        $this->load();
        $options = $this->request('atSelectOptionValue');

        return $options != '';
    }

    public function searchForm($list)
    {
        $options = $this->request('atSelectOptionID');
        $db = $this->entityManager->getConnection();
        if (!is_array($options)) {
            return $list;
        }
        $optionQuery = array();
        foreach ($options as $id) {
            if ($id > 0) {
                $opt = $this->getOptionByID($id);
                if (is_object($opt)) {
                    $optionQuery[] = $opt->getSelectAttributeOptionValue(false);
                }
            }
        }
        if (count($optionQuery) == 0) {
            return false;
        }

        $i = 0;
        $multiString = '';
        foreach ($optionQuery as $val) {
            $val = $db->quote('%||' . $val . '||%');
            $multiString .= 'REPLACE(ak_' . $this->attributeKey->getAttributeKeyHandle() . ', "\n", "||") like ' . $val . ' ';
            if (($i + 1) < count($optionQuery)) {
                $multiString .= 'OR ';
            }
            ++$i;
        }
        $list->filter(false, '(' . $multiString . ')');

        return $list;
    }

    public function getSearchIndexValue()
    {
        $str = "\n";
        $list = $this->attributeValue->getValue()->getSelectedOptions();
        foreach ($list as $l) {
            $str .= $l . "\n";
        }
        // remove line break for empty list
        if ($str == "\n") {
            return '';
        }

        return $str;
    }

    public function getSelectedOptions()
    {
        if (is_object($this->attributeValue)) {
            return $this->attributeValue->getValue()->getSelectedOptions();
        }
        return array();
    }

    /**
     * Used by select2. Automatically takes a value request and converts it into tag/text key value pairs.
     * New options are just text/tag, whereas existing ones are SelectAttributeOption:ID/text.
     */
    public function action_load_autocomplete_selected_value()
    {
        $em = \Database::get()->getEntityManager();
        $r = $em->getRepository('\Concrete\Core\Entity\Attribute\Value\Value\SelectValueOption');
        $type = $this->attributeKey->getAttributeKeyType();

        $value = $this->request->query->get('value');
        $values = explode(',', $value);
        $response = array();
        foreach ($values as $value) {
            $value = trim($value);
            $o = new \stdClass();
            if (strpos($value, 'SelectAttributeOption:') === 0) {
                $optionID = substr($value, 22);
                $option = $r->findOneBy(array('list' => $type->getOptionList(), 'avSelectOptionID' => $optionID));
                if (is_object($option)) {
                    $o->id = $value;
                    $o->text = $option->getSelectAttributeOptionValue();
                }
            } else {
                $o->id = $value;
                $o->text = $value;
            }

            $response[] = $o;
        }

        return new JsonResponse($response);
    }

    public function action_load_autocomplete_values()
    {
        $this->load();
        $values = array();
        // now, if the current instance of the attribute key allows us to do autocomplete, we return all the values
        if ($this->akSelectAllowOtherValues) {
            $options = $this->getOptions($_GET['q']);
            foreach ($options as $opt) {
                $o = new \stdClass();
                $o->id = 'SelectAttributeOption:' . $opt->getSelectAttributeOptionID();
                $o->text = $opt->getSelectAttributeOptionValue(false);
                $values[] = $o;
            }
        }
        return new JsonResponse($values);
    }

    public function getOptionUsageArray($parentPage = false, $limit = 9999)
    {
        $db = Database::get();
        $q = "select SelectAttributeValueOptions.value, SelectAttributeValueOptions.avSelectOptionID, count(SelectAttributeValueOptions.avSelectOptionID) as total from Pages inner join CollectionVersions on (Pages.cID = CollectionVersions.cID and CollectionVersions.cvIsApproved = 1) inner join CollectionAttributeValues on (CollectionVersions.cID = CollectionAttributeValues.cID and CollectionVersions.cvID = CollectionAttributeValues.cvID) inner join AttributeValues on CollectionAttributeValues.avrID = AttributeValues.avrID inner join SelectAttributeValueSelectedOptions on (SelectAttributeValueSelectedOptions.avID = AttributeValues.avID) inner join SelectAttributeValueOptions on SelectAttributeValueSelectedOptions.avSelectOptionID = SelectAttributeValueOptions.avSelectOptionID where Pages.cIsActive = 1 and AttributeValues.akID = ? ";
        $v = array($this->attributeKey->getAttributeKeyID());
        if (is_object($parentPage)) {
            $v[] = $parentPage->getCollectionID();
            $q .= "and cParentID = ?";
        }
        $q .= " group by avSelectOptionID order by total desc limit " . $limit;
        $r = $db->Execute($q, $v);
        $options = new ArrayCollection();
        while ($row = $r->FetchRow()) {
            $opt = new SelectValueUsedOption();
            $opt->setSelectAttributeOptionValue($row['value']);
            $opt->setSelectAttributeOptionID($row['avSelectOptionID']);
            $opt->setSelectAttributeOptionUsageCount($row['total']);
            $options->add($opt);
        }

        return $options;
    }

    public function filterByAttribute(AttributedItemList $list, $value, $comparison = '=')
    {
        $em = \Database::connection()->getEntityManager();
        if ($value instanceof SelectValueOption) {
            $option = $value;
        } else {
            $option = $em->getRepository('\Concrete\Core\Entity\Attribute\Value\Value\SelectValueOption')
                ->findOneByValue($value);
        }
        if (is_object($option)) {
            $column = 'ak_' . $this->attributeKey->getAttributeKeyHandle();
            $qb = $list->getQueryObject();
            $qb->andWhere(
                $comparison === '!=' || $comparison === '<>'
                    ? $qb->expr()->notLike($column, ':optionValue_' . $this->attributeKey->getAttributeKeyID())
                    : $qb->expr()->like($column, ':optionValue_' . $this->attributeKey->getAttributeKeyID())
            );
            $qb->setParameter('optionValue_' . $this->attributeKey->getAttributeKeyID(), "%\n" . $option->getSelectAttributeOptionValue(false) . "\n%");
        }
    }

    /**
     * Returns a list of available options optionally filtered by an sql $like statement ex: startswith%.
     *
     * @param string $like
     */
    public function getOptions($keywords = null)
    {
        if (!isset($this->attributeKey)) {
            return array();
        }

        if (!is_object($this->attributeKey->getAttributeKeyType())) {
            return array();
        }

        if (!isset($this->akSelectOptionDisplayOrder)) {
            $this->load();
        }

        $type = $this->attributeKey->getAttributeKeyType();

        $em = \Database::get()->getEntityManager();
        $r = $em->getRepository('\Concrete\Core\Entity\Attribute\Value\Value\SelectValueOption');
        $builder = $r->createQueryBuilder('v');
        $builder->where('v.list = :list');
        if ($keywords) {
            $builder->andWhere($builder->expr()->like('v.value', ':value'));
            $builder->setParameter('value', $keywords  . '%');
        }
        switch ($this->akSelectOptionDisplayOrder) {
            case 'popularity_desc':
                /**
                 * @TODO make this work again - there is currently no field.
                 * @TODO It used to be done with a group by on the selected options table.
                 */
                $builder->orderBy('v.popularity', 'asc');
                break;
            case 'alpha_asc':
                $builder->orderBy('v.value', 'asc');
                break;
            default:
                $builder->orderBy('v.displayOrder', 'asc');
                break;
        }
        $builder->setParameter('list', $type->getOptionList());
        return $builder->getQuery()->getResult();
    }

    public function saveKey($data)
    {

        $type = $this->getAttributeKeyType();
        $newOptionSet = $type->getOptionList();

        $orm = $this->entityManager;

        if (isset($data['akSelectAllowMultipleValues']) && ($data['akSelectAllowMultipleValues'] == 1)) {
            $akSelectAllowMultipleValues = 1;
        } else {
            $akSelectAllowMultipleValues = 0;
        }
        if (isset($data['akSelectAllowOtherValues']) && ($data['akSelectAllowOtherValues'] == 1)) {
            $akSelectAllowOtherValues = 1;
        } else {
            $akSelectAllowOtherValues = 0;
        }
        if (isset($data['akSelectOptionDisplayOrder']) && in_array($data['akSelectOptionDisplayOrder'],
                array('display_asc', 'alpha_asc', 'popularity_desc'))
        ) {
            $akSelectOptionDisplayOrder = $data['akSelectOptionDisplayOrder'];
        } else {
            $akSelectOptionDisplayOrder = 'display_asc';
        }

        $type->setAllowMultipleValues((bool) $akSelectAllowMultipleValues);
        $type->setDisplayOrder($akSelectOptionDisplayOrder);
        $type->setAllowOtherValues((bool) $akSelectAllowOtherValues);

        $initialOptionSet = $this->getOptions();
        $selectedPostValues = $this->getSelectValuesFromPost();

        // Now we add the options

        foreach ($selectedPostValues as $option) {
            /*
             * @var $option SelectValueOption
             */
            $option->setOptionList($newOptionSet);
            $newOptionSet->getOptions()->add($option);
        }

        // Now we remove all options that appear in the
        // old values list but not in the new
        foreach ($initialOptionSet as $iopt) {
            if (!$newOptionSet->contains($iopt)) {
                $orm->remove($iopt);
            }
        }

        $type->setOptionList($newOptionSet);

        return $type;
    }

    /**
     * Convenience methods to retrieve a select attribute key's settings.
     */
    public function getAllowMultipleValues()
    {
        if (is_null($this->akSelectAllowMultipleValues)) {
            $this->load();
        }

        return $this->akSelectAllowMultipleValues;
    }

    public function getAllowOtherValues()
    {
        if (is_null($this->akSelectAllowOtherValues)) {
            $this->load();
        }

        return $this->akSelectAllowOtherValues;
    }

    public function getOptionDisplayOrder()
    {
        if (is_null($this->akSelectOptionDisplayOrder)) {
            $this->load();
        }

        return $this->akSelectOptionDisplayOrder;
    }

    public function createAttributeKeyType()
    {
        return new SelectType();
    }
}


Long-time business planning industry leader, Wise Business Plans, is offering medical marijuana business owners and entrepreneurs the professionally prepared business plans and accompanying services necessary to get ahead and remain profitable in what is becoming a crowded and highly competitive business sector.
Wise supports businesses that are involved in improving the health of others with innovative medical solutions.
Marijuana has recently been decriminalized in several states for medical usage and is currently one of the fastest growing investment options for the foreseeable future. Long-time business planning industry leader, Wise Business Plans, is offering medical marijuana business owners and entrepreneurs the professionally prepared business plans and accompanying services necessary to get ahead and remain profitable in what is becoming a crowded and highly competitive business sector.
"Medical marijuana clinics and apothecaries are fast becoming an important part of the medical community, and there is strong evidence that marijuana may be effective in the treatment of many different illnesses and diseases, particularly seizures and cancer," said Joseph Ferriolo, Director of Wise Business Plans. "Wise supports businesses that are involved in improving the health of others with innovative medical solutions."
"It is often difficult to break through and gain acceptance of a new product or idea, especially when one has to fight pre-conceived notions. At Wise, we have the expertise to guide our medical marijuana clients toward a brighter future and improved options for success through the use of proper business planning practices," said Ferriolo.


Thank you for taking the time to view my products... All leather cuff watches, leather cuffs, leather wristbands and leather bracelets that I make, are all hand made from hand selected, veg-tanned leather. I offer a wide variety of wide band leather cuff watches, cuff bracelets, and other leather products in a number of custom colors and combinations. I take great satisfaction in hand crafting each and every item. Each product is hand-tooled, dyed and conditioned with care, to ensure a high quality end product for you. Each leather cuff watch, watch band and wristband are all individually made to your size and specifications, so please measure your wrist correctly.


text:
The fast fading ghosts of Ghost Island
The search for the ghosts of times forgotten takes me to some fascinating places. One place I found myself in recently was an island whose name hints of quite a haunted past, Pulau Hantu – Malay for Ghost Island. Long held with much superstition, why the island, which has remained uninhabited in recent memory, possesses its rather sinister sounding name seems to have been lost on many.
Dawn over an island abandoned by its ghosts.
One theory about how it got its name is that much of the island (when seen at low tide) seems to vanish like a ghost in the night with the rising tide, leaving no more than two coconut tree lined sandbars above the water. While that is quite plausible, it lacks the mystery and forbidding that many would think is more deserving of the title.
Less than ghostly apparitions … across the channel at Pulau Ular
A 1939 newspaper article written about stories and superstitions of old Malaya does provide a more disquieting take on the origins of the island's name, attributing it to Pulau Hantu's haunting by spirits of the dead connect to a "long forgotten story of death and cruelty", revealing some of the superstition with which the island was held by the people of the coast:
Pulau Hantu, though planted with coconuts, has no one living on it. There is no water to be got there by digging, but that is not the reason for no one desiring to live there. In the centre of the place are to be found many graves, and there is some long-forgotten story of death and cruelty which makes the place haunted by the spirits of these unfortunate people, so that it is but seldom visited by the Malays, and then only to collect ripe coconuts, which are the property of a man on the next island, to which one can wade at very low tides.
(More Stories And Superstitions Of Old Malaya: Tales related by an old Malay to "Yahya", The Straits Times, 9 April 1939)
An are of mangroves on the northern shore of Pulau Hantu Besar.
The island, or as it is more commonly taken to be today, two islands, Pulau Hantu Besar and Pulau Hantu Kechil, has since expanded in size. Additional land mass through reclamation work in the 1970s, enlarged its total area by some 12 times. While there may have been a reluctance to visit it amongst the people of the sea, it has actually long been known as a spot for recreation, and its sandy beaches and rich coral reefs have attracted many picnic goers and campers as well as divers as far back as the early twentieth century. Sentosa Development Corporation (SDC), under whose charge the two islands have come under since the mid 1970s, continues to keep the islands open for recreational activities.
The view across the lagoon between the two parts to Pulau Hantu towards Pulau Ular.
It is perhaps in keeping with the SDC sanctioned version of the tale behind the islands' names that sees the two parts to the island being considered as two individuals islets. This version has as much to to with the spirits dwelling on the islands as with the tale told by the old Malay in 1939, as it has with jinns and sea spirits, fitting quite nicely into the collection of stories once told of our seemingly turbulent seas.
Another view by night across the lagoon – towards the smoking guns across at Pulau Ular.
I am reminded of this coming ashore on Pulau Hantu Besar. This version of the tale is what all visitors are confronted with at the inshore end of the jetties on both islands, told from a prominently placed signboard marked with these words:
There were once two great warriors locked in a fierce battle at sea. Many people died and the blue seas slowly became polluted with human blood, upsetting the Jinns at the bottom of the ocean. In anger, one powerful Jinn created a whirlpool and sucked the two warriors deep into the sea to drown them. Undeterred, they continued their battle.
Suddenly, the Jinn sprayed water onto one of them. The other warrior, seeing his opponent blinded, thrust his sword into his abdomen. At the same time, the wounded warrior forced his sword into the other man. Both collapsed and died.
The gods felt it was wrong for the seas' spirits to interfere in human affairs, so the Jinn transformed the two warriors into islets so that their spirits could live on. As one of the warriors was smaller than the other, his islet was known as Pulau Hantu Kecil, while the larger one was named Pulau Hantu Besar.
Wandering around the shores of Pulau Hantu Besar, just a few hours past the witching hour, I am confronted not by jinns, sea spirits or ghosts but by the glare of the gods of the new age. It is from the angry stare of smoking chimneys and lighted towers of steel that now rise to the island's north that the jinns and sea spirits have retreated, leaving only footprints fading in the sand. With no more shadows left to hide in, it is in the echoes that we find the the ghosts of Pulau Hantu, echoes in which I can only hear, the evanescing whispers of words that will soon lose their meaning.
The angry glare of the gods of the new age.
The islands of many ghosts:
Singapore's islands, rich in the legends of a time we have been made to forget, have many fascinating tales to tell; hints of which are found in the names of many of the islands. The islands were once an integral part of a larger maritime based society that spanned across the Riau archipelago that through the enforcement of national boundaries, resettlement, reclamation and development, have broken their links to a centuries old past.
Among the tales that have survived the self-inflicted amnesia is that of the junk that was turned into the island of Pulau Jong, Junk Island, although it may not be for very much longer. The course that has been set for the junk, based on the 2013 Land Use Plan, will set it on collision course with a larger land mass that will have it aground by the year 2030.
Several islands, having been renamed, have also lost their ghosts. One that comes to mind is the former Pulau Penyabong (now Pulau Tekukor), where warriors were said to have dueled to the death. That tale also features Tekukor's northern companion, the former Pulau Blakang Mati, which in being re-branded as Sentosa – the isle of Peace and Tranquility, has been cleansed of what is possibly a gory past.
The islands that are the subject of this post, Pulau Hantu, were, interestingly not alone in being so named. The other Pulau Hantu, is to be found in Keppel Harbour (see post: A Sunrise from Ghost Island) and having had its ghost exorcised in 1983 after Keppel Shipyard gained possession of it, is now called Keppel Island. Keppel shipyard has since moved away from the area and the island is now where the Marina @ Keppel Bay is located.
The Pulau Hantu, or I should say Pulau-pulau Hantu, I found myself looking for ghosts on, are located in the south-west, just south of a more recently created island that has fused the previously individual islands of Pulau Bukom Kechil, Pulau Ular, and Pulau Busing – on which a petrochemical complex is being developed, together.
Apart from the hantu found in their names, there is little that is now ghostly about the islands. A popular dive spot, the islands are also where campers and fishermen, seeking an escape from the urban world, can head to. While the surreal glow from the monster of a petrochemical complex on Pulau Ular brightening up the northern shores of the two islands may not be what a camper seeking an escape might appreciate, the islands are probably as far out from urban Singapore one could practically run off to, while still remaining in Singapore.
More information on Pulau Hantu (Besar and Kechil), as well as the rich array of marine life found in its reefs can be found at the following links:
Sisters' Islands and Pulau Hantu (Sentosa Leisure Management)
The Hantu Bloggers
A special National Day at Pulau Hantu! (Wildshores of Singapore)
Lionfish on Lion City's birthday at Pulau Hantu!
Sea the hidden depths of Singapore (Asia One)
The view across the inter-tidal mud flat towards what would once have been Pulau Busing.
A different ghost in the night.
« The dragon comes alive for Mid-Autumn The three last stages of Singapore »
Date : 12 September 2014
Tags: Changing Landscapes, Landscapes, Legend, Old Singapore, Photography, Points of Departure, Pulau Hantu, Pulau Hantu Besar, Pulau Hantu Kechil, Reminders of Yesterday, Seascapes, Singapore, Southern Islands, Southern Islands of Singapore
Categories : Changing Landscapes, Islands, Mangroves, Photography Series, Seascapes, Singapore, Singapore Landscapes