Social Finance

What follows is a paper that last year I commissioned Peter Buckbee to write, looking at social finance models from the perspective of Steiner’s threefold social model.  Additional editorial contributions were made by Hillary Corsun.  I’m finally getting around to posting his paper here.  Enjoy!

Social Finance

In its essence Social Finance, or Socially Responsible Investing, is about making investments that provide not just a financial benefit but also a social and environmental one. This is often referred to as looking out for the ‘Triple Bottom Line’ of People, Planet, and Profit. Investors can affect the Triple Bottom Line by choosing to invest in projects that are directly aligned with it, by choosing to screen out any investment from their portfolio that may be harming people or the planet, or by using their power as shareholders to advocate for social and environmental policies within a given corporation.

Generally people think of the Stock Market when they think of investing, but Socially Responsible Investing often operates outside of the Stock Market, relying on independent for-profit and nonprofit institutions to make investments, loans, and gifts that yield a Triple Bottom Line. This document investigates some of these institutions and the various financial vehicles they employ including:

  1. Microfinance
  2. Socially Responsible Loan Programs
  3. Investment Clubs and Impact Investing Networks
  4. Program-Related Investment
  5. Social Impact Bonds
  6. Community Development Investment
  7. Grantmaking and Donor Advised Funds
  8. Crowdfunding

The organizations that use these vehicles run the gamut from a loose network of investors and businesses to big banks with billions of dollars in assets.  Any one organization may use a combination of practices. For example, Alternatives Federal Credit Union (AFCU) is a Community Development Investment Institution based in Ithaca, NY, that offers Microloans and Program Related Investments among other usual banking services.  AFCU also receives Grants, Community Development Investment funds from the government, and Program Related Investments.

This document provides a brief definition of each of these eight Social Finance vehicles and then explores a number of examples – organized on a spectrum from diffuse networks, to platforms, to clubs, to partnerships, to single institutions – which include:

  1. Local Investment Opportunities Network (LION)
  2. Kickstarter
  3. No Small Potatoes Investment Club
  4. Kiva
  5. Create Jobs for USA
  6. Carrot Project
  7. Social Finance US
  8. La Mantanita Fund
  9. Alternatives Federal Credit Union
  10. RSF Social Finance

For each example, this document addresses:

  1. Type of organization
  2. Financial vehicle used
  3. Type of funding offered and received
  4. Minimum or maximum levels of investment
  5. Who takes the risk and how risky is it
  6. Whether or not collateral is required and, if so, who provides it
  7. From which sphere(s) of society (economic, political/rights, or cultural) does funding originate and where does it go (for an explanation see Three Spheres of Society, P. Buckbee, at the end of this document)
  8. How the money flows

Definitions

Microfinance

Microfinance is the practice of providing small loans, credit, and other financial services to people who otherwise lack access to such services due to low income level, limited credit history, or remote location, for instance. Services are generally offered to promote entrepreneurship and economic independence with the belief that, if given access to capital, poor people can raise themselves out of poverty. Organizations such as Kiva achieve this through securing many small loans from people all around the world, and working with field partners and volunteers in poor regions to match investors with borrowers.  Other microfinance organizations may focus more narrowly on a given sector or region. The Carrot Project, for instance, focuses on creating financing opportunities for small-scale, sustainable food production in the Northeast U.S.

Examples: Kiva, Alternatives Federal Credit Union, Create Jobs for USA, Carrot Project

 Socially Responsible Loan Programs

Loan programs can exist as an independent entity or as a part of a larger financial institution. Socially Responsible Loan programs differ from conventional ones in that they are mission-aligned and serve the Triple Bottom Line in some way. While microfinance tends to emphasize small loans to low-income communities, Socially Responsible Loan programs may offer more conventionally-sized loans to a broader contingency within the parameters of Social Finance.

Examples: Carrot Project; RSF Social Finance, No Small Potatoes Investment Club, La Mantanita Fund

 Investment Clubs and Impact Investing Networks

Investment Clubs and Impact Investing Networks are a very direct flavor of Social Finance. The Securities and Exchange Commission (SEC) defines Investment Clubs as “a group of people who pool their money to make investments.” Investment clubs are not regulated and do not have to register as an Investment Corporation if ‘Interests’ (investments) in the club aren’t considered securities, or if they have an exemption such as “non-public offering” status. Interests aren’t considered securities as long as every member of the club plays an active role in decision-making.

Clubs such as the No Small Potatoes Investment Club in Maine focus on Loans to small businesses, while others may choose to make equity investments or partake in some other form of investment. Investment clubs typically file as partnerships or LLC’s. Impact Investing Networks may be as simple as an email list of potential investors and businesses and a quarterly meeting, like the Washington State-based Local Investment Opportunities Network (LION), or may be a more structured nonprofit which partners with other foundations, family offices, and investors.

 Examples: Local Opportunities Network (LION), No Small Potatoes Investment Club

 Program Related Investment (PRI)

Program Related Investment (PRI) is the practice of providing equity investments, loans, or loan guarantees at lower-than-market rates to mission-aligned projects with a charitable purpose. Given the expected return of principal, at minimum, and interest, in many cases, foundations may designate a portion of their assets or grant budget to PRI as a way to recycle capital to charitable projects. PRI allows foundations to provide such projects with larger amounts of capital than a typical grant size. The largest sectors funded by PRI include Education, Affordable Housing, Economic and Community Development, and the Environment (Source: Foundation Center, 2010, “Doing Good with Foundation Assets”).

Examples: RSF Social Finance

Community Development Investment (CDI)

Community Development Investment (CDI) is a catch-all term within Social Finance for practices that focus especially on the “People” aspect of the Triple Bottom Line. Like Microfinance, CDI targets low-income communities and addresses such issues as affordable housing, job creation, education, and small business development. Common vehicles for CDI include Community Development Financial Institutions (CDFI), Community Development Credit Unions, Community Development Corporations, and Community Loan Funds. These are usually nonprofit organizations that offer financial services such as loans, bonds, and public and private equity, as well as education and consulting to the specific underserved communities they are embedded in. Funds are often matched by the Federal Government’s CDFI Fund.

Examples: Alternatives Federal Credit Union, Create Jobs for USA, Carrot Project

 Social Impact Bonds (SIB)

A Social Impact Bond (SIB) is a kind of contract between private investors, government, and nonprofits. Investors provide funding to nonprofits who in-turn provide preventative solutions to social problems like drug addiction and juvenile delinquency, which might otherwise escalate and place demands on federally-funded social programs and the justice system. If the agreed-upon outcome is achieved, as assessed by a third party, then the government reimburses investors with interest or performance bonuses. If the outcomes are not achieved, the investment becomes a donation to the nonprofit and the investors receive no financial return.

In other words, when an SIB successfully meets its goal, government sees improved social outcomes at a reduced public expense, investors see a social and financial return, nonprofits obtain a revenue stream, citizens see safer, healthier communities, and the individuals served by the nonprofits receive help getting their lives on track.

Examples: Social Finance US

Grantmaking and Donor Advised Funds

Many Social Finance organizations include Grantmaking (the offering of grants) in their repertoire. Grants are most often made to mission-aligned nonprofit organizations but may also be made to socially responsible businesses, educational institutions, or individuals. While Grantmaking does not see the direct financial returns that loan and equity investments do, Grantmaking does provide tax-deductions and sought-for social or environmental outcomes. Grantmaking can also help an institution or program become profitable in the long run. Grants have to be applied for and recipients usually must write a report upon completion of the funded project demonstrating they met the intended outcomes.

Donor Advised Funds are an intermediary between direct philanthropic gifts or pledges and formal Grantmaking. Donors (families, individuals, or organizations) place funds into an institution with a Donor Advised Fund program and advise that institution as to how they want their money used. Organizations or individuals can then apply to the Donor Advised Fund to receive grants or donations. The Institution does the administrative work and provides the opportunity for a tax deduction. In turn, the institution has access to capital that can be invested for a return. While Donor Advised Funds allow donors to make recommendations as to what they want their money to be used for, institutions overseeing the funds have full control of the capital once donated and are not obligated to follow the recommendation.

Examples: RSF Social Finance

Crowdfunding

Crowdfunding is another way to make donations. As the name implies, it relies on many small donations from friends and supporters to help fund things like artistic projects, citizen journalism or disaster relief. Web platforms like Kickstarter and online social networking sites like Facebook are instrumental in this type of funding.

Examples: Kickstarter

Examples

Local Investment Opportunities Network (LION)

Narrative: The Local Investment Opportunities Network (LION) started in Port Townsend, Washington. There is no legal entity; it is simply a network of individual investors interested in investing in locally operated and locally owned businesses looking for funding. There is, however, an application process to become a member in which the applicant outlines his/her profile and the opportunities he/she is looking for and completes a confidentiality agreement. Members have access to an email list of interested parties as well as community social events and quarterly meetings.  LION provides some standard investment agreement templates but does not offer legal or financial advice. Investors and borrowers can choose to involve their own lawyers or financial advisors. Interest rates and other terms of investment are set for each investment opportunity between parties involved. It is standard for borrowers to provide investors with a business plan.

Type of Organization: Informal Network

Financial Vehicle(s): Impact Investment Network

Type of Funding Offered: Debt, Equity

Type of Funding Received: Debt, Equity

Minimum Investment: $10,000

Maximum Investment: None

Risk: Per investment, investors take the risk

Collateral: Per investment

Sphere of Origin of Funds: Economic

Sphere of Destination of Funds: Economic

Money Flow: Investors make loans or purchase equity shares in local businesses and get aid back on the terms they set with the borrower.

Kickstarter

Narrative: Kickstarter is a New York City-based online fundraising platform to support creative projects in the fields of film, music, journalism, technology, food, etc. Projects funded through Kickstarter rely on Crowdfunding, which takes the form of small donations from friends and supporters. Donors receive a ‘reward’ in return for their donation, which generally comes out of the project itself. For instance, a reward could be a copy of the music cd or comic book created, or a ticket to a dance performance.

Projects have to have clearly defined goals and expectations and a creative purpose. Charities cannot apply. Individuals and organizations can post their project on the Kickstarter website to solicit donations. The amount of money needed to complete the project and the timeframe for completion must be specified. If the project doesn’t achieve its fundraising goal it doesn’t receive any funding.  There is no fee for posting a project. Kickstarter only charges a fee if the project successfully reaches its fundraising goals.

Type of Organization: For-profit corporation                

Financial Vehicle(s): Crowdfunding

Type of Funding Offered: Donations, ‘Rewards’

Type of Funding Received: Fees

Minimum Investment: None

Maximum Investment: None

Risk: Donors take on the risk

Collateral: None

Sphere of Origin of Funds: Economic

Sphere of Destination of Funds: Cultural

Money Flow: Individuals make donations online towards creative projects. If the project successfully raises the amount of money specified within the timeframe specified by the project creator, the donor’s credit card will be deducted, Kickstarter will charged a 5% fee, and Amazon will charge an additional 3-5% credit card processing fee.

No Small Potatoes Investment Club

Narrative: No Small Potatoes Investment Club incorporated in Maine in the spring of 2011. The club makes low-interest loans to Maine-based food businesses and farms. There are two basic requirements to join the club: A minimum initial investment of $5000 and active participation in investment decisions upon joining. One does not have to be a certified investor to join the club. Active participation from all members makes it so the club does not have to register its investments with the Securities and Exchange Commission.

Type of Organization: LLC

Financial Vehicle(s): Investment Club, Loan Program

Type of Funding Offered: Debt

Type of Funding Received: Equity

Minimum Investment: $5,000

Maximum Investment: None

Risk: LLC takes the risk. Risk level depends on given

investment opportunity

Collateral: Unknown

Sphere of Origin of Funds: Economic

Sphere of Destination of Funds: Economic

Money Flow: Investors buy into the club. The pooled investments are used to make low-interest loans to Maine-based food businesses and farmers. Farmers pay back loans with interest.

Kiva

Narrative: Kiva is a non-profit organization out of San Francisco, California. Kiva’s goal is to help alleviate poverty. On its website, the organization highlights lending opportunities to underserved individuals all around the world. The average loan size for the recipient is about $400. Loans are given for agriculture, housing, and small business development. Loans are sometimes pooled to make them more substantial and also distributed as a ‘pool’ to be divided amongst a group of people. There is no return for the lender. Loan recipients are charged interest to cover the costs of the loan. 100% percent of the lender’s money goes to the borrower. Kiva partners with independent, pre-existing microfinance institutions called ‘field partners’ which are firmly established in the borrower’s community. Field partners help to match lenders with a best-fit loan opportunity. Kiva is funded by grants, donations and corporate sponsorship.

Type of Organization: Nonprofit online platform

Financial Vehicle(s): Microfinance

Type of Funding Offered: Debt

Type of Funding Received: Grants, donations, corporate sponsorship

Minimum Investment: $25

Maximum Investment: None

Risk: Risk levels vary depending on recipient. Kiva rates risk for each loan opportunity. While microloans are often considered risky, Kiva has a 98% pay back history. Lenders take on the risk. Field partners pursue collections procedures in case of loan default

Collateral: Unknown

Sphere of Origin of Funds: Economic, Political/Rights

Sphere of Destination of Funds: Economic,

Political/Rights

Money Flow: Lenders make a no-interest loan to Kiva from anywhere in the world; kiva gives a no-interest loan to a field partner in the community of the specified borrower; field partners provide a loan with interest (to cover their costs) to an individual borrower or group of borrowers; borrowers repay field partners; field partners repay kiva; kiva repays lenders. Kiva covers its own costs from public and private grants, donations and corporate sponsorship.

Create Jobs for USA

Narrative: Create Jobs for USA is a brand new program initiated by Starbucks’ Chief Executive, Howard Shultz. Create Jobs for USA is a partnership between Starbucks and Opportunity Finance Network (OFN). Starbucks will pay for marketing and operating costs of the program, as well as make a $5 million donation for seed funding.  Once the program is up and running, it will depend on small donations from Starbucks customers and individual online donations. Donations become equity for Community Development Financial Institutions, which can leverage the equity 7:1 and make loans to underserved communities in the U.S..  Donors receive a patriotic bracelet in exchange.

Type of Organization: Corporate and CDFI Partnership

Financial Vehicle(s): Community Development, Investment, Microfinance

Type of Funding Offered: Debt, Equity

Type of Funding Received: Grants, Donations, CDFI funds

Minimum Investment: $5

Maximum Investment: None

Risk: Donors, CDFI’s

Collateral: Businesses provide collateral on the terms of the particular CDFI they are working with

Sphere of Origin of Funds: Economic, Political/Rights

Sphere of Destination of Funds: Economic, Political/Rights

Money Flow: Individuals make a donation either at Starbucks or online. The donation goes to a fund at Opportunity Finance Network (OFN), which is a network of CDFI’s. Donations become equity for CDFI’s, which can be leveraged 7:1. Government matches investments from CDFI Fund.  CDFI’s make loans to underserved communities for small business development, job creation, housing, or banking services. Borrowers pay back the CDFI.

Carrot Project

Narrative: The Carrot Project, based in Somerville, Massachusetts, partners with other nonprofits and Community Development Financial Institutions to create regional financing programs as well as business and technical support for small and mid-sized farmers and food-related businesses, to collaborate on innovative agricultural research, and to provide investment opportunities in sustainable agriculture. They offer four loan programs in Maine, Massachusetts and Vermont geared towards providing farmers and food-related businesses with start-up capital, working capital or funding for capital improvements. Loans vary in size from $3,000 to $75,000, typically have a 7% interest rate, and 1 to 7 year terms.

Type of Organization: Nonprofit

Financial Vehicle(s): Microfinance, Loan Program

Type of Funding Offered: Debt

Type of Funding Received: Donations, CDFI funds, Debt

Minimum Investment: $3,000

Maximum Investment: $75,000

Risk: Investors, Carrot Project, partner organizations assume the risk

Collateral: In some cases, the Carrot Project will collateralize loans from Partner Organizations; farmers and food businesses provide collateral on capital loans to partner organizations

Sphere of Origin of Funds: Economic, Political/Rights

Sphere of Destination of Funds: Economic

Money Flow: Carrot Project receives donations and investments; then provides capital or

collateral to a partner organization. Partner organizations may match Carrot Project investments with CDFI or private funds, or leverage them to make loans. to farmers and food businesses, who, in-turn, pay back the partner organization, who then pays back the Carrot Project.

Social Finance US

Narrative: Nonprofit organizations like Social Finance US, based in Boston, MA, are ‘blazing the trail’ in the U.S. for Social Impact Bonds (more common in England), and consequently have taken on a comprehensive strategy to advocate for SIB’s. SIB’s must first be legislated by the state or federal government so Social Finance US lobbies government. They also find investors to provide initial capital, identify and council nonprofits that can provide the social service, structure terms of the SIB, provide management and oversight of the SIB for the nonprofit, and hire third-parties to assess outcomes.

Type of Organization: Nonprofit

Financial Vehicle(s): Social Impact Bonds

Type of Funding Offered: Debt, Grants

Type of Funding Received: Debt, Equity, Grants

Minimum Investment: Unknown

Maximum Investment: Unknown

Risk: Investors assume the risk

Collateral: None

Sphere of Origin of Funds: Economic, Political/Rights

Sphere of Destination of Funds: Political/Rights

Money Flow: Investors place funds in a Social Impact Bond, administered by Social Finance US.  Funding goes to a nonprofit that, in-turn provides a preventative social service. If the nonprofit successfully achieves expected outcomes, the Government compensates investors with interest or performance bonuses.

La Mantanita Fund

Narrative:  La Mantanita Fund (LaM FUND) is a program of La Mantanita Co-op, a food co-op based in Albuquerque, New Mexico. The fund was created to provide “pre-payment” for product loans to farmers and food producers who sell their products at the co-op. In the last year the Fund expanded by selling “interests” (shares). Interests were set at $250 each. 400 units were issued in total – 100 A-Interests and 300 B-Interests. The Co-op bought all 100 A-interests in order to cover any outstanding balances in the event of loan default. This way the coop also showed their support for the program and lessened the risk for other investors. B-interests were made available on a “first come first serve” basis to co-op members living in the state of New Mexico. In order to keep the grassroots nature of the Fund, a peak on investment was set at $10,000 per individual. Any Income generated by the Fund is divided in proportion to number of shares. Payment on investments is approved by a vote of the Co-op Board of Directors, in a similar manner as annual membership patronage refunds get approved. Interests have a one year term.

Type of Organization: Program of La Mantanita Co-op, a Consumer Cooperative

Financial Vehicle(s):  Loan Program

Type of Funding Offered: Debt

Type of Funding Received: Equity

Minimum investment: $250

Maximum investment: $10,000

Risk: High.  Investors take risk

Collateral:  Equity investments (“interests”) are used as collateral for loans

Sphere of Origin of Funds: Economic

Sphere of Destination of Funds: Economic

 Money Flows: Co-op members buy interests.  Funds are placed in a money market account at the New Mexico Educators Federal Credit Union and held as collateral for loans.  Loans are decided upon by the La Mantanita Fund loan advisory committee, and administered by the credit union.  Loan recipients pay back the credit union with interest

Alternatives Federal Credit Union

Narrative: Alternatives Federal Credit Union, out of Ithaca, New York, is a Community Development Credit Union (CDCU). CDCU’s are set up to serve low-income and minority communities with imperfect, limited, or no credit background. Like conventional Credit Unions, they are nonprofit, tax-exempt, government regulated and insured, and cooperatively-owned and governed. CDCU’s provide loans, savings, affordable banking, and products and services to help members free themselves from high-cost, predatory debt. They also offer financial education and counseling to their members and community.

Community Development Credit Unions are a particular kind of Community Development Financial Institution (CDFI). CDFI’s serve a variety of needs, including job creation, business and commercial real estate development, affordable housing, and basic financial services to underserved communities. An organization meeting such a need can apply for CDFI certification from the U.S. Department of Treasury’s CDFI Fund. The fund provides CDFI’s with monetary awards (at least a 1:1 match on private investments) and tax credits. As a private-sector organization, each CDFI takes a unique approach to the issues. Alternatives has a number of innovative financial and educational services. For example, they have a Community Partnership Lending program for clients of partner nonprofits where the nonprofits raise funds and deposit them at Alternatives, then Alternatives will lend double that amount to the clients of that nonprofit.

Type of Organization: Community Development Credit Union (CDCU)

Financial Vehicle(s): Community Development Investment, Microfinance

Type of Funding Offered: Microloans, subsidized loans, loan guarantees, equity investments, savings, line of credit, bonds

Type of Funding Received: Deposits, grants, donations, loans, CDFI funds

Minimum Investment: Minimum one-time $20 membership fee plus $5 deposit.

Maximum Investment: $50,000 (business loan)

Risk: Depositors risk is low as Alternatives is NCUA insured.  The Credit Union’s risk varies depending on the financial product they are offering. Microloans are generally considered high-risk to the investor, though in reality high payback rates are common. Government Bonds are low risk.

Collateral: Alternatives offers several different kinds of loans and loan guarantees, each with unique collateral demands.  In all cases the borrower is responsible for providing collateral.

Sphere of Origin of Funds: Economic, Political/Rights

Sphere of Destination of Funds: Economic, Political/Rights and Cultural

Money Flow: Funds come from member equity and deposits, non-member deposits, private and government grants and investments, and government bonds and subsidies. Funds go directly to small business development, mortgage and personal loans, and educational efforts.

Rudolf Steiner Foundation (RSF) Social Finance

Narrative: RSF Social Finance (RSF) is a pioneer Social Finance organization dedicated to transforming the way the world works with money. Their target areas are sustainable agriculture, education and the arts, and the environment. RSF offers a range of financial products and services, from $500 seed fund donations to 5 million dollar loans and capital lines of credit. The organization stands out among Social Finance organizations for their integration of Investing, lending, and giving within a single nonprofit. RSF Social Finance also hosts and sponsors educational events and initiates various forms of dialogue around money and transparency.

Type of Organization: Nonprofit

Financial Vehicle(s): PRI, Loan Program, Grantmaking, Donor Advised Funds

Type of Funding Offered: Debt, Donations

Type of Funding Received: Debt, mezzanine capital (warrants, notes royalty streams), donations

Minimum Investment: Minimum donation for Donor Advised Fund is $5,000. Minimum gift awarded by RSF Seed Fund is $500. Loans offered by RSF range from $200,000 to $5 million.

Maximum Investment: None

Risk: Investors take on risk. Loan repayment history is 100% so risk is low.

Collateral: Provided by borrowers

Sphere of Origin of Funds: Economic

Sphere of Destination of Funds: Economic, Political/Rights, and Cultural

Money Flow: There are various and complex money flow circuits around RSF. Basically though, investors place financial resources with RSF and RSF administers them, providing loans, gifts and other forms of investment to for-profit and nonprofit enterprises.

Three Spheres of Society: Economic, Political/Rights, and Cultural

This threefold articulation of society has its origins with the Austrian-born philosopher and educator Rudolf Steiner (b. 1861 – d. 1925), but is increasingly referenced in contemporary innovative social thought. For instance, David Korten, Founder of YES! Magazine, recently wrote about rebuilding the economy by starting new economic initiatives, redefining our cultural narratives, and changing the rules (or laws) around how we do economics (Source: D. Korten, YES Magazine Blog, 2011).

According to Steiner’s original articulation, the Economic Sphere has everything to do with how we meet one another’s needs in society – through the cycle of production, distribution and consumption. The Political/Rights Sphere has everything to do with how we live together in a peaceful and equitable way within society – through the laws, agreements and political structures we create. And the Cultural Sphere has everything to do with how we nurture and develop human capacities – both mental and physical – as individuals and within society (Source: R. Steiner, The Social Future, 1919).

So, education, science, art, and religion are all examples of cultural phenomena because they develop and nurture human capacities. Governance – as far as it involves the making of laws that protect human rights, democracy, and civility are examples of political/rights phenomena because they all have to do with making society more peaceful and equitable. And finance, manufacturing, trade, and consumption are all economic phenomena because they have to do with meeting human needs.

This document references the three spheres (Economic, Political/Rights, Cultural) in relationship to which sphere of society funds originate in and which sphere they are destined for through the flow of Social Finance Capital. Funds, or Capital, or Money, are always circulating between the spheres, making it difficult to say exactly where funds originated. For instance, the government may offer funding to a Community Development Financial Institution (CDFI) or a Social Impact Bond (SIB) but that money first came from taxpayers who earned their money within the Economic Sphere working at their job. This document provides a snapshot of an isolated phenomenon.

The true origin and ongoing circulation of money is more complex and involves all three spheres: It has to become ‘Fiat’ (made into legal tender) within our political system; it must have a corresponding value which is created, in part, through human intelligence and capacities of refining labor (developed within the Cultural Sphere) refining labor and, in part, through labor working on ‘land’ or on a ‘nature product’ to create a commodity within the Economic Sphere.

For this snapshot view of Social Finance examples, any funds that were not allocated by the government are considered to have their origin in the Economic Sphere. Bank deposits, private investments, and personal donations all come from the economic sphere because they were earned at some point, directly or indirectly through production, distribution (or trade), and consumption.

Only two of the Social Finance practices mentioned in this document rely on government funding: Social Impact Bonds and Community Development Investment.

Funds going to support education, art, science, research, social work, and assessment are considered to be destined for the Cultural Sphere. This is the case with Kickstarter, RSF Social Finance, Alternatives Federal Credit Union, and Social Finance US. Assessment, as in the example of Social Finance US, is included in the Cultural Sphere because it relies on the capacity of judgment and concerns itself with human development – i.e. whether or not the clients of the nonprofit in question have progressed inwardly and outwardly through the service provided.

Social work, or charity, is hard to place. On the one hand it belongs in the Political/Rights Sphere because it raises human beings up to a more equitable and dignified place in society and helps them secure their rights. On the other hand it belongs in the Cultural Sphere because it relies on the ‘healing arts’ of the care providers, which help to nurture and educate their clients. In recognition of this dichotomy, the administration of the service has been placed in the Cultural Sphere and the receiving of the service in the Political/Rights Sphere.

Funds going directly to government through Treasury Bonds or taxes, for example, as well as funds going to support the clients of nonprofit charities are considered destined for the Political/Rights Sphere. This is the case with Alternatives Credit Union, LION, No Small Potatoes Investment Club, and Kickstarter.

The Threefold Nature of Social Issues

It is not always so straightforward. Social issues are complex; and in our current social system the three spheres are often entangled in unhealthy ways. Take homelessness, for example. Is this a political/rights issue, a cultural issue, or an economic issue? In some ways, it involves all three spheres. It is an economic issue in that it has to do with whether or not a person can afford a place to live; it is a political/rights issue in that it has to do with how we organize our society in a more or less equitable way; and it is a cultural issue in that it has to do with the person’s biography, the social or cultural environment he/she comes from, and whether or not we, as members of society, through our self development, feel inclined to care for our fellow human beings.

Most big issues have roots in all three spheres, but one can usually tell where the primary root is. Issues like homelessness, poverty, and joblessness, for instance, appear to have their primary root in political/rights life. The main function of this sphere is to maintain fairness and equity. That there are some people in society that cannot get a job, do not have enough money to live, or lack a home appeals to our sense of fairness and human dignity. In a healthy society, these issues are addressed in the political system and made the concern of each and every citizen. Once they are recognized in the political/rights life, then it becomes the responsibility of economic and cultural life to align itself accordingly and administer the appropriate services.

Today, however, the mandate does not always come from government. Virtually all of the institutions cited in this document take on a social mission of their own accord and only a few receive government funds for their work. Among these examples, certain institutions focus on issues of equity (equality) more directly. Kiva, Alternatives Credit Union, Social Finance US, Create Jobs for USA, and RSF Social Finance all designate funds to charitable causes such as alleviating poverty and providing housing and jobs to underserved communities. Their means are economic (loans, grants, etc) but the ‘ends’ or outcome they affect is rights-oriented – i.e. an improved, more fair and equitable standard of living,

The Ninefold Social Organism

Looking deeper into social life, it becomes apparent that there is a threefoldness within each of the three spheres of society. There is a culture to economics and politics, economics to culture and politics, and politics, governance, legal, or rights concerns in economics and cultural life. Colloquially, we speak of ‘consumer culture’ or ‘business culture’ when referring to certain behavior and practices within the economy. The culture of a car manufacturing company might be blue collar, rough around the edges, and direct, while the culture of an IT company might be progressive, entrepreneurial, and quick to shift. And in politics, the way campaigns are run, how candidates present themselves, and how rhetoric is used in debate is all reflective of a certain political culture.

Looking at economics in politics and culture, one could note how schools, churches, political campaigns and government programs are financed. And finally, looking at politics, governance, legal, or rights concerns in economics and culture one notes how institutions are governed, how consumer and employee rights are acknowledged, and what laws are upheld in different cultures. This just begins to give a sketch of how the three spheres intersect with one another and co-exist within a single sphere.

Together the three spheres make a whole. In any society, organization, or group founded by human individuals, regardless of whether the primary function is cultural, economic, or political, all three spheres find expression. The expression will, of course, look different in quality and magnitude depending on the main purpose of that group or organization. The examples cited in this document embody how an organization can work through primarily economic means to affect not only the economy but also culture and political/rights life. By choosing to include ‘people’ and the ‘planet’ in addition to financial profit in their value sets, such companies change the culture of the Economic Sphere – the way we think about doing business; and, they change the standard of living and the health of the planet, thus affecting the Political/Rights Sphere.  In the drawings, this accounts for placement of organizations on the overlapping lines between spheres.

Each of the three spheres finds its truest expression, however, when it is on its own, autonomous from the others; however, that is not to say that the three should not come together in organizations or groups. There is both healthy and unhealthy overlap. An economic organization without culture or rights obligations would be soulless and inhumane. When business interests control politics and education it is democracy and human development that suffer.  Yet, knowledge and skill developed through education in the cultural sphere can only find useful application in the spheres of economy and politics.

In a healthy society, each of the three spheres come to expression autonomously and in relationship to the others, and each sphere finds ample and balanced expression within the whole of society.

About the Author

Peter Buckbee lives in Philmont, NY, with his wife Kristin and eight-month-old daughter Isabel. He is a co-founder of Think OutWord, a peer-led educational platform focused on the study and implementation of new cultural, political and economic ideas based on the social philosophy of Rudolf Steiner. He has taught economics at the Hawthorne Valley Waldorf High School and has been involved in various entrepreneurial undertakings. Having undertaken this research project, he is now very interested in finding ways to get community capital to community initiatives.

About the Contributors

Hilary Corsun, Director of Marketing and Communication at Hawthorne Valley Association in central Columbia County, NY, enjoys brainstorming new business ventures and envisioning a generative and just new economy. She graduated from Cornell University in 2006 with a dual-major in Applied Economics & Management and Animal Science. She has served as Purchasing Manager in her family’s manufacturing business, worked at a microfinance fund in Senegal, and operated her own small enterprise for ten years beginning at age thirteen.

Marc Clifton by trade is a software developer/contractor and has an interest in social transformation, microfunding research projects on finance, education, and fundraising. He also has been known to occasionally run an unintentional community and a for-loss bed & breakfast. He occasionally blogs on https://marcclifton.wordpress.com/

Using Migrations in ActiveRecord without Rails

As I slowly progress toward working with Rails, I wanted to figure out how to implement migrations without Rails.  Taking the code from the previous posts, I’ve modified the code to use a migration to create the “user” table, do my tests, then drop the user table.

My test “main” now looks like this:

require 'active_record'
require 'logger'
require 'yaml'

# Note that the class doesn't define any properties
class User < ActiveRecord::Base
end

class ActiveRecordTest
  # Create a connection.
  def connect
    #use YAML to define the connection information.
    dbconfig = YAML::load(File.open('database.yml'))
    ActiveRecord::Base.establish_connection(dbconfig)
    #Enable logging
    ActiveRecord::Base.logger = Logger.new(STDERR)
  end

  # Add a user.
  def addUser(id, username)
    user = User.new
    user.id = id
    user.name = username
    user.save
  end

  # Query the user table, allowing the caller to handle the returned User records.
  def queryUserTable
    User.all.each {|user| yield user}
  end

end

def main
  ar = ActiveRecordTest.new
  ar.connect
  # sync the database with migration 001
  ActiveRecord::Migrator.migrate("./Migrations", 1)
  begin
    ar.addUser(1, "Marc")
    ar.addUser(2, "Sharon")
    ar.queryUserTable {|user| printf("%d %s\n", user.id, user.name)}
  rescue Exception => e
    puts e.message
    puts e.backtrace.inspect
  ensure
    #revert the database to version 000
    ActiveRecord::Migrator.migrate("./Migrations", 0)
  end
end

main

and the migration class, 001_create_user_table.rb, looks like this:

require 'active_record'

class CreateUserTable &lt ActiveRecord::Migration
  def up
    create_table :users do |t|
      t.integer :id
      t.string :name
      # or
      # t.column :id, :integer
      # t.column :name, :string
    end
  end

  def down
    drop_table :users
  end
end

If you’re curious, I’m indebted to these folks:

for the invaluable and succinct descriptions of how to do this. Quite frankly, the only reason I’m blogging about it here is because I wanted to test this myself using my own examples, which I find is a really good way to learn new technologies.

Using YAML to Manage Database Configurations

Here’s a simple enhancement to my previous entry regarding using ActiveRecord – we’re using YAML to move the database connection information outside of the Ruby file.  The “connect” method is changed as follows:

require 'active_record'
require 'yaml'

class ActiveRecordTest
  # Create a connection.
  def connect
    #use YAML to define the connection information.
    dbconfig = YAML::load(File.open('database.yml'))
    ActiveRecord::Base.establish_connection(dbconfig)
  end
...

and the YAML file looks like this:

adapter: postgresql
database: Test
username: [username]
password: [password]
host: localhost

Again replacing [username] and [password] with the actual username and password that has the desired permissions on your database.

Using ActiveRecord with Rails

Here’s an example of using ActiveRecord without Rails.  Ideally, this should be done with a migration, which will be the subject of my next post.  However, first the basics. As before, replace [username] and [password] with the username and password associated with your database (“Test”, in my case).

require 'active_record'

# Note that the class doesn't define any properties
class User < ActiveRecord::Base
end

class ActiveRecordTest
  # Create a connection.
  def connect
    ActiveRecord::Base.establish_connection(
        :adapter => "postgresql",
        :username => "[username]",
        :password => "[password]",
        :database => "Test")
  end

  # Create the users table.
  def createUserTable
    ActiveRecord::Migration.create_table :users do |t|
      t.integer :id
      t.string :name
      # or
      # t.column :id, :integer
      # t.column :name, :string
    end
  end

  # Drop the users table.
  def dropUserTable
    ActiveRecord::Migration.drop_table :users
  end

  # Add a user.
  def addUser(id, username)
    user = User.new
    user.id = id
    user.name = username
    user.save
  end

  # Query the user table, allowing the caller to handle the returned User records.
  def queryUserTable
    User.all.each {|user| yield user}
  end

end

def main
  ar = ActiveRecordTest.new
  ar.connect
  ar.createUserTable
  ar.addUser(1, "Marc")
  ar.addUser(2, "Sharon")
  ar.queryUserTable {|user| printf("%d %s\n", user.id, user.name)}
  ar.dropUserTable
end

main

An Example of using PostgreSQL with Ruby

This is a fairly complete example, creating a table in the database called “Test”, and assuming a user has been added to Postgres as well with permissions to create, insert, query, and drop tables.

Replace [username] and [password] with the username and password for your database.

require 'pg'

class PostgresDirect
  # Create the connection instance.
  def connect
    @conn = PG.connect(
        :dbname => 'Test',
        :user => '[username]',
        :password => '[password]')
  end

  # Create our test table (assumes it doesn't already exist)
  def createUserTable
    @conn.exec("CREATE TABLE users (id serial NOT NULL, name character varying(255), CONSTRAINT users_pkey PRIMARY KEY (id)) WITH (OIDS=FALSE);");
  end

  # When we're done, we're going to drop our test table.
  def dropUserTable
    @conn.exec("DROP TABLE users")
  end

  # Prepared statements prevent SQL injection attacks.  However, for the connection, the prepared statements
  # live and apparently cannot be removed, at least not very easily.  There is apparently a significant
  # performance improvement using prepared statements.
  def prepareInsertUserStatement
    @conn.prepare("insert_user", "insert into users (id, name) values ($1, $2)")
  end

  # Add a user with the prepared statement.
  def addUser(id, username)
    @conn.exec_prepared("insert_user", [id, username])
  end

  # Get our data back
  def queryUserTable
    @conn.exec( "SELECT * FROM users" ) do |result|
      result.each do |row|
        yield row if block_given?
      end
    end
  end

  # Disconnect the back-end connection.
  def disconnect
    @conn.close
  end
end

def main
  p = PostgresDirect.new()
  p.connect
  begin
    p.createUserTable
    p.prepareInsertUserStatement
    p.addUser(1, "Marc")
    p.addUser(2, "Sharon")
    p.queryUserTable {|row| printf("%d %s\n", row['id'], row['name'])}
  rescue Exception => e
    puts e.message
    puts e.backtrace.inspect
  ensure
    p.dropUserTable
    p.disconnect
  end
end

main

Installing PostgreSQL for use with Ruby in Windows

This was quite simple.  Download PostgreSQL from here and install.  Note that the installation (the last 1%, of course!) really does take several minutes.  Like, 10-15 minutes!

Once installed, use the Postgres3 application (similar to SQL Server Management Studio) to create your database, user, and user roles.

If you don’t have the pg gem installed (check using “gem list –local” from the console), run “gem install pg” (also from the console window.)

The documentation for pg can be found here.

RubyInstaller vs. RailsInstaller and debugging with RubyMine

RubyMine is decent IDE both in Windows and Ubuntu, including, happily, a debugger integrated into the IDE.  Coming from the world of Visual Studio, I’m quite happy to see this as a command-line debugger is something I was reluctant to learn.

However, I was having problems debugging Ruby programs in RubyMine – it required a gem (linecache19) to be installed, then complained during the installation process that my Path did not point to DevKit.  I also noticed that when I installed gems manually, the Path was being temporarily “fixed” to include DevKit.

Turns out I had installed Ruby from the rubyinstaller-1.9.3-p286.exe a week ago, then I installed railsinstaller-2.1.0.exe, and I had to different instances of Ruby running on my computer.

I ended up uninstalling everything except RubyMine, then re-installed just the RailsInstaller.  Still, it didn’t work, and a helpful post on the JetBrains Developer Community forum provided the answer:

See if you have any invalid SDK in Settings | Ruby SDK and Gems and remove it.

So, off I went to File -> Settings, clicked on the “Ruby SDK and Gems” item and noticed that the Ruby interpreter was still pointing to “Ruby193” rather than “RailsInstaller\Ruby1.9.3\bin\ruby.exe”.  Click on “Remove SDK”, click on “Add SDK…” and a dropdown has the correct path!

Now, notice in the “Settings” window the header for the tree: “Projects Settings (Hunt the Wumpus”.  It turns out that the above change must be made for every project (I had one other at this point) even though for the other project, the path was correct!  I still had to remove the SDK (that appeared correct) and add the SDK again.

Finally, the debugger is working!

 

Setting Up Ruby on Rails in Windows

I don’t normally write a simple endorsement, but in this case, I would like to point anyone that is interested in setting up Ruby on Rails directly in Windows to RailInstaller.  This turned out to be a completely painless way to get the latest versions:

Installed in one fell swoop.  Quite the time saver!

Hunt The Wumpus in Ruby – My First Ruby Application

Years ago I knew Gregory Yob, creator of the game Hunt the Wumpus.  In honor of his memory, I recreated the game as my first Ruby application!  Here’s the code (sorry, no pretty printing):

cave.rb

class Cave
  attr_reader :roomNumber
  attr_accessor :vertices
  attr_accessor :hasBats
  attr_accessor :hasPit

  def initialize(roomNumber)
    @roomNumber = roomNumber
    @vertices = []
  end
end

cave_system.rb

# Creates a cave system based on a dodecahedron, a 12 sided figure with 20 vertices, each vertex connects to 3 other vertices.
# The cave system therefore consists of 20 caves, each connecting to 3 other unique caves.
require './cave.rb'

class CaveSystem
  attr_reader :caves

  def initialize
    initializeCaveMatrix
    shuffleCaveMatrix
    initializeCaves
    initializeCaveVertices
    initializeCaveFeatures(1, 1)
  end

  # Create the array of caves
  def initializeCaves
    @caves = Array.new(20) {|n| Cave.new(n+1)}
    # or
    # @caves = Array.new
    # (1..20).each {|n| @caves.push(Cave.new(n))}
  end

  # Create an initial matrix of vertex numbers for a dodecahedron.
  def initializeCaveMatrix
    @caveMatrix = []
    @caveMatrix <<
        [ 1,  5,  4] << [ 0,  7,  2] << [ 1,  9,  3] << [ 2, 11,  4] <<
        [ 3, 13,  0] << [ 0, 14,  6] << [ 5, 16,  7] << [ 1,  6,  8] <<
        [ 7,  9, 17] << [ 2,  8, 10] << [ 9, 11, 18] << [10,  3, 12] <<
        [19, 11, 13] << [14, 12,  4] << [13,  5, 15] << [14, 19, 16] <<
        [ 6, 15, 17] << [16,  8, 18] << [10, 17, 19] << [12, 15, 18]
  end

  # shuffle the cave numbers, preserving vertices, so we get a random cave room numbers each time, but
  # still in the pattern of a dodecahedron.
  # stolen from here: stackoverflow.com/questions/4447270/java-array-with-vertices-of-dodecahedron
  def shuffleCaveMatrix
    shuffle = (0..19).to_a.sample(20)
    z = Array.new(20) {[0, 0, 0]}

    for i in 0..19 do
      vy = @caveMatrix[i]
      vz = [0, 0, 0]

      for j in 0..2 do
        vz[j] = shuffle[vy[j]]
      end

      z[shuffle[i]] = vz
    end

    @caveMatrix = z
  end

  # We want to work with objects instead of indices, so create the vertex Cave instances for each cave.
  def initializeCaveVertices
    @caveMatrix.each_with_index {|vertices, n| vertices.each {|vn| @caves[n].vertices.push(@caves[vn]) }}
  end

  # Initialize the cave system with superbats, pits, and the wumpus
  # Pits, bats, and the wumpus can all occupy the same room
  def initializeCaveFeatures(numBats, numPits)
    caves.sample(numBats).each {|cave| cave.hasBats = true}
    caves.sample(numPits).each {|cave| cave.hasPit = true}
  end
end

main.rb

require './cave.rb'
require './cave_system.rb'

# Hunt the Wumpus
# http://en.wikipedia.org/wiki/Hunt_the_Wumpus

def main
  puts "Welcome to Hunt the Wumpus, my first Ruby project, dedicated to Hara Ra, aka Gregory Yob, the creator of this game, first published in People's Computer Company journal Vol. 2 No. 1 in 1973."
  caveSystem = CaveSystem.new()
  # for debugging:
  caveSystem.caves.each {|cave| printf("Cave # %d connects to %d, %d, and %d\n", cave.roomNumber, cave.vertices[0].roomNumber, cave.vertices[1].roomNumber, cave.vertices[2].roomNumber)}

  wumpusHunterIsAlive = true
  wumpusIsAlive = true
  wumpusInCave = caveSystem.caves.sample

  # This will typically deposit the hunter in cave #1.  Would be nice to be more random.
  hunterInCave = caveSystem.caves.find {|cave| !cave.hasBats && !cave.hasPit && cave != wumpusInCave}

    while (wumpusHunterIsAlive && wumpusIsAlive) do
    whereAmI(hunterInCave)
    connectsTo(hunterInCave)
    whatsNearMe(hunterInCave, wumpusInCave)
    prompt = moveOrShoot
    hunterInCave, wumpusInCave, wumpusIsAlive, wumpusHunterIsAlive = processUserAction(prompt, hunterInCave, wumpusInCave, caveSystem)

    # bats snatch hunter from a bottomless pit, but may drop him into a bottomless pit!
    hunterInCave = checkForBats(hunterInCave, caveSystem)
    wumpusHunterIsAlive = checkForPit(hunterInCave)

    # if the poor guy/gal is still alive, check if he/she bumped into a Wumpus!
    if wumpusHunterIsAlive then
      wumpusInCave, wumpusHunterIsAlive = checkHunterAndWumpus(hunterInCave, wumpusInCave)
    end

  end

  if !wumpusIsAlive then printf("You got the Wumpus!\n") end
end

def whereAmI(cave)
  printf("You are in room # %d\n", cave.roomNumber)
end

def connectsTo(cave)
  printf("Tunnels lead to rooms %d, %d, and %d\n", cave.vertices[0].roomNumber, cave.vertices[1].roomNumber, cave.vertices[2].roomNumber)
end

def whatsNearMe(cave, wumpus)
  cave.vertices.each do |cv|
    if cv.hasBats then printf("I hear the bats!\n") end
    if cv.hasPit then printf("I feel a draft!\n") end
    if cv == wumpus then printf("I smell a Wumpus!\n") end
    end
end

def moveOrShoot
  printf("(M)ove or (S)hoot ? ")
  gets
end

def processUserAction(prompt, cave, wumpus, caveSystem)
  newCave = cave
  newWumpus = wumpus
  wumpusIsDead = false
  hunterIsDead = false

  case prompt
    when "M\n"
      newCave = getValidConnectingCave(cave)
    when "S\n"
      shootAtCave = getCaveForArrow(caveSystem)
      # Minimal logic here for now
      if shootAtCave == wumpus then
        wumpusIsDead = true
      else
        printf("Miss!\n")
        newWumpus = moveWumpus(wumpus)
        newWumpus, hunterIsAlive = checkHunterAndWumpus(cave, newWumpus)
        # sort of dumb
        hunterIsDead = !hunterIsAlive
      end
    else
      printf("Please enter M for Move or S for Shoot\n")
  end

  return newCave, newWumpus, !wumpusIsDead, !hunterIsDead
end

def checkHunterAndWumpus(cave, newWumpus)
  hunterIsAlive = true

  if newWumpus == cave then
    printf("EEEK!  You bumped into a Wumpus!\n")
    hunterIsAlive = (0..1).to_a.sample == 1

    if !hunterIsAlive
      printf("Yum, munch, munch, the Wumpus has eaten you!\n")
    else
      # move the wumpus again
      newWumpus = moveWumpus(newWumpus)
    end
  end

  return newWumpus, hunterIsAlive
end

def getValidConnectingCave(cave)
  valid = false

  while !valid do
    printf("Enter the room number to move to: ")
    roomNum = Integer(gets)
    newCave = cave.vertices.find {|cv| cv.roomNumber == roomNum}

    if !newCave then
      printf("You cannot go directly to that room.\n")
    else
      valid = true
    end
  end

  newCave
end

def getCaveForArrow(caveSystem)
  printf("Enter the room number to shoot into: ")
  roomNum = Integer(gets)
  caveSystem.caves[roomNum-1]
end

# wumpus moves randomly to another adjoining cave
def moveWumpus(wumpus)
   wumpus.vertices.sample
end

# return a random cave
def superBatZap(caveSystem)
   caveSystem.caves.sample
end

def checkForBats(hunterInCave, caveSystem)
  while hunterInCave.hasBats do
    printf("Super Bat Snatch!\n")
    hunterInCave = superBatZap(caveSystem)
  end
  hunterInCave
end

def checkForPit(hunterInCave)
  alive = true
  if hunterInCave.hasPit then
    printf("YYYAAAAHHHHHH....You fell into a bottomless pit.\n")
    alive = false
  end
  alive
end

main

A sample run (otherwise known as committing suicide):

You are in room # 1
Tunnels lead to rooms 2, 16, and 14
I feel a draft!
(M)ove or (S)hoot ? M
Enter the room number to move to: 2
You are in room # 2
Tunnels lead to rooms 15, 4, and 1
(M)ove or (S)hoot ? M
Enter the room number to move to: 1
You are in room # 1
Tunnels lead to rooms 2, 16, and 14
I feel a draft!
(M)ove or (S)hoot ? M
Enter the room number to move to: 16
You are in room # 16
Tunnels lead to rooms 1, 12, and 3
I hear the bats!
(M)ove or (S)hoot ? M
Enter the room number to move to: 1
You are in room # 1
Tunnels lead to rooms 2, 16, and 14
I feel a draft!
(M)ove or (S)hoot ? M
Enter the room number to move to: 14
YYYAAAAHHHHHH….You fell into a bottomless pit.