Archive for the ‘greens’ Category

Money and CA Propositions

Monday, June 7th, 2010

Since tomorrow we’ll be having another one of those practice democracy drills here in California, I thought I’d put together a few bar charts.

There are five propositions on tomorrow’s ballot. In researching them, Lena came across the Cal-Access Campaign Finance Activity: Propositions & Ballot Measures.

Unfortunately, for each proposition, you have to click through each committee to get the details for the amount of money they’ve raised and spent. Here’s a run-down in visual form, the only data manipulation I did was round to the nearest dollar. Note: no committees formed to support or oppose Proposition 13.

Here’s how much money was raised, by proposition:

Money Raised

Just in case you didn’t get the full picture, here is the same data plotted on a common scale:

Money Raised (common scale)

And the same two plots for money spent1:

Money Spent

Money Spent (common scale)

It could just be my perception of things, but I get pretty suspicious when there’s a ton of money involved in politics, especially when it’s this lopsided.

The only thing I have to add is you should Vote “YES” on Prop 15, because Larry Lessig says so, and so do the Alameda County Greens!

Update #1: Let me write it out in text, so that the search engines have an easier time finding this. According to the official record from Cal-Access (Secretary of State), as of May 22nd, 2010, there were $54.4 million spent in support of various propositions, most notably $40.5 million on Prop 16, $8.9 million on Prop 17, and $4.6 million on Prop 14. Compare that with a “grand” total of less than $1.2 million spent to oppose them, with a trivial $78 thousand (!!) to oppose Prop 16′s $40.5 million deep pockets.

Update #2: The California Voter Foundation included more recent totals (they don’t seem to be that different), as well as a listing of the top 5 donors for each side of a proposition in their Online Voter Guide.

Also, here’s the python code used to generate these plots (enable javascript to get syntax highlighting):

# Create contributions and expenditures bar charts of committees supporting and
# opposing various propositions on the California Ballot for June 8th, 2010
# created by Paul Ivanov (http://pirsquared.org)

# figure(0) - Contributions by Proposition (as subplots)
# figure(1) - Expenditures by Proposition (as subplots)
# figure(2) - Contributions on a common scale
# figure(3) - Expenditures on a common scale

import numpy as np
from matplotlib import pyplot as plt
import locale

# This part was done by hand by collecting data from CalAccess:
# http://cal-access.sos.ca.gov/Campaign/Measures/
prop = np.array([
     4650694.66, 4623830.07    # Yes on 14 Contributions, Expenditures
    , 216050, 52796.71         # No  on 14 Contributions, Expenditures
    , 118807.45, 264136.30     # Yes on 15 Contributions, Expenditures
    , 200750.01, 86822.79      # No  on 15 Contributions, Expenditures
    , 40706258.17, 40582036.58 # Yes on 16 Contributions, Expenditures
    , 83187.29,	78063.91       # No  on 16 Contributions, Expenditures
    , 10328675.12, 8932786.06  # Yes on 17 Contributions, Expenditures
    , 1229783.79, 965218.48    # No  on 17 Contributions, Expenditures
    ])
prop.shape = -1,2,2 

def currency(x, pos):
    """The two args are the value and tick position"""
    if x==0:
        return "$0"
    if x < 1e3:
        return '$%f' % (x)
    elif x< 1e6:
        return '$%1.0fK' % (x*1e-3)
    return '$%1.0fM' % (x*1e-6)

from matplotlib.ticker import FuncFormatter
formatter = FuncFormatter(currency)

yes,no = range(2)
c = [(1.,.5,0),'blue']  # color for yes/no stance
a = [.6,.5]             # alpha for yes/no stance
t = ['Yes','No ']       # text  for yes/no stance

raised,spent = range(2)
title = ["Raised for", "Spent on" ] # reuse code by injecting title specifics
field = ['Contributions', 'Expenditures']

footer ="""
Data from CalAccess: http://cal-access.sos.ca.gov/Campaign/Measures/
'Total %s 1/1/2010-05/22/2010' field extracted for every committee
and summed by position ('Support' or 'Oppose').  No committees formed to
support or oppose Proposition 13. cc-by Paul Ivanov (http://pirsquared.org).
""" # will inject field[col] in all plots

color = np.array((.9,.9,.34))*.9 # spine/ticklabel color
plt.rcParams['savefig.dpi'] = 100

def fixup_subplot(ax,color):
    """ Tufte-fy the axis labels - use different color than data"""
    spines = ax.spines.values()
    # liberate the data! hide right and top spines
    [s.set_visible(False) for s in spines[:2]]
    ax.yaxis.tick_left() # don't tick on the right

    # there's gotta be a better way to set all of these colors, but I don't
    # know that way, I only know the hard way
    [s.set_color(color) for s in spines]
    [s.set_color(color) for s in ax.yaxis.get_ticklines()]
    [s.set_visible(False) for s in ax.xaxis.get_ticklines()]
    [(s.set_color(color),s.set_size(8)) for s in ax.xaxis.get_ticklabels()]
    [(s.set_color(color),s.set_size(8)) for s in ax.yaxis.get_ticklabels()]
    ax.yaxis.grid(which='major',linestyle='-',color=color,alpha=.3)

# for subplot spacing, I fiddle around using the f.subplot_tool(), then get
# this dict by doing something like:
#    f = plt.gcf()
#    adjust_dict= f.subplotpars.__dict__.copy()
#    del(adjust_dict['validate'])
#    f.subplots_adjust(**adjust_dict)

adjust_dict = {'bottom': 0.12129189716889031, 'hspace': 0.646815834767644,
 'left': 0.13732508948909858, 'right': 0.92971038073543777,
 'top': 0.91082616179001742, 'wspace': 0.084337349397590383}

for col in [raised, spent]: #column to plot - money spent or money raised
    # subplots for each proposition (Fig 0 and Fig 1)
    f = plt.figure(col); f.clf(); f.dpi=100;
    for i in range(len(prop)):
        ax = plt.subplot(len(prop),1, i+1)
        ax.clear()
        p = i+14    #prop number
        for stance in [yes,no]:
            plt.bar(stance, prop[i,stance,col], color=c[stance], linewidth=0,
                    align='center', width=.1, alpha=a[stance])
            lbl = locale.currency(round(prop[i,stance,col]), symbol=True, grouping=True)
            lbl = lbl[:-3] # drop the cents, since we've rounded
            ax.text(stance, prop[i,stance,col], lbl , ha='center', size=8)

        ax.set_xlim(-.3,1.3)
        ax.xaxis.set_ticks([0,1])
        ax.xaxis.set_ticklabels(["Yes on %d"%p, "No on %d"%p])

        # put a big (but faded) "Proposition X" in the center of this subplot
        common=dict(alpha=.1, color='k', ha='center', va='center', transform = ax.transAxes)
        ax.text(0.5, .9,"Proposition", size=8, weight=600, **common)
        ax.text(0.5, .50,"%d"%p, size=50, weight=300, **common)

        ax.yaxis.set_major_formatter(formatter) # plugin our currency labeler
        ax.yaxis.get_major_locator()._nbins=5 # put fewer tickmarks/labels

        fixup_subplot(ax,color)

    adjust_dict.update(left=0.13732508948909858,right=0.92971038073543777)
    f.subplots_adjust( **adjust_dict)

    # Figure title, subtitle
    extra_args = dict(family='serif', ha='center', va='top', transform=f.transFigure)
    f.text(.5,.99,"Money %s CA Propositions"%title[col], size=12, **extra_args)
    f.text(.5,.96,"June 8th, 2010 Primary", size=9, **extra_args)

    #footer
    extra_args.update(va='bottom', size=6,ma='left')
    f.text(.5,0.0,footer%field[col], **extra_args)

    f.set_figheight(6.); f.set_figwidth(3.6); f.canvas.draw()
    f.savefig('CA-Props-June8th2009-%s-Subplots.png'%field[col])

    # all props on one figure (Fig 2 and Fig 3)
    f = plt.figure(col+2); f.clf()
    adjust_dict.update(left= 0.06,right=.96)
    f.subplots_adjust( **adjust_dict)
    f.set_figheight(6.)
    f.set_figwidth(7.6)

    extra_args = dict(family='serif', ha='center', va='top', transform=f.transFigure)
    f.text(.5,.99,"Money %s CA Propositions"%title[col], size=12, **extra_args)
    f.text(.5,.96,"June 8th, 2010 Primary", size=9, **extra_args)

    extra_args.update(ha='left', va='bottom', size=6,ma='left')
    f.text(adjust_dict['left'],0.0,footer%field[col], **extra_args)

    ax = plt.subplot(111)
    for stance in [yes,no]:
        abscissa=np.arange(0+stance*.30,4,1)
        lbl = locale.currency(round(prop[:,stance,col].sum()),True,True)
        lbl = lbl[:-3] # drop the cents, since we've rounded
        lbl = t[stance]+" Total"+ lbl.rjust(12)
        plt.bar(abscissa,prop[:,stance,col], width=.1, color=c[stance],
                alpha=a[stance],align='center',linewidth=0, label=lbl)
        for i in range(len(prop)):
            lbl = locale.currency(round(prop[i,stance,col]), symbol=True, grouping=True)
            lbl = lbl[:-3] # drop the cents, since we've rounded
            ax.text(abscissa[i], prop[i,stance,col], lbl , ha='center',
                    size=8,rotation=00)

    ax.set_xlim(xmin=-.3)
    ax.xaxis.set_ticks(np.arange(.15,4,1))
    ax.xaxis.set_ticklabels(["Proposition %d"%(i+14) for i in range(4)])
    fixup_subplot(ax,color)

    # plt.legend(prop=dict(family='monospace',size=9)) # this makes legend tied
    # to the subplot, tie it to the figure, instead
    handles, labels = ax.get_legend_handles_labels()
    l = plt.figlegend(handles, labels,loc='lower right',prop=dict(family='monospace',size=9))
    l.get_frame().set_visible(False)
    ax.yaxis.set_major_formatter(formatter) # plugin our currency labeler
    f.canvas.draw()
    f.savefig('CA-Props-June8th2009-%s.png'%field[col])

plt.show()
  1. I don’t fully understand what these numbers mean, as some groups’ “Total Expenditures” exceed their “Total Contributions” and still had positive “Ending Cash”

Duopoly (or why I’m not voting for Obama)

Friday, July 4th, 2008

Let me ask you a question: Do you think that the two-party system is good for the United States?

I find it very difficult to engage in debates about national politics because the average citizen has so little influence over these matters. I think that it’s much more worthwhile to get informed about and involved in local politics, because that’s where someone like me can actually have influence.

Nevertheless my own answer to the question is that it’s probably not a good thing. There’s this high-dimensional landscape of issues that people care and have different ideas about – reproductive rights, gun control, immigration, education, social programs, the size of government, taxation, the list goes on and on. Yet that gets projected down to this one dimensional line with just “Left” and “Right” with optional “far” and “center” prefixes.

And, sadly, the common consensus is that on election day you have only two possible boxes to check. A single decision. One bit. 0 or 1.

The Democrats and Republicans are playing a small concessions type of game. They sort of shuffle around slightly to appeal to enough of those voters who aren’t already automatically voting for them. If you only vote for one or the other, they have no reason to change – they already have your vote.

Voters in safe rarely contested states, have the unique opportunity to vote their conscience without fear1. When I twittered about Obama’s support for the FISA Compromise, Philip, a disappointed California voter replied: “our voting system forces us to vote strategically and i’ll be voting obama .” This doesn’t make any sense to me! Obama will carry California. Democrats almost automatically get California2 .

So why give in? You’re not happy with the Democratic candidate3, the candidate who will carry California regardless of how you vote, yet you still feel unable to voice your disapproval in the electoral arena. David wrote: “I’m not going to throw away my vote on the green party,” but aren’t you just throwing away your vote to the democrats, instead?

The role of third parties is to emphasize new and different ideas, to bring folks who’ve given up hope back to the table, and to make the major parties shift in MEANINGFUL ways. Here are some great YouTube clips on the role of third parties in the US: Part One, Part Two, Part Three, Part Four, Part Five.

If you still have doubts about voting for a third party candidate and/or you live in a swing state – consider the votepact.org proposal: find a fellow kindred heart on the other side of the political spectrum who’s also unhappy with the candidate on their side, and together vote for a third party (fill out your absentees together over coffee).

  1. Electoral College: bug or feature?
  2. The only way the Democrats might not get California is if Arnold runs as VP for a moderate Republican, and that just is not happening this year.
  3. There are more reasons to not be happy

The practical and the ideological

Thursday, March 15th, 2007

An Unreasonable Man
To start off with the latter: on Friday, after dinner with Robert and Julia at Zachary’s, we went to a screening of An Unreasonable Man – which filled the gap in my knowledge of Ralph Nader between Unsafe at Any Speed / Nader’s Raiders and the 2000 election. Fascinating balanced documentary. You can still see it this week, but it’ll only be around the theatres a short while.

The practical: After getting lunch with Robert and Jon on Saturday, I got the chance to hear recent UCSB alum Logan Green talk about Zimride, this new cool webapp he’s just put together. Carpooling made easy and safe. Here’s what it looks like: zimride - carpooling made easy

Zimride integrates with facebook, so you actually get to know something about your potential drivers/hitchers, and they might even end up being someone you know! Moreover, you can advertise your ride via those facebook stalker feeds.

Todd Chretien, Greens, Choice Voting

Wednesday, October 18th, 2006

Sentence long update on life: I’m at Berkeley studying Vision Science now.

I’ve started getting involved with the (currently small) Campus Greens organization (which meets Mondays at 7:10 in 200 Wheeler).

So today I heard Todd Chretien, Green senatorial candidate speak to a group of about 30 as part of the ASUC Speaker Series. Todd titled his talk “Why Students Should Never, Ever Vote for the Democrats,” which I think is somewhat unfortunate. Todd has an eloquent platform and I share a lot of the same views, but I also think that the title incites the type of reaction that eliminates any possibility for reasonable discussion or discourse.

I think that people don’t want to listen to you if you insult them, or just say something shocking – the novelty (if any) quickly wears off (it’s taken me a while to figure this out, but I think I learned the difficulty in trying to actively engage those who support the Democrats when talking (ranting?) to Janet on the streets of Brussels over the summer).

I think that we need more boring nitty-gritty politics, because no one will hand over the helm to people with big ideas (even if they are the right ideas). The big picture is important, but it has to be negotiated with real, tangible, local progress.

Todd gave a short run through of his top three issues ( war in Iraq, education, the two party system), and then opened it up for Q & A. In answering the questions, he covered a lot of ground in both domestic and foreign policy, but I felt like it was a discussion of issues larger than those someone who admitted he had no chance of winning could hope to influence….

So as the last question for the night, after expressing these sentiments I asked what we could do locally, that’s within our power, mentioning current choice voting efforts in Davis and Oakland. Unfortunately, Todd stuck to his anti-war protest-in-the-streets approach (even taking an outlandish pot shot at proportional representation by mentioning something about Hitler getting elected).

Most of my life I, too, have been a big ideas person, but I can’t say I’ve accomplished much with them, which is why I’m trying something new…


By the way, Kenji and Philip, you continued work on important matters has been really inspiring.Here’s my letter to the editor regarding choice voting that never got printed in the Davis Enterprise:

Until I came to UC Davis, I had never realized that there *could* be different voting systems. Choice voting is a way of reaching a majority (greater than 50%) consensus.

Choice voting allows everyone to vote their conscience without the fear of having your vote “wasted.” After the polls close, if your top-ranked candidate, Alice, has the least amount of votes, she is eliminated and your vote transfers to your next choice, Bob, in your order of preference. This process (“instant run-off”) continues until candidates reach enough votes to be elected (the threshold). This consensus building mechanism ensures that the elected officials will represent the greatest possible proportion of the voters.

Contrast this with the current system: candidate Mallory and Minnie, representing a minority of the population could get elected when multiple similar candidates (Alice, Bob, Chris, and Debra) representing the viewpoints of the majority of the population split the vote between one other.

This would not happen under choice voting, because when Alice is eliminated, those votes would go to the next choices of her supporters. This would provide more votes for the remaining majority candidates, ensuring that one of them gets elected.

I encourage Davis voters to vote yes on Measure L this November so that the City can continue looking into this effective system.

Paul Ivanov
UC Davis Class of 2005

(cute choice voting promotional video)