Shared posts

03 Feb 03:44

Ask Dr. Wobs: How do you get people to read to the bottom?

by Josh Bernoff

I recently received this query from a loyal reader: In an era where merit is accorded on the basis of social media ‘likes’ and increasing numbers of TLTR [too longer to read] messages I would like to (read) your comments on how to get the audience to ‘read to the bottom.’ Good question. Is “read … Continued

The post Ask Dr. Wobs: How do you get people to read to the bottom? appeared first on without bullshit.

03 Feb 03:44

PagerDuty sends the worst layoff email ever written

by Josh Bernoff

We have a new winner. In this season of tens of thousands of tech layoffs, I thought Twitter’s short, insensitive, anonymous layoff email was the worst possible. I was so wrong. PagerDuty CEO Jennifer Tejada laid off 7% of the company’s workforce with an email that included this impressive list of sins: And . . … Continued

The post PagerDuty sends the worst layoff email ever written appeared first on without bullshit.

03 Feb 03:44

AI sales copy insanity: idiocy at scale

by Josh Bernoff

AI can write now, but it needs supervision. And failing to supervise it will make you look very stupid. Don’t believe me? My friend Maggie Langrick, the proprietor of the hybrid publisher Wonderwell, recently received this financing pitch, which she has allowed me to share with you. From: Tanner SyftestadDate: January 31, 2023 at 6:21:22 … Continued

The post AI sales copy insanity: idiocy at scale appeared first on without bullshit.

03 Feb 03:43

joel-miller:The Last of Us (2023): “Infected”















joel-miller:

The Last of Us (2023): “Infected”

03 Feb 03:42

Twitter Favorites: [burden50] Can we all agree this is 99% of architecture diagrams? https://t.co/RKKpwf7qYH

Rob Burden @burden50
Can we all agree this is 99% of architecture diagrams? pic.twitter.com/RKKpwf7qYH
03 Feb 03:40

Twitter Favorites: [heyrickie] I just handed over the keys to my condo to my realtor. The sale completes today. 15 years: it’s the longest length… https://t.co/MWxzt939QO

Eric Bucad (@heyrickie@mstdn.ca) @heyrickie
I just handed over the keys to my condo to my realtor. The sale completes today. 15 years: it’s the longest length… twitter.com/i/web/status/1…
03 Feb 03:40

Meaningless at Great Scale

by Meaningless at Great Scale

“You can figure it out for yourself.”

I’m a little late to this, but in the grand scheme of things just by the blink of an eye: After 50 years of work, the artist Michael Heizer has finished City, his massive sculpture garden in the Nevada desert.

Loosely inspired by buildings and geometry of the Maya city Chicen Itza in Yucatán, Heizer’s work is made of dirt, rock, and concrete, and measures a staggering 2 x 0.4 kilometers. It pushes the limits of what it means for something to be a sculpture, since the monumental dimensions are meant to be experienced at human scale—you’re supposed to literally get lost in the work. The New York Times straight-up calls it a “masterpiece”.

As the name implies, the work is meant to evoke a (pre-Colombian?) city, only the roads lead nowhere, the plazas are barren, and the sculptures are too abstract to pass for buildings. Personally, it reminds me of my visit to Monte Albán in Oaxaca, where we walked big distances inside a giant basin among the ruins, our brains slowly baking in the sun.

It was undoubtedly cool, but most meaning had been long lost to the sands of time. “I am not here to tell people what it all means,” Heizer tells the New York Times. “You can figure it out for yourself.”

Monte Albán in Oaxaca, MexicoMonte Albán in Oaxaca, Mexico

It’s hard to look away when something massive is conjured out of nothing

I’ve always had a soft spot for monumental projects, like the cinematic project DAU, the Khazak capital Astana, or Tatlin’s Tower. It’s hard to look away when something massive is conjured out of nothing, often at great expense, and mostly with no good reason provided.

The results are often puzzling: What is this meant do mean? Maybe City doesn’t mean anything, or maybe it’s nothing but a scar in the desert, built at an unjustifiable expense.

Ironically, Heizer’s timing wasn’t great. Just as he unveiled City after 50 years of work, the Saudi government took the wraps off The Line, part of the even more audacious Neom “smart city”. That idea immediately went viral for its shear ludicrousness and has some parallels to Heizer’s work: It’s a 170km linear city in the desert, built with unlimited oil money. Presumably, we’re supposed to figure out a meaning again, aside from it being an “ecological and moral atrocity”.

Things Mag, where I first read about City, sums up the friction most eloquently:

Heizer has become a literal gate-keeper, the king of a smoothly polished desert kingdom that remains off-limits to almost everyone (a maximum of six visitors a day!), and serves little purpose but to demonstrate the skills of the New York Times’ web design team. Perhaps it’s because Heizer’s dubious megastructural ambitions have been coloured by the widespread angst over Neom, the ultimate evolution of the land art movement. Studying the shifting sands that surround Neom is like lifting up a long-forgotten paving slab and marvelling at the life and death that happens beneath the surface. Reason is lacking, answers are evasive, and the only conclusions one can draw is that any kind of ‘awe-inspiring’ scale is inseparable from massive ego and total control.

03 Feb 03:40

Put Down the Shiny Object: The Overwhelming State of Higher Education Technology

Lindsey Downs, WICHE Cooperative for Educational Technologies, Feb 02, 2023
Icon

I'm sympathetic with the main line of argumentation in this article, but there's a disconnect that's glaring. The suggestion is that students aren't as good at tech as people suppose, so institutions and (especially) professors should think twice about introducing some 'shiny new tech' as part of the course. And I get that. But the disconnect is this: when the students are asked, they report struggling with the core technologies in use, things like the LMS, or file management and editing with MS-Word or Excel. And I wonder whether the problem isn't that students are struggling with shiny new tech so much as they're having difficulties with crappy old tech. The online world students use has evolved past these tools. Maybe higher ed should too.

Web: [Direct Link] [This Post]
03 Feb 03:34

Featured Promo – Adrian Mueller

by A Photo Editor

Adrian Mueller

Who printed it?
Modern Postcard

Who designed it?
I designed it myself

Tell me about the images.
It is a mix of new personal and new client work for brands such as McDonald’s, Patron, UBER EATS and Angostura Rum. Stylistically, I’ve paired the vibrant shots on one side, and the somewhat warmer ones on the other. I like the fact that there is a coherent theme and look. Those are really my favorite images from the previous 12 months, as I don’t like to select work in a calculated way. I hope that approach resonates with the creatives who receive the mailer.

How many did you make?
I’ve printed 250 of them

How many times a year do you send out promos?
I usually send out a promo with new work 1x a year to specific and select clients who have opted in to receive them. The rest I hand out during in-person portfolio reviews and meetings.

Do you think printed promos are effective for marketing your work?
As a targeted approach, I think it is an appreciated reminder for those who are connected to me and really want to receive them. I’ve stopped sending mailers out to contacts I don’t personally know, haven’t worked with or haven’t met. I have a curated, personal list of about 1100 creatives I’m connected to that way and about 200 have opted in to receive actual mailers. I see it as an old fashioned way of staying in touch and I would of course love it if everyone on my list would opt in. I understand though that many don’t feel comfortable sharing their personal address, which is absolutely fine. This way, I don’t waste natural resources, money and efforts and know that I don’t bother anybody with unwanted mail.

03 Feb 03:20

Cars are rewiring our brains to ignore all the bad stuff about driving

mkalus shared this story from The Verge - All Posts.

Unsurprisingly, most Americans frown upon antisocial behavior. Stealing people’s stuff, bending food safety rules, or smoking in large crowds tend to generate a lot of stern reactions.

But get behind the wheel of a car, and all that disapproval tends to melt away.

That’s because a lot of us suffer from a malady called “car brain” — though Ian Walker, a professor of environmental psychology at Swansea University in Wales, prefers to call it “motonormativity.” This is the term coined by Walker and his team to describe the “cultural inability to think objectively and dispassionately” about how we use cars.

A lot of us suffer from a malady called “car brain”

Think of it like “heteronormativity,” the idea that heterosexual couples “automatically, but inappropriately, assume all other people fit their own categories,” but for cars.

Walker noticed that people tend to have a giant blindspot when it comes to certain behaviors associated with driving, whether it’s speeding, carbon emissions, traffic crashes, or any other of the vast litany of negative external effects that result from a culture that caters to automobile drivers.

“One of the things you notice if you spend your career trying to get people to drive less is people don’t like driving less,” Walker said in an interview. “We said, well, let’s try and measure this. Let’s just demonstrate the extent to which the population as a whole will make excuses, will give special freedom to the context of driving.”

To accomplish this, he devised a series of statements aimed at rooting out these unconscious biases. The statements were separated into two categories: one about cars and driving and another with key words and phrases replaced to make it about some other activity. An independent polling firm was contracted to find a sampling of 2,157 adults in the UK, who were then asked to either agree or disagree. Half were given the car-related statements, while the other half presented with the non-car ones.

“One of the things you notice if you spend your career trying to get people to drive less is people don’t like driving less.”

For example, people were asked to agree or disagree with the following statement: “People shouldn’t smoke in highly populated areas where other people have to breathe in the cigarette fumes.” Then they were asked to respond to a parallel statement about driving: “People shouldn’t drive in highly populated areas where other people have to breathe in the car fumes.”

While three-fourths of respondents agreed with the first statement (“People shouldn’t smoke...”), only 17 percent agreed with the second (“People shouldn’t drive...”).

Another statement addressed values around theft of personal property. Respondents were asked whether they agreed or disagreed with the statement, “If somebody leaves their belongings in the street and they get stolen, it’s their own fault for leaving them there and the police shouldn’t be expected to act,” as well as the parallel statement, “If somebody leaves their car in the street and it gets stolen, it’s their own fault for leaving it there and the police shouldn’t be expected to act.”

While three-fourths of respondents agreed with the first statement (“People shouldn’t smoke...”), only 17 percent agreed with the second (“People shouldn’t drive...”)

Only 8 percent of people disagreed with the first statement, while 55 percent of people disagreed with the second one.

Similar outcomes were discovered in questions about food and health safety, alcohol consumption, and workplace injuries. People were less tolerant of bad behavior that didn’t involve a car and vastly more tolerant of similar-sounding behaviors that involved driving.

For Walker, this disconnect is where motonormativity comes into play. “We wanted to demonstrate that when you talk about driving, people are not applying their normal values,” he said.

The smoking question in particular fascinated Walker for several reasons. For decades, society tolerated — even encouraged — public smoking. But then a growing awareness around public health risks associated with secondhand smoke, combined with harsher government regulations, led to a shift in public perception. The same could eventually hold true for driving, he said.

For Walker, this disconnect is where motornormativity comes into play

“The fact that smoking has shifted so much, to where almost everybody we spoke to said no, that’s not acceptable — those same people wouldn’t have said that 20 years ago,” Walker said. “And so the smoking and driving comparison interests me because it shows us where we could get to in the future if people’s minds start to change.”

Given how entrenched car culture is in countries around the world, it may take a lot longer to change people’s minds about driving than it did with cigarettes. For one, we don’t tend to view driving through the lens of public health, which shields most of us from thinking about the societal harms and inequities associated with car use.

That’s because, for most people, driving is a convenience. And because it’s easy, we tend to assume it’s part of the natural order to drive. That’s why there’s so much hostility around cycling and alternate forms of transportation: because, for many people, it challenges the natural order of driving.

“Not only do people do what the world makes easy, but because it feels easy, people conclude that it’s right,” Walker said.

Updated February 1st, 10:17AM ET: The phrase coined by Ian Walker and his team is “motonormativity.” A previous version of this story spelled it incorrectly.

03 Feb 03:19

The grocery price freeze is over — so brace yourself for even bigger food bills soon | CBC News

mkalus shared this story .

The holiday price freeze put in place by some of Canada's biggest grocery chains has hit its expiry date, so shoppers should brace themselves for news that could be hard to swallow: get ready for your food bill to go up. By a lot. Again. 

Loblaws made headlines last fall when it announced it would freeze prices on hundreds of its in-house No Name brand through the holiday season. The grocery chain pitched the plan as a salvo for cost-conscious shoppers hit hard by high inflation, but people in the industry quickly panned it as little more than a publicity stunt, since grocery chains typically implement similar price freezes over that period, refusing to accept any price hikes from their suppliers during the critical shopping season.

  • Have a question about the rising cost of food or personal stories to share? Email: <a href="mailto:ask@cbc.ca">ask@cbc.ca</a> or join us live in the comments now.

Loblaws pledged in October that No Name-branded grocery staples wouldn't see price increases until the end of January at least. It's now February, and the chain told CBC News in a statement this week that it plans to keep prices where they are "wherever possible" but warned that many prices may well go up in the coming weeks. 

"Once the price freeze ends, customers can expect some prices may increase, but as mentioned originally, we will continue to hold most of our No Name prices flat," spokesperson Catherine Thomas said. "The cost to stock our shelves has gone up, month after month."

Montreal-based chain Metro sang a similar tune at its annual general meeting last month, with CEO Eric La Flèche telling reporters that the chain had received more than 27,000 requests from its suppliers last year to raise prices by more than 10 per cent. That's more than three times the normal level.

"There are cost increases coming, and we expect that some of these cost increases will be reflected at retail," he told reporters at a media briefing on Jan. 24. "We are going to do our best to make sure that price increases are gradual and progressive to protect prices as much as possible [but] unfortunately, inflation is continuing."

Frito-Lay hiking prices in Canada by 10%

Snack giant Frito-Lay is among those upping the pressure. The U.S. company, which is owned by Pepsi, has raised the prices on its products in Canada by 10 per cent, according to the Canadian Federation of Independent Grocers.

Spokesperson Gary Sands told CBC News in a statement that though he doesn't speak for major chains like Metro, Loblaws and Halifax-based Sobey's, the nearly 7,000 small businesses the group represents are in no position to swallow that cost increase.

"If you are an independent grocer on very tight margins, around two per cent, and you get handed double-digit increases in any product, you have no choice but to pass it on," he said.

Shoppers like Palaash Tiwari know all too well that prices keep going up. Shopping for food in Toronto on Wednesday, Tiwari told CBC News that he's made major changes to his diet in recent months, like buying less and cheaper types of meat, trying to save money where he can. He's also basically stopped going out to restaurants because of the prohibitive cost.

"People have to make choices on what they want to consume," he said. "People need to find their own alternative."

WATCH | Shoppers react to end of grocery price freeze: 

What the end of the price freeze means for your grocery bill

Major grocery chains say shoppers should expect even higher prices for food in the coming weeks. Shoppers on the streets of Toronto told CBC News what that might mean for their food budget.

Why fresh produce is so pricey

Of course, not every type of food is going up at the same pace.

Statistics Canada data released this week shows that a slew of grocery items have seen double-digit price increases, beyond what is normal during winter months. The retail price of tomatoes has gone from $4.57 a kilogram in October to $6.99 in December — an eye-watering increase of more than 52 per cent in just two months. 

Celery and grapes are almost as bad, with price increases of 49 and 46 per cent, respectively, in only two months. And foods like apples, broccoli and iceberg lettuce aren't far behind.

Most of the biggest increases right now are in fresh fruits and vegetables, and there's a very good reason for that, according to Mike von Massow, a food economist at the University of Guelph.

"If you look out your window there's snow on the ground [so] we're not producing ... fruits and vegetables to a significant degree."

Almost all the fresh produce Canadians consume in the winter comes through the U.S. either directly or indirectly, so that makes them subject to higher costs all along the supply chain. The transport costs alone are significant, but this year has seen major price hikes for things like tomatoes and lettuce because of what's happening in the Salinas Valley in California.

Much of the North American lettuce crop comes from the region, which was hit by a virus in November that took a bite out of supply. Record-setting drought in the area in the fall was then followed by flooding last month, which played havoc on the supply of all kinds of water-intensive crops like celery, broccoli and grapes.

"What's happening now is almost this perfect storm of issues which are creating upward pressure on almost everything," von Massow said.

Relief in the spring?

It may be hard to see while perusing the aisles of the local grocery store, but von Massow can see relief coming just over the horizon for some of those relentless price increases.

"We'll probably start seeing some relief in the spring as we get to the Canadian production season," he said. "We won't be as susceptible to imports which are being punished by the exchange rate and other things."

Until then, shoppers like Ethena Dennie in Toronto will keep doing what they've been doing, shopping around for bargains, and replacing their usual staples with cheaper alternatives where possible.

"One lettuce is so expensive," she told CBC News outside her local grocery store on Wednesday. "The doctor didn't tell me to eat lettuce so I don't have to buy it, so I just left it.

"The price is going up [but] my pay is not going up. It's just staying at the same level."

31 Jan 06:48

babelmark3

babelmark3

I found this tool today while investigating an bug in Datasette's datasette-render-markdown plugin: it lets you run a fragment of Markdown through dozens of different Markdown libraries across multiple different languages and compare the results. Under the hood it works with a registry of API URL endpoints for different implementations, most of which are encrypted in the configuration file on GitHub because they are only intended to be used by this comparison tool.

Via datasette-render-markdown issue #13

31 Jan 06:47

graphql-voyager

graphql-voyager

Neat tool for producing an interactive graph visualization of any GraphQL API. Click "Change schema" and then "Introspection" and it will give you a GraphQL query you can run against your own API - copy and paste back the JSON results and the visualizer will show you how your API fits together. I tested this against a datasette-graphql instance and it worked exactly as described.

30 Jan 16:16

datasette-scraper, Big Local News and other weeknotes

In addition to exploring the new MusicCaps training and evaluation data I've been working on the big Datasette JSON refactor, and getting excited about a Datasette project that I didn't work on at all.

datasette-scraper

The best thing about a plugin system is that you can wake up one day and your software has grown extra features without you even having to review a pull request.

Colin Dellow's datasette-scraper - first released a few weeks ago - takes that a step further: it's a plugin that builds an entire custom application on top of Datasette.

It's really cool!

Colin has a ten minute demo up on YouTube which is well worth checking out.

Screenshot of a dss_crawl_queue_history table, showing a history of crawls - with a window to the side showing the terminal output as the crawler ran

The plugin implements a website crawler which can crawl pages, build up a queue (using sitemap.xml if it's available), then fetch and cache the content - storing its progress and the resulting data in a SQLite database hosted by Datasette.

It uses some really neat tricks to customize various pieces of the Datasette interface to provide an interface for configuring and controlling the crawler.

Most impressively of all, it implements its own plugin hooks... which means you can use small custom plugins to define how you would like data to be extracted from the pages you are crawling.

Colin has a bunch of other Datasette plugins that are worth checking out too:

  • datasette-rewrite-sql monkey-patches Datasette's database connection code (since there's no appropriate plugin hook there yet) to provide its own hook for further plugin functions that can rewrite SQL queries before they get executed.
  • datasette-ersatz-table-valued-functions (ersatz (adj.): made or used as a substitute, typically an inferior one, for something else.) is a delightfully gnarly hack which supports custom table-valued SQL functions in SQLite, despite Python's sqlite3 module not providing those. It works by rewriting a SQL query against a function that returns JSON to use a gnarly CTE and json_each() combo instead.
  • datasette-ui-extras is brand new: it tweaks the Datasette default interface in various ways, adding features like sticky header and facets in a sidebar. I'm so excited to see someone experimenting with changes to the default UI in this way, and I fully expect that some of the ideas Colin is playing with here will make it into Datasette core in the future.

Datasette and Big Local News

Big Local News is a collaborative data archive for journalists run by a team out of Stanford.

I worked with Ben Welsh this week to build an updated version of an old integration with Datasette, which went live on Friday.

Here's the animated GIF demo from their announcement:

The user starts out on the Big Local site, browses into a project, selects a menu item next to a CSV file in that project and runs "Open in Datasette" - they are then taken to a separate Datasette instance where that CSV file is imported into a table, ready for them to interact with.

The code I wrote for this integration lives in simonw/datasette-big-local. I ended up building a custom plugin which exclusively works with Big Local (so it's not shipped to PyPI).

The main challenge with this project involved authentication and permissions. Big Local has both public and private datasets, and we wanted the integration to work with both. But if someone opened a file in a private project, only they and others with access to that project should be able to view the resulting table.

In the end I solved this by creating a new SQLite database for each project, then configuring Datasette's authentication system to run a permission check for each user to check that they were allowed to access files in the associated project, via a call to the Big Local GraphQL API.

The first time a user opens a file in Big Local JavaScript on the site there performs an HTTP POST to Datasette, transmitting details of the project ID, the filename and an authentication token for that user. That token can then be used by Datasette to call the GraphQL API on their behalf, verifying their permissions and signing them into the Datasette instance using a signed cookie.

The datasette-big-local README includes full details about how this all works.

Progress on ?_extra=

I finally started making progress on Datasette issue #262: Add ?_extra= mechanism for requesting extra properties in JSON - first opened back in May 2018!

This is the key step on the journey to slimming down Datasette's default JSON representation for tables and queries.

I want to return this by default:

{
    "ok": true,
    "rows": [
        {"id": 1, "title": "Example 1"},
        {"id": 2, "title": "Example 2"},
        {"id": 3, "title": "Example 3"}
    ],
    "next": null
}

Then allow users to specify all kinds of extra information - the table schema, the suggested facets, information on columns, the underlying SQL query... all by adding on ?_extra=x parameters to the URL.

This turns out to be a lot of work: I'm having to completely refactor the internals of the most complicated part of Datasette's codebase.

Still lots more to go, but I'm happy to finally be making progress here.

Improved Datasette examples

The Datasette website has long had an Examples page linked to from the top navigation - and analytics show that it's one of the most visited pages on the site.

I finally gave that page the upgrade it needed. It now starts with illustrated examples that have been selected to help highlight what Datasette can do - both the variety of problems it can be used to solve, and the way plugins can be used to add extra functionality.

Screenshot of the Examples of sites built using Datasette page, featuring datasette.io and LAION-Aesthetics and github-to-sqlite with GraphQL

shot-scraper 1.1

I implemented the new screenshots for the examples page using my shot-scraper screenshot automation tool.

The screenshots are taken by a GitHub Actions workflow in the datasette-screenshots repository.

I added 5 new screenshot definitions to the YAML that powers that workflow, which is used by the shot-scraper multi command.

In working with shot-scraper I spotted a couple of opportunities for small improvements, version 1.1 with the following changes:

  • New --log-console option for logging the output of calls to console.log() to standard error. #101
  • New --skip and --fail options to specify what should happen if an HTTP 4xx or 5xx error is encountered while trying to load the page. --skip will ignore the error and either exit cleanly or move on to the next screenshot (in the case of multi). --fail will cause the tool to return a non-zero exit code, useful for running in CI environments. #102

datasette-granian

Granian is a new web server for running Python WSGI and ASGI applications, written in Rust.

A while ago I built datasette-gunicorn, a plugin which adds a datasette gunicorn my.db command for serving Datasette using the Gunicorn WSGI server.

datasette-granian now provides the same thing using Granian. It's an alpha release because I haven't actually used it in production yet, but it seems to work well and it adds yet another option for people who want to deploy Datasette.

Creator of Granian Giovanni Barillari was really helpful in helping me figure out how to dynamically serve a freshly configured ASGI application rather than just passing a module path to the granian CLI command.

datasette-faiss 0.2

I introduced datasette-faiss a few weeks ago. It's a plugin that suppors fast vector similarity lookups within Datasette using the FAISS vector search library by Facebook Research.

The first release of the plugin created a FAISS index on server startup for each table that contains an embeddings column. Any similarity searches would then be run against that entire table.

But what if you want to combine those searches with other filters in a query? For example, first filter to every article published in 2022, then run a similarity search on what's left.

In datasette-faiss 0.2 I introduced two new SQLite aggregate functions: faiss_agg() and faiss_agg_with_scores(), that are designed to handle this case.

The new functions work by constructing a new FAISS index from scratch every time they are called, covering just the rows that were processed by the aggregation.

This is best illustrated with an example. The following query first selects the embeddings for just the blog entries published in 2022, then uses those to find items that are most similar to the provided ID.

with entries_2022 as (
  select
    id,
    embedding
  from
    blog_entry_embeddings
  where
    id in (select id from blog_entry where created like '2022%')
),
faiss as (
  select
    faiss_agg(
      id,
      embedding,
      (select embedding from blog_entry_embeddings where id = :id),
      10
    ) as results
  from
    entries_2022
),
ids as (
  select
    value as id
  from
    json_each(faiss.results),
    faiss
)
select
  blog_entry.id,
  blog_entry.title,
  blog_entry.created
from
  ids
  join blog_entry on ids.id = blog_entry.id

You can try the query out here.

Releases this week

TIL this week

30 Jan 16:14

Quoting Tom Critchlow

We’ve built many tools for publishing to the web - but I want to make the claim that we have underdeveloped the tools and platforms for publishing collections, indexes and small databases. It’s too hard to build these kinds of experiences, too hard to maintain them and a lack of collaborative tools.

Tom Critchlow

30 Jan 16:13

Hindustani-music loving Harry Manx brings Mysticssippi blues to Burnaby

by Charlie Smith

Somehow, it seems appropriate that Harry Manx is performing in Burnaby this evening (January 28). That’s because the good-natured Salt Spring Island blues musician is one of B.C.’s more intriguing cultural navigators. And Burnaby is one of Canada’s most diverse cities, with more than 120 languages spoken.

Burnaby also happens to be B.C.’s blues capital as the long-time host of the Burnaby Blues + Roots Festival.

Over the years, Manx has released a dozen albums. He’s won seven Maple Blues Awards and a Canadian Folk Music Award. In addition, Manx snared six Juno nominations.

His music is referred to as Mysticssippi blues because it brings together the traditions of Black music from Mississippi with Hindustani influences.

This Harry Manx video, “Death Has Mercy”, was filmed in Pune, India.

Burnaby welcomes globetrotting Manx

I interviewed Manx a few years ago. Here are some things I learned:

  • Many years ago, Manx joined an ashram in Pune created by the famous  Indian spiritual teacher Osho.
  • Osho and other spiritual masters in India inform his lyrics.
  • Manx lived for a while in Japan, busking for a living.
  • Even though he greatly admires slide guitarists such as Duane Allman, Jesse Ed Davis, Ry Cooder, and David Lindley, Manx’s most influential teacher was Indian musician Vishwa Mohan Bhatt.
  • In India, Manx learned about the emotions linked to each raga.
  • Manx enjoys playing the 20-stringed Mohan Veena, which was invented by Bhatt.

Manx will take the stage tonight at 8 p.m. in the Studio Theatre at the Shadbolt Centre for the Arts. For tickets, visit the Shadbolt Centre website. Follow Pancouver editor Charlie Smith on Twitter @charliesmithvcr. Follow Pancouver on Twitter @PancouverMedia.

The post Hindustani-music loving Harry Manx brings Mysticssippi blues to Burnaby appeared first on Pancouver.

30 Jan 03:54

datasette-scraper walkthrough on YouTube

datasette-scraper walkthrough on YouTube

datasette-scraper is Colin Dellow's new plugin that turns Datasette into a powerful web scraping tool, with a web UI based on plugin-driven customizations to the Datasette interface. It's really impressive, and this ten minute demo shows quite how much it is capable of: it can crawl sitemaps and fetch pages, caching them (using zstandard with optional custom dictionaries for extra compression) to speed up subsequent crawls... and you can add your own plugins to extract structured data from crawled pages and save it to a separate SQLite table!

Via datasette-scraper

30 Jan 03:54

Datasette News: 2023-01-28

by Simon Willison

Examples of sites built using Datasette now includes screenshots of Datasette deployments that illustrate a variety of problems that can be addressed using Datasette and its plugins.

30 Jan 03:05

Would You Take This Class?

I plan hope to spend February and March revising the Python version of Software Design by Example. I’m thinking about creating a slide deck for each of the chapters to help me do that—boiling things down to point form helps me see what’s out of order or missing entirely. The best way to test a slide deck is to teach from it, so I’d like to know who’d be interested in an hour-a-week online class that taught participants how to build a dozen applications from the list below in Python:

  • a testing framework
  • an interpreter
  • a versioned file backup system
  • a file cache
  • a dataframe
  • an object persistence framework
  • a binary storage framework
  • a build manager
  • a static site generator
  • a page layout engine
  • a text editor
  • a web server
  • a package manager
  • a regular expression matcher
  • a regular expression parser
  • a style checker
  • a virtual machine
  • a debugger

The cost would be a donation equivalent to a day’s pay to a mutually-agreed charity. Breaking that down:

  • I’m not trying to make money from this, but I’ve learned the hard way that participation in free classes drops off dramatically (life gets in the way of good intentions).

  • I want to make the lessons accessible to as many people as possible, so “a day of your salary” in exchange for a dozen hours of instruction (plus online chat outside class, feedback on homework, etc.) seems a good way to adjust the cost automatically.

  • The charity has to be one we agree on because you might want to support causes I’m uncomfortable with and vice versa.

If you’re interested, please let me know; if a dozen people are willing to commit, I think it would be a lot of fun.

Who Is This Class For?

These three personas define this class’s intended audience:

  • Aïsha started writing Python in an undergrad geology course. After spending three years creating ever-more-complex Jupyter notebooks she wants to learn how to build packages that other people can use. This material will fill in some gaps in Aïsha’s programming knowledge and teach her some common design patterns.

  • Rupinder is a computer science undergrad. He has learned a lot of theory, and uses Git and unit testing tools in assignments, but doesn’t understand how they work. This material will give Rupinder a better understanding of those tools and of how to design new ones.

  • Yim teaches courses on full-stack web development and software design. They are happy with the former, but frustrated that books about the latter are so abstract and use examples that their students can’t relate to. This material will give Yim starting points for a wide variety of course assignments.

Slicing another way, participants should be able to:

  • Install Python and run Python programs from the command line.

  • Write Python programs using loops, arrays, and functions, and have some experience building or using classes.

  • Create static web pages using HTML.

  • Use Git to save and share files. (It’s OK not to know the 90% of its commands.)

  • Explain what a tree is and process one recursively. (This is the most complicated data structure and algorithm we don’t explain.)

30 Jan 03:03

A Thousand Feet of Computing

by Eugene Wallingford

Cory Doctorow, in a recent New Yorker interview reminisces about learning to program. The family had a teletype and modem.

My mom was a kindergarten teacher at the time, and she would bring home rolls of brown bathroom hand towels from the kid's bathroom at school, and we would feed a thousand feet of paper towel into the teletype and I would get a thousand feet of computing after school at the end of the day.

Two things:

  • Tsk, tsk, Mom. Absconding with school supplies, even if for a noble cause! :-) Fortunately, the statute of limitations on pilfering paper hand towels has likely long since passed.

  • I love the idea of doing "a thousand feet of computing" each day. What a wonderful phrase. With no monitor, the teletype churns out paper for every line of code, and every line the code produces. You know what they say: A thousand feet a day makes a happy programmer.

The entire interview is a good read on the role of computing in modern society. The programmer in me also resonated with this quote from Doctorow's 2008 novel, Little Brother:

If you've never programmed a computer, there's nothing like it in the whole world. It's awesome in the truest sense: it can fill you with awe.

My older daughter recommended Little Brother to me when it first came out. I read many of her recommendations promptly, but for some reason this one sits on my shelf unread. (The PDF also sits in my to-read/ folder, unread.) I'll move it to the top of my list.

30 Jan 03:02

Too pointy

by russell davies

The FT's HTSI 'what's your personal style signifier?' is often a source of hollow laughter in our house. But I enjoyed the specificity of taste at the end of this sentence:

"I’ve worn Chuck Taylors every day for 20 years, but in 2015 they made the toe cap too pointy and I can’t live with it, so I only wear the older style."

30 Jan 03:02

Week Notes 23-04

by Ton Zijlstra

This week was a calm one, as mentioned this has not been the case for a long time. No external pressures or deadlines meant I could plan my own week. I had almost forgotten how that felt.
This week I

  • With E made a plan for our top floor work space, went to Ikea to test a few things, and ordered new furniture to implement the plan. It will be delivered next week. The plan is to make sure that all things that have to do with making things, crafts, electronics etc. can take place there. That was the intention of the space all along, but it never quite worked out that way yet. Mostly because I originally made it look too office-like I feel. Now we’ll have a lot of drawers for all the stuff and tools, and a long table to work on.
  • Had the weekly client meetings
  • Found the calm and time to write a bunch of Notions/Notes that I hadn’t gotten around to in the past months. That felt very good to do.
  • Did the Q4 book keeping for the VAT returns due early next week.
  • Made a year plan how to support the interprovincial ethics committee that launched last week
  • Got invited to provide a keynote at the EuroGeographics general assembly and conference in March. EuroGeographics are the National Mapping, Cadastral and Land Registration Authorities of the European countries. Looking forward to it.
  • Did some onboarding admin for our new colleague who will start mid next week.
  • Did some work on the Dutch guid I maintain on EU data legislation and data space initiatives
  • Went through a client’s digital transformation program plans, in order to provide some feedback next week
  • Had a conversation with the JRC on how to move forward with renewed MoU and collaboration with a client
  • Spent a day at my company’s office for the monthly all hands meet-up
  • Participated in the ethics working group meeting of all provinces.
  • with E watched Y do her preliminary first swimming exam (the real one is in two weeks).
  • after a conversation with E started listing and scouting out how to do AI stuff yourself, using tools that have been created ethically, and can be run without provding your own feedback into the learning loops. Turns out there are a few highly interesting European initiatives that strive to do just that. To be continued.

Hopefully next week I am able to make time for some blogging. It’s been two months or more I wrote a regular blogpost.


Y made paper snakes today, and invited me to make one with her too: the long tricolored snake is our collaborative effort. It’s been easily 40+ yrs since I last made one, it was fun. The three snakes on the right form a family, the child is the one having the colors of both others because. Because heredity, Y said.



This is a RSS only posting for regular readers. Not secret, just unlisted. Comments / webmention / pingback all ok.
Read more about RSS Club
30 Jan 03:02

A comparison of C++ and Rust compiler performance

by Derek Jones

Large code bases take a long time to compile and build. How much impact does the choice of programming language have on compiler/build times?

The small number of industrial strength compilers available for the widely used languages makes the discussion as much about distinct implementations as distinct languages. And then there is the issue of different versions of the same compiler having different performance characteristics; for instance, the performance of Microsoft’s C++ Visual Studio compiler depends on the release of the compiler and the version of the standard specified.

Implementation details can have a significant impact on compile time. Compile time may be dominated by lexical analysis, while support for lots of fancy optimization shifts the time costs to code generation, and poorly chosen algorithms can result in symbol table lookup being a time sink (especially for large programs). For short programs, compile time may be dominated by start-up costs. These days, developers rarely have to worry about small memory size causing occurring when compiling a large source file.

A recent blog post compared the compile/build time performance of Rust and C++ on Linux and Apple’s OS X, and strager kindly made the data available.

The most obvious problem with attempting to compare the performance of compilers for different languages is that the amount of code contained in programs implementing the same functionality will differ (this is also true when the programs are written in the same language).

strager’s solution was to take a C++ program containing 9.3k LOC, plus 7.3K LOC of tests, and convert everything to Rust (9.5K LOC, plus 7.6K LOC of tests). In total, the benchmark consisted of compiling/building three C++ source files and three equivalent Rust source files.

The performance impact of number of lines of source code was measured by taking the largest file and copy-pasting it 8, 16, and 32 times, to create three every larger versions.

The OS X benchmarks did not include multiple file sizes, and are not included in the following analysis.

A variety of toolchain options were included in different runs, and for Rust various command line options; most distinct benchmarks were run 10 times each. On Linux, there were a total of 360 C++ runs, and for Rust 1,066 runs (code+data).

The model duration=K_1*benchmark_i, where K_1 is a fitted regression constant, and benchmark_i is the fitted regression coefficient for the i‘th benchmark, explains just over 50% of the variance. The language is implicit in the benchmark information.

The model duration=K_2*benchmark_j e^{copies*(0.028+0.035L)-0.84L}, where copies is the number of copies, L is 0 for C++ and 1 for Rust, explains 92% of the variance, i.e., it is a very good fit.

The expression e^{copies*(0.028+0.035L)-0.84L} is a language and source code size multiplication factor. The numeric values are:

             1      8      16      32
   C++     1.03   1.25    1.57    2.45
   Rust    0.98   1.52    2.52    6.90

showing that while Rust compilation is faster than C++, for ‘shorter’ files, it becomes much relatively slower as the quantity of source increases.

The size factor for Rust is growing quadratically, while it is much closer to linear for C++.

What are the threats to the validity of this benchmark comparison?

The most obvious is the small number of files benchmarked. I don’t have any ideas for creating a larger sample.

How representative is the benchmark of typical projects? An explicit goal in benchmark selection was to minimise external dependencies (to reduce the effort likely to be needed to translate to Rust). Typically, projects contain many dependencies, with compilers sometimes spending more time processing dependency information than compiling the actual top-level source, e.g., header files in C++.

A less obvious threat is the fact that the benchmarks for each language were run in contiguous time intervals, i.e., all Rust, then all C++, then all Rust (see plot below; code+data):

Point in time when each benchmark was run, stratified by language.

It is possible that one or more background processes were running while one set of language benchmarks was being run, which would skew the results. One solution is to intermix the runs for each language (switching off all background tasks is much harder).

I was surprised by how well the regression model fitted the data; the fit is rarely this good. Perhaps a larger set of benchmarks would increase the variance.

30 Jan 02:58

Notes for January 23-29

by Rui Carmo

This is an abridged list of the non-work things I accomplished during this week.

Monday, 2023-01-23

Decided to cut down on social and screen time to avoid the utterly depressing stream of farewell posts from laid off colleagues and acquaintances.

  • Did not tidy the office this week, for a change.
  • Dealt with personal e-mail, including arranging for a replacement of the package Royal Mail lost.
  • Waited for a technician to come round due to the inexplicable failure of one of my landlines last Saturday (during another technician’s visit to the building). Was a no-show, got a text to the effect that the fault requires someone else to come round within 3 business days, so I’m making plans to cancel that service and route around the damage.
  • To let off some steam, I decided to reach into the parts bin, dig out a 32MB(!) SD card and a Raspberry Pi 1B from 2011 (likely the first I ever bought) and flash bmc64 on it. Not terribly useful, and not a nostalgia trip (I’m a Sinclair ZX81 veteran), but it was a good 20 minutes well spent at the end of the day to build what is essentially an educational toy. Felt tempted to port Basilisk II to circle, probably would have taken a swing at it if there was SDL support.

Tuesday, 2023-01-24

Awfully cold day. Woke up with a sore neck, spent most of it squirreled away in the office with the heater on.

  • Dealt with personal e-mail, set up a couple of mailbox categories for 2023.
  • Fiddled with runc to see if I could use it as sandboxing duct tape for uwsgi. The requirement for a rootfs is an annoyance, and I don’t want to reinvent the Docker wheel, so I’m back to fiddling with cgrulesengined and the like. They’re still being shipped as OS packages across most distributions that matter, and I can automate their setup with minimal fuss.
  • Added cgrulesengined and cgconfigparser to my cloud-init setup.
  • Futzed with Pimox a little to see if I could understand why Proxmox VE does not apparently support cloud-init for LXC containers, which is annoying.

Wednesday, 2023-01-25

Added more things to my “3D printing projects” backlog.

  • Finally received my missing Royal Mail package (a Titan Aero exruder for my Prusa).
  • Researched suitable extruder mounts and short-listed one for printing out and doing a test fit.
  • Got my MacBook 12” main board to boot again thanks to a replacement USB-C port I ordered on eBay weeks ago. Started designing a case for it around a massive aluminum heatsink.

Thursday, 2023-01-26

Very busy day. Zero actual fun was had.

  • Handled personal e-mail, scheduled some routine maintenance.

Friday, 2023-01-27

Feeling a cold coming on, which is perfect to do research and reading.

  • Finally managed to watch the first episode of The Last of Us in the evening. Seems promising, although I pretty much loathe zombie movies, even if fungi are the new brain viruses.
  • Rebuilt the back-end for my little Preact app.
  • Spent some time investigating mini server options. The best fit for my needs seems to be the ASRock DeskMeet B660. The Ryzen version has only one M.2 slot, and I can’t get Ryzen CPUs that match what Intel can offer in this range, so I’m going to start putting together a new machine with an i7-12700.

Saturday, 2023-01-28

Couch potato day.

  • Read The Economist.
  • Re-learned that Cmd + . issues Esc in iOS, which is such a massive throwback to my Mac OS 6 days that it is absolutely insane that I forgot about it for this long.
  • Spent a while debugging a stupid sqlite3.PARSE_DECLTYPES mistake.
  • Did more hardware component research.
  • Wrestled with a few unreasonable YAML files and fixed a bug in some of my deployment scripts that could have been prevented by Kubernetes picking just about anything else as a configuration file format.

Sunday, 2023-01-29

Family day. Brief outing.

  • In an attempt to be optimistic about building a compact PC with a minimally viable discrete GPU in 2023, decided to order a bunch of parts off Amazon.
  • Helped one of my kids publish a Godot game for his first game jam. The overall ease of the entire process is pretty amazing, but the best thing was watching him go through the end-to-end creative process.
  • Did some more Proxmox research to plan for migrating LXD containers onto a new instance.
  • Tested an Azure deployment template for a new project. Am a bit annoyed at API drift over the past year, and need to upgrade a few portions of it.

30 Jan 02:57

49-Euro-Ticket soll zum 1. Mai kommen

by Ronny
mkalus shared this story from Das Kraftfuttermischwerk.

(Foto: hpgruesen)

Hat viel zu lange gedauert und ist immer noch zu teuer, wie ich finde. Spart mir persönlich 53 Euro im Monat, exkludiert aber immer noch viel zu viel andere Menschen. Bund und Länder haben sich endlich über die Einführung des 49-Euro-Tickets geeinigt. Es soll nun zum 1. Mai kommen. Kaufbar ab dem 03. April.

Das bundesweit gültige 49-Euro-Ticket im Nahverkehr soll zum 1. Mai eingeführt werden. Bund und Länder einigten sich auf dieses Datum, sagte der Verkehrsminister von Nordrhein-Westfalen, Oliver Krischer: „Das, was viele sich wünschen, wird zum 1. Mai Realität.

[…]

Vom 3. April an soll das Ticket verkauft werden. Derzeit noch nicht bekannt ist, ob es das Ticket rein digital oder auch in Papierform geben soll. Nach Informationen des ARD-Hauptstadtstudios liegt hierzu eine Lösung auf dem Tisch, es seien aber bisher keine Details dazu bekannt.“

30 Jan 02:57

Return of the Freedumbs

by Michael Kalus
mkalus shared this story from Uploads from Michael Kalus.

Michael Kalus posted a video:

Return of the Freedumbs



30 Jan 02:56

Where did B.C.'s beloved Nanaimo Bar come from? | CBC News

mkalus shared this story .

The Nanaimo bar. It's a sweet treat made from chocolate, custard, coconut and walnuts. Love it or hate it, it's uniquely British Columbian.

But where did this chocolatey delicacy come from? 

To celebrate the launch of CBC's new permanent Nanaimo bureauNorth by Northwest host Margaret Gallagher spoke to food historian Lenore Newman about the origins of the treat that shares the city's name.

Newman says it can be traced back to three women in Nanaimo after the Second World War. 

Originally — and uncreatively — called chocolate slices, Newman says the "dainties" popped up around 1952, in, no surprise here, Nanaimo. The base layer, made of graham wafer crumbs, shows up earlier, but the square as we know it with the thick custard middle and chocolate on top appeared in a local hospital auxiliary cookbook in the early '50s, Newman said. 

WATCH | A 1987 CBC broadcast features the woman with the 'ultimate' Nanaimo bar recipe:

A B.C. baker's "ultimate" Nanaimo bars

CBC's Midday talks to a woman who extended her recipe into a business selling aprons and tea towels in 1987.

It was first deemed the Nanaimo bar by Vancouver Sun columnist Edith Adams in 1953 when she wrote that the dessert came from Nanaimo.

This is important to note, Newman says, because other places such as Mississauga and England have tried to claim it as their own.

The bar was later featured in the Expo '86 cookbook, giving it a little more notoriety. 

"I think if it had been called the chocolate slice, it would have faded into the past, but the fact that it was called the Nanaimo bar kept it rolling forward," Newman said.

WATCH | A modern take on the beloved Nanaimo bar:

A modern interpretation of Nanaimo Bar loved around the world

Samuel Hartono of Northern Bars shows the unique shippable design

The Nanaimo bar's fame has been far-reaching; when Harry and Megan visited B.C. in 2020, their interest in the treats caused a media frenzy in the U.K. and the U.S., prompting questions of what the square was and where it came from. 

The Daily Mail even printed a headline titled: Were Harry and Meghan Markle lured to Canada by chocolate treats? 

And in 2021, British Columbians were nonplussed when the New York Times published a recipe and photo of a Nanaimo bar that was, quite frankly, all wrong. 

That wasn't the first time people were offended over Nanaimo bars. In 2019, a Canada Post stamp featuring the dessert showed far too much of the middle layer, prompting outrage from Nanaimo bar enthusiasts. 

Famous, infamous

"I like to say it's like the Kardashian of Canadian desserts in that it's famous for being famous and sometimes infamous, and it's amazing how much play it gets," Newman said. 

So, how do you make the perfect Nanaimo bar? Here's a recipe from The Great Canadian Baking Show

Ingredients

For the crust:

  • 1 cup graham wafer crumbs.
  • 3/4 cup unsweetened flaked coconut.
  • 1/2 cup finely chopped walnuts.
  • 1/3 cup cocoa.
  • 1/4 cup sugar.
  • 1/4 tsp salt.
  • 1/3 cup unsalted butter, melted.
  • 1 egg, beaten.
  • 1/2 tsp vanilla.

For the middle layer:

  • 1/3 cup unsalted butter, softened.
  • 2 tbsp custard powder.
  • 2 tbsp milk.
  • 1/2 tsp vanilla.
  • 1/8 tsp salt.
  • 2 cups icing sugar.

For the glaze:

  • 110 g semi-sweet chocolate, roughly chopped (about 3/4 cup).
  • 2 tbsp unsalted butter.

Instructions

Heat oven to 350°F. Line an eight-inch pan with parchment paper, with ends extending over the sides of the pan. Set aside.

Stir together graham crumbs, coconut, walnuts, cocoa, sugar and salt. Add butter, egg and vanilla, stirring to combine.  Press firmly into the prepared pan.

Bake until firm, about 10-12 minutes. Set aside to cool.

Meanwhile, prepare the middle layer. Mix butter and custard powder in a large bowl with a hand mixer. Add milk, vanilla and salt and mix to incorporate. Add icing sugar in two additions. Mix until light and fluffy. Spread over the bottom layer. Refrigerate for one hour.

While the crust and middle layer are in the refrigerator, stir chocolate and butter together in a medium heatproof bowl over a pot of simmering water until melted.

Spread chocolate glaze over the middle layer. Chill for 30 minutes. Remove from the pan with parchment edges and cut into 25 squares.

Store in an airtight container in the fridge.

30 Jan 02:56

Drag Queen Story Time supporters shout down protesters in Kelowna, B.C. | CBC News

mkalus shared this story .

Hundreds of supporters cheered on the reader at a Drag Queen Story Time in Kelowna, B.C., on Saturday, while a small group of protesters targeted the event, which returned following controversy.

It was the first time a drag queen had read at the library since 2019 when the Okanagan Regional Library's CEO spoke out against it, saying it could be divisive.

Following the first Drag Queen Story Time, an ideological battle broke out between the library board, librarians, drag queens, politicians, and parents, forcing the community to re-assess the role of libraries, and where drag queens fit into such public spaces.

On Saturday, Drag Queen Freida Whales — performed by Tyson Cook — was back after two readings in 2019.

Cook said he was touched by the welcome Whales received from hundreds of people waving rainbow flags and holding signs that read, "Drag story time safer than church," "You see a dress as sexual, sounds like a you problem," and "Support your local drag queens."

"It was definitely hard coming out of the parkade and not getting emotional because it was," said Cook on Saturday. "I was literally like a celebrity walking in ... and everyone was cheering for me. It was amazing to see."

Detractors of the events argue that cross-dressing storytellers could indoctrinate or sexualize children, while supporters say the glitzy story times aim to celebrate diversity in a safe space, saying it's prejudice — not drag queens — that hurts children.

The events that have been held across North America since 2015 as a way to create diverse, accessible, and culturally-inclusive family programming.

A small group of protesters at the event in Kelowna on Saturday confronted the supportive crowd outside the library as police looked on.

Protesters yelled and held signs that said, "Stop sexualizing children, drag is adult entertainment," "Parents have rights ... stop SOGI123," and "Trust the science, there are only two genders, leave the children alone."

'He just wants to hear the story'

The opposition did not keep parents and children away, however.

"It's just like a fun time with a character that is telling a story and is really interesting for the kids," said parent Cara Hills.

"So when I told my son that we were coming back he was just really excited. And he knows nothing of what's going on. He just wants to hear the story."

Another parent, Tara Taite, also spoke in support of her local library hosting the event.

"I think it's good to expose kids to all different ways of life and fun ways of being and just enjoying yourself."

Danielle Hubbard, CEO of the Okanagan Regional Library, said having a drag queen read at the library is part of a monthly readers program where volunteers from the community headline the event.

She estimated 300 people came to hear Whales read on Saturday.

"It's fantastic," she said. "Clearly, there's a lot of support for a diverse event like Drag Queen Story Time."

Hubbard said after the controversy in 2019, the library's board changed the policy to unequivocally allow events like Drag Queen Story Time.

"It's supporting our gender-diverse families. That's a segment of the population that has struggled a lot with representation."

Hubbard said the protesters voicing their opposition to the event did not detract from the story time.

"I think we're very fortunate in Canada to live in a society where people have the freedom to express their views and their opinions," she said. "I'm really pleased and relieved that from what we're seeing outside, it's peaceful on both sides of the divide."

Meanwhile Whales said she has seen a growing amount of support for the event in Kelowna and is looking forward to coming back.

"Our pride has been growing every year as well. So I mean, our community is just getting bigger and bigger. There's more and more allies that support us."

30 Jan 02:55

RT @flying_rodent: Voters keep spontaneously and organically convincing themselves of all kinds of wild and wacky shit, don’t they. A myste…

by Flying_Rodent (flying_rodent)
mkalus shared this story from AliceAvizandum on Twitter.

Voters keep spontaneously and organically convincing themselves of all kinds of wild and wacky shit, don’t they. A mysterious, inexplicable phenomenon. pic.twitter.com/zKDsD3NhTg



Retweeted by Donna Respirator (AliceAvizandum) on Sunday, January 29th, 2023 10:16pm


321 likes, 70 retweets
30 Jan 02:55

Pyle PLINK5 - HDMI capture that simply works!

by vwestlife
mkalus shared this story from vwestlife's YouTube Videos.

From: vwestlife
Duration: 10:37

Even 28 years after "plug and play" was first promised to PC users, it's rare to encounter a multimedia peripheral that simply works the first time you plug it in, with no special drivers or software needed. The Pyle PLINK5 PCI Express HDMI capture card is one of those products.

#hdmi #capture #gaming