diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..d77702bd
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,17 @@
+{
+ "cSpell.words": [
+ "Electo",
+ "FPTP",
+ "Unsplit",
+ "Voteline",
+ "altlink",
+ "bettercount",
+ "endcomment",
+ "frontrunners",
+ "misinformative",
+ "ncasenmare",
+ "scorefamily",
+ "themself",
+ "yesno"
+ ]
+}
\ No newline at end of file
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 00000000..6873ace5
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,34 @@
+source "https://rubygems.org"
+
+# Hello! This is where you manage which Jekyll version is used to run.
+# When you want to use a different version, change it below, save the
+# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
+#
+# bundle exec jekyll serve
+#
+# This will help ensure the proper Jekyll version is running.
+# Happy Jekylling!
+# gem "jekyll", "~> 3.8.7"
+
+# This is the default theme for new Jekyll sites. You may change this to anything you like.
+# gem "minima", "~> 2.0"
+
+# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
+# uncomment the line below. To upgrade, run `bundle update github-pages`.
+gem "github-pages", "~> 206", group: :jekyll_plugins
+
+# If you have any plugins, put them here!
+group :jekyll_plugins do
+ gem "jekyll-feed", "~> 0.6"
+end
+
+# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
+# and associated library.
+install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do
+ gem "tzinfo", "~> 1.2"
+ gem "tzinfo-data"
+end
+
+# Performance-booster for watching directories on Windows
+gem "wdm", "~> 0.1.0", :install_if => Gem.win_platform?
+
diff --git a/README.md b/README.md
index 30aa08a5..567750de 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,8 @@
-
+
-**TO BUILD A BETTER BALLOT**
-an interactive guide to alternative voting systems
+**Smart Voting Simulator**
+An Explorable Guide to Group Decision Making
-**[play/read it here](http://ncase.me/ballot)**
\ No newline at end of file
+**[play/read it here](http://paretoman.github.io/ballot)**
+
+[modify it here](http://paretoman.github.io/ballot/modify)
\ No newline at end of file
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 00000000..f5db32ae
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1,57 @@
+# Welcome to Jekyll!
+#
+# This config file is meant for settings that affect your whole blog, values
+# which you are expected to set up once and rarely edit after that. If you find
+# yourself editing this file very often, consider using Jekyll's data files
+# feature for the data you need to update frequently.
+#
+# For technical reasons, this file is *NOT* reloaded automatically when you use
+# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
+
+# Site settings
+# These are used to personalize your new site. If you look in the HTML files,
+# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
+# You can create any custom variable you would like, and they will be accessible
+# in the templates via {{ site.myvariable }}.
+
+title: Smart Voting Simulator
+email: smartvotingsimulator1@gmail.com
+description: >- # this means to ignore newlines until "baseurl:"
+ A simulator for voting methods - so you can understand how voting methods work
+ for making group decisions. The best voting methods are responsive to all parts
+ of the group and can even work when voters use strategies.
+baseurl: "/ballot" # the subpath of your site, e.g. /blog
+url: "https://paretoman.github.io" # the base hostname & protocol for your site, e.g. http://example.com
+twitter_username: paretoman1
+github_username: paretoman
+author:
+ name: Paretoman
+ email: smartvotingsimulator1@gmail.com
+minima:
+ social_links:
+ github: Paretoman
+ twitter: Paretoman1
+ youtube_channel: UCrwpT8YjxePjH0RxSCwbTlQ
+ youtube_channel_name: Paretoman
+google_analytics: UA-172540609-1
+github: [metadata] # make warning go away # https://github.com/github/pages-gem/issues/399
+thumbnail: "/social/thumbnail.png"
+
+# # Build settings
+markdown: kramdown
+# theme: minima
+plugins:
+ - jekyll-feed
+
+# Exclude from processing.
+# The following items will not be processed, by default. Create a custom list
+# to override the default setting.
+exclude:
+ - Gemfile
+ - Gemfile.lock
+ - node_modules
+ - vendor/bundle/
+ - vendor/cache/
+ - vendor/gems/
+ - vendor/ruby/
+ - dev/
\ No newline at end of file
diff --git a/_config_make_easy.yml b/_config_make_easy.yml
new file mode 100644
index 00000000..47da3e27
--- /dev/null
+++ b/_config_make_easy.yml
@@ -0,0 +1 @@
+baseurl: "/" # the subpath of your site, e.g. /blog
\ No newline at end of file
diff --git a/_data/navigation.yml b/_data/navigation.yml
new file mode 100644
index 00000000..69199fee
--- /dev/null
+++ b/_data/navigation.yml
@@ -0,0 +1,32 @@
+- name: Home
+ link: .
+- name: Basics
+ link: basics
+- name: Common Ground
+ link: commonground
+- name: Condorcet
+ link: condorcet
+- name: Approval
+ link: approval
+- name: STAR
+ link: star
+- name: Instant Runoff
+ link: irv
+- name: Single Transferable Vote
+ link: stv
+- name: Proportional Methods
+ link: proportional
+- name: Primaries
+ link: primaries
+- name: Original
+ link: original
+- name: Modify
+ link: modify
+- name: Test Runs
+ link: testRuns
+- name: Blog
+ link: blog
+- name: Links
+ link: links
+- name: Sandbox
+ link: sandbox/
\ No newline at end of file
diff --git a/_includes/analytics.html b/_includes/analytics.html
new file mode 100644
index 00000000..abd13d66
--- /dev/null
+++ b/_includes/analytics.html
@@ -0,0 +1,12 @@
+
+ {% if jekyll.environment == 'production' and site.google_analytics %}
+
+
+
+{% endif %}
\ No newline at end of file
diff --git a/_includes/banner.html b/_includes/banner.html
new file mode 100644
index 00000000..370020d9
--- /dev/null
+++ b/_includes/banner.html
@@ -0,0 +1,22 @@
+
+
+ {% if page.byline %}
+ {% assign do_byline = true %}
+ {% endif %}
+ {% capture byline_calc %}
+ {% if page.date %}
+ {% assign do_byline = true %}
+ By Paretoman, {{ page.date | date: '%B %d, %Y' }}
+ {% else %}
+ {{ page.byline }}
+ {% endif %}
+ {% endcapture %}
+
+
\ No newline at end of file
diff --git a/_includes/card.html b/_includes/card.html
new file mode 100644
index 00000000..8ec4ec11
--- /dev/null
+++ b/_includes/card.html
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/_includes/css-1.html b/_includes/css-1.html
new file mode 100644
index 00000000..4a039463
--- /dev/null
+++ b/_includes/css-1.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/css-index.html b/_includes/css-index.html
new file mode 100644
index 00000000..fc61c04b
--- /dev/null
+++ b/_includes/css-index.html
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/_includes/css-original.html b/_includes/css-original.html
new file mode 100644
index 00000000..ebd9e731
--- /dev/null
+++ b/_includes/css-original.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/css-sandbox-original.html b/_includes/css-sandbox-original.html
new file mode 100644
index 00000000..d29dd47b
--- /dev/null
+++ b/_includes/css-sandbox-original.html
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/edit.html b/_includes/edit.html
new file mode 100644
index 00000000..e595f170
--- /dev/null
+++ b/_includes/edit.html
@@ -0,0 +1,3 @@
+
+
+
diff --git a/_includes/js-1.html b/_includes/js-1.html
new file mode 100644
index 00000000..291a5f84
--- /dev/null
+++ b/_includes/js-1.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/js-model.html b/_includes/js-model.html
new file mode 100644
index 00000000..a02115e4
--- /dev/null
+++ b/_includes/js-model.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/js-original.html b/_includes/js-original.html
new file mode 100644
index 00000000..c5468b43
--- /dev/null
+++ b/_includes/js-original.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/js-viewport.html b/_includes/js-viewport.html
new file mode 100644
index 00000000..690b6607
--- /dev/null
+++ b/_includes/js-viewport.html
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/_includes/letters.html b/_includes/letters.html
new file mode 100644
index 00000000..8931a9e6
--- /dev/null
+++ b/_includes/letters.html
@@ -0,0 +1,6 @@
+{% capture A %}A{% endcapture %}
+{% capture B %}B{% endcapture %}
+{% capture C %}C{% endcapture %}
+{% capture D %}D{% endcapture %}
+{% capture E %}E{% endcapture %}
+{% capture F %}F{% endcapture %}
diff --git a/_includes/meta-1.html b/_includes/meta-1.html
new file mode 100644
index 00000000..7817de5e
--- /dev/null
+++ b/_includes/meta-1.html
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/meta-minima.html b/_includes/meta-minima.html
new file mode 100644
index 00000000..bf36f877
--- /dev/null
+++ b/_includes/meta-minima.html
@@ -0,0 +1,6 @@
+
+
+
+ {%- seo -%}
+
+ {%- feed_meta -%}
\ No newline at end of file
diff --git a/_includes/meta-share-original.html b/_includes/meta-share-original.html
new file mode 100644
index 00000000..e36b8b2e
--- /dev/null
+++ b/_includes/meta-share-original.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/meta-share.html b/_includes/meta-share.html
new file mode 100644
index 00000000..ba6322ab
--- /dev/null
+++ b/_includes/meta-share.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+ {% if page.twuser %}{% endif %}
+
+
+ {% if page.twuser %}{% endif %}
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/meta-viewport.html b/_includes/meta-viewport.html
new file mode 100644
index 00000000..875e7100
--- /dev/null
+++ b/_includes/meta-viewport.html
@@ -0,0 +1,6 @@
+
+ {% if page.min-width %}
+
+ {%- else -%}
+
+ {%- endif -%}
\ No newline at end of file
diff --git a/_includes/navigation-2.html b/_includes/navigation-2.html
new file mode 100644
index 00000000..3337f1f8
--- /dev/null
+++ b/_includes/navigation-2.html
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/_includes/navigation.html b/_includes/navigation.html
new file mode 100644
index 00000000..917d3e5f
--- /dev/null
+++ b/_includes/navigation.html
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/sandbox-call-index-original.html b/_includes/sandbox-call-index-original.html
new file mode 100644
index 00000000..1bf008d8
--- /dev/null
+++ b/_includes/sandbox-call-index-original.html
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/_includes/sandbox-call-index.html b/_includes/sandbox-call-index.html
new file mode 100644
index 00000000..3dab520b
--- /dev/null
+++ b/_includes/sandbox-call-index.html
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/_includes/sandbox-call-original.html b/_includes/sandbox-call-original.html
new file mode 100644
index 00000000..b066c0e9
--- /dev/null
+++ b/_includes/sandbox-call-original.html
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/_includes/sandbox-call.html b/_includes/sandbox-call.html
new file mode 100644
index 00000000..a9cb70f6
--- /dev/null
+++ b/_includes/sandbox-call.html
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/_includes/sandbox-demonstrate.html b/_includes/sandbox-demonstrate.html
new file mode 100644
index 00000000..885bb065
--- /dev/null
+++ b/_includes/sandbox-demonstrate.html
@@ -0,0 +1,7 @@
+
+
+
Demonstrate
+
+
+
+
\ No newline at end of file
diff --git a/_includes/sandbox-embed.html b/_includes/sandbox-embed.html
new file mode 100644
index 00000000..4837883c
--- /dev/null
+++ b/_includes/sandbox-embed.html
@@ -0,0 +1,8 @@
+
+
+
+
+ {% include sandbox-call.html %}
+
+
+
\ No newline at end of file
diff --git a/_includes/sandbox-index-original.html b/_includes/sandbox-index-original.html
new file mode 100644
index 00000000..c13cab77
--- /dev/null
+++ b/_includes/sandbox-index-original.html
@@ -0,0 +1,50 @@
+
+
+ {% include sandbox-call-index-original.html %}
+
+
+
+
+
+ This is the "Sandbox Mode" for To Build A Better Ballot.
+ If you haven't already played it, check it out here!
+
+
+ Make your own voting simulation model with this tool! Here's a few that others have made:
+
+ If you'd like your own model included here,
+ save it, copy the saved link, and tweet it while mentioning me, @ncasenmare!
+ And then!... maaaaaybe I'll see it and include it in the list.
+ I dunno, I'm really bad at checking my Twitter, which,
+ honestly, is probably for the best.
+
+
+
\ No newline at end of file
diff --git a/_includes/sandbox-index.html b/_includes/sandbox-index.html
new file mode 100644
index 00000000..65256854
--- /dev/null
+++ b/_includes/sandbox-index.html
@@ -0,0 +1,18 @@
+
+
+
+
+ {% include sandbox-call-index.html %}
+
+
+ {% include sandbox-demonstrate.html %}
+
+
+ This is the "Sandbox Mode" for the Smart Voting Simulator, which is based on To Build A Better Ballot.
+ If you haven't already played the original, check it out here!
+ And then check out the expanded version.
+
+ {% include sandbox-note.html %}
+
+
+
\ No newline at end of file
diff --git a/_includes/sandbox-min.html b/_includes/sandbox-min.html
new file mode 100644
index 00000000..a0ee210c
--- /dev/null
+++ b/_includes/sandbox-min.html
@@ -0,0 +1,4 @@
+
+
+ {% include sandbox-call.html %}
+
\ No newline at end of file
diff --git a/_includes/sandbox-note.html b/_includes/sandbox-note.html
new file mode 100644
index 00000000..02c405fa
--- /dev/null
+++ b/_includes/sandbox-note.html
@@ -0,0 +1,11 @@
+
+
+ From Nicky Case: One hope for Sandbox Mode is that readers can debate with me and each other
+ using this tool! Not just telling me I'm wrong, but
+ showing me I'm wrong. Granted, this tool is very limited – it doesn't handle strategic voting
+ or imperfect information – but I think it's a start, and may help improve our Democratic Discourse™
+
+
+ From Paretoman: if you'd like your own models included here,
+ save it, copy the saved link, and tweet it with the hashtag #smartvotesim.
+
\ No newline at end of file
diff --git a/_includes/sandbox-original.html b/_includes/sandbox-original.html
new file mode 100644
index 00000000..29a3d583
--- /dev/null
+++ b/_includes/sandbox-original.html
@@ -0,0 +1,21 @@
+
+
+ One hope for Sandbox Mode is that readers can debate with me and each other using this tool!
+ Not just telling me I'm wrong, but showing me I'm wrong.
+ For example –
+
+ here's a model I made in Sandbox Mode,
+ showing an interesting argument against Approval & Score Voting.
+ Granted, this tool is very limited – it doesn't handle strategic voting or imperfect information –
+ but I think it's a start, and may help improve our Democratic Discourse™
+
+
+
\ No newline at end of file
diff --git a/_includes/sandbox.html b/_includes/sandbox.html
new file mode 100644
index 00000000..58272af6
--- /dev/null
+++ b/_includes/sandbox.html
@@ -0,0 +1,13 @@
+
+
\ No newline at end of file
diff --git a/_includes/sim-ballot.html b/_includes/sim-ballot.html
new file mode 100644
index 00000000..5ce9d23f
--- /dev/null
+++ b/_includes/sim-ballot.html
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/_includes/sim-intro.html b/_includes/sim-intro.html
new file mode 100644
index 00000000..b01d6940
--- /dev/null
+++ b/_includes/sim-intro.html
@@ -0,0 +1,16 @@
+
+
+
+
+ {{ include.caption | replace: "`", "" }}
+
+
+
+
+ {% if include.gif %}
+ {% include gif-show.html %}
+ {% endif %}
+
+
+
\ No newline at end of file
diff --git a/_includes/sim-newer-ballot.html b/_includes/sim-newer-ballot.html
new file mode 100644
index 00000000..ea18f6d6
--- /dev/null
+++ b/_includes/sim-newer-ballot.html
@@ -0,0 +1,12 @@
+
+
+
+
{{ include.title }}
+
{{ include.caption | replace: "`", ""}}
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/sim-test.html b/_includes/sim-test.html
new file mode 100644
index 00000000..2f768ccf
--- /dev/null
+++ b/_includes/sim-test.html
@@ -0,0 +1,14 @@
+
+
+
+
+
{{ include.title }}
+
{{ include.caption | replace: "`", "" }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_includes/sim.html b/_includes/sim.html
new file mode 100644
index 00000000..27fb97af
--- /dev/null
+++ b/_includes/sim.html
@@ -0,0 +1,25 @@
+
+
+
+
{{ include.title }}
+
{{ include.caption | replace: "`", "" }}
+ {% if include.hint %}
+ Hint
+ {% endif %}
+
+ {% if include.url %}
+
+ {% endif %}
+ {% if include.link %}
+
+ {% endif %}
+ {% if include.gif %}
+ {% include gif-show.html %}
+ {% endif %}
+
+
+
\ No newline at end of file
diff --git a/_includes/social.html b/_includes/social.html
new file mode 100644
index 00000000..1334fc0c
--- /dev/null
+++ b/_includes/social.html
@@ -0,0 +1,21 @@
+{%- assign social = site.minima.social_links -%}
+
+
+ {%- for glb in social.gitlab -%}{%- if glb.username and glb.instance -%}
{%- endif -%}{%- endfor -%}
+ {%- if social.dribbble -%}
{%- endif -%}
+ {%- if social.facebook -%}
{%- endif -%}
+ {%- if social.flickr -%}
{%- endif -%}
+ {%- if social.github -%}
{%- endif -%}
+ {%- if social.stackoverflow -%}
{%- endif -%}
+ {%- if social.instagram -%}
{%- endif -%}
+ {%- if social.linkedin -%}
{%- endif -%}
+ {%- if social.pinterest -%}
{%- endif -%}
+ {%- for mst in social.mastodon -%}{%- if mst.username and mst.instance -%}
{%- endif -%}{%- endfor -%}
+ {%- if social.twitter -%}
{%- endif -%}
+ {%- if social.youtube -%}
{%- endif -%}
+ {%- if social.youtube_channel -%}
{%- endif -%}
+ {%- if social.telegram -%}
{%- endif -%}
+ {%- if social.keybase -%}
{%- endif -%}
+ {%- if social.microdotblog -%}
{%- endif -%}
+ {%- if social.devto -%}
{%- endif -%}
+
diff --git a/_includes/str.html b/_includes/str.html
new file mode 100644
index 00000000..22846aea
--- /dev/null
+++ b/_includes/str.html
@@ -0,0 +1 @@
+{{ include.str | replace: "`", ""}}
\ No newline at end of file
diff --git a/_includes/video.html b/_includes/video.html
new file mode 100644
index 00000000..c1ad1185
--- /dev/null
+++ b/_includes/video.html
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_layouts/default-1.html b/_layouts/default-1.html
new file mode 100644
index 00000000..d9034e2c
--- /dev/null
+++ b/_layouts/default-1.html
@@ -0,0 +1,23 @@
+---
+permalink: pretty
+---
+
+
+
+
+
+ {% include head-1.html %}
+
+
+
+
+
+ {%- include header.html -%}
+
+ {{ content }}
+
+ {%- include footer.html -%}
+
+
+
+
\ No newline at end of file
diff --git a/_layouts/default-original.html b/_layouts/default-original.html
new file mode 100644
index 00000000..e5a3b107
--- /dev/null
+++ b/_layouts/default-original.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ {% include head-original.html %}
+
+
+
+
+
+
+ {%- include header.html -%}
+
+ {{ content }}
+
+ {%- include footer.html -%}
+
+
+
\ No newline at end of file
diff --git a/_layouts/embed.html b/_layouts/embed.html
new file mode 100644
index 00000000..72caff10
--- /dev/null
+++ b/_layouts/embed.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+ {{ page.title }}
+ {% include meta-1.html %}
+ {% include meta-share.html title=page.title description=page.description twuser=page.twuser %}
+
+
+
+ {% include css-1.html %}
+ {% include css-index.html %}
+
+
+ {% include js-1.html %}
+
+
+
+
+
+ {{ content }}
+
+
+
+
\ No newline at end of file
diff --git a/_layouts/page-2.html b/_layouts/page-2.html
new file mode 100644
index 00000000..fb4e07ca
--- /dev/null
+++ b/_layouts/page-2.html
@@ -0,0 +1,10 @@
+---
+layout: default-1
+---
+ {% include banner.html %}
+
+
+ {{ content }}
+
+ {% include edit.html %}
+
\ No newline at end of file
diff --git a/_layouts/page-3.html b/_layouts/page-3.html
new file mode 100644
index 00000000..666fd2ac
--- /dev/null
+++ b/_layouts/page-3.html
@@ -0,0 +1,13 @@
+---
+layout: default-1
+---
+{% include banner.html %}
+
+
+
+ {{ content }}
+
+ {% include edit.html %}
+ {% include sandbox.html %}
+
+
\ No newline at end of file
diff --git a/_layouts/page-4.html b/_layouts/page-4.html
new file mode 100644
index 00000000..6b11eb4a
--- /dev/null
+++ b/_layouts/page-4.html
@@ -0,0 +1,6 @@
+---
+layout: default-1
+---
+
+ {{ content }}
+
\ No newline at end of file
diff --git a/_layouts/page-6.html b/_layouts/page-6.html
new file mode 100644
index 00000000..8b8754da
--- /dev/null
+++ b/_layouts/page-6.html
@@ -0,0 +1,12 @@
+---
+layout: default-1
+---
+
+{% include banner.html %}
+
\ No newline at end of file
diff --git a/_layouts/page-7.html b/_layouts/page-7.html
new file mode 100644
index 00000000..b746aa4c
--- /dev/null
+++ b/_layouts/page-7.html
@@ -0,0 +1,9 @@
+---
+layout: default-1
+---
+ {% include banner.html %}
+
+
+ {{ content }}
+
+
\ No newline at end of file
diff --git a/_posts/2020-06-07-added-jekyll.md b/_posts/2020-06-07-added-jekyll.md
new file mode 100644
index 00000000..9b3f37e6
--- /dev/null
+++ b/_posts/2020-06-07-added-jekyll.md
@@ -0,0 +1,22 @@
+---
+layout: page-2
+---
+
+[Jekyll](https://jekyllrb.com/) is now helping to organize this site. Check the [docs](https://jekyllrb.com/docs/). Here’s [install](https://jekyllrb.com/docs/installation/windows/) instructions for windows.
+
+Jekyll even worked inside folders like /sandbox/
+
+To add a new page, just create a new markdown file and jekyll converts the markdown to html and puts it where you have {{ content }} in your layout. This doesn't require any kind of configuration. It's simple.
+
+Okay, now comes the hard part… how do I actually get special divs like word divs and sim divs without showing them in markdown? Includes, I guess.
+
+Jekyll is good because it basically adds subroutines and variables to html and it translates markdown into html.
+
+You probably could find another tool other than jekyll that uses the liquid syntax.
+
+Now I need to know Ruby. I guess the only reason I need a Gemfile is to make sure I have the correct version of jekyll and the jekyll github plugin so that my local server will exactly show what github shows.
+
+*Links*
+[github pages on jekyll's website](https://jekyllrb.com/docs/github-pages/). The jekyll documentation is very good.
+
+
diff --git a/approval.md b/approval.md
new file mode 100644
index 00000000..87efc5ab
--- /dev/null
+++ b/approval.md
@@ -0,0 +1,166 @@
+---
+permalink: /approval/
+layout: page-3
+title: Approval Voting
+banner: Practical Approval Voting
+description: An Interactive Guide
+twuser: paretoman1
+byline: By Paretoman, Feb 2018
+---
+{% include letters.html %}
+
+Hi, did you vote? Do you think our elections choose the best leaders? Even if they're not the best, the people chose them, right? It's important that we have the power to choose our representatives. That's why I'm writing to you about approval voting.
+
+Approval voting gives a better representative. When you compare approval to what we do now, approval gets better information from the voters, gets better candidates to run, and has less problems.
+
+## Better Information from Voters
+
+Approval gets better information from the voters because approval asks you to choose the better candidates. That can mean more than one. **Try it out below.** Move the voter around the arena. See what candidates he chooses. (There are 3 candidates: {{ A }}, {{ B }}, and {{ C }}.) See that he's choosing the candidate he's closest to. He's also avoiding the candidate he's furthest from. And for the in-between, he draws a line. Anybody inside is better than anybody outside. This is a relative judgement.
+
+{% include sim.html
+title = "Approval Voting Basics"
+caption = "Pick the Better Candidates"
+id = "election16"
+gif = "gif/election16.gif"
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSQW7EMAhF7-K1VQUbDJOrRDnJqD17wU-RKlWjLABjP_-P825HO6_LVxf1u19ikplmNqQyu-_epLZIeJeIqmc7j960ne1HjtabtVN6W7krm57h6P--7MTHzutjJ_l1lwhwGZQoECUYYW0ZkgJEM-Z1M8NrN0dycnHI3jMGAcxQKtsHxmLRqYIqKSONH1uo1AwgTUgT0oQ0k3Tl9Ni4OApvYlX6yJYWrvZo2Su7Op4kgdesRPc5_YtUnKrzDkjU1140BmZCQJ4hz5iX8V6GUfOtzxiXYXQdBEwupr6gLNsWStwCsVCwGLWjwDnrY5N8UqHAeTF_fhmnGc9s-uxa61gKgAEwEBOICYBh-5ZAT8ALZEXJ-rL8y4rz_QuHr_l18gIAAA)"
+%}
+
+In an election, the voter also needs to decide one more thing: what is he risking? Things do get a little more complicated whenever you add more people to a situation. The above was a simple model, and we just set it so that the line is drawn halfway between the best and worst candidates. In a real election, the voter will be checking the polls to see where he should draw the line. He's going to see who has a shot to win, and he's going to draw the line between those in particular because the difference the voter makes can decide who wins the election. **Try it out below.** See that when {{ A }} isn't doing well, {{ C }} voters don't need to use {{ B }} as a fallback.
+
+{% include sim.html
+title = "Consider Risk"
+caption = "Decide Which Frontrunner is Better."
+id = "election17_frontrunner_status"
+gif = "gif/election17_frontrunner_status.gif"
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSXW7EIAyE78IzqjDYGHKVKCdZtWevzaeVKlWrPPiXYWbIq7Ry3bfPKupPvcUkMo2sS2b2PLVIrsj2KntnPcrVatFylR9ppRYrl9QyYyuGHqHVf19M1sfJ_jgJ_LxLkoKMbHQacBAlGGEeIhIURCPGhSPCPsMeSNHscnZ6JwDTlcrOgT5pOtWiCpQe0tMuqT1dAGl0BiANkIadtfhycbIB3kAsGHrgMkmBKVj7OwnAOxWrnnP6F1JRqs5LQFH3aRqWmRAQatAz_DJezBBqfvgZdhlCZyMgcuL6BGXakZDkJhATBhOrHQbOWccgH1QwcF7M3z-NM1xvb-qomn0krUaQg7QAXJBZAC6jCZ8F3oLWSlpfFv9ZEvv-BUf8SXr0AgAA)"
+%}
+
+Approval asks for this judgement from every voter. Then the votes are added and the most votes wins. That's the group judgement. **Try it out below.** Move the voter group to see which candidate wins. See that when the center moves toward a candidate, that candidate wins.
+
+{% include sim.html
+title = "Approval Election"
+caption = ""
+id = "election18"
+gif = "gif/election18_approval_poll_frontrunner.gif"
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSW2rEMAxF9-JvUyJZD0-2ErKSoV17ZR8ChTLkQ5JlH19d592Odl5XRhfLu1_iUplVprIyv-_eZG0R966Sqx7tPHqzdrYfOVpv3k7pLWpXNbPC0f991ZkfO6-PneKvu0SAi1KiQIzghCCUALGKdd2o8NqrWpxaVNlSVQlg1Kh8H1AwmlSTqihagx9bqCwPZDeG0oA0II0iXeUeG4Md8AajStdq2catRJ5En6SA11iJ7XP2F2mxr7HkHZBor73oGObIcwZ15Dl-Oe_lDOq59Tl2OYPGQcCuwPWAEr5HWOICRKAgsDpRkJxNDMpBhYLkxfL5ZZLmfLzpo9taZ6QJcMomTYATMRPgdBbRM-FNZM0l68vrL1uc719_EIbQ8gIAAA)"
+%}
+
+Compare approval to the way we vote now. Right now, you can only choose one candidate when you go to vote, and that limits you. You can only say which candidate you like best. **Try it out below.** See that your opinion is limited to one candidate.
+
+{% include sim.html
+title = "Choose One"
+caption = "(the way we vote now)"
+id = "election19"
+gif = "gif/election19_pick_one.gif"
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSUW4FIQhF9-K3aURBmNnK5K2kadde8OQlTZpmPhDB4704n220-3l8d1F_9UfUcjVzNUVyZa9Xb1ItUj3Xqny1e_Sm7W7fo_Vm7ZbedjZlzTOM_ufLSvxbuf6tyDhXiQCXSYoAUYIR9pEhKUA0Y163MlynOJOTm1NOz5wEMFPJ7ByYm00nC7KkzPQ9jlCpEUBaCFqLOqSVpCeHR-OmBG9hVXpOuGnhqkfLXtnV-V4k8Fm10HNOfyMVp-o8AxL1OpvGwEwIGDWMGvMy3sswan70GeMyjO5BwOTG5Iay7VgocRvERsFm1I4C56zPQ_JFhgLnxfz9yzjFeM-mr661j6UAGAADMYGYABh2bgn0BLxAVpSsD8u_rDhfPzoOPd_xAgAA)"
+%}
+
+And you also need to decide one more thing: what are you risking? If your favorite doesn't win, then the worst candidate might win. In a real election, you're going to look at the two frontrunners and pick one. **Try it out below.** See that you only get two choices.
+
+{% include sim.html
+title = "Risky Choose One"
+caption = "(the Real way we vote now)"
+id = "election20"
+gif = "gif/election20_risky_choose_one.gif"
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSWWoEMQxE7-JvEyxZ8tJXaeYkQ3L2SH40BMLQH6XN5Sq536WV677nqGLzVW8xj0gjUpGI_PWqRXJE1qqyR-a9XK0WK1f5aaUWL5fUMmIoejOg1X9fdNbHzv7YkXauklQgPQtKAQligAPjCJGQIBYYF_aAfZoaTFFUOTOqADRqZH4O6KA4yRZZsGg4b0eq5hJg6kqjAzB1T701vhwctODrmJXDYUmXM5YG07DpEwThnY7Nzjn7S2k4tclDINH2KTorcwGQ58hz5Dkv5hj1SY91OUZHAzA52PpgXcOPhRQ3oBgoGKx6omBydqJgdjJebPJi8_lpJs317Kb2alnH0mqAHKYF4ULMgnA5RfQs-BayVsr68vjPELafZe9ctmfQT_D9C18ZfaYOAwAA)"
+%}
+
+In an election, every voter faces this risk. And the only thing they can do is pick from two. **Try it out below.** See that the winner isn't always the candidate closest to center.
+
+{% include sim.html
+title = "A Risky Choose One Election"
+caption = "(Our General Election)"
+id = "election21"
+gif = "gif/election21_risky_choose_one.gif"
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSUW4FIQhF9-K3aURAnNnKy1tJ0669yMkkTZpmPi6CHi84n220-_WK1cXi3V9impFlNEUy8ve7NzlbRHeXqLW2e_Rm7W7fo_Xm7ZbeVm7KWqSM_ufLyv63cv1bkVFXyXEgehKTBBbEEEcWkhbEUvNCTbkqO5OUySlldiZmpoCZRtLrwAQzg9VmddUBHWV1niFAUkiqCCT147fndzYuSvCUZqUYVrgTyBPMJ0jg63RsVufsN9JWXWPBQ2DRrko6I3NBJkkadeblvJjTqEf5c8blNLoGQpOLqS8oy6uFY26BWDhYjDpwEJwNBhTKCgfBi8Xz0wTF_cyma7eTp6U9ECnSBrgxswFuJ4mfDW9jax9bH57_2TH29QPStld28wIAAA)"
+%}
+
+**To recap:**
+
+- Approval chooses a better winner.
+ - Better information is collected from the voters.
+ - It asks for the better candidates (plural).
+ - It asks for a risk assessment.
+ - A group judgement is formed and the candidate nearest the center wins.
+ - Compare to the way we vote now:
+ - It asks for one candidate.
+ - It asks for a risk assessment which leads to a bad choice between two.
+ - A group judgement is formed but the center doesn't always win.
+
+Here's a sandbox where you can try changing the number of candidates, the number of voters, and the election method.
+
+{% include sim.html
+title = "Sandbox so far"
+caption = ""
+id = "election22_sandbox"
+gif = "gif/election22_sandbox.gif"
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSQW7EIAwA_8IZVRhjTPYrUX6w6q2nqvv2Go8iVapWOdhgMxocvksrj_P0WWX4VU8ZGtmIrItEZtdVi-wW0VXFc63l0WoZ5VFe0kotlusZXVH0CK3--6Ky3laOt5Xgb7ZIdmgtr8-v57NU6VW26W7ptGAlg4CTTEJIyYgYCsGQI3d7sGOzB1siBKZHANMHm5YHOpjurBarIw9oS7W-5yJZUEgKSRHSIJ0x0Sq7cdIBT7m-JGMkbidyJ_1OAnjqTkaeG3-RY6bwcP4NiuPITWOIhp6hZ0pAz5iXcVFzaozLuOhsBMY1mfrkktP4PyEyQUwMJqN2DJyzjoErKwwcA7-fkVPcj6bHY9h3dK6zgC1JygK2EFnAlrGJy4K1UFpb6cPi1cE57kEfe9C2E83k5xfvl6cSHQMAAA)"
+%}
+
+(By the way, there are a couple different names for our election method that we use now: first-past-the-post (FPTP), single-member plurality (SMP), or just plurality voting. First-past-the-post is a term that has been used for around 100 years. It comes from horseracing and it means the first horse to cross the finish line, even if the horse had been disqualified. It was a negative term used by people that wanted to improve the way we vote because they saw that the wrong winner was being selected. Single-member means you pick one winner as opposed to multiple representatives. Plurality means the highest count of first choices wins.)
+
+(Also, when we say election method what we mean is what information we write on our ballots about what we want and how we combine that information into what the group wants.)
+
+## Map
+
+We're now going to take a step up the ladder of abstraction from one election to many possible elections. If you've played around with the sandbox for a while, you might start putting together a map inside your head of where the voters have to go in order for a candidate to win. Each candidate has his own territory. I added this to the election by putting the voter center at every pixel on the map and seeing who wins. Then I colored the pixel with the winner's color. **Try it out.** See that whenever you move the center voter to the {{ C }} territory, the {{ C }} candidate is the winner.
+
+{% include sim.html
+title = "Map of Winner"
+caption = ""
+id = "election23"
+gif = "gif/election23_map_of_winner.gif"
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSW2rEMAxF9-JvUyJbspRsJcxKhnbtlXUIFMqQD72s4ys573a06759dVF_9Vt0pqfpDZH07PXqTfYRmdHFK57tOnrTdrUfOVpv1i7pbeWpLHqao__7shIfK-fHSvL3XSLAZRDOulGUyDALkwJE0-Z1M81Z2ZGcTA6pxpGYkYZBhpK0ahhghhMF0VkN8yihY-9AqjAhTUgT0kzSndvrsg8uTsCbjCrF0MJtRx5nPE4C77kdrT79i9RV16jzDkjUs5LGwgx5Nkgiz9iX8V4Gxbz0WRAx6DowrGux9QVlWY2wxS12tVCwWLWjwOl1FuS8mKPAeTF_fhmnGM9u-uy684wUAEOKFAADMQEwjCR6Al4gK7asL8u_bHO-fwFyRTIr8gIAAA)"
+%}
+
+## Better Candidates
+
+In this next part, I'll describe how approval voting gives an opportunity to candidates to run for office. We'll change perspective to consider what a candidate sees.
+
+A candidate will win if he moves to the center. A candidate thinking about running for office would think about what his campaign message is. He would consider where that would put him on the political spectrum (left to right). If everything looks good, he would start his campaign. **Try to see what a candidate sees, below.** This is a map of every place {{ B }} could put his campaign message, and who would win if he entered the race. Move him toward the center of the voters and see that he wins. This example works for every candidate, so all the candidates will want to be at the center and try to be as broadly representative of the entire population. This is good because it serves the purpose of an election that the people have the power to choose their representatives.
+
+{% include sim.html
+title = "The Winners' Circle"
+caption = ""
+id = "election24"
+gif = "gif/election24_winners_circle.gif"
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSW2rEMAxF9-JvUSxZspXZSpiVlHbtlX0IFEoZhms9cnIl57P19rrvlaK53nK7S3ipaYp1f7-l6W7Q6FL_HY_26tK8vdq39iYt2kulzeqq4irp8udXlfy3cv1bKf5-lypwNcJyMEqcKJCJlAH10qTnOlkrTiVNj1UzhEHMieI8YGBsESURlNGPUd07UDJFshJIA9Io0q2iNE46FsKoKlYlP7h90Odgz6GA99gHPz78N9LneY0v7gGLfp1ksLDAXjBoYC_YV3BfASUwFolcR2ZHWNdk6xPKjDPCNjfZ1cTBZEkLB4tnFwtagwgHixtbzyezKOazGxniO89ICTD1kBJgYiYBZpDET8JLbOW29RH1lW3O1w83jKme8AIAAA)"
+%}
+
+Compare that to what we have now at the general election and you'll see that some nice candidates can't run. Right now, once the two front-running candidates are settled on, there isn't much opportunity for another candidate to be running against them. **Try it out below.** Move {{ B }} to the center and see that voters are still stuck on the frontrunners. I have set this example so that about a quarter of voters who like {{ B }} best will actually vote for him as "true believers". See that this causes {{ B }} to become a spoiler. When {{ B }} moves toward {{ C }}, {{ C }} loses because {{ B }} takes votes away from {{ C }}. This is the spoiler effect. If {{ B }} was nice, he would drop out to help {{ C }} win because they're on the same side. {{ B }} is a jerk, so he stays in and spoils the election for {{ C }}.
+
+{% include sim.html
+title = "The Spoiler Effect"
+caption = ""
+id = "election25"
+gif = "gif/election25_spoiler.gif"
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSW2rtMAxF5-JvUyxZtpQzlXBGUtqxV9YiUO6l5GPr4axsyflso73u21eXsHe_dVuXoSeSK2vj_e5NzhGxzN1OPttr9Gbt1b5H6221l_S281D2PKWptz7-fbIZ2fyvXp3rz46M-poIfFHS9DBTjGwhG0kPYqnBmauqmpwsqpRbTYymMIoaxVUvKJgcorIggzJHGdWzBUgT0oQ0Ic0k3dLzOQc3J5wWo0oxrHAnkCfQJ0jgPU9g5cN-I20Xy5ybwKJdVVwsbAmiFLG32NfiyhaU5eVvBXKV7IEw5GbrG8peNcIxt9nVxsFmSY4D511nQT7JcODcmD9_DbvxeHbTZ7dTZ6QAGFKkABiYCYABMPAT8AJbcWx9rPzLDufrB89U4yz0AgAA)"
+%}
+
+Nice candidates dropping out is very common in the primaries. With the way we vote now, primaries are necessary to prevent the vote-splitting we see with {{ B }} and {{ C }}. The important choices are made in the primary, and in the general, we are left with only two. A primary will pick the candidates in a complicated kind of way involving considerations of electability. **Try it out below.** {{ E }} wins the primary vote because primary voters saw that {{ C }} would lose the general election against the more moderate {{ A }}, and {{ B }} and {{ D }} split their vote. For more explanation, see the [Page on Primaries](primaries).
+
+{% include sim.html
+title = "Primary Vote-Splitting"
+caption = ""
+id = "primary_sim"
+gif = "gif/primary.gif"
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSW24DIQxF98I3qrCxwcxWRllJ1K69hqMqUqpoPowfHF-beZZWrvuOUcXbo94yvYpFnlRXxnTHVsZEzinrVn88apF9bUgW-y7ucooz0cvVarFylR8ptXi5pJaR1ZmbaVr992UmPmbWx4y000oEuCguAsQwjhmYFCCWNtt5mnXEaXIyqIKXGE0DRo1gYnoaMDrxAm-dC70dobpXAKkjqEPqkHqS7lwW3y4eXIfZGVeq1l4t0wZ2z2vyOurrmPhbT1-zw7D3FjZOa5s8DbKN4Z0lumCUIJKdHTpv6Azv8-j1OL2c4UfDMPhg8AFl-NHaU8gAMVAw1jETBZO7k_XPjoeCySvOv99okoy3XU1GCoDBSIGYQEwADICBnoAXyIot6yt_j7U5379wAhm1IgMAAA)"
+%}
+
+**Final Recap:**
+
+- Approval chooses a better winner.
+ - Better information is collected from the voters.
+ - It asks for the better candidates (plural).
+ - It asks for a risk assessment.
+ - A group judgement is formed and the candidate nearest the center wins.
+ - Compare to the way we vote now:
+ - It asks for one candidate.
+ - It asks for a risk assessment which leads to a bad choice between two.
+ - A group judgement is formed but the center doesn't always win.
+- There are better candidates running.
+ - The incentive is for candidates to move to the center.
+ - Nice candidates are available that otherwise are staying out of the race because they'll cause a spoiler effect.
+ - There is no need for a primary.
+
+Putting it all together, here's a sandbox for you to try out all the different systems and to make your own scenarios:
\ No newline at end of file
diff --git a/assets/minima-social-icons.svg b/assets/minima-social-icons.svg
new file mode 100644
index 00000000..ff02f3ef
--- /dev/null
+++ b/assets/minima-social-icons.svg
@@ -0,0 +1,50 @@
+
diff --git a/basics.md b/basics.md
new file mode 100644
index 00000000..24f8668b
--- /dev/null
+++ b/basics.md
@@ -0,0 +1,41 @@
+---
+permalink: /basics/
+layout: page-2
+title: The Basics
+description: An Explorable Guide to Group Decision Making
+byline: 'By Paretoman and Contributors, May 2020'
+twuser: paretoman1
+---
+{% include letters.html %}
+
+Take a look at this great interactive sketch that Nicky Case made. You have two candidates {{ A }} {{ B }} and you have a voter . Just move the voter and you'll see that he is just gonna vote for whoever he's closest to.
+
+{% include sim-intro.html
+id='model1'
+caption='`click & drag the candidates and the voter:`'
+gif='gif/model1.gif'
+%}
+
+You can add more voters and see that you kinda get a sense of how voters are gonna vote as they move around and how an election with those voters would go. Most votes wins.
+
+{% include sim-intro.html
+id='model2'
+caption='`drag the candidates & voters around. (to move voters, drag the middle of the crowd) watch how that changes the election:`'
+gif="gif/model2.gif"
+%}
+
+In this kind of voting, you get a single choice for who you want to win. The ballot is pretty simple. This is the way the ballot is now.
+
+{% include sim.html
+title='Single Choice Voting'
+caption='Also called First Past the Post.'
+id='ballotSingle'
+link='[link](http://127.0.0.1:8000/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRQWrEMAz8i84-RLZkJzn3AT30FnLYdlMaCNllN0tZSvv2Sp4WCiUEIsmSxjPjD2qoH4aSA0sZw8DKlollkT3TcQzEPsKlDdy2Xifqm0BS_0o9B8o20YR_n82W3U672-l2O9zUS9kZeRlRghCDEStCrszYCLBYtOuSha42o-HYYeQ6EyMCYKKg0roQMw4LqhaVoUTzoalE2S0BUgJSAlICUjKkwczEYMYq8BKkcojWEofzGXF5Llfib2KAQ_JE6p78hRQolYJnAUXp6qHCMGUE0FPQ058XxBMqhGqp_BR2KYTmBgEiM1zPQMlaJTi5DIgMBhlWFzAo2C2xIj0fluW0Pd3PE_X0uNwuh2Xe7hTo-nZ6f5iuL5f5vM2n1bpft_U4vc7rdKTPbxSiHLmuAgAA)'
+gif="gif/ballotSingle.gif"
+%}
+
+That's the end of **The Basics**.
+
+Why do we vote this way? Why do we even vote? In the next part, I'm going to explain voting as a way to find common ground as a group.
+
+{% include card.html title='Finding Common Ground' description=' - Click here next.' url='commonground' img='img/venn-diagram.png' %}
\ No newline at end of file
diff --git a/bees.html b/bees.html
new file mode 100644
index 00000000..c64d0e63
--- /dev/null
+++ b/bees.html
@@ -0,0 +1,41 @@
+---
+permalink: /bees/
+layout: page-6
+title: Bees
+banner: To Build a Better Ballot with Bees
+description: An Interactive Guide to Alternative Voting Methods
+byline: by Paretoman and Contributors, March 2019
+twuser: paretoman1
+---
+
+
+
+
+ What if you had bees?
+
+
+
+ Bees!
+
+
+
+ Bees are cool because they vote and move.
+
+
+
+
+
+
+
+ Bee Candidates
+
+
+
+
+
+
+
+
Putting it all together, here's a sandbox for you to try out all the different systems and to make your own scenarios:
+
diff --git a/blog.html b/blog.html
new file mode 100644
index 00000000..78ef6218
--- /dev/null
+++ b/blog.html
@@ -0,0 +1,22 @@
+---
+permalink: /blog/
+layout: page-7
+title: Blog
+---
+
+
+ {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%}
+ {%- for post in site.posts -%}
+
diff --git a/commonground.md b/commonground.md
new file mode 100644
index 00000000..49f39cc3
--- /dev/null
+++ b/commonground.md
@@ -0,0 +1,310 @@
+---
+permalink: /commonground/
+layout: page-3
+title: Finding Common Ground
+description: An Explorable Guide to Group Decision Making
+byline: 'By Paretoman and Contributors, June 2020'
+twuser: paretoman1
+---
+{% include letters.html %}
+
+Hello, I'm going to show you how to find common ground as a group. We'll go over the following:
+
+* what we mean by common ground and the middle,
+* how we can find the middle by using votes and simple comparisons,
+* the simplest voting method that finds the middle,
+* what a median is, and
+* how to bring groups together.
+
+Let's jump right in with an example and some diagrams.
+
+## The Middle
+
+Let's start simple for this first example. Let’s say we have to decide as a group what to have for dinner. Each person is going to have their own opinion. For example, some people are vegetarian and some people eat meat. Also some people like to spend a lot of money and some would rather spend a little. Let’s make a diagram to show their opinions. In the diagram below, we show these types of opinion on different axes.
+
+{% include sim.html
+link="[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSu24CMRD8lZNrF971E0qK1CREaQ4KJzrBhQsXXaBAUfLtWXtAioSQi9n1rsezY38ro-ZtyzbpWdjollzUHEiiwJqNlYBtvESBNBHXLinGzUYrKqfJWU3OlNyqudHKqbn6NUorX9MgTVKLAkbfLKmku5XZ3QqZyk0EcmKkEEAOgPspAEQAOUG5LggIN2nFwiObLDwswADQsEOL0FgB0HBElpDN6gFrqlAqFlAtWAiyFnUIssLUiovXVdoDGsBqMTBp1lY77aXBVeoS0DXgayDkLZfA1dPult6FOoKLeBiIdhjdGwCV51qrp_Gch-Ypv6_Xh8Vp2nZTs8jTQbLVscv7ZrXLb3vJXrrttu-al34YsqTLqf8Ym8XiUeLnXdc8jKepWXX5azx8rVX5BPDUwwkPT70HwFMPeT7VMTw8DQZAtTPAz4CXCf5iQQBBwGBhViHib0ScjAywALxExNeI178ZUUz_7S_7cCqBMIEwQUqClOSqzOQB0JPAlyDrNQ_DeHw-f3bi9HI4TXnoj2f18wcgESI7fgMAAA)"
+title='Where to go eat?'
+caption='Horizontal Meat-Veggie axis. Vertical $-$$$ axis'
+comment='show a group of people preferring many options, restaurants named and sorted by money on one axis and eco-friendliness on the other. Meat Shack. Burger Barn. Veggie Villa. The Four Seasons. Primo BBQ. Raj Veggies '
+id='eat_sim'
+gif="gif/eat.gif"
+%}
+
+Really, this is about politics, and you want to make a decision for everyone in the group. You'd like to make a decision that other people will accept and won't regret. In other words, you don't want to find out that most people would rather do something else. That's why you might want to pick something in the middle. No matter what you pick in the middle, if you compare the middle option to something else, then more people are going to prefer that middle option. It's really the common ground that you're looking for.
+
+{% capture cap1 %}Move {{ B }} anywhere. A line forms between that and the middle option, and you will see most people are on the side of the middle option.{% endcapture %}
+
+{% include sim.html link="[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSsWoDMQz9F80eLMmSz_cVHbodN6TQIXCQUtIhlP57ZT3SDiEYLMlPenrS3TdVWreNjQub7mXjsRSRuu-FGIgkErHSWgu1vC1vjwwpDydyeyC1PJxAlqfIeIpwzXY8Fc1QEEIQQxFDEjtMCOAWNtpJmODmQhI88SicjyIwoJGGlKDRMKCRjmhBNLJAawrluRJOQCVrVYFDkAbTxkhzAGDT8Vffkmo6fHfk7uhc7nRaVrV_uubZrnV8EIhrGNGwKoMww4iGEQ0jmsFgRAOLLdnFMKJXGM5Mx74dLG4pP34WclA4FPhI06Ggo7ZjNW-n47hcX28f77TSy_H1eTrO1xv9_AKWPS3kgAIAAA)"
+title="The middle is the common ground."
+caption=cap1
+comment="allow adding candidates with + and use condorcet rule, maybe make a custom pairwise comparison between the middle option, which can't be moved, and any other option. And you can't move the voters either"
+id="middle_sim"
+gif="gif/middle.gif"
+%}
+
+So how do you find the middle option? Well, you could hold a vote and ask everyone to pick one option out of all the options. What happens is that people will pick a side, and you end up dividing people into little groups. It's kind of random which side wins, and that's a win with maybe with less than 25% of people. That hardly seems like a win.
+
+{% include sim.html
+link='[link](https://paretoman.github.io/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSPW_CQAz9K9HNN8T3mXTM0K0SBcSSMFyrCNKmpAowoKr97fX5laUInXS2z_bL83O-VKke2pas1RTsVrd868qwYww_RZefbNSGavaC1-Rou9WKpMtxiStzbNVDqZWT28sduMLom8O1kTOlvjmcqe5m6rsZKuVzlBnl0CAEIQIjAiUKMEyAHFv-nGfD2KSVYRx-NIxj2BgYwBiHEoaxbABjIqIKUS0NthSilCUhSVgjvdYiD0KWkVrSfycXB6SBaTEusWBW8wqUE9js0NUxV8dmobPjpNf9h3ZBCLiIFYGuw9Ae4nlGVT-dWk6XNBbL9NZ1h-Y87_q5aNJ84OipT6ditU-v7xxs-t1u6IvNMI6Jw8U8fExF0zyzv973xeN0notVn47T4dgpxfAQ00MCDzG9h4GYHux8JTN4iBlKGJLKgM0GrCR4kYh_WRUAETBZqMVETBbRG7GElzSO02l9-ex53sV4ntM4nC7q-xe0u0DUBgMAAA)'
+title='Too Many Choices'
+caption='If you only say, "pick only one", then the winner can win with only a small part of the votes.'
+comment='crowded election, winner gets less than 25%. Everybody is an individual. Everybody has an option'
+id='crowded_sim'
+gif="gif/crowded.gif"
+%}
+
+This problem is called vote-splitting, which you get if you have three candidates in an election. Notice that a candidate can change the outcome of the race even if they don't win. If this is a small candidate, then we call this the spoiler effect because they spoil the election for whichever side they're on.
+
+{% capture cap16 %}Drag {{ C }} left and right to spoil the election for either major candidate.{% endcapture %}
+
+{% include sim.html
+link='[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRTWvDMAz9K8FnHyx_pekxh90GXVt6SXrwRmizZclI20MZ22-frEdhUErA0ouk56fnb2XUsmmISJOr9rqhMnC2yFmM2lq332tF0uOdJm8ydmpptPJyBjkjd1h993FvyRWj7z6uLB5WqocVMnIdZUUZWkAIIigiSKKIwALIc-TrHAfmJq0s8_BPyzyWg0UAjfVoCTJgQWNLoAVQJQPOiFDKlpAUnJVZ51CHIMdMDRuMxogS-BxWJbHKC11O6JbYW-KywTnxMuf_U_ool_oSzwKJHosGGBaYUf22aj1d01Cs03vbjvVlPnRzUad5ZPTcpXOxOaa3Dwa77nDou2LXD0NiuJr7z6mo6xfOt8eueJouc7Hp0mkaT61STA8DgxNXAwwMAQEGBqgLeIYAA6NBIOmMeM2IZ4hBrHG8YARFxGaxklBisxKzJYx_TcMwnbfXr473XQ2XOQ39-ap-_gBhAcnr6AIAAA)'
+title='The Spoiler Effect'
+caption=cap16
+id='spoiler_sim'
+gif='gif/spoiler.gif'
+%}
+
+## Simple Comparisons
+
+So how do you solve that problem? Instead of dividing everybody up all at once, just consider each alternative one at a time (I guess that's two at a time). Just between the two options below, you can tell which one's better.
+
+{% include sim.html
+link='[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRPW_CMBD9K5FnDz5_hTBm6FapBcSSMLitBZQ0qQIMqGp_ey_3RDsg5OHu_O6e3z1_KaPmTUPeavJ-oxuqnLYmbjZaERDHiJlqp-ZGK6_mlVZB8sgdVt8c7i0ZMfrmMDK7i1R3ETLyHE2KptKihCDyCJBEEYEFkOfIz1kOzE1aWebhS0tyaS0CaKxHC9M4DqCxJaoZqkoGnBGhNFlCAjgrs84BhyDHTA2hLQIAm6v-5r1QTQldE3tN3GTulHiZ8v90PspzvsSHQJzHigFWBeZTP61aDJfUFYv03rZ9fR63eSzqNPZcPeZ0Kpa79HrgYp23230u1vuuS1w-jfuPoajrZ85Xu1w8DOexWOZ0HPpjqxTTw7rgxM8A60JAgHUB6sJM1AdYFw0CSWfEP0Z8QAxii-MFIygiNouVhBKblZgtYflL6rrhtLp8Zt53kfpDflPfvwTcre3VAgAA)'
+title='Count By Pairs'
+caption='Consider the alternatives one at a time. It is simpler, and you can always tell which option is closer to the middle.'
+comment='two candidates with a circle.'
+id='by_pairs_sim'
+gif="gif/by_pairs.gif"
+%}
+
+And you can do this for all the options. And you can see that the middle option would beat any other option. This is called a round robin. Ping pong tournaments work like this.
+
+{% capture cap12 %}Matching up all the pairs is called a round robin. {{ A }} wins all their matches. Mouse over the results to see each match.{% endcapture %}
+
+{% include sim.html
+link='[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRPW_CQAz9K9HNN8Tn-0gYGbpVagGxJAzXNgJKmlQBBlS1v72-e2UpQjc8O7Zfnp-_VKlmTUNcabJhoxvyrCsjgTGsKdj0iYM2VEvknXTRZqMV5SkrLbZMOatZqZVVs1orl2MvHUbfPOkNUin1zZNKdbdS361QmX9HSVFKDVIIIguAJPIAEUBWUH7nBISbtDLCIx-N8BgBAwCNsWgRGhYAjQnIKmR1HuAyC6VkCeUCmzzLjDoEsTA1pP9eavYog5OxLolhrOUEymbaFNA1MNeAk9EpsHnW_qe2PguwASeCXIulHcxzwqp-WrUYL7EvFvG9bYf5edp2UzGP0yDZYxdPxXIXXw-SrLvtdt8V633fR0mfpv3HWMznzxKvdl3xMJ6nYtnF4zgcW6WEHmY6zg47mOkcAGY6qHNV3sHBTF8CKHd6XNbjJN5li1gW9KDw2MzXGQI2C5gNOMJL7PvxtLp8drLvIg6H7k19_wJC4-xxAwMAAA)'
+title='Count By Pairs for Everyone'
+caption=cap12
+comment='two candidates with a circle. Maybe I could use names for ping pong.' id='by_pairs2_sim'
+gif="gif/by_pairs2.gif"%}
+
+So what would that look like in an actual election? That would basically be counting the votes for every possible pair of options. Say there's options {{ A }} {{ B }} {{ C }} {{ D }} {{ E }}, and you like them in that order. That means you like {{ A }} over {{ B }}, and {{ A }} over {{ C }}, and {{ B }} over {{ C }}, and so on. You have a choice for every pair. And you could write that on a ballot. But really, you have a single ranking, which is easier to write.
+
+You would get a ballot with the names {{ A }} {{ B }} {{ C }} {{ D }} {{ E }} written on it. And because you like them in that order, you'd write 1 2 3 4 5 on the ballot.
+
+Everybody writes their rankings on the ballot, and then we count all the ballots one pair at a time. If we find that one candidate was able to win all their matches, then we've found the middle.
+
+{% include sim.html
+link='[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSQU4DMQz8i88-xImdbPbMCxC31R4KXURFta3aIoQQvB0nQy-gag8Te-zJ2NlPCjROU0kssc48iRjLkNrJgueGdqqeK42NsXrO5plJWltS9rIWJhoDk9JYmYxGYcpeEPjf57XlJjPcZOpNRkK_WpqhFkaEMCQKMEDuzsQNiDr6deZQOxldx5NRek2MAMhEReQyySEjWRANiFwl-h5CNyptJVBKUEpQSlBKrjQJ_36tOKMdmgnjCkdOrE5rk2112sZsY2u8HtKV0t6rf6UVU2vBE8Gu1p40LM8EAKsGq4bdGZ7TMLRBxYZ-l2HoHAAYOOMFMlSy9VH8j6IMiQwHGWsvcFDQW-DgcbPfHy4PH8eFRrrfrK_LlpjOL4f3u-X8dNodL7vD6tT327pdnner018_VpCSNcoCAAA)'
+title='Rankings'
+caption='You are saying something about each pair of options. Mouse over each pair in the tally to see how each pair is represented in your ranking.'
+comment='ranked ballot with pairs'
+id='pair_ballot_sim'
+gif="gif/pair_ballot.gif"
+%}
+
+You can also use a tier list, because ties are okay, too. You can have multiple top-tier candidates if you really can't decide. Voters who aren't sure can use tiers and still say something about top-tier versus bottom-tier, and every tier in between.
+
+
Tier List for Candy
+
+
+
+
+Pairwise rankings really give you a lot of power. They are used in a family of voting systems called Condorcet methods, and we'll talk about those later on their own page.
+
+Next, let's talk about an even simpler way to find the middle.
+
+## The Simplest Ballot
+
+The simplest way to find the middle is to just allow people to vote for more than just one candidate. This will be really easy to explain with a Venn diagram.
+
+{% capture cap17 %}The voters vote for everyone in their circle. Both like {{ C }}.{% endcapture %}
+
+{% include sim.html
+link='[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSu24CMRD8lZNrF16_jqMLRbpICSAaoHCiE5BcOHRAJBQl356xp0AKQlfMrmc93p29b2XUeLmMUYt1a70UMVrqmCNf46xEowZnHpF1gjOzXmsl-Zo1qAkCpgERXCacGhutvBpDSYWSRNRaffOhuAZj9M0HZnSXae4yYspzknvLqWXKjsQT2JJEAhoQD8RzAQBt0cpCB4cWOhZgCZSxniWQcQDK2JrZiFlTLjhTGpXsiRTC2XLXOfJsyEFpCff45eJImpqO4woMcxo7UN6wPodCK3Jor6G7Fvii4f8_4WNpxNfcFdv2HD7QxABt9btS0_6Sumqa3ler_eQ8bNqhmqRhj-ypTadqtk1vH0gW7Waza6vFrusS0udh99lXk8kL4vm2rR7781DN2nTs98eVUpCnqcEVpwNNDYFAUwO7C6MyQ6Cp0RCkVEZuOHI1MRQP8BurSInIyWJToOZkNe_WXMZr6rr-NL8cWsz7cDgM_Vfq1M8fSXNUexgDAAA)'
+title='Venn Diagram'
+caption=cap17
+comment='too simple?'
+id='venn_approval_sim'
+gif="gif/venn_approval.gif"
+%}
+
+On the ballot you have {{ A }} {{ B }} {{ C }} {{ D }} {{ E }} and you have a checkbox next to each one. If you like {{ A }} and {{ B }}, check both boxes. If you like {{ D }} and {{ E }}, check those. If you like every candidate but {{ A }}, then there you go. This is approval voting, where you vote for those you approve of.
+
+{% include sim.html
+link='[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRTU_DMAz9LznnEDuO0_WGxE_gVvUwWBGTprXaBggh-O3YeeUCqnJ4_nx-dj5DCv0wVI0kdYwDURepU7eKWcJudXWNMZuV6zjGQN5Gyfwk7ufQpxgk9GRQDGJQK0nx37PiupnpNjO7zQylNptckrsMF4pIAAWgTRmZABJDG1cMdi3JxmNBplbDDAANCzyjyQaKYIXXwTMWtkOkJpT8JmDKYMpgymDKxjRQXJ8XK9rBmbEuRY45iqXFab1OfE1fW_jXMOIhuyGtV_5SC7aWij-CXNm1YMHxCgG4iSi5XaJAasF3FixdKkq6NqtgaU0ALKz4AcXCWladCgLFfMXRK-ZXdFbMf9yfTvPt4WOZQh_uluUyv-1PIYbry_x-P12fLsfldpzPlvx-PR-m5-N5OoSvH3JCY-bMAgAA)'
+title='Approval Voting'
+caption='Vote for as many as you like.'
+comment='simple,lots of candidates, one voter'
+id='approval_sim' gif="gif/approval.gif"
+%}
+
+Say there's two populations of voters and they each like candidates in their little circle. If you allow them to vote for everybody in their circle, then the candidates in the middle get more votes than the candidates on either side.
+
+{% include sim.html
+altlink='[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRu27CQBD8FevqK27vieniIl2kBBCNTXGJLEPiYGQgEoqSb896pyASQi5mx7M7t49vZdS8rlOpyfmNrskHjixH1jiOaLPRiqaUmdEUShE4JaRJcGputPJqTgxBSORcq28-Tk6sGH3zsTK7q5R3FTLyHE29TdSCoiPyALREEcANkGfk5xwDe5NWln34p2Ufy2ABsLEeKUEKLGxsApuBlVLgjDRK005IBGel1jnoaMixU02akBghwc9hVJJVedhNc3q6hvYaOhhNoZd6_9_aR3ncJ9wHrXoMHLC4wL7qt1GL4ZL7YpHfm2ZfnceuHYsqj3tmT20-Fcttfvtgsm67btcW613fZ6bP4-5zKKrqhePVti0eh_NYLNt8HPbHRim2xyKDk-0GLDIEABYZ0F3AOQIWGQ2AJDPiqhHniEHmdzxghEXEZLEUSJgsoTbhAK-574fT6nJoed6Hw2EcvnKvfv4AJutP2_gCAAA)'
+link='[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSPW_CMBT8K5FnD3n-CmFrhm6VWkAsgcGtIqBNCQpQCVXtb-_ZNyAVIQ_3Ps_vnf2tSjVt2xC0GLvWrUippQrJchVi2ZrUiDlYxgpi5XqtlaS2Gq7PidTmJSWsmpZaOTVFSPnsBNQafXNQXCFT6puDzORupr6bkTJfJ2m25Bq6nEgcgSNJIGAAcUBc5wHgFq0MeBA04DEAQyCNcSwBjQWQxlT0JvTq3GDLPKgkTSQnrMm91jLPgSyYWujIk4oD0-S0XFcgmNWQWjnSpn2dXE1zNS0Jk-kyh_t_hQt5EFfxrTi24_KeInpwq9-Vmg2X2Bez-L5a7ZvzuOnGoonjHt5TF0_FfBvfPuAsu81m1xXLXd9HuM_j7nMomuYF9mLbFY_DeSzmXTwO--NKKdBTVG-z0p6iek-gqJ7T-UnewVPUUBIkVwa-cODTBJ81wDdWgRSBm4U6Q8XNKvZWfIzX2PfDaXE5dNj34XAYh6_Yq58_R9yyZRgDAAA)'
+title='Approval Election'
+caption='Voters on both sides vote for candidates in the middle.'
+comment='lots of voters'
+id='election_approval_sim'
+gif="gif/election_approval.gif"
+%}
+
+Here's another example for a small group. {{ B }} on the left gets half the vote. {{ D }} on the right gets half the vote. {{ C }} in the middle gets all the vote. {{ C }} is the common ground.
+
+{% include sim.html
+link='[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSu04DMRD8lZNrF14_79KRgg4JSESTpDDolASOXHQ8JITg2xl7EEJByMV4X-PdWb8ro2arlY9arGz0quu0tAYX8fLtktZpSR43a4vPbDZaSamykrS4mm1a5HS4RQOXK64U4Io_VG0pc2pmtPJqJoBQjQgmq_8cJCdEjP5zEGn_jXT_RsTU56R0XkxLkx2JJ7AliQQ0IB6I5wIA3KKVBQ-cFjwWYAmksZ4poHEA0thEq6XV1QJnaqNSNJEacLbWOsc4G3JgWkE9npIcGSan47gCwZzGhpQ3J_lefgtSHPbU4U5LfOX2p0_7WBv0iTvkOJ6iBIob8Jr6XKvr8S0PzXW-X68P85dp20_NPE8HWBd9fm4Wu3z3AOOm3273fXOzH4YM83LaP47NfH6F-3LXN-fjy9Qs-vw0Hp7WSoGeYgdXNxAodggEih3YXWjrDIFiR0OQmhm5-ciVxVD1wI9VkRSRk8WuQuJkibWJS7rNwzA-L9-OPeY9Ox6n8TUP6uMLKwtR8k0DAAA)'
+alt2link='[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSTU_CQBD9K82e97Czn5SbPXgzUSBcWg6raQCtlBQwIUZ_u9N5MUoI6WH27bx5M_umn8qoaV2nUlOIK12TN5q8G09l4ruwWmlFI8UScYbGDDEnlXyKfHBCToGv4kh2amq08mrKLBUERK63-upjcuKM0VcfZyY3M-XNDBlpR-O8I7SAmIg8AkaiiMADkOfI7RwH1iatLOvwpWUdy8EiQMZ6UIIUWMjYBDQBKqXAGRmURk9IEs5KrXPIYyDHSjVbC2JECnoOTyWxyptfnjA9_dkwQnsJ3SXZi57_38pHGcYn7AujexgQYGTgHuq7UbP-nLtill-bZledhnU7FFUedowe2nws5pv88sZg2a7X27ZYbrsuM3wctu99UVVPfF5s2uK-Pw3FvM2HfndolGJ5GBucuB1gbAgIMDZguoD1BBgbDQIJM2LLEeuJQXzgf1JFSES8LJYSEl6WUJuwkOfcdf1xcd63_N67_X7oP3Knvn4ApcfzpRwDAAA)'
+altlink='[link](https://paretoman.github.io/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSTU_DMAz9K1XOOcTOV7sbO3BDgoG4bDsEVI1BWacykBCC347jBwJpoB6enec82y99M87MlsvcWYppbZcU3HfUZYniem0N1RLmYClXhjlZYq1x0RJ1Gkl1GySKQrb5K2CuXFXnoFErpK-a3sycNcHMSCBqkqQN26NPirMwzh59wrT_Mt2_DMnKJFDXqilrd8JEFAAYiRJABqAgKO28QKcCLDpyyKLDAgyADAeURL3AkOGMrEXW6QXvdFCqnpASnvWu9-AxkBelJVlCYQIFPY9VSa0K7rvu56vHdGxHPea_j_3fIkH7hd-jhKTDhoz3xGoBBkWnWZTe5mNlFuNrGZpFuV-tdvPnadNPzbxMO8nO-nJoLu_K7YMk1_1ms-2b6-0wFEnPp-3j2MznFxJf3fXN6fg8NZd9eRp3TytjRB7GR9gVYXyMABgfMV3E80UYnxyAtDLhL0h4vhTVFy8LJkgkbJY6hYzNMu5mPNhNGYbxcPW672Xfk_1-Gl_KYN4_AZvC0nJjAwAA)'
+title='Approval for a Small Group'
+caption='You can move individual voters.'
+comment='less voters' id='small_group_approval_sim'
+gif="gif/small_group_approval.gif"
+%}
+
+Approval voting is simple to use. It's also a huge improvement in finding the middle.
+
+## The Median
+
+Why does approval voting work? It uses a median.
+
+A median finds the middle of a list of numbers by putting half above it and half below it.
+
+*More* *importantly*, this minimizes the sum of the distances to all those numbers.
+
+In a way, all numbers are treated equally. It doesn't matter how far a number is from the median. Each number is pulling the median to one side, just like all the others.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA4VTu04EMQz8l9QRih9xsvsVFHSnKw6JAmklEDoKhLhvx-tJruHQaYuxHWc8mU2-U0nr4ZgTORyoUuZejvmwzICWOiLmMmvUZqTXmsmMmo6o2dwqfUQ6S7bMNQOFa5C0ck6a1nQpKaea1pKTQV9zKPnP5yvdV9KF9h0X5nSjY4kO5hotUm71-P59GtGwg5EKQAFQRAZwSaSOHalPoZzYebzIFGdxPQGgYUXmNOIAGm7IwMJLtMj4K0JRFagRGCRQI3X0GKrgkQVV3Rko__PtDXTb0asjyvca5N4IDUk6hKqFQ9pCvuLACtsq7K84b4VtFbZVRUsFwLba0NJjRF1wV0oUDSwG1wwsVuM44kIMFAYFhr0NChrFlMYAAcDxhv_f5pVsWOxB7A9mr-E4HWQdZB1COoR03IJeAdDSwdU7YJf00PzmlsifT9v2dn76en_xt_G4fX6cttfzV_r5BWjH9i2-AwAA)"
+title = "Median in 1D"
+caption = "Try moving some voters. Add a candidate. The total area of the bars below is the sum of all the distances. Notice that moving the median left or right would not decrease this sum because the same number of people are on each side (same number of bars are growing/shrinking)."
+comment = "Maybe it would be good to try to move the median itself?"
+id = "median_1d_sim"
+gif = "gif/median.gif"
+%}
+
+A median can also be found in two dimensions by using the same idea of minimizing distance.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA4VTwUpEMQz8l56DNGmS5u1XePC27GEFD8KCInoQcb_dpLOC4Iq8wzTJdDpN8z5ab7v9gRon7FmERMeB9hHEvOWCw4i9V0ppFk4mtuIMTQ4Xp3fizWuluS9qZZIpq5QbudaiNnLUSiatmrCTcGmJZFH5kE5G23Vq2nbt3Bs1W6HD5Uzo9OvLSmSlnbl2nEXaFca2GCK2KKNf4-T-Oo350hRBCEusADhiB6Ql1sRAmKcwNUmdTErqSIIAICOKKGVGAmRkIoKKbIsyLm8zeGUH3IyBItwMu3AcWeiMDVkthezsX19R-HpPf3RF5X_K-P8gXdb0Ylh9dUonnhsXV7TP8AyGexvaZ2P11BQUA6B9NkGJdYRtmJm-kg4VR_ccj-C2rpSj1xwSDgeOvRMOJq9TpgAGAJ2fmIP5PZoTxVjCTFI5XCcgFhALGAkYCUxDGABeAloRgLJ0M3OC-4rvj6fT0-vd-_ND_iO3p7eX4-nx9b19fgGnVnGdzAMAAA)"
+title = "Median in 2D"
+caption = "Move some voters. Add a candidate (+). Just like for the 1D case, the total area or length of the lines below is the sum of all the distances between the voters and the candidate or median. The median we chose here minimizes this sum. A winning candidate should also minimize this sum."
+comment = ""
+id = "median_2d_sim"
+gif = "gif/median_2d.gif"
+%}
+
+How does approval voting use a median?
+
+In a way, approval voting is asking you whether each candidate is close to you or far from you, so you're measuring distance and writing it on your ballot.
+
+
+
+Score voting can give a more precise measurement of this distance. In score voting, you give every candidate a score from 0 to 5. Add up the scores, and the winner has the highest score, just like usual. You could even say that approval voting is score voting with only two levels of support.
+
+Distance is measured on your ballot. When you find the highest score, you're also finding the smallest distance. So you're finding the median.
+
+That's the motivation for score voting.
+
+{% include sim.html
+link='[link](https://paretoman.github.io/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRQU4DMQz8i885xI6dbPfMD-ht1QO0i6hUdau2CCEEb8fOlAuoymHs2J7MOJ-UaZymVhNr26SJeUg81IjMI5WIhna7E_GotM0mEccYZ8-zRl5ozImURuZE5pCoektO_443t7uV4W5ldbfCub_NISlSQQpFrAAD1K6MXQCroz9nDqteFOfxS-HeIwIAjSgypykOFZcN2YDMWcQXkbtQjp2AqYCpgKmAqTjTxOl2orliHJwFdjlJKkm9rEEbfRo2w7bKb-DEU4lA-6z-pVa41oY_glxd9UvD8owBkGqQatid4TsNpq11nTb0twymawbAcMUPVLBU61ZCYAVFhYKKtTcoaJht0pmenw6H5br-OM000uN2Oc-U6PK6vD_Ml-15f7rul6NXvt-Ou_llf5x39PUDc7xiOMsCAAA)'
+title='Score Voting'
+caption='Give as many as you like a score from 0 to 5.'
+comment='simple,lots of candidates, one voter'
+id='score_sim'
+gif="gif/score.gif"
+%}
+
+In practice, voters can adjust their self-reported distances, which is called using a strategy. Jameson Quinn has a good discussion of strategies in a page linked at the bottom, and I have a page that discusses how strategies play out in approval voting. Basically, using strategies means score voting changes and takes on qualities of approval voting and pairwise voting. Also, in the approval voting page, I show that when you combine approval voting with polls, you get almost the same winners as pairwise voting, which is nice.
+
+These are the strategies in the example below:
+
+- The J = Judge strategy measures distance well and would best find the median.
+- The N = Normalize strategy is basically stretching your vote to the max score. Any voter would rather do N than J.
+- The F = Frontrunner strategy considers polling data and stretches your vote to the max score only for the frontrunners. Other candidates can get pushed to max or 0 or in between.
+
+{% include sim.html
+link="[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSy04DMQz8l5wjFCdO7O6ZP4Dbag_QLqJS1a3aIoQQfDt2pr0UVTmMX5mMHX-HFIZxlBaJZYojkUbS5lY1i7NbKpdYzmYVmaYYyK9RMj-x-yUMKQYOQ_glCjHUMFAMzaosKQYp_juW0buZ1d0Mpf4WuYRmwkuk7OGMMJQQAyqgdTlkQogN7dlqsOrJbHwWzNRrcgaAJjM8oykGDUGBp_CMJdsAfJAmJbqWAq6SkQJXAVcxrpHi5XhxQxVYCxo3nlgiW5qd2OvYG_YBcL4axd90g_tdvqVm9M2C34FgXvVgxRgrASC1FgCkVvxiRdtVkNP-VkXbLQHQcMMfNDTcam_FBTZQNChoGLxAgeCuQIEUePg_wf_JdZEESb2ZkaAlBaFSZ1KIUYhRECoIFXoUfApZ6rIebDFeX3a75fz8dZhtn5_Wy3G2jT69L5-P82l93B7O22Xvm_6x38xv2_28CT9_6sQykEkDAAA)"
+title='Practical Score Voting'
+caption='Try the different strategies.'
+comment='score can look like approval voting'
+id='score_strategy_sim'
+gif="gif/score_strategy.gif"
+%}
+
+STAR voting was created to counteract scoring strategies. It uses a final runoff where stretching your scores doesn't matter.
+
+STAR combines the two ways of finding the middle, scoring and counting by pairs. Its name is an acronym, STAR, Score Then Automatic Runoff. First we score. Then we find the top two and send them to a runoff. The runoff uses the same scores but counts them by pairs for whoever each voter prefers.
+
+{% include sim.html
+link="[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSsU4DMQyG38VzhGLHdnLdeAXa7XQDoG6VihALQuXZcfxThqLqht-xk_8-J_6iSrt1NS9c21ZW5lq4LzOyFjmJSP5yohq5um2FeB7LPdrmutGuFlLa0TcLFbJce-yKYg-p5d8XlXG3stytcE1vngjuSAlSoGCFgIEdEhCsofFLCwl_LiThFUkJLwkRCGxEsSVsWghspGM1sFryQKsJy_MeOAsNTq1BANTCaeXy-83NjjI8G1rmIqUVjbKm7Qz4Gsg1CONVZqB5Vm-t1RNeO94FuIqmDRdoQDWgGlANTZtB0LR11Eb-y9C0VwjnTscLOK7OLVuJiSKHhYPAl5QOgo6zXSANgsvqIOhzhGh_eHyKodq_nt-PNAeqozhubqyjwVEheNUBtAG0oUgaBHQDfgOQY0I-xJAswHx5Pp3OH4fPt2OMNxguP5L3f-I5AwAA)"
+title='STAR Voting'
+caption="Same ballot as above for score. Score from 0-5, and add up the scores. BUT THEN take the top two and count by pairs. Use the voter dude . He's in the bottom left corner. Drag him around to see what each voter was thinking."
+comment='same as above but star'
+id='star_sim'
+gif="gif/star.gif"
+%}
+
+## Bringing Groups Together
+
+Part of finding common ground is finding allies. Any voting system that avoids vote-splitting will also allow allies to come together as a team. The scoring and pairwise systems mentioned above do this, and so do the methods in this section.
+
+To avoid vote-splitting, you could eliminate candidates that aren't doing well. That way they don't interfere with the main candidates. The main candidates won't see the smaller candidates as spoilers and can ally with them. This method is called RCV and is getting more popular in the US.
+
+{% include sim.html
+link="[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSu04EMQz8l9QWil9Jdj8D0a22OMRVnICCBiH4dhwPS3HolGLs2JnMOPkstazb5o246k4bcyXuy4zcaJmB_G2JWbTVfafC8xS7EpvOXMtaqVhZy7cVKp5pi6ao9YBK_1ZUxs3KcrPCNbmZQc6CFALYALifGyAEsAXGdR4Q3ExFgic2JXgkQACgEUNL0GgAaKQjG8iWPKA1hfIcAWdBIUgVdQjSYNqYftdsbiiDU2GXSUjJomxJOwM-AjmCIN5kBpZn7ZraWoq3jieBXINpx_AcUh2mXXMSDtPuAJj2jpaRdzlMtwrg7Gww3DC65mkl_lJpoGhQ0JaEDgUdZ7sAFIBhdbxeP75PR3FczajD0gDhAOGAmAExw1LocAD0DPANyBpT1l18iwU8j6fL5fX94ePtHH_5_vTyfH4qXz-HLDOpJgMAAA)"
+title='Single-Winner Ranked Choice Voting'
+caption='Your vote counts for your top choice. Then, do a process of elimination of the candidate in last place and repeat.'
+comment='same example'
+id='irv_sim'
+gif='gif/irv.gif'
+%}
+
+Also, you can have a multi-winner system where you have maybe two candidates getting elected. For example, you're picking two pizzas to order, so you can have meat lover's pizza and you can also have a vegetarian pizza. You don't have to all eat the same pizza.
+
+The idea here is to choose a set of candidates that can stand as a representation of the voters. This works with ranked ballots or scored ballots.
+
+{% include sim.html
+link="[link](http://127.0.0.1:5500/sandbox/?v=2.5&m=H4sIAAAAAAAAA61Wa2_bNhT9K4yALTYsKKLesuMEa5ttBda0iLP2g20EskXbwmTRE-msWZf99l3yUvIjSfNlSIJL6h6ee-5DjL5ZrtUfj9PETunUHnuBa3tuDCtKQ5smepXENqXKS0Nq09CbTm2LqlM09G0a-GrvW33XtgKrb_1LI8u2Qr2PAAXOGIxrP_kBT_KiJ33RQ13NTZUEvfdwjxJogAYFgBZtQAENwEK8EAyQU9vygAgeekDkgfHQII0XIARofDBI48W4S3CX6gO-q5VSVQSqHT4K8n30oyAfmMZQPvxR4AjdyOljvtT2bN8OwB24Jr2gyTPwmgUQjz21CDRFcEwdRFp8EGNTUG6ASYcuGqpaNbF-zdYkq3LyqahYttmUbDKp3q4YE4y8qVmWw_YDyyT5jd-zWsDuM1suC7bbIxgWE0u1HYsYYuohFjEM0WARwxh9ic47xCJGLhqqkREWMMJWRKEujQ-JRUgRYUZRqk2M8xDj2dhD46PB4seoIFbzaI1uP4PSD7yqOSMj9icZWWpGY4QkR32IMUiCZUswSIICExSYYBuSEA1qTJAvQamJYnFg9FIUmzZNTVVTQ7XwmwWypSg5RbY03m-xvd_sNMFOLrbVXBa86uSFkHUxlzZZ85yVNuEb9Vx0v6kuqV9pnpAhuWMl08fesUW2LaXoNGhE3mc12fCylOyrVPAZWxbVlTmzC4WRzFF7MplYYs5rphaGqGSSzDMdsznlCJktmRjrw7iZOoDJizyTTLRqz87IbVaWD0SuGIEhrfl9VgryI1kC519FVbH6ZKd2BlAuVRzkveeS1SMmHUC_Qd87I6DV321jKQapg0Gyf7Oa68gdpdwksuB1ZxeH8EUT0dRX7mHaZEhRGZijC7MPhl8dcdyip6Q3PITv-QbtwUdcPTbiG_3r7Ks-BSmEBw6slW77nG8r-UXvOzp6d7DDQUAYBQXDVcccxDbvTcacl7wGHMIcvW0jFgvSDJMjipzNsrpLdjOIjX2baUT7aCcTaE1YeFEGBwAzjGq61N_OqR099JyLTVaReZkJMTwVa8jx9OIQrQSqJz9tJVeWDJuZyeDJJ5j6LmkYm3fghVizC6x4JsgPaiSgBXBEiGJWsj45P5tdnM_qZ8JjuByn7O0qq2VTInkYRbYAbJetJtK8dk2_bTOITsmqpVx1n-NBtcdSHgkr4cY_iNzMcDF0B6Q4V_EMMWx7vcMBbuYBuqKA42LqFPngCNFowKSLOVwg825PKTkVRGfQ1_p6dxtWz1klf-b1OpN7F5p5T6bkrB1yJHia0u79OFgVi86Jma9_mvkyaV0MvcOkYDyvP5Iv76-vr24uT8jHG3L7_ury5PLkucLeyYKpNbbUNtTdwRHh3ujC0ACfmg2i5JMmB9Ijh5P2XHe-38_ni42asGBkBaOq7tNVsVwxIbH-NhHccZzvEuqIZ-rlegXzKsmMCPlQsuGpvjf6uvV6iTOhT_dQf5Wt2e8bGIuDJHTtoD-jJ3GOK_2_RXqtVfvXm7kVjZA9YDuOzTXZXgN843WJvuJWTG3UHSx4LfG_EF7UjiiLOevAh3r3JYYmcktiVoivmdzWlQEpSY_624265sPaxc9YvE1uHzYMPjBusuoPlgNK_zv9pebbDTzK-XrEWC7g48RPpo__AZ-f7R9NDAAA)"
+title='Pick a Pizza'
+caption="We can order two. Decide using STV (Single Transferable Vote), also called Multi-Winner Ranked Choice Voting, and also try using a variant of Monroe's method for fully proportional representation using scores."
+comment='meat lovers and veggie lovers win'
+id='stv_sim'
+gif='gif/stv.gif'%}
+
+And of course, there's primaries, which is the way we do things now. Basically, a whole party gets behind one candidate. This can work in the best-case scenario. But primaries can malfunction when there's a crowded field, or when one party has many more voters than the other party, or when there's more than two parties.
+
+{% include sim.html link='[link](https://paretoman.github.io/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRMWoEMQz8i2sXlizJ3n1FinTLFhdIEVhICJfiCPl7JM2FIxyHixntaMcj-bu0sm6bjkrKe92IyZkFm8GmM7alkrV9r4WiecqfwOyMQuhlbbVIWakWTW7eyvXueO9wpdW748p8qCwPFWp5HUW0KBklApEAEIkM4AFIHP26gCW_csuKKWdgt2EH2DAGY7fpDrDhgWqiWvKH3jIoxUoohY5AvUNHoO5Om-83TrQaRDh2DEu-ru6iwDJmFbpRvtEOs6CSDvLfXizjy8AjIbAseCysTxFWMbb23IVe31MBGFsHWmbepBjbGgDLM4xsWJ5pJo1RDBaGBIbFDyQY-HdwwsvpON7Pz5eP17KWp-Pr83S8nS_l5xcgCQz0sAIAAA)' title='Primaries'
+
+caption="Here's a best-case scenario. In reality, they don't always work so nicely."
+
+comment='an best-case example of primaries ABCD two groups' id='primaries_sim'
+
+gif='gif/primaries.gif' %}
+
+## Afterword
+
+To wrap things up, there's a lot of ways you could deal with voting (casting a ballot), and there's actually even more ways you can count ballots (tallying). As far as casting a ballot goes, picking only one person does not find common ground in a group. But picking multiple people… that allows you to find common ground. And that's the point of this explanation. You have to allow people to vote for more than one person in order to find common ground.
+
+Still want more? Try the sandbox below, where I've added a ton more voting methods and configuration options.
+
+Want more of a narrative? Then choose your path. I go into depth on all the voting methods above. This page was just an overview.
+
+Either read about primaries and polls, more details about approval voting and strategy based on polling, or an essay by Jameson Quinn on types of strategy with score voting and some resistance to it with STAR voting. Find out more about IRV (the single-winner RCV) and STV (the multi-winner RCV). I also have a draft of a page about proportional representation using more methods than just STV. It's a work in progress. Just be sure you get to read more about Condorcet methods. I like them best.
+
+- [Primaries](primaries) - and electability polls
+- [Approval Voting](approval) - and strategy based on polling
+- [STAR Voting](star) - by Paretoman and Jameson Quinn - on STAR voting and its motivation from strategies of score voting
+- [Condorcet Methods](condorcet) - I like them best because they count by pairs.
+- [Instant Runoff Voting](irv) - AKA Single-Winner Ranked Choice Voting
+- [The Single Transferable Vote](stv) - AKA Multi-Winner Ranked Choice Voting
+- [Proportional Representation](proportional) - draft
+
+**External Links**
+
+* [Videos by CGP Grey](https://www.youtube.com/watch?v=s7tWHJfhiyo&index=1&list=PLkLBH5Kzphe0Qu8mCW1Leef2xSxPK1FIe) - I have to mention this set of videos by CGP Grey, since I do in every discussion I have ever had about voting methods with new people. He made them at the time that the UK was considering using IRV, which the UK called the Alternative Vote.
+* [Link List](links) - I have a big list of links to communities, organizations, simulators, polling sites, courses, videos, essays, books, references, and bibliographies.
+
diff --git a/condorcet.md b/condorcet.md
new file mode 100644
index 00000000..5e4f2088
--- /dev/null
+++ b/condorcet.md
@@ -0,0 +1,329 @@
+---
+permalink: /condorcet/
+layout: page-3
+title: Condorcet Methods
+banner: Condorcet Methods Explained
+description: An Interactive Guide to Alternative Voting Methods
+byline: By Paretoman and Contributors, June 2019
+twuser: paretoman1
+---
+{% include letters.html %}
+
+I'd like to describe on this page how Condorcet voting methods can help us find a common ground candidate and elect them.
+
+I'll go into detail to explain the hard-to-understand parts of Condorcet methods. For that mental effort, you'll get the benefit of not needing to think about the polls to decide who to vote for but simply be able to vote for the candidates in the order you like. And you'll have better candidates to vote for.
+
+## Intro to Condorcet
+
+[If you haven't yet, please read this page about how counting votes for each pair of candidates allows us to find common ground](commonground).
+
+To summarize, the key mechanism that allows this method to work so well is that your support goes 100% to the candidate you like better out of every pair of candidates. This is a lot better than just choosing one candidate: there's no spoiler effect and there's no vote splitting. This is a tremendous burden off of the voters and the candidates.
+
+{% include sim.html
+link = "[link](https://paretoman.github.io/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSu04DMRD8F9cuvN5dP67mCxDd6YpADnEiukQkCCEE387awzVBkYvxPjyeWfvLBTeMY2ZPsU5-JFJPhdtOg-VK21XL5VaNsVpOp8k7asdYvLW1kN0QvBM3uJ_qvFM3kHfJeqyWDYL_t6xSblbqzQqFfhURyCkihAASgAJSl0EmgMTQrlOD2ovReCwZqffECABNFERGwwYJyYyoIDKWaL5DF0ptBGBiCGIwMZjYmEbyf6s1JxwHJ8Mu-ejZi5Wl0bY-aTabbYnbhreS9LNyTS1wLRlPArlSe1IxPCUATCukKmaneDuFaQWLln6XwnQKABhOMJzAkrRbsR_kEigSFCSMPUNBxtkMBZkBUJDxenn7PhnFcjWjDEsFhAWWCsQUiCkgLCAs0PO4OxyOl4fP02y_9X63vs57-7Hnl-PH3Xx-eltOl-W4to_8vu7n52W18vcv6dXEticDAAA)"
+title = "Pairwise Ranked Ballot"
+caption = ""
+comment = ""
+id = "1"
+gif="gif/pair_ballot.gif"
+%}
+
+We're going to use that background map for ballot visualization in the two elections below. We'll overlay the ballots for all the voters to try to make it more clear how everybody's ballots get added together.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSMWsDMQyF_4tmUyxbsnVZC50zZDtuSNsMhaMpIR1CaX97Zb0GAiVkeFYkv3xP8Rdl2swzF0usuqSZTfxUxilbKpWXJRHHjGbv5FFX2uREQhv6yZRIo2w-5L3uktO_j3fsbme62-Ec3jwIoi6oQcACAQA3iBOwuPrvVRc350TFjfzL4kbFpUBgUwQjGhcKbEpHZaimuFBzkPLYAUejAqhW9AFU3WnmxBhsaMGvIisnXzFJ_osl13xSrgc3nGNG4p7cWkoLYOn4H4AoCKrYmAJPEVSBpwiqCkFQ7ehhXYqgLUM4JhtCNqyraUSoDtJg0UDQppAOgo67vUAqBAvqIOjjzdDTdrf1V_R4fH89nl4OZxqvqGPAbrbVEdAyBPYGNAOaSWCbQkBn8DKDDMiHnuh5v67H8-7ycfB3vF0_T_v17Xyh718YJyuqEwMAAA)"
+title = "FPTP Spoilers, Condorcet None"
+caption = "Switch between FPTP and Condorcet"
+comment = "Example of no spoiler effect - basic spoiler intro stuff."
+id = "condorcet_2"
+gif = "gif/condorcet_2.gif"
+%}
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSsU5DMQz8F88Wih07SbsiMXfo9tShQAekiiJUhgrBt-P46AKq3nB2bF_u_PJJhdbLItVYXHe8yBCWUiNSrSxjRmLOahKRexyV3Y5JcsxLjGVeaV2YjNb0XYjJM23RFLUeUPjfF5Vxs7K6WZGS3DIVZK7IoUAMAAHSAKFALDDu84AgFyYNojjUINIABYBGDS1BUwNAox3ZQLbKgVpSqcwdSBYqBNWKOgTVYFpitfhmc0MZnBV-hZUrW5St_Nqzq0_TaxDEi87Actb-UltL8dbxTyDXYNqxPYdUh2mHVIdpdwBMe0dt5F0O060AJDsbDDesrnlaiYdDDRQNCtoqoUNBx2xXQAVgWR0K-nw_9LDZbuJF3Z9en0_vT4czzRfV0TCuW5tnMDgKAPQD0gakDUvZwwFQN8A1BmCKvOtMj_vj8XTeXt4O8aY3x4_3_fHlfKGvHw30UswyAwAA)"
+title = "Condorcet: No Vote Splitting"
+caption = "Switch between FPTP and Condorcet"
+comment = "Example of no vote splitting. - even with that crowded example the IRV had a hard time with."
+id = "condorcet_3"
+gif = "gif/condorcet_3.gif"
+%}
+
+How does this work? We have this information about each pair of candidates, so the obvious thing to do is check if there is a winner that won all of their matches, which is called the Condorcet winner. If you ever hear somebody talking about counting by pairs or Condorcet methods, well, they're pretty much the same thing.
+
+The name Condorcet comes from the guy that thought it up, the Marquis de Condorcet, whose actual name is Nicholas Caritat and who is actually just from the town of Condorcet, so really it gets its name from a town in France. And actually, it maybe should be called Llull because Ramon Llull thought it up 500 years before Condorcet.
+
+
Statues of Condorcet and Llull
+
+
+
+
+Also, when there is a Condorcet winner, I would say this is the perfect voting system because we get around Arrow’s Impossibility Theorem. Arrow's theorem requires a set of good principles for a voting system, and when there is a Condorcet winner, all those principles are met. The only problem is that there could be a Condorcet cycle, which we'll talk about next.
+
+
+
+## Visualizing Cycles
+
+There's only one hard to understand part about Condorcet methods, and that is what to do when there is a kind of a tie called a Condorcet cycle, which means there is no Condorcet winner. You already know this. It’s a rock-paper-scissors cycle. It’s like a tie because each candidate got one win, so there’s a tie in the number of wins.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VTy24CMQz8F59ziO28lq-o2t5YDtAuEgJBBe2hquDb62SULVKFQJqJHc_a490f8rRYLot3zLxyS5HsWIoxDsFJHFYrR1yv5OhEa0I0OS6hXlF12dcbSgvvKNCCbgM5iu2YrMxy2cC7fz_LlIeZ4WGGfdPm2hPdRvIj2QONcCfSiXYSOomdpE5yJ6WTYRb8k561eRbnWZ1neZ71uT6gdivoVqszI52223aDA8LwiRPAjOJgaLaowdCiYvNaUGxeNjA9MYDfEhCMrUAgIxmngtPQCrRuudqn3MKKvhQ6inbUdJamdzt-HQ7k2HEtSBCAqprqD11279NmfabF5_lruloU6xKnVhB8U0F14L7IepD7g95fC009xPtYasOFjFcL44ShBaMHMGx9Pr3tx_Fo_5e33eVyOl-MPq0_pnNzO8K0qACYFiMApkU8JcL6CNOSB8D6BMsSLEuxzVIHTpBI6DBhbRmvaUZtFoACYHfG9nP_TDKS-Ci4uulCjWPkAsGC_RU0U9BMgWCBYEE_m_XhcPp8_f6YzKTn9XE_vdP1FyrG79fvAwAA)"
+title = "Rock Paper Scissors."
+caption = "Rock beats scissors, and scissors beats paper, but paper beats rock, so it’s a tie, or a cycle."
+comment = ""
+id = "condorcet_4_rock_paper_scissors"
+gif = "gif/condorcet_4_rock_paper_scissors.gif"
+%}
+
+This visualization **above** is a little crowded. The colors here are the same is in the case of the single ballot. The three voter's ballot diagrams are overlapping in this combined diagram.
+
+Let's clean up the visual by showing a map of where a candidate can beat an opponent.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WTy24CMQxF_8XrLGI7r-ErqrY7hgW0g4RAUEG7qCr49jq5yhSpQjOSH4lP7JuZH_K0WC6Ld8y8ckuR7FiKeRyCkzisVo64bsnRidYF0eS4hLpF1WVfdygtvKNAC7oN5Ci2MFmZrWUz3v17bKU8XBkerrBvbK490W0kP5IdaA53R7qj3Qndid1J3cndKd0ZZuAfembzDOeZzjOeZz7XA2q3gm61KjPSabttOzggDZ04wZhQHMyaLGpmaFmxeS0pNi-bMZ6Ygd4SkIytQICRjKggGlqB1luu8im3tKIvBUfRjhpnabzb8etwIMeOa0ECAFQ16g9ddu_TZn2mxef5a7paFtclTq0g-EZBdeB-kTWQ-0Dvt4VGD_E-l9pwIePTwjhhaMnoYRiyPp_e9uN4tPflbXe5nM4Xc5_WH9O5qR0hWtR2SIRoMcJAtJgRQfoI6ZNvdQnSJ0iWIFmKbZY6cAIiocOE2ozPNKM2C4zCQO6M28_9N0ELGT8FVzVdqHmMXAAsuL-CZgqaKQAWAAv62awPh9Pn6_fHZCI9r4_76Z2uv_hO5zDvAwAA)"
+title = "Beat Map of Rock Paper Scissors"
+caption = "This map shows that scissors is in rock's territory, but paper is outside, so paper beats rock. Wiggle rock to see its territory move."
+comment = ""
+id = "condorcet_beat_map_41"
+gif = "gif/condorcet_beat_map_41.gif" %}
+
+This cycle can happen when there is division between three deeply divided groups. It goes away if we add voters to the middle. (Also, let's use odd numbers so we don't have to deal with ties.)
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VTy04DMQz8F59zWNtxHv0MxK3toYgiISpAPA4I0W_HzpAFgdAePJmsJ-PJ7jsttNluq6Vu-7QVkcTSHHGWJCXv94k43hBtifsSO_6OdQe1Jsk5GNXEOfrZqiOJLqXNkijThs6dEtlYFpfyveplSX8e32n_7vR_d3gZ2hw-6byjZUd-oAOeQCbQCfIENkGZoE7QJuir4Lf0qs2rOK_qvMrzqs9xQLgVuNVIZkcPNzfjDc6gkRMXFA-Ks1ePRb30wYrP66T4vOzF9cQL8pYM0kaDQEYqVg2rPho0Lj7iUx60wpdCR2FHXWfreuf719OJEieOhgIBqKqrvtPz7fXx6vBEm5en1-OHs7guSeoNeRkqX08Q_PMyg5DfhP5uyeO0bJMProxhc8WnhvFyH6ThozAMZwjJdIgYQjJDQUhWsULUhqjLMvoKoi6IqCCiYsNzDFggUeCgoLfCQUVvFRRFQbwVt13nbwELFT8BR3opB4-RGgQbRmow02CmQbBBsMHP1eF0eni5fHs8-rd2cbi_O17Txyf46F9d8gMAAA)"
+title = "Middle Voters Break the Cycle"
+caption = "The middle voters' choice determines who wins because the rest of the voters can’t agree."
+comment = ""
+id = "condorcet_5_middle_voters"
+gif = "gif/condorcet_5_middle_voters.gif"
+%}
+
+Or if we add one candidate to the middle, then they win.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VTy24CMQz8l5xziO04Dz6j6m3hAGKRqqJStfRQIfj2OhllS1WhPXjs2JPJJHtxwa2mKauvuvETM3viYogie06xIbWals3GO2q9LMVTDW3FurUayNlzjK1D3Cp4F93K3arzTnuabMzWsoXg_322Uh6u1IcrFDo3NU3utnZh7WxDAzQADyADxAF0gDRAHqAMUBfCX-qFmxZyWthpoaeFn9oGTS1DrTRn1u50OPQOiijDJ0oIZhRFi2ZLC7VXOfSM7bxkwfjYAvzmiKLRiAXQcEZWkNU-IO26m31CvSzQJeARyBHjmcj3r7UmjIJPjO_iPl_282774Vbnj6_5alVcFHvpIzEMhpbQuMSW8H0i922x88e_m8fUjxYzHhYOE2svKp6A4igKS1Q6jcISVQRYohlZQQuMTaHPJRibYEiCIUm7WjEhCRQJChJmMxRkzGZGEASYmXG3efwEkJDx5Kk7FlsdRyogLDhSgZgCMQWEBYQFenbb4_F0fv5-n-1lPW3fXue9u_4A0be67dYDAAA)"
+title = "Common ground Candidate Breaks Cycle"
+caption = "A common ground candidate enters the race and wins all their matches."
+comment = ""
+id = "condorcet_6_candidate_common_ground"
+gif = "gif/condorcet_6_candidate_common_ground.gif"
+%}
+
+There is tremendous competitive pressure to go towards the middle as you can see in this new diagram, a win map. The solid yellow region is where {{ B }} needs to be in order to win.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VTQW4CMQz8i885xHGcZHlG1RtwALGHqqitaHuoELy9jodskSq0B48dezKZZM8UabVetxIab8M65RhYsiHOEpKKoxq46nYbiL1XQ0rZm4st1N4iOWjpHUKrGCjTiq4TBVJPi43ZWrUQw7_PVtrDlenhCkfn5q6JrhuKG7INDfAAaQAZIA-gA5QB6gBtgGkh_KNeuHkh54WdF3pe-Llv0NUmqDV_xEJGBnu4IJg_nC2aGz1MXk3Rs2THZAtGkyzA5pRRVCdNoEkVWUM2-YD0W-6uCXtZIEfAI5Aj6mbzzWApGK2-iRjfmT5fDvN-d6LV1-l7vlgV95OCBHs-lPs2bAye8Li7nqT7RO7bsuvNOmqoFt81V7wnHCZPXlTcvOIoCksUziosUUUAi4JFGzphbImeFRhbYEiBIQVO2OunAlcLFBTMViiomK0JQRBgZsXd1vH24WJtN4u7Y7nXcaQGwoYjNYhpENNA2EDYoGe_Ox7fv55_Pmb71Z52b6_zgS6_tHc9bs0DAAA)"
+title = "Win Map"
+caption = "This is a map of where B would have to go to win. Move B around."
+comment = ""
+id = "condorcet_7_win_map"
+gif = "gif/condorcet_7_win_map.gif"
+ %}
+
+This map is much fuller when there are voters in the center. (Also, the striped region in the below diagram is just a regular tie, not a cycle, like the above diagram with thinner striping.)
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VTy24CMQz8l5xziO04j_2MqjfgAGIPVVFb0fZQIfj2OhmyVFRoDx479mQyyZ5ccNNqVYInoo1fMWdPXAxRjJ61dqSeMm023lFrzupZWgtL8lRiaxHxOfRest4-r9UWQ5sSNwXvopvcpTrvtKfJqGwtWwj-32cr5eFKfbhCoXNT0-kuaxfWzjY0QAPwADJAHEAHSAPkAcoAdSG8US_ctJDTwk4LPS381DZoahlqzR-xEJHBHkoI5g9Fi-ZGC7VXOfSM7ZhkwWjYAmzmiKJ2UgYNZ2QFWe0D0q6-uSbUywI5Ah6BHNFuNl0NloTR3DcR4zu5z5f9vNse3fR1_J7PVsX9sBdvT8rFto29CnytQH_vrxX4viD3I7Hrj3qrt2rqKmLG-8LhYu1FxUtQHE1hkcJphUWqCGBRsGhBJ4xOoWcJRicYlGBQgjNiQhJcTlCQMJuhIGM2M4IgwNyMu87jX4CruVwtbw7GVseRCggLjlQgpkBMAWEBYYGe3fZweP96_vmY7dd72r69znt3_gW2C1UD8gMAAA)"
+title = "Win Map with Middle"
+caption = "Middle voters make it easy for common ground candidates to win. Move B around."
+comment = ""
+id = "win_map_middle_sim"
+gif = "gif/win_map_middle.gif"
+ %}
+
+Let's go back to the beat maps. They show where any candidate would need to go to beat {{ B }} in a one-on-one. It looks like B has most locations locked down except for a white angular area in the center.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VTy24CMQz8l5xziGPnxWdUvS0cQIBUFZWqpYcKwbfX8ShLS4X24IljT8aT7NkFt5imKr60lZ8iF09UFBFXHyV0lMiT1NXKO-q1hXy0kihaXKw4Ni_NAGutoTp3sVsE78Qt3LU575Its1LpXtEQ_L9Pd-rDnfZwh4JxU9fprksXlk4PVEADxAF4ABkgDZAHKAPUAdpMeKOeuWkmp5mdZnqa-akf0NVGqOXuzNId93urIEEaPlFGUKNINKotPTTLxmCrqPOSBuWLGuB3FCSVhjWAJhasKlbNGrg_gW4fk6UZuhg8DDmsPJNeaf96aUYr-Fj5zu7zZbvbrD_c4vTxtbtoFhcVPVuLhBsDEvT7Insi3if4vkXsPPkrRrKNKgUPDcNJs2TCk0gYLcGixAiwKCUEWJQKVtVOSjA6B2vIMDrDoAyDcjLVrEIyKDIUZPQWKCjoLRGBEWBuwV2X8VNAQsEvQOag9DxGqiCsGKlCTIWYCsIKwgo9m_XhcDw9f7_v9KU9rd9ed1t3-QHvGxz6-gMAAA)"
+title = "Beat Maps"
+caption = "B beats any candidate in the yellow region. Move everybody to see how their beat maps change."
+comment = ""
+id = "beat_map_middle_sim"
+gif = "gif/beat_map_middle_sim.gif"
+%}
+
+Also, just to make a pretty picture, you can see that if the two middle voters are exactly in the middle, then the regions where the cycle happens become very thin.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VTy24CMQz8F59ziOM8-Yyqt4UDCJCqolK19FAh-PY6HmVpqdAePHHsyXg2OZOnxTTV6Kqs3BSkOOaiiKW6EH1HiR3Hulo5YqsVF6wkSHOcextzc6l1EKvV9q6kqPUuoYV3FGlB10aOki2zUule0eDdv0936sOd9nCHvXFz10nXJfkl6YEKeIAwgAwQB0gD5AHKAHWANhPeqGdunsl5ZueZnmd-7gd0tQFqpTuzpON-bxUckYZPnBHUKI4a1ZYemmWDt1XQeVmD8gUN8DtEJJVGNIAmFKwqVs0apF-Bbp-wpQW6BDwCOaI8k16E_vXSjFbwifKd6fNlu9usP2hx-vjaXTSLHxWcWEv0NwYk-PeP7Ilwn5D7lmjnxb9iYrZRY8FFw3CxWTLhSiSMlmBREqNJsCglBFiUClYVJTA6e-vLMDrDoAyDcjLV-g4ogyJDQUZvgYKC3hIQBAHmFvzrMh4FJBQ8ATYHY89jpArCipEqxFSIqSCsIKzQs1kfDsfT8_f7Tm_a0_rtdbelyw-7tzRV-gMAAA)"
+title = "Thin Beat Maps"
+caption = ""
+comment = ""
+id = "thin_beat_map_middle_sim"
+gif = "gif/thin_beat_map_middle_sim.gif"
+%}
+
+In an election, there are many more voters (the dots below), and {{ B }}'s beat map is a circle (close to it).
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VTQW4CMQz8i885xHYSZ3lG1RtwAMGhKmorSg8VgrfXyZBFqEJ78NhOJuNJ9kyRFstljYGZ12EpYoGlOuKUguSpIctBYlmvA3FbzEmC17xTahC1tk2Ll_piR8XaWqVFDJRoQdeJAuWeFifwnnmI4d_nnfq0Mz3tcOzc3NTRdUVxRX6gAx5ABtAB0gB5gDKADVAHmGbCO_XMzTM5z-w80_PMz-2Aplag1v1RDwkZ7OGC4P5w8uhutDD1qsSeiY_JHpxGPMBmSSjmTiqgEUNWkU19g7YLb64p97JCjoJHIUdzN5tvBmvBVuuHqPOd6fttt99ujrQ4HX_2F6_ifiRo8IdEKd6vq6X8mMpj6ocvOfSvpanrTvmxWvrpyfCuMFSaejHjBWSMlGFNVvRgTc4IsCZjlFyxEgaX2LMCgwuMKYoiHFEXUkBRoKBgr0GBYa8JAhQYTDXcsY1_ABKs3qxuzqVWx0gVhBUjVYipuKUKwgrCCj3bzeHweXr9_dr7L_ey-Xjf7-jyBzeDGAjgAwAA)"
+title = "B's Election Beat Map"
+caption = "Only candidates more near the middle can win. Move A, C, and D to make them win."
+comment = ""
+id = "election_beat_map_middle_sim"
+gif = "gif/election_beat_map_middle.gif"
+%}
+
+Let's look at all the candidates' beat maps to show that there is a cycle between {{ A }}, {{ C }}, and {{ D }}, but {{ B }} beats them all. Also, the white spot in the middle is where a new candidate could win.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VTQW4DIQz8C2cO2AYDeUbV2yaHRNlD1ait0vRQRcnbaxix0aqKVlqPjT0Mw-7VBbeZphI8Ee38xJw9cTFkb8-iDdXkqdTdzjtqzRTZU062oq0ltzFRK9XWbEhz6xW3Cd5Ft3H36rxLPVUjsLVsIfh_j62Upyv16QqFzk1NnbtvXdg629AADcADyABxgDSADpAHKAPUhfBBvXDTQk4LOy30tPBT26CpZag1f8RCRAZ7SBHMH4oWzY0Waq9y6BnbMcmC0bAF2MwRxdRJGTSckRVktQ9Iu_DmmlAvC-QIeARyxHgm8v1prYrR3DcR47u677fjfNif3eZy_plvVsX9sJc-EsPjulpK65TXqay2i7HrjmsRUfvuMeO7wqFi7cWELyDhSAnWJEGANSkhwJqEo6SCFhisoWcKgxXGKFg0dcViQhQUCgWK2QwFGbOZEQQBpmbccR7_ACRkfPHUnYutjiMVEBYcqUBMwS0VEBYQFug57E-nz8vr79dsv9zL_uN9PrrbH9CaVlbgAwAA)"
+title = "All Beat Maps in Election"
+caption = "The spot in the middle is where a new candidate can win."
+comment = ""
+id = "all_election_beat_map_middle_sim"
+gif = "gif/all_election_beat_map_middle.gif"
+%}
+
+These examples are made to show particular concepts, and a real election would have a wider spread of voters and candidates.
+
+### Median Math - How to Make a Beat Map
+
+To get a more fundamental understanding of Condorcet cycles, let's talk about how this beat map is related to the median. In this section, I'll show that the reason we have Condorcet cycles is because there's no one single position in two dimensions that would beat all the other positions head-to-head.
+
+The median works in one dimension just like the Condorcet winner. If you compare the median to any other position, then, in a vote, it would beat the other position.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA21SMU4EMQz8i-sUsWPHyb6Cgm51xSFRIK0EQkdxQvB2HI8OCk5bzNqOxzNOPqnStu-ss_R5KjtPL15Pp0J8y7PZihttUkhpo-9KhYy2WqjHoah5QC3_vqiMqNA3a6e75ZllaXa_zDWnMGMMC8IGUACUcAeEFNbAkXI5BnAhCZ5ICmdSBAAaURwJmhYAGnFEA9HMhlbTJq9lcBYaBDXspkFQmNl2xrGOAtja_O3XpFo_y1pm5JYJsr2tH80u_aOLLS6p6jlHIU5h0bAqgzCDRWtJYbBoBoBFA4sNHJm4z5p9HSwd9joW1S3lL2kdFB0KOnodChy9LjnMGwCrcdyV356NoziwlyIrBzsDZIMRQciAkKEpchgAWga4ns7H8Xp5vL49x0N9OD7ez8fL5UpfPzIyeM7oAgAA)"
+title = "Median Beats All in 1D"
+caption = "Candidate A takes the position at the median of the position of voters and wins. Move B to show there's no other position that beats A."
+comment = "maybe continue using candidate B for the middle"
+id = "median_beats_1d_sim"
+gif = "gif/median_beats_1d.gif"
+%}
+
+In two dimensions, the median doesn’t work this way. Finding the median in two dimensions actually has many definitions.
+
+One definition is called the geometric median. It minimizes the distance between itself and all the points. More precisely, it minimizes the sum of these distances. A more familiar concept is the mean, which minimizes the sum of the squares of these distances.
+
+The geometric median works in this simple symmetric case:
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA22SsW7DMAxE_0WzBpESJdlf0aGbkSEFOhQw0KJIh6Bovr00H9KlgWGc6BNPd5S_U0nrtomV7O8pb1KXrMVOp5wkmLY4o0dd01pyamlNt5Jysii7b3JuOJT873FmOpNu0np6SC9Ba7XHtJQ4RYRjRCmxIg3AiXTArUhz9IPVwQ-QnNR1_KNKfFQFkNHGFpepDsjooJpUSzTUEjHlGIYEUTFUKzyGPMy6SfivHQK1uvz1t5A6FnJf6H3hYpseixZdDbno6mG1Da4Cc42IxqgMY0ZEqyFhRDQDiGiDarJl4T5L9HVUOvE6g-oW9qsb6Uh0HHR6Bw4GvUNDflSA0Qzuatx_GyyMyVzykXoQZyI2hQojEyOzhclpAF4mWi_nfX-_PF8_Xv1Hfdq_Ps_72-Wafn4BRE0OAuoCAAA)"
+title = "Median Beats All in 2D"
+caption = "In this circular distribution of voters, the candidate that positions themselves at the geometric median beats all other candidates."
+comment = ""
+id = "median_beats_2d_sim"
+gif = "gif/median_beats_2d.gif"
+ %}
+
+The geometric median doesn't work in the multi-modal distributions we've been looking at that have Condorcet cycles.
+
+You can see that the zone of positions that could beat this median is pretty small compared to other ideas for where the median would be. Maybe that's a good figure of merit, but it doesn't quite describe the idea of a single median.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VTu27DMAz8F80aTFKiZH9G0c3JkCAeigZtkaZDESTfXooHOQiKwANf0vF4lC9hCNM8Uxojad7GmUqOPOh2GwOhwtFyVtEaWYo5LGqpsR02T0s7K2EaYkhhCrcxxJA9VAOwWjEzxH-fVerTyvi0QoNjU2MXbpswbII1NIe6w92R7qTu5O5od0p3anfGFfAOvWLTCk4rOq3wtOJTa9DYMtiaPmImIYI8pDCmDyWzpgabGT3LNqYl2cYkM-w1hsyckMwOyoDhgqgiGv2CtO021YQ8LaAjwBHQEcOZycUVxbXiDcSwLuH77bDsd6cwnU8_y9Wy2A3Z8TTc19RCegz5MRRv418Lk_NNaO4Z9a6p4C1hkDR6MmPrGWNkyJGhaoYcOcNAjowRMkTNEFUHjxQoCjFUkMzOVoyIAkLBQHG3gEHB3cIOXwQGQhbstfR3DwoFr5wiR4mp5TFSBWAFYAWZis1UAFYAVvCpwNvvjsfP8-vv12J_28vu4305hOsfg2mgwsgDAAA)"
+title = "Median Doesn't Quite Beat All in a Multi-Modal Distribution"
+caption = "In this triangular distribution of voters, there is a small white region near the center where a candidate can take a position to beat the candidate positioned at the median."
+comment = ""
+id = "median_2d_multimodal_sim"
+gif = "gif/median_2d_multimodal.gif"
+%}
+
+There's another definition of median you could think of. You could project to one dimension and find the median as usual.
+
+I used these projected medians to make the beat maps. The median isn't a single position. There’s a projection for every angle, so you have a median associated with each angle. Just choose an origin, and you can make a plot. So I used each candidate as an origin and found where the median voter was. Then I doubled that distance to see a position that would tie with the candidate. That made the beat map.
+
+By the way, there’s also something called a windmill problem that 3Blue1Brown made a video about, and this is actually a really good visual for a two-dimensional median. Another interesting way to find a median is Tukey's half-space depth.
+
+To restate the main point of this section, the reason we have Condorcet cycles is because there's no one single position in two dimensions that would beat all the other positions head-to-head.
+
+In the voting systems to follow, I added the beat maps to try to make voting more visually understandable.
+
+I’d also like to point out that, in a case where you have to resolve a cycle, really any of the candidates would be an okay choice. The differences between Condorcet methods are just in how they go about resolving the cycle.
+
+## Specific Condorcet Methods
+
+A variety of voting methods will pick the Condorcet winner if it exists. I'm just going to go through a couple different methods: Minimax, Schulze, an alternative way to count Schulze, and Ranked Pairs. I think Minimax is the simplest, so let’s start there.
+
+### Minimax
+
+Minimax is a Condorcet method. That means if there's a guy that beats everyone head to head, then that guy wins. That's easy. It's a clear winner. Sometimes there isn't a clear winner. Then you go through some rules. If you're just finding one winner, then the rules are pretty simple. You want to find who lost by the least, basically. So just start crossing off all the smallest losses until there is that guy that has no losses. **Try it out below.**
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSW44DIQy7C9_5IO8wVxn1JNXu2TdgVaq6qubDOCHGmHmOOa77XkKxHnQLT8q5F-bEJb1iWyS-a65d4seDBu8Zntx8nS1Fi_diOcmUvUXHNWnYuMZvDBo-LqYRPde9bJj07-tOfe2srx2e5yhmiLOAwgAbwAEBaANsjX2cN7S20JDW6aLwsSoCgIwYWMtoA2QkwQpsHdB5jPKOAEoKQwolhZK20t354dub45hQaCquyySkZN22-br_JvxO5J3oS3YTO1r2eZTFsWCJJ4J9W6foCNMZIMeUKwDWHW_pCMETvTpnOUKIeYqBAAIBBAIIP361jQQkAg4CswkHidmEg1QwvGbiNfP1OyWa9ZFZ4koFwcKVCmYKZgqCBcHafn7-AEVp81gTAwAA)"
+title = "Minimax"
+caption = ""
+comment = ""
+id = "minimax_sim"
+gif = "gif/minimax.gif"
+%}
+
+### Schulze
+
+Schulze breaks ties in a way that aligns with the intent of a Condorcet winner; Schulze takes all the pairs of candidates and strings the pairs together into chains. At the beginning of the chain is the winner and at the end the loser. The strength of a chain is only as strong as its weakest link. There are many chains between any pair of candidates. The strongest chain is found for each pair. Magically, there is only one candidate who goes undefeated. This is a really cool way to break ties. **Try it out below.**
+
+There's an excellent website that Rob LeGrand created that counts ballots using many more Condorcet methods than I have programmed so far on this site, so I have included his code directly into this site. You can see the explanations are a little bit different in formatting.
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSwU4DMQxE_yVnH2I7dpz9DMRt1UMRPVEBBy4IwbfXyahSVVTtYTJxMnlx9qfUsu37EPJxoF24Uq9z0Iw4JEfcBonNOdOc4sOBCs89XDn9WEuCBs_BMJIqc4mWrVJpZSt_WqhY2ZiK576s9ZRK_76sxMPKeFjhuo5iRjgLLAC4QQzikATgxOE8zlIyW6hI5rQUXqgiEMRIg8sYTUGMdLiAG0u0LlCeLUCSAkiRpEjSTNqzf_jmYl8QikzFdZmElFqWW73efxq-NXJr9Bo7TVtZ7f6o5guhdTwR8NtYk4ZmGkNkQZlCgG54S0MTrKMW6yxDE7yuSUcDHA1wNMBt8WqCOCIcBI69HQQdezsIusLhNTtes19_p45i3PWs40qBwMCVAjABmEBgIDDA83I8nz--nr8_T_n3Ph3f306v5fcC57Zt6SkDAAA)"
+title = "Schulze"
+caption = ""
+comment = ""
+id = "schulze_sim"
+gif = "gif/schulze.gif"
+%}
+
+### Schulze Alternative
+
+Here's an alternative way to count Schulze that is a lot like Minimax, but with an extra rule. Also, I may have the implementation incorrect, but it seems to work. Again, this Schulze Alternative breaks ties in a way that aligns with the intent of a Condorcet winner; there's a tie, so it sees who is tied, and just picks from that group. The candidates with the least losses are automatically in that group, and also we add in anybody that beat them (and anybody that beats anybody we add). Then we have a group that beats everyone, and we pick from that group. After that, it's just minimax. Resolve the tie by making the smallest change you can; remove the smallest tie. And keep making that Condorcet group each step (this is called the Schwartz set if you want to tell your friends). **Try it out below.**
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSwU4DMQxE_yVnH2I7jpP9DMRt1UMRPVEBBy4IwbfX8ahSVVTtYTJxMnlx9qfUsu37FOrzQLtwJa9r0Ix4SIy4TRJbc6YxxYcDFV57uHL4mUsGTV6DaSRV1hItW6XSylb-vFCxsjGVHvui5iGV_n1RGQ8r82GFax7FjHAWWABwgxikQwKAA4fjOAuJbKEikdNCOFFFIIiRBhcxGoIYcbgBN1O0JiivFiBJAaRIUiRpJO3RP3xrcU8IRabiukxCSi3KrV7vvwzfGrk1eo1dpmVWuz-q9URojicCfps5aWimMUQSyhQCdMNbGppgjtrIswxN6DUnOxrQ0YCOBnRLXg2QjogOgo69DgLHXgeBKxxe0_Gafv2dHMVx1zPHlQYCB640ADMAMxA4EDjA83I8nz--nr8_T_H3Ph3f306v5fcCdowcpSkDAAA)"
+title = "Schulze Alternative"
+caption = ""
+comment = ""
+id = "schulze_alt_sim"
+gif = "gif/schulze_alt.gif"
+%}
+
+### Ranked Pairs
+
+Ranked pairs is a lot like Minimax. If there's a clear winner that beats everyone head-to-head, then they are the winner. If there isn't a clear winner, then we follow some rules. If you're just interested in the #1 winner and not #2, then the rules are pretty simple. You want to find who won by the most, basically. So start crossing off candidates that lost by a lot. Unless they are the last one left and the guy they lost to already had a bigger loss. Also, you can just stop once you figure out who the winner is. You don't have to go through the whole list. **Try it out below.**
+
+{% include sim.html
+link = "[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSwU4DMQxE_yVnH2I7jp39DMRt1UMRPVEBBy4IwbfXyahSVVTtYTJxMnlx9qfUsu37EOrjQLtwJa9z0Iw4JEfcBonNOdOc4sOBCs89XDn9WEuCBs_BMJIqc4mWrVJpZSt_UahY2ZhKz31Z85RK_76sxMPKeFjhuo5iRjgLLAC4QQzSIQnAicN5nKVktlCRzGkpvFBFIIiRBpcxmoIYcbiAG0u0LlCeLUCSAkiRpEjSTNqzf_jm4r4gFJmK6zIJKbUst3q9_zR8a-TW6DV2mray2v1RrS-E5ngi4LexJg3NNIbIgjKFAN3wloYmmKMW6yxDE3pdkx0N6GhARwO6LV5NkI6IDoKOvQ4Cx14HgSscXtPxmn79nRzFuOuZ40qBwMCVAjABmEBgIDDA83I8nz--nr8_T_n3Ph3f306v5fcCmdLP3ykDAAA)"
+title = "Ranked Pairs"
+caption = ""
+comment = ""
+id = "ranked_pairs_sim"
+gif = "gif/ranked_pairs.gif"
+%}
+
+### Even More Condorcet Methods
+
+Rob LeGrand's site has a lot more voting methods, so try them out in the simulation below. The explanations in the sidebar are very thorough and explain the way in which the winner was selected. One detail is that he uses a tie-breaking ballot whenever he runs into a regular tie (not a cycle)
+
+{% include sim.html
+link = "[link](https://paretoman.github.io/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSsU4EMQxE_yW1i9iOE2c_A9GtrjjEVZyAggYh-HYcDyedDp22mEycTF6c_Sq1bPs-hfo80C5cadQ1aEbsEiNuk8TWnGlM8eFAhdcerhx-5hKnyWswjaTKWqJlq1Ra2cqPFipWNqbSY1_URkilf19U_G5l3q1wzaN4QfHyAg8CbhCDdEgQcPBwnGchES5UJIJaCCerCAQx0uAiRkMQIwPO4WaK1iRdJIokBZAiSZGktnDp71uLe0IoMhX3ZRJSalFu9dKAZfjayLXRS-wyLbPa7VGtJ0IbeCPgt5mThm4aQyShTCFANzymoQk2UPM8y9CEXnOyowEdDehoQLfk1QDpiOgg6Ng7QDCwd4BgKBxec-A1x-V_Gij6Tc8GruQIdFzJAeOAcQQ6Ah08T8fz-e3j8fP9FL_vw_H15fRcvn8Bl3tygyoDAAA)"
+title = "More Methods"
+caption = "Rob LeGrand did a lot of work to include all these Condorcet methods, and some that aren't."
+comment = ""
+id = "robla_sim"
+gif = "gif/robla.gif"
+%}
+
+## Strategy
+
+In each of these Condorcet methods, voters would have a hard time trying to use a strategy. What I mean by strategy is that you might say you like someone less than you actually do. You might put a viable competitor low on your ballot below people you actually don’t like as much in the hope that the tiebreaker would work in your favor. However, these strategies are hard to think about because they can backfire.
+
+**Backfiring** - Jameson Quinn's study of how often strategies backfire versus work. The Condorcet methods Schulze and Ranked Pairs (Rp) have a high likelihood of backfiring and a small likelihood of working.
+
+
+
+Pair counts are never affected by strategy. It’s only in a cycle-breaker that voters would even think about using strategy, because cycle-breakers don’t use just plain pair counts. In a Condorcet cycle, candidates are virtually in a tie, so candidates will always feel a pressure to move toward the middle, and there will always be a spot in the middle for a new common ground candidate to enter the race.
+
+## Afterword
+
+You may have noticed the above examples seem to all be ties, so what does it matter which condorcet method we choose? They all seem to be about the same. As long as we pick one, we’ll be okay.
+
+The benefit of Condorcet methods is that voters don’t split the vote and candidates don’t need to fight each other to avoid splitting the vote. By using a Condorcet method, we end up finding common ground.
+
+### Links
+
+[Jameson Quinn's VSE Study on Strategies](http://electionscience.github.io/vse-sim/VSE/).
+
+[Rob LeGrand's Calculator](http://www.cs.angelo.edu/~rlegrand/rbvote/calc.html)
+
+### Sandbox Notes
+
+In the sandbox mode below, you can find the visualizations under the "viz" menu and Rob LeGrand's methods under the "RBVote" option for voting system.
\ No newline at end of file
diff --git a/css/index.css b/css/index.css
index 733d8021..71dec236 100644
--- a/css/index.css
+++ b/css/index.css
@@ -1,23 +1,86 @@
+
+html { font-size: 16px; }
+
+/** Reset some basic elements */
+body, h1, h2, h3, h4, h5, h6, p, blockquote, pre, hr, dl, dd, ol, ul, figure { margin: 0; padding: 0; }
+
+
body{
margin:0;
font-family: Helvetica, Arial, sans-serif;
- font-size: 22px;
color:#333;
font-weight: 300;
+ min-width: 380px;
}
b, strong{
font-weight: bold;
}
+/* colors */
+
a{ color: hsl(240,80%,70%); }
a:hover{ color: hsl(240,80%,80%); }
-#content{}
+
+.letter{
+ -webkit-text-stroke: 0.5px black;
+}
+.letterBig{
+ -webkit-text-stroke: 1px black;
+}
+
+#sandbox-section,
+#sandbox-index-section,
+#sandbox-embed-section,
+.banner,
+.sim-ballot,
+.sim-test {
+ /* background: #EFE9D5; */
+ /* background-color: #e6e6e6; */
+ /* background-color: #bed7dbd2; */
+ background-color: #dfebec;
+}
+
+#content{
+ font-size: 20px;
+}
.words{
+ max-width: 900px;
+ margin: 0 auto;
+ padding: 0px 20px;
+}
+.words-original{
width: 670px;
margin: 0 auto;
}
+
+.video-container {
+ overflow: hidden;
+ position: relative;
+ width:90%;
+ border: 10px solid black;
+ border-top-width: 0px;
+ border-bottom-width: 4px;
+ border-left-width: 7px;
+ border-right-width: 12px;
+ margin: auto;
+}
+
+.video-container::after {
+ padding-top: 56.25%;
+ display: block;
+ content: '';
+}
+
+.video-container iframe {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
#content p{
- text-align: justify;
- line-height: 1.7em;
+ text-align: left;
+ line-height: 1.5em;
color: #333;
}
#content p.caption{
@@ -34,6 +97,12 @@ a:hover{ color: hsl(240,80%,80%); }
display: block;
height: auto;
}
+
+.words > img {
+ display: block;
+ margin: 0 auto;
+}
+
#content p .underline{
text-decoration: underline;
}
@@ -48,39 +117,53 @@ hr{
margin: 50px 0;
}
li{
- margin-bottom: 0.4em;
+ margin-top: 0.4em;
}
#content .ballot_title{
- font-size: 1.75em;
+ text-align: left;
+ max-width: 540px;
+ font-size: 1.35em;
margin-bottom: 0.4em;
position: relative;
- left:5px;
+ left:0px;
+ padding: 0px 20px;
+ padding-top: 20px;
}
#content p.ballot_caption{
margin-top: 0;
font-size: 0.8em;
- text-align: center;
- width: 260px;
+ text-align: left;
+ max-width: 540px;
line-height: 1.2em;
+ padding: 0px 20px;
+ padding-bottom: 20px;
}
#content p.caption-test{
font-weight: bold;
font-size: 1.2em;
line-height: 1.4em;
}
-.sim-intro, .sim-ballot, .sim-test, .sim-sandbox{
- margin: 0 auto;
+.sim-container{
+ margin:auto;
}
-.sim-intro{
- width: 600px;
+.sim-intro, .sim-ballot, .sim-test, .sim-sandbox{
+ display: flex;
+ text-align:center;
+ padding: 0px 20px;
}
.sim-ballot{
- width: 670px;
- margin: 35px auto 50px auto;
+ margin: 35px -20px 50px -20px;
}
.sim-test{
- width: 800px;
- margin: 50px auto 40px auto;
+ margin: 50px -20px 40px -20px;
+}
+.contain-model{
+ position: relative;
+ margin: 0px auto 25px auto;
+ text-align: center;
+}
+#content {
+ /* padding: 0px 20px; */
}
#content p.quote{
border-radius: 5px;
@@ -94,46 +177,71 @@ li{
color: #000;
font-weight: bolder;
}
+
.banner{
- margin: 50px 0;
- background: #EFE9D5;
- width: 100%;
- height: 200px;
+ font-size: 22px;
+ color: #222;
border-bottom: 5px solid rgba(0,0,0,0.2);
+ text-align: center;
+ padding: 10px;
+ margin-bottom: 30px;
}
-.banner img{
- margin: 0 auto;
- display: block;
- width: 850px;
- height: 200px;
-}
+
+.banner h1,
+.banner p{
+ margin: .3em 0em;
+}
+.banner p{
+ font-size: .7em;
+}
+/* .banner p{
+ font-size: .7em;
+ margin: .3em 0em;
+}
+.banner h1{
+ margin: .3em 0em;
+ font-weight: bold;
+ text-shadow: 0px 0px 3px #555;
+ text-transform: uppercase;
+}
+@supports (-webkit-text-stroke: 2px #555) {
+ .banner h1 {
+ -webkit-text-stroke: 2px #555;
+ -webkit-text-fill-color: white;
+ }
+ } */
+
+
#splash{
position: relative;
overflow: hidden;
margin-top: 0;
- height: 400px;
+ height: 200px;
}
#splash img{
position: absolute;
width: 960px;
- height: 200px;
+ /* height: 200px; */
margin: auto;
top:0; left:0; right:0; bottom:0;
pointer-events: none;
}
-#sandbox{
- background: #EFE9D5;
- overflow:hidden;
+#sandbox-section{
margin-top: 50px;
+}
+#sandbox-section,
+#sandbox-index-section{
+ overflow:hidden;
border-bottom: 5px solid rgba(0,0,0,0.2);
- padding: 30px 0;
}
-.sim-sandbox{
- width: 800px;
+#sandbox-section,
+#sandbox-index-section,
+#sandbox-embed-section{
+ padding: 30px 0;
}
-.sim-sandbox iframe{
- background:#fff;
- border:20px solid #fff;
+.sim-sandbox .div-sandbox{
+ /* background:#fff; */
+ /* border:20px solid #fff; */
}
#end{
font-size: 18px;
@@ -250,4 +358,104 @@ ul.share-buttons .sr-only {
height: 1px;
width: 1px;
overflow: hidden;
+}
+
+
+/* for "newer.html" An Even Better Ballot */
+.banner .notation {
+ /* font-size: 30px; */
+ color: rgb(255, 0, 0);
+ font-family:'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
+}
+.banner .strike {
+ text-decoration:line-through;
+}
+/* end */
+
+/* card stuff */
+
+/** CONTENT **/
+#content div.card {
+ display: inline-block;
+ vertical-align: top;
+}
+
+#content div.card > a > div{
+
+ display: inline-block;
+ overflow: hidden;
+ width: 290px;
+ margin-bottom:20px;
+ /*float: left;*/
+
+ -webkit-transition: opacity 0.2s ease-in-out;
+ -moz-transition: opacity 0.2s ease-in-out;
+ -ms-transition: opacity 0.2s ease-in-out;
+ transition: opacity 0.2s ease-in-out;
+
+}
+#content div.card > a:first-child > div{
+ margin-top:20px;
+}
+#content div.card > a{
+ text-decoration: none;
+ display: inline-block;
+}
+#content div.card > a:hover > div{
+ opacity: 0.5;
+}
+#content div.card > a > div > img{
+ width: 290px;
+ margin-bottom: 5px;
+}
+#content div.card > a > div > img.drawBorder{
+ width: 286px;
+ border: 2px solid #ccc;
+}
+#content div.card > a > div > div{
+
+ color:#000;
+ font-size: 18px;
+ line-height: 21px;
+ text-align: left;
+
+ width:100%;
+
+}
+
+#content div.card > a > div > div > span{
+ color:#aaa;
+}
+
+
+/* end card stuff */
+
+#content div.picture-container {
+ text-align: center;
+}
+
+#content img.picture {
+ display: inline-block;
+ width: 290px;
+ height: unset;
+ vertical-align: top;
+ margin-bottom: 20px;
+}
+#content img.picture100 {
+ display: inline-block;
+ width: 100%;
+ height: unset;
+ vertical-align: top;
+}
+
+p#editnote {
+ font-size: 0.8em;
+}
+p#editnote {
+ text-align: center;
+}
+
+img.gif_show {
+ max-width: calc(100vw - 60px);
+ margin-bottom: 20px;
}
\ No newline at end of file
diff --git a/css/index_original.css b/css/index_original.css
new file mode 100644
index 00000000..6da49bb6
--- /dev/null
+++ b/css/index_original.css
@@ -0,0 +1,259 @@
+body{
+ margin:0;
+ font-family: Helvetica, Arial, sans-serif;
+ color:#333;
+ font-weight: 300;
+}
+b, strong{
+ font-weight: bold;
+}
+a{ color: hsl(240,80%,70%); }
+a:hover{ color: hsl(240,80%,80%); }
+#content{
+ font-size: 22px;
+}
+.words{
+ width: 670px;
+ margin: 0 auto;
+}
+#content p{
+ text-align: justify;
+ line-height: 1.7em;
+ color: #333;
+}
+#content p.caption{
+ line-height: 1.5em;
+ text-align: center;
+}
+#content p img{
+ height: 1em;
+ position: relative;
+ top:3px;
+}
+#content p img.real{
+ margin: 0 auto;
+ display: block;
+ height: auto;
+}
+#content p .underline{
+ text-decoration: underline;
+}
+iframe{
+ border:none;
+ display: block;
+ margin: 0px auto 25px auto;
+}
+hr{
+ border: none;
+ border-bottom: 5px dashed #ccc;
+ margin: 50px 0;
+}
+li{
+ margin-bottom: 0.4em;
+}
+#content .ballot_title{
+ font-size: 1.75em;
+ margin-bottom: 0.4em;
+ position: relative;
+ left:5px;
+}
+#content p.ballot_caption{
+ margin-top: 0;
+ font-size: 0.8em;
+ text-align: center;
+ width: 260px;
+ line-height: 1.2em;
+}
+#content p.caption-test{
+ font-weight: bold;
+ font-size: 1.2em;
+ line-height: 1.4em;
+}
+.sim-intro, .sim-ballot, .sim-test, .sim-sandbox{
+ margin: 0 auto;
+}
+.sim-intro{
+ width: 600px;
+}
+.sim-ballot{
+ width: 670px;
+ margin: 35px auto 50px auto;
+}
+.sim-test{
+ width: 800px;
+ margin: 50px auto 40px auto;
+}
+#content p.quote{
+ border-radius: 5px;
+ background: #eee;
+ padding: 20px;
+ color: #888;
+ font-size: 1.2em;
+ text-align: center;
+}
+#content p.quote em{
+ color: #000;
+ font-weight: bolder;
+}
+.banner{
+ margin: 50px 0;
+ background: #EFE9D5;
+ width: 100%;
+ height: 200px;
+ border-bottom: 5px solid rgba(0,0,0,0.2);
+}
+.banner img{
+ margin: 0 auto;
+ display: block;
+ width: 850px;
+ height: 200px;
+}
+#splash{
+ position: relative;
+ overflow: hidden;
+ margin-top: 0;
+ height: 400px;
+}
+#splash img{
+ position: absolute;
+ width: 960px;
+ height: 200px;
+ margin: auto;
+ top:0; left:0; right:0; bottom:0;
+ pointer-events: none;
+}
+#sandbox{
+ background: #EFE9D5;
+ overflow:hidden;
+ margin-top: 50px;
+ border-bottom: 5px solid rgba(0,0,0,0.2);
+ padding: 30px 0;
+}
+.sim-sandbox{
+ width: 800px;
+}
+.sim-sandbox iframe{
+ background:#fff;
+ border:20px solid #fff;
+}
+#end{
+ font-size: 18px;
+ line-height: 1.5em;
+ background: #222;
+ padding: 30px 0;
+ overflow: hidden;
+}
+
+/** THE END **/
+#end p{
+ color: #999;
+}
+#end h1, #end h2, #end p b, #end p strong{
+ color: #fff;
+}
+#end h1, #end h2{
+ text-align: center;
+}
+#end a{
+ font-weight: bold;
+ color: #cc2727;
+}
+#end a:hover {
+ color: #dd3838;
+}
+#credits{
+ width: 960px;
+ margin: 25px auto 50px auto;
+ text-align: justify;
+}
+#uncopyright{
+ width:100%;
+ height:180px;
+ margin-bottom: 40px;
+}
+#appendix_container{
+ width: 100%;
+ overflow: hidden;
+ padding-top: 2px;
+}
+.appendix_title{
+ color:#fff;
+ font-size: 24px;
+ font-weight: bold;
+}
+#further_reading{
+ width:600px;
+ float:left;
+ color: #888;
+}
+.further_book{
+ font-size:18px;
+ overflow:hidden;
+}
+.further_book img{
+ width:100px;
+ float:left;
+ margin-right:20px;
+}
+#supporters{
+ line-height: 1.2em;
+ width:320px;
+ float:right;
+ font-size:16px;
+ color:#888;
+}
+#supporter_drawings{
+ overflow: hidden;
+ margin-top: 20px;
+ text-align: center;
+}
+#supporter_drawings > div{
+ display: inline-block;
+ width:100px;
+ height:140px;
+ margin-bottom: 15px;
+ text-align: center;
+ position: relative;
+}
+#supporter_drawings > div > img{
+ position: absolute;
+ width:100px;
+ height:100px;
+ left:0px;
+ top:0px;
+}
+#supporter_drawings > div > div{
+ position: absolute;
+ width: 80px;
+ height: 37px;
+ left:10px;
+ top:103px;
+}
+
+ul.share-buttons{
+ list-style: none;
+ padding: 0;
+ text-align: center;
+ margin-top: 5px;
+ margin-bottom: 50px;
+}
+
+ul.share-buttons li{
+ display: inline;
+}
+
+ul.share-buttons .sr-only {
+ position: absolute;
+ clip: rect(1px 1px 1px 1px);
+ clip: rect(1px, 1px, 1px, 1px);
+ padding: 0;
+ border: 0;
+ height: 1px;
+ width: 1px;
+ overflow: hidden;
+}
+
+.sim-container{
+ margin:auto;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/css/some-minima.css b/css/some-minima.css
new file mode 100644
index 00000000..b5663cdb
--- /dev/null
+++ b/css/some-minima.css
@@ -0,0 +1,138 @@
+
+/* from minima style */
+
+/** Set `margin-bottom` to maintain vertical rhythm */
+.words > h1, .words > h2, .words > h3, .words > h4, .words > h5, .words > h6, .words > p, .words > blockquote, .words > pre, .words > ul, .words > ol, .words > dl, .words > figure, .words > .highlight { margin-bottom: 15px; }
+
+hr { margin-top: 30px; margin-bottom: 30px; }
+
+/** Images */
+.words > img { max-width: 100%; vertical-align: middle; }
+
+/** Figures */
+.words > figure > img { display: block; }
+
+.words > figcaption { font-size: 14px; }
+
+/** Lists */
+ul, ol { margin-left: 30px; }
+
+li > ul, li > ol { margin-bottom: 0; }
+
+/** Links */
+a { color: #2a7ae2; text-decoration: none; }
+a:visited { color: #1756a9; }
+a:hover { text-decoration: underline; }
+.social-media-list a:hover, .pagination a:hover { text-decoration: none; }
+.social-media-list a:hover .username, .pagination a:hover .username { text-decoration: underline; }
+
+
+
+/** Code formatting */
+.highlight > pre, code { font-family: "Menlo", "Inconsolata", "Consolas", "Roboto Mono", "Ubuntu Mono", "Liberation Mono", "Courier New", monospace; font-size: 0.9375em; border: 1px solid #e8e8e8; border-radius: 3px; background-color: #eeeeff; }
+
+.highlight > code { padding: 1px 5px; }
+
+.highlight > pre { padding: 8px 12px; overflow-x: auto; }
+.highlight > pre > code { border: 0; padding-right: 0; padding-left: 0; }
+
+.highlight { border-radius: 3px; background: #eeeeff; }
+.highlighter-rouge .highlight { background: #eeeeff; }
+
+
+/** Wrapper */
+.wrapper { padding-right: 15px; padding-left: 15px; }
+@media screen and (min-width: 800px) { .wrapper { padding-right: 30px; padding-left: 30px; } }
+
+/** Clearfix */
+.wrapper:after { content: ""; display: table; clear: both; }
+
+/** Icons */
+.orange { color: #f66a0a; }
+
+.grey { color: #828282; }
+
+.svg-icon { width: 16px; height: 16px; display: inline-block; fill: currentColor; padding: 5px 3px 2px 5px; vertical-align: text-bottom; }
+
+
+/** Tables */
+.words > table { margin-bottom: 30px; width: 100%; text-align: left; color: #3f3f3f; border-collapse: collapse;
+ text-align: center;
+ word-break:break-word;
+ /* border: 1px solid #e8e8e8; */
+}
+.words > table tr:nth-child(even) { background-color: #f7f7f7; }
+.words > table th, .words > table td { padding: 10px 15px; }
+.words > table th { background-color: #f0f0f0; border: 1px solid #e0e0e0; }
+.words > table td { border: 1px solid #e8e8e8; }
+/* @media screen and (max-width: 800px) { */
+ .words > table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; -ms-overflow-style: -ms-autohiding-scrollbar; }
+/* } */
+
+
+/** Site header */
+.site-header, .site-footer { --text-1: white; --text-2: grey; --back:#222;}
+.site-header { background-color: var(--back); color: var(--text-1);}
+
+.site-header { border-top: 5px solid var(--back); border-bottom: 1px solid #e8e8e8; min-height: 55.95px; line-height: 1.2; position: relative; }
+
+.site-title { font-size: 1.625rem; font-weight: 300; letter-spacing: -1px; margin-bottom: 0; float: left; }
+@media screen and (max-width: 600px) { .site-title { padding-right: 45px; } }
+.site-title, .site-title:visited { color: var(--text-1); }
+
+.site-nav {z-index: 1;}
+
+.site-nav { position: absolute; top: 9px; right: 15px; background-color: var(--back); border: 1px solid #e8e8e8; border-radius: 5px; text-align: right; }
+.site-nav .nav-trigger { display: none; }
+.site-nav .menu-icon { float: right; width: 36px; height: 26px; line-height: 0; padding-top: 10px; text-align: center; }
+.site-nav .menu-icon > svg path { fill: var(--text-1); }
+.site-nav label[for="nav-trigger"] { display: block; float: right; width: 36px; height: 36px; z-index: 2; cursor: pointer; }
+.site-nav input ~ .trigger { clear: both; display: none; }
+.site-nav input:checked ~ .trigger { display: block; padding-bottom: 5px; }
+.site-nav .page-link { color: var(--text-2); line-height: 1.2; display: block; padding: 5px 10px; margin-left: 20px; }
+.site-nav .page-link { white-space: nowrap; }
+.site-nav .page-link { margin-right: 0; }
+.site-nav .current {color: white; }
+@media screen and (min-width: 600px) { .site-nav { position: static; float: right; border: none; background-color: inherit; }
+ .site-nav label[for="nav-trigger"] { display: none; }
+ .site-nav .menu-icon { display: none; }
+ .site-nav input ~ .trigger { display: block; }
+ .site-nav .page-link { display: inline; padding: 0; margin-left: auto; }
+ .site-nav .page-link { margin-left: 20px; } }
+
+
+/** Site footer */
+.site-footer { background-color: var(--back); color: var(--text-1);}
+.site-footer { border-top: 1px solid #e8e8e8; padding: 30px 0; }
+
+.footer-heading { font-size: 1.125rem; margin-bottom: 15px; }
+
+.feed-subscribe .svg-icon { padding: 5px 5px 2px 0; }
+
+.contact-list, .social-media-list, .pagination { list-style: none; margin-left: 0; }
+
+.footer-col-wrapper, .social-links { font-size: 0.9375rem; color: #828282; }
+
+.footer-col { margin-bottom: 15px; }
+
+.footer-col-1, .footer-col-2 { width: calc(50% - (30px / 2)); }
+
+.footer-col-3 { width: calc(100% - (30px / 2)); }
+
+@media screen and (min-width: 800px) { .footer-col-1 { width: calc(35% - (30px / 2)); }
+ .footer-col-2 { width: calc(20% - (30px / 2)); }
+ .footer-col-3 { width: calc(45% - (30px / 2)); } }
+@media screen and (min-width: 600px) { .footer-col-wrapper { display: flex; }
+ .footer-col { width: calc(100% - (30px / 2)); padding: 0 15px; }
+ .footer-col:first-child { padding-right: 15px; padding-left: 0; }
+ .footer-col:last-child { padding-right: 0; padding-left: 15px; } }
+
+
+.post-list { margin-left: 0; list-style: none; }
+.post-list > li { margin-bottom: 30px; }
+
+.post-meta { font-size: 14px; color: #828282; }
+
+.post-link { display: block; font-size: 1.5rem; }
+
+/* end from minima style */
diff --git a/draft-321.md b/draft-321.md
new file mode 100644
index 00000000..0b80db4b
--- /dev/null
+++ b/draft-321.md
@@ -0,0 +1,37 @@
+---
+permalink: /draft-321/
+layout: page-2
+title: 3-2-1
+description: draft
+byline: by Jameson Quinn and Paretoman
+twuser: bettercount_us
+---
+{% include letters.html %}
+
+## 3-2-1 voting
+
+In 3-2-1 voting, voters rate each candidate "Good", "OK", or "Bad". To find the winner, you first narrow it down to three semifinalists, the candidates with the most "good" ratings. Then, narrow it further to two finalists, the candidates with the fewest "bad" ratings. Finally, the winner is the one preferred on more ballots.
+
+3-2-1 voting is another method that avoids the chicken dilemma by addressing scoring strategies.
+
+3-2-1 voting is doing something similar to STAR by adding a second additional round of counting votes. It's kind of like there are two rounds of counting approval ballots and one round of counting preference ballots. The first round of approval just counts "good". The second round counts "good" and "okay".
+
+Important todo: I haven't put good strategies into 3-2-1 yet. Right now, these strategies are okay for this example, but other examples might not be correct.
+
+{% include sim.html
+link="[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSy2oDMQz8F59NsWTZ1u65n5Dbsoe22ZJASEIelFLab6_kIS2lhD2M9djxjKyPkMI4TXWIpGWOE5VqJ7YTF_45SWSheY6BvJmSRsrJ4xzGFIOEMXxRDjGUMFIM1bqs2AxS_PdZRe9WhrsVSv0ucgnVRGbPMXKQQQIogNq1kKkgMbQ7HYZe5NQjpt7DDAANCyKjyQYVyYZIERkLm3ufHZs-8lGAKzNK4MrgysY1Ueyft1b0gDPDM0WO7kmc1LvEnbpz4dvBSKfeI_1P-UsrcCwNjwKpMvRkwfQKASCyZABEFjxegeHSUNN-U4HhmgCwWjH9Cqu1dBsur4KiQkHFyBsUNPzboKBlRHi5hpdrt_1pKOrvfKJ4HpY0AagzKcQoxCgIFYQKPQo-hSx1WQ_FVg7Cnp92u8Nl9X5cbJtXm9Oy2D6fN4e3x-X8ctoeL9vD3vf8ul8vr9v9sg6f3_tmOp49AwAA)"
+title = "3-2-1 Strategy"
+caption = "These strategies try to give frontrunners their own score with three levels of support."
+id = "ballot10"
+comment = "one-voter 3-2-1"
+%}
+
+Here again, the game of chicken is not being played anymore. The Frontrunner strategy doesn't change the result from Normalize strategy. Candidates wouldn't have to go negative against their nearby rivals in order to ensure that their voters would at least be moderately strategic and wouldn't just normalize.
+
+{% include sim.html
+link="[link](http://127.0.0.1:4000/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3WSQWoDMQxF7-K1KJZkyXbOkV2SRQsJXQRSSjelNGevrE9gSimz-CNL_n6S_VVq2R0OLEzc5okOzIO41_U3G7HN04kKZw07RV3WxN9oWWNRY6tGy65SaWVX7qyFimXssTOSPSSMRWgK1e0XyRHJSn--yMx_M1zTnhcZM7mTz7UsWNaFcSy3y-VYgoUDi0PAxA4JKG6hcb6GxGFCRcI4FoVzhwgEzQlsxHKDwEY6ooEILlqTnEnWZOCl8FLNeoWX2mogCnkVOjbDUefGo9XHKFbA20A2Dk23QUuftj2ieR7bOm4L0G3momGmxhBJGFMIcM0gaN06cuP3tA0z8ApB946bcUzSLTvQIHJ4OVB8pnSgdOztQOmKqCGHy-yPF9aRHI-hkVJb6-htVAgMB2AGYAbmNCxPGeAZ8BvAGgvryeJFAuzl-Xq9few_387R-v71_Xwu3z-WC-vnSwMAAA)"
+title = "Not Playing Chicken with 3-2-1 Voting"
+caption = ""
+id = "election14"
+comment = "chicken with 3-2-1"
+%}
\ No newline at end of file
diff --git a/draft-common-ground.md b/draft-common-ground.md
new file mode 100644
index 00000000..611e1406
--- /dev/null
+++ b/draft-common-ground.md
@@ -0,0 +1,53 @@
+---
+permalink: /draft-common-ground/
+twuser: paretoman1
+byline: 'By Paretoman and Contributors, May 2020'
+description: An Explorable Guide to Group Decision Making
+banner: Smart Voting Simulator
+layout: page-3
+title: Home
+---
+{% include letters.html %}
+
+Let's start off by explaining what we want from a group decision. I explain in this video:
+
+{% include video.html url='https://www.youtube.com/embed/hUYLTh_aSTE' %}
+
+To find common ground, you have to allow people to vote with more than one candidate.
+
+Now that we talked about what we want, let's talk about how we can build something and get there. Take a look at this great interactive sketch that Nicky Case made. You have two candidates {{ A }} {{ B }} and you have a voter . Just move the voter and you'll see that he is just gonna vote for whoever he's closest to.
+
+{% include sim-intro.html id='model1' caption='`click & drag the candidates and the voter:`' %}
+
+You can add more voters and see that you kinda get a sense of how voters are gonna vote as they move around and how an election with those voters would go. Most votes wins.
+
+{% include sim-intro.html id='model2' caption='`drag the candidates & voters around. (to move voters, drag the middle of the crowd) watch how that changes the election:`' %}
+
+In this kind of voting, you get a single choice for who you want to win. The ballot is pretty simple. This is the way the ballot is now.
+
+{% include sim-ballot.html title='SINGLE CHOICE VOTING' caption='Also called First Past the Post.' id='ballotSingle' link='[link](http://127.0.0.1:8000/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRQWrEMAz8i84-RLZkJzn3AT30FnLYdlMaCNllN0tZSvv2Sp4WCiUEIsmSxjPjD2qoH4aSA0sZw8DKlollkT3TcQzEPsKlDdy2Xifqm0BS_0o9B8o20YR_n82W3U672-l2O9zUS9kZeRlRghCDEStCrszYCLBYtOuSha42o-HYYeQ6EyMCYKKg0roQMw4LqhaVoUTzoalE2S0BUgJSAlICUjKkwczEYMYq8BKkcojWEofzGXF5Llfib2KAQ_JE6p78hRQolYJnAUXp6qHCMGUE0FPQ058XxBMqhGqp_BR2KYTmBgEiM1zPQMlaJTi5DIgMBhlWFzAo2C2xIj0fluW0Pd3PE_X0uNwuh2Xe7hTo-nZ6f5iuL5f5vM2n1bpft_U4vc7rdKTPbxSiHLmuAgAA)' %}
+
+So, what would the suggestions that I made look like? With ranking, this is what the ballot would look like. And it would be counted a little differently. You count for each pair. For each pair, most votes wins. And if somebody goes undefeated, they win the election.
+
+{% include sim-ballot.html title='PAIR-WISE RANKED VOTING' caption='`again, click & drag`' id='ballotPair' link='[link](http://127.0.0.1:8000/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRQU7EMAz8i885xE7stD3zAsSt6mFhi6hYtSt2EUII3o6T0UpIqMrBsceezDhfFGkYR-uCsE5hZNXAHftNNHqtTFMgri2cUuAkNU80xECZhj6Q0sCBzDti-He8t-wi3S7S7yIc29NcFdVUkEIQZwRFsKaMXQBnj_5c8tA3UJzHi8KtRwQBNJKRaRsQQ7Eg65A5i_geYhPKdSVgSmBKYEpgSs40cmA0GkbBl2CVgziUK13tydVetZvldkk3KLe5_Jcyw2ku-BZIzH0rKhamjAB5CnmKfSm-UGFUwaJYl8KoRQSYNGzdwGLaLCQXYqAwKDCsukBBwWyBgsfD6bRdHz7PMw10f1hf5yMFurxsH3fz5eltOV-XbXXo5309zs_L6vD3L0JAR1KrAgAA)' %}
+
+And here's approval voting. You can add more candidates and more voters and see how they vote. Approval lets you pick as many candidates as you like. Still, most votes wins.
+
+{% include sim-ballot.html title='APPROVAL VOTING' caption='`yup, stiiiiill click & drag`' id='ballotApproval' link='[link](http://127.0.0.1:8000/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRwUrFQAz8lz3vockm2bY3wU_wVnp4-ioWSlveeyoi-u1mdxAEKT1MssnOzkw_QxP6YcgWSfIYB1LySrxiKpWOYwxUVii3kdq29Cn0TQwSenJQhxjMV5r47_PlfDhpDyfd4YSa-jYVSaVltFBEAlCAVWXkAkgc_bnk0NUhO48fMtUdZgBoWNBpvcCGw4yuRecs7EE0VSiVTMCUwJTAlMCUnGnwNLFouAq-BKsU2UdS6MqOFHvFrvBv4YRDKoXUe_KXUuBUMv4LJEpXDxWBKQEgTyFPkZfiFyqMaq76FHEpjFoDgElD6gYW02qhiDNQGBQYos5QkHE3c2V6PC3Ldnv42KfQh7t9v2xvpyXEcH3Z3u-n69Nl3m_ztvrw-3U9T8_zOp3D1w9Qth21rgIAAA)' %}
+
+And if you want to see, here's score voting. It's just kind of a more specific form of approval voting.
+
+{% include sim-ballot.html title='SCORE VOTING' caption='you guessed it' id='ballotScore' link='[link](http://127.0.0.1:8000/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VRQWrDQAz8y551sLSS1va5P2huxoc2cWkgxCFJKaW0b692h0KhGB9mtZJmZ8afqUvjNJVC3NtME-tA7B4n4Uw88DxT4jrCotRLLXMaO0qaRmZKFkDJY6Kjf18Ml81Ov9kZNjvctbe5KqqloIQiVoABvCnjEMAaGM_lgKE1JXjiUrjNiABAI4rK2oI4LguqHlWwSATRNaFcMwFTBlMGUwZTDqaJiTHoWAVfhlUmiZZWujqj1V61q_J7CMIp14O2Pf1LqXCqBf8FEnVol4bAjAGQZ5BnyMvwCw1GrTR9hrgMRr0DwKQjdQeLW7NQxTkoHAocURcoKNgt0pien06n9b77uCxpTI_79bokSrfX9f1hue2vx8v9uJ6j8_12Piwvx_NySF8_76woUaoCAAA)' %}
+
+And those are the basic vote-tallying methods. You just need to add the rule that the person with the highest tally wins. And now you've got a basic voting method that solves a lot of problems.
+
+The spoiler effect is one of those problems. Even though {{ B }} should win, the election system is spoiling this. But if you use approval or condorcet or score, then it'll work out.
+
+{% capture cap2 %}drag {{ C }} to just under {{ B }} to create a spoiler effect. then compare these four different voting methods:{% endcapture %}
+
+{% include sim-test.html title='' caption=cap2 id='election31' %}
+
+There's a lot of details, but that's the gist of it.
+
+Putting it all together, here's a sandbox for you to try out all the different systems and to make your own scenarios:
+
diff --git a/draft-digression-median-systems.md b/draft-digression-median-systems.md
new file mode 100644
index 00000000..84dc6a8a
--- /dev/null
+++ b/draft-digression-median-systems.md
@@ -0,0 +1,27 @@
+---
+permalink: /draft-digression-median-systems/
+layout: page-2
+title: 3-2-1
+description: draft
+byline: by Jameson Quinn and Paretoman
+twuser: bettercount_us
+---
+## Digression: median systems
+
+[skip this digression](newer#lightly-strategic-voting-normalization)
+
+Ever watched the Olympics? In events like figure skating, there are a number of Olympic judges from different countries. In order to prevent any one judge from having too much influence, they use a "trimmed mean": they throw away the highest and lowest scores before they take the average.
+
+Olympic judges are supposedly supposed to be unbiased. But for voters, there's nothing wrong with having political opinions. (I mean, obviously your opinions, dear reader, are the best, and everybody else should just listen to you. But much as I'd like to, I can't force them to.) So let's imagine voting used the olympic system.
+
+Throwing away just one highest and lowest score, with thousands or millions of voters, obviously wouldn't make an appreciable difference. So we'd have to throw away some more scores. And, why not? Let's throw away a few more while we're at it.
+
+When should we stop? When there's just 1 or 2 scores left to take the average. But if you do that, most people wouldn't called that a "trimmed mean" anymore; they'd just call it the median, the middle number.
+
+There are several voting methods that use the median to find the winner. (It turns out that can lead to a lot of ties, so you need a tiebreaker system to avoid that.) In the 1910s, over a dozen US cities, starting with Grand Junction, CO, used "Bucklin voting", a median-based system using a hybrid ranked/rated ballot. More recently, voting theorists Balinski and Laraki have proposed Majority Judgment, a median-based method using a rated ballot that's now been used in a number of competitions.
+
+Using the median reduces the incentives for a single voter to strategize. After all, unless you happen to be the exact median rating for a candidate, the only thing that matters about the rating you gave them is whether it's above or below the median.
+
+Still, large groups of voters can still get a strategic advantage. The larger the voting bloc, the greater the chance is that the median rating for a given candidate happens to be a voter in that bloc.
+
+I used to think that median voting methods were the best. But then I did the simulations I'll talk about below, and they were merely OK; not much better outcomes than approval voting, but without the simplicity. I still think they're hugely better than FPTP and a bit better than IRV, but I'm not sold enough on them for it to be worth my time programming them in to Nicky's simulator.
\ No newline at end of file
diff --git a/draft-gerrymander.md b/draft-gerrymander.md
new file mode 100644
index 00000000..bd0967f4
--- /dev/null
+++ b/draft-gerrymander.md
@@ -0,0 +1,41 @@
+---
+permalink: /draft-gerrymander/
+layout: page-3
+title: Condorcet Methods
+banner: Condorcet Methods Explained
+description: An Interactive Guide to Alternative Voting Methods
+byline: By Paretoman and Contributors, June 2019
+twuser: paretoman1
+---
+{% include letters.html %}
+
+I'd like to talk about gerrymandering. Districts are not very good. Drawing districts is bad.
+
+## Intro to Condorcet
+
+This is how you amplify your majority.
+
+{% include sim.html
+link = "[link](https://paretoman.github.io/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSS47FMAi7S9Yswj_pVap3ktHM2YdgdfVUdWETEmOgP2OO6755K7Hoh4ptEvFmTDq52SL1aBZkNoupS73Iw2yRqBwWTLK5mdQLazbJ1D8fGnwqScWy48Q6rknDxjX-5qDhHUZdqlwWTPr6KrNeM_s1w9UkF3DfUMpzJl2P4YINABMcgHLBVlg1-cS7j6XU6lS4RaV0pEARGaB0tAA6kogWot0PdLYZPoPgTigcqSIPR1pKN9PXd54FLkJd0X5toBo0cgpKWrTronWpQ_gh8pAqdush1ir2Xs6qnBck1oZmbHe_PjtyNOIYiWO0jkYco3WMxBNXVld1jCQmAIMNjCOgEo7dlZGARMBBYCkJB4m3KQAsJeEg4SCfXyyRXM_czhnaWRBbaGfByIKRZW1yOeDs4PcfK4WSAkYDAAA)"
+title = "Amplify Majority"
+caption = ""
+comment = ""
+id = "1" %}
+
+Ideally, we would draw districts to exactly match the voters.
+
+{% include sim.html
+link = "[link](https://paretoman.github.io/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSu2pDMQz9F88aLMmy7HxFh24hQwodChdaSjqE0n57ZZ0GQkK4w9HDko6O7nepZbff8zSaeqAwnKS2tCYpz7CkOjVZWWEmEw9LTWmONBoJw-qk0tOKAvZ_y0QOByq85lgdNNZjNzJeb2VyVNl6GwOlriR7jfq-qrTsKpVWduW3FiqWbo9WkfOASndfZMbDzHyY4RCCAzhfKPmKSc5jsOAGAAnugGDBLTBm8vJnhiW6RVQ4m0r0kQCF1wDRRwPQRxzegDezQGuS4SUEZ0LBSBV5MNLotGe6-1ZZx0N0V6zPJLFgI6NOToPiyKXVa2VWgG8DchvQ67Er0HJKe0ynBR0LcJwVy7aZelhNz7CoQTKD9AbJDNIbJDPHk5FTDZL1CoDwHXJ1dOmG2waRjhYdDDqO5mDgqHUB4GgOqR0M_PILOpLjouuKYZ2BZgPrDBAZIDJakhwGwI1ejtv2fno-f7zG3_60fX0et7fTufz8Ab6TmCGjAwAA)"
+title = "Votes Match Seats"
+caption = ""
+comment = ""
+id = "2" %}
+
+Candidates could match voters a little better.
+
+{% include sim.html
+link = "[link](https://paretoman.github.io/ballot/sandbox/?v=2.5&m=H4sIAAAAAAAAA3VSu2pDMQz9F88aLMmy7HxFh24hQwodChdaSjqE0n57ZZ0GQkK4w9HDko6O7nepZbff8zSaeqAwnKS2tCYpz7CkOjVZWWEmEw9LTWmONBoJw-qk0tOKAvZ_y0QOByq85lgdNNZjNzJeb2VyVNl6GwOlriR7jfq-qrTsKpVWduW3FiqWbo9WkfOASndfZMbDzHyY4RCCAzhfKPmKSc5jsOAGAAnugGDBLTBm8vJnhiW6RVQ4m0r0kQCF1wDRRwPQRxzegDezQGuS4SUEZ0LBSBV5MNLotGe6-1ZZx0N0V6zPJLFgI6NOToPiyKXVa2VWgG8DchvQ67Er0HJKe0ynBR0LcJwVy7aZelhNz7CoQTKD9AbJDNIbJDPHk5FTDZL1CoDwHXJ1dOmG2waRjhYdDDqO5mDgqHUB4GgOqR0M_PILOpLjouuKYZ2BZgPrDBAZIDJakhwGwI1ejtv2fno-f7zG3_60fX0et7fTufz8Ab6TmCGjAwAA)"
+title = "Votes Match Seats"
+caption = ""
+comment = ""
+id = "3" %}
\ No newline at end of file
diff --git a/draft-intro.html b/draft-intro.html
new file mode 100644
index 00000000..60df5dbd
--- /dev/null
+++ b/draft-intro.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ To Build an Even Better Ballot?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
My name is Jameson Quinn. If spending 10,000 hours on something makes you an expert, then I'm easily an expert on voting methods. And right here in your browser, I want to give you a tool that can help you think like an expert on this in a whole lot less than 10,000 hours. If you read all the way through this page, you'll be well on your way. You'll know a lot about voting methods, and you'll understand in a very intuitive way how much this knowledge could be used to make politics healthier.
+
+
I think this tool is a lot of fun and I'm really excited to share it with you. But before I do, I should acknowledge the people who have made this possible. Nicky Case made the first version; Pareto Man did most of the work on the current one; and some of the key ideas come from Ka-Ping Yee and Warren Smith. There's more acknowledgements at the bottom. If you want to be part of this chain of awesomeness, this is all open source, so you're free to make it even better. You can also support Electology.org, aka the Center for Election Science, a nonprofit that works on these issues.
+
+
So, let's get started.
+
+
If you live in the US (or Canada or the UK, for that matter), you've probably read plenty of depressing or scary articles about politics recently. There are a lot of problems in politics, and it can seem hopeless. How can we possibly fix it all?
+
+
I want to show you how democracy itself can be fixed. Doing that wouldn't immediately fix all the other problems. But it would make fixing everything else substantially easier.
+
+
In order to see how to fix democracy, you have to understand how it's broken, right at its root: we're doing voting wrong. Choose-one plurality voting, the voting method we have in most big English-speaking countries, is just about the worst voting method ever used. It's easy to see why other methods are better. It doesn't take complicated rules to improve on choose-one plurality; approval voting is arguably even simpler, and better in every way.
+
+
Once I've shown you that, I'll move on to part II, where I'll get into some of the more complex elements of voting theory (aka social choice theory; a subfield of game theory). I'll discuss strategic voting, and show you several other voting methods, such as score voting, IRV, Condorcet, Star, and 3-2-1. I'll discuss some of the strengths and weaknesses of these methods, and let you play with the examples that have convinced me which methods are better for which situations — approval for simplicity, 3-2-1 or Star for a balance betwen expressiveness and robustness against strategy, and score for situations where the voters share common end goals and are merely voting on the best means to those goals — and which are usually worse — plurality worst of all, but IRV not too much better.
+
+
Imagine your town is planning to buy one fire truck of a fancy new kind, and they're having a vote to decide which firehouse to keep it at. Every voter wants it kept as close to their home as possible, so it can arrive quickly in case of a fire.
+
+
How would you vote? It's a trick question. How you'd vote depends on what voting method is being used. Let's start with choose-one plurality voting, where you're only allowed to, um, choose one. Here's a simple example, so you can play around with it; drag the shapes/candidates/firehouses and the voter/home representing you and see what happens to the ballot.
+
+
+
+
Say that everyone votes like that; a simple, honest assesment of which candidate is closest, without strategizing about other voters. Here's how it might come out:
+
+
+
+
This is an easy voting situation to visualize, because all that matters is where the candidates (firehouses) and voters (homes) are physically. In real life, of course, it's not so much your physical location that matters, but your "location" on ideology and/or issues; and that's hard to even define or know, much less draw on a neat 2-dimensional map. But these 2D let us show pretty much all the interesting kinds of things that can happen. So now I'll stop saying "firehouse" and "home" and just say "candidate" and "voter".
+
+
So what's wrong with this voting method? Well, anyone who doesn't vote for one of the two frontrunners has no say in which of them wins; their vote is essentially wasted. So if two candidates are similar, they "split the vote" and "spoil the election" so that neither one of them wins. For instance, in the election above, reset and then try moving the hexagon close to the square. Hexagon steals votes from Square and so Triangle wins!
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/essay/essay-dec-5.html b/essay/essay-dec-5.html
index 227d67ee..66366ea1 100644
--- a/essay/essay-dec-5.html
+++ b/essay/essay-dec-5.html
@@ -3,8 +3,8 @@
-
-essay
+
+ essay
@@ -12,236 +12,236 @@
-
No, this is not about the 2016 U.S. election. Not just that, anyway.
+
No, this is not about the 2016 U.S. election. Not just that, anyway.
-
First, I need to explain a weird glitch in our voting system.
-Let's say there's two candidates, Steven Square () and Tracy Triangle (), on a couple political axes. (for example, “left vs. right” and “globalist vs. nationalist”) Let's also say there's a voter () simply votes for whoever's political position is closest. What would that look like?
+
First, I need to explain a weird glitch in our voting system.
+ Let's say there's two candidates, Steven Square () and Tracy Triangle (), on a couple political axes. (for example, “left vs. right” and “globalist vs. nationalist”) Let's also say there's a voter () simply votes for whoever's political position is closest. What would that look like?
-
drag the candidates & voter around, and see how that changes their vote:
+
drag the candidates & voter around, and see how that changes their vote:
-
It's a tough choice. Triangle's got some sharp points, but Square sees things from more sides. But in the end, you can only vote for one.
+
It's a tough choice. Triangle's got some sharp points, but Square sees things from more sides. But in the end, you can only vote for one.
-
Of course, there's more than just one voter in an election. (one would hope so, anyway!) Let's simulate what an election would look like with 100+ voters.
+
Of course, there's more than just one voter in an election. (one would hope so, anyway!) Let's simulate what an election would look like with 100+ voters.
-
drag the candidates & voters around, and see how that changes the election:
+
drag the candidates & voters around, and see how that changes the election:
-
Now let's consider a different election. Say Tracy Triangle is already beating Steven Square in the polls, and a third candidate, Henry Hexagon (), sees this. (Hexagon's supporters like how he tackles problems from more angles) Inspired by her success, Hexagon swoops in and takes a political position close to Triangle's.
+
Now let's consider a different election. Say Tracy Triangle is already beating Steven Square in the polls, and a third candidate, Henry Hexagon (), sees this. (Hexagon's supporters like how he tackles problems from more angles) Inspired by her success, Hexagon swoops in and takes a political position close to Triangle's.
-
Now, you'd think giving the voters more of what they want should result in a better choice, or at least, not result in a worse choice, right? Well...
+
Now, you'd think giving the voters more of what they want should result in a better choice, or at least, not result in a worse choice, right? Well...
-
at first, beats .
-drag to just under ,
-and see what happens:
+
at first, beats .
+ drag to just under ,
+ and see what happens:
-
That's right. Steven Square, our least popular candidate, now wins! This is because when you have two good candidates, they "steal" votes from each other, letting a bad third candidate win.
+
That's right. Steven Square, our least popular candidate, now wins! This is because when you have two good candidates, they "steal" votes from each other, letting a bad third candidate win.
-
This is called the spoiler effect. The most famous real-world example of this was in 2000, when Ralph Nader "stole" votes from Al Gore, letting George Bush win. And though the spoiler effect didn't play a big role in 2016, its impact could still be felt.
+
This is called the spoiler effect. The most famous real-world example of this was in 2000, when Ralph Nader "stole" votes from Al Gore, letting George Bush win. And though the spoiler effect didn't play a big role in 2016, its impact could still be felt.
-
In the Republican primary, one anti-establishment nominee – Trump – ran against sixteen GOP establishment nominees, who all "stole" votes from each other, letting Trump grab the nomination, easily. As for the Democratic primary, fear of splitting the vote prevented Sanders from running as independent. And to cap it all off, there was always the worry that other candidates like Johnson, Stein, and McMullin could spoil the election.
+
In the Republican primary, one anti-establishment nominee – Trump – ran against sixteen GOP establishment nominees, who all "stole" votes from each other, letting Trump grab the nomination, easily. As for the Democratic primary, fear of splitting the vote prevented Sanders from running as independent. And to cap it all off, there was always the worry that other candidates like Johnson, Stein, and McMullin could spoil the election.
-
But again, this is not about the 2016 U.S. election.
+
But again, this is not about the 2016 U.S. election.
-
This is about designing a democracy that people can trust.
+
This is about designing a democracy that people can trust.
-
Despite so much hoopla around the 2016 election, a full half of Americans did not vote. Even of those who voted for Clinton/Trump, over 20% of them said their candidates were untrustworthy, and voted for them anyway. And around the world, people's trust in their governments – or the trustworthiness of their governments – has never been lower. It's more than America at stake. It's every democracy in the world.
+
Despite so much hoopla around the 2016 election, a full half of Americans did not vote. Even of those who voted for Clinton/Trump, over 20% of them said their candidates were untrustworthy, and voted for them anyway. And around the world, people's trust in their governments – or the trustworthiness of their governments – has never been lower. It's more than America at stake. It's every democracy in the world.
-
...so yeah, no pressure.
+
...so yeah, no pressure.
-
Rebuilding trust is a complex problem with no easy solutions – but I think there is an easy first step. It's a step that could get rid of our “lesser of two evils” problem, and give us citizens more choices, better choices. And yet, it won't be as daunting as fixing campaign finance or gerrymandering or political gridlock, no, it'd just require changing a piece of paper, and how we count those pieces of paper.
+
Rebuilding trust is a complex problem with no easy solutions – but I think there is an easy first step. It's a step that could get rid of our “lesser of two evils” problem, and give us citizens more choices, better choices. And yet, it won't be as daunting as fixing campaign finance or gerrymandering or political gridlock, no, it'd just require changing a piece of paper, and how we count those pieces of paper.
-
This idea is not the most important issue. It won't solve everything. But as a first step? It'd give us the biggest bang-for-buck.
+
This idea is not the most important issue. It won't solve everything. But as a first step? It'd give us the biggest bang-for-buck.
-
Let's talk about how to build a better ballot.
+
Let's talk about how to build a better ballot.
-
+
-
Lemme address a couple concerns first.
+
Lemme address a couple concerns first.
-
First objection. Why would the people in power wanna change the voting system that got them in power? Well – the spoiler effect has historically hurt both major parties, not just the minor parties. Getting rid of that glitch would be a win-win-win! Also, voting reform is already picking up steam worldwide. Just last month, Maine adopted Instant Runoff Voting, and Justin Trudeau, Cutie-In-Chief of Canada, will be moving his nation towards a better voting system in 2017.
+
First objection. Why would the people in power wanna change the voting system that got them in power? Well – the spoiler effect has historically hurt both major parties, not just the minor parties. Getting rid of that glitch would be a win-win-win! Also, voting reform is already picking up steam worldwide. Just last month, Maine adopted Instant Runoff Voting, and Justin Trudeau, Cutie-In-Chief of Canada, will be moving his nation towards a better voting system in 2017.
-
Second objection. Didn't some guy prove that all voting systems will be unfair? Not quite. You're thinking of the infamous Impossibility Theorem by Kenneth Arrow, the mathematician in the 1950's who founded the whole study of voting systems!
+
Second objection. Didn't some guy prove that all voting systems will be unfair? Not quite. You're thinking of the infamous Impossibility Theorem by Kenneth Arrow, the mathematician in the 1950's who founded the whole study of voting systems!
-
But 1) some voting systems can still be more fair than others, even if none are perfect. And 2) that's actually a misconception – Kenneth Arrow's proof only applies to voting systems where you rank candidates. His proof doesn't cover voting systems where you don't rank candidates. We'll see a couple of those, later – along with a few of the most popular alternatives to our current, glitchy voting system.
+
But 1) some voting systems can still be more fair than others, even if none are perfect. And 2) that's actually a misconception – Kenneth Arrow's proof only applies to voting systems where you rank candidates. His proof doesn't cover voting systems where you don't rank candidates. We'll see a couple of those, later – along with a few of the most popular alternatives to our current, glitchy voting system.
-
But first, let's take a closer look at the voting system we do have:
+
But first, let's take a closer look at the voting system we do have:
-
FIRST PAST THE POST (FPTP)
+
FIRST PAST THE POST (FPTP)
-
// ballot
+
// ballot
-
How To Count: Simply add up the votes. Whoever gets the most votes, wins.
+
How To Count: Simply add up the votes. Whoever gets the most votes, wins.
-
Sounds logical enough. But as you saw earlier, it can lead to a weird glitch, where having two good candidates can make the election go to a third bad candidate. This is why some people vote "strategically", voting not for their actual honest favorite, but voting for the lesser of two evils. And strategic voting is fine – but! – ask yourself this: how can we expect our elected officials to be honest, when our voting system itself doesn't let us be honest?
+
Sounds logical enough. But as you saw earlier, it can lead to a weird glitch, where having two good candidates can make the election go to a third bad candidate. This is why some people vote "strategically", voting not for their actual honest favorite, but voting for the lesser of two evils. And strategic voting is fine – but! – ask yourself this: how can we expect our elected officials to be honest, when our voting system itself doesn't let us be honest?
-
So, to fix the spoiler effect, other voting systems have been suggested. Such as...
+
So, to fix the spoiler effect, other voting systems have been suggested. Such as...
-
RANKED VOTING
+
RANKED VOTING
-
// ballot
+
// ballot
-
How To Count: There's actually several different suggestions for how to count these kinds of ballots. Here, I'll just show you the three most popular:
+
How To Count: There's actually several different suggestions for how to count these kinds of ballots. Here, I'll just show you the three most popular:
-
Instant Runoff Voting (IRV): This one is the most popular alternative to First Past The Post. Australia and Ireland use them in national elections. Maine adopted it just last month. And Justin Trudeau, Prime Man-ister of Canada, is seriously considering it.
+
Instant Runoff Voting (IRV): This one is the most popular alternative to First Past The Post. Australia and Ireland use them in national elections. Maine adopted it just last month. And Justin Trudeau, Prime Man-ister of Canada, is seriously considering it.
-
Instant Runoff is a bit more complicated than First Past The Post, but here's how it works:
+
Instant Runoff is a bit more complicated than First Past The Post, but here's how it works:
-
-
Count up the #1 choices.
-
If someone has more than 50%, they win! END.
-
If not, eliminate the last-place loser.
-
Run a new "round" of the election, minus that loser.
-
Repeat until someone has 50% or more.
-
+
+
Count up the #1 choices.
+
If someone has more than 50%, they win! END.
+
If not, eliminate the last-place loser.
+
Run a new "round" of the election, minus that loser.
+
Repeat until someone has 50% or more.
+
-
If that seems like too much, there is a simpler method for counting ranked ballots...
+
If that seems like too much, there is a simpler method for counting ranked ballots...
-
Borda Count: Simply add up the rank numbers. Like in golf, whoever has the lowest score, wins. Borda count is used in Slovenia, and a bunch of tiny islands in Micronesia.
+
Borda Count: Simply add up the rank numbers. Like in golf, whoever has the lowest score, wins. Borda count is used in Slovenia, and a bunch of tiny islands in Micronesia.
-
But if you want an even nerdier way of voting, you could try...
+
But if you want an even nerdier way of voting, you could try...
-
Condorcet Method: Run a simulated "election" between every pair of candidates, using the info on voters' ballots. IF there's a candidate who beats all other candidates in one-on-one "elections", that candidate wins the real election. However, that's a very big "IF". (as we'll see later...) The upside is, when this method does pick a winner, it's always the “theoretically best” candidate! Currently, this method is not being used by any governments, and is only being used by neeerrrds.
+
Condorcet Method: Run a simulated "election" between every pair of candidates, using the info on voters' ballots. IF there's a candidate who beats all other candidates in one-on-one "elections", that candidate wins the real election. However, that's a very big "IF". (as we'll see later...) The upside is, when this method does pick a winner, it's always the “theoretically best” candidate! Currently, this method is not being used by any governments, and is only being used by neeerrrds.
-
So, those are the voting systems where you rank candidates. (The ones that magic math man Kenneth Arrow proved would always be unfair in some big way!) But what about voting systems where you don't rank candidates? They're less well-known, but at least now you'll know 'em:
+
So, those are the voting systems where you rank candidates. (The ones that magic math man Kenneth Arrow proved would always be unfair in some big way!) But what about voting systems where you don't rank candidates? They're less well-known, but at least now you'll know 'em:
-
APPROVAL VOTING
+
APPROVAL VOTING
-
// ballot
+
// ballot
-
How To Count: Simply add up the approvals. Whoever gets the most approvals, wins.
+
How To Count: Simply add up the approvals. Whoever gets the most approvals, wins.
-
Wait, picking more than one candidate? Doesn't that violate the one-vote-per-person rule? I hear you ask. Well, your vote was never a single check mark, your vote was always the whole ballot. And on this ballot, you get to honestly express all the candidates you approve of, not just your favorite or strategic second-favorite.
+
Wait, picking more than one candidate? Doesn't that violate the one-vote-per-person rule? I hear you ask. Well, your vote was never a single check mark, your vote was always the whole ballot. And on this ballot, you get to honestly express all the candidates you approve of, not just your favorite or strategic second-favorite.
-
But if you want a more expressive voting system, why not try...
+
But if you want a more expressive voting system, why not try...
-
SCORE VOTING
+
SCORE VOTING
-
// ballot
+
// ballot
-
How To Count: Simply add up the ratings. Whoever has the highest average score, wins. Kind of like Amazon reviews, but with democracy. (Note: this is not ranking, because two candidates can have the same score.)
+
How To Count: Simply add up the ratings. Whoever has the highest average score, wins. Kind of like Amazon reviews, but with democracy. (Note: this is not ranking, because two candidates can have the same score.)
-
So them's our top 6 voting systems: the one we use, and five popular alternatives. But how can we tell if these alternatives are actually better? What glitches might they have? And which voting system – if any – can we say is "the best"?
+
So them's our top 6 voting systems: the one we use, and five popular alternatives. But how can we tell if these alternatives are actually better? What glitches might they have? And which voting system – if any – can we say is "the best"?
-
Like before, let's simulate 'em.
+
Like before, let's simulate 'em.
-
+
-
Remember that simulation of the spoiler effect from earlier? Well, here it is again, but now you can switch between the six different voting systems! Here's the "spoiler effect" simulation again. Move candidates & voters around, and see how different voting systems deal with spoilers:
+
Remember that simulation of the spoiler effect from earlier? Well, here it is again, but now you can switch between the six different voting systems! Here's the "spoiler effect" simulation again. Move candidates & voters around, and see how different voting systems deal with spoilers:
-
drag blah blah blah
+
drag blah blah blah
-
// election 1 - spoiler redux
+
// election 1 - spoiler redux
-
As you could see, every voting system except First Past The Post is immune to the spoiler effect. So, that's it, right? Ding dong, the glitch is dead? Just pick any other alternative voting system and be done with it?
+
As you could see, every voting system except First Past The Post is immune to the spoiler effect. So, that's it, right? Ding dong, the glitch is dead? Just pick any other alternative voting system and be done with it?
-
But, alas. In getting rid of one glitch, some of these alternative voting systems create other glitches – for some, the cure is even worse than the disease.
+
But, alas. In getting rid of one glitch, some of these alternative voting systems create other glitches – for some, the cure is even worse than the disease.
-
For example, here's a sim of Instant Runoff Voting. In the beginning, Tracy Triangle () is already winning, and you're going to move the voters even closer to her. Obviously, if a candidate is already winning an election and becomes even more popular, they should still win afterwards, right?
+
For example, here's a sim of Instant Runoff Voting. In the beginning, Tracy Triangle () is already winning, and you're going to move the voters even closer to her. Obviously, if a candidate is already winning an election and becomes even more popular, they should still win afterwards, right?
-
You can probably guess where this is going...
+
You can probably guess where this is going...
-
// election 2 - irv
+
// election 2 - irv
-
What happened? At first, (Hexagon) is eliminated in the first round, so (Triangle) goes against a weaker (Square), and wins. But when you move the voters closer to (Triangle), the loser changes. Now, (Square) is eliminated in the first round, so (Triangle) goes against a stronger (Hexagon), and loses.
+
What happened? At first, (Hexagon) is eliminated in the first round, so (Triangle) goes against a weaker (Square), and wins. But when you move the voters closer to (Triangle), the loser changes. Now, (Square) is eliminated in the first round, so (Triangle) goes against a stronger (Hexagon), and loses.
-
Under Instant Runoff, it's possible for a winning candidate to lose, by becoming more popular. What a glitch.
+
Under Instant Runoff, it's possible for a winning candidate to lose, by becoming more popular. What a glitch.
So, not only is Instant Runoff's glitch as undemocratic as First Past The Post's glitch, it's possibly worse – because while FPTP's counting method is simple and transparent, Instant Runoff is anything but. And a lack of transparency is even deadlier nowadays, when our trust in government is already so low.
+
So, not only is Instant Runoff's glitch as undemocratic as First Past The Post's glitch, it's possibly worse – because while FPTP's counting method is simple and transparent, Instant Runoff is anything but. And a lack of transparency is even deadlier nowadays, when our trust in government is already so low.
-
So much for Instant Runoff. What about the second-most-popular alternative, Borda Count? In this next simulation, you move a losing candidate closer to another losing candidate. Under First Past The Post, the spoiler effect would split their votes, making both of them lose even more. But watch what happens under Borda Count instead...
+
So much for Instant Runoff. What about the second-most-popular alternative, Borda Count? In this next simulation, you move a losing candidate closer to another losing candidate. Under First Past The Post, the spoiler effect would split their votes, making both of them lose even more. But watch what happens under Borda Count instead...
-
// election 3 - anti-spoiler effect
+
// election 3 - anti-spoiler effect
-
Yup. Borda Count has a reverse spoiler effect. Instead of one good candidate hurting another good candidate by moving closer, with Borda Count, one bad candidate can help another bad candidate by moving closer.
+
Yup. Borda Count has a reverse spoiler effect. Instead of one good candidate hurting another good candidate by moving closer, with Borda Count, one bad candidate can help another bad candidate by moving closer.
-
Here's what happened: at first, some voters felt (Square) > (Triangle) > (Hexagon), but when you moved (Hexagon) closer to (Square), those voters then swung to (Square) > (Hexagon) > (Triangle), hurting (Triangle)'s total count enough to make her lose to (Square).
+
Here's what happened: at first, some voters felt (Square) > (Triangle) > (Hexagon), but when you moved (Hexagon) closer to (Square), those voters then swung to (Square) > (Hexagon) > (Triangle), hurting (Triangle)'s total count enough to make her lose to (Square).
-
Still, Borda's not the worst, and at least it's simpler and more transparent than Instant Runoff. But how does Condorcet Method compare? When Condorcet picks a winner, it's always the “theoretically best” winner – but that's when it picks a winner.
+
Still, Borda's not the worst, and at least it's simpler and more transparent than Instant Runoff. But how does Condorcet Method compare? When Condorcet picks a winner, it's always the “theoretically best” winner – but that's when it picks a winner.
-
So far, I've just been simulating voters as a single group, with a center and some spread. But seeing how polarized politics is nowadays, one could imagine several groups of voters, with totally different centers. Now, Condorcet tries to pick the candidate who beats all other candidates in one-on-one races. But with polarized voters, you could end up with a Rock-Paper-Scissors-like loop, where a majority of voters prefer A to B, B to C, and C to A.
+
So far, I've just been simulating voters as a single group, with a center and some spread. But seeing how polarized politics is nowadays, one could imagine several groups of voters, with totally different centers. Now, Condorcet tries to pick the candidate who beats all other candidates in one-on-one races. But with polarized voters, you could end up with a Rock-Paper-Scissors-like loop, where a majority of voters prefer A to B, B to C, and C to A.
-
In certain situations, the other voting systems just had glitches. In Condorcet, the voting system crashes. Try it out for yourself:
+
In certain situations, the other voting systems just had glitches. In Condorcet, the voting system crashes. Try it out for yourself:
-
// election 4 - create your own cycle
+
// election 4 - create your own cycle
-
Now, in actual practice – not that any government actually uses this voting system – when Condorcet fails to find a winner, it falls back to another method like Borda Count. But if you do that, it'll get the glitches of its backup method. So it goes.
+
Now, in actual practice – not that any government actually uses this voting system – when Condorcet fails to find a winner, it falls back to another method like Borda Count. But if you do that, it'll get the glitches of its backup method. So it goes.
-
First Past The Post. Instant Runoff. Borda Count. Condorcet Method. Those were all the voting systems that use ranking – the ones that our math boy, Kenneth Arrow, proved would always be unfair or glitchy in some big way. What about the voting systems that don't use ranking, like Approval & Score voting? Well...
+
First Past The Post. Instant Runoff. Borda Count. Condorcet Method. Those were all the voting systems that use ranking – the ones that our math boy, Kenneth Arrow, proved would always be unfair or glitchy in some big way. What about the voting systems that don't use ranking, like Approval & Score voting? Well...
-
...I couldn't come up with a simulation to show their flaws. Because, in theory, they don't have many big flaws.
+
...I couldn't come up with a simulation to show their flaws. Because, in theory, they don't have many big flaws.
-
But that's a really, really, really big “in theory!” It may be that, in practice, strategic voters use approval & score voting exactly like First Past The Post – only approving or giving 5 stars to their top candidate, and disapproving or giving 1 star to all others, even if they actually like the others. Thus, strategic voters may not express an honest second choice – but then again, other voting systems like FPTP and IRV punish you for expressing an honest first choice. So, in the end approval & score voting may still be better!...
+
But that's a really, really, really big “in theory!” It may be that, in practice, strategic voters use approval & score voting exactly like First Past The Post – only approving or giving 5 stars to their top candidate, and disapproving or giving 1 star to all others, even if they actually like the others. Thus, strategic voters may not express an honest second choice – but then again, other voting systems like FPTP and IRV punish you for expressing an honest first choice. So, in the end approval & score voting may still be better!...
-
...mmmaybe. We'll need more data before we can be certain. So, here's a graph from an academic paper. I can tell it was made by real academics, because it's makin' my eyes bleed:
+
...mmmaybe. We'll need more data before we can be certain. So, here's a graph from an academic paper. I can tell it was made by real academics, because it's makin' my eyes bleed:
-
+
-
oh god, is that a drop shadow
+
oh god, is that a drop shadow
-
Anyway, this graph shows the results of 2.2 million simulations – simulations similar to the ones you played above! The first thing to note is that strategic voting makes voters less happy than honest voting – in all voting systems! I was surprised when I first learnt that. But it makes sense if you think about, say, a room full of people trying to talk. Any person can be "strategic" by raising their voice above others, but if everybody is "strategic", nobody can hear anybody anymore, and all you're left with is sore throats and sad peeps.
+
Anyway, this graph shows the results of 2.2 million simulations – simulations similar to the ones you played above! The first thing to note is that strategic voting makes voters less happy than honest voting – in all voting systems! I was surprised when I first learnt that. But it makes sense if you think about, say, a room full of people trying to talk. Any person can be "strategic" by raising their voice above others, but if everybody is "strategic", nobody can hear anybody anymore, and all you're left with is sore throats and sad peeps.
-
But the other thing to note, is which voting systems would make the most people the happiest! If you have mostly honest voters, Score Voting is best. (with Borda Count a close second) And if you have mostly strategic voters, then both Approval & Score Voting are best. (also, with strategic voters, Instant Runoff does just as bad as First Past The Post)
+
But the other thing to note, is which voting systems would make the most people the happiest! If you have mostly honest voters, Score Voting is best. (with Borda Count a close second) And if you have mostly strategic voters, then both Approval & Score Voting are best. (also, with strategic voters, Instant Runoff does just as bad as First Past The Post)
-
However, those are still computer simulations. How would these different voting systems play out in real life? Well, we can't just get the DeLorean up to 88, go back in time before the 2016 election, change the voting system, and see what would happen instead – or can we?!
+
However, those are still computer simulations. How would these different voting systems play out in real life? Well, we can't just get the DeLorean up to 88, go back in time before the 2016 election, change the voting system, and see what would happen instead – or can we?!
-
No, no we can't. But last month, researchers did something close enough. A polling study asked 1,000+ U.S. registered voters to rank & rate the six U.S. presidential candidates, to simulate who would've won the vote (the popular vote, anyway) under different voting systems! The results: under Instant Runoff, Condorcet, and Approval Voting, the winner would've been Hillary Clinton. But under Score Voting, the winner would've been Donald Trump. And under Borda Count, the winner would've been... uh... Gary Johnson?
+
No, no we can't. But last month, researchers did something close enough. A polling study asked 1,000+ U.S. registered voters to rank & rate the six U.S. presidential candidates, to simulate who would've won the vote (the popular vote, anyway) under different voting systems! The results: under Instant Runoff, Condorcet, and Approval Voting, the winner would've been Hillary Clinton. But under Score Voting, the winner would've been Donald Trump. And under Borda Count, the winner would've been... uh... Gary Johnson?
-
?????
+
?????
-
// an election possibility how this could've happened
+
// an election possibility how this could've happened
-
Anyway.
+
Anyway.
-
Before we conclude all this – remember Kenneth Arrow? The infamous mathematician who founded the study of voting systems, and in the 1950's, proved that all ranking-based voting systems would be unfair? Well, in an interview 60 years later, Kenneth Arrow had this to say about what voting method he'd push for, now:
+
Before we conclude all this – remember Kenneth Arrow? The infamous mathematician who founded the study of voting systems, and in the 1950's, proved that all ranking-based voting systems would be unfair? Well, in an interview 60 years later, Kenneth Arrow had this to say about what voting method he'd push for, now:
-
// blockquote style plz
+
// blockquote style plz
-
“Well, I’m a little inclined to think that score systems [like Approval & Score Voting] where you categorize in maybe three or four classes [so, giving a score out of 3 or 4, not 10 or 100] probably – in spite of what I said about manipulation [strategic voting] – is probably the best.”
+
“Well, I’m a little inclined to think that score systems [like Approval & Score Voting] where you categorize in maybe three or four classes [so, giving a score out of 3 or 4, not 10 or 100] probably – in spite of what I said about manipulation [strategic voting] – is probably the best.”
-
That's as strong an endorsement as you'll ever squeeze out of a math-head.
+
That's as strong an endorsement as you'll ever squeeze out of a math-head.
-
+
-
An open letter.
+
An open letter.
-
ahem
+
ahem
-
DEAR JUSTIN “TOTES ADORBZ” TRUDEAU
-(and everyone else around the world pushing for voting reform)
+
DEAR JUSTIN “TOTES ADORBZ” TRUDEAU
+ (and everyone else around the world pushing for voting reform)
-
Thank you for taking this small but powerful first step! We've known for way too long that our current voting system – First Past The Post – forces voters to be dishonest, creates a polarizing "lesser of two evils" scenario, and screws over both major and minor candidates.
+
Thank you for taking this small but powerful first step! We've known for way too long that our current voting system – First Past The Post – forces voters to be dishonest, creates a polarizing "lesser of two evils" scenario, and screws over both major and minor candidates.
-
However, you've probably thinking of going for Instant Runoff Voting (or some other variant, like Single Transferable Vote). But IRV still has a glitch as undemocratic as FPTP's – and worse, in our age of distrust, Instant Runoff's lack of transparency will be deadly for democracy. Yes, sure, IRV was the best voting system mathematicians could come up with... fifty years ago. But now, thanks to simulations and real-life studies, we know of voting systems which are much better, much more transparent, and much more democratic.
+
However, you've probably thinking of going for Instant Runoff Voting (or some other variant, like Single Transferable Vote). But IRV still has a glitch as undemocratic as FPTP's – and worse, in our age of distrust, Instant Runoff's lack of transparency will be deadly for democracy. Yes, sure, IRV was the best voting system mathematicians could come up with... fifty years ago. But now, thanks to simulations and real-life studies, we know of voting systems which are much better, much more transparent, and much more democratic.
-
Personally – I'm leaning towards Score Voting. It's simple, expressive, honest, transparent, and already familiar to anyone who's seen Amazon's or Yelp's “five star” review system. But that's just my humble opinion. You could also make a solid case for Approval Voting, which is even simpler, and would work better on existing voting machines. Or you could go for Borda Count, because it'd be an epic prank.
+
Personally – I'm leaning towards Score Voting. It's simple, expressive, honest, transparent, and already familiar to anyone who's seen Amazon's or Yelp's “five star” review system. But that's just my humble opinion. You could also make a solid case for Approval Voting, which is even simpler, and would work better on existing voting machines. Or you could go for Borda Count, because it'd be an epic prank.
-
I won't claim to know which is The Best™ voting system. I shall keep open this discussion, as long as we have this discussion. For two reasons:
+
I won't claim to know which is The Best™ voting system. I shall keep open this discussion, as long as we have this discussion. For two reasons:
-
One – If I claim one voting system is the best, end of story, all the public choice theory nerds will be on my butt, yelling, BUT NICKY WHAT ABOUT QUADRATIC VOTE BUYING
+
One – If I claim one voting system is the best, end of story, all the public choice theory nerds will be on my butt, yelling, BUT NICKY WHAT ABOUT QUADRATIC VOTE BUYING
-
Two – Keeping the discussion going is what democracy is.
+
Two – Keeping the discussion going is what democracy is.
-
A recent study (NYT article, PDF of original study) found that in many Western countries – from Sweden to Australia to the United States – support for democracy has plummeted over the last several generations. Today, one in six Americans say it'd be "good" or "very good" to be under literal army rule. And in 2011, almost a full quarter of young Americans said democracy was a "bad" or "very bad" way to run a country.
+
A recent study (NYT article, PDF of original study) found that in many Western countries – from Sweden to Australia to the United States – support for democracy has plummeted over the last several generations. Today, one in six Americans say it'd be "good" or "very good" to be under literal army rule. And in 2011, almost a full quarter of young Americans said democracy was a "bad" or "very bad" way to run a country.
-
Our age of distrust goes a lot deeper than the technical details of a voting system. This isn't gonna be One Weird Trick To Fix Democracy. But as a first step, a low-hanging fruit, a way to show that, yes, you really do want to make the system respond to the needs and wants and pains and hopes and dreams of your people – fixing our voting system's a good way to do that.
+
Our age of distrust goes a lot deeper than the technical details of a voting system. This isn't gonna be One Weird Trick To Fix Democracy. But as a first step, a low-hanging fruit, a way to show that, yes, you really do want to make the system respond to the needs and wants and pains and hopes and dreams of your people – fixing our voting system's a good way to do that.
-
This isn't just about trying to build a better ballot.
+
This isn't just about trying to build a better ballot.
-
This is about trying to build a better democracy.
+
This is about trying to build a better democracy.
-
<3,
-~ Nicky Case
+
<3,
+ ~ Nicky Case
-
P.S: Since you've read & played all the way to here, let me give you a bonus! A “sandbox mode” of the election simulator, with up to five candidates. You can also save & share a custom election scenario with others. Happy simulating!
+
P.S: Since you've read & played all the way to here, let me give you a bonus! A “sandbox mode” of the election simulator, with up to five candidates. You can also save & share a custom election scenario with others. Happy simulating!
-
+
-
What can you do? Educators, translators, blah blah blah
+
What can you do? Educators, translators, blah blah blah