text:
Israel bans Gaza woman from studying human rights in West Bank
Operation Dove: Palestinian children join the summer camp under military escort
Witch-Hunt Begins In Israeli Schools And Colleges
Written by admin • Monday, 12.07.2010, 16:03
Complicity of Israeli Academia
Home » Complicity of Israeli Academia » Witch-Hunt Begins In Israeli Schools And Colleges
Hundreds of Israeli college professors have signed a petition accusing the education minister of endangering academic freedoms after he threatened to "punish" any lecturer or institution that supports a boycott of Israel.
The backlash against Gideon Saar, a member of the prime minister Benjamin Netanyahu's Likud party, comes after a series of moves suggesting he is trying to stamp a more stridently right-wing agenda on the Israeli education system.
The education minister has outraged the 540 professors who signed the petition by his open backing of a nationalist youth movement, Im Tirtzu, which demands that teachers be required to prove their commitment to right-wing Zionism.
Two of Mr Saar's predecessors, Yossi Sarid and Yuli Tamir, are among those who signed the petition, which calls on the minister to "come to your senses … before it's too late to save higher education in Israel".
Mr Saar's campaign to "re-Zionise" the education system, including introducing a new right-wing Jewish studies syllabus and bringing soldiers into classrooms, has heightened concerns that he is stoking an atmosphere increasingly hostile to left-wing academics and human-rights activists.
Neve Gordon, a politics professor at Ben Gurion University in Beersheva who called for an academic boycott of Israel last year, has reported receiving death threats, as has a school teacher who refused to participate in Mr Saar's flagship programme to encourage high-school recruitment to the Israeli military.
Daniel Gutwein, a professor of Jewish history at Haifa University, said: "A serious red flag is raised when the education minister joins in the de-legitimisation of the academic establishment. This is a method to castrate and abolish Israeli academia."
Mr Saar's sympathies for Im Tirtzu were first revealed earlier this year when he addressed one of its conferences, telling delegates the organisation would be "blessed" for its "hugely vital" work.
The youth movement emerged in 2006 among students demanding that the government rather than ordinary soldiers be held to account for what was seen as Israel's failure to crush Hizbollah during that year's attack on Lebanon. It has rapidly evolved into a potent right-wing pressure group.
Its biggest success to date has been a campaign last year against Israeli human rights groups that assisted a United Nations inquiry led by Judge Richard Goldstone in investigating war crimes committed during Israel's assault on Gaza in 2008. The human rights organisations are now facing possible government legislation to restrict their activities.
Im Tirtzu's latest campaign, against what it calls "the reign of left-wing terror" in the education system, was backed by Mr Saar during a parliamentary debate last month. He told MPs he took very seriously a report by the movement claiming that anti-Zionist professors have taken over university politics departments and are silencing right-wing colleagues and students.
Mr Saar also warned that calls for boycotts against Israel were "impossible to accept" and that he was talking to higher education officials about taking "action" this summer, hinting that he would cut funds for the professors involved and their institutions.
Yossi Ben Artzi, the rector of Haifa University and the most senior university official to criticise Mr Saar, warned him against "monitoring and denouncing" academics. He added that the Im Tirtzu report "smells of McCarthyism".
The universities are already disturbed by a bill submitted by 25 MPs last month that would make it a criminal offence for Israelis to "initiate, encourage, or aid" a boycott against Israel and require them to pay compensation to those harmed by it.
The bill is likely to be treated sympathetically by the government, which is worried about the growing momentum of boycott drives both internationally and in the occupied West Bank. Mr Netanyahu has called the emergence of a boycott movement inside Israel a "national scandal".
Prof Gordon, who wrote a commentary in the Los Angeles Times a year ago supporting a boycott, said Im Tirtzu had contributed to a growing "atmosphere of violence" in the country and on campuses.
Hundreds of students at his university have staged demonstrations demanding his dismissal. He was also recently sent a letter from someone signing himself "Im Tirtzu" calling the professor a "traitor" and warning: "I will reach Ben Gurion [University] to kill you."
Prof Gordon said: "I have tenure and Im Tirtzu cannot easily get me fired. But they are trying to become the 'guards at the gate' to make sure other academics do not follow in my path."
Only three Israeli acadmics have so far openly endorsed a boycott, he added, with many others fearful that they will be punished if they do so. But Im Tirtzu and its supporters were using the issue as a pretext for cracking down on academics critical of rightwing policy. He called Israel an increasingly "proto-fascist" state.
Prof Gordon cited the recent case of Assaf Oren, a statistics lecturer and peace activist who had been told he was the leading candidate for a post in Ben Gurion's industrial engineering department until right-wing groups launched a campaign against him.
In a further sign of what Prof Gordon and others have labelled a McCarthyite climate, MPs in the parliamentary education committee — which has come to closely reflect Mr Saar's views — summoned for questioning two head teachers of prestigious schools after they criticised official policies.
One, Ram Cohen, has condemned Israel's occupation of the Palestinians, while the other, Zeev Dagani, has spoken against the programme to send army officers into classrooms to encourage pupils to enlist.
Mr Dagani was the only head teacher in the 270 selected schools to reject the programme, saying he opposed "the blurring of boundaries when officers come and teach the teachers how to educate". He subsequently received a flood of death threats.
The education ministry has announced a new core curriculum subject of Jewish studies in schools that concentrates on nationalist and religious themes and is likely to be taught by private rightwing and settler organisations.
Avi Sagi, a philosopher at Bar Ilan University in Tel Aviv, warned in the liberal Haaretz newspaper that the syllabus offered "an opening for dangerous indoctrination".
A modern history curriculum published this month has been similarly criticised for leaving out study of the Oslo peace process and Palestinian politics.
Also in the sights of education officials are hundreds of Arab nursery schools, many of them established by the Islamic Movement. Zevulun Orlev, head of the education committee, has accused the schools of "poisoning the minds" of Arab children in Israel.
Mr Saar appointed a special committee last month to inspect the schools and shut them down if they were found to be teaching "anti-Israel" material.
Arab MPs have called the claims "ridiculous", pointing out that the schools were set up after the education ministry failed to build nursery schools in Arab communities.
Jonathan Cook is a writer and journalist based in Nazareth, Israel. His latest books are "Israel and the Clash of Civilisations: Iraq, Iran and the Plan to Remake the Middle East" (Pluto Press) and "Disappearing Palestine: Israel's Experiments in Human Despair" (Zed Books). His website is www.jkcook.net.
A version of this article originally appeared in The National (www.thenational.ae), published in Abu Dhabi.
State council seeks to shut down...
In an unprecedented move, the Council for Higher...
By admin • Sep 09 Read More »
Gaza children's images of war censored under pressure from US...
Pro-Israel organizations pressured an Oakland children's museum to cancel an upcoming exhibition of drawings made by Palestinian children in the Gaza Strip. Community leaders say the shutting...
Israeli Assault on Palestinian Education in Jerusalem and other...
Ministry of Education Press release: The occupation's restrictions on movement and the land grabbing wall of separation constitute a real obstacle that prevent people in general, and school...
Childhood in ruins
A piece by the Guardian's foreign editor Harriet Sherwood about Israel's 23-day bombardment of Gaza, killing around 1,400 people, and wounding over 5,000, many of them children. One year on, a...


text:
ONESOURCE IT LOGIN CAREERS INVESTOR RELATIONS CONTACT US
At IGXGlobal, we design, build and secure automated multi-cloud infrastructures that meet the rapidly changing needs of enterprise businesses.
Cloud Cloud
Cloud Consulting Services
Cloud Adoption Lifecycle
Cloud Hosted Services
Data Centre Data Centre
Security Operations & Analytics
Advisory & Managed Services
Software-Defined WAN
Mobility and Wireless
Network Support Services
Carrier Expense Management
Enterprise Communication
Lifecycle and Adoption Services
Business Video Conferencing
Recording and Compliance
Artificial Intelligence Artificial Intelligence
AI-Optimised Infrastructure
AI Enablement Services
AI Training
Data Science Consulting
Hear from our customers about what it's like to work with us.
In today's outcome-based economy, it's critical for IT to not only enable your business - but to create differentiation and long-term value. IGXGlobal helps you imagine, implement, and achieve more from technology. Put our bench of experts to work hard on your side - so you benefit from our solid reputation and strong industry partnerships, commitment to elevating the customer experience, and knowledge gained from thousands of successfully delivered engagements.
Maintenance and Managed Services
Managed Services for Infrastructure and Cloud
Enhanced Maintenance Support
Asset Management Service
Strategic Technology Staffing
Cloud and Data Centre Assessments
IT Infrastructure Assessments
Technology Workshops
AI/ML/DL Training
Configuration Centre Services
Ready to upgrade your technology but not sure it's within your budget? We offer a variety of financing and leasing options so you can procure technology when and how you need it, at a price point you can manage. Since 1990 we have been providing a wide portfolio of financing solutions to customers across commercial and government enterprises, designing programs that are tailored to fit their unique processes, structures and requirements.
Technology Financing
Government Financing
Customised Payment Programs
Get the latest industry news, topics and trends from the IGXGlobal experts.
BrightTALK Webinars
Take a minute to catch up on our latest public news and announcements.
Home + About Us + Press Releases + Press Releases Details
ePlus Recognized for Excellence in Managed IT Services
Placed on the Elite 150 of CRN's 2018 Managed Service Provider 500 list
HERNDON, VA – March 1, 2018 – ePlus inc. (NASDAQ NGS: PLUS – news) today announced that CRN®, a brand of The Channel Company, has named its wholly owned subsidiary, ePlus Technology, to its 2018 Managed Service Provider (MSP) 500 list in the Elite 150 category. This annual list recognizes North American solution providers with cutting-edge approaches to delivering managed services. Their offerings help companies navigate the complex and ever-changing landscape of IT, improve operational efficiencies, and maximize their return on IT investments.
In today's fast-paced business environments, MSPs play an important role in helping companies leverage new technologies without straining their budgets or losing focus on their core business. CRN's MSP 500 list shines a light on the most forward-thinking and innovative of these key organizations.
"Managed service providers have become integral to the success of businesses everywhere, both large and small," said Bob Skelley, CEO of The Channel Company. "Capable MSPs enable companies to take their cloud computing to the next level, streamline spending, effectively allocate limited resources, and navigate the vast field of available technologies. The companies on CRN's 2018 MSP 500 list stand out for their innovative services, excellence in adapting to customers' changing needs, and demonstrated ability to help businesses get the most out of their IT investments."
"We are proud to be acknowledged by CRN as part of the Elite 150 Managed Services Providers," said Dan Farrell, senior vice president of services for ePlus. "Our Managed Services offerings are a strategic component of ePlus' lifecycle services portfolio. This designation demonstrates our role as a trusted partner to customers, enabling them to gain process efficiencies, achieve better budget predictability, and optimize their IT investments to drive transformative business outcomes."
"ePlus continues to invest in our capabilities to keep pace with evolving customer demands, especially as they look to us for aggregated service expertise in both on-premise and cloud-based as a service offerings," said Wayne St. Jacques, vice president of managed and executive services for ePlus. "Being named to the CRN Elite 150 recognizes our commitment to customers and the investments we have made in our overall delivery methodology to maintain alignment with today's shifting IT landscape."
The MSP500 list will be featured in the February 2018 issue of CRN and online at www.CRN.com/msp500.
About ePlus Managed Services
ePlus Managed Services help enterprises cost-effectively monitor, control, and proactively manage their IT infrastructure, and off-load a significant burden of day-to-day IT tasks to optimize internal IT operations and mitigate risk. ePlus has delivered Managed Services for more than 10 years to a wide range of clients across multiple industry verticals through its 24/7/365 Managed Services Centers. Visit www.eplus.com/ManagedServices for more information.
About ePlus inc.
ePlus is a leading consultative technology solutions provider that helps customers imagine, implement, and achieve more from their technology. With the highest certifications from top technology partners and expertise in key technologies from cloud to security and digital infrastructure, ePlus transforms IT from a cost center to a business enabler. Founded in 1990, ePlus has more than 1,200 associates serving a diverse set of customers in the U.S., Europe, and Asia-Pac. The Company is headquartered at 13595 Dulles Technology Drive, Herndon, VA, 20171. For more information, visit www.eplus.com, call 888-482-1122, or email info@eplus.com. Connect with ePlus on Facebook at www.facebook.com/ePlusinc and on Twitter at www.twitter.com/ePlus. ePlus. Where Technology Means More®.
ePlus®, Where Technology Means More®, and ePlus products referenced herein are either registered trademarks or trademarks of ePlus inc. in the United States and/or other countries. The names of other companies, products, and services mentioned herein may be the trademarks of their respective owners.
Statements in this press release that are not historical facts may be deemed to be "forward-looking statements." Actual and anticipated future results may vary materially due to certain risks and uncertainties, including, without limitation, possible adverse effects resulting from financial market disruption and general slowdown of the U.S. economy such as our current and potential customers delaying or reducing technology purchases, increasing credit risk associated with our customers and vendors, reduction of vendor incentive programs, and restrictions on our access to capital necessary to fund our operations; our ability to consummate and integrate acquisitions; the possibility of goodwill impairment charges in the future; significant adverse changes in, reductions in, or losses of relationships with major customers or vendors; the demand for and acceptance of, our products and services; our ability to adapt our services to meet changes in market developments; our ability to implement comprehensive plans for the integration of sales forces, cost containment, asset rationalization, systems integration and other key strategies; our ability to reserve adequately for credit losses; our ability to secure our electronic and other confidential information; future growth rates in our core businesses; the impact of competition in our markets; the possibility of defects in our products or catalog content data; our ability to adapt to changes in the IT industry and/or rapid change in product standards; our ability to realize our investment in leased equipment; our ability to hire and retain sufficient qualified personnel; and other risks or uncertainties detailed in our reports filed with the Securities and Exchange Commission. All information set forth in this press release is current as of the date of this release and ePlus undertakes no duty or obligation to update this information.
Preparation and success go hand in hand.
Connect with us or use the form.
IGXGlobal 1 Fore Street London, EC2Y 9DT
Contact Careers Investor Relations Privacy Policy Terms & Conditions
©2000 - 2020 IGXGlobal All Rights ReservedUK Modern Slavery Act

redpajama_set_name: RedPajamaCommonCrawl


text:
Future Stars Shine Bright
The inaugural MTC Showoff showcased the next bright stars of the Midlands during the America's Got Talent-style competition at Harbison Theatre. The captivating event featured a collection of performances from MTC students, faculty, staff, and alumni.
The event began with two days of auditions, during which MTC Showoff producer Larry Hembree and his collection of judges accepted the challenge of narrowing down more than 30 auditionees to 13 finalists.
"Initially, we were only going to choose 10 finalists, but we were so impressed with all of the talent in the auditions that we really couldn't narrow it down from 13. We knew very early on that this was going to be a show to remember," said Hembree.
The "Lucky 13," with their diverse talents ranging from singing and dancing, to guitar playing and beatboxing, competed for a first-place prize of $1,000 on the Harbison Theatre at Midlands Technical College (HT@MTC) stage.
With prize money on the line, the MTC Showoff was a nail-biter until the end and made it no short task for celebrity judges Curtis Wilson from Good Morning Columbia; Kristi Hood from The Dick Goodwin Big Band; and Walter Graham, Choral Director and Fine Arts Department Chair at Dreher High School; to pick the winning act.
"It was a fascinating show with an extraordinary atmosphere. The Harbison Theatre stage really showcased the performers' diverse talents and the MTC community's enthusiasm for the arts," said MTC President Dr. Ronald L. Rhames.
In the end, it was students Christopher Jackson (Early Childhood Development) and Kierra Gray (Associate in Arts) who took home the first-place and runner-up titles respectively. Guitarist Jacob Dixon (Associate in Arts) took home the People's Choice award for the night.
Jackson heartfully sang a special rendition of Justin Timberlake's "Cry Me a River," while Gray sang an original song she created in tribute to her mother. Dixon's exhilarating performance of "Welcome to the Jungle" stole the crowd.
"Larry Hembree, our staff, and the talented contestants truly brought the theatre to life. The MTC Showoff will be a staple here because of their hard work," said HT@MTC Executive Director Kristin Cobb. "It will return!"
Presidents Newsletter


text:
Apple introduces smart battery optimization in iOS 13 to combat battery aging
By Mikey Campbell | 1 year ago
Buried among the sea of features, upgrades, modifications and changes coming to iOS 13 is a new battery optimization tool designed to intelligently hold charge levels below a designated threshold, thereby preventing premature battery aging.
According to Apple's iOS 13 feature preview webpage, the upcoming operating system incorporates a novel battery optimization feature that helps prevent aging by reducing the time a device is spent fully charged.
Lithium-ion batteries like those used in iPhone are somewhat sensitive to electrical currents when charging, a situation that is exacerbated when the cell nears full charge. Existing iOS battery management allows devices to fast charge up to 80% capacity — depending on temperature, duty cycles and other factors — before reverting to a trickle charge, a method designed to extend a battery's lifespan.
Instead of relying on a predefined threshold, iOS 13 will include a tool that learns a user's daily charging routine and waits to top off an iPhone's battery until that extra power is needed. This process will slow the rate of battery aging by reducing the amount of time an iPhone remains fully charged, Apple says.
The feature appears to be an option that can be enabled or disabled as needed.
Apple came under fire in 2017 after it was discovered that an iOS update artificially throttled the performance of iPhones with depleted batteries in a bid to alleviate problems related to random shutdowns. Media and the public cried foul over the unadvertised "feature," prompting Apple to apologize for what it characterized as a "miscommunication."
The tech giant later instituted a battery replacement program to deal with the fallout. In January, CEO Tim Cook revealed some 11 million people took advantage of the cheap battery offer.
Apple issues second developer betas for iOS 14.4, iPadOS 14.4, tvOS 14.4, watchOS 7.3
I am not sure what this means. Does it mean if your iPhone battery is at say, 81% maximum capacity, the slow down to trickle charging happens earlier than 80%, say 61%?
the intelligent charging based on long term use case sounds like a great feature though. I assume it means that if I charge the iPhone every night, it does not fully recharge until early in the morning.
hammeroftruth Said:
Dumbest thing Apple did last year.
They should have rolled back the feature that throttled the processor on an iPhone that had a worn out battery and instead had a popup message that explained your battery has been depleted and will need to be replaced or the device may power off unexpectedly and could possibly damage it if it happens repeatedly.
charlesgres Said:
I think it means that e.g if you typically charge your iPhone at night, that it will hold off charging to full capacity until the morning, so that it doesn't have to be long in a state where battery is full but not being used much..
citpeks Said:
Generally speaking, lithium batteries benefit from being kept, as well as stored, with a partial state of charge. Keeping them fully charged, or close to fully drained impacts their durability. If one desires to preserve the maximum life of the batteries in their devices, avoid the habit of leaving them connected to the charger at 100%, or dead for prolonged periods if they're not going to be in regular use. Practical considerations take priority for most users, who aren't going to sacrifice useful capacity by not topping off, or squeezing every bit out, but there is a trade off. It's not so much the spurious effects of current approaching full charge as the story implies; a good quality charging circuit will accurately taper and cut off the charging current as the battery reaches 100% at the end of the CC/CV cycle. Good to see Apple acknowledge that in its charging strategies.
apple ][ Said:
If storing longterm, it's best to keep at around 50% charged.


text:
iSearch
Integrated Search Menu
ASU Search
Craig Calhoun
craig.calhoun@asu.edu
School of Politics & Global St
University Professor of Social Sciences
Faculty, TEMPE Campus, Mailcode 7805
Sociology Faculty Affiliates
School of Arts Media and Engineering
School for the Future of Innovation in Society > Core Faculty
Sustainability Scientists and Scholars
Public Work
Website: https://calhoun.faculty.asu.edu/
Craig Calhoun is University Professor of Social Sciences. He holds joint appointments in the School of Politics and Global Studies, the School of Public Affairs, the School for the Future of Innovation in Society, the School of Sustainability, and the School of Arts, Media and Engineering.
Prior to coming to Arizona State University, Calhoun served as director and president of the London School of Economics and Political Science (LSE). He was previously president of the Social Science Research Council (SSRC), dean of the Graduate School and director of the University Center for International Studies at University of North Carolina at Chapel Hill (UNC), and founder and director of the Institute for Public Knowledge at New York University (NYU). In addition to UNC and NYU, he has been a professor at Columbia University and the University of Oslo and a visiting professor at several international universities.
Calhoun's work at ASU focuses on strengthening the ability of the social sciences, working together with the natural sciences, engineering and humanities, to address the most complex challenges facing society today—from crises in democracy to the shifting nature of globalization and the future of place-based communities, the complicated social and ethical issues raised by new technologies, and the need for creativity, solidarity, and determination in order to achieve just and sustainable futures.
He is the author or coauthor of 9 books, editor of another 22, and has published more than 70 journal articles and 100 book chapters that address culture, social movements, education, communication, religion, nationalism, the impact of technology, capitalism and globalization, critical theory and philosophy, and contemporary and historical empirical research. His work has been widely reprinted in anthologies and translated into 21 languages.
Calhoun serves on the board of the Mastercard Foundation and co-chairs the board of the American Assembly. He has been elected a fellow of the British Academy, the American Association for Advancement of Science, and the American Philosophical Society, a member of the Council on Foreign Relations, an Einstein Fellow by the City of Berlin, and president of the International Institute of Sociology. He has also served as president of the Berggruen Institute and holds honorary appointments as Centennial Professor at LSE and professor at the College d'Etudes Mondiales of the Maison des Sciences de l'Homme in Paris.
Calhoun received his D.Phil. from Oxford University, combining politics, sociology, and history. He has previous degrees in anthropology from Manchester, Columbia and University of Southern California.
D.Phil. Oxford University
Google Scholar:
Social science and related fields, culture, social movements, education, communication, religion, nationalism, the impact of technology, capitalism, globalization, critical theory, philosophy, contemporary and historical empirical research.
Calhoun is currently completing two books: on the deterioration and renewal of social bases for democracy, and on the tension between cosmopolitanism and nationalism and other forms of more local solidarity. He is also in the earlier stages of projects on the politics of new technologies, the ways infrastructures shape society, and transformations of the university and related knowledge institutions. Among his publications are:
The Question of Class Struggle: Social Foundations of Popular Radicalism During the Industrial Revolution. Chicago: University of Chicago Press, and Oxford: Basil Blackwell, 1982.
"The Radicalism of Tradition: Community Strength or Venerable Disguise and Borrowed Language?" American Journal of Sociology, vol. 88, #5, pp. 886-914, 1983.
"Industrialization and Social Radicalism: British and French Workers' Movements and the Mid-Nineteenth Century Crisis," Theory and Society, vol. 12, #4, pp. 485-504, 1983.
"Computer Technology, Large-Scale Social Integration and the Local Community," Urban Affairs Quarterly, vol. 22 #2, pp. 329-349, 1986.
"Populist Politics, Communications Media, and Large-Scale Social Integration," Sociological Theory, vol. 6 #2, pp. 219-241, 1988.
"Social Theory and the Law: Systems Theory, Normative Justification and Postmodernism," Northwestern University Law Review, vol. 83 #s 1-2, pp. 1701-1763, 1989.
"Indirect Relationships and Imagined Communities: Large Scale Social Integration and the Transformation of Everyday Life," in P. Bourdieu and J.S. Coleman, eds.: Social Theory for a Changing Society. Boulder, CO: Westview Press and New York: Russell Sage Foundation, pp. 95-120, 1991.
"The Infrastructure of Modernity: Indirect Relationships, Information Technology, and Social Integration," in H. Haferkamp and N.J. Smelser, eds.: Social Change and Modernity. Berkeley: University of California Press, pp. 205-236, 1992.
Habermas and the Public Sphere. Cambridge, MA: MIT Press, 1992 (edited)
"Nationalism and Ethnicity," Annual Review of Sociology, Vol. 19: 211-39, 1993.
Neither Gods Nor Emperors: Students and the Struggle for Democracy in China. Berkeley: University of California Press, 1994.
Social Theory and the Politics of Identity. Oxford and Cambridge, MA: Basil Blackwell (edited).
Critical Social Theory: Culture, History and the Challenge of Difference. Oxford: Basil Blackwell, 1995.
Nationalism. Buckingham: Open University Press and Minneapolis: University of Minnesota Press, 1997.
Hannah Arendt and the Meaning of Politics, with John McGowan. Minneapolis: University of Minnesota Press, 1997 (edited)
"Community without Propinquity Revisited: Communications Technology and the Transformation of the Urban Public Sphere," Sociological Inquiry, vol. 68 #3, pp. 373-397, 1998.
"Explanation in Historical Sociology: Narrative, General Theory, and Historically Specific Theory," American Journal of Sociology, vol. 104 #3, pp. 846-71, 1998.
"Legacies of Radicalism: China's Cultural Revolution and the Democracy Movement of 1989" (with Jeffrey Wasserstrom), Thesis 11, 57, pp. 33-52, 1999.
Understanding September 11: Perspectives from the Social Sciences (with Paul Price and Ashley Timmer). New York: New Press, 2002 (edited).
"Imagining Solidarity: Cosmopolitanism, Constitutional Patriotism and the Public Sphere," Public Culture, vol. 14 #1, pp. 147-72, 2002.
"The Class Consciousness of Frequent Travelers: Toward a Critique of Actually Existing Cosmopolitanism," South Atlantic Quarterly v. 101#4, pp. 869-97, 2003.
"A World of Emergencies: Fear, Intervention, and the Limits of Cosmopolitan Order," The 35th Sorokin Lecture, Canadian Review of Sociology and Anthropology, 41.4: 373-95, 2004.
"The University and the Public Good," Thesis Eleven, 84, pp. 7-43, 2005.
Nations Matter: Citizenship, Solidarity, and the Cosmopolitan Dream. Abingdon, Oxford: Routledge, 2007.
Sociology in America: A History. Chicago: University of Chicago Press, 2007 (edited).
"Cosmopolitanism and Nationalism," the Ernest Gellner Lecture for 2007, Nations and Nationalism. Vol. 14 #3: 427-449, 2008.
"Academic Freedom: Public Knowledge and the Structural Transformation of the University," Social Research: An International Quarterly of the Social Sciences, 76 (2): 561-98, 2009.
"The Idea of Emergency: Humanitarian Action and Global (Dis)order, pp. 29-58 in Didier Fassin and Mariella Pandolfi, eds., Contemporary States of Emergency. The Politics of Military and Humanitarian Interventions (Cambridge, MA: Zone Books), 2010.
Knowledge Matters: The Public Mission of the Research University (with Diana Rhoten). New York: Columbia University Press, 2011 (edited).
Business as Usual; The Roots of the Global Financial Crisis (with Georgi Derlugian). New York: NYU Press, 2011 (edited).
The Deepening Crisis: Governance Challenges after Neoliberalism (with Georgi Derlugian). New York: NYU Press, 2011 (edited).
Aftermath: A New Global Economic Order? (with Georgi Derlugian). New York: NYU Press, 2011 (edited).
Rethinking Secularism (with Mark Juergensmeyer and Jonathan VanAntwerpen). Oxford: Oxford University Press, 2011 (edited).
The Roots of Radicalism: Tradition, the Public Sphere, and Early 19th Century Social Movements. Chicago: University of Chicago Press, 2012.
"For the Social History of the Present: Pierre Bourdieu as Historical Sociologist," pp. 36-66 in P.S. Gorski, ed.: Bourdieu and Historical Analysis (Durham, NC: Duke University Press), 2012.
"The Problematic Public: Revisiting Dewey, Arendt, and Habermas," in The Tanner Lectures on Human Values, vol. 32, 2013: 67-107.
Habermas and Religion (with Eduardo Mendieta and Jonathan VanAntwerpen). Cambridge: Polity, 2013 (edited).
Does Capitalism Have a Future? (with Immanuel Wallerstein, Randall Collins, Michael Mann, and Georgi Derluguian). Oxford: Oxford University Press, 2013.
"Integrating the Social Sciences: Area Studies, Quantitative Methods, and Problem-Oriented Research," in R. Frodeman and B. Holbrook, eds., Oxford Handbook of Interdisciplinarity, 2nd Ed. (Oxford: Oxford University Press), 2017.
"Populism, Nationalism, and Brexit," pp. 57-76 in W. Outhwaite, ed.: Brexit: Sociological Responses. London: Anthem Press, 2017.
"Religious Imaginations and Global Transformations," pp. 1-18 in J. Walters, ed.: Religion and Global Affairs. London: Routledge, 2018.
Course Number Course Title
SOS 592 Research
HON 394 Special Topics
HSD 598 Special Topics
HPS 598 Special Topics
Craig Calhoun currently works informally with a number of students and will begin teaching formal classes at ASU in the 2019-20 academic year. He was previously honored for his teaching at UNC, NYU, and Columbia. He has also supervised the PhDs of 40 students now on the faculties of Amsterdam, Brown, CEU, Columbia, LSE, New Mexico, Northwestern, UCLA, Washington and other universities.
Honors / Awards:
Sigillum Magnum, University of Bologna, 2019
Fellow, British Academy 2015
Fellow, Academy of Social Sciences (UK) 2014
Fellow, American Philosophical Society 2012
Einstein Fellow, City of Berlin, Germany 2010
Fellow, American Association for the Advancement of Science 2008
Fellow, Council for Foreign Relations 2005
Fellow, Chinese Academy for Social Sciendes 2000
Honorary doctorate, Erasmus University, Rotterdam 2013
Honorary doctorate, La Trobe University, Melbourne, Australia 2005
Professor of the Year, Columbia University, Department of Sociology 2006
Teacher of the Year, NYU Department of Sociology 2005
Two 'best book' prizes from the American Sociological Association
Editorships:
Editor, University of California Press book series, "Great Transformations," 2018-present.
Editor, Sociological Theory, 1994-99
Editor, Comparative Social Research, 1988-1993
Professional Associations:
American Association for the Advancement of Science, 2006- ;
American Sociological Association, 1974-
British Sociological Association, 1976-86, 2012-
International Sociological Association, 1982-
New York Institute for the Humanities, 2001-
Sociological Research Association, 1994-
American Anthropological Association, 1971-2012
American Historical Association, 1994-2012
Association of International Education Administrators, 1990-96
International Studies Association, 1990-97
Royal Anthropological Institute, 1972-2006
Social Science History Association, 1978-2012
Board member:
Mastercard Foundation, 2014- present
American Assembly, 2011- present
Center for Transcultural Studies, 2010-present
Foundation Maison Sciences de l'Homme, 2013-17
New School for Social Research, 2009-12
Center for Advanced Study in the Behavioral Sciences, 2002-8
Foundation Bourdieu, 2002-8
Member of the Council of St. Paul's Institute, 2015-present
Many offices in professional associations, including American Sociological Association, International Institute of Sociology, Social Science History Association, American Association for the Advancement of Science.
Member of many academic and scientific advisory boards, task forces, visiting committees, appointments commissions, and prize juries.


Are your data information literacy instruction and outreach on the right track?
Cannot attend on December 8? Register for the webinar and you will be notified when it can be viewed online after the event.
Join us for this opportunity to learn more about how librarians are developing data information literacy competencies, curriculum and spaces. Register today for the webinar.


Elizabeth and James Woman Rumor Pleated Crepe Mini Dress Black - Logo. 69% Triacetate, 31% Polyester.
MILLY Woman Crepe Mini Dress Black - Mini length Crepe Sleeveless Hook and concealed zip fastening at back Fully lined Dry clean. 90% Polyester, 10% Spandex®.
Elizabeth and James Shelby Mini Dress - 68% poly 27% rayon 5% spandex. Dry clean only. Unlined.


I am a postdoctoral researcher at QuTech at the Delft University of Technology. My work is focused on developing the network and software architecture for quantum networks. I am part of Stephanie Wehner's Quantum Software group which places me within the Quantum Internet and Networked Computing Roadmap at QuTech and the Quantum Internet Alliance funded by the European Union's Quantum Flagship program.
I did my MSci and PhD in quantum physics, but after graduating from Oxford I worked as a software engineer for two years in the network software team at Metaswitch. This has placed me in the unusual position of having experience in both computer networking and quantum physics which is how I ended up at QuTech. Through my brief stint in industry I have also acquired an interest in purely classical topics such as software-defined networking and programming languages like Rust.
Developing network and software architecture for quantum networks.
Teaching and supervising computer science and physics research students.
Worked on the Hardware Abstraction Layer (HAL) for the Metaswitch layer 2 and layer 3 (IP and MPLS) control plane stack as part of the network software team.
Led C++ education and adoption within my team which began to move away from C shortly before I arrived.
Theoretical research on the competition between weak quantum measurement and many-body dynamics in ultracold bosonic gases.
Taught atomic physics and mathematics to physics undergraduate students.


January 12th will forever be a day of reverence in my heart. 3 major milestones for Craig and I happened over the course of 3 years.
January 12, 2014 I won Miss Arkansas USA and Craig surprised me by coming on stage (even though he wasn't allowed to-typical Craig) and proposing right after I'd been crowned. I thanked God over and over for his blessings, and cried because I was so thankful and humbled.
Tell me that this wasn't a story that God had planned. Tell me that this wasn't his timeline for this season. What a precious story and it's not over yet!!!
I pray that Craig knows, the work he put into me paid off! Craig use to witness to me and I would back peddle. After his death, he got louder, commanding my attention. My family and I are now members of a church and I've been baptized.


text:
Robert Hunja
Director, Public Integrity and Openness
RSS This page in:
Robert Hunja is the Director for Public Integrity and Openness in the World Bank's Governance Global Practice. In that role he oversees the implementation of the World Bank's procurement policies as well as several programs focused on enhancing transparency, citizen participation, and multistakeholder collaboration in countries around the world. He previously served as manager for the Open Government practice in the World Bank Institute where he led programs on Digital Engagement, Open Contracting, Open Budgets and the Open Private Sector Platform. Mr. Hunja, a Kenyan national and lawyer by training, has been doing significant work in the field openness and has worked in the procurement arena for over 17 years. In 2006, he joined the Government of Kenya where he helped establish the Public Procurement Oversight Authority and was its first Director General. He can be reached on Twitter: @RRHunja.
More Posts By Robert
Governance for Development
Imminent! Transformation of the World Bank's Procurement Framework
A new generation of action promises to open up government contracting in Africa
Here are 10 ways to fight corruption
Infrastructure and Public-Private Partnerships
How to more proactively disclose information in public-private partnership projects? Your input needed
STEPing ahead with procurement reform
Openness Is the Key to Effective and Inclusive Development


text:
Work (disambiguation)
(Redirected from Work)
This disambiguation page lists articles associated with the same or a similar title.
We use "work" in everyday speech and very often in a way that is reminiscent of the physicist's definition of work; that is, to proceed along a path through an activity, as "the politician worked her way through the crowd," "the professor worked the problem on the chalkboard," or "the host was working on his second martini when the guests arrived" (one hopes that the path in the latter case was a short one).
Like work, force and energy have well-defined meanings in physics, and they have their counterparts in everyday life. For example, force is that which produces or prevents motion, or imposes a change of velocity on something (a police force can do any of those, depending on the orders given). When a force acts to move an object in physics, we say that work is done on the object by the force (the police officers are not exactly taking it easy when they push back a crowd of fans trying to rush the latest pop singing star: they are doing work). And energy in physics, as in everyday life, is the capacity of a physical system to perform work. When you are "too pooped to pop," you have no energy.
Force is the agent of change, and work is a measure of the change.
In the physical world, work done on a body is accomplished not only by a displacement of the body as a whole from one place to another (like crowd control) but also, for example, by compressing a gas, rotating a shaft, and even directing small particles along a magnetic field.
In physics [r]: Form of energy transferred to a body by a force. [e]
In sociology [r]: Add brief definition or description
In economy [r]: Add brief definition or description
Retrieved from "https://citizendium.org/wiki/index.php?title=Work_(disambiguation)&oldid=634169"


Many organizations fail to realize maximum potential because they lack excellent staff. To ensure that the brand is enhanced, recruiting needs to be outsourced. This guarantees that all the candidates who qualify for the open positions are the most suitable for the job descriptions.
Time is an important asset. It can easily be lost during hiring and recruiting exercises. In addition, the business will divert from its initial function, which is making profit, to recruit new employees. Smaller companies usually don't have a recruiting function meaning that someone who is responsible for doing something else will have to be delegated the duty.
Larger corporations have an upper hand when it comes to recruiting. The relevant department will ensure that talent does not slip through their fingers. On the other hand, smaller businesses cannot manage to compete with their counterparts on this regard. However, the absence of an in-house recruiting function will still not affect their capability of getting the best employees. Outsourcing creates equality.
Recruiting functions require constant changes. With the fast paced industries, keeping up can prove to be challenging. Companies that are rapidly growing or are subject to seasonal changes must outsource. This is because the fluctuations affecting the hiring process can easily cause disruption to the normal running of the business.
Capital and labor costs can be drastically reduced when recruiting is outsourced. In essence, the recruiting fees are quite high when the process is handled in-house. In case hiring standards are set too high, companies also end up spending more money. This is because of the fact that the employees who may get hired may not actually meet the expected standards.
On a conclusive note, the differences between human resource and recruiting need to be clarified. Therefore, outsourced recruiting only covers the hiring task while human resource is more detailed and includes other aspects such as benefits, legal issues and compensation.
This entry was posted in Blog, Staffing. Bookmark the permalink.


The study of mental illness attributions, or beliefs about the causes of mental illness, is well-documented and ongoing in the academic literature. Attributions have traditionally been dichotomized along four dimensions based on their locus, controllability, specificity, and stability and have been associated with a wide variety of thoughts, emotions, beliefs, and actions related to mental illness. However, more recent studies have introduced a new cross-cultural model incorporating lay beliefs about the specific biological, emotional, social, and spiritual causes of mental health problems. The present research outlines the design and initial validation of a comprehensive, international measure of causal beliefs using this new model, the Mental Illness Attribution Questionnaire (MIAQ). The four-stage research project included item formulation, piloting, identification of factor structure, qualitative rating tasks, and initial validation with a sample of 680 international students representing 94 nations. Factors captured causes related to supernatural forces, social/stress, lifestyle, physical health, substance use, heredity/biology, and personal weakness. This structure was tested for model fit using confirmatory factor analysis across three vignette conditions – one each describing a man with schizophrenia, depression, or alcoholism – with further examination yielding strong test-retest reliability and promising convergent, discriminant, and cultural validity data. Taken together, these results provide tentative support for the reliability and validity of the MIAQ as a comprehensive measure of seven categories of mental illness attribution. The measure was validated using existing standards for international scale development and has strong potential for understanding attribution and stigmatizing behavior across cultures.
Knettel, Brandon Alyn, "Development and Preliminary Validation of a Comprehensive, International Measure of Beliefs about the Causes of Mental Illness: The Mental Illness Attribution Questionnaire" (2015). Theses and Dissertations. 2664.


AGrlCanMAC is now on Instagram. Follow, if you like, at AGrlCanMAC on there. If you want a more personal look at me and what adventures I'm on, what crafts I'm creating, what I'm cooking and restaurants I'm grubbin at you can follow me at Creatividual on there. See you in IG land!


Attorney General William P. Barr said Wednesday he thought "spying" on a political campaign occurred in the course of intelligence agencies' investigations into Russian interference in the 2016 election — a startling assertion by the nation's top law enforcement official. . . .
Later in the hearing, Barr offered a more-tempered description of his concerns, saying that he wanted to understand if there was "unauthorized surveillance" on political figures.
This is the language of a PR spinner, not the attorney general of the United States. As my colleague Aaron Blake points out, "spying" is a loaded phrase and a political accusation.
Now, if you didn't already think Barr was failing to fulfill his oath to enforce the laws as the people's lawyer (not Trump's lawyer), this latest episode might do it. Remember that Barr already substituted his own "exoneration" of Trump on obstruction of justice (something the Justice Department's guidelines specify should be a matter for Congress and not for the department), refused to use summaries that Robert S. Mueller III's team prepared in favor of his misleading summary (which he later claimed was not a summary), has failed to turn over the report or Mueller summaries to Congress in a timely manner and has refused to make an unredacted version of the report available to Congress. All in all, it's a shabby record of politicizing the Justice Department in a way that his predecessors avoided.
What's Congress to do? First, see what the redactions look like. Second, go to court if need be to obtain a subpoena (after waiting to see if Barr holds out). Third, bring Mueller in to testify, asking him details about the report but also about Barr's letter and conduct.
If — and it is a big if — Barr has misrepresented the report (including the baseless accusation of "spying"), prevented Congress from fulfilling its constitutional obligations and/or consulted with the White House to determine what to redact (i.e. assisted in a coverup), it would be a serious breach of his obligations to enforce the law. He would actually be hindering its enforcement.
At that point, lawmakers should demand Barr resign. Unless by some miracle he follows that advice, the House, if the above conditions are met, should move to impeachment hearings. The Justice Department under his leadership at that point would have lost its credibility, and the precedent would have been set for future attorneys general to obstruct (just to pick a verb) the investigation of a special counsel.
Only one Cabinet member has ever been impeached: William Belknap, President Ulysses S. Grant's secretary of war. (He was acquitted.) Nevertheless, if there are situations in which Trump compels Cabinet members to lie, manipulate Congress and thwart the law, it should be considered seriously on a case-by-case basis.
Whether or not Barr (or anyone else) is actually removed is of secondary concern. (Unlike Trump, Barr isn't on the ballot in 2020, and most voters aren't going to change their vote based on punishment of a Cabinet member.) It's important for the House to educate the public on the obligations of Cabinet members and to give Cabinet members second and third thoughts about defying the law. It's also important for voters to see if and how Republican senators defend Barr's conduct. A gaggle of them will be up for reelection in 2020.
Consider that Treasury Secretary Steven Mnuchin so far has refused to turn over six years of Trump's tax returns to the House Ways and Means Committee chairman as expressly required by statute. If he continues to refuse, the House can issue a subpoena. Having in its back pocket the power of impeachment might go a long way toward encouraging Mnuchin to comply.
We reach this acute crisis in constitutional governance because Trump and his third-string Cabinet members show contempt for the rule of law and a willingness to blatantly advance falsehoods. In extraordinary times, House Democrats should consider all of their powers — oversight, subpoena and, where appropriate, impeachment.
Let's hope that Barr promptly turns over the report with a scant number of redactions. If not, the House needs do everything possible to defend the rule of law and the public's right to know whether their president was negligent with national security and/or tried to willfully thwart a valid investigation.


Journal of Management Info (JMI), a research journal, is a peer-reviewed Qurtarly research journal that publishes the research work, practitioners and academicians to impart the quality of empirical and theoretical research. Knowledge economy. In order to emphasize upon the importance of research and innovation and to supplement its policy of promoting R & D activities.
Get yourself registered, read the previous issues of the journal and submit your research. Terms and conditions apply.


Gardeners with lots of shade discover early on that the list of visually impactful options is limited. Allow us to introduce astilbes, your new friend. These plants thrive as foundation color on the north (shady) side of your house or garage, or under the canopies of deciduous trees. Astilbes also provide fluffy filler color for flower arrangements, material you're unlikely to find at any floral supply shop. As a bonus, astilbe flowers also attract butterflies and support pollinators like honeybees.
Astilbes prefer some shade and are happy with a range of light from dabbled sunlight to moderately shady to the shade that's found on the north side of buildings. (Sorry, nothing's going to grow robustly in the dense dark shade under that giant blue spruce.) Astilbes are more tolerant of clay soils than are most perennials plants.
Light to moderate feeders, astilbes grow well in average, well-drained soil and don't require rich, perfect loam. Compost, dug in when planting or added as a top dressing later, provides a welcome supply of nutrients.
Plant outdoors when frost danger has past. Astilbes are hardy perennials and can take freezing without ill effects once they are established. For fall planting, get your astilbes in the ground at least 6 weeks before hard frosts typically arrive in your region. This gives the plants time to develop sufficient roots before going into winter.
Your astilbes will be shipped bareroot, in a dormant state. Dormancy means the plant is not in actively growing; it's been held in a cool, dark setting similar to winter garden conditions and is "sleeping". The bareroot term means that the soil has been washed from the roots; there is no risk of introducing any soil-borne diseases into your garden, and the plants are lighter and cleaner to ship. When you plant your astilbe, adding light and moisture, they'll wake up. Roots will start growing in a few days and top growth will be visible in 1-3 weeks. Fall planted astilbes will develop roots in the cool, but not frozen, soil and sprout top growth in spring.
Dig a hole a bit bigger than the root ball and mix in a couple scoops of compost. Fan out the roots in your planting hole and place the crown (area from which leaves will sprout) an inch below soil level. Refill around plant with soil, tap down to eliminate any big air pockets and water well.
In the garden, space your plants so they have enough room to grow without crowding. Allow 18-24" between plants for full size astilbe and 14-18" for the more compact Younique astilbes.
Astilbes require little care during the growing season. During their first season, while they are settling in, make sure they receive 1-2" of water, from rain or irrigation, per week. From their second season on, they'll be fine with about the same or a little less. Feel free to snip flowers; this won't hurt the plants. Or leave the flowers to develop into seed heads and cut these for fall arrangements.
Deer and rabbits tend to avoid astilbes. If hungry deer and/or rabbits are a problem in your area, astilbes could be the perfect solution.
Astilbes will tolerate soil that's on the moist side. If part of your yard has less than perfect drainage and is shady, astilbes could be worth a try. Cool, moist summers are ideal for astilbes.
Where happy, astilbes will readily grow into sizeable clumps. Divide every 3 to 4 years by lifting in the spring when you see new growth and pulling/cutting apart sections. Replant the new astilbes at soil level and water to settle in. Or share with friends!


text:
Q: Unregister push notification when user deletes the app I am stucked in starnge kind of situation that In my app I have push notifications. When user deletes the a app and reinstall some how push notification resumes and start receiving to user before he gets register.
I have all code of push notification after registration. Is there any way to unregister push notification when user deletes the app.
Even user don't open the app and he start getting the push notifications.

redpajama_set_name: RedPajamaStackExchange


Wear your sign with pride Virgo!
Jewel Country is happy to introduce The Virgo Collection, a dazzling range of designs showcasing the beauty of the Maiden, the symbol of this zodiac sign. These exclusive designs have been crafted with diamonds and gold. The blue sapphire gemstone in combination with diamonds soothes the heart and brings a sense of love, peace and tranquillity to one's aura. This natural stone is one of the most powerful stones on earth.
The gold used in the Virgo Collection comes in two colours; yellow and white.
Gift a zodiac sign to your Virgo friend and keep the love forever.


text:
Co+op, welcome to the table
Why Co-ops?
Co-op Stories
Co-op Video Stories
Co+op Kitchen Videos
Eating for Health
Co+op Deals
By: Co+op, welcome to the table
For such a small fruit, limes pack a powerful, puckering punch. In fact, many varieties of limes are more acidic than lemons. While in America lime wedges are most often found on the rim of a glass, many cuisines—like Southeast Asian, Mexican, Latin American and Caribbean—count on limes for their distinctive flavor.
Originating in Southeast Asia, limes were introduced into Egypt and Africa around the 10th century by Arab traders. They spread throughout southern Europe during the Crusades and arrived in the New World with Columbus. Spanish explorers brought West Indies limes to Florida in the 16th century. Today, limes are still grown commercially in Florida, as well as in the Southwest and California. Worldwide, they're grown in Brazil, Mexico, Argentina, India and Spain.
In addition to being high in vitamin C, limes are also a very good source of dietary fiber and provide calcium, iron and copper.
There are both sweet and sour varieties, though sweet limes aren't as readily available in the United States as sour limes. You'll find limes that are oval or round, usually one to two inches in diameter.
The most popular sour varieties are the Tahitian limes, large and very acidic, with a pale, finely grained pulp. There are two varieties of Tahitian: Persian (egg-shaped and containing seeds) and Bearss (smaller and seedless). Key limes are smaller and rounder than Tahitian limes. Pale yellowish-green, they also have a high acid content and are very juicy and strong. They're used primarily for baking—most notably Key lime pies. Mexican limes are also smaller than Tahitian limes. They're very aromatic, with bright green skins.
Native to India, the sweet lime (aka Palestine sweet lime) is aromatic, sweet and non-acidic. It has a thin, smooth, yellow skin and is sometimes mistaken for lemons. The sweet lime can be used in place of other limes (especially when you want to tone down the tang). It's also perfect for beverages, marmalades and fruit salads.
Lime is a key ingredient in Southeast Asian, Mexican, Latin American and Caribbean cooking. A natural with seafood, simply squirt it on any grilled fish, shrimp or scallops. Use it to make a marinade, as in this recipe for Chili Lime Shrimp, which relies on tangy lime juice, garlic and jalapeños. Or try Cilantro Lime Noodles with Shrimp and Snow Peas or this Thai Fish Soup, which combines the zesty fruit with spiced coconut milk for a creamy, flavorful broth. A simple can of tuna becomes an Asian-inspired Ginger Tuna Salad when lime juice is combined with lemongrass and fresh ginger.
Tangy limes also enliven any salad; in Chicken Quesadillas with Salad and Chipotle Lime Dressing, a lime-dressed salad is the bedding for quesadillas. Lime juice can turn any vinaigrette into something with pizzazz, as in this recipe for Arugula with Tomatoes and Avocados in Lime Vinaigrette. And in this Curry Lime Dressing with Arugula & Pepper Salad, zesty lime is the perfect partner for lively arugula.
Consider using lime juice in place of lemon juice—in beverages, as garnishes, or dressings. Gazpacho often calls for a bit of lemon; here's a Rustic Gazpacho recipe that uses lime instead.
In beverages, limes can't be topped for liveliness. A touch of lime completes this Watermelon-Strawberry Lime Cooler, for example.
By the way, if your recipe calls for lime juice, juicing the fruit at room temperature will produce more juice than when the fruit is cold. You can also roll the fruit on a flat surface under the palm of your hand before juicing.
Unless you're looking for sweet limes (which are yellow), choose limes that are light to deep green and glossy. The skin should be thin and smooth. Avoid hard, shriveled skin or coarse, thick skins, which are signs of dryness. Small brown areas are OK, but soft spots or large blemishes show the fruit has been damaged. The fruit should be heavy for its size, and, if it's ripe, the lime will be firm but not hard.
Store limes in the refrigerator for up to two weeks.
Tags: citrus, ingredients, limes
Chili Lime Shrimp
Watermelon-Strawberry Lime Cooler
Curry Lime Dressing with Arugula & Pepper Salad
ADVOCACY TOPICS
Co-ops support organic. Discover more about delicious organic food and its environmental benefits.
Learn more about fair trade and the benefits it provides to both producers and their communities.
Co-ops believe in your right to know what's in your food and how it's grown. Find out more about food labeling issues.
Crispy Honey Hot Wings
Take Care of YOU with Savings at the Co-op
View all Featured Content
Co-op Finder
Winter Squash Guide
Irish Bangers and Mash
View all Trending Content
© 2019 NCG


text:
Home » sport » Tim Hudson to have ankle surgery
Tim Hudson to have ankle surgery
NEW YORK -- Tim Hudson broke his right ankle when he was stepped on while covering first base Wednesday night, ending one of his best starts this season and spoiling Atlanta's 8-2 victory against the New York Mets.
The Braves said Hudson will have surgery in Atlanta when swelling to the ankle goes down.
"We won, but it's a tough night," catcher Brian McCann said.
Hudson, 38, was working on a four-hit shutout in the eighth inning when Eric Young Jr. hit a grounder that was knocked down by Braves first baseman Freddie Freeman. Hudson took Freeman's toss at the bag just before Young arrived, and the speedy outfielder inadvertently stepped on the back of Hudson's lower leg, driving the pitcher's right ankle awkwardly into the ground.
"I flipped and spun," Freeman said. "I didn't see it and I don't want to see it."
Hudson immediately went down in obvious pain, and Young rushed over to check on him. Braves manager Fredi Gonzalez and a trainer also ran out to aid Hudson, who took off his cap and held his shaved head in his hands.
The crowd at Citi Field groaned when the replay was shown on the big video board. Gonzalez said he hadn't seen it -- and wasn't sure he wanted to.
EMS workers strapped Hudson to a backboard and drove him off the field on a cart as fans applauded.
Young remained nearby throughout the entire delay, which lasted almost 10 minutes, and shook Hudson's hand before he was carted away. Hudson nodded back at him.
"I'm hustling down the line like I always do, going for the base," Young said. "I saw his foot, as I'm going for the base, right there in the middle, as I came down, I knew I didn't get any of the base. I know I got all of his foot. I pretty much knew it was probably broke right as I did it, and that's why I sprinted right back to him and tried to console him as much as I could and apologize.
"I was able to see Tim before they took him to the hospital. He told me it wasn't my fault, just one of those freak plays that happened."
Hudson (8-7) won his fourth straight start, striking out nine in 7 2-3 innings -- his most since fanning 10 Mets on June 17, 2011.
It's unclear how long Hudson will be sidelined or whether he'll be able to pitch again this season. Regardless, the Braves know they'll be minus one of their top pitchers for an extended period. They've built an eight-game cushion in the division, but losing Hudson could damage their postseason chances.
"It's terrible," second baseman Dan Uggla said. "That's a big blow."
It's the second starting pitching loss for the Braves this week. Left-hander Paul Maholm (bruised left wrist) was placed on the 15-day disabled list Monday.
Right-hander Brandon Beachy, recovering from Tommy John surgery from June 2012, made another rehab start Wednesday night for Triple-A Gwinnett, allowing one earned run in six inning. He could be back in the rotation soon.
Information from ESPNNewYork.com's Matt Ehalt and The Associated Press was used in this report.
source:http://espn.go.com/new-york/mlb/story/_/id/9507186/tim-hudson-atlanta-braves-fractures-right-ankle
Label: sport
Copyright © 2011. Area Information: Tim Hudson to have ankle surgery . All Rights Reserved


This wonderful 3 bedroom 2 bathroom garage home with 1,492 sf built in 2007 located in Tropical Gulf Acres in South Punta Gorda. Home has a great floor plan with hurricane shutters as well. This home is less than a 1 mile from US 41 and just minutes to I-75.
Rain Gutters. In County, Paved Road.
I am interested in 12303 Minnesota Avenue, Punta Gorda, FL 33955.


text:
Border Controls; Early Election Now Likely
Climate Change, Election Cycle, Energy, Federal Politics, Immigration
Morrison Says No Early Election – But For How Long Can He Run A Minority Government
On Tuesday I referred to Andrew Bolt's suggestion on Sky News that the decision by Labor to push legislation through the lower House allowing asylum seekers on Nauru and Manus Island to "doctor" themselves to Australia for treatment without ministerial approval and, by obtaining court approval, to then "recuperate" here for a indefinite period. With the support of the Greens et al, this legislation has now passed the Senate too but, despite his strong attack on Shorten and accusation that he has broken what had seemed a bipartisan agreement on border control, Morrison has said that he will not call an early election. Even so, Bolt tonight again repeated on Sky News his advocacy of an early election by taking advantage of the policy windfall provided by Labor.
Morrison's attack on Shorten for showing "weakness" in handling Caucus is obviously correct (as the emergence of Deputy Albanese on TV suggests) and provides a useful stick for Morrison to use and argue that, if Labor were to win the election, they would again allow border controls to be breached. Morrison has already established that up to 300 refugees have obtained the approval of doctors to be transferred to Australia (see Possible Effects of Labor Legislation on Refugeesand Bolt Says Labor's Legislation Allows Asylum Seekers to Come To Aus). It seems likely that under Labor border controls would be eased and smugglers would again penetrate access in one way or another (see Sheridan Says Labor Shameful).
But as electorally beneficial as it would likely be, Morrison can't rely only on using such a stick. Other policies need to be finalized and presented, including the budget.
It also remains to be seen how long he can run a minority government where there is an opposition which is able to force legislation right through Parliament and effectively change the Coalition's policies on other matters too. There has already been a (failed) attempt today to establish a Royal Commission on some failure of access to disabilities and there will inevitably be a debate on aspects of the budget set to be presented in early April. That would provide Labor/Greens with opportunities to have amendments to the budget passed through Parliament not by the Coalition but by the Opposition.
Labor's success in obtaining the passage of legislation on Manus/Nauran refugees has changed the management of government picture and makes it more realistic for the Coalition to think of an early election. This is not simply to take advantage of its win on border control strategy but to avoid the potential loss of control of Parliament and its own policies.
I have already criticized the energy policy developed by Energy Minister Taylor particularly its retention of the targets for reducing emissions and his support for increased usage of renewable and the emergence of estimates of much higher costs for the latter than previously thought. I have also questioned the use of divestiture powers by a minister who would be doing so on the basis that he accepted advice that a company displayed "market disconduct" and was not allowing prices to fall.
Reports emerged this afternoon that, instead of voting on a bill to give effect to Taylor's "model" (sic), Treasurer Frydenburg has announced that the divestiture power would become a component of election policies. He is reported as saying that
"Our legislation to prohibit energy market misconduct is an important reform that aims to hold the big energy companies to account and drive competition in the market and lower prices for consumers. We will be taking this policy to the election which forms our response to the ACCC inquiry into retail electricity prices. It was on the Labor Party's watch when they were last in government that electricity prices doubled and now they are obstructing key reforms which save money for Australian families and businesses" (see Coalition Says Big Sticks Policy Now To Be Taken to The Election).
The report also makes it clear that had the government attempted to pass the bill now it would have faced major amendments from Labor. This seems to confirm that there is likely to be an early election – possibly immediately after the budget.
Minority Govt Problems; Over-rule Qld Labor's Refusal on Adani Coal Mine
To view content in the archive of The Institute of Private Enterprise (pre April 2014) click here
Search IPE


text:
static const CGFloat kTabHeight = 44.0f;
static const CGFloat kTabOffset = 56.0f;
static const CGFloat kTabWidth = 128.0;
static const CGFloat kIndicatorHeight = 5.0;
static const BOOL kStartFromSecondTab = NO;
static const BOOL kCenterCurrentTab = NO;
static const BOOL kFixFormerTabsPositions = NO;
static const BOOL kFixLatterTabsPositions = NO;

#define kIndicatorColor [UIColor colorWithRed:178.0/255.0 green:203.0/255.0 blue:57.0/255.0 alpha:0.75]
#define kTabsViewBackgroundColor [UIColor colorWithRed:234.0/255.0 green:234.0/255.0 blue:234.0/255.0 alpha:.75]
#define kContentViewBackgroundColor [UIColor colorWithRed:248.0/255.0 green:248.0/255.0 blue:248.0/255.0 alpha:0.75]
#define kDividerColor [UIColor grayColor]

#pragma mark - UIColor+Equality

#pragma mark - TabView
@class TabView;

@interface TabView : UIView
@end

@implementation TabView
- (id)initWithFrame:(CGRect)frame
{
	self = [super initWithFrame:frame];
	if (self) {
		self.backgroundColor = [UIColor clearColor];
	}
	return self;
}

@end

#pragma mark - ViewPagerController

@interface ViewPagerController () <UIPageViewControllerDataSource, UIPageViewControllerDelegate, UIScrollViewDelegate>

// Tab and content stuff
@property UIScrollView *tabsView;
@property UIView *contentView;
@property UIPageViewController *pageViewController;
@property(assign) id <UIScrollViewDelegate> actualDelegate;
// Tab and content cache
@property NSMutableArray *tabs;
@property NSMutableArray *contents;
@property(nonatomic) NSUInteger tabCount;
@property(nonatomic) NSUInteger activeTabIndex;
@property(getter = isAnimatingToTab) BOOL animatingToTab;
@property(getter = isDefaultSetupDone) BOOL defaultSetupDone;
@property(nonatomic, strong) UIView *underlineStroke;
@property(nonatomic) BOOL didTapOnTabView;
@property(nonatomic, strong) UIView *underlineStrokeAlphaKeeper;
@property(nonatomic, strong) UIView *divider;

@end

@implementation ViewPagerController

#pragma mark - Init

- (id)initWithCoder:(NSCoder *)aDecoder
{
	self = [super initWithCoder:aDecoder];
	if (self) {
		[self defaultSettings];
	}
	return self;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
	self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
	if (self) {
		[self defaultSettings];
	}
	return self;
}

#pragma mark - View life cycle

- (void)viewDidLoad
{
	[super viewDidLoad];
}

- (void)viewWillAppear:(BOOL)animated
{
	[super viewWillAppear:animated];

	// Do setup if it's not done yet
	if (![self isDefaultSetupDone]) {
		[self defaultSetup];
	}
}

- (void)viewWillLayoutSubviews
{
	// Re-layout sub views
	[self layoutSubviews];
}

- (void)didReceiveMemoryWarning
{
	[super didReceiveMemoryWarning];
}

- (void)layoutSubviews
{
	CGFloat topLayoutGuide = self.topLayoutGuide.length;

	CGRect frame = self.tabsView.frame;
	frame.origin.x = 0.0;
	frame.origin.y = self.tabLocation == ViewPagerTabLocationTop ? topLayoutGuide : CGRectGetHeight(self.view.frame) - self.tabHeight;
	frame.size.width = CGRectGetWidth(self.view.frame);
	frame.size.height = self.tabHeight;
	self.tabsView.frame = frame;

	frame = self.contentView.frame;
	frame.origin.x = 0.0;
	frame.origin.y = self.tabLocation == ViewPagerTabLocationTop ? topLayoutGuide + CGRectGetHeight(self.tabsView.frame) : topLayoutGuide;
	frame.size.width = CGRectGetWidth(self.view.frame);
	frame.size.height = CGRectGetHeight(self.view.frame) - (topLayoutGuide + CGRectGetHeight(self.tabsView.frame)) - (self.tabBarController.tabBar.hidden ? 0 : CGRectGetHeight(self.tabBarController.tabBar.frame));
	self.contentView.frame = frame;
}

#pragma mark - IBAction

- (IBAction)handleTapGesture:(id)sender
{
	// Get the desired page's index
	UITapGestureRecognizer *tapGestureRecognizer = (UITapGestureRecognizer *) sender;
	UIView *tabView = tapGestureRecognizer.view;
	__block NSUInteger index = [self.tabs indexOfObject:tabView];

	//if Tap is not selected Tab(new Tab)
	if (self.activeTabIndex != index) {
		// Select the tab
		self.animatingToTab = YES;
		[self selectTabAtIndex:index didSwipe:NO];
		self.animatingToTab = NO;
	}
}

#pragma mark - Interface rotation

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
	// Re-layout sub views
	[self layoutSubviews];

	// Re-align tabs if needed
	self.activeTabIndex = self.activeTabIndex;
}

#pragma mark - Setters

- (void)setTabHeight:(CGFloat)tabHeight
{
	NSAssert((tabHeight > 4.0) || tabHeight < CGRectGetHeight(self.view.frame),
			 @"The tab bar height should be higher then 4 and smaller then the view.height");
	_tabHeight = tabHeight;
}

- (void)setTabOffset:(CGFloat)tabOffset
{
	NSAssert((tabOffset > 0.0) || (tabOffset < CGRectGetWidth(self.view.frame) - self.tabWidth),
			 @"The tab bar offset should be bigger then 4 and smaller then (view.width - tab.width)");
	_tabOffset = tabOffset;
}

- (void)setTabWidth:(CGFloat)tabWidth
{
	NSAssert((tabWidth > 4.0) || tabWidth < CGRectGetWidth(self.view.frame),
			 @"The tab bar width should be higher then 4 and smaller then the view.width");
	_tabWidth = tabWidth;
}

- (void)setActiveTabIndex:(NSUInteger)activeTabIndex
{
	// Set current activeTabIndex
	_activeTabIndex = activeTabIndex;

	// Bring tab to active position
	// Position the tab in center if centerCurrentTab option is provided as YES
	UIView *tabView = [self tabViewAtIndex:self.activeTabIndex];
	CGRect frame = tabView.frame;

	if (self.centerCurrentTab) {

		frame.origin.x += (CGRectGetWidth(frame) / 2);
		frame.origin.x -= CGRectGetWidth(self.tabsView.frame) / 2;
		frame.size.width = CGRectGetWidth(self.tabsView.frame);

		if (frame.origin.x < 0) {
			frame.origin.x = 0;
		}

		if ((frame.origin.x + CGRectGetWidth(frame)) > self.tabsView.contentSize.width) {
			frame.origin.x = (self.tabsView.contentSize.width - CGRectGetWidth(self.tabsView.frame));
		}
	} else {

		frame.origin.x -= self.tabOffset;
		frame.size.width = CGRectGetWidth(self.tabsView.frame);
	}

	[self.tabsView scrollRectToVisible:frame animated:self.defaultSetupDone];
}

- (void)setActiveContentIndex:(NSUInteger)activeContentIndex
{

	// Get the desired viewController
	UIViewController *viewController = [self viewControllerAtIndex:activeContentIndex];

	if (!viewController) {
		viewController = [[UIViewController alloc] init];
		viewController.view = [[UIView alloc] init];
		viewController.view.backgroundColor = [UIColor clearColor];
	}

	// __weak pageViewController to be used in blocks to prevent retaining strong reference to self
	__weak UIPageViewController *weakPageViewController = self.pageViewController;
	__weak ViewPagerController *weakSelf = self;

	if (activeContentIndex == self.activeContentIndex) {

		[self.pageViewController setViewControllers:@[viewController]
										  direction:UIPageViewControllerNavigationDirectionForward
										   animated:NO
										 completion:^(BOOL completed) {
											 weakSelf.animatingToTab = YES;
										 }];

	} else if (!(activeContentIndex + 1 == self.activeContentIndex || activeContentIndex - 1 == self.activeContentIndex)) {

		[self.pageViewController setViewControllers:@[viewController]
										  direction:(activeContentIndex < self.activeContentIndex) ? UIPageViewControllerNavigationDirectionReverse : UIPageViewControllerNavigationDirectionForward
										   animated:YES
										 completion:^(BOOL completed) {

											 weakSelf.animatingToTab = YES;

											 // Set the current page again to obtain synchronisation between tabs and content
											 dispatch_async(dispatch_get_main_queue(), ^{
												 [weakPageViewController setViewControllers:@[viewController]
																				  direction:(activeContentIndex < weakSelf.activeContentIndex) ? UIPageViewControllerNavigationDirectionReverse : UIPageViewControllerNavigationDirectionForward
																				   animated:NO
																				 completion:nil];
											 });
										 }];

	} else {

		[self.pageViewController setViewControllers:@[viewController]
										  direction:(activeContentIndex < self.activeContentIndex) ? UIPageViewControllerNavigationDirectionReverse : UIPageViewControllerNavigationDirectionForward
										   animated:YES
										 completion:^(BOOL completed) {
											 weakSelf.animatingToTab = YES;
										 }];
	}

	// Clean out of sight contents
	NSInteger index;
	index = self.activeContentIndex - 1;
	if (index >= 0 &&
		index != activeContentIndex &&
		index != activeContentIndex - 1) {
		self.contents[index] = NSNull.null;
	}
	index = self.activeContentIndex;
	if (index != activeContentIndex - 1 &&
		index != activeContentIndex &&
		index != activeContentIndex + 1) {
		self.contents[index] = [NSNull null];
	}
	index = self.activeContentIndex + 1;
	if (index < self.contents.count &&
		index != activeContentIndex &&
		index != activeContentIndex + 1) {
		self.contents[index] = [NSNull null];
	}

	_activeContentIndex = activeContentIndex;
}

#pragma mark - Public methods

- (void)reloadData
{
	//	[self defaultSettings];
	// Call to setup again with the updated data
	[self defaultSetup];

	[self.view setNeedsDisplay];
}

- (void)selectTabAtIndex:(NSUInteger)index
{
	[self selectTabAtIndex:index didSwipe:NO];
}

- (void)selectTabAtIndex:(NSUInteger)index didSwipe:(BOOL)didSwipe
{
	if (index >= self.tabCount) {
		return;
	}

	self.didTapOnTabView = !didSwipe;
	self.animatingToTab = YES;

	// Keep a reference to previousIndex in case it is needed for the delegate
	NSUInteger previousIndex = self.activeTabIndex;

	// Set activeTabIndex
	self.activeTabIndex = index;

	// Set activeContentIndex
	self.activeContentIndex = index;

	// Inform delegate about the change
	if ([self.delegate respondsToSelector:@selector(viewPager:didChangeTabToIndex:)]) {
		[self.delegate viewPager:self didChangeTabToIndex:self.activeTabIndex];
	}
	else if ([self.delegate respondsToSelector:@selector(viewPager:didChangeTabToIndex:fromIndex:)]) {
		[self.delegate viewPager:self didChangeTabToIndex:self.activeTabIndex fromIndex:previousIndex];
	}
	else if ([self.delegate respondsToSelector:@selector(viewPager:didChangeTabToIndex:fromIndex:didSwipe:)]) {
		[self.delegate viewPager:self didChangeTabToIndex:self.activeTabIndex fromIndex:previousIndex didSwipe:didSwipe];
	}
}

- (void)setNeedsReloadOptions
{
	// We should update contentSize property of our tabsView, so we should recalculate it with the new values
	CGFloat contentSizeWidth = 0;

	// Give the standard offset if fixFormerTabsPositions is provided as YES
	if (self.fixFormerTabsPositions) {

		// And if the centerCurrentTab is provided as YES fine tune the offset according to it
		if (self.centerCurrentTab) {
			contentSizeWidth = (CGRectGetWidth(self.tabsView.frame) - self.tabWidth) / 2.0f;
		} else {
			contentSizeWidth = self.tabOffset;
		}
	}

	// Update every tab's frame
	for (NSUInteger i = 0; i < self.tabCount; i++) {

		UIView *tabView = [self tabViewAtIndex:i];
		CGRect frame = tabView.frame;
		frame.origin.x = contentSizeWidth;
		frame.size.width = self.tabWidth;
		tabView.frame = frame;

		if (i < self.tabCount - 1) {
			contentSizeWidth += CGRectGetWidth(tabView.frame) + self.padding;
		}
	}

	// Extend contentSizeWidth if fixLatterTabsPositions is provided YES
	if (self.fixLatterTabsPositions) {

		// And if the centerCurrentTab is provided as YES fine tune the content size according to it
		if (self.centerCurrentTab) {
			contentSizeWidth += (CGRectGetWidth(self.tabsView.frame) - self.tabWidth) / 2.0;
		} else {
			contentSizeWidth += CGRectGetWidth(self.tabsView.frame) - self.tabWidth - self.tabOffset;
		}
	}

	// Update tabsView's contentSize with the new width
	self.tabsView.contentSize = CGSizeMake(contentSizeWidth, self.tabHeight);

}

- (void)setNeedsReloadColors
{
	// Update indicatorColor to check again later
	self.indicatorColor = self.indicatorColor;

	// Update it
	self.tabsView.backgroundColor = self.tabsViewBackgroundColor;

	// Update tabsViewBackgroundColor to check again later
	self.tabsViewBackgroundColor = self.tabsViewBackgroundColor;

	// Yup, update
	self.contentView.backgroundColor = self.contentViewBackgroundColor;

	// Update this, too, to check again later
	self.contentViewBackgroundColor = self.contentViewBackgroundColor;
}

#pragma mark - Private methods

- (void)defaultSettings
{

	self.contentViewBackgroundColor = kContentViewBackgroundColor;
	self.tabsViewBackgroundColor = kTabsViewBackgroundColor;
	self.indicatorColor = kIndicatorColor;
	self.dividerColor = kDividerColor;
	self.fixLatterTabsPositions = kFixLatterTabsPositions;
	self.fixFormerTabsPositions = kFixFormerTabsPositions;
	self.centerCurrentTab = kCenterCurrentTab;
	self.startFromSecondTab = kStartFromSecondTab;
	self.shouldAnimateIndicator = ViewPagerIndicatorAnimationWhileScrolling;
	self.tabLocation = ViewPagerTabLocationTop;
	self.indicatorHeight = kIndicatorHeight;
	self.tabOffset = kTabOffset;
	self.tabWidth = kTabWidth;
	self.tabHeight = kTabHeight;
	self.padding = 0.0;
	self.dividerHeight = 0.5;

	self.didTapOnTabView = NO;

	// pageViewController
	self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
															  navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
																			options:nil];

	// Setup some forwarding events to hijack the scrollView
	// Keep a reference to the actual delegate
	self.actualDelegate = ((UIScrollView *) self.pageViewController.view.subviews[0]).delegate;
	// Set self as new delegate
	((UIScrollView *) self.pageViewController.view.subviews[0]).delegate = self;

	self.pageViewController.dataSource = self;
	self.pageViewController.delegate = self;

	self.animatingToTab = YES;
	self.defaultSetupDone = NO;
	self.shouldShowDivider = NO;
}

- (void)defaultSetup
{
	self.defaultSetupDone = NO;
	// Empty tabs and contents
	for (UIView *tabView in self.tabs) {
		[tabView removeFromSuperview];
	}
	self.tabsView.contentSize = CGSizeZero;

	[self.tabs removeAllObjects];
	[self.contents removeAllObjects];

	// Get tabCount from dataSource
	self.tabCount = [self.dataSource numberOfTabsForViewPager:self];

	// Populate arrays with [NSNull null];
	self.tabs = [NSMutableArray arrayWithCapacity:self.tabCount];
	for (NSUInteger i = 0; i < self.tabCount; i++) {
		[self.tabs addObject:[NSNull null]];
	}

	self.contents = [NSMutableArray arrayWithCapacity:self.tabCount];
	for (NSUInteger i = 0; i < self.tabCount; i++) {
		[self.contents addObject:[NSNull null]];
	}

	// Add tabsView
	self.tabsView = (UIScrollView *) [self.view viewWithTag:kTabViewTag];

	if (!self.tabsView) {

		self.tabsView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, CGRectGetWidth(self.view.frame), self.tabHeight)];
		self.tabsView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
		self.tabsView.backgroundColor = self.tabsViewBackgroundColor;
		self.tabsView.scrollsToTop = NO;
		self.tabsView.showsHorizontalScrollIndicator = NO;
		self.tabsView.showsVerticalScrollIndicator = NO;
		self.tabsView.bounces = NO;
		self.tabsView.tag = kTabViewTag;

		[self.view insertSubview:self.tabsView atIndex:0];

		self.underlineStroke = [UIView new];
		self.underlineStrokeAlphaKeeper = [UIView new];
		[self.tabsView addSubview:self.underlineStrokeAlphaKeeper];
		[self.tabsView addSubview:self.underlineStroke];

		if (self.shouldShowDivider) {
			self.divider = [UIView new];
			[self.tabsView insertSubview:self.divider atIndex:0];
		}
	}

	// Add tab views to _tabsView
	CGFloat contentSizeWidth = 0;

	// Give the standard offset if fixFormerTabsPositions is provided as YES
	if (self.fixFormerTabsPositions) {

		// And if the centerCurrentTab is provided as YES fine tune the offset according to it
		if (self.centerCurrentTab) {
			contentSizeWidth = (CGRectGetWidth(self.tabsView.frame) - self.tabWidth) / 2.0f;
		} else {
			contentSizeWidth = self.tabOffset;
		}
	}

	for (NSUInteger i = 0; i < self.tabCount; i++) {

		UIView *tabView = [self tabViewAtIndex:i];
		CGRect frame = tabView.frame;
		frame.origin.x = contentSizeWidth;
		frame.size.width = self.tabWidth;
		tabView.frame = frame;

		[self.tabsView addSubview:tabView];

		if (i < self.tabCount) {
			contentSizeWidth += CGRectGetWidth(tabView.frame);
			if (i < self.tabCount - 1) {
				contentSizeWidth += self.padding;
			}
		}

		// To capture tap events
		UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
		[tabView addGestureRecognizer:tapGestureRecognizer];
	}

	// Extend contentSizeWidth if fixLatterTabsPositions is provided YES
	if (self.fixLatterTabsPositions) {

		// And if the centerCurrentTab is provided as YES fine tune the content size according to it
		if (self.centerCurrentTab) {
			contentSizeWidth += (CGRectGetWidth(self.tabsView.frame) - self.tabWidth) / 2.0;
		} else {
			contentSizeWidth += CGRectGetWidth(self.tabsView.frame) - self.tabWidth - self.tabOffset;
		}
	}

	self.tabsView.contentSize = CGSizeMake(contentSizeWidth, self.tabHeight);

	// Draw an indicator line if tab is selected
	if (self.shouldShowDivider) {
		CGFloat minDividerWidth = MAX(contentSizeWidth, self.view.frame.size.width);
		self.divider.frame = CGRectMake(0, self.tabHeight - self.dividerHeight, minDividerWidth, self.dividerHeight);
		self.divider.backgroundColor = self.dividerColor;
	}

	// Add contentView
	self.contentView = [self.view viewWithTag:kContentViewTag];

	if (!self.contentView) {

		self.contentView = self.pageViewController.view;
		self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
		self.contentView.backgroundColor = self.contentViewBackgroundColor;
		self.contentView.bounds = self.view.bounds;
		self.contentView.tag = kContentViewTag;

		[self.view insertSubview:self.contentView atIndex:0];
	}
	// Select starting tab
	NSUInteger index = self.activeContentIndex;//self.startFromSecondTab ? 1 : 0;
	[self selectTabAtIndex:index didSwipe:NO];

	CGRect rect = [self tabViewAtIndex:self.activeContentIndex].frame;
	rect.origin.y = rect.size.height - self.indicatorHeight;
	rect.size.height = self.indicatorHeight;
	self.underlineStroke.frame = rect;
	self.underlineStrokeAlphaKeeper.frame = rect;
	self.underlineStroke.backgroundColor = self.indicatorColor;
	self.underlineStrokeAlphaKeeper.backgroundColor = [kTabsViewBackgroundColor colorWithAlphaComponent:1];

	// Set setup done
	self.defaultSetupDone = YES;
}

- (TabView *)tabViewAtIndex:(NSUInteger)index
{
	if (index >= self.tabCount) {
		return nil;
	}

	if ([self.tabs[index] isEqual:[NSNull null]]) {

		// Get view from dataSource
		UIView *tabViewContent = [self.dataSource viewPager:self viewForTabAtIndex:index];
		tabViewContent.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

		// Create TabView and subview the content
		TabView *tabView = [[TabView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.tabWidth, self.tabHeight)];
		[tabView addSubview:tabViewContent];
		[tabView setClipsToBounds:YES];

		tabViewContent.center = tabView.center;

		// Replace the null object with tabView
		self.tabs[index] = tabView;
	}

	return self.tabs[index];
}

- (UIViewController *)viewControllerAtIndex:(NSUInteger)index
{
	if (index >= self.tabCount) {
		return nil;
	}

	if ([self.contents[index] isEqual:[NSNull null]]) {

		UIViewController *viewController;

		if ([self.dataSource respondsToSelector:@selector(viewPager:contentViewControllerForTabAtIndex:)]) {
			viewController = [self.dataSource viewPager:self contentViewControllerForTabAtIndex:index];
		} else if ([self.dataSource respondsToSelector:@selector(viewPager:contentViewForTabAtIndex:)]) {

			UIView *view = [self.dataSource viewPager:self contentViewForTabAtIndex:index];

			// Adjust view's bounds to match the pageView's bounds
			UIView *pageView = [self.view viewWithTag:kContentViewTag];
			view.frame = pageView.bounds;

			viewController = [UIViewController new];
			viewController.view = view;
		} else {
			viewController = [[UIViewController alloc] init];
			viewController.view = [[UIView alloc] init];
		}

		self.contents[index] = viewController;
	}

	return self.contents[index];
}

- (NSUInteger)indexForViewController:(UIViewController *)viewController
{
	return [self.contents indexOfObject:viewController];
}

#pragma mark - UIPageViewControllerDataSource

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
	NSUInteger index = [self indexForViewController:viewController];
	index++;
	return [self viewControllerAtIndex:index];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
	NSUInteger index = [self indexForViewController:viewController];
	index--;
	return [self viewControllerAtIndex:index];
}

#pragma mark - UIPageViewControllerDelegate

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
	UIViewController *viewController = self.pageViewController.viewControllers[0];

	// Select tab
	NSUInteger index = [self indexForViewController:viewController];
	[self selectTabAtIndex:index didSwipe:YES];
}

#pragma mark - UIScrollViewDelegate, Responding to Scrolling and Dragging

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewDidScroll:)]) {
		[self.actualDelegate scrollViewDidScroll:scrollView];
	}
	UIView *tabView = [self tabViewAtIndex:self.activeTabIndex];

	if (self.isAnimatingToTab) {

		// Get the related tab view position
		CGRect frame = tabView.frame;
		CGFloat movedRatio = (scrollView.contentOffset.x / CGRectGetWidth(scrollView.frame)) - 1;
		frame.origin.x += movedRatio * CGRectGetWidth(frame);

		if (self.centerCurrentTab) {

			frame.origin.x += (frame.size.width / 2);
			frame.origin.x -= CGRectGetWidth(self.tabsView.frame) / 2;
			frame.size.width = CGRectGetWidth(self.tabsView.frame);

			if (frame.origin.x < 0) {
				frame.origin.x = 0;
			}

			if ((frame.origin.x + frame.size.width) > self.tabsView.contentSize.width) {
				frame.origin.x = (self.tabsView.contentSize.width - CGRectGetWidth(self.tabsView.frame));
			}
		} else {
			frame.origin.x -= self.tabOffset;
			frame.size.width = CGRectGetWidth(self.tabsView.frame);
		}

		[self.tabsView scrollRectToVisible:frame animated:NO];
	}

	__block CGFloat newX;
	__block CGRect rect = tabView.frame;
	void (^updateIndicator)() = ^void() {
		rect.origin.x = newX;
		rect.origin.y = self.underlineStroke.frame.origin.y;
		rect.size.height = self.underlineStroke.frame.size.height;
		self.underlineStroke.frame = rect;
		self.underlineStrokeAlphaKeeper.frame = rect;
	};

	CGFloat width = CGRectGetWidth(self.view.frame);
	CGFloat distance = tabView.frame.size.width + self.padding;

	if (self.shouldAnimateIndicator == ViewPagerIndicatorAnimationWhileScrolling) {
		newX = [self animateWhileScroll:scrollView rect:&rect width:width distance:distance];
		if (newX != NSNotFound) {
			updateIndicator();
		}
	} else if (self.shouldAnimateIndicator == ViewPagerIndicatorAnimationNone) {
		newX = tabView.frame.origin.x;
		updateIndicator();
	} else {
		newX = [self animateWhileScroll:scrollView rect:&rect width:width distance:distance];
		if (newX != NSNotFound) {
			updateIndicator();
		}
	}
}

- (CGFloat)animateWhileScroll:(UIScrollView *)scrollView rect:(CGRect *)rect width:(CGFloat)width distance:(CGFloat)distance
{
	CGFloat newX = NSNotFound;
	CGFloat aFloat = [scrollView.panGestureRecognizer translationInView:scrollView.superview].x;
	if (scrollView.contentOffset.x != 0) {
		if (aFloat > 0) {
			// handle dragging to the right
			CGFloat mov = width - scrollView.contentOffset.x;
			newX = (*rect).origin.x - ((distance * mov) / width);
		} else if (aFloat < 0) {
			// handle dragging to the left
			CGFloat mov = scrollView.contentOffset.x - width;
			newX = (*rect).origin.x + ((distance * mov) / width);
		}
	}
	return newX;
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewWillBeginDragging:)]) {
		[self.actualDelegate scrollViewWillBeginDragging:scrollView];
	}
}

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewWillEndDragging:withVelocity:targetContentOffset:)]) {
		[self.actualDelegate scrollViewWillEndDragging:scrollView withVelocity:velocity targetContentOffset:targetContentOffset];
	}
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewDidEndDragging:willDecelerate:)]) {
		[self.actualDelegate scrollViewDidEndDragging:scrollView willDecelerate:decelerate];
	}
	self.didTapOnTabView = NO;
}

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewShouldScrollToTop:)]) {
		return [self.actualDelegate scrollViewShouldScrollToTop:scrollView];
	}
	return NO;
}

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewDidScrollToTop:)]) {
		[self.actualDelegate scrollViewDidScrollToTop:scrollView];
	}
}

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewWillBeginDecelerating:)]) {
		[self.actualDelegate scrollViewWillBeginDecelerating:scrollView];
	}
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewDidEndDecelerating:)]) {
		[self.actualDelegate scrollViewDidEndDecelerating:scrollView];
	}
	self.didTapOnTabView = NO;
}

#pragma mark - UIScrollViewDelegate, Managing Zooming

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
	if ([self.actualDelegate respondsToSelector:@selector(viewForZoomingInScrollView:)]) {
		return [self.actualDelegate viewForZoomingInScrollView:scrollView];
	}
	return nil;
}

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewWillBeginZooming:withView:)]) {
		[self.actualDelegate scrollViewWillBeginZooming:scrollView withView:view];
	}
}

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewDidEndZooming:withView:atScale:)]) {
		[self.actualDelegate scrollViewDidEndZooming:scrollView withView:view atScale:scale];
	}
}

- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewDidZoom:)]) {
		[self.actualDelegate scrollViewDidZoom:scrollView];
	}
}

#pragma mark - UIScrollViewDelegate, Responding to Scrolling Animations

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
	if ([self.actualDelegate respondsToSelector:@selector(scrollViewDidEndScrollingAnimation:)]) {
		[self.actualDelegate scrollViewDidEndScrollingAnimation:scrollView];
	}
	self.didTapOnTabView = NO;
}

@end

redpajama_set_name: RedPajamaGithub