Archive for the ‘Uncategorized’ Category

Which politicians have Maine’s Gubernatorial Candidates supported?

Tuesday, February 2nd, 2010

os_logoI’m a big fan of Opensecrets.org. It’s a site where you can track the campaign contributions of all of our elected officials.  For example, you might be interested to know that two of Maine’s own Olympia Snowe’s five top contributors were insurance companies, and Health Providers and Insurance companies (is it any wonder she played such a pivotal role in watering down a once-decent healthcare reform bill?).

But it wasn’t until recently that I got the idea that you could turn Opensecrets.org on it’s head, and find out which politicians and PACs a particular candidate is donating to.  Many of Maine’s gubernatorial candidates are relative newcomers to politics, so figuring out who they’ve put their own money behind in the past helps gain a little insight into their beliefs, particularly for independent candidates.

Only donations over $200 need to be tracked according to U.S. Election Law.  Those candidates who haven’t put up that kind of money for other political campaigns are not tracked.  I only show contributions made after 2000, but OpenSecrets.org can go back further in many cases.  Visit the site to get even more numbers.

Independents

Eliot Cutler

4/23/2009 Investment Co. Institute $1,000
9/2/2008 Chellie Pingree (D) $250
7/31/2008 Investment Co. Institute $1,000
6/13/2008 Barack Obama (D) $500
6/13/2008 Barack Obama (D) $4,000
6/13/2008 Barack Obama (D) $600
4/15/2008 Harry Mitchell (D) $500
4/10/2008 Adam Cote (D) $500
3/18/2008 Barack Obama (D) $2,000
6/26/2007 National Association of Real Estate Investment Trusts $1,000
6/24/2007 Tom Allen (D) $2,300
10/11/2006 Democratic Congressional Campaign Committee $1,000
9/10/2006 Tom Allen (D) $1,000
5/30/2006 National Association of Real Estate Investment Trusts $1,000
11/8/2005 National Association of Real Estate Investment Trusts $1,000
6/12/2005 Tom Allen (D) $500
6/2/2005 Olympia Snowe (R) $1,000
5/9/2005 Kent Conrad (D-ND) $1,000
10/25/2004 DNC Services Corp $1,000
10/25/2004 DNC Services Corp $500
10/14/2004 DNC Services Corp $250
8/6/2004 John Kerry (D) $2,000
4/1/2004 John Kerry (D) $1,000
3/31/2004 Tom Reynolds (D) $1,000
12/31/2003 Wes Clark (D) $500
12/24/2003 Wes Clark (D) $250
5/14/2003 Tom Allen (D) $1,000
10/21/2002 Mike Michaud (D) $250
7/30/2002 Mike Michaud (D) $250
5/9/2002 Chellie Pingree (D) $1,000
9/14/2001 Chellie Pingree (D) $1,000
8/4/2001 Tom Allen (D) $500
8/31/2000 Tom Allen (D) $1,000
3/26/2000 Tom Allen (D) $500

Cutler is probably the most prolific donor in the gubernatorial race, giving almost exclusively to Democratic candidates.  When I noted this in my twitter stream, and wondered why he didn’t just run as a Democrat, he directed me to this blog post on charter schools in Maine, and Maine Democrats’ unwillingness to support them.

Cutler also contributed to Investment Company Institute, a PAC supporting investment companies, and the National Association of Real Estate Investment Trusts, a PAC that supports “publicly traded real estate companies with an interest in U.S. real estate and capital markets.”

As a Democrat myself, I have no problem with the possibility that Cutler is a closet Democrat, but I’m still surprised that the issue of charter schools pushed him into running as an independent.

Other Independents

I was unable to find any contribution information on Samme Bailey, Augustus Edgerton, Alex Hammer, Beverly Cooper-Pete, or John Whitcomb.

Maine Green Independent Party

Lynne Williams

7/21/2009 Green Party of the United States $304

A curiously non-round-number amount for a contribution.

Republicans

William Beardsley

10/20/2008 John McCain (R) $200
8/21/2008 Susan Collins (R) $250
6/21/2008 Mike Michaud (D) $500
8/23/2007 Susan Collins (R) $1,000
6/21/2007 Susan Collins (R) $1,000
1/17/2006 Olympia Snowe (R) $500
8/9/2005 Olympia Snowe (R) $375
8/26/2002 Susan Collins (R) $500
1/26/2002 Susan Collins (R) $200
6/28/2000 Olympia Snowe (R) $300

Being president of Husson College must pay better than I thought.

Matt Jacobson

6/2/2008 Susan Collins (R) $1,000
2/8/2008 Adam Cote (D) $1,000

For those who don’t remember, Cote was an Iraq war veteran from Sanford who eventually lost in a crowded Democratic primary to Chellie Pingree.

Paul Lepage

1/30/2008 Susan Collins (R) $500
6/28/2004 Brian Hamel (R) $250
12/20/2004 National Republican Congressional Committee $300

Peter Mills

9/14/2007 Rudolph Giuliani (R) $1,000
9/1/2005 Olympia Snowe (R) $1,000

Mills missed Giuliani’s 9/11 pledge drive by a few days.  If you go further back in Mills’ history, you’ll also find several donations to Joseph Brennan (D) and Janet Mills (D).

Les Otten

4/16/2009 Republican Party of Maine $1,000
10/27/2008 Chellie Pingree (D) $2,000
10/24/2008 Charles Summers (R) $2,000
10/15/2008 Susan Collins (R) $2,300
6/9/2008 Charles Summers (R) $1,800
6/8/2008 Adam Cote (D) $2,000
2/15/2008 Mike Michaud (D) $1,000
9/11/2007 Charles Summers (R) $500
11/1/2001 Kevin Raye (R) $1,000
8/13/2001 Joe Biden (D) $1,000
2/23/2001 Susan Collins (R) $1,000
10/25/2000 Jane Amero (R) $1,000

It’s interesting to note that Otten donates so much to Democratic candidates as well to candidates from his own party.  It’s even stranger that he donated to both Charles Summers and Chellie Pingree (two opponents for Maine’s first congressional district) within the same week 2008.

Bruce Poliquin

7/19/2009 Thomas Foley (R) $2,000
5/13/2009 Republican Party of Maine $1,000

Poliquin made no other donations from 2000 until 2009.  He did make many contributions prior to 1996 that aren’t shown here,  including a donation to prominent “Birther” Alan Keyes and to a gun-control PAC called “Handgun Control Inc“.  Head over to Opensecrets for more numbers.

Other Republicans

I was unable to find any contribution information for Steve Abbot and J. Martin Vachon.

Democrats

Patrick McGowan

8/10/2005 Maine Democratic State Committee $250
4/14/2004 John Kerry (D) $250
5/9/2003 Howard Dean (D) $250
7/22/2002 Mike Michaud (D) $250
3/8/2002 Chellie Pingree (D) $250

Rosa Scarcelli

6/10/2009 Maine Democratic State Committee $2,500
6/4/2009 DNC Services Corp $250
11/3/2008 Barack Obama (D) $500
12/3/2007 Barack Obama (D) $2,300
1/5/2002 Chellie Pingree (D) $250

Another interesting tidbit in these reports is that you are required to list your occupation when making a campaign donation.  I was surprised to see Scarcelli list her occupation as “Housewife” in 2002.  Her online bio says she founded a real estate management company in 1999 before taking over Stanford Management in 2005, so I would’ve thought she’d list her real estate management company as her occupation.

Peter Truman

4/2/2008 Michael Brennan (D) $250

Other Democrats

Donna Dion made one contribution in 1994.  I could not find any contribution information on Libby Mitchell, John Richardson, or Steve Rowe

Hey aspiring Maine Governors, who did your site?

Thursday, December 10th, 2009

The 2010 Maine gubernatorial campaign has started in earnest.  With over 20 people announcing their candidacy, there’s no shortage of people signing up for what is arguably the worst job in the state.  For most of the candidates, bringing jobs to Maine is a campaign cornerstone, so it would stand to reason that those candidates would hire Mainers for their own campaigns whenever possible, right?

Today several of tweets and retweets pointed out the apparent hypocrisy in Eliot Cutler’s nascent campaign because he allegedly hired a New Hampshire based design firm to develop his website.  It made me wonder who designed the other candidate’s sites.  As a Portland-based web developer, I can attest to the fact that there are plenty of highly qualified designers and developers in our home state.  So how do the candidates stack up?

Methodology

I used a number of methods to try to determine who designed each of these candidates’ websites.  Many of them don’t advertise who created their sites.  Thus, there is some sleuthing, and admittedly a bit of guesswork, to nail down every one.  I’ve tried to be as transparent as possible by explaining my conclusions for each candidate.  I’ve given each candidate a grade of “Pass” (the candidate used a Maine design firm), “Fail” (the candidate did NOT use a Maine firm), or “Unknown” (I wasn’t able to determine with absolute certainty).

Republicans

Matt Jacobson – PASS

  • Site: http://www.jacobsonforgovernor.com
  • Design Firm: Axon (Portland, ME)
  • Jacobson’s site proudly displays “Designed and Developed by AXON,” as it should, he has nothing to hide!  The site is based on PHP.

Paul LePage – PASS

Peter Mills – PASS

  • Site: http://www.millsformaine.com
  • Mills’ site is based on Wordpress with a “premium” theme by WooThemes called “The Station.”  The Station was developed by self-aggrandized South African web designer Adii “Rockstar” Pienaar.   It’s likely that a designer purchased the theme and helped Mills customize it.  If so, I can’t figure out who that designer is or if he/she/they are based in Maine.  Based on the site’s IP address, it is hosted by a San Fransisco based company called ServePath.
  • I contacted the Mills campaign via e-mail to ask who designed their site, but did not get a response.
  • UPDATE: I heard back from the Mills campaign, too.  Their site design was done by New Portland native Stephanie Dunn, who lives in New Portland, ME.  Bravo, Mills campaign, I  upgraded you to “PASS” !

Les Otten – PASS

  • Site: http://www.lesotten.com
  • Design Firm: INSYT new media (Farmington, ME)
  • Otten caught a lot of flack early on in the campaign for the not-so-subtle resemblance of his site and “O” logo to those used in Barack Obama’s presidential campaign.  His site displays the site design company in the footer.  Otten’s site is based on PHP.

Bruce Poliquin – FAIL

  • Site: http://bruceforme.com
  • Design Firm: Headlamp Creative Studio (Greenville, SC)
  • I honestly don’t remember how I tracked this one down, it wasn’t easy.  But if you go to Headlamp Creative Studio’s site, they show a carousel of featured sites from their portfolio, and Poliquin’s site shows up there.  The domain name is also registered to a South Carolinian.  The site was built using our old friend, PHP.

J. Martin Vachon – n/a

Democrats

Donna Dion – PASS

  • Site: http://donnajdionforgovernor2010.com/
  • This site is winner of the “longest domain name” award.
  • From the attributes on the html element, this site appears to be a Microsoft Frontpage or Microsoft Word site (xmlns:o=”urn:schemas-microsoft-com:office:office”).  No credit is given for the design work.  It appears to be hosted by CentralMaineWeb.com, and that’s where the site’s name servers are.  CentralMaineWeb does offer web design services, but the designs in their portfolio don’t seem similar to Dion’s site, so I don’t think they did hers.
  • I contacted the Dion campaign via e-mail to ask who designed their site, but did not get a response.
  • UPDATE: I just heard from Donna Dion this morning (Dec 11), and she informs me that she did the site design herself.  That definitely qualifies as Maine-grown, so I’ve upgraded her site to PASS.

Dawn Hill – PASS

  • Site: http://www.dawnhillforgovernor.com
  • Design Firm: Shines and Jecker Laboratories (Portland, ME)
  • To figure this one out, I had to dig into the CSS files on the page and find a stray copyright notice.  That’s not a lot to go on, so there’s a small chance that I got this one wrong.  Hill’s site appears to be a one-pager with links to third-party services, and likely is static.
  • UPDATE:  I got a tweet from Shines and Jecker Laboratories (I didn’t notice that they’re on Twitter!).  Apparently they did do the interface production, but the design itself was by Walter Craven of the local band Lost on Liftoff.  Neat!

Libby Mitchell – UNKNOWN (Likely FAIL)

  • Site: http://www.libbymitchellforgovernor.com/
  • There’s no obvious indication of who designed this site.  I noticed that the domain name was registered by a “Startled Marmot LLC.”  Startled Marmot is a smallish firm based in Santa Monica, CA that does, among other things, web design.  From their website, it appears that their IT group might be based in Brookline, MA. The site was registered by “Chief Marmot,” Evan McGee.  Evan McGee follows only 22 people on Twitter, and Libby Mitchell (and her daughter, Emily) are among them.  I can’t find a direct way to tie Mitchell’s site to these designers any other way, and it’s entirely possible that McGee is a personal friend of Mitchell’s who acquired the domain name on her behalf, but the design was done by someone else entirely. The site is being served by Apache and hosted by Utah-based Bluehost, but I can’t tell what technologies are in use other than that (they could very well be static pages).
  • I contacted the Mitchell campaign via Twitter to ask who designed their site, but did not get a response.  I was unable to find an easy way to contact their campaign via e-mail (site designers, take note).

John G. Richardson – FAIL

  • Doesn’t appear to have any web presence.
  • Yikes!  Looks like John Richardson does indeed have a site… my Google Mojo missed this one somehow!
  • Site: http://www.johnrichardsonformaine.com/
  • Design Firm: NGP Software (Washington, DC)
  • I had a difficult time finding this site when I first wrote this blog post.  In my defense, “John Richardson” is a very common name, but searching on Google again this morning for “John Richardson Maine,” you can find the campaign site as the fifth entry on the list. I apologize for missing it earlier.
  • Richardson’s site attributes its design to Washington, DC based NGP Software, who specializes in “Technology for Winning Campaigns.”  Perhaps not so much at SEO.

Steve Rowe – PASS

  • Site: http://www.roweforgovernor.com
  • This site was designed using ColdFusion and is served by IIS.  There is no attribution that I can find, and nothing lurking in the page sources to give any indication who did the work.  From its IP address, it looks like it is being served by CrystalTech, based in Phoenix, AZ.  I happen to know a local web developer who uses this host, but it doesn’t look like his work.  So I can’t even make an educated guess on this one, although the fact that it was written in ColdFusion should significantly reduce the number of likely designers.  :)
  • I contacted the Rowe campaign via e-mail to ask who designed their site, but got no response.
  • UPDATE: I just heard back from the Steve Rowe campaign.  According to their e-mail: “Marc Cerabona of DigitalTurf.net designed our website and manages it.”  It’s not clear to me where DigitalTurf is located, but a search on LinkedIn for Marc Cerabona shows an Internet professional in the Portland, ME area.  So I’m going to call this one a PASS.

Rosa Scarcelli – FAIL

  • Site: http://rosaformaine.com
  • Design Firm: Liberty Concepts (Boston, MA)
  • Scarcelli’s site was designed by Liberty Concepts, a company that seems to specialize in campaign and civic activism sites.  Liberty Concepts was also responsible for designing Tom Allen’s site for his failed U.S. Senate bid, as well as Mike Michaud’s site.

Green Independent

Lynne Williams – FAIL

Independent/Non-Committed

Eliot Cutler – FAIL

  • Site: http://www.cutler2010.com/
  • Design Firm: Raka Creative (Portsmouth, NH)
  • This is the case that made a splash on Twitter today, and led to this writeup.  The footer on his campaign site clearly states “Raka” as the design firm, which links to Raka Creative’s site.

Alex Hammer – n/a

John Whitcomb – n/a

Comments?

This concludes the sleuthing that I could do, I’m sure there are others out there who are better at it than me.  Can any of you figure out the designers for the ones that I couldn’t figure out?  I’d love to hear from the candidates themselves – why did you select the designer that you’re using?  Did I get it wrong for any of them?  Drop me a line and let me know!

Why Twitter’s New Re-Tweet Feature Won’t Catch On

Thursday, November 19th, 2009

fail-whaleTwitter recently began rolling out a new retweet feature.  I’m one of the lucky few who is now in the private beta.  Mashable had a particularly good writeup about how it will work.  The feature has been greeted with a fair amount of controversy.  So what is it about this feature that Twitter is screwing up so badly?  To answer this, I think it’s interesting to revisit some of Twitter’s other feature rollouts.

The Good: Threaded Comments

Sometime in August of 2008, Twitter quietly added threaded comments to its service.  Essentially, they added hooks in the API, as well as features in their own web page, to allow users to see the tweets to which people were responding.  Before this feature, there were no “responding to @soandso” links on tweets.  You essentially had to guess your way through the thread of a conversation.

Twitter added this feature when then-rival Friendfeed showed up on the social networking scene.  One of Friendfeed’s most noticeable features was its ability to thread conversations.  Prominent twitterers like Robert Scoble and Dave Winer took notice, and started taking their conversations to Friendfeed, where they were more easily followed.  People started asking aloud why Twitter couldn’t have this feature, and how long it would be before everyone abandoned Twitter for Friendfeed’s superior conversations (not to mention uptime – fail whales were a lot more frequent in those days).

Twitter added the feature within weeks.

The Good: Lists

Most people who use Twitter, especially so-called “Power-Users,” don’t use Twitter’s web interface as their main interaction with the service.  Instead, they use a client to watch and tweet in ways that are most productive to them.  Two of the most popular twitter clients are Tweetdeck and Seesmic Desktop.  Among the most useful features of these clients is the ability to maintain “lists” of friends.  This allows users to segment their friends and follow different types of conversations – one might be professional contacts, another might be friends from “real life,” another might be local twitterers, etc.

There are a couple of downfalls to this: 1.) the lists aren’t portable.  Switching clients means you lose your lists.  2.) the lists aren’t “shareable” with your friends.  Friend discovery is one of the hardest things for Twitter newbies to overcome, and list sharing would help immensely with discovery.

Again, people started wondering publicly why twitter couldn’t solve this problem.  Why couldn’t they allow its users to create lists right within Twitter?  That could potentially solve both the sharing problem, and the portability problem.  People began rolling their own lists outside of Twitter.

Twitter listened, and created their own list feature with much fanfare several months ago.

The Bad: Replies

A few months ago, Twitter abruptly removed a feature whereby users could see replies by someone they are following, to someone they are not following.  This feature removal was greeted with harsh criticism by some users.  Many used the feature for friend discovery, and were unhappy that it was taken away from them.  Before it was removed, the feature could always be turned off (indeed, it was turned off by default).  Yet twitter’s official explanation was the following:

Based on usage patterns and feedback, we’ve learned most people want to see when someone they follow replies to another person they follow—it’s a good way to stay in the loop. However, receiving one-sided fragments via replies sent to folks you don’t follow in your timeline is undesirable. Today’s update removes this undesirable and confusing option.

Few bought this explanation. If the feature could simply be disabled, and if it was already disabled by default, then what was the harm of just leaving it there?  The truth came out in the Twitter blog the following day:

The engineering team reminded me that there were serious technical reasons why that setting had to go or be entirely rebuilt—it wouldn’t have lasted long even if we thought it was the best thing ever.

The truth was, it was not removed because of “usage patterns and feedback” at all.  It was removed to solve a technical scaling issue.  Twitter tried to cover it up by selling it to its user base as something they actually asked for.

The Bad: Retweets

Now Twitter is trying to sell its users on this new Retweet redesign. Why does it leave a foul taste in my mouth?

Retweeting is a great example of Twitter teaching us what it wants to be. The open exchange of information can have a positive global impact and the more efficient dissemination of information across the entire Twitter ecosystem is something we very much want to support. That’s why we’re planning to formalize retweeting by officially adding it to our platform and Twitter.com.

Like the reply overhaul above, I’m not buying this explanation.  It’s being sold to its users as something they’ll want, yet no one has asked for it.  Why are they doing this when so many people are opposed to it?

The Real Reason I Think They’re Doing It

Today, Twitter’s greatest asset is their data.  The fleeting thoughts of millions of users is a goldmine to somebody, somewhere.  The higher the quality of this data, and the better it’s organized hierarchically, the more it’s worth.  The potential miners of this data will find more value in it if they are able to easily assess the “virality” (yes, I just made that word up) of a thought, tweet, or link.  Hunting down a trending topic to its source leads researchers to the influencers of twitterdom, and people will pay good money to get that information.

In short, Twitter is implementing this feature for their own benefit, and trying to sell it as something it’s users will like.

There’s absolutely nothing wrong with trying to monetize Twitter – heck, I hope they’re successful in figuring out how to keep the service going.  But I’m a bit resentful that they are trying to convince people that they want a feature when clearly they do not.

Missing The Point of Retweets

I think that, central to all of this, Twitter is ignoring why people retweet.  Echoing someone else’s tweet is a subtle endorsement of an idea, and it is important to be able to preface an endorsement with one’s own sentiments.  The new feature leaves no room for explanation or commentary.  In fact, I’ll occasionally use Re-tweets to share an opposing view (e.g., “Someone still doesn’t get it.  RT @ev: Reminder about new Retweet function: You can turn it off on a per-user basis. Which is hot.”) .  The new feature doesn’t allow that.

I suspect people will still re-tweet the old way, but start using the “via” convention instead of the “RT” convention to do so.  That’s what I plan on doing.  Unfortunately for Twitter, the new retweet feature will only add value to their data if people decide to actually use it.

Twitter’s Echo Chamber and Question 1

Wednesday, November 4th, 2009

noon1-maineFirstly, I acknowledge my own complacency.  I got lazy.  Perhaps my horrible track record is partly to blame.  I’ve done volunteer work for exactly two political campaigns: John Kerry’s election bid, and Tom Allen’s senatorial run.  Perhaps part of it is because I’m afraid of talking to strangers both in person and on the phone, especially when discussing politics. I know they’re lame excuses.

My Overconfidence

I knew the polls said it would be close.  Still, when I went to bed last night, I knew that the following morning, I’d be bragging on Twitter to all of my non-Maine followers about how cool, enlightened, and progressive my home state was.  I’d be virtually high-fiving all my “tweeps” and smugly looking down at California and all the other states that shunned equality.  The turnout was higher than expected, and that could only be good, right?

The “Echo Chamber”

Twitter and other social networks have been accused of being an “echo chamber.”  Sometimes it’s difficult to tease out an original thought or dissenting opinion amidst all the regurgitation and self-congratulatory noise.  It’s particularly evident to me while a social-media conference is in full swing (e.g., #sxsw, #140conf, #tbc09); a popular speaker will make a witty twist of a phrase, and twenty people will retweet it in fawning approval.

The effect is amplified when you follow people who think the same way that you think.  The conversation becomes an expression of camaraderie, and an affirmation of one’s own feelings.  But it’s a dangerous mistake to confuse this camaraderie for the tide of public opinion.

Could I have done more?

I saw people like my twitter-hero @AlexSteed rounding up twitter friends and canvassing neighborhoods in Westbrook to get out the vote.  Thank you Alex, and everyone else who actually hit the streets and did real work to try to see this thing through.  Those of us who were content with the ego rush of seeing our #NoOn1 #marryme tweets get retweeted have learned a hard lesson.  Twitter has made the world (and Maine) feel like a smaller place, but it’s still pretty big out there.  The slice of Maine we surround ourselves with is comfortable, but it’s way too easy to let the echo chamber lull us into a false sense of security.

Fighting the Echo Chamber

Chris Pirillo wrote an insightful post on how to eliminate the echo chamber (isn’t it ironic that I’m perpetuating the echo chamber by linking to this?). At number eight on his list is “Make Yourself Uncomfortable.”  It’s great advice. That’s what I did when I volunteered for those other campaigns.  That’s what I did when I came out of my social-anxiety shell and attended my first tweetup (where I knew nobody in real life).  And that’s probably what I should’ve done this time.

We shall overcome

It takes years of questioning and rebelling against the previous generations’ outmoded ideas to make progress.  We’ll get there someday.

Maine Republican Gubernetorial Candidate Matt Jacobson, Twitter, and Question 1

Wednesday, October 21st, 2009

MattJacobson2I’ve been a Democrat since about the time I learned the difference between Democrat and Republican.  You don’t spend your formative years in a family on the union side of one of the most notorious labor strikes in Maine’s history and come out of it a Republican.

I think I’ve voted for a Republican exactly three times, and each time was for a state office.  I’ve been “lured to the dark side” on occasion because of my frustration with Augusta’s inability to make drastic changes to fix Maine’s consistently anemic economy.  The Maine Democrats seem satisfied to make small changes here and there, but are unable to make bold spending cuts or changes to tax structure when we desperately need them.

All of this is to say that I pay close attention what candidates in both parties have to say in a gubernatorial election.  My favorite Republican candidate thus far has been Matt Jacobson.  I think he knows something about job creation in Maine because, as CEO of Maine & Company, he has actually done it. In addition to that, he has taken a decidedly active role in Social Media, and even participates in Twitter.  I’m a sucker for politicians who are courageous enough to engage with people using social media.

Yesterday, on Twitter, Jacobson was asked by several users to state his opinion on Question 1.  His initial response and subsequent explanation was as follows:

@alexsteed @kastc – I will vote Yes on 1. The current law does not adequately protect the rights of everyone.”

@kastc way too complex for 140 characters. I am happy to meet to discuss.”

As someone who believes that marriage is a right that ought to be available to everyone, regardless of sexual orientation, I was disappointed with this response.  And, indeed, fitting all of your opinion into a tweet can be rather difficult.  Fortunately, Jacobson did what anyone with a decent grasp of social media would do (kudos to you, sir!), and followed up a while later with a link to a more nuanced explanation of his thoughts:

“@kastc From and interview 8/4/9, lots of detail on my position: http://bit.ly/ULPKu”

So I went to the interview, and scanned down for the part where Jacobson addressed gay marriage.  Here’s what I found:

“I would have vetoed the bill, and here’s why.  It has nothing to do with civil rights – I think that the overwhelming majority – I think in the 90% range – believe that all folks should be treated equally, and I am clearly in that camp.  I would not have signed this bill, but not from the civil rights perspective, I think that we have to find a way to treat everybody equally and it is not acceptable that we don’t.”

“But this bill I think opens up those folks that have a reasonable religious objection to some real problems.  In other states where they have passed bills with similar language – there was a church I believe in Iowa who had convictions against same-sex marriages, and wouldn’t rent their hall as they do to other people in the public for a celebration to a same-sex couple, and they lost their tax exempt status.  There was another instance in another state where a photographer did not want to film the same-sex marriage ceremony from a religious conviction point of view, and was sued in civil court and fined tens of thousands of dollars. I don’t have any problem extending rights to everybody, but we ought not do that at the expense of someone else – especially someone with a reasonable religious conviction against it.”

(emphasis mine)

Jacobson’s concerns seemed quite sincere, and he piqued my curiosity about the two cases, so I decided to do a little research.

The Church in Iowa

The first case was about a church in Iowa, so I jumped into Google to learn more about it.  Unfortunately, I was unable to find any news stories church in Iowa that lost its tax exemption.  I did find a story that seemed similar, but it was in New Jersey, reported in the New York times in September 2007.  As is often the case, the story is a lot more complicated than the headline.

Hearing that a church lost is tax exempt status because it would not perform same-sex marriage is shocking and worrisome, but in this particular case, 1.) the group that lost its status was not actually a church, and 2.) it had nothing to do with legalized gay marriage.  A boardwalk pavilion in Ocean Park, NJ lost its tax exemption because, after refusing to permit non-binding gay marriage ceremonies on the premises, it was no longer deemed a public space.  It’s exempt status was solely on the basis that it was a “public space” under the state’s “Green Acres” program, and had nothing to do with religious affiliation – to be deemed a public space, an area needs to conform to a minimum set of anti-discrimination criteria.

The pavilion property was owned and maintained by a non-profit Methodist-affiliated organization, who objected to equal marriage.  That organization decided that it would no longer apply to the Green Acres program for its tax exemption rather than comply with the non-discrimination requirements for a public space.  Be assured, the Methodist church is still a tax-exempt religious organization in New Jersey.

The Photographer

A little more searching dug up the case of the photographer in New Mexico who was fined $6000 for refusing to photograph the wedding of a lesbian couple.  You can read the actual court finding if you’d like.  It’s very hard to find information on this case online that isn’t blatantly biased.  Like the previous case, this case actually has nothing to do with marriage equality.  New Mexico does not permit gay marriage or civil unions, but it does have a very broad anti-discrimination law.  The photographer in this case was found in violation of that law.

Here’s the thing: we already have a sexual orientation anti-discrimination law on the books in Maine.  It was passed it in 2005 and went into effect after a failed citizen’s veto attempt by the Christian Civic League (sound familiar?).

I’m no lawyer, but based on the explanation on the Gay and Lesbian Advocates and Defenders (GLAD) web site, it sounds to me like the photographer would have indeed been in trouble with respect to Maine’s anti-discrimination law.  The pertinent part of Maine’s anti-discrimination law prevents discrimination based on sexual orientation with respect to public accommodation (from the linked site, “Generally, any establishment that caters to, or offers its goods, facilities or services to, or solicits or accepts patronage from the general public is a place of public accommodation.” [emphasis mine]).

The case is still under appeal.

Now, you can argue whether or not this is a good thing (if a photographer refused to photograph an interracial wedding, would that be OK?  Some people might say that’s his or her prerogative), but the fact is that it is not relevant.  None of this has anything to do with Question 1.

You can read the text of Maine’s same-sex marriage law for yourself.  There is nothing in it to confer additional rights to anyone, other than the right to be married.  In fact, Sec. 5., 19-A MRSA Sec.655 specifically grants protective rights to people who do not want to authorize a same-sex marriage for religious reasons.

Conclusion

In short, I think Jacobson’s concerns about Question 1 are unfounded, particularly if they are based primarily on these two cases.

I do salute his bravery for participating in such a public forum, and I sincerely hope the recent brouhaha over Question 1 in his twitter stream doesn’t discourage him from continuing to participate.  We need more politicians to share their thoughts and opinions as openly as he has, and I hope the other Maine candidates for governor follow his lead; there are other members of the Maine gubernatorial race with twitter accounts, but his stands out for its level of interaction with his followers, and more interaction is a good thing.

Unmasking SMUG: Part Two

Monday, September 14th, 2009

Catching Up

In my previous post, I described a local twitter phenomenon, known only as “SMUG,” which stands for “Social Media Usability Gurus.”  It’s a satirical account intended to mock the abundant so-called social media experts who have infested sites like Twitter and Facebook.

One part of SMUG’s mystique is his/her/their anonymity, and I decided to try to play detective/journalist and figure out who was behind SMUG.  Sadly, SMUG has only tweeted once since my previous post.  I sincerely hope that I haven’t scared SMUG into hiding.  The fact of the matter is, I really don’t have any conclusive evidence at this point of exactly who SMUG is, just a few good leads.

Pressing On

Having said that, I intend to consider sharing my observations and clues.  At any tweetup these days, you’ll find hushed people in the corner speculating who SMUG is, and providing their own theories and clues.  This is no different than any of that.

Form 90125

At the recent SMUGup, we were given an amusing fill-in-the-oval “survey” to fill out entitled “Form 90125.”  An example question would be “My online personality matches my personality in real life (Strongly Agree/Agree/Disagree/Strongly Disagree).”  The surveys were unceremoniously shredded on stage after attendees finished filling them out.

Form 90125, from 9/8 SMUGup

If you’re like me, you believe nothing is random, including the title of this form.  Also, if you’re like me, you grew up where the only reasonably “cool” radio station played classic rock.  If you’re really like me, you know all sorts of worthless trivia, particularly about music.

Damning Taste in Music

It turns out 90125 was the name of a really horrible album released in 1984 by a then washed-up version of the British Prog-rock band Yes.  At this point in their career, a few remaining members of Yes decided to abandon its prog-rock roots and record a bunch of banal pop tunes.  Elf-sounding lead singer Jon Anderson was eventually brought back in, and he rewrote all the lyrics and recorded himself on vocals. As is often the case, this crappy little pedestrian album turned out to be Yes’s biggest commercial success (think Metallica’s black album).

From Wikipedia, the album cover was designed on one of the band member’s Apple II computers.  You can hardly tell, can you?

BTW, the history of the band Yes is fraught with soap-opera crap like this, with members leaving and re-joining all the time.  It’s really great.

Why am I telling you all this?

Because at least one member of SMUG is into Prog Rock enough that he/she knows about this awful little album.  It’s the kind of thing that you

  • Purchased (on a charming little plastic thing called a “cassette” in those days – look it up) because you like the band, and are happy to get new output from them, regardless of its quality or lack thereof (see Pink Floyd’s “Momentary Lapse of Reason,” or Jethro Tull’s “Catfish Rising” for other examples).
  • Purchased because you liked the catchy little pop tunes that were reminiscent of a laundry detergent commercial jingle.
  • Didn’t purchase at all, but the ubiquity of “Owner of a Lonely Heart” on every radio station at the time forced the song into your memory against your will.

What does all of this mean?  It means our perpetrator likely listens to classic rock, and probably graduated from high school around, say, 1986.  Oh, he probably lived in white suburbia, where music like this was unavoidable growing up.

Check out all your blip.fm friends to look for classic rock like this, and checkout some facebook profiles for graduation dates – draw your own conclusions.

Is Your Programming Team Your Rock Band?

Tuesday, March 24th, 2009

I’m sure that I’m not the person to make this connection, but it occurred to me the other day that being on a smalltereu-tereu-ian-matthew-soper team of coders is a lot like being in a band.  I’ve been in a couple bands that never went far beyond the garage (I’m allegedly a bass player), so perhaps I’m not the foremost authority on this topic.  However, I think there are a few parallels between building, e.g., a small MVC web application, and writing and performing the next standard verse-chorus-verse rock anthem.

In particular, I think there are parallels between the specific members of a prototypical Rock band, and the members of a team who create MVC applications:

  • Drummer – The Anchor.  Provides the foundation for the music, onto which the other layers are stacked and woven.  In an MVC app, this is your database guy/gal.  The person modeling your data and managing the schematic underpinnings of your application is your drummer.  And if you’re using a weird schema-less database like CouchDB, then you have yourself a sloppy jazz drummer, which means more work for the Bassist.
  • Bass Player – The Bass Player sets the groove for the song, and maps the primal beats that the drummer is hammering out into something melodic for the rest of the band to work with.  The bassist is also crucial for carrying the beat for the rest of the band when the drummer is screwing around (see note about jazz drummers, above).  In our web application, this is the domain layer, where your ORM, caching, and validation all chill out.  And like the bass player, this is rarely the sexiest or most glamorous part of the application.
  • Guitarist(s) - This is your business logic developer.  Some bands choose to break this up into your traditional Angus/Malcom roles of “rhythm” and “lead” guitar.  Likewise, you may choose to have separate model and controller layers in your app (particularly if you’re a three-tier app: the web tier controller is your Angus and the middle tier model is your Malcom).  Bass players can sometimes get by as guitarists in a pinch, and vice versa.  Likewise, you’ll see business logic guys doing domain work and vice versa.  Just don’t let them try to play their parts on the wrong instrument – you’ve gotta separate your concerns, dude.  Aside from the lyrics, this is the part of the song that your listeners are the most likely to hear.
  • Lead Singer – This is your AJAXy, CSS laden, poetic presentation of your band’s message.  It’s what your listeners hear (and see) first.  And the singer gets all flustered when the rest of the band screws up (the singer is a real primadonna, very sensitive). Changing your lead singer will almost certainly alieniate your fans (think Facebook redesign – the Sammy Hagar of UI decisions).

I tend to get carried away with analogies, and this one is no different – I could keep going (your roadies are your project managers, your label is the marketing and executives who make all the money) but I’ll try to show some restraint.  But given this analogy, I find it interesting that the role I play on software teams is often similar to the role I play in a band.  I like bass.

Photo Credit: Ian Matthew Soper

More on Happiness at Work

Monday, March 24th, 2008

There’s an awesome article over on d’bug that makes my recent post look, well, pretty sophomoric. Their article gets more to the root-cause of why we like to be propped up with perks all the time, instead of just punching the timeclock and doing our jobs like our father’s generation. There’s a lot of text, but it’s a great read.

Pizza shop 2: Totaling the JPA Order, use P6Spy to prevent stupidity

Tuesday, March 4th, 2008

I’m digging up the original Pizza Shop project to illustrate another Hibernate gotcha (it’s probably applicable to other ORM libraries as well… admittedly, I haven’t tested it). If you didn’t read the original Pizza Shop post, you can find it here. To review, here is an ERD for the system:
Today I’d like to show how not to total up the cost of the customer order. First, we are going to add P6Spy to the project. P6Spy is an excellent “JDBC wrapper” tool that sits between your application code and your actual JDBC driver. It intercepts your application’s JDBC requests and logs the results. It’s an invaluable tool for optimizing the voodoo out of an ORM tool, and the great thing is that it’s simple to setup:

1.) Change your application’s JDBC driver from whatever it currently is (e.g., org.postgresql.Driver), to the P6Spy JDBC driver, com.p6spy.engine.spy.P6SpyDriver.
2.) Modify the spy.properties file by editing the line that starts with “realdriver=”, changing the value to your actual JDBC driver.
3.) Put spy.properties on your classpath.

That’s it! Now that we have that out of the way, let’s see just how badly we can screw up a simple method in our Model class. The method we are going to add will total up the price of an order. If you look at the ERD above, you can infer that the total cost of an order is the sum of the base price for each pizza, depending on its size, plus the price of each pizza’s individual toppings.

So for our example order, let’s say we have the following:
1 Small Pizza with Pepperoni and Mushroom
1 Medium Pizza with Sausage and Onions
1 Large Pizza with Extra Cheese

You’ll recall that we created a Model class which provides a method for retrieving a List of Pizza objects that are associated with an order ID. The temptation is to create a method which looks something like this:

public BigDecimal getOrderPriceWrong(Integer orderId) {
  BigDecimal result = new BigDecimal(0.0);
  Order order = this.getOrder(orderId);
  for (Pizza pizza : order.getPizzas()) {
    result.add(pizza.getSize().getBasePrice());
    for (Topping topping : pizza.getToppings()) {
      result.add(topping.getPrice());
    }
  }
  return result;
}

Because Hibernate does lazy-fetching, it’s not going to attempt to calculate the total cost with as few queries as possible. Instead, Hibernate’s general philosophy is to defer any queries until it knows that it absolutely needs to do them, substituting empty proxy objects for populated ones until required. Usually this is an optimization, but in this case, Hibernate will do the following queries:

1.) Query to obtain an order object.
2.) One Query for each Pizza, joined to the Size, to obtain the base price.
3.) One Query per Topping, to obtain the topping price.

In all, we get nine individual SQL queries to compute the total price of our single fictional order. The proof is in the P6Spy’s output, spy.log, truncated below:

select order0_.pizza_order_id as pizza1_2_, order0_.version ...
select pizzas0_.pizza_order_id as pizza4_2_, pizzas0_.pizza_id ...
select pizzas0_.pizza_order_id as pizza4_2_, pizzas0_.pizza_id ...
select pizzas0_.pizza_order_id as pizza4_2_, pizzas0_.pizza_id ...
select toppings0_.pizza_id as pizza1_1_, toppings0_.topping_id ...
select toppings0_.pizza_id as pizza1_1_, toppings0_.topping_id ...
select toppings0_.pizza_id as pizza1_1_, toppings0_.topping_id ...
select toppings0_.pizza_id as pizza1_1_, toppings0_.topping_id ...
select toppings0_.pizza_id as pizza1_1_, toppings0_.topping_id ...

If your application is totaling up the price of Pizza orders all day, this can really add up! An alternative approach is to use two named queries to compute the total base price, and total topping price, for an order. For example, we might add the following annotation to the Pizza class:

@NamedQueries(
{
@NamedQuery(
 name="basePrice",
 query="select SUM(p.size.basePrice) " +
       "  from Pizza p " +
       " where p.order.id = :orderId"),
@NamedQuery(
 name="toppingPrice",
 query="select SUM(topping.price) " + 
       "  from Pizza p join p.toppings as topping " +
       " where p.order.id = :orderId")
})

Then, you could add the following methods to the OrderDao:

public BigDecimal nullGuard(Query query) {
  BigDecimal result = (BigDecimal)query.getSingleResult();
  return (result == null ? new BigDecimal(0) : result);
}
 
public BigDecimal getOrderPrice(Integer orderId) {
  Query query1 = getEntityManager().createNamedQuery("basePrice");
  query1.setParameter("orderId",orderId);
  Query query2 = getEntityManager().createNamedQuery("toppingPrice");
  query2.setParameter("orderId", orderId);
  return nullGuard(query1).add(nullGuard(query2));
}

…and call into the DAO from the Model class, thusly:

public BigDecimal getOrderPriceRight(Integer orderId) {
  return this.orderDao.getOrderPrice(orderId);
}

When we run the P6Spy test now, we see a meager two queries where we used to have nine:

select SUM(size1_.pizza_size_base_price) as col_0_0_ from PIZZA ...
select SUM(topping2_.topping_price) as col_0_0_ from PIZZA ...

It pays to periodically use a tool like P6Spy on your application, to look for easy wins like this one!

I’ve included a complete working eclipse project that demonstrates this… it’s actually a tweaked version of the earlier Pizza Shop project. You can get it here.

Now hosting on blogspot

Tuesday, February 26th, 2008

I’ve moved the host for this blog from my own webhosting account, to blogspot. It should be a pretty seamless change, but I’m keeping my fingers crossed.


© 2010 Mike Desjardins. All Rights Reserved.