Blog

September 14, 2022 18:06 +0100  |  United Kingdom 0

Queen Elizabeth is finally dead. We all knew it was coming. The lady was 96 years old, and no matter how ridiculously rich you are, no one is immortal. This country is losing its mind over the whole thing of course, with everything from Cancer appointments to bike racks, and even other people's funerals being cancelled out of condolences to the royal family.

Not everyone in the country has lost their mind though. Shouts of "God save the King" were met with boos in Edinburgh, and there have been a variety of incidents of protest across the country. Some of these were put down by police of course because apparently holding a "Fuck imperialism, abolish monarchy" sign is grounds for arrest in this "free" country.

For my part I want to be clear that have never had a single fuck to give about Elizabeth or her entire family. They're all entitled, inbred parasites and they need to go. Elizabeth was far from the "sweet old lady" people like to pretend she was, but rather just another manipulative billionaire who banned "coloured immigrants or foreigners" from working in her palace, tried to steal money from a poverty fund to heat said palace, and sat upon a mountain of money while her "subjects" literally starved.

Now that she's in a box, that mountain of money and investments all pass to her son Charles, with zero inheritance taxes thanks to laws she likely helped write thanks to King's consent conventions dating back to 1728.

It is absolutely maddening that, in the 21st century, in a country where people are literally having to choose between eating and heating their homes, that those same poverty-stricken idiots are lining up to pay their respects to a billionaire parasite. I don't get it. I likely never will. These people are insane and they clearly deserve this level of subjugation.

August 29, 2022 14:39 +0100  |  Music 0

Today, I thought I might tell you a story about someone else. Maybe you've heard this one, but if you haven't perhaps this post will add a sense of urgency to your life, or maybe it'll just remind you of the terrible tragedy of being. Either way, it's a story about an amazing young woman that I want to share.

This is her. If you watch through to 1:40 and aren't hopelessly blown away by her talent, you are indeed made of stone.

Christina Grimmie was one of those breaking stars in the earlier days of YouTube, a kid with no industry connections wielding an internet connection and a bottomless well of raw talent. She updated her channel regularly and over time built up a fan base, was doing live shows, and even cutting albums. Her life was looking up: she was young, beautiful, and amazingly talented.

Then one evening at one of her shows, all that ended when a complete stranger murdered her.

Her Wikipedia page tells a more thorough story of her life and death, so I won't add more here. If you're curious, you know where to read it. I just wanted to share her song with you, and maybe remind us all that sometimes, our time on this earth isn't as much as we expect.

August 10, 2022 08:31 +0100  |  Education Religion United Kingdom 0

Anna is will be four years old next year, and they start kids into school early in this country, so Christina and I have begun the process of looking for a school for her.

Apparently, it's not as simple as "you go to the one closest to you" here, but rather there's an application process wherein you rank your preferences and you're awarded your first, second, or third choice based on a variety of factors, including (possibly?) any personal appeal letters you might submit to justify your choice. It all sounds terribly stressful and yet another way to enforce class structure.

The process is made additionally complicated by our preferences: we don't want to put her into a religious school and we want to avoid mandatory uniforms. OMG does that limit the field of options.

In the UK, school uniforms are touted as a virtue and in parent's circles people have a tendency to get completely irrational on the issue. As a result, it's often the case that when you're comparing schools on any sort of official list, uniform mandates aren't even mentioned, so you have to dig into each of the (poorly designed) school websites to find out for yourself. It's not been fun doing this digging. The number of sites that think it's ok to use comic sans is... unfortunate.

The religion question is murkier.

There are straight-up religious schools here, typically Anglican, but there's also Catholics, and presumably others I've not seen yet. There's also supposedly non-religious schools (ie, not funded/controlled by the church) with names like St. Matthew's (check out the font choices on that one) that make figuring this out based on name alone difficult.

It gets even more complicated though. There's an official policy here called "The Cambridgeshire Agreed Syllabus for Religious Education" which sounds like some progressive guidelines to expand kid's understanding of religion in general... that is, until you read it (emphasis mine):

Teachers should consider the religious experience of the pupils in the classroom and the whole school when planning which religions to look at and in which order. * Christianity will be studied in all Key Stages.

  • The choice of which other religion(s) to study in KS1 should be relevant to the experience of the pupils in the class and local demographic. Where Christianity is the only religion present the school will choose the other religion to be studied.
  • However, by the end of KS2 all major religions (Christianity, Islam, Judaism, Hinduism, Buddhism and Sikhism) and a secular world view (humanism) must have been studied.
  • In KS3, building on KS2, all major religions and a secular world view must have been studied in greater depth.

It is desirable that all pupils visit a church or other Christian place of worship and the school should make all efforts to plan visits to religious buildings of other faiths. Visitors from different faiths and world views should be encouraged to visit all schools. When neither visits nor visitors are possible then the use of virtual tours and resources are recommended.

I'm reasonably certain that something like this wouldn't be ok in Canada, but apparently this is normal here.

Annoyingly, the above (and the rest of the guidelines) are clearly written to be very flexible, so the guidelines themselves aren't enough to tell you what kind of education you're signing your kid up for. You could have teachers that discuss Christianity in the same way most people talk about Greek Myth and do a field trip to a local church cemetery as part of a local history unit. You could also interpret the above to teach Christianity as the default, and other religions as adorable savages.

It's so hard to tell if I'm signing my kid up to be indoctrinated and the state is clearly not on my side here.

April 29, 2022 22:43 +0100  |  Media 0

I have a kid now, which means the kind of media floating around in my home has changed since my child-free days. Sure, we still find time to watch The Witcher and The Wheel of Time, and I still love The Expanse when I'm on my own (Christina doesn't care for it because she's a savage), but for the most part, if the TV is on these days, it's playing something kid-friendly because you can't have people getting their heads chopped off in front of a 3-year-old.

As you might have guessed though, the quality of children's programming is all over the place. From the brain-rotting Cocomelon, to the formulaic and ear-wormy Octonauts there's a lot of options out there that can make any adult forced to watch a little bit crazy.

So, I thought I'd make this (short) list of shows that I've been watching recently that I'd consider "kid and adult friendly". If you've got kids, or just enjoy exciting kid-friendly stories, you might wanna check these out.

Kipo and the Age of the Wonderbeasts

  • Available on: Netflix
  • Published by: Dreamworks
  • Ages: 3+
  • Links: Wikipedia, IMDB

I love this show. Kipo is an inspirational character abound with wonderful human qualities. She has a way of seeing the world -- her wild and fantastical world -- that just makes you want to be a better person.

The supportive characters (heroes and villains) are interesting, complex characters with their own backstories and development, the art is fantastic and the music is brilliant. By the second season I was literally punching the air at the opening credits of every episode! It's so good!

At Anna's age (3), I don't think she gets all that much out of it. The characters are cute & funny and the music is fun to dance to. I don't think she's really grasping the plot or anything like that just yet, but I imagine that this show would be enjoyable for pretty much anyone.

The show had a fixed run of 3 seasons, all of which have been released.

Infinity Train

  • Available on: Cartoon Network, HBO Max
  • Published by: Cartoon Network Studios
  • Ages: 8+
  • Links: Wikipedia, IMDB

I don't think Anna's ready for this just yet, but if your kids are older, it's a great thing to sit down and watch with them.

With each episode running at just 11 minutes, each 10-episode season of Infinity Train follows a different "passenger" as they traverse the train and learn how to sort out their life before they're permitted to return home. Our heroes meet new and interesting characters as they pass through car after car after car after car, learning about themselves and growing as people. Each car is different and more bizarre than the one before it, and the characters we meet along the way are fun, interesting, and sometimes voiced by awesome people like Kate Mulgrew (squee!)

For the most part, I'd say that this is safe for really young kids, but there are a few problematic scenes for younger kids that mean you probably want to avoid it for the young ones. In season 3 a character dies somewhat graphically (no blood, but it's still scary), and in season 1 a character is turned into a sort of shadow monster.

Hilda

  • Available on: Netflix
  • Published by: Silvergate Media and Mercury Filmworks
  • Ages: 2+
  • Links: Wikipedia, IMDB

Anna loves this show and has for a long time. I originally picked it up because my friend Robin worked on season 1 and he sent me a link. I loved it within the first few minutes so I made sure to inject it into Anna's diet in place of some of the dumber stuff.

Hilda is a great character, full of adventure and courage, with a strong sense of justice. She lives in a fantasy world loosely built around Scandinavian folklore, with giants, elves, thunderbirds, and dear foxes, and because Hilda is "a friend to all animals and spirits", she gets along well with (almost) all of them.

The stories are largely self-contained with long-running character development but not much in the way of the "season arcs" you tend to see in some other shows. I think what I love most about the show (aside from Hilda herself) is her relationship with her (single) mother who is objectively a fantastic role model for her kid. Oh and Alfur. He's fantastic too. And Twig! And Woodman!

You should watch this show.

Honourable Mentions

The three above are lesser-knowns, so I wanted to give them special treatment, but there's a few more that're worth covering if you've not heard of them yet:

April 29, 2022 21:29 +0100  |  COVID-19 Health 0

On April 12th, our child minder called to let us know that she had COVID-19 and as a result would have to close her doors 'til she was done with it, which likely meant the rest of the week. I cycled over there to pick up Anna, put her on the back of my bike and Christina's parents (visiting from Greece for a few weeks) took care of her for the rest of the day while I finished my work.

By Thursday, Anna had minor symptoms. By Friday she had a heavy fever and a positive lateral flow test. Both of Christina's parents were also suddenly positive and I had a very feint line on my test as well. Christina was blissfully healthy.

Friday was the easy part. I continued to work from home and Anna mostly slept on my lap while I wrote code and attended meetings as if everything was just fine. Christina's parents had mild symptoms and spent the whole day inside trying not to stress themselves.

By Saturday, Anna was fine, getting more active & animated, wanting to dance to the Octonauts theme etc. Unfortunately Saturday is when COVID hit the adults pretty hard. I literally couldn't keep my eyes open for big chunks of the day and Christina's mom Carol and I took turns keeping an eye on Anna while the other slept. Christina's dad Yannis helped out in the times in between, and Christina, still happy & healthy went to work.

Sunday through Tuesday I was in no shape to be useful, so I took those days off and tried to just focus on getting better. Wednesday I said goodbye to the in-laws and went back to work (remote) feeling pretty good. Thursday I felt a little worse. Friday I was a mess again and had to clock-out early so I could sleep the rest of the day. Christina & Anna came home to me fast asleep at 1730h.

I took another lateral flow test tonight. I still have it, and the line is much darker this time than it was when I tested last week. I don't know if the line intensity correlates to level of infection, but either way, I'm very much not over this thing. I'm going to take the whole long weekend to do as little as possible, sleep whenever I'm tired, and stay the hell away from everyone else.

Thankfully, Christina is still just fine. My guess is that she is/was an asymptomatic carrier or just still has sufficient immunity from her shot back in January. She'll be able to care for Anna while I'm down for the count and can even do grocery shopping etc. I honestly don't know what single parents do in this situation. It's one thing to be sick & miserable living alone, but to be charged with caring for someone who's not sick and wants to run-around-and-do-all-the-things is a whole other nightmare that I'm glad I don't have to live in.

From what I've been reading online, COVID-19 infection & symptoms can last anywhere from 3-4 weeks with a misery peak at around 10days so this weekend should be fun. At least my symptoms are manageable and not life-threatening. I'm mostly tired, with inflammation in my sinuses. I still have my senses of smell and taste, it's just that my arms and legs are so much heavier than they usually are. Hopefully some more rest and fluids will get me through this soon.

April 18, 2022 15:17 +0100  |  Climate Change COVID-19 Europe Family Politics War 1

I always post an annual "recap" on my blog. It's useful for me to keep track of the past, but also as a nice way to look back on my life with a sense of nostalgia. I rarely write this sort of thing until the year is completely over, as you never know what might happen even in the last few days of the year. I don't think I've ever waited this long though, so as my memory of 2021 has begun to rot, I find myself stretching looking for stuff to include here.

Family

By far the biggest news of the year for me was Violet's diagnosis with Stage IV neuroblastoma. It shook the whole family, and the waves travelled outward to everyone: friends, colleagues, even the entire town of Peachland where she lives. Her family uprooted themselves from the Okanagan and moved down to Vancouver for treatment into the wonderful Ronald McDonald House for the remainder of the year.

Shawna gave up her job and stayed with Violet in the hospital, while my brother had to split his life between seeing his wife & kids, and working to keep his job. Shawna's parents moved into RMH too to offer support and help take care of Violet's sister Lucy was dealing with the emotional toll of her sister's condition along with moving her whole 5 year-old life to a new city under strange new conditions.

By the end of the year though, things were looking good, and despite the odds, Violet appears to be doing better. Just a few weeks ago (April 2022), my brother informed me that Violet has had a bunch of scans all showing literally no Cancer left in her system. We're all cautiously optimistic.

Friends

As you get older (and coupled), it's difficult to find & keep friends. It's even harder when you sabotage things by moving to a new city every few years or decide to have a kid. Add to that a pandemic, and you've got a recipe for suck.

Rahel & Stepan

Our friends Rahel & Stepan came to us early in the year to announce that they were moving to the Philippines. This was rather disappointing, since we'd become quite fond of them, and Anna and Stepan had bonded (he's really good with kids). He's given up his job and the two of them are moving in with her parents to figure out what comes next for them. Honestly, I don't get it, but I with them luck.

Annie

Also in out-of-the-blue friend news, Annie sent me an email one night just to say hello. "If anyone still has the same email after all these years" she said "it's Dan", and she was right. We caught up a big on what's been going on in her life and it turns out she has other friends & family here in the UK, so I hope to see her in-person some day soon.

Work

I finished 2020 finally escaping from Workfinder with a job offer to work at Limejump starting in January. There was a 2-month gap between my the former and the latter, so I returned to MoneyMover temporarily to help get them sorted and eventually connect them with my replacement. From what I hear, they're all doing quite well over there, having now gone full-remote. They still meet up for social drinks & dinner though, and sometimes I'm invited, which is really nice.

My work at Limejump has been pretty great. I was worried about stepping into the tech lead role though: I knew I had the technical experience to guide a project, but wasn't sure I could be trusted with actual people to do the work. "What if", I thought, "I start working there and everyone are resentful assholes who fight me on everything out of spite?"

The thing is, I've been that resentful asshole at previous jobs. I've been saddled with tech leads & CTOs who demonstrably don't have the technical chops to do the work, yet insist on telling me how to do my job. So I decided to use this as my superpower: I leveraged my experience of what it was like to be on the receiving end of that sort of thing to remind myself not to be the kind of person that solicits that sort of thing from other developers.

The result of all of this is that our team developed a sort of "architecture by way of consensus". One of us proposes a solution, we all poke at it until we're happy with it, and then we apply it together. The only "hard lines" I've imposed have been along coding standards (black, isort, pep8) and offering some anecdotes & best-practise-by-way-of-experience stories here and there.

I don't want to give the impression that I'm taking credit though. My team are fucking awesome people to work with. Rob has a welcoming and friendly attitude that really makes you feel like you belong there, Rémy is attentive, organised, and excellent, at the big picture, Emmanuel has been friendly, receptive, and hard-working, and Leo is the most knowledgeable, organised, and collaborative product guy I've ever worked with.

It's not just the team though. Nearly everyone at the company is stand-out amazing at what they do. There are problems at the company for sure, but there are problems everywhere. What I love about working at Limejump is that I get to solve problems with awesome people.

COVID-19

Contrary to what everyone was secretly hoping, December 2020 wasn't the end of the pandemic. For the entirety of 2021, governments around the world applied pandemic restrictions in the least effective way possible in an effort to be seen as "doing something" rather than to actually keep people safe.

From selective re-openings to ridiculous rules around when a mask was required and when it wasn't, to outright hypocrisy from government -- as far as I can tell, no country followed the science. It's a harrowing sneak-preview of our climate future.

The UK was especially egregious, pushing to re-open earlier than most countries with the campaigns like Eat Out to Help Out that paid people to go to restaurants. There were no mask mandates in restaurants and no limit was applied to locations with outdoor eating.

A Vaccine

The big moment came in 2021 though: we had a vaccine. We had, in fact, multiple vaccines of varying effectiveness and variable shelf-life. There were lots of discussions around how the timing of testing for effectiveness can vary the results, which was interesting, and there were also warnings of blood clots from the Astra-Zeneca and Johnson & Johnson versions.

There was also lots of geopolitical fighting over vaccine availability. Astra-Zeneca over-promised its stockpiles to both the EU and the UK, and when it actually came to distribution time, the two were suddenly at odds as if AZ hadn't been the one at fault. The global north unsurprisingly screwed-over the global south, with most of us getting as many as three shots before those in India (who were being ravaged by oxygen shortages) received even one.

By the end of the year, I'd been vaccinated 3 times: first and second with Astra-Zeneca, and a third time with Pfizer.

And after all that, the world had to go back to school and learn how exactly vaccines even work. After presidents and prime ministers declared that the vaccine would "stop" the virus, they had to backtrack. COVID-19 is so aggressive that it still manages to spread fairly well among the vaccinated, and symptoms can even persist (albeit with much less lethality). This was a nuance lost (or more likely ignored) by the grifters and charlatans though. Suddenly the vaccine was a lie to keep you afraid and "controlled" (whatever that means). Public health has become political because people are gullible idiots.

Restricting travel

When you're an expat, your life is all over the world. My kid has family in Greece, Vancouver, Kelowna, and Ottawa, and we've got friends in a smattering of other countries.

This does not play well with anything that restricts international travel. My parents last saw Anna when she was 6 months old. She's now 3 years old and they still won't have a chance to see her 'til she's almost 4.

In the words of my mother-in-law: "I've lost two years".

Clearly, things could have been worse, but it still sucks.

The News House

In September, we moved from our cold, damp rental housing into a lovely new-build home just on the other side of the River Cam. It's big, beautiful, warm, and dry, with Ethernet in nearly every room and a heat pump in the back yard.

It's also in the wrong country of course. We keep looking back to what we left behind in the Netherlands (with all its faults, I'd still rather be living there than here). The truth is though that we'd managed to save up a decent-sized chunk of cash and the combination of the pandemic, plus the inevitable rise of inflation we knew was coming afterward dictated that we needed to move that cash into something that wouldn't lose so much value in such a short period of time.

We did the math:

5 years renting at roughly £1500/mo = £90,000

This means that if we bought a house and paid the mortgage for 5 years, we'd have to lose £90k on the resale value to make this a bad decision. Given that the housing market is the way it is, that loss is very unlikely, so this just made sense.

Also, have I mentioned that it's warm & dry? Why the fuck is this such an uncommon perk in the UK?

I Quit Twitter

In April, Lindsay Ellis posted a video on her channel about the current drama she was enduring over Twitter. The way the platform is designed to sow discontent and just fill people with rage was laid bare and it set me thinking about it for a long time.

Later that month I signed off Twitter for the purposes of interaction, and by November I'd dropped it altogether switching entirely to Mastodon, a federated Twitter-like network with no central control. If you're interested in following me, you can do so there.

Majel: Raspberry Pi

Majel has been developing very slowly. Maybe I've lost interest in the project and I just haven't accepted it yet, or maybe it's just gotten to that point where distribution is the problem. I'm not sure yet.

I spent a good chunk of 2021 working out how to package Majel for distribution to others. Ideally, I'd like it to be something like a Raspberry Pi image, but there are a few problems with the CPU architecture that make this difficult, not the least of which is the absence of the proprietary Widevine DRM for aarch64 systems.

The other problem of course is that my day job is technically challenging, so I often end the day without the energy to take on something else.

Still, the project is (slowly) progressing. For the moment, you can follow development here.

The World

On the world stage has been dominated by two things: the pandemic and climate change. The former has been driving the stupid into the arms of proto-fascists, and the latter has been creeping up on us like a roaring lion looking to eat a dumb kid playing candy crush with headphones on.

The Idiot's Coup and the Rise of Stupid Pride

2021 opened with the horde of objectively stupid people demanding that Trump be awarded a presidency he didn't win, culminating in an assault on the capitol. The degree to which there was inside help is still being investigated and Trump's complicity remains insufficient to put him in gaol. He may well run for president again.

The US is also embroiled in a moral panic around critical race theory, a phrase that has a very specific meaning but to which the right-wing has attributed every bogeyman they could invent to scare parents.

The anti-vaxxers have been having a field day with the rollout of the COVID-19 vaccines. Before the pandemic they were just dangerous idiots, now they're dangerous idiots with substantially growing numbers. There's even a guy out there who claims to be the inventor of the COVID-19 vaccine telling people it's unsafe, and people are listening to him as if he's an authority.

He's not. He's a dangerous lunatic.

And finally, fuelled by Facebook, Twitter, Telegram, and the seemingly bottomless potential for human stupidity, QAnnon is still a thing.

Eurovision!

On a happy note, Eurovision returned this year! Not only that, but the top performances were all from groups that sang in their native languages, hopefully marking the weakening of a trend toward English-only events.

Here are some of my favourites if you're curious:

Fire & Water

There were two major climate events in 2021: the massive flooding across Europe and the unrelenting wildfires in Greece. The floods claimed 196 lives and cost roughly €10 billion, while the fires in Greece ravaged the entire country. The outpouring of resources and personnel was inspiring, with firefighers, trucks, planes, and helicopters arriving from across the EU and beyond

The Withdrawal from Afghanistan

NATO finally pulled out of Afghanistan in 2021, making this Canada's longest-running war ever: 20 years. I remember when it started, just after September 11th the US, and to a lesser extent, the whole world was looking for a target to direct our wrath. There were a few measured voices, calling for reason and reflection, but the overwhelming response was a call for blood. "Those people over there" had to pay for the 2,996 lives lost and we made it happen to the tune of a kill list so long it has a whole Wikipedia page devoted to trying to measure it.

In the end, the war served to spawn another war in Iraq, the creation of an entirely new movement for an Islamic state, and likely thousands of disparate terrorist networks. Our exit was so abrupt and disorganised that any semblance of liberalism was crushed by the Taliban within days and now the new enemies we've made have new crops of desperate people to recruit to the cause.

I'm not an expert on any of this, but any fool can see how broken this whole process was from the start. There was never an achievable goal to the whole thing, just perpetual war, which I suppose is an end unto itself. Regardless, if you'd like to hear the opinions of actual experts, I strongly recommend Canadaland Common's excellent new series, "War" that covers the withdrawal and the chaotic disaster that it was for the people left behind.


And I guess that's where I'll leave it, if for no other reason than I'm tired and I've been writing this for a few hours now.

I just want to say though, that I'm conscious of how lucky I've been this last year. Despite a global pandemic, my family is all still alive, my kid is happy and healthy and we have a home to raise her in. I have a skill that's in demand so employment is reasonably secure and despite the ineptitude of the local government, the UK remains largely unscathed from the horrors others have had to endure.

I'm not sure that "thankful" is the right word, since it suggests some external force to thank for our good Fortune, so instead I'm going with a recognition that our fortune is localised, that it could change any time, and so I need to remember that when spending time with the people I love.

January 30, 2022 13:30 +0000  |  Canada COVID-19 Politics 3

For those not up on Canadian politics (though this is all international news by now), a large group of truckers started what they call a "freedom convoy": a long stream of trucks have driven to the nation's capital (Ottawa) and demanded that the government end the vaccine mandate imposed on border crossings with the US. They see this mandate as imposing on the right of bodily autonomy (it's not exactly a "choice" when your alternative is starving) and they want it gone.

Unfortunately, that's the limit to any semblance of critical thinking these people have exercised on this front. There are a number of legitimate problems with this campaign:

  • The mandate at the border exists on both sides. In order to enter the US you must be vaccinated, so even if Canada didn't have this mandate, this would be a zero net-gain: you'd still have to be vaccinated to enter the US in the first place. This is likely a deliberate agreement between the two countries to ensure limited migration of the virus across the border.
  • Health policy in Canada is generally set by the provinces, and the federal government has no jurisdiction in this area. These people left their own provinces to protest at the seat of a government that can't make the changes they're demanding.
  • And finally, my favourite one is that their demands are not for the Prime Minister or even the House of Commons, but to the unelected senate and largely ceremonial Governor General, neither of which have the power to do anything without legislation voted on by the House.

The people running this thing are clearly not burdened with an overabundance of schooling, but that hasn't stopped tens (maybe even hundreds) of thousands of people from joining the campaign in their own cars. My brother is telling me that he's seeing cars and trucks lining up all over BC, and there are similar reports of smaller groups forming all over the country.

Who Are They

The protest has evolved from one ill-conceived campaign against a cross-border vaccine mandate into one against any attempt to further combat the virus and that's got a lot more traction with a lot more people.

There's a lot of different groups of people in this thing. You've got antivaxxers, anti-maskers, racists, homophobes, transphobes, and straight up Nazis in the mix, but it's important to note that these groups don't entirely overlap. My understanding is that the majority are anti-maskers, and while a lot of them aren't vaccinated, a lot of them claim to be vaccinated themselves. They're not all racists, bigots and Nazis, but a lot of them definitely share a lot of racist content on Facebook where this thing is being organised.

As an aside, seriously, if you're in a Facebook group where people are sharing stuff about the "great replacement theory", how do you manage to think: "yeah this is definitely a group I want to be in"?

What's Happened So Far

The result of all of this is that this mob has rolled into Ottawa to stand in front of Parliament to shout at an empty building about how they want their freedoms back. After the debacle of the American coup attempt, Canada's politicians decided to be smart and get the hell out of there well in advance. Trudeau and his family have been relocated to a secret location and other MPs have been warned not to go home but rather somewhere "safe".

Personally, I'm concerned for the residents of Ottawa, especially my family. If you cram enough trucks and people into a small town like that, getting them out of there becomes a real logistical problem. Even if the organisers decided to turn around and go home right now, how exactly do you coordinate that many cars when the drivers have been told that they're there to blockade? How will the grocery stores get stocked? How will emergency vehicles get around?

...and they're not turning around right now. People are still coming. In terms of infrastructure alone, how well can the city hold up when a bunch of people who should have flunked grade 6 social studies drive into town with no plan or intent to leave?

At least things have been mostly non-violent so far. There's been some vandalism, and some crass, shitty behaviour (not at all surprising), but unlike January 6th, no one has tried to kill or kidnap anyone.

Trudeau's Failed Leadership

Out of all of this, I think I'm most angry at Trudeau and his Liberal Party (though not for the same reasons as the mob). Canada has been dealing with COVID for more than 2 years now and while information was skint when this all started, everyone definitely knew that there would be a massive toll on Canada's medical infrastructure and the economy in general.

His leadership in these areas has been terrible during the pandemic. He effectively bet everything on a vaccine and did little to address the gaping holes in Canada's medical system that existed long before the pandemic. Doctors and nurses are still working 16-hour shifts watching people die every day. Hospitals are still underfunded, understaffed, and completely unable to handle the new reality: COVID isn't going away.

Inflation is way up, driving up food prices while wages have remained largely flat. Housing costs remain exorbitantly high, and as a result, millions of working-class Canadians are constantly afraid of losing their jobs, their homes, and finally their lives.

Trudeau's response to all of this as been to scapegoat antivaxxers and anti-maskers who, while objectively being selfish assholes, are hardly to blame for high inflation and housing insecurity. He's found a wedge to drive into the public, that keeps us all blaming each other instead of him for his complete lack of leadership in key sectors during a pandemic. What's worse is that by politicising the unvaccinated, he's driven a biologically significant portion of the public to dig-in and refuse vaccination.

People are idiots, but it's a leader's job to know this and find a way to help everyone despite their idiocy. Trudeau has done what all Liberals do though: found a way to keep his job by pitting Canadians against each other.

Why the Convoy is Stupid

There are legitimate criticisms of Liberal leadership, but we can't talk about them because doing so requires adult concepts like understanding other people's perspectives and accounting for nuance in complex topics. Trudeau doesn't want these sorts of conversations because it would inevitably lead to interrogating his failures, and so the convoy is great news for him.

Now he can point to a clearly identified minority who get their "facts" from Facebook as the problem, and then go back to doing nothing to actually help them. All of those people who are afraid of losing everything -- they now may well do just that, and he's cool with it. He's convinced enough of us that they're the real problem after all.

January 12, 2022 23:58 +0000  |  COVID-19 Mental Health Politics Science 0

It's been just over two years since this all started. Back in 2020 everyone with half a brain was concerned: there was zero immunity, not even an inkling of a vaccine, an endless void of things we didn't know about COVID-19 and mass graves being dug in urban centres around the world.

Since then, by some estimates around 5.5 million people have died from the virus. In the U.S. alone, COVID-19 killed more people in the last 28 days than car accidents killed all year. No matter how you cut the numbers, this has been far more dangerous than the flu. The threat was real, the evidence speaks for itself.

A few important things have happened since then though:

  • We've rolled out around 9.6 billion vaccine doses. Yes, the distribution of these doses has been grossly disproportionate between the rich and the poor (hooray for Capitalism!), and some of these have been more effective than others. Some doses have had some scary side effects (albeit in fringe cases), but huge swaths of the world are now demonstrably safer than we once were.
  • Our understanding of the virus has exploded, and with it, public understanding has grown considerably (though the misinformation is rampant out there as well). Some of the key critical pieces of information we've learnt so far include:
    • Children under 12 don't seem to be affected very strongly by the virus. In nearly all cases, if symptoms exist at all, it's indistinguishable from the common cold. They are however demonstrated carriers.
    • The vaccine does not prevent infection (fun fact: few vaccines manage this), but importantly while it reduces the negative effects of the virus on the recipient, transmission appears to still be common, albeit likely diminished compared to the unvaccinated.
  • The Omicron variant, while difficult to pronounce for some (seriously people, find a Greek to help you already) is proving itself to be a milder form of the virus. It causes far fewer severe cases, even fewer hospitalisations, and even fewer deaths. Among the hospitalised and dead, the highest proportion are the unvaccinated and those who likely would have bought the farm with a bad case of the flu.

So, as rational people who accept new information and circumstances as they are (rather than trying to distort them through a lens of bias) we must re-evaluate our response to the virus with this new information in mind. Let's recap the above into something easier to digest:

  1. People most likely to suffer severe side effects have a vaccine to protect them.
  2. This vaccine has proven very effective at keeping people alive.
  3. The latest (and dominant) variant is a demonstrated lower risk.

Now combine that with the effects of our COVID-19 countermeasures on society:

  • Domestic abuse cases are up
  • Education has been torpedoed for two straight years, disproportionately affecting the poor who lack access to study space, internet connectivity, and/or computers at home.
    • Putting aside the academic costs, the price paid by children in their social development will only be seen with time.
  • Substance abuse cases are up
  • Obesity rates are increasing among children (and I'm going to go out on a limb here and assume the same for adults).
  • Our collective mental health is an absolute disaster.
  • Our physical health is taking a beating too, with people avoiding hospitals, Cancers are going undiagnosed until it's too late.

It's in the context of all of the facts that we have to weigh the social costs of things like closing schools, gyms, and other public venues, cancelling public events, and mandating vaccines for children. On a personal level, it seems prudent for people to dial back the fear. It's not 2019 anymore. We know more, we have more defences, the risks to our health are greatly diminished and that's something to celebrate.

We need to calm down and stop screaming at our leaders to do crazy things like lock the country down again. If that was going to work, we should have done it (properly) two years ago. Doing it today will only give you the illusion of safety, which frankly is the more dangerous public policy. We need to stop trying to force parents to vaccinate their 5 year olds and start reaching out to people who have been isolated throughout the pandemic. Let's address mental health, tend to the wounds of those of us who really got screwed by all of this: the poor, the working class, the global south, and take a sober second look at the state of our health care system.

I'm going to do my part. It's been two years: I can recognise the results of my own social conditioning and I don't like what I see. I'm going to make a concerted effort to break down the walls I've built around me over the last two years and I encourage you to do the same.

I'm going to continue wearing a mask indoors when I go shopping, because while the science on masks-as-public-policy is still pretty fuzzy, I think more than anything it's a recognition of consideration for the feelings of others. As time goes on though, I expect to lose the mask as well. Once the official guidance changes over here, I'm also going to start going back to the office -- provided my team members are of similar mind. I need to get back to my life, and now that we have the knowledge & tools at hand, it's finally the right thing to do.

January 07, 2022 22:53 +0000  |  Free Software Linux Majel 0

For the last two years I've been working on Majel, a project that allows you to control your computer with your voice. The first incarnation was released back in March, but was dependent on Mycroft, so I've been working to rewrite it to be independent. The end goal: to be able to release it as an image file for the Raspberry Pi so people can just download it, burn it onto an SD card, pop it into their Pi and have it Just Work™.

The development process has been surprisingly easy, with only a few hiccups around audio processing in Python. The new architecture has proven to be really solid and I'm excited to share that in detail at a later date -- but that's not what this post is about. This post is about packaging for the Raspberry Pi and what a nightmare it's been for me.

For the purposes of this post, you just need to know that I wrote a Python application that interfaces with GNOME, Firefox, Chromium, Skype, and other desktop tools to do cool stuff.

What follows is a series of things I now understand that came at the cost of a lot of time and hair-pulling. If you're thinking about going down this road for your own project, my hope is that sharing my experiences here will help save you frustration in the future.

The CPU Architecture

Anyone who knows anything about the Raspberry Pi project can tell you that these little devices don't run the same kind of CPU you're probably used to. Where most computers we use today (not including phones) use x86 processors (typically built by Intel or AMD), the Raspberry Pi uses ARM chips. If your knowledge of the situation (like mine) ended there, then I'm about to save you some pain.

Just like the x86 ecosystem (which consists of i386, i686, x86_64 and other "sub-architectures"), the ARM family includes a wide variety of architectures which you need to build explicitly for when you're making your own stuff. For example, if you've got a Python wheel labelled aarch64 it will only run on 64-bit ARM systems, while one labelled armv7l will run on 32-bit ARM systems.

The Raspberry Pi's hardware 4 can run both but the default "Raspberry Pi OS" is 32-bit and exclusively runs armv7l binaries. If you want to use aarch64, you must install an OS other than the default.

Python Support

In the Python world, the vast majority of packages on PyPI are "pure-python" (ie. they will run on any system already running Python). However there's a lot of packages out there that're bundled with some compiled code (usually C or C++). These packages must be compiled exclusively for your architecture in order to run and if your architecture isn't supported with a pre-existing build, you either have to build it yourself (painful, especially on a Pi) or you're shit out of luck.

For example, the popular cryptography library is not pure python and therefore must be compiled for the architecture it's running on. Thankfully, that project's maintainers support a variety of platforms but note that armv7l isn't one of them.

In fact, finding a package on PyPI with support for armv7l is actually quite rare. Instead, Raspberry Pi users have a special "hack" on their system (one of many I discovered in my travels), an additional Python repo, enabled by default: piwheels.org.

If you're running Raspberry Pi OS, you'll find that nearly all of your not-pure-python packages are not coming from PyPI at all, but are rather coming from piwheels.org: a repository of .whl files, built exclusively for the Raspberry Pi. This is pretty great, though it was definitely a surprise.

If however you're not using Raspberry Pi OS and are instead using an aarch64-based OS like Manjaro, then there's no piwheels.org for you. Instead, you have to hope that the package you need has pre-built support for your architecture. Thankfully, aarch64 is much more common in PyPI, but it's not everywhere. The vosk package for example has armv7l packages but not aarch64 ones.

Finally, Poetry has an annoying bug/limitation in it that means you can't configure your pypackage.toml file work across architectures. Your poetry.lock file will only store hashes for one architecture at a time, so if you run poetry update on an x86_64 machine, the resulting poetry.lock will be entirely different from one generated from an aarch64 machine. As this undermines the whole idea of a consistent, distributable, versioned lock file, it's rather disappointing.

The Operating Systems

So now that we know a bit about the limitations of Python in different operating systems running on the same hardware, let's talk about those systems in more detail

Raspberry Pi OS (formerly Raspbian)

Raspberry Pi OS is Debian-based, but critically it is not your typical Debian system. In an effort to make using the Pi easy for everyone from children to seasoned professionals, the Raspberry Pi Foundation has applied a lot of tweaks and hacks to standard Debian which can catch you off guard if you're not ready for them.

Old & Busted Software

Like any Debian system, everything is old-as-fuck as the maintainers prefer stability over modern features. If you're using your Pi to control humidity in a greenhouse, this is probably a good idea, but if you're hoping to take advantage of modern graphical user interfaces, you're going to have a bad time.

For example, the current version of GNOME available for the Pi is two versions behind the GNOME project's release schedule and it's a good bet that that gap will grow with time. As for Firefox, the most recent version you can get is Mozilla's "extended support release" (ESR) which is a nice way of saying "we promise to support this version for years and years but it won't be meaningfully updated during that time*.

What's more, simply installing GNOME on a standard Raspberry Pi OS image absolutely will not work because there's something called pi-package installed by default that claims to have installed an inferior version of gnome-settings and that conflicts with the would-be-installed version. You must instead use a "Lite" version of the image (the one that doesn't come with X or LXDE) and then install GNOME from there.

Special Configuration Pattern

Configuration of the Pi is done with a program called raspi-config which is installed by default, but if you're using a Pi 4, most of the options you can select in this tool will fail to apply.

As best I can tell, Bluetooth is entirely broken from the start. None of the usual patterns I would expect to get it working (like running systemctl start bluetooth and opening the Bluetooh UI) resulted in success. This is not a hardware problem, but a software one. I can only assume that there's some special Raspian way to do this.

Non-standard Re-packaging

Chromium is a first-class citizen in Piworld, installed by default on the standard image, but strangely listed as chromium-browser rather than the usual chromium. You can even get Widevine support in it (so you can watch encrypted video on Netflix & Prime) simply by running apt install libwidevinecdm0. This deviates from what you see on a typical Chromium install, since modern versions of Chromium allow you to download Widevine support automatically. I can only assume that this is a special concession for the armv7l architecture.

Widevine support in Firefox appears to be impossible.

Kodi has been compiled to exclusively run without an X server or Wayland present. Undoubtedly this is to allow Pi users to just install Kodi and run it without the overhead of a UI they aren't using, but if you want that standard overhead, you're SOL.

Building Your Own Image

If your goal, like mine, is to distribute your app as a Raspberry Pi image, then you'll want to look into pi-gen, an automated system that let's you build a Pi image on an x86-based machine. It's impressively simple, but critically only runs on Debian-based systems. If you're running Fedora, Arch, or some other system, they have a Docker-based runner, but I couldn't get it to work. To get it working on my Arch system, I started a Debian VM and and it worked beautifully... after consuming a whopping 42GB of disk space!

My original idea what to build Majel automatically via Gitlab's CI. With a disk footprint like that however, I'm afraid I'm going to have to rethink that idea.

Manjaro

After running afoul of all of the above, I started looking into alternative base images to work with. Thankfully, Raspberry Pi's excellent Pi Imager (available on FlatHub) makes the burning of alternative images super-easy, and I found Manjaro Linux (a flavour of Arch Linux) to be a really good starting point for my project. In fact, there's a GNOME variant available so you can burn an image that boots into GNOME shell!

As an Arch-derivative, it runs really close to the bleeding edge, so installing a modern version of Firefox and Kodi was super-easy. There were a few surprises though.

It's Not the Same Architecture

While Raspberry Pi OS is running on armv7l, Manjaro builds all of its packages for aarch64. That means that piwheels.org is out of the question, and that there's still going to be some Python packages that aren't published to PyPI with support for Manjaro on a Pi (looking at you vosk).

Wayland is the Default

It's a "new hotness" sort of OS, which means that the default UI server isn't Xorg, but Wayland. For most people, this is probably ok, but for me, since my project relies heavily on Xorg (Majel uses pyautogui which can't do Wayland) this was a problem. Thankfully, you can switch to using Xorg simply by installing xorg-server and uncommenting the WaylandEnable=false line in /etc/gdm/custom.conf.

Widevine is... Problematic

While getting Widevine support in Raspberry Pi OS is easy, getting it working in Manjaro is pretty sketchy. Sure you can install modern versions of both Chromium and Firefox and they work great, but Widevine isn't there, and it won't autodownload, even in Chromium.

Instead, you have to install this crazy/amazing package called chromium-docker from the AUR. The installation process builds a local Docker image of Ubuntu wherein you install Chromium and you can take advantage of the aforementioned libwidevinecdm0. Running it from that point forward involves starting the Docker container and running Chromium from inside it. That's just... bananas.

Packaging is Tricky

The easiest way to make my project installable on Arch-based systems is to contribute an AUR package, but writing one that will install properly on both aarch64 and x86_64 systems was surprisingly not straightforward.

All the docs you read will tell you that there's one variable you set for package sources, conveniently called source=(). What took far too long to find was that you can actually suffix this variable name with the name of the architecture: source_aarch64=() and source_x86_64=(). You then do the same for the sha512sums=() variables and finally, you write some sketchy if/else Bash in your package() function to check if ${CARCH} is equal to aarch64 or x86_64 etc. Have a look at what I had to do for the vosk library if you're curious.

Creating Your Own Image Looks Easy

Manjaro has all of their OS builds available on GitHub, so from the outside it looks like making your own build should be easy. I haven't tried it yet though, so I can't comment.

Everything Else

With the exception of the above, working with Manjaro on the Raspberry Pi is delightful. Getting my Flic button paired with the Pi via Bluetooth was 100% painless and straightforward, and the OS in general has all sorts of nice creature comforts built into it, like zsh by default, a pretty drop-in replacement for cat, and a nice set of custom icons.

Ubuntu

Finally, there's Ubuntu, which admittedly I actively dislike. The whole proprietary Snap system, the ugly re-skinning of GNOME, the dependence on Debian unstable under the hood so everything is both old and broken... Ubuntu is everything I don't want in Linux under one roof. It's also hugely popular though, and likely the only place I'll be able to get Widevine easy out-of-the-box.

The first time I installed it, it locked up the mouse and keyboard for minutes at a time during the initial setup phase. As I write this, I'm still waiting for the initial boot to finish and the mouse is frozen on the screen. I'm not confident that my desire to see this work will be strong enough to overcome my contempt for this distro.

In General

The Pi is marketed as a tiny computer that you can leverage to do anything your heart desires provided you have the time, patience, and are comfortable with a low-power device doing the lifting. The question is though: is something as complicated as a voice-activated desktop automation system that plays streaming video even possible on hardware as limited as a Raspberry Pi?

It turns out, it's totally doable. In Raspberry Pi OS, I managed to bring up simultaneous instances of Firefox and Chromium and play "The Witcher" on Netflix by way of voice command. All processing, even the speech-to-text handling was done on-device and the performance was admirable.

The only caveat I will mention is that streaming video at full screen will absolutely not work at 4K resolution. In fact, I didn't get anything resembling a good framerate until I bumped the resolution all the way down to 1280x720. For my purposes though, this is completely reasonable: this is basically a very smart television after all and the quality of stream I get from Amazon Prime is abysmal anyway.

Conclusion

As long as this post is, it isn't even the end of my development process. I still have to give Ubuntu a fair shake and decide which of the above will be the reference platform for Majel. It'll install just fine on x86-based systems, but as the Pi is what I always envisioned for it, I want to get this part right before I officially "release" the new Mycroft-free version 2.0. Hopefully that'll be sometime in the spring, as I only have a few hours a night to work on it.

Until then, maybe the above will be useful to someone. If it was, please leave a comment! If it wasn't and you have questions, feel free to ask :-)

October 13, 2021 23:25 +0100  |  Violet 0

My sister in law is wonderful, but she's also strangely infuriating. She's one of these people that can be handed the absolute worst thing in the world and find a way to see the good in it.

So you might imagine how her reaction her daughter being diagnosed with stage 4 neuroblastoma might conflict with my natural tendency toward anger, frustration and helplessness. Somehow, every time I check in with the family, she's paradoxically positive about the whole thing.

  • My brother has got his head down, working to fight this thing.
  • My mother is angry.
  • My father is depressed.
  • ...but Shawna goes on and on about how grateful she is.

It's taken me months to understand it, but I think I finally do. All this time I've been angry at a god I don't believe in for giving my niece Cancer, and Shawna's been looking at the reality of the situation:

Violet has Cancer. This is a fact. A terrible fact, but it's not something to which we can ascribe malice or blame on any individual. It's rather pointless to waste energy being angry about something that wasn't consciously inflicted. Instead, it makes sense to recognise the beauty in this moment:

  • The literally hundreds, even thousands of people who are rooting for her, donating time, money, toys, and books to her.
  • The amazing generosity of the Ronald McDonald House that has given her family a home while Violet is treated.
  • The Canadian health care system, funded by the whole country to give Violet a fighting chance.
  • The constant flow of encouraging messages from around the world.

I'm not sure that I have it in me to be so clear-headed about this, but I admire her for her perspective. It's definitely the healthier attitude, both for her and for Violet. I'm going to try to be more like her.