2026-05-14

Some Like It Personal, Some Like It Professional

I insist on doing both. Why am I here and not <blank>?

  • registering my own domain? I could but I'm not that serious about establishing a brand.
  • wordpress? even more work.
  • substack? okay maybe this one would be a better fit, but then I'd feel pressure to do this regurlarly. I mean, the first blog I've read that's primarily on substack is that of Heather Cox Richardson and her volume is definitely not something I'm even capable of aspiring to. She's so big she's been typo-squatted! on substack! And there are others. Many others. I'm too busy going back and forth to work (but not driving!), trying to pull my weight on the chores, being a decent human being to all and sundry etc. etc. to try to measure up to any of those

Naw, when it comes to posting, I'm more like that old dweeb who built a myspace page back when they were big, let it rot and then went back and started posting there again later (while family and friends stand around waiting for something awful to happen, hoping they won't be embarrassed by the result). And no, I'm not doing myspace either. I'm way more about the words and ideas than the pictures and hot takes. I'll do some of that because for me, the world is an array of play buttons, on songs, on poems, on phrases, on movie clips and here, I'm gonna let 'em all leak out (in a controlled fashion if I can remember to do that). But I'll do it in text and links, to wikipedia, to the Things themselves, mostly.

This one's going to be more "perfeshunal" if it's possible to do that in a post that's used the words "naw", "dweeb", "myspace" and "perfeshunal".

I develop software. I've been doing that for 40-odd years now. Sometimes, when my employer has been a Canadian subsidiary of an American company, I've been called an engineer internally, but that's not on. I'm not even a lapsed EIT, let alone a full P.Eng. In fact, I'd been doing this for 10 years before I had even EITs as colleagues, let alone full P.Eng's (there were more than two at Dynapro when I was there). But I knew that in order to become what it needed to be, software had to become more engineering and less development (magic). And now I work for a medical technology company and, well, all the software must be engineered so it can do Great Good without egregious risk.

Some time while I was at Creo, I was reading some culture-of-development book (I think it was Steve Maguire's Writing Solid Code but google isn't helping me out on this one) and there were a list of 9 priorities, in two different orders. The one was put up as a straw man, with the other, clearly more correct, beside it. The more correct list stuck in my brain (as such things do), and I've been using it as a byword ever since. I call it "The Sacred Nine" (I think I was reading Stephen Lawhead's Song of Albion Cycle at the same time and I thought being a "code druid" a cool idea. I didn't get any blue tattoos to back it up but I went in pretty deep, at least in my own head, hence the pompous slightly mystical tome).

So here they are (and whoever you are, if you happen to read this, if I've got some of the middle ones in the wrong order, I take the blame on myself alone):

The Sacred Nine 

  1. Correctness
  2. Testability
  3. Global Efficiency
  4. Maintainability / Clarity
  5. Consistency
  6. Local Efficiency
  7. Size
  8. Personal Expression
  9. Personal Convenience

If we work together for more than two months, you'll hear me rattle them off at least once. In some ways this is a motherhood-and-apple-pie list for software but I like having it explicit. I like having the last three on. the. list. In that order. By their true names -- by the time I'd seen this list I had seen those last three cloak themselves as something else more important-sounding, and creep their way up the list to establish themselves as -- if possible! -- Most Important Things (as if that could ever be ANYTHING but correctness).

I came up before things like Test Driven Development, or being Test Infected, before any testing / mocking frameworks were in common use on "PC-class" computers (where I did ALL my development before Infonet). My first source control system was MPW Projector -- before that everything was escrowed floppy disks -- and the next ones I used were MS Delta (discontinued for the dumbest reasons, also known inside Microsoft as SLM or "slime" -- no independent link for this system survives) and MS Source (Un)Safe. I can't imagine what my life would be like now without git -- thank you again, Linus Torvalds (also the creator of Linux).

When I came across this list, it was obvious:

  • software has to be correct; no correctness? no value (think Pentium floating point bug, which spawned the "Borg" spin-off: "I am Pentium of borg. Prepare to be approximated")
  • if you wanted to say "this software is correct", having extensive enough tests to prove it was obviously desirable, too. So when C++ came of age, and a colleague brought in googletest and googlemock at Teradici, I fell in love with my favourite language all over again
  • when you're doing stuff, do the big things the right way (global efficiency) or your users will curse your memory every time your "pessimized" code steals another slice of their lives through waiting.
  • tell the obvious truth in your code (maintainability/clarity): computer op code sets are so complex now that the compiler's optimizer will be better at optimizing your code through arcane constructions than you will be
  • write new code in the same dialect (consistency) as the code beside what you're inserting is doing -- and do the small things right (local efficiency)
  • size used to be important -- I've had colleagues who pushed it up (at least emotionally) to #2 in day to day operations (this was before good test/mock frameworks were available on our end of the market)
  • and this is a creative effort (expression) that takes up piles of our time (convenience) so the last two are CLEARLY important to include. At the bottom -- I've had colleagues/managers who pushed them up, in interchangeable order to items 1 and 2 -- but always under different, more important sounding names (I name no perps here). 

So there you go. That's the Sacred Nine and I've finally written them down somewhere independently linkable, something I've been meaning to do for a long time, except mostly my life has been full of life except when I'm trying to sleep, (audible version) so I didn't get around to doing this until now.

(not quite a "Sea of Blue" but edging there... this is one place where I can let the noises in my head bother you without feeling the need to apologize)

2026-05-08

It's 16 months old but still topical

I wrote this awhile ago but it keeps seeming topical and I want to put it out there. There may be an up-tick on these in case anyone cares. I've been writing things off in a corner and this, from a series of "two-pagers" that I've come to refer to as "tract-lets" is #22:
As a Guy To Guys

(On Martin Luther King Day, 2025) If what I am about to write doesn’t apply to you, ignore it. But before you ignore it, do me a favour and consider what you would do, what you have done in situations such as these: Today the US could have inaugurated its first woman president, a mixed race black- south-asian woman of more or less good character and a track record of serving the people who elected her at every level so far, on Martin Luther King Day, and instead they inaugurated an adjudicated rapist, felon on 34 counts of fraud in an attempt to subvert an election – with around 50 other counts of state and federal indictments duly rendered by grand juries, not political gangs – but, for a variety of reasons, untried.

The only explanation I can conjure up that comes close to satisfying the facts as I see them is that we guys are a pack of racist, sexist, excrement dispensers (RSED). (I’m sorry. I just can’t bring myself to using a terser, more colloquial term.) And what’s worse, we’ve co-groomed the women in our lives to hold the same prejudices – if not in fact, then at least in effect.

Long before this “Rough Beast”’s<1> first election, David Sedaris compared being undecided in a certain election to this: when given a dinner choice of some chicken dish and a plate of feces and broken glass, asking how the chicken was prepared<2>. I wish the comparison were becoming less topical but it isn’t. And it’s not entirely an American problem, either. Over the course of Justin Trudeau’s term in office, he has treated more than one woman disrespectfully, but I call to mind especially, the case of Jody Wilson-Raybould (J W-R). In every case, but especially with regard to this attorney-general, the loss of standing, of reputation affected the various women FAR more than it affected Trudeau.

I said, from his swearing-in as our Prime Minister, that he suffered from being a performative twerp. I have been shunned by some acquaintances of otherwise good will over that remark, but I stand by it. He knows how to say the right thing. All too often he has no idea how to do it. In nothing did this ailment show up so starkly as in how he treated JW-R, but it affected others, too. With JW-R’s departure, Chrystia Freeland could have – should have – been groomed to take over from Trudeau. She was not. She was loyal – too loyal one could say until almost the end, when she was asked to make a statement on Canada’s finances that she had points of disagreement with, at the same time as she was to be shuffled out of the very high profile Finance portfolio to some other of significantly less standing. It seems to me that Justin felt too threatened by her.

Now, she has a reputation of being “damaged goods” politically and the tar of the later parts of Trudeau’s term is sticking to her, so that

(a) if she were chosen as leader of the Liberal Party she would likely lead it to a defeat similar to the sinking ship that was delivered to Kim Campbell and which she steered to an undignified appointment with an iceberg, but

(b) she’s not likely to be chosen anyway – whether any of the other options has a particularly good chance of keeping government out of the hands of a fascist-adjacent performative twerp who is probably also a foreign asset. (the current leader of the opposition)

To my mind this situation has come about almost entirely because the voters, especially the men (and even in Canada) are largely RSEDs. And it’s not just white guys. I mentioned this idea to a Macao-Chinese co-worker, narrowing it to white guys and he said, “no. We are too.” And I’ve seen more than one article about the state of play around gender and “white-ness” in south Asia: When “eye candy” is “needed”, especially the women being so presented are unvaryingly of more pale skin than not. This situation is intolerable and needs to change. And so, as a guy to guys, I’m going to call it out.

Prove to yourself, in terms that might convince a black or brown woman that you aren’t an RSED, or else. Or else, be willing to assume that you’re probably acting like an RSED some of the time, even if you aren’t actually playing the part 24x7x365. Look at your voting patterns, your preference patterns in politics, in business, in every kind of relationship. Stare them down, each one, like Chuck Norris wearing the last two verses of Psalm 139 like X-ray glasses.

A young man of my acquaintance once thought of spending a “gap year” in Asia and made a passing remark to his Mother about finding a wife among the women he might meet there and asked her (he thought of her as a pretty open-minded and accepting person) what she would think of such a thing. Her response was that she would cry – and that left him stunned.

I tell the story because the “grooming” into racism, and like it, into sexism, is subtle and durable, deep and pervasive, like the extent to which Nathaniel Hawthorne’s Young Goodman Brown’s neighbours were perceived by him to be in league with evil powers. That story has multiple lessons and resonances to read, but one of them could be this: that when a community has been devoted to any kind of evil for multiple generations, it becomes a structure that is hard to oppose, even if the community loyalty to that evil (as in the case of that young man’s mother) isn’t overt or intentional, but comes clothed in concern and care. In the case of this young man and his Mother, perhaps it was cultural differences, or what would become of mixed race children, or maybe she just didn’t want her grandchildren to have divided loyalties between living nearby or near to their other grandparents. Who knows!? And at some point, what does it matter? The prejudice is still problematic.

And this is not to impugn the Mother – any more than Obama told stories about his white grandparents to impugn them – but as a demonstration of how deep-seated and thorough-going these racist structures are – and therefore how deep-seated and thorough-going the accompanying sexist structures are, too. Nobody is immune from a tendency toward bias. You’re not. I’m not. “This is my trouble, these were my fathers. So how am I supposed to feel, living on the rim of the broken wheel? ... You and me we are the break in the broken wheel, a bleeding wound that will not heal...”<4> Or cue up the better known line from Solzhenitsyn about the line between good and evil going through every human heart.

If you’re unattached and looking for a potential relationship, where do your preferences as to looks run? Whiter? Blonder? “Caucasian”? What does the record look like? Do you put up with mansplaining when you see it happening? Do you mansplain? Are you as ready to follow a woman’s lead as a man’s in work/life? Time to grow up folks, to leave childish things like this behind us, to see with new eyes.
-------
<1>Olear, Greg. Rough Beast. 2024. referring to "The Second Coming" by W. B. Yeats
<2>Sedaris, David. “Undecided”. The New Yorker, October 20, 2008
<3>Joke line: “Chuck Norris doesn’t read books. He stares at them until they quail and hand over the info he wants.”
<4>Cockburn, Bruce. “Broken Wheel”, Inner City Front.

2025-05-29

Letter to the Liberal Party of Canada

I'll do anything moral, anything legal, to promote electoral reform in Canada from First Past the Post to some variety of Proportional Representation, so when the Liberal Party of Canada put up a banner ad asking for what people wanted (but it was really a front-end asking for donations) I replied, with growing disappointment as it was clear they didn't want to hear about electoral reform. Part of it (and you can say it, "you poor fool!") required proving that you were real by giving them an e-mail address. They proceeded to send me requests for more money and eventually, I "snapped" looked up the sender named in the From: line (not info at liberal.ca, the real name) on one of the socials and sent this out. I am cc-ing it here, and I will also be sending it to my newly elected Liberal member of parliament.

I place it in the commons: you are free to use it, you are free to edit it for your riding's situation, you are free to send it -- only, please use it in ways that will encourage electoral reform towards a proportional system in Canada and not in other ways. Still, I have no hoard of lawyers, so I will be unable to track you down in order to enforce my request. Letter follows:

Dear _______,

Just to let you know.... I am "relieved" not "content" that your party leader is our Prime Minister and not the former honourable member from Carleton. Mr. Carney's commitment to climate goals is thin on the ground, his willingness to supply war materials to support Israel is disappointing -- a complex situation, but "clocks don't bring tomorrow, knives don't bring good news" -- never mind Stephen Harper's two most egregious bills that Have. Not. Yet. Been. Repealed: regarding revoking naturalization based on an ill-defined terrorism finding and breaking down the wall between intelligence gathering and policing that was built up after the MacDonald Commission, after the FLQ crisis.

My catalog of desiderata is long but my number one issue -- the meta-issue on so MANY other files is electoral reform. You want your leader to be mentioned in the same breath as Gus Pearson and Tommy Douglas? Press him to bring in some kind of PR -- divvied up per province as the Canada Act prescribes that parliamentary seats MUST be divvied up, but do it. Not Alternative Vote / Instant Run-off. Not dual member ridings. Use a constituent assembly if you must -- but MANDATE THAT ITS RESULTS MUST BE ACCEPTED BY CABINET and brought into law WITHOUT a referendum, or if any referendum, as "snap-back" after two cycles, and one that requires 60% for a reversion to FPTP.

That's why I responded to an LPC "what should we do now?" query. I am not a source of funds, I am a citizen whose vote hasn't been taken seriously, ever -- only until I turned 35 or so, I was voting like a "sheeple" and only long strong consideration of my options helped me choose what I wanted instead of Manichean-voting against what I hate or fear the most.

Plunging turnouts mean that a majority mandate is a false one: 40% of even a 55% turnout is still only 22% of the voters and is effectively losing to Did Not Vote: this should be unacceptable to anyone who cares about Democracy in Canada: only a greater loyalty to "the party's" chances than to better democracy would be satisfied. Every Vote Must Count -- as Trudeau quoted ten years ago without meaning what others heard -- even the votes of those with whom I disagree.

Banish the "can-we-get-a-majority-next-time?" schemers from this question and bring in real PR-based Electoral Reform, and Carney will be on the list of the Greatest Canadians Ever the next time someone runs that contest. Fail to do so and it might not take 4 mandates before your party is once again hated as much as it was (largely unjustly) under the former leader.

Sincerely,

______

Surveys say that 68% of you all, my fellow citizens harbour some variation on these feelings yourselves. Make your voices heard so that the power structures cannot ignore us.

2023-06-11

Okay.. Setting up MFA

(2FA is just MFA where "multiple" == "two")

Have you got your FaceBook page up?

1. Click on your profile picture -- top right in English, North America. A menu will drop down.

2. You'll want to click on "Settings & Privacy" with an angle bracket to the right. Clicking it will produce another menu.

3. You'll want to click "Settings" and that will lead to a page titled "Your Facebook Information". If you haven't been here for awhile, you may get a pop-up window telling you that account security management has been moved to a Meta page.

4. On the left, of "Your Facebook information", under "Settings" there's a "Meta Account Center" (mis-spelled because of course this is an American page, not a Canadian one -- it's called "Centre" up here) an item called "Password and security". Click on that.

5. Annoyingly, the result will look like you're Starting All Over Again...<sigh>

6. And again, on the left, there'll be a "Password and security" item. Click it. (Didn't I click that already?)

7. And now, on the right there's a Two-factor authentication item. Click on that. With Meta, you may need to choose between a Facebook and an Instagram account. (Remember. Computers are stupid. They're the idiots here, not you)

8. If you don't already have it set up, Meta will probably ask you to do 2FA through SMS messages (text) on a cell phone first. Go ahead and follow the steps.

Choose a cellphone that you have exclusive use of, if you can. If you can't, I hope it's held by someone you can trust. Enter the cellphone and when you get the text message, enter the number in the browser.

9. Then go back into the 2FA selection and choose the app.

10. Fire up the app on your phone and choose "Scan a QR Code".

11. Back on the computer, when Meta gives you a QR code, scan it with your phone and a 6-digit number will start being generated on your phone (whenever you need it).

12. Enter the "current number" (you'll have a minute after the next time it changes) in the field on the web site.

13. Then, make sure Meta wants to use the app, not SMS to your phone going forward.

There. You're done. There were more steps there than I thought there would be (or in all honesty, more than I think there should have been) but it wasn't that hard, right?

Can you do the same thing in gmail? It'll start with the "Gear" icon and choosing "See all Settings" but I'll leave the rest for you to discover and feel accomplished for yourself.

And now it'll be just that little bit harder for someone to take over your account. You won't be able to prevent someone from choosing a name like yours on Twitter or Facebook, but your. own. account. is just that much safer than it was.

One last thing. Can you pay it forward? Maybe you know an elder or other person with practical challenges who could be helped with this?

But now this is out there and maybe when someone else does the google search, they'll find my explanation, and maybe it'll help in a more generic way than any one web site's explanation. 🧵4/4

(click older to get parts 1 to 3)

One more thing first...

Every online tool you use does MFA slightly differently -- that's the first bad news. It means I can't say "just do this", "just do that" and it'll explain for all times.

But it's not that bad. For one thing, the mechanisms are all pretty similar. Once you know one, you'll have a hint when you get to the other ones. That's good news.

Even better... as multiple services consolidate -- something I'm not really happy about but there are upsides -- there's a certain uniformity the services gain so that if you know how to do it in one service by, say, Meta, you'll know how to do it in another of their offerings. That's even better news.

And yet... online services are constantly looking for ways to "improve" their web pages, not realizing that change is a downgrade by default -- until we find the new places things have been stuck -- and that can be bad news.

All that is to preface my instructions and justify their sketchiness. What I'm describing is Summer 2023 on Facebook, on a desktop. There's a difference here between my preference and my wife's. She does everything on her phone. I do everything on a laptop/desktop. I view things on a phone but most of what I do is on a desktop.

You can do all these things on a phone, too, but maybe the first time you'll want to do this on a computer? If you have one, great.

If you don't, maybe your public library is a good option? Ask them before you try, "How sure you are that my credentials are safe if I enter them on those computers?" Librarians are cool and if you press a bit (respectfully, remember) and there is a problem, they'll crack and may suggest a better local option.

If they're firm that there's no problem, there's no problem, at least not in most western countries. Remember, these are the people who resist book bans. Let me say it again in my best Henry Winkler voice: Librarians are Cool! 👍 (Leather jacket extra, motorbike? I prefer my pedals)

When it comes to doing MFA, you'll find it easier to do on a desktop regardless. We did one MFA for my wife on her phone and switching from one app to another was a bit tricky. It was possible but took a few tries. We did the next one on a laptop and it was a lot easier, switching from one device to another instead of switching from one app on the phone to another.

Have you got your FaceBook page up? Bring it up and click newer. 🧵3/4

(click older to get parts 1 and 2)

What is MFA?

Wait a sec. What on earth is MFA? That's short for Multi-Factor Authentication and the quick answer is the entrance to Edna Mode's design studio.

Did you see? Watch it again. How many factors did Edna verify against? Watch it again and watch for these points:
  1. 0'04": she entered a password
  2. 0'06": she offered a handprint
  3. 0'08": she offered a retinal scan
  4. 0'10": she offered a voice sample
  5. 0'14": she acknowledged Helen (Elastigirl) Parr's presence
That's. Too. Many. Factors. for you but it demonstrates the point, right? Especially when you remember that once she's in the door, into her studio, MFA never bothers her again.

For you, when you first log into your social media with MFA on your phone or your computer, you'll have to enter one more thing. Once you're there, you'll probably have to log out in order to be challenged by it again. The other time would be when you change your password. Do you change your password now and then? My employer makes me change certain passwords regularly. Personal accounts tend not to insist on it but, if you can come up with a way to NEVER forget your new password, you may want to change passwords periodically.

Oh, and yeah... you're not using the same password for all of your social media, are you? You are? Well, there's a reason to do some password changing right away after all then. It's obvious, right? If you use the same password everywhere, an attacker who cracks your password in one place gets an entré to all your accounts, right?

If you want the background, if enough people want a background, I'll try to add that later.

Otherwise, why not arm yourself now? Click newer to find out how. 🧵2/4

(click older to get part 1)

Help! My Account Has Been Hacked!

Many too many have stood where you stand.
Too many more will stand here too.
I hear your account's been hacked,
you've had to change your name
Build your contact lists again. (with apologies to Genesis - Many Too Many, 1978)

This hasn't happened to me --- yet. But I've been doing something I thought everyone knew about and I think it's helped prevent it. And yet, when my wife mentioned the lengths a friend of hers had to go to, in order to move heaven and earth to convince some social media site that, yes, yes! I really am that person! someone stole my account and I want it back! I turned to her and said, "Did she have MFA?"

She said, "I don't think so. How do I do that, anyway?" And I realized that I'd probably let her down on this one.

"Wait a sec," I said, "You have MFA don't you?" I'm geeky enough, we've been together long enough that she knows what MFA is, but she hadn't figured out how to do it for herself. Other things got in the way before now, but today, those were put aside for about 30 minutes and I made sure she had MFA on all her accounts and understood how to use it.

It's not hard and all of you, my neighbours, deserve to have the same protection for yourselves (and it's REALLY not that hard to do).

There's a community I'm a part of, attached to a weekly youtube rant with graphics, song parodies, guests, open source intelligence deep dives (you know who you are) -- you can't "just believe" everything they say (there are a couple of points on which I disagree with them or at least have my strong doubts) but they're a tribe I don't mind hanging with (@the_five8) though I'm pretty stodgy in a bunch of ways compared to them. Recently, several of them have changed their names several times, so it's made me wonder if either:
  1. this MFA thing isn't as effective as I thought (and I've been lucky) OR
  2. this MFA thing isn't as widespread as I thought
Adding MFA to ALL your account is, like, so 90s or 00s, you know? Oh. You don't? Oh yeah. I'm a geek, a nerd. Worn with pride but sometimes I miss the implications.

Some of the OSInt people on the Five 8 have really angered a few people. One of them (not one of the hacking victims) has had to leave home, never to return until the local powers that be are no longer mobsters who'll cause injury or death if a return is ever attempted. No. I'm not joking. The situation's broad strokes are a matter of public record in credible press reports and other places.

Anyways... another one said, when I poked at the MFA subject, that they had no younger relatives to appeal to for help setting up MFA, so I decided to write this -- a blog thread, if you will. Oh Arthur, that is just so 90s.... and you do threads on twitter! not on a blog... (I don't care. I'll do it this way anyway).

So, what is MFA? click newer to find out. 🧵1/4

2023-05-02

CMAKE and Windows Executables

Make no mistake about it. I LOVE cmake. CMake, git and post-2011 C++ reinvigorated my love for what I do and confirmed for me that whatever development I do, I want it to be in C++, extra marks for cross-platform, and can we be test-driven please? I'm doing all that on my own stuff, which has slowed to a crawl for a variety of reasons these days.

But this week, I bumped into a wrinkle. I needed to deploy an extension .DLL (it's called a .so in Linux, .dylib on macOS) with an installer, and it was working just fine... until I tried to test it on Windows 11, in which case my extension DLL just plain failed to load.

I speculated about what new thing on Windows 11 might be causing my problem. Was it some "property" -- no fiddling with icacls that I could do seemed to fix it. Overnight that night, I woke up thinking, "no, it's not that, it's something about the code underneath." What? I though? Like C++ and depending on the STL? So I implemented my way around that (which was fun), ran it as a test DLL and everything seemed to work. I put it the result into the build system and the DLL from there wouldn't load any more than my first attempt. Poring over the compile commands, between the Visual Studio-produced build properties and those generated from CMake exposed some odd differences but nothing that looked dispositive.

The link switches, though, that was another question entirely. The CMake-generated version was showing /SUBSYSTEM:CONSOLE in the link parameters; the Visual Studio created one was showing /SUBSYSTEM:WINDOWS. Google did NOT lead me to where I wanted to go easily. Instead, I found stale articles from 2008 (with no answer) and conflicting advice on StackOverflow. A co-worker pointed to an article that said to specify something in the add_executable command inside CMake. Only... I was writing a DLL (add_library) and there wasn't the same option there. I did find one article that suggested a way to do it: the resulting DLL did indeed work on Windows 11, but it struck me as clunky, so I pushed a little harder on it and produced a one-line solution.

So, just to make sure I wasn't swallowing a horse unnecessarily (the STL free code that I wrote when I thought that was the problem?), I tried the same solution on my original code -- and it worked! So I had fallen prey to two sets of red herrings, not just one.

And so. I present here a formula, in one place, for forcing any EXE or DLL to be compiled for /SUBSYSTEM:WINDOWS, because sometimes  that's just what you gotta have.

For an executable, add "WIN32" to the add_executable command where you create your target, as:

add_executable(${target_} WIN32 .... )

For a Dynamic Link Library, add the line

set_target_properties( ${target_} PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")

You may also find this useful -- to prevent your DLL from reaching out and including other DLLs on systems where they aren't already installed:

set_property(TARGET ${target_} MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

Simple solution and now, hopefully, it'll be easier for me (a) to remember it or if not (b) to find it when I need it again... okay google?

2022-04-22

ansak-string, ansak-lib and packaging sqlite

Six years ago, I went for a holiday with my wife, just the two of us -- pretty much the first such holiday (measured in weeks, not week-ends) we had taken since our first child was born. It wasn't off to some sun-soaked beach -- we've never been that kind of couple -- but we had a wonderful time, camping (not glamping), hotelling, time-share-condo-ing, eating out etc. Along with spending time together, we each did some of "our own" things, too, together in silent (or not so silent) companionship and not. I spent a bunch of time reading, some time biking and some time writing software. Like I do for work. Only this time, it was for me. I joked to myself that I was prepping for a "retirement project" and maybe I was. We'll have to see how that turns out but for the moment, I had a lot of fun.

When I got back, in talking about it with a colleague, I immediately got side-tracked: his response regarding one part (a simple API for re-encoding strings between wide and narrow) was, "Oh! we need that. Can you package it?" So, I made some modifications to the repository, and to the CMake script to enable that -- a lot of it was sequestering away everything but the string library so that all they got was what they really wanted. And so I discovered, that even for my own software, if you're not careful, a long line of "yaks" will show up in need of "shaving". It took over some of my free time for awhile but I was able to deliver something they could use, and then nothing more came of it. Some work-churning that followed diverted me still further and it took awhile to get back to it. But this month, I think the yak-shaving has come to something of an end.

I could spend some time describing the different yaks, but I want to point out a yak-razor-forge that I designed for myself, that took care of a bunch of them, and could be useful to others. About six months ago, I asked my brother (a network tech, not a developer) to try my stuff out. His first response was, "why can't I ./configure, make, and make install it?"

That "ancient" paradigm of "download -- ./configure -- make -- make install" has served open source projects well for deployment, at least for the consumers of the tarballs constructed to be deployed that way. For producers, especially those of us who came to it later in the game, the autoconf and automake tools that support it are bewildering. Learning to use them well, and then using them repeatedly for oneself can be daunting. And then, it's not even much good on a non-Cygwin, non-msys2 Windows environment. But the paradigm, for the end user at least, is wonderful.

The kind of code I was writing was platform-independent C++11 (and I'm loving the continuing updates) with few package dependencies on other things, so a full autoconf/automake approach was wrong-headed anyway. Yet, for deployment on Linux, MacOS, Cygwin and msys2, the result of such an approach made a lot of sense, even if one arrived at it by other means. So I wrote my own minimal configure script that determines the platform, chooses a few defaults for things and then writes them into a file that the Makefile includes.

The Makefile is very simple, mostly a cmake dispatcher, as that was one of my early choices. By the way, if I am missing out on a better cross-platform meta-build system, somebody please tell me? So far cmake is making my life very easy and making me feel smarter than I really am every time I poke at it.

But on Windows, not even a marginally good GNU make is available by default, or where it is, it doesn't interoperate well with other parts of Windows, to my knowledge. As for the end result, there really isn't a "standard place" to put 3rd party headers and libraries -- at least to my knowledge and in wide-spread use. So, I decided to use a default prefix (and allow it to be over-ridden) of C:\ProgramData -- it seemed an easy call to me, and I have seen some feints in that direction. Sub-directories from there of include\, lib\ and bin\ seemed logical, too. And as for a "make" stand-in, remembering Dave Beazley's "Discovering Python" video, the choice there was obvious, too: python. I did give PowerShell a shot on the way there but at the end of the day? No comparison.

Once I'd decided to use python, the choice between python 2 and python 3 was also obvious (for feature-set if not for the Jan 2020 sunset of python 2) but how to make sure of that? And how to run things as, "download -- .\configure -- make -- make install"? So I wrote a configure.cmd that looks for python, makes sure it's python 3 (in a python-version-independent way) and calls configure.py. Before that script completes, it writes a make.cmd file that uses the python 3 that was found for configure.py to run a make.py. That script imports the configvars just produced to influence how it should do what it wants to do -- in the same way as the Makefile does.

On the non-Windows side, by this time, with help from a good friend, I had been using CPack inside cmake to produce tarballs, RPMs, Debian packages and arch ZST files. CPack will also produce NSIS installers automatically, but it struck me that they were aimed at applications, not libraries (and so far, I'm writing libraries). So I wrote my own NSIS installer scripts, too. make package on Windows produces one of those.

After completing the work for ansak-string, I extended it to ansak-lib as well. When I got around to doing the Windows work I ran into another dependency issue. I intend to use sqlite3 (props to D. Richard Hipp for this excellent resource) for my back-end storage and I have some C++ classes wrapping it. Checking for SQLite3's existence at build time is too late. Downloading and "installing it" to where I want it during configure for ansak-lib wasn't hard manually, but the more I tried to accomplish it automatically, the messier it looked. I hit on a cleaner solution, alongside ansak-string (the original shave-off I did for my mates at work) ansak-lib (includes the sqlite3 C++ classes). I produced a sqlite_msvc_packager that uses the same "download -- .\configure -- make -- make install" cycle.

So there it is: a packaging solution for Sqlite3 and a couple of libraries you might find useful (especially this means of reading files of lines of text -- any width, any ordering -- as though they were lines of UTF-8 text). But even more useful, perhaps is the meta-facility I developed and described above: a flexible way of deploying libraries, either directly (make install) or through install sets -- and Python3 helped me bring it all to Windows, too.

2021-04-05

It's time to turn away from the "Masters" this year

I appeal to all (Canadian sports fans) who think that voting should be easy for all citizens of all backgrounds, ethnicities, identities and back-stories, of all countries, everywhere... Please follow my example and post something like this to: https://www.tsn.ca/help/contact-us form (Click through. I promise it Just Works™)

In solidarity with Georgia (US)'s newly re-suppressed voters, I appeal to your network to black out Masters coverage this year. Remembering the history of the Confederacy, the resonance of "Masters" where slaves once worked around it, where the first re-suppression legislation (of over 300 pieces in over 40 states) was passed, the optics are horrible and as a voice against suppression of freedom, for conscience' sake, TSN should black it out this year.

There's a 500 character limit so this doesn't say everything I would want, but it'll be enough to get the message across. Will you join me? (like the 50 people a day coming in singing Alice's Restaurant) Can we effect this change? I've gotten four "likes" so far on FaceBook but I'll bet that hasn't resulted in more than maybe one or two further posts to TSN.

It's incomprehensible to us as Canadians that any political party would EVER want to keep anyone from voting, but that's what this bill in Georgia was written to do. The governor took it inside a private office with six or eight white men and a cameraman to sign it. He sat at one end of a table with these guys in masks staring him down, beneath a picture of an antebellum plantation.

Meanwhile, a black woman member of the lower house in Georgia knocked politely but firmly on the door calling for the signature to be done in public. It went down like this:

Assemblywoman: Knock! Knock!
Georgia Capitol Police: You're under arrest.

And she was arrested and dragged out, charged with felony obstruction and disrupting assembly business. Think of an opposition MP / MLA / MPP / MNA from YOUR province being dragged away by the cops-on-duty from the Governor General or Lieutenant Governor's residence and charged with similar "crimes". If you don't feel outraged, I question if you understand what representative, responsible government, democratically elected means, or if you believe in it at all.

Three time zones, the whole continental US and an international border away, there isn't much I can do about this, but I can't become comfortably numb about this, and neither should anyone with democratic scruples of good conscience.

So, I'm not asking for money. I'm only asking that you click here and copy-paste the 2nd paragraph of this blog post and hit send. I won't encourage you to do it multiple times, but maybe this is a time to relinquish default Canadian "politeness". Their phone number is 1-833-TSN-HELP or 1-833-876-4357. For me, maybe it's time to try to figure out this Twitter thing and send a haiku to @TSNGolf.

I AM going to cc this to audience.relations@bellmedia.ca, too.

Here's hoping that, it's still true that... you can get anything you want at Alice's Restaurant ... even without 8x10 colour glossy pictures ... This is the colour I've found to try to start a small change. The crayons are free. If I toss you one, will you catch it and add your scribbling to it?

2020-10-22

Strong Encryption with Backdoors: An Oxymoron for Authoritarians

What follows is a model letter for Canadian citizens to send to the Honourable Bill Blair, your MP and the Prime Minister:

Dear Sir:

Regarding Strong Encryption with Backdoors

Once again, a push has been put out there for the development of strong encryption with backdoors, and to our collective national shame, you have signed it.

Do you understand how moronic that makes you appear? You just asked for something more impossible than rain falling from a blue sky, than deriving significant heat from a full moon, than wanting (with conscious reference to 1984) 2 plus 2 to equal 5.

The math. does. not. support. the concept of Strong Encryption with Backdoors. One of the words, "Strong" or "Backdoors" must be removed from the phrase for it to refer to something real. I and others more competent than me have repeatedly told this and previous governments, yet the request keeps coming back. And every time it does, the governments that request it make themselves look foolish and naïve -- or worse. We elect you to be wise and informed, competent and, where your competence does not extend, humble  enough to ask for wisdom from those who have such competence. So requesting this again (and again, and again) is undermining the faith of Canadian citizens in the competence and capability of our government. Do you need me to outline how this undermines our faith in democratically elected government? Not that we would turn toward autocracy but that we would give up and dis-engage, which in the longer term would result in the same thing.

Please, I urge you, to retract your signature from the recent "International Statement: End-To-End Encryption and Public Safety" published at

https://www.justice.gov/opa/pr/international-statement-end-end-encryption-and-public-safety

The presence of your signature there is a signal to all and sundry of your incompetence to speak about encryption at all and it shames all Canadians whether they understand the issues or not.

Only governments aspiring to totalitarian powers would insist on this kind of a policy after being informed by mathematicians and cryptographers of its impossibility. I want to believe that my government's security apparatus does not aspire to totalitarian powers. Please restore my faith on both issues (competence and trustworthiness) that this is the case and rescind your signature.

Sincerely,

make use of it as you will...

2020-09-11

Snap BC election right now? A real leader would say "no"

Posted to FaceBook, by me, via greenparty.ca:

It's Mr. Horgan's option. That's the way parliamentary democracy works.

But this is not the time. Despite the foolish result FPTP delivered in the last election, it's been reasonably stable and is only preventing things widely opposed by most of the voters from occurring. Maybe FPTP would deliver a majority to Mr. Horgan if he were to call an election, but maybe it wouldn't.

Run out your term, Mr. Horgan. Introduce sensible electoral reform, like my own "Regionalized Proportionality", so that future governments look more like the will of the people, where politicians MUST collaborate, co-operate, and submit to mutual accountability -- rather than the Manichean roulette wheel which is the only kind of electoral world that I have ever known in BC.

Then and only then call an election. That's what a real leader would do.

2020-06-29

Can Justin be anti-Racist?

This morning, I sent the following to my Liberal member of parliament. Do you know who your MP is? Are they also a member of the same party? Maybe this is a letter you can forward to them.

E-mail from constituents matter. Many e-mails from many constituents matter more. Many thoughtful e-mails (I tried to be so) even when forwarded with few edits matter still more. We. can. influence. That's what responsible citizenship is about. Look up your Liberal MP's e-mail address at parl.gc.ca and fire it off, too, okay?

Hi <name of your Liberal MP>

<I'm quoting something someone posted on FB but I feel strongly this way, too.> <For what it's worth, my status with regard to First Nations Membership is ... >

I'm calling on your leader, our Prime Minister, to repudiate, disavow and do actual things to reverse the policy embodied in something his father said.

Recently, someone posted on Facebook one of those annoying graphics-with-texts in them. I call them annoying because it means you can't copy/paste the text somewhere else in order to interact with it. But that's okay. I'll type it in here.

The. Rt. Hon. Pierre Elliott Trudeau said, "If you no longer speak your language and no longer practice your culture, then you have no right to demand aboriginal rights from us, because you are assimilated with the ruling power."

The graphic has a split face, on the right is Pierre Trudeau's face, on the left, his son, Justin's.

This would be a good moment for our current prime minister to quote his father explicitly, to disavow and apologize for the statement -- not just as a statement of his father but as of one made by his predecessor in the office he holds -- and pledge now, and act promptly to undo the structures established by the cabinet department whose animus (despite its several-times renaming, rebranding) has often been that echoed by the one time Deputy Minister, Duncan Campbell Scott: "I want to get rid of the Indian problem ... Our object is to continue until there is not a single Indian in Canada who has not been absorbed into the body politic and there is no Indian question and no Indian Department." Even if that kind of policy was meant kindly (I'll allow that he may have thought it was so far as he was concerned, but I'm inclined to doubt it, and it hasn't worked out that way, ever), it's racist and offensive and a piece of our past that must be actively turned away from if only to lend a shred of credibility (and a very tiny shred at that) to our self-congratulation in looking across the border to the south (and their looking across the border to us), to say that on race we're at least not as messed up as they are.

For starters piles of First Nations communities have not had clean water much longer than Flint, Michigan has suffered under that lash.

"Not a racist" was never good enough, and now we all know why. It's time for even the Canadian Government to start turning towards striving to become anti-racist.

Sincerely,


<your name>

Are you going to?

2020-06-05

Peter MacKay wants my vote, eh?

My Facebook feed has been lit up recently with ads from Peter MacKay. It's been a long time since I voted Conservative but I thought, "okay, I'll tell you what it would take to get my vote". So I went to his web-site, to the contact page, and asked him some questions. With the current unrest to the south -- and the prissy-pure reputation we're enjoying now (falsely), you know where I started, don't you? And then I got going.

At the bottom, I promised to post it here, and to post any something-deeper-than-press-release response I get from his people.

So, Peter...

How serious an anti-racist are you? Do you pledge to bring clean water to the numerous reservation-Flints across Canada regardless of cost? Do you pledge to correct the historic rates of over-incarceration of non-white and/or indigenous folks? (those, for starters; what about these other issues...)

Will you bring back the progressive taxation system that Brian Mulroney dismantled, so that adequate social programs can be fully funded without question? Will you remove contribution limits from payroll deductions to CPP/QPP and EI and keep those funds within those systems? (only the first reliable way to fund the kind of retirement that my parents' generation could count on and that is fundamentally threatened for me and for my kids. If you do that, don't stop there, but that's a good first step.)

Will you amend the Canada Health Act to compel the provinces to include basic vision and dental care in all their provincial plans? ("basic" here includes checkups, cleanings, fillings, root canals and caps -- together with public-health accountability so that those costs don't go crazy - braces maybe, too, where the current state is beyond a certain point)

Will you increase Canada's commitment to combat global warming by bringing in even more aggressive measures than the carbon tax, by slashing subsidies to Big Oil and instead fund fusion, solar, wind and non-weaponizable fission (LFTR, for instance) sources of energy? Will you compel oil companies and their successors to clean up their garbage, their leftover wells that they have abandoned with no budget in place for their decommissioning?

Will you help Alberta manage the political pain of finally adopting a provincial sales tax so that their budget is not so dependent on oil revenues and/or return the revenues unconstitutionally seized from them through the National Energy Program (while also, still, slashing the subsidies given to the oil companies as suggested above)?

Will you actively close down and mandate the clean up of non-closed-system salmon farming on the west coast?

Will you bring in real electoral reform, at the least bringing proportional representation blocks to individual large metro areas (i.e. all metro areas larger in population than Calgary or so) whose fragmentation into small ridings means that many voices (like mine) are never, ever heard at the ballot box? Failing that, will you at least bring back public funding of elections based on popular vote that Your Predecessor, Mr. Harper removed from me (stealing the last echoes of my voice)?

I thought not. I guess you know whether you can count on my vote then.

Go ahead, Peter, surprise me. I know the bigots whose votes you need in order to get nominated won't go along with these ideas but if I don't Say All the Things! nobody will ever hear them.

2020-05-03

I was looking for a way to express the following C-language macro, as found in a #ifdef __USE_GNU section of #include <unistd.h> in modern C++
# define TEMP_FAILURE_RETRY(expression) \
  (__extension__                                                              \
    ({ long int __result;                                                     \
       do __result = (long int) (expression);                                 \
       while (__result == -1L && errno == EINTR);                             \
       __result; }))
#endif
and it wasn't exactly easy to find the pieces to get that done by googling (Nor was it particularly easy to get blogger to display this article correctly!). I did eventually find it and present it here for reference by my future-self, in a template function I called uninterrupted. Instead of
return TEMP_FAILURE_RETRY(read(sockFd, buf, len, flags));
you would write
return uninterrupted(read, sockFd, buf, len, flags);
The glue that gets it done looks like this:
template< class F, class... Args >
inline auto uninterrupted(F&& f, Args&&...args) ->
    decltype(std::forward<F>(f)(std::forward<Args>(args)...))
{
    decltype(std::forward<F>(f)(std::forward<Args>(args)...)) rc;
    do
    {
        rc = std::forward<F>(f)(std::forward<Args>(args)...);
    }
    while(rc == static_cast<decltype(rc)>(-1) && errno == EINTR);
    return rc;
}
It's type-safe. It's easy to use. It's concise. And a modern compiler will optimize it down to assembler that's as tight or more so, as what C could produce with the macro that inspired it. And you don't have to worry about getting all the trailing back-slashes right when you write it!

If that's "too geeky for you", fine... just keep moving.

2020-04-11

They still serve who only...

Once upon a time, John Milton wrote a sonnet.

When I consider how my light is spent
Ere half my days in this dark world and wide,
And that one talent which is death to hide
Lodg'd with me useless, though my soul more bent
To serve therewith my Maker, and present
My true account, lest he returning chide;
"Doth God exact day-labour, light denied?"
I fondly ask. But Patience to prevent
That murmur, soon replies: "God doth not need
Either man's work or his own gifts; who best
Bear his mild yoke, they serve him best. His state
Is kingly. Thousands at his bidding speed
And post o'er land and ocean without rest:
They also serve who only stand and wait."

This month, I wrote a "parody" if you will but an appreciative one, that attempted to honour in the remembrance, in the transposition from his circumstances to my own. I share the result with you here:

When I consider how my days are spent,
My troubles not like Milton's hamp'ring scourge,
To be effective in my Master's work
Has ever been my strongest deepest urge.

Yet my commitments mitigate against
Fulfillment (on the surface) of my calls
And trivialities extend to fill
My times -- this my own "ash heap" me appalls.

No more than in the blinded poet's day
Does Papa dole rewards out from effect.
His plans rest not on this or that task done.
His goal, it seems: our natures to perfect.

Will my life's fruit show earlier or late?
Still even they serve now who stand and wait.

2020-03-28

Yo Wash Yo Hands...

Yesterday, at the end of a news broadcast, the announcer gave the following PSA, which I found moving, so I share it with you all. The "wash our hands of all this" was an acknowledgment that much of what had been reported involved different people in painful situations:

"And this word of advice in protecting the whole community:

"It is so critical that in order not to wash our hands of all of this we simply wash our hands.

"When you see somebody, and you're afraid to step away 'cause you don't want them to feel like you are afraid of them, don't think of them as the vector of disease. Think of yourself as possibly one who could infect others, because we can't know at this point.

"Step away.
Be at a safe distance to make the whole community safe.

"And when you wash your hands, to understand why this is so important: it's just simple water and soap -- I know for many it is not even possible to get that water -- but if you have access and soap, soap is critical.

"It is the most important weapon because the corona virus, corona is the crown on the virus which is a lipid, and the soap cuts through that.

"Wash your hands for at least 20 seconds.

"You know how you see doctors on TV shows washing their hands and then putting their arms up? This is the way to do it.

"You sing happy birthday twice if you want to but you've gotta scrub those hands.
You've gotta interlace your fingers and scrub.
Scrub your fingertips, you know that touches, oh, everything from buttons to elevator buttons, everything else.
Wash the back and the front of your hands.

"You're doing it for yourself.
You're doing it for your family.
You're doing it for the whole community
to stop community spread.
We have to keep each other safe in this very dire time of this pandemic."

(me back again): so go on you all, pretend to be doctors and yo wash yo hands!

(shout out to Group 1 Crew for the noise in my head around the title, lifted from their "Clap Ya Hands")

2020-03-26

The Bill of Goods

mostly written by my brother, Ray Klassen at thepilgrimagecontinues.blogspot.com. A few additional points of my own added.)

In the 80's most of us Christians were duped by the political puppets of the aspiring super-rich who sold us a bill of goods as part of a covert class war that they have ultimately won. Amazingly this bill of goods is still out there being touted by any number of people who after all these years, still see each entry on this intellectual invoice as obvious and axiomatic, standing by the same liars who promoted it in the first place. I say 'liars' because there is ample evidence that many of these talking points were known to be false by the people that originated them. That we bought into their ideas amounts to a swindle and a con game, and makes one wonder when reparations will be possible. It's been on my mind recently to itemize these ideas and provide some refutation of each. I recognize that my refutation will not be enough for many to simply about face on any of them as each are exploiting a deeply ingrained part of our cultural outlook, such that when what relate what I have now found to be true, many will simply read, and angrily dismiss. But that is the way of such things. So here, in not any particular order, the conservative bill of goods:

1. Small government is better than big government. Not true. We need adequate government. When reducing government in size is an end in itself, regulatory measures are put at risk. These regulatory measures, ideally, are there largely to limit the ability of corporate interests to endanger the public in any number of ways. These are not "job killing regulations". They are "life-and-health saving regulations." An undersized government lacks the appropriate power to inspect and enforce regulations. Frustration over weak, bad, or even nonsensical regulations (government is a human institution) is not a justification for wantonly slashing government size. Achieving an under-regulated, under-enforced "small government" can only advantage the rich and give them a free hand to increase their advantage.

2. Government salaries as well funded support for the less able constitutes waste. Related to point one in that the focus is misdirected onto the money that it takes to fund even adequate government and likewise not true. Government waste as a whipping boy is a huge talking point of those who wish us to vote in such a way as to limit their tax bill. As long as we are focused on that, we remain unaware of the obscene amount of wealth that is being removed to stay into the bank accounts of those who have promoting this. Even worse is the vilifying of the needy, who need the support of government to live, judging them by a standard which requires them to pull themselves up by their own bootstraps. "if only they would just get a job," or some such. Exploitation of this natural judgmentalism in our culture is par for the course. But there is again ample evidence that when support is made available, that many of the less fortunate are able to get far enough ahead as to be self-sufficient. But even if they are not, as humans and citizens of our country it's right to always give them that chance.

3. Tax cuts are good for everybody. (related lies: trickle down economics, "rising tide lifts all boats") Manifestly not true. Tax cuts are a measure that only marginally benefits the low and middle wage earner and egregiously over-benefits the top earning brackets. What tax cuts do is produce a downward spiral supported by points one and two whereby government is now underfunded and we demand that it become leaner and certainly meaner. People that were supported in some way lose their support because that is now labelled 'waste.' This deplorable state is even legitimized with a semi-virtuous sounding name, that is, austerity. But austerity is really not the enforced necessary poverty it appears to be. What it is is when those who are advantaged by wealth are allowed to increase their advantage utilizing government, which should have been in place to defend us against them but has now become their weapon.

4. Labour unions are evil, are all about greed, etc. etc. Very wrong. Most of the labour laws that benefit us today, limiting work weeks to ensure that families can have a life together outside drudgery, adequate wages, extended health plans come to us via union bargaining and since they came to us, have been steadily chiselled away again by big business. Parallel to that has been a successful propaganda campaign to vilify the unions and tar them with any number of charges. Okay. its a fact is that the unions haven't been pure. Organized crime has had its grubby paws on some unions. But the current wage differential between labourer and brass is yet another indication that the class war being waged by the super-rich against the rest of us is going very well for them. We would be wise not to invoke Paul's advice to slaves (a gross misapplication) or other authoritarian claptrap when a union votes to strike. After the current covid-19 crisis is over, I guarantee the nurses will want a better deal, for instance and they will deserve it.

5. Free enterprise. Yes. Just the phrase itself is questionable. Money is based on, wait for it, money. This is something that we've learning about as society recently. It's called privilege. If you start with any sort of advantage you can increase your advantage. If you start with a disadvantage, you will likely not transcend it but probably end with a greater disadvantage. The ableist myth propagated by the idea of Free Enterprise is that anyone, through hard work and God-given smarts, can start any business and get ahead. I think it's an example of the true Scotsman fallacy (look it up) because as soon as you would limit that 'anyone' and demonstrate that many cannot and have indeed failed utterly, the proponent will, by circular reasoning claim that they simply didn't work hard enough. And while Christians argue amongst themselves in this manner, Big Enterprise happily continues to tell its success stories in this rubric pointing to themselves as proof that "free" enterprise works. But until the government levels the playing field through progressive taxation, redistributing the advantage, we would be wiser to refer to this idea rather as privileged enterprise.

6. We must enshrine Christian morality in law. Here's the one where the super-rich (such a moral group) lead us along by the nose. They know our hot-button issues -- our nostalgia for the way things were when "evils" by the score were invisible because they were underground. Drugs, abortion, Feminism, LGBT, etc.: The super-rich know that if they can get us riled up about these issues, we are distracted from their depredations.They know that if they can package up promises to bring back the past along with all of their other dastardly schemes, we'll vote for them.  Secondly each of these categories represent people whom the donor class want to silence. The war on drugs for example is evidentially a creation of the Nixon Republicans to silence the hippy and black left.  Outlawing abortion does nothing to help children live. The evidence is out there. Countries with liberal abortion laws have fewer abortions because co-incidentally they also have in place what actually helps children live, which is social support for the mothers of said children. But that eats into the profits treasured by the super rich. In the case of LGBT, it's not so much a political silencing but more of a divide and conquer tactic. While we waste our time wishing that this segment didn't exist thinking 'if only we could ban them through legislation,' we are distracted from finding the real culprit.

7. Capitalism is Christian. False. No governmental system is Christian. But capitalism more than any system has few friends in the pages of scripture. Where do I start? Try the book of James. Condemns in no uncertain terms the oppression of the rich and the obsequious toadying of the rich by the church. Look at the Jubilee economic system (maybe never really tried -- we don't know) presented in Leviticus. Every fifty years, a reset. A limiting, balancing factor par excellence. Look at all the prophet's words against oppression by the rich on the poor. Oh, but you say, that's not against capitalism, that's against oppression by the wealthy. Let's have a wake up call, if you please. Wealth is oppression. If I have, it means that someone else doesn't have. If I have more, then someone else has less. Sounds terrible, but this thing has a scale. Here in the middle class, the oppression factor is maybe not as egregious. But when we realize that half of the world's wealth is owned by 1% of its population, the oppression is extreme.

The wealth gained this way represents legalized tax evasion. Legalized through swindling the Christian white middle class vote through this bill of goods in the 1980's. We voted this way (tax cuts!) thinking it would do us good. but little gain has come our way and our ranks, which should have been swelled by many others entering the middle class as wages went up instead of down have been depleted and we are losing power to what are now not merely the wealthy but oligarchs, people who can and do outright buy political power to ever increase their hold on society. Democracy is dying. The legalized tax evasion has other dimensions too. The rich have access to tools the poor do not. Holding companies, offshore accounts, stocks, etc. etc. represent an upward spiral accessed through privilege. It's a thing crying out for a societal limiting factor. (something Judeo-Christian maybe, like the Jubilee year?) But no, we've eviscerated government so that they haven't the resources to control this. Maybe it's time to wake up.

Thus far my brother. I added a few more articles of my own.

8. The best way to run a health care system is at a profit. Yeah right. Just ask New York and California how constant cost-cutting is benefiting them today. An empty bed may not be a source of revenue, but it's a source of resiliency, something that a health care system needs at times like these. And for Canadians yearning for a private system, if the public system isn't working well enough, the answer isn't a private system, it's more funding -- with oversight, of course! to prevent waste and boon-doggling -- for the public system. And that funding needs to be generous enough to support something like the potential maximum need, even if you need to raise taxes on the richest to support it.

9: The right to keep and arm bears (not that one, nitwit, the other one: The right to keep and bear arms). "Clocks don't bring tomorrow, knives don't bring good news" as a Canadian singer once wrote, and a gun in the home is a bigger threat to its inhabitants than it is to any miscreant that might come around to bother you. Only someone with lawless intentions needs a machine gun, a semi-automatic or large clips.

And I can only echo and magnify the call to wake up. The current system is messed up in so many ways and we are complicit in the damage that has been done. Accepting these as a priori truths, never to be questioned has brought us to this pass and it's time to question all of them because all of them are lies; and lies or not, they are at odds with what it means to be a Christian in a society where the citizens are responsible to take part in government, the responsibility that falls to us with those freedoms that we love to be thankful for.

2018-09-06

Write your representative: "5 Eyes Demanding Law Enforcement Backdoors"

In response to stories like this, it's time to get out your pen and write your various legislators again. I present to you a sample:
-----
Periodically this kind of demand comes up and it makes us look like utter idiots. It would be wise if someone told them to stop asking for it -- or just admit that they want to subject us all to totalitarian levels of surveillance. Points follow:

  1. Strong crypto is essential for the economy we have now. Restricting crypto out of the market would destroy much business economic activity and almost all consumer economic activity.
  2. Strong crypto with backdoors is weak crypto, even if the backdoor is a mechanism "known" only to the good guys.
    • If the backdoor exists, authorities under tight oversight can generally be trusted (because verified) not to use it except through lawful means BUT
    • if the backdoor exists, bad actors can 100% be trusted to pour large amounts of time, energy, money into breaking the lock. At its most insidious, all this requires is one corruptible person in the chain of responsibility for the back-doors. At its most clever, all protocols can be broken if you try hard enough. Compromising all consumer and business economic activity is just too attractive a prize for full effort not to be exerted.
  3. There does not exist a means to provide both strong crypto (vital to our economy) and the backdoors that our security services (and others) are demanding. The math doesn't allow it. So every time they ask for it, we all look like idiots.
This question is closed and it might be cost-effective for the government to retain some cryptography professors and researchers to remind the ignorant of these facts. It does NOTHING for the public weal or the security of the nation for the authorities to keep asking for things so impossible, only Alice's Red Queen and the ignorant masses can believe in them.

Sincerely,...
-----

Give it a try! Maybe they'll listen this time. In Canada, visit http://parl.gc.ca to find your MP. In the US, senate.gov and congress.gov. In the UK, www.parliament.uk. In Australia, aph.gov.au. In New Zealand, www.parliament.nz -- stamp out the crazy wherever you find it!

2018-06-08

Ordinary BCers, the pipeline and the NDP

Someone said something on Facebook and it set me off on a subject of note. It started when one guy said, "We must get different news in Ontario" and then someone else said that the minority NDP provincial government was popular only with the protesters. And something snapped. This is what popped out:

No, it's not just "with the protesters". There are a lot of people who've never held up a placard who are 100% against this pipeline. Pipelines are safer than trains and trucks, yes, but EVERY single joint in a pipeline represents a non-zero source of risk, most of those joints are going to be in horribly inaccessible places that are also upstream to most of us. The resulting coastal tanker traffic would go up from 40 per year to 1 or 2 every day, and if only one of those tankers ever spill, several 10s of thousands of people's livelihoods (vs. the 10s of long-term jobs the pipeline might supply) based on the relatively (very, VERY relatively) pristine state of our coastal waters would be seriously compromised.

Support for the pipeline in BC is not overwhelming. Opposition to it isn't either but the opposition has more to lose than the support has to gain from it being built so, they're a bit more passionate about it than the supporters. So, a lot of us are pretty happy with what Horgan is doing even if, like me, we've never voted for the NDP.

If you'd like barges of dil-bit going through your favourite holiday lakes, up and down your scenic rivers' rapids, then yeah, you can tell us tree-huggers what to do with Alberta's pipeline. But it's possible to be sane and to oppose the building of this pipeline vehemently. I am thankful for what Horgan is doing, what our First Nations neighbours are doing and I am appalled at the bad-husbandry that led to the extraction of this only slightly flowable tar from the sands of Northern Alberta in the first place. And the best spin I can put on Trudeau buying the pipeline is to prevent the collapse of trade relations with His Frogness to the south because of our rational opposition to this long-term source of poison and disaster that big oil has been trying to foist on us.

Still, it's pretty amusing watching the NDP try to retain a national identity between Singh, Horgan and Notley. But to finish it all, I'm sure the pipeline will be built. I'm sure it will cause at least one disaster (Exxon Valdes has NOT been cleaned up successfully to this day) and I'm sure that the people who benefit most from it having been built will bear the smallest amount of the cost of the overall problem. It's stupid, but it's happened before. It'll happen again, all from a mis-translation to "fill the earth and subdue it" of our original mandate. Shame on us all, myself included.