tag:quandyfactory.com,2024-12-12:/202412122024-12-12T12:00:00ZQuandy Factory Newsfeed - BlogQuandy Factory is the personal website of Ryan McGreal in Hamilton, Ontario, Canada..http://quandyfactory.com/blog/282/canadians_are_freaked_out_-_and_furious2025-03-12T12:00:00ZCanadians are Freaked Out - and Furious
<p>Americans pay almost no attention to Canada because why would they? Whereas Canadians pay a lot of attention to America because we have no choice. So the information asymmetry across the world’s dumbest trade war is really stark.</p>
<p>Not only do most Americans not pay attention to Canada, but to put it bluntly, most Americans don’t pay attention to America, either. Americans by and large are sanguine because most of them don’t actually listen to what their president says on a daily basis.</p>
<p>Canadians, on the other hand, are hanging on his every word. Again, we don’t have the luxury of ignoring him, since he has the power and the temperament to upend our entire country.</p>
<p>To any Americans reading this: your Canadian friends are rattled. We’re anxious, scared, angry, outraged, and lowkey freaked out that your leader keeps threatening to annex us. </p>
<p>Maybe it started out as a joke, but Trump’s army of intellectual Zambonis have formulated his rants into an actionable ideology.</p>
<p>We’re also royally pissed off, and we’re goddamned determined not to give up our country.</p>
<p>Trump is a malignant narcissist and a megalomaniac who has surrounded himself with deranged zealots and feckless sycophants. He desperately wants to be remembered as a Great Leader who did the unthinkable, expanded American territory and changed the course of history.</p>
<p>That makes him extremely dangerous.</p>
<p>We really don’t understand why so many of you decided to hand the keys of the White House this staggeringly unfit tyrant again. </p>
<p>Something about the price of eggs?</p>
<p>When I say Canadians are pissed off, I mean it. We’re furious. We’re so angry at this brazen assault on our sovereignty that most of the profound internal conflicts that normally divide us have receded to the background so we can unite against this foreign aggression and stand together in solidarity.</p>
<p>From the collapse of separatist sentiment in Quebec to the unlikely redemption of (double-checks notes) former Alberta Premier Jason Kenney as Captain Canuck, Canadians are setting aside their differences to fight for our country.</p>
<p>We’re choosing Canadian businesses to support, boycotting US imports wherever possible and picking other places to travel.</p>
<p>It’s not personal. We love Americans and had no beef with America before Trump launched his campaign to destroy Canada’s economy so we give up our sovereignty.</p>
<p>So on behalf of Canada, let me ask our American friends: please pay attention to what the man is saying and doing. If you don’t like it, do something about it. Make some noise, pressure your elected representative, join a civic organization, speak up at a town hall, join a protest.</p>
<p>If he gets away with doing this to Canada, you’re next and no one is safe. </p>
<p>Authoritarians love a war to give them the emergency power to suspend civil liberties and engage in mass arrests.</p>
<p>Don’t believe it can’t happen to us or to you.</p>
<p>We’re going to keep fighting against Trump’s invasion, however we can and however we need. But it would be much better for the world - including America - if you can figure out how to contain his lawlessness before he does something that can’t be undone.</p>
Ryan McGreal2http://quandyfactory.com/blog/281/anything_can_happen2025-03-11T12:00:00ZAnything Can Happen
<p>Among Canadian football players, it is sometimes joked that CFL stands for “Can’t F—ing Lose”, thanks to the three-downs rule and the field size. The winning team can’t easily run out the clock and so fortunes can change suddenly.</p>
<p>Politics can sometime feel the same way. Three months ago, if you had insisted the Liberal Party of Canada had a real shot at winning the next election, most people would think you were delusional. </p>
<p>Yet here we are, with a new Liberal leader who can credibly campaign on an outsider’s change mandate, and a dramatic reversal of the polling trend that so recently saw the Conservatives cruising to a blowout victory.</p>
<p>I’m not making any firm predictions, only noting that an outcome which seemed inexorable mere weeks ago is now very much up for grabs.</p>
<p>Anything can happen. </p>
<p>In an open society where power is distributed widely, no single agency has the power to determine and enforce an outcome. </p>
<p>This, of course, is precisely why authoritarians hate open society. </p>
<p>Authoritarians hate liberal democracy, with its deliberate diffusion of powers throughout the society.</p>
<p>Authoritarians hate independent news media who exercise editorial freedom to report unfavourably on them. Instead, they want obedient regime media who curry favour and access with the authoritarians through fawning, dishonest coverage.</p>
<p>Authoritarians hate an independent judiciary that tries to enforce constitutional principles fairly, accusing the judiciary of being “activist” when it rules against them and trying to stack the judiciary with shameless loyalists.</p>
<p>Authoritarians hate professional, nonpartisan government employees who are dedicated to the principles of public service and loyal to uphold the law. Authoritarians seek to replace them with loyalists and sycophants who will do the authoritarian’s bidding.</p>
<p>Authoritarians hate competing political parties who dare seek to win power away from the authoritarian, and they abuse their power over the electoral process to stack the deck against their rivals. In extreme cases, they seek to destroy the careers of their opponents by manufacturing scandals and controversies.</p>
<p>Authoritarians hate independent NGOs organized by groups of citizens who believe they have a right to try and shape public policy. Authoritarians accuse such groups of being illegitimate, foreign-controlled, even treasonous, and they seek to use the power of the state to bully the groups into submission. </p>
<p>The goal, in an authoritarian system, is to close the space of possibilities, to exercise deterministic control over outcomes, to ensure that nothing can happen outside the authoritarian’s control.</p>
<p>A politics of certainty is necessarily a politics of tyranny. The only way to accrue enough power to determine outcomes is to strip-mine so much power from the rest of society that it ends up closed, illiberal and servile. </p>
<p>And by contrast, the only way to maintain an open, liberal, democratic society of independent citizens with agency over their own lives is by working together ensure that no authoritarian is able to consolidate and hoard all the power to himself. </p>
<p>Authoritarians want you to accept their absolute control. But their control is just an illusion.</p>
<p>When people get organized and creative, anything can happen.</p>
Ryan McGreal2http://quandyfactory.com/blog/280/trump_turns_hanlon’s_razor_on_its_head2025-03-07T12:00:00ZTrump Turns Hanlon’s Razor on its Head
<p>It’s time to flip Hanlon’s Razor on its head.</p>
<p>Hanlon’s Razor states: “Never attribute to malice that which is adequately explained by stupidity.” But in the case of Trump, we need to assume the opposite: “Never attribute to stupidity that which is adequately explained by malice.”</p>
<p>When Trump ranted in his recent address to Congress about the NIH funding research to make mice transgender, I figured it was BS because almost everything he says is BS.</p>
<p>And that was an easy call, because, as those quaint fact-checkers in the legacy news media quickly observed, the research was actually about making mice <em>transgenic</em>, ie. genetically modifying them to do things like test cancer treatments.</p>
<p>I am seeing lots of takes mocking the stupidity of the goons behind this ridiculous error. And far be it from me to get in the way of someone calling out the stupidity of horrible people doing stupid things.</p>
<p>But I do think focusing on how stupid it is misses a larger point: it may indeed be stupid, but more importantly, it’s <strong>malicious</strong>.</p>
<p>I’m not at all convinced that it is stupidity leading them to the kind of error that mistakes transgenic with transgender. </p>
<p>In fact I think it’s at least as likely that their conflation was deliberate - or at the very least indifferent.</p>
<p>The DOGE bags and MAGA hacks are looking for anything that they can sell as a “corrupt” or “woke” line item they have found in the budget, regardless of whether it’s real or even particularly credible.</p>
<p>They know they control the media narrative and that in the minds of their followers, an assertion becomes true by the act of asserting it. It’s an exercise of the power to shape reality.</p>
<p>Trump and his enablers know their base will never question them or go looking for independent verification. They will accept it happily, because it reinforces what they already want to believe.</p>
<p>But the obvious stupidity also plays another malicious role: The people in Trump’s orbit who know it’s BS are forced into a choice. They can go along with the BS to show their loyalty, give up another slice of their dignity and further shut the door on ever breaking free.</p>
<p>Or they can say something about it and incur the wrath of MAGA. </p>
<p>The Trump sycophants who know it’s BS have allowed themselves to become prisoners of their own willingness to sacrifice their principles to advance their ambition.</p>
<p>And they know, deep in their hearts, that it still isn’t enough to secure their place: that they are one misstep, one careless eye roll, one capricious turn of the king’s mood, away from being thrown out the window anyway.</p>
<p>They live in terror and are desperate to show their loyalty so they can hang on a little longer. (And no, I’m not asking you to feel sympathy for them.)</p>
<p>So the more absurd a claim is, the more effectively it serves as a loyalty test that locks in the fealty of people who absolutely know better.</p>
<p>It’s why there are formerly normal people today insisting with a straight face that Canada is a rogue nation run by Mexican drug cartels that needs to be disciplined and then annexed. </p>
<p>That’s stupid. But more to the point, it’s deeply, fundamentally malicious.</p>
<p>And so Hanlon’s Razor needs to be flipped upside-down when it comes to anything Trump. The stupidity must be understood as being in service to the malice.</p>
Ryan McGreal2http://quandyfactory.com/blog/279/one_lesson_the_centre-left_needs_to_learn_from_the_right2025-03-06T12:00:00ZOne Lesson the Centre-Left Needs to Learn from the Right
<p>Are you familiar with <a href="https://austinkleon.com/2020/12/10/quantity-leads-to-quality-the-origin-of-a-parable/">the story of the ceramics teacher</a> who split their class into two groups? One group would be graded on the quality of one perfect piece, while the other group would be graded on the sheer quantity of pieces they made.</p>
<p>The surprise twist is that the second group actually made the best quality pieces, because they made so many that they got really good at it, while the first group spent all their time trying to make one perfect piece and didn’t hone their skills through trial and error.</p>
<p>The modern right are like the second group, rapidly spraying out a firehouse of one hare-brained, half-baked idea after another to see what resonates and what sticks.</p>
<p>It’s a cacophony of conflicting and downright bizarre stuff and most of it is objectively bullshit. But through sheer law of averages, at least some of the stunts do happen to catch on, and they build momentum and get picked up and repeated a bunch of times and modified and tweaked and fine-tuned along the way and gradually add up to something loosely and superficially resembling a campaign.</p>
<p>All the constant heat and noise and outrage and endless variation means they capture a lot of public attention, including crucially from people who don’t pay attention to politics as such.</p>
<p>In contrast, the centre-left are like the first group, trying to figure out how to make one perfect piece of ceramic that will make the judges swoon, and unsurprisingly they’re not making any headway.</p>
<p>I’m not suggesting the centre-left abandon the idea of making sense. But they would benefit from adopting a culture of rapid prototyping to learn what resonates, what “breaks through” to people who don’t follow politics, and start to develop some skill in navigating the new attention economy.</p>
<p>It’s excruciating watching Democrats flail around, unsure of how to respond to Trump and waiting for someone to come along and provide a unified, poll-tested message they can align around.</p>
<p>It’s time for everything everywhere all at once. Don’t worry about messages that fall flat, just learn and move on to the next thing. Get some reps in, build muscle - and create space for the next generational communications talents who are out there right now, growing and incubating for the upcoming campaign to fight for what remains of liberal democracy.</p>
Ryan McGreal2http://quandyfactory.com/blog/278/it’s_not_even_good_coding_practice_2025-02-08T12:00:00ZIt’s Not Even Good Coding Practice
<p>I think the story Elon Musk is telling himself and his fanboys about what he’s doing is that he’s cutting the cruft out of the codebase of the US government to make it more streamlined and effective. </p>
<p>As he says, he thinks regulations should be “default gone. Not default there, default gone. And if it turns out that we missed the mark on a regulation, we can always add it back in.”</p>
<p>I understand this impulse. I’ve done something similar myself at times with a piece of functionality when no one has any idea who uses it. Turn it off and wait to see if anyone squawks.</p>
<p>There are almost certainly some aspects of the US government that fall into this category. And I guess <em>one</em> way to find out what is really needed is to delete all of it and wait to see what happens.</p>
<p>But as any experienced, responsible developer knows, just because <em>you</em> don’t understand the point of a piece of code, that doesn’t mean it’s pointless.</p>
<p>This is especially salient in the set of federal government policies, where a great many of the programs and regulations were written in blood after a disaster.</p>
<p>The responsible way to refactor a big, messy, complicated codebase that has evolved by accretion over a long period of time is to:</p>
<p>(1) Carefully review and document your requirements so you understand what the code must do.</p>
<p>(2) Write a comprehensive test suite that checks all the items of functionality you identified.</p>
<p>(3) Move your code into a version control system so you can keep track of (and if necessary roll back) your changes.</p>
<p>(4) Set up a development environment that mimics the production environment where you can test changes before deploying them into production.</p>
<p>(5) Run your test suite on your code in dev after every change to make sure you didn’t break anything.</p>
<p>(6) Deploy your changes to production once they’ve been tested and pass every test.</p>
<p>Needless to say, the DOGE script kiddies breaking into departments, hijacking their code and reportedly pushing hot fixes into live production systems aren’t doing any of that.</p>
<p>When you wholesale shut down a government program because you are ideologically inclined not see the point of it, suddenly you may find that airplanes are falling out of the sky, veterans can’t get healthcare, farm produce rots in a warehouse while children starve.</p>
<p>Suddenly there’s a new global pandemic of Ebola and a new global pandemic of multi-drug resistant tuberculosis. AIDS drugs stop working. The historic mission to cure cancer grinds to a halt.</p>
<p>It’s reckless and unprofessional. It’s negligent and lawless. It’s unconstitutional and unconscionable. It’s hypocritical projection from a gang of thugs who falsely accused their political opponents of acting unilaterally without legal authority.</p>
<p>It is a shameless, sociopathic power grab. It is cruelty for cruelty’s sake. </p>
<p>And on top of all of that, it’s not even good software development practice, which is supposed to be the thing they’re good at.</p>
Ryan McGreal2http://quandyfactory.com/blog/277/try_additive_approach_to_climate_policy2025-01-19T12:00:00ZTry Additive Approach to Climate Policy
<p>Here’s a proposed analogy for how we might try to think about moving to a net-zero carbon economy: an additive approach works better than a subtractive approach. </p>
<p>I’ve been an on-and-off vegetarian for around 30 years (these days my diet is plant-based but not exclusively). When I started, I didn’t do it by cutting out meat dishes. </p>
<p>I did it by adding more and more vegetarian dishes until the meat dishes were all displaced from my diet. I never felt like I was giving something up - I felt like I was gaining something.</p>
<p>It was an additive approach, not subtractive. It felt like an expansion of my options, not a sacrifice. </p>
<p>So what’s my analogy to the climate crisis? I increasingly find myself thinking we should try taking a more additive approach to decarbonizing our economy.</p>
<p>For years I have felt that a consumer carbon price was inadequate but at least it’s <em>something</em>. It’s actually a classically conservative approach: use price signals in the market to incentivize a shift in demand toward lower-carbon consume goods.</p>
<p>And I thought the Liberals were smart to make it revenue-neutral and paid back as a flat rebate. That way, the more you reduce emissions in your consumer spending, the bigger net benefit you get to keep.</p>
<p>Unfortunately, they did a piss-poor job of explaining the policy to Canadians. In fact, they pretty much entirely ceded to the Conservatives, who successfully (and shamelessly) misrepresented it as a net cost when it’s actually a net benefit to the overwhelming majority of Canadians. </p>
<p>Carbon pricing is an economically efficient policy tool, but approximately half of Canadians have been convinced to despise it, and basically no one in politics is coming to its defence any more. </p>
<p>In any case, carbon pricing alone is not enough to move us to a low-carbon economy. For one thing, a lot of the consumer durables that lock in higher or lower future carbon emissions are manufactured in other countries, so shifts in Canadian consumer demand have less impact on market offerings.</p>
<p>A tiny number of corporations are directly responsible for most global carbon emissions. Squeezing consumers as a way of incentivizing demand for lower-GHG market offerings is one way to drive down emissions, but it subjectively feels both painful and futile to individuals. </p>
<p>And individuals vote.</p>
<p>As a corollary, the stick-first approach makes it easy and appealing for opportunistic politicians to demagogue against carbon pricing, since simple messaging can tap into near-universal public dislike of taxes - even though wanting to avoid paying the carbon tax is <em>precisely</em> the point. </p>
<p>In contrast, the Biden administration’s signature policy achievement, the Inflation Reduction Act, uses public policy and public investment to drive new low-emissions technologies on an industrial scale, addressing the climate crisis on the <em>supply</em> side rather than the demand side.</p>
<p>It has already driven so much new industrial investment and job creation - especially in red states - that it is quite likely to survive the incoming administration in at least some form.</p>
<p>If a Canadian political party came forward with an IRA-style approach to climate policy, I would embrace it enthusiastically - especially if it was coupled with permitting reform to stop environmental laws from being abused to block environmentally-positive investments. </p>
<p>Consumer carbon pricing is almost certainly DOA by the time our next federal election is over (if not sooner). That can be a source of despair, or it can be an occasion to try a new, bold policy that feels additive rather than subtractive.</p>
Ryan McGreal2http://quandyfactory.com/blog/276/no_trudeau_is_not_a_hypocrite_for_proroguing_parliament2025-01-08T12:00:00ZNo, Trudeau is Not a Hypocrite For Proroguing Parliament
<p>I’ve seen some takes equating the current prorogation of Canadian parliament with former Prime Minister Stephen Harper’s prorogue in 2008. Here is a short article on why they’re not the same.</p>
<p>The Conservatives won a minority of seats in the 2008 election and Harper stood up to continue as Prime Minister. His Throne Speech announced deep spending cuts and a proposal to change the party financing system in a way that would benefit his party and harm the others. </p>
<p>In response, the Liberals and NDP agreed to form a coalition, supported by the Bloc Québécois, and offer to form government instead of the Conservatives. </p>
<p>Given that the Liberals, New Democrats and Bloc represented a clear majority of MPPs, they could fairly claim to have the confidence of the House of Commons, whereas Harper, who had only his plurality of Conservative MPs, could not. </p>
<p>The parties announced that they would cast a vote of non-confidence on Monday, December 8. </p>
<p>Even though it was only two weeks after the election and the parliamentary session had just begun, Harper went to then-Governor General Michaëlle Jean on December 4 and requested a prorogue. </p>
<p>The mere request was a constitutional crisis. No Governor General had ever refused a Prime Minister’s request to prorogue, but no Prime Minister had ever requested one specifically to hide from a confidence vote just two weeks after an election. </p>
<p>On December 4, Jean agreed to his request, despite the fact that Harper had not faced a confidence vote, and allowed a prorogue until January 26, 2009. </p>
<p>That granted Harper almost two months to pour money into a propaganda operation framing the coalition as somehow ‘illegitimate’. </p>
<p>Today’s situation is different in every important respect. First, Trudeau’s government has faced a great many confidence votes over the past three years, including as recently as this past December 9, a week before parliament went into recess. </p>
<p>Second, giving the governing party time to choose a new leader is absolutely a legitimate reason to prorogue. In fact it’s exactly the sort of situation that proroguing exists to handle. </p>
<p>It’s nonsense to claim that the 2008 prorogue and the 2025 prorogue are comparable. The former was an abuse of parliamentary authority to avoid a confidence vote the Prime Minister knew he would otherwise lose. </p>
<p>The latter allows the Liberals to choose a new leader so Canadians can choose a new government in the election that will certainly follow soon after the next session of parliament begins on March 24. </p>
Ryan McGreal2http://quandyfactory.com/blog/275/my_favourite_new_songs_of_20242024-12-30T12:00:00ZMy Favourite New Songs of 2024
<p>I didn't want to try and rank them so the songs are listed alphabetically by artist.</p>
<p>You can see the full playlist here:</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/videoseries?si=8sLewidKresNtUu5&list=PLdwwn_Xv9kG0hmPUV8i6ckgklzn6RZEk-" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<p>There is also a Spotify playlist but it’s missing the Beaches track as it’s specific to Apple Music:</p>
<p><a href="https://open.spotify.com/playlist/4VaLL71l0aT1ONK5cBMszL?si=spCguJiUSTW1j4odc_s7-w&pi=u-mfHkF1MzQlW6">https://open.spotify.com/playlist/4VaLL71l0aT1ONK5cBMszL?si=spCguJiUSTW1j4odc_s7-w&pi=u-mfHkF1MzQlW6</a></p>
<h3>Ayokay - On My Mind</h3>
<p>This blissful, reverb-drenched club track glides into your brain effortlessly and stays there.</p>
<p><a href="https://www.youtube.com/watch?v=IZQ4hDYxuZA">https://www.youtube.com/watch?v=IZQ4hDYxuZA</a></p>
<h3>Bby - Pretty Boy</h3>
<p>Bby take upbeat British indie rock in the Wombats style as a jumping off point, and this jazzy track finds them in a more hip hop/grime inflected vein - especially in the Part 2 version featuring rapper Zino Vinci.</p>
<p><a href="https://www.youtube.com/watch?v=1rHAMtoZJ_A">https://www.youtube.com/watch?v=1rHAMtoZJ_A</a></p>
<h3>The Beaches - We Fell in Love in October</h3>
<p>I will always be a sucker for a shimmery pop-punk girl band, and these Canadian artists have irresistible exuberance. Their cover of the 2018 girl in red single was recorded to celebrate Pride 2024.</p>
<p><a href="https://www.youtube.com/watch?v=iggmiF7DNoM">https://www.youtube.com/watch?v=iggmiF7DNoM</a></p>
<h3>Chappel Roan - Good Luck, Babe!</h3>
<p>Chappel Roan is everywhere this year and with good reason. This sumptuous heartbreak song is just about perfect, combining Roan’s soaring Kate Bush-esque soprano with lush, symphonic orchestration and an unbearably catchy melody.</p>
<p><a href="https://www.youtube.com/watch?v=xcVwbhooTm0">https://www.youtube.com/watch?v=xcVwbhooTm0</a></p>
<h3>DAIISTAR - Clear</h3>
<p>Last year’s Good Time was a great time, packed with maximalist shoegaze anthems. In 2024 they leaned more into dream-pop with this gorgeous, restrained, midtempo single. </p>
<p><a href="https://www.youtube.com/watch?v=bev2eAyFO9Q">https://www.youtube.com/watch?v=bev2eAyFO9Q</a></p>
<h3>Deradoorian - Digital Gravestone</h3>
<p>This ominous, gritty single by former Dirty Projectors vocalist Angel Deradoorian is a teaser for her new album, due in 2025. It recalls the menace of PJ Harvey's "Down By the Water" and makes the best use of a scuzzy saxophone I’ve heard in years.</p>
<p><a href="https://www.youtube.com/watch?v=xRzy6lFym1o">https://www.youtube.com/watch?v=xRzy6lFym1o</a></p>
<h3>Djo - End of Beginning</h3>
<p>It’s kind of perfect that this single by Joe Keery, who also plays Steve Harrington in Stranger Things, is a gorgeous retro-eighties pop ballad steeped in glistening nostalgia. </p>
<p><a href="https://www.youtube.com/watch?v=aH7gkoBpN3s">https://www.youtube.com/watch?v=aH7gkoBpN3s</a></p>
<h3>Dummy - Nine Clean Nails</h3>
<p>I had a hard time picking just one song from Free Energy, their psychedelic pastiche of 1990s sounds that evokes Screamadelica in its eclecticism. And like all the best indie bands, Dummy has dual male/female vocalists in Emma Maatman and Nathan Odell.</p>
<p><a href="https://www.youtube.com/watch?v=gCyb1729fe0">https://www.youtube.com/watch?v=gCyb1729fe0</a></p>
<h3>Freak Slug - Ya Ready</h3>
<p>I absolutely love the fact that the 1990s have been having a major moment in new music, and this debut album, I Blow Out Big Candles, is awash in Pavement-esque lo-fi guitars and grimy trip-hop beats. “Ya Ready” thrums with a guitar riff that sounds like it was down-tuned a full octave.</p>
<p><a href="https://www.youtube.com/watch?v=ljyKMbg_nOE">https://www.youtube.com/watch?v=ljyKMbg_nOE</a></p>
<h3>GIFT - Milestones</h3>
<p>I also struggled to pick just one song from Illuminator, a fantastic collection of polished shoegaze/dream-pop delicacies. “Milestones” is less well known than their main hits, “Wish Me Away”, and “Going in Circles”, but it’s just a gorgeous, groovy album closer that deserves more recognition.</p>
<p><a href="https://www.youtube.com/watch?v=Jb8G8YSwAZg">https://www.youtube.com/watch?v=Jb8G8YSwAZg</a></p>
<h3>girlpuppy - Champ</h3>
<p>I didn’t love girlpuppy’s 2022 album When I’m Alone. Becka Harvey has a fantastic voice but the songs felt a bit flat. With new single “Champ”, all the elements finally snap into place: Harvey’s warm, sweet vocals soar above a mosh pit of huge crunchy guitars and melancholy melody.</p>
<p><a href="https://www.youtube.com/watch?v=KxrxREFfIUM">https://www.youtube.com/watch?v=KxrxREFfIUM</a></p>
<h3>illuminati hotties - December</h3>
<p>Recorded as part of the 30th anniversary celebration of Hopeless Records, this emo pop punk cover of the more acoustic 2015 Neck Deep single is heartbreaking and beautiful.</p>
<p><a href="https://www.youtube.com/watch?v=KMZ5Ez1eqnQ">https://www.youtube.com/watch?v=KMZ5Ez1eqnQ</a></p>
<h3>Jane Weaver - Love in Constant Spectacle</h3>
<p>The jazzy insouciance of this title track from her 2024 album reminds me of Edwyn Collins - noisy and discordant and cheekily self-aware. The whole album is a masterpiece.</p>
<p><a href="https://www.youtube.com/watch?v=hKzzR4J4RMU">https://www.youtube.com/watch?v=hKzzR4J4RMU</a></p>
<h3>Jesse Mac Cormac ft. Kaya Hoax - Grip</h3>
<p>The slowed-down, deeply swung dance beat feels almost Latin, but the emotive synth plucks of the “can’t do it on my own” verses are gorgeous and terse, contrasting the full-spectrum assault of the main motif. Just fantastic electronica.</p>
<p><a href="https://www.youtube.com/watch?v=8POwMMr8PqM">https://www.youtube.com/watch?v=8POwMMr8PqM</a></p>
<h3>Katie Gavin - Aftertaste</h3>
<p>The debut solo release by MUNA vocalist Gavin is a bit more folky and country-inflected than her band work and this single is a great example of her maturity as a songwriter.</p>
<p><a href="https://www.youtube.com/watch?v=Z1CeOmYO0fA">https://www.youtube.com/watch?v=Z1CeOmYO0fA</a></p>
<h3>The Last Dinner Party - Burn Alive</h3>
<p>Channeling Siouxsie and the Banshees and Kate Bush in their operatic gothic art pop, this band burned hot and bright when their debut album Prelude to Ecstasy launched in February and then caught a quick backlash for coming across a little too self-consciously put-together, but there’s undeniably a real talent at work. I look forward to seeing how their sound matures.</p>
<p><a href="https://www.youtube.com/watch?v=l4BWxFgmAjo">https://www.youtube.com/watch?v=l4BWxFgmAjo</a></p>
<h3>Lauren Mayberry - Sunday Best</h3>
<p>The CHVRCHES singer’s solo debut often feels like less than the sum of its parts, but this track stands out for its gloriously sunny Big Beat rhythm and soaring chorus.</p>
<p><a href="https://www.youtube.com/watch?v=bBmn2TWCP_Q">https://www.youtube.com/watch?v=bBmn2TWCP_Q</a></p>
<h3>Luna Li - Bon Voyage</h3>
<p>When a Thought Grows Wings, the second album by Toronto’s Luna Li, is precise and intricate and gentle and calmly resolute. I picked this single because I just think it’s gorgeous.</p>
<p><a href="https://www.youtube.com/watch?v=lMuxb5SH5T0">https://www.youtube.com/watch?v=lMuxb5SH5T0</a></p>
<h3>Magdalena Bay - That’s My Floor</h3>
<p>So many bands over the past few years have embraced a kind of pan-1990s musical aesthetic and I am so here for it. Imaginal Disk by Magdalena Bay is an exemplar of the genre. This track is busy and zany in the best way.</p>
<p><a href="https://www.youtube.com/watch?v=bd1i6CYVE6c">https://www.youtube.com/watch?v=bd1i6CYVE6c</a></p>
<h3>Moaning Lisa - getting over you is on my list of things to do (but not at the top)</h3>
<p>Did I mention the 1990s are having a moment? Moaning Lisa presents an amalgam of Veruca Salt, Letters to Cleo, Juliana Hatfield, Tracy Bonham, the Breeders and Celebrity-Skin era Hole with a 21st-century sheen. </p>
<p><a href="https://www.youtube.com/watch?v=HLbSm6f5heI">https://www.youtube.com/watch?v=HLbSm6f5heI</a></p>
<h3>Pelvis Wrestley - World is a Bucking Horse</h3>
<p>It’s easy to dismiss this as a cheesy Sparks pretender novelty act, except that this is a genuinely great song.</p>
<p><a href="https://www.youtube.com/watch?v=gw1ey3WdE0s">https://www.youtube.com/watch?v=gw1ey3WdE0s</a></p>
<h3>Ride - Last Night I Went Somewhere to Dream</h3>
<p>Hard to believe Ride are still making music in 2024, let alone music as vital and engaging as their latest album Interplay. This slow shuffle diverges from their prevailing sound, but I chose it because the driving, bombastic rhythm section that is the hallmark of Ride’s sound just can’t be suppressed. </p>
<p><a href="https://www.youtube.com/watch?v=jgO5Zu52uxw">https://www.youtube.com/watch?v=jgO5Zu52uxw</a></p>
<h3>RIP Dunes - Cruel Nature</h3>
<p>While a lot of my favourite songs this year have channeled the 1990s, the languid guitar-and-synths solo debut from Caveman vocalist Matthew Iwanusa harkens back to the mid-1980s. This dreamy mid-tempo track recalls the romantic synth pop of Boys and Girls-era Bryan Ferry, Thompson Twins, Alphaville and Icehouse.</p>
<p><a href="https://www.youtube.com/watch?v=JLgccIXwOUA">https://www.youtube.com/watch?v=JLgccIXwOUA</a></p>
<h3>RÜFÜS DU SOL - Edge of the Earth</h3>
<p>These guys have emotionally weighty electronica down to a science and their 2024 album Inhale / Exhale delivers exactly what you want and expect.</p>
<p><a href="https://www.youtube.com/watch?v=SFFWgi1IpQM">https://www.youtube.com/watch?v=SFFWgi1IpQM</a></p>
<h3>Sam Fender - People Watching</h3>
<p>1980s Bruce Springsteen meets The War on Drugs with a soupçon of the Killers for good measure. This is just a timeless feel-good song.</p>
<p><a href="https://www.youtube.com/watch?v=DHzaHMmXB6Y">https://www.youtube.com/watch?v=DHzaHMmXB6Y</a></p>
<h3>Sky Ferreira - Leash</h3>
<p>Sounding like a cross between Garbage, Rose Chronicles and Ray of Light era Madonna, this soaring tribute to, um, BDSM for the Babygirl soundtrack is yet another entry into the new canon of 1990s grooves.</p>
<p><a href="https://www.youtube.com/watch?v=5D0JeugTeNs">https://www.youtube.com/watch?v=5D0JeugTeNs</a></p>
<h3>total tommy - Losing Out</h3>
<p>Bruises, the debut for Jess Holt’s new band, is another trove of gorgeous guitar tracks vying for a spot on my favourite songs list. This song is an achingly beautiful quiet/loud meditation on heartbreak.</p>
<p><a href="https://www.youtube.com/watch?v=aHnSz_L5_10">https://www.youtube.com/watch?v=aHnSz<em>L5</em>10</a></p>
<h3>Vampire Weekend - Hope</h3>
<p>I chose the languid 8-minute closing track from Only God Was Above Us because it’s a microcosm of the album as a whole: a slow burn that gradually clicks with repeated listening.</p>
<p><a href="https://www.youtube.com/watch?v=keKluVOD_WE">https://www.youtube.com/watch?v=keKluVOD_WE</a></p>
<h3>VR SEX - Dictionary Talk</h3>
<p>The whole album, Hard Copy, is a cheeky post-punk masterpiece, churning together new wave, glam, goth, garage, cyberpunk, psychedelia and a lot of noise into a surprisingly cohesive whole.</p>
<p><a href="https://www.youtube.com/watch?v=6S0SheJYDuU">https://www.youtube.com/watch?v=6S0SheJYDuU</a></p>
<h3>World’s Greatest Dad - The Ocean</h3>
<p>There’s always room for another hooky emo pop punk song in my life, and this single from the band’s 2024 album Better Luck Next Time reminds me of what it feels to be young and in agony. </p>
<p><a href="https://www.youtube.com/watch?v=UMElGMtJZHI">https://www.youtube.com/watch?v=UMElGMtJZHI</a></p>
<p>“Well it’s been a rough year, and it’s only gonna get worse” indeed.</p>
Ryan McGreal2http://quandyfactory.com/blog/274/ai_code_assistants_and_the_future_of_software_development2024-11-23T12:00:00ZAI Code Assistants and the Future of Software Development
<p>I am a software developer and have been using GitHub Copilot since March. Here are some thoughts on what having an AI code assistant means for me, what it can and can’t do, and what it might mean for software development more broadly.</p>
<h3>Genuinely Useful</h3>
<p>First: I have found Copilot to be genuinely useful for me. My coding productivity, by which I mean how much code I can produce in a given time spent coding, has roughly tripled. </p>
<p>For the most part, I use Copilot in four distinct ways, three of them specifically code-related and the fourth code-adjacent:</p>
<ol>
<li>Autocomplete for boilerplate code</li>
<li>Looking up obscure technical matters</li>
<li>Modifying and refactoring existing code</li>
<li>Writing documentation </li>
</ol>
<p>I’ll consider each use case in turn.</p>
<h4>Autocomplete for boilerplate code:</h4>
<p>A lot of code is not fancy or innovative or even particularly complicated. In fact, clarity and simplicity are underrated virtues. Overly clever code can be hard to understand and troubleshoot when you inevitably have to look at it again later, and comments can only do so much.</p>
<p>When you’re writing workaday code, clarity and consistency and thoroughness are key. Naming conventions for methods and variables should be clear and predictable, and the code itself should be explicit and orthogonal. Each code block should do one clear thing, and errors or exceptions should be handled explicitly.</p>
<p>It’s tedious and time-consuming to write and when you’re in a time crunch (ie. always), you may be tempted to cut corners. </p>
<p>Copilot makes writing this kind of code a breeze. As long as you set up clear, predictable patterns when you start writing it, Copilot sails through adding methods and faithfully replicates those patterns so the code remains consistent and understandable. </p>
<h4>Looking up obscure technical matters:</h4>
<p>Modern software is extremely complex, with lots of systems stacked one on top of another, each layer hiding most of its complexity from the layer above it. To build applications effectively, a developer needs at least a working knowledge of several layers in the stack to run each piece of your code where it makes the most sense. </p>
<p>This is where one of my favourite eponymous aphorisms comes in: <a href="https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/">Joel Spolsky’s Law of Leaky Abstraction</a>, which states: <strong>All non-trivial abstractions, to some degree, are leaky.</strong>. </p>
<p>Which is to say, you can hide <em>most</em> of the complexity <em>most</em> of the time, but sooner or later you will encounter an issue where you need to get into the details to solve a particular use case. </p>
<p>Modern software has too many layers and too many implementation details to keep it all in mind all the time.</p>
<p>In the old days, developers would go to Stack Overflow, a question-and-answer website where developers post tricky or obscure problems and other developers show off their expertise by sharing solutions, and the community moderates the answers to bring the best on to the top. </p>
<p>You had to hope that someone had the same problem as you and that someone else knew the solution and was willing to share it. </p>
<p>Now, Copilot is extremely good at knowing the answers to these kinds of obscure technical questions. It has read every manual, every API document, every white paper, every monograph - and, yes, every question and answer on Stack Overflow. </p>
<p>I can direct Copilot Chat to look at the code I’m trying to write and describe what I’m trying to do. It will explain the solution and even write the revised code based on what I’ve been working on.</p>
<p>Instead of trolling through several Stack Overflow pages looking for a pattern similar enough to mine to be applicable, I get a custom-designed answer for my specific challenge - and I don’t even need to leave my code editor and switch to a browser. </p>
<h4>Modifying and refactoring existing code:</h4>
<p>In the same way that Copilot operates inside my code editor and has direct access to my code, it is also helpful for modifying and refactoring existing code. </p>
<p>Let’s say I have a form to add a record to a database and need to add a new field to the form. I need to modify the method that writes the form to add the field, and then I need to modify the method that receives the submitted form data, validates it and inserts it into the database.</p>
<p>Once I start writing the code to add the new field, Copilot anticipates what else I need to do and proactively writes the other pieces of new code to complete the change. If it needs a bit of guidance, I can always add a code comment on what I’m planning to do next and it will take the cue and offer a code completion.</p>
<p>Likewise with refactoring, or rewriting code to be better organized and structured without changing its functionality. Copilot has a large context window, which is the amount of information it can use to help answer your question, so it can read your code right in your code editor and propose improvements that are specifically tailored to your use case.</p>
<p>If you know which particular design pattern you want to implement, you can prompt Copilot with the pattern name - e.g. a Bridge pattern to separate an interface control from its implementation - and it will generate the code to do that.</p>
<h4>Writing Documentation:</h4>
<p>I was a fairly obsessive documenter before Copilot, but documenting what an application or API does takes time - especially if you want to be thorough. Now I write all my documentation as Markdown text in my code editor, and Copilot is there in the editor autocompleting my documents. </p>
<p>The generated text is not exactly enthralling, but it doesn’t need to be - indeed, the writing style should not be a distraction from its contents. And because Copilot has your code in its context, it’s quite good at autocompleting documentation which already understands the code it’s trying to document. </p>
<p>My documentation is better, it’s ready sooner, and I spend a lot less time on it.</p>
<h3>Strengths and Limitations</h3>
<p>To the extent that I know what I’m trying to code, Copilot makes me faster and more productive. It speeds up the code I already know how to write by writing it for me. It speeds up the code I’m not sure how to write by pointing me to the implementation details I need to solve trickier technical problems.</p>
<p>And it incentivizes me not to skip the boring busywork - the necessary but tedious code scaffolding, the dreaded documentation - that tends to produce technical debt if you yield to the temptation to postpone (ie. ignore) it.</p>
<p>However, <em>writing code</em> is only part of the job of a software developer. Before writing code, you need to be really clear on what you want your code to do. Depending on your organization, that might mean talking with team members who engage with your clients, or it might mean engaging with the clients yourself. </p>
<p>In many cases, your clients don’t quite know what they want either, or they think they know what they want and they ask you for specific implementation details instead of explaining what they’re trying to accomplish. So you often have to invest time and attention in a relatively unstructured series of discussions in which you ask open-ended questions and drill into the why and even the why behind the why. </p>
<p>Those discussions can feel time-consuming and even frustrating, but in my experience, it’s worth the investment to get to a deeper understanding of the real problem you’re trying to solve. That, in turn, can prevent a lot of wasted effort writing code that is superficially on-topic but doesn’t solve the real problem. </p>
<p>People who blithely claim that software developers are obsolete because AI can write code may not be reckoning with just how essential it is to understand both how to write code and also how to understand what the code needs to do. </p>
<p>In addition, while Copilot is freakishly good at knowing what code I’m writing and finishing it for me, it still occasionally gets it wrong. It's still essential to review any code that Copilot writes, even if it looks exactly how I was planning to write it, to make sure it has not introduced any subtle errors. </p>
<p>It's always a temptation, however, for a busy software developer to glance at generated code and decide it's good enough. In that way, the risk tradeoff of an AI code assistant is that you reduce the incidence of one type of technical debt but increase the risk of another type. </p>
<h3>What’s Next</h3>
<p>We are in the midst of an extraordinary AI hype cycle. Every company is trying to stick AI into its operations, products or customer engagement practices (or all three), and I think it’s fair to say the results are mixed. </p>
<p>I don’t mean to suggest that AI is all hype or that it has no real value. I’ve been using AI in my job for almost nine months now, and it has already become an indispensable productivity tool. But we can reasonably expect a boom/mania/bust cycle that leaves a few winners standing amidst a lot of failed efforts, stranded investments, and unmet expectations. </p>
<p>My hope is that, when the dust settles, we end up with some kind of synthesis in which the cost per unit of software development is going down but - and this is where my eternal optimism comes in - the number of use cases in which software becomes cost-effective to produce is growing in proportion.</p>
<p>Worst-case, we collectively cede control of the digital environment to robots working for billionaires. Best case, we are collectively able to displace more tedious, boring, error-prone and soul-crushing busywork with more humane and engaging activities that produce real value.</p>
Ryan McGreal2http://quandyfactory.com/blog/273/rip_thomas_e_kurtz_co-creator_of_basic2024-11-20T12:00:00ZRIP Thomas E. Kurtz, Co-Creator of BASIC
<p>I just learned that Thomas E. Kurtz, co-creator of the BASIC computer programming language, died on November 12, 2024 at age 96. This really hit me emotionally, and I’ve come to realize it’s because my life would most likely be radically different if not for BASIC.</p>
<p>I was launched on the road to becoming a software developer at around age 13 in the mid-1980s when my mother came home from work with a Compaq Deskpro Portable computer. It came with two 5 1/4” floppy drives, a 40 MB hard drive and 640 KB of RAM and it weighed around 30 lbs. </p>
<p class="image">
<img src="/static/images/IMG_5599.jpeg" alt="I still have my old Compaq Portable because I can’t bring myself to throw out computers. It still turns on but the autoexec.bat file never runs." title="I still have my old Compaq Portable because I can’t bring myself to throw out computers. It still turns on but the autoexec.bat file never runs."><br>
I still have my old Compaq Portable because I can’t bring myself to throw out computers. It still turns on but the autoexec.bat file never runs.
</p>
<p>I was sort of hovering annoyingly around the perimeter as the tech set up the computer, and at some point he looked at me and said, “Hey kid, you wanna learn to program computers?” </p>
<p>I said, “Uh, sure?” </p>
<p>He handed me a small black plastic-bound three-ring binder containing a manual on GW-BASIC, the specific flavour of BASIC that shipped with the computer.</p>
<p>I started on page 1 and read through the book. As I learned each concept, I started writing programs that incorporated the fundamental constructs of most modern languages: </p>
<ul>
<li>direct mode vs program mode</li>
<li>variables and data types</li>
<li>if-then conditions</li>
<li>FOR-NEXT loops</li>
<li>WHILE-WEND loops</li>
<li>reading from and writing to the file system</li>
<li>sequential vs. random data access</li>
<li>25x80 ASCII graphics on the Hercules monochrome display</li>
<li>program flow via the much maligned GOTO </li>
<li>subroutines via the more civilized GOSUB-RETURN code blocks</li>
<li>error handling via ON ERROR GOTO</li>
</ul>
<p>I even made some rudimentary music (PLAY took letter notes whereas SOUND took frequencies in Hz) producing different pitches of the square wave beep our computer could emit.</p>
<p>And yes, my first program read:</p>
<pre><code>10 PRINT “RYAN IS AWESOME!”
20 GOTO 10
</code></pre>
<p>Eventually I was creating elaborate if extremely derivative programs, including a text-based Dwarf cave adventure game in which I was determined to have the game remember all the locations your character killed monsters so they would still be there if you came back later. (I was particularly proud of having the corpses get incrementally more deteriorated each time you revisited them.)</p>
<p>Eventually I grew into adulthood and lost interest in programming. But in my late 20s I found myself in a position where my manager wanted an intranet site for our organization and I perhaps capriciously offered to build it. </p>
<p>I was also working part-time as a waiter and one of my coworkers was taking a web development course at a local college. I asked him how hard it was to build a website and he was really helpful, pointing me to some resources and giving me the basics of HTML.</p>
<p>One thing led to another and I ended up moving into a role in my regular job that had a web development component. </p>
<p>At some point I was asked to build a dynamic website and when I looked into the server running our website, I learned it supported something called Active Server Pages, or ASP. </p>
<p>Imagine my pleasant surprise when I found out the programming language for ASP was VBScript, which stands for Visual BASIC, scripting edition. </p>
<p>It was just a modern version of the language I had learned as a teenager! </p>
<p>Aling the way, I also learned JavaScript and CSS, and once I started writing server code, I also learned SQL. </p>
<p>When a group of us decided in 2994 to start a local civic organization, I offered to build us a website. The very first version of Raise the Hammer was built in VBScript and the data was stored in an MS Access database (except for the article contents, which were stored in text files). </p>
<p>Once ASP became deprecated for Microsoft’s new .NET application development framework, I decided to break from the MS stack and branch out to a cross-platform language called Python. </p>
<p>That was around 2009 and it turns out to have been a very good call, as Python has become a dominant language across various domains, including machine learning and AI. </p>
<p>So far I’ve enjoyed a wonderful career as a software developer, albeit self-taught, and it has given me incredible opportunities to learn things and build things and be a part of some amazing communities, organizations and projects.</p>
<p>I try to be mindful of the rare privilege of having more or less open access to a computer in my home starting in the mid-1980s. I don’t think I appreciated at the time just how unusual this was!</p>
<p>And reflecting on the death of Thomas Kurtz, I also have to acknowledge the privilege of being exposed to a high-level programming language specifically designed for ease of understanding and learning.</p>
<p>After all, BASIC stands for <strong>Beginners' All-purpose Symbolic Instruction Code</strong>, and true to its name, it really was easy for at least one awkward kid to learn.</p>
<p>May Thomas E. Kurtz, who changed the course of human history during his 96 years and has now undertaken the ultimate GOSUB with no RETURN, rest in peace. </p>
Ryan McGreal2