2. Query Audience
• Level of Programming Expertise?
• Political engagement? Worked on campaign?
• Open Data
3. Why did I do this?
• Political
– This election is different
• Whose government?
– eg. Postal code boundaries
4. Why did I do this?
• Personal
– Four things in my life:
• Movies (recovering film producer)
• Politics
• Code
• Work with life partner
5. Flash to PHP
• Object oriented programming
• MVC!
• Framework!
• a mentor – Chris Monson
6. Political Origins of defeatharper.ca
• Rob Ford
– Not just wacky. Not about drugs.
– Fundamental difference in what the city does
• eg. Charge for everything (parks)
• 3 cities -> 2 cities
• US comparison (Detroit)
– Didn’t take care of wonderful city so people started to leave
– Those who were left were left with nothing but bills
» They burned what was left.
7. Run for City Council
• Tools
– Nation Builder http://nationbuilder.com/
• Organizing tool (Obama and every other campaign)
– Also large groups (clubs, teams, etc)
– Expensive
– Extensible
– Learning curve
– Facebook, twitter, email, maps, walking routes, money…
8. Lead Now
• Organizing people to choose best candidate to
defeat Harper.
• Who’s heard of them????
9. • Retail politics. Door to door in 12 ridings.
– Convince people to pledge to vote for candidate
with best chance to defeat sitting Conservative.
• Raising money for polls in 31 ridings (hope to
add more)
• What about the other 307 ridings??!!
11. Initial Concept
• What do our visitors need to know?
– How did Harper get 100% of the power with 39%
of the vote?
– The impact of redistribution.
– First past the post.
• What order to lay it out?
• Real Live Testing!!!
Riding page (we got it wrong)
12. Home page with General Info
Just vote splitting
Find riding
338 riding pages
2011 election results
Straw Poll
form
results (charts/graphs)
Blog/comments
13. Expected people to be very active.
Enter survey results for friends, neighbours
Volunteers for parties would share their door
knocking.
Columnists
Thermometer – How many need to change their
vote to defeat sitting Conservative (statistical
formula)
14. Building the site
Mostly a question of gluing a bunch of APIs
together.
Wordpress user meta-data and custom post-
types
15. Find Your Riding
Google reverse geocoding
Via postal code
Via address
Both inaccurate.
(no help from Elections Canada – were
worried about scraping)
16. Represent Open North API
https://represent.opennorth.ca/
built on Google’s Civic Information API
returns json – nice Wordpress Function to parse
17. Riding Page
What URL to use?
riding numbers don’t change.
riding name more Google friendly
mistake.
Attributes of each Custom Post Typed?
Data imported by hand (Elections Canada
format)
18. -Login/out – authentication (BARF)
-Pie Register handled authentication.
(no user profile and…. Don’t get me started)
-later: Columnists – permission (next time wp roles)
Submit multiple survey results – user
permission
Social media - plugin
About the riding – Standard Page Content
Map (might be the wrong riding) Google KML
Candidates – from Represent North
Regional Polls – detect region. Graph/Text
19. 2011 results - newchart.js
https://github.com/FVANCOP/ChartNew.js/
Custom text depending on 2011 results – a series of
switch statements
Poll results (next election only) – Formidable Forms
– wasted a LOT of time Terrible api. Terrible
analysis.
https://formidablepro.com/
Straw Poll form – Easy to lay out.
Do it the Wordpress Way!!!!!!
20. Map of Canada
CartoDB https://cartodb.com/
Bravo!!!!!! (but never did get the click for link
to riding – but would have)
Google was easy and easy to extend but
navigation on mobile was flakey. (break large
map into pieces)
Email – Postman SMPT 0Auth2.0
https://wordpress.org/plugins/postman-smtp/
21. Security
Site hacking
Expected Cons to come after us
- Glen Tate http://gtmanagement.com/
- VPS at myhosting.com (local. Very good)
Very fine suite of tools to protect and report.
(false alarms)
- nginx
22. User Input
Straw Poll
Assumed people would cheat.
required authentication.
Switched to cookies (Formidable cookies
didn’t work) – Chris Monson
Comments
Also required authorization
24. August 14 – live
A few tweets during Cross Country Checkup gave
us a thousand views.
Facebook/Twitter
Lost effectiveness over time
- there was nothing new.
Launch of VoteTogether.ca
25. Impact of VoteTogether
Famous in a small corner of the internet – which
was also our core.
Wrote to them and said we are for the 325
ridings where they are not.
People thought that they had info on all ridings.
This is a coming problem.
26. Strategy
Didn’t have one.
How do you spell dumb? – “s t o o p I d”
Needed a team before we did anything.
Consult with people who have done this
before eg.
https://changealberta.wordpress.com/
27. Publicist
Attracted the attention of 30 year old social
media expert.
Target audience for this campaign
Both parents with MA degrees.
Contract work
Live in parents’ basement
28. Birth of a Strategy
Paid Chris Monson to add:
- columnists
- multiple survey entries
29. Strategy
Attract Columnists
People who are highly engaged.
They write about their own riding
As election nears and people want local
information they visit site and take survey, write
comments
30. Around Thanksgiving site gets very busy as
people decide.
Columnists for each riding examine all available
data.
Where it is clear they recommend a
candidate.
31. Go Big
Plan was to:
press releases to mainstream media
(NOT email. Newswire - $400 each)
Write columnists at TV networks, radio,
magazines, newspapers.
BUT
- too easy to give the wrong advice.
- we needed to align with others at the
beginning. No connections/credibility.
32. How Was Wordpress?
I am not qualified to answer this question. (Yii is only
point of comparison)
- I dislike plugin architecture. I prefer MVC
- I like the choice of plugins
- A plugin that does anything more than one simple
thing seems to always be missing something.
- Would have liked a datagrid.
- Slow
- Authentication should be a LOT better
- Did no admin side work. Suspect it’s awesome.
33. Links
defeatharper.ca
Nation Builder
premier organizing app
http://nationbuilder.com/
Lead Now / Vote Together
Largest Strategic Voting organization
raising money for polling in at least 30 ridings
leadnow.ca
votetogether.ca
Represent North
https://represent.opennorth.ca/
Api for data about our governments
- our representatives and their records
newchart.js
rewrite of chart.js -
now dated (it's heavy)
https://github.com/FVANCOP/ChartNew.js/
34. Formidable Forms
https://formidablepro.com/
popular form plugin
powerful, easy to use.
- Watch out for the api
almost no data analysis
(but the support is excellent)
CartoDB
Excellent Cartography (mapping) tool. Can't wait to use it again. A star.
https://cartodb.com/
Glenn Tate
set up our sever and wordpress security.
Wordpress Expert - Don't try what he does without parental supervision
http://gtmanagement.com/
Chris Monson
my Mentor
All 'round coder (design, too)
Full Stack (I don't know all the languages) php, Yii, Wordpress, others
eg. developer on custom animation system.
Change Alberta
Citizen's organization that organized campaign for strategic voting in last Alberta election
https://changealberta.wordpress.com/