2017-02-15

A letter in response to a call for petition around Canadian House Motion M-103

For the text of the motion in question (words matter!) click here.

Hello Ron...

I'm still feeling bruised from the electoral reform reversal but while I'll hold that against your leader, I can't really hold it against you, nor will it prevent me speaking up in a slightly more nuanced way than I was urged to do this morning by a friend, with regard to House Motion M-103.

This friend urged signing a petition here:

which when I read it struck me as fear-mongering of a vile sort. Still, there was one point it raised that I think needs to be hammered out before this motion is adopted by the House of Commons.

In any event, I expect the Supreme Court of Canada to rule, ultimately, in favour of free speech over the more egregious possible outcomes of the motion that the petition promoters are predicting, but I still think it is a dangerous motion to allow to pass as is, for the simple reason that "Islamophobia" is not well-defined. The only widely accepted definition of Islamophobia is promulgated by a declaration which appeals and is willing to limit its impact to a body of religious law. That detail should dictate at least a little caution in adopting statements that use the term in a blanket way without further clarification as this motion does.

Those who suggest that it is the camel's nose of injecting further, Shari`a based intrusions on Canadian society are doing so based on ideas of hijra and so forth, whose ultimate success, if indeed it is in play here, I doubt very highly on other grounds. I count these warnings as those of cranks and xenophobes. Yet, as long as "Islamophobia" is well-defined only in a very religious context, and so long as it can potentially be extended to cover sensible criticism of acts past and present done by identifiable members of the larger Islamic community, this motion has the potential of going too far and some measure of the alarm being raised isn't entirely inappropriate -- and this is something that has been said by more than just cranks.

Consider, for a moment what the societal backlash would be (and ought to be! I say it though I myself identify as Christian) if various Christian leaders asked for protections that could be construed as preventing honest criticism of the acts of any groups of Christians? That would clearly be unconstitutional.

​Can I ask and urge that the motion be amended, at the very least to point out that any definition of "Islamophobia" is, a priori, limited by what would be protected under the Charter of Rights and Freedoms? I don't believe that the honourable member who raised the motion could reasonably object to that, and it SHOULD serve to satisfy at least those with reasonable doubts that this isn't what its shrillest critics claim it to be. As for those with unreasonable doubts, what can one say? Only a long record of something other than expectation has the potential (but unfortunately, that's all it has) of convincing these that there's no "there" there; yet working out that long proof is the pith of any national project, including this Canadian experiment.

​Can we agree that such a rider of reference to the Charter​ must be added to make the motion better, a true Canadian response to some deeply fearful circumstances? Clearly, some such response is required: to the mosque shooting in Qu├ębec, to the silly braying of our nearest neighbour's new leader, to the up-tick in racist and sexist violence that has occurred even in Canada since his election, is in order. But let's do it thoughtfully, sensibly, in a typically Canadian way, shall we? It may ultimately be possible, otherwise, to draw a bright line between the passing of this motion as is and the [inflaming of even worse kinds of fear and panic, leading to a reversal of any of the good this resolution is rightly intending to accomplish].

Thanks for your time, both of you. Much wisdom to you in being part of our country's governing body.

Sincerely,


Arthur N. Klassen

2017-02-02

Electoral Reform -- Canceled -- Haiku

Like father, like son.
Once again, Canada is
Betrayed by Trudeau.

I'm old enough to remember the betrayal of Canada by the father. I hoped better from his son but was not surprised to hear about yet another undone promise.

2017-01-30

Electoral Reform in BC - Regional Districts and Provincial Electoral Districts, 9 for 7

(I'm referring all through here to the Electoral Map and the Regional District Map -- I'll try to make it obvious which I'm referring to, but opening up the maps is likely to make things clearer. Maybe colouring Regional District names differently from Electoral District names will help? Maybe I'll do that in the prose but not the lists of districts.)

So, by starting on the less-populated areas in the north of BC, I dealt with the easy stuff first. This was true in more ways than one actually, because before working on the three most populous areas of BC, the Thompson-North Okanagan, the Lower Mainland and the Capital, I thought I'd deal with the Kootenays. The mapping between regional districts and electoral districts remained pretty strong for the East Kootenay region: the southernmost, most populous area forms Kootenay East, but the remaining portion is grouped with the geographically similar parts of the Columbia-Shuswap regional district to form the Columbia River-Revelstoke electoral one.

No real quibbles there: There's a natural split between the mining corridor along the eastern approach to the Crowsnest Pass and the rest of the Rocky Mountain Trench country up to Golden and over to Revelstoke, so the composition of the Columbia-Shuswap regional district makes a lot of sense in the area of snow removal and other kinds of management -- but this regional district so big that it gets carved up still more. There's a bit of a land-swap between it and Central Kootenay regional district along the Kootenay West electoral district boundary: some of Central Kootenay regional district is included north in Columbia River-Revelstoke electoral district, while some of Columbia-Shuswap regional district is included in the other direction to make Kootenay West electoral district.

Logistics also push Trail into the Kootenay Boundary regional district while it's included (quite sensibly) in the Kootenay West electoral district.

I'm in danger of getting lost in the weeds here, I know, so I'll skip to the thorniest bits of this chunk, which relate to the most populous bits of the Columbia-Shuswap and Okanagan-Similkameen regional districts. The Shuswap lake area of Columbia-Shuswap regional district plus the northwest half of North Okanagan regional district form the Shuswap electoral district. And in the south, while combining all the less urban parts of the Kootenay Boundary and Okanagan-Similkameen regional districts into the Boundary-Similkameen electoral district, urban Penticton, the administrative town for the Okanagan-Similkameen regional district is carved off with additions from elsewhere) into its own Penticton electoral district.

So, one of the mis-givings I had about my scheme -- that it might be messy in parts of the province where there is lots of empty land with a sharp concentration of population in one place -- is borne out. Even in the areas around Metro Vancouver this holds true as electoral districts on the northern edge take in swathes of nearly-unpopulated areas, just so as, you'd think, to put them somewhere.

The statistical over-representation I noticed in the first tranche of Regional and Electoral Districts still holds, mostly, but not in Penticton and Cowichan Valley which are included here. Also, as I was adding these seven regional districts to "what I'd looked at":

North Okanagan, Columbia-Shuswap, Central Kootenay, East Kootenay, Kootenay Boundary, Okanagan-Similkameen, and Cowichan Valley

represented by nine MLAs from the Electoral Districts:

Vernon-Monashee, Shuswap, Columbia River-Revelstoke, Kootenay West, Nelson-Creston, Kootenay East, Boundary-Similkameen, Penticton, and Cowichan Valley

I realized that I had missed a detail around the Mid Island-Pacific Rim electoral district in the first group. The western (most remote) part of Cowichan Valley regional district is included (again, very appropriately) in the much larger Mid Island-Pacific Rim electoral district. So, the over-all average 

More about where the "statistical over-representation" led my thoughts later, after I untangle the rest of the map.

2017-01-27

Electoral Reform in BC - Regional Districts and Provincial Electoral Districts, 17 for 16

After the last article, I've been looking more closely at the ways in which BC's Regional Districts and Provincial Electoral Districts relate to one another. BC has made significant use of Google Maps in publishing a map of the regional districts and another one of the electoral districts. This, together with the facts about BC from Wikipedia and the (sortable! detailed!) list of regional districts also there have been my main sources.

​I have started here, because my Regionalized Proportionality idea rests on clumping electoral districts from a single regional district together. In a widely distributed province like BC (or even more, in a country like Canada), straight proportional representation is not a good fit since the urban clumps that would swamp the rural areas around them in pure proportional representation could swamp or be swamped by other, distant urban areas with very different needs and political priorities.

Right away, I was pulled up short because the edges of the urban ridings in Greater Vancouver overlap the boundaries of what used to be called the "Greater Vancouver Regional District" but now seems to be called "Metro Vancouver", so I decided to work my way around the map to get to it.

To summarize the over-all electoral/regional data in BC...

Population 4,400,056


Number of regional districts 29
Population per Regional District (100s) 151,700
Number of Electoral Districts 85
Population per Electoral District 51,800

I've gone through the 16 northernmost Regional Districts and mapped out their relationship to their local Electoral Districts. In summary, the 663,575 people living in these 16 Regional Districts:

Alberni-Clayoquot, Bulkley-Nechako, Cariboo, Central Coast, Comox Valley, Fraser-Fort George, Kitimat-Stikine, Mount Waddington, Nanaimo, Northern Rockies, Peace River, Powell River, Skeena-Queen Charlotte, Stikine Region, Strathcona, and Sunshine Coast

are represented by 17 MLAs from the Electoral Districts (a near 1:1 correspondence that I was surprised by):

Cariboo-Chilcotin, Cariboo North, Courtenay-Comox, Mid Island-Pacific Rim, Nanaimo, Nanaimo-Cowichan, Nechako Lakes, North Coast, North Island, Parksville-Qualicum, Peace River North, Peace River South, Powell River-Sunshine Coast, Prince George-Mackenzie, Prince George-Valemount, Skeena, and Stikine

These districts are (statistically) over-represented slightly, at 39,900 people per MLA, leaving 68 MLAs to represent the remaining 3,736,481 in the other 12 Regional Districts, at about 55,000 per MLA. I believe it possible that the way Fraser-Fort George is divided, with about half of Prince George placed in each of Prince George-Mackenzie and Prince George-Valemount disadvantages the rural voters of the rest of the Regional District but so far, it has seemed to be a reasonable solution and I commend the folks at Elections BC (a non-partisan office of the BC Legislature, responsible through the Speaker to the Lieutenant-Governor, embodying the Crown) for doing their jobs as well as this: we don't seem to have a problem with gerrymandering so far.

2017-01-25

Electoral Reform in BC

It wouldn't take a referendum. It doesn't need a lot of study. The result wouldn't be complicated but would reflect the will of the BC voter far better than the hate-filled mud-slinging we've seen since I became a voter. Elections that result in four year majority mandates from 45% or less (usually lots less) of an ever-dwindling turnout.

I've plugged this idea as much as I can federally, as an individual citizen, because the Liberals opened it up -- though they seem to be circling the wagons again so as to avoid real change, but why not do this provincially?

I have an on-again, off-again relationship with blogging but I'm going to try to put up a concrete case for my favourite form of electoral reform that deals with this province alone. Regionalized Proportionality would work in BC -- I think really well. I am convinced that it would rejuvenate our democracy by making the governments we send to Victoria reflect who we are more closely and more simply than any other system I've seen.

No offence to the STV guys -- they're smart, they're the brains... and unfortunately, while I understand its strengths, its details are just too complicated for most voters to care enough to spend the time to look at it closely enough not be confused by it. Especially not while we (at least in some of the metro areas) are trying to afford living in what Fotheringham often called "Lotus Land" and "British California" -- as if we're that sunny (except for the Okanagan in summer), as if we can spend all that time on leisure (but many of us do).

In brief, my idea is to coalesce the ridings that sprawl across individual metro areas into single districts that elect as many members as the seats that were coalesced, but does so from a single ballot proportional list. The rural people still get "their local MLA" but the not-very-marginal but not-big-enough-to-command-local-majorities blocs that exist in the metro areas might actually send MLAs to Victoria that reflect what they want to see happen.

Okay, I nearly typed it: "what we want to see happen". Neither the NDP nor the BC Liberals reflect what I want to see happen and I have had it up to my eyebrows and above with the hate-and-fear filled campaigns I've seen nearly all of my adult life, stretching back certainly to Mr. Vander Zalm's campaigns, and imbibed in by both parties up until the present day. My vote has been parked with one particular party because I view them as the least impossible, least dubious other option.

Minority governments are not scary. The best policies in Canada were brought in under minority parliaments. If the parties know that they'll never get a majority but will always have to play nice, perhaps we'll see more constructive policy synergy and less playing off fear. Perhaps money will have less of an influence in the outcome. Perhaps not.

But this is what I want. Politically, this is what I think is worth working toward and I'm going to put out a few more articles over the next few week/months analysing for instance how my proposal might change our current electoral map. It will only be marginally interesting to see what electoral outcomes under such a situation would be but I'll put that out too as I can manage it. But it's only marginally relevant because I believe it will raise voter turn out and change other aspects of the campaigns significantly so that voting patterns will change in ways I cannot foresee.

Still listening?

2017-01-17

Haiku #36 -- Haikus in tension

What is politics?
Real work. Making society
better day by day.

What is politics?
Distraction from the real work
of daily kindness.

2016-12-14

10 Steps to an empty starter project in git with cmake and googletest

Here are 10 Steps to an empty starter project in git (suitable, for instance, for a Coding Dojo), ready to use google test for a starting point for test driven development (Assuming you already have git, cmake and some build toolchain appropriate to your platform installed and available on the execution path).

For the following the numbered item describes the step, the items between the lines of hyphens give steps you can run from a Unix Shell-like program (or Cygwin) to create a basic starter project. Go ahead! Copy them from here and paste them into your favourite shell and it should just all work:

========================================================================================
1. make a new directory (we'll call it starter)
----------------------------------------------------------------------------------------
mkdir starter
----------------------------------------------------------------------------------------

========================================================================================
2. enter it
----------------------------------------------------------------------------------------
cd starter
----------------------------------------------------------------------------------------

========================================================================================
3. create a new git repository
----------------------------------------------------------------------------------------
git init .
----------------------------------------------------------------------------------------

========================================================================================
4. add google test in submods/googletest
----------------------------------------------------------------------------------------
mkdir submods
git submodule add https://github.com/google/googletest.git submods/googletest
----------------------------------------------------------------------------------------

========================================================================================
5. add basic CMakeLists.txt at root
----------------------------------------------------------------------------------------
cat <<eof >CMakeLists.txt
cmake_minimum_required(VERSION 3.1)
project(starter)

include( CTest )

add_subdirectory( submods )

set( starterSourceDir "${PROJECT_SOURCE_DIR}" )

add_executable( starter source/starter_main.cpp )

add_subdirectory( test )
eof
----------------------------------------------------------------------------------------

========================================================================================
6. add basic CMakeLists.txt in submods
----------------------------------------------------------------------------------------
cat <<eof >submods/CMakeLists.txt
cmake_minimum_required(VERSION 3.1)

set_directory_properties(PROPERTIES COMPILE_FLAGS -Wno-error)
add_subdirectory(googletest)
eof
----------------------------------------------------------------------------------------

========================================================================================
7. add basic sourcefile in source
----------------------------------------------------------------------------------------
mkdir source
cat <<eof >source/starter_main.cpp
#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
    cout << "Hello " << argv[0] << " with " << argc << " parameters (ignored)." << endl;

    return 0;
}
eof
----------------------------------------------------------------------------------------

========================================================================================
8. add basic CMakeLists.txt in test
----------------------------------------------------------------------------------------
mkdir test
cat <<eof >test/CMakeLists.txt
cmake_minimum_required(VERSION 3.1)

add_executable( testStarter test_starter.cpp
)

target_link_libraries( testStarter PRIVATE gtest_main )
target_include_directories( testStarter PUBLIC ../source )

add_test( NAME starterTest COMMAND testStarter )
eof
----------------------------------------------------------------------------------------

========================================================================================
9. add basic GoogleTest file in test
----------------------------------------------------------------------------------------
cat <<eof >test/test_starter.cpp
#include <gtest/gtest.h>
#include <iostream>

using namespace std;
using namespace testing;

TEST(StarterTest, basics)
{
    cout << "Hello test" << endl;
    EXPECT_TRUE(true);
    EXPECT_FALSE(false);
    cout << "Goodbye test" << endl;
}
eof
----------------------------------------------------------------------------------------

========================================================================================
10. Check it all in as an initial commit
----------------------------------------------------------------------------------------
git add CMakeLists.txt
git add submods/CMakeLists.txt
git add test/CMakeLists.txt test/test_starter.cpp
git add source/starter_main.cpp
git commit -m "Initial commit of starter project"
----------------------------------------------------------------------------------------

            __   __          _                _                  _ 
            \ \ / /__  _   _( )_ __ ___    __| | ___  _ __   ___| |
             \ V / _ \| | | |/| '__/ _ \  / _` |/ _ \| '_ \ / _ \ |
              | | (_) | |_| | | | |  __/ | (_| | (_) | | | |  __/_|
              |_|\___/ \__,_| |_|  \___|  \__,_|\___/|_| |_|\___(_)
                                                                   

========================================================================================
And now you're ready to start using your brand new empty project. Write an interface! Write a test for it (it'll fail)! Write code to make it pass! You're on your way with three of the best-of-breed tools available today: git, cmake and googletest.

From the "starter" directory, on Linux, for instance (where cmake's Makefile generator is the default), you can execute the following:
----------------------------------------------------------------------------------------
mkdir build
cd build
cmake ..
make
----------------------------------------------------------------------------------------

Executing the compiled results will also succeed
----------------------------------------------------------------------------------------
./starter
test/testStarter
----------------------------------------------------------------------------------------

And the tests can be run using ctest:
----------------------------------------------------------------------------------------
ctest .
----------------------------------------------------------------------------------------