Shared posts

24 Dec 02:20

Jacob Sayles

[[Vancouver]]-based. [[Coworking]] expert. [[Python]] developer.

I am a creative and entrepreneurial technologist with over 20 years of experience and a history of innovative ideas, well executed projects, and management of diverse teams. In 2007, I recognized the growing trend of independent and remote workers and opened Office Nomads, the first coworking space in Seattle, WA. To support this business and others like it, I wrote Nadine, the first open source coworking platform, and founded Open Coworking, a non-profit dedicated to the Coworking Movement. In 2016 I relocated to Vancouver, Canada to take on the role of Director of Technology for 312 Main, a 105,000 sf coworking community in the old Downtown Vancouver Police building.

24 Dec 02:19

Faruk has the best AirPods Max review

by Volker Weber

Before you watch this video, get your best headphones. You will need them.

He is putting in a lot of effort and it shows. Excellent work!

24 Dec 02:19

I added the latest post from my blog to my home...

I added the latest post from my blog to my home page using Micro.blog’s sidebar.js.

@manton, can we get permalinks in sidebar.js?

24 Dec 02:19

Cognitect post on sponsoring the Clojure ecosystem

“Imagine if every company using open source were to provide tangible sponsorship, on an ongoing basis, directly to the developers of the open source libraries and tools they use and rely upon.” – Cognitect, Sponsoring Open Source Developers

So many great quotes in this article. I disagree with some of it, eg:

Open source licenses effectively preclude developers from charging for their work.

But the whole thing is laying out facts that have been obvious to some for a long time. It helps build the awareness and movement of the evolution of the concept of open source and how businesses should treat it.

With Fission, we’re just taking the first steps on this path. We’re going to blend “traditional” open source with non commercial, with users banding together to fund features, and more.

I’m really glad to have publicly posted our beliefs.

24 Dec 02:18

There are well known North-American photographe...

by Ton Zijlstra

There are well known North-American photographers who through city scenes, road trips and street photography documented eras, whose images capture what we think of as iconic. Do you know European photographers who did the same across Europe, as opposed to just nationally? Is there a European collective like a ‘Magnum’ equivalent, for instance?
I’ve started exploring the federation of European photographers.

24 Dec 02:18

A New Design for Join

Our previous post talked about the problem of representing join operations with blocks. Our existing implementation uses a "listen for a signal" approach, which means there is no visual clue that pipeline C depends on pipelines A and B. In other words, one of the most complex operations we support is invisible in the user...
24 Dec 02:18

free riding on future web ads?

Free riding in today's web advertising is pretty basic.

  • Use an ad-supported site while blocking the ads.

Opportunities for free riding in the future are a lot more interesting.

  • Don't store "interest-based" ads that sites ask you to keep for possible future use.

  • Use a modified version of a browser-hosted ad auction that skips time-consuming processing steps.

  • Don't store delayed click or conversion tracking data, just drop it.

  • Turn off the browser's cache partitioning feature to save bandwidth and storage, knowing that companies won't invest in tracking the small fraction of users who figure out how to do this.

  • Identify yourself as a member of a more desirable interest group, to get better-looking ads than your station in life entitles you to.A discussion thread about economic inequality is just under the surface of the web ad argument. Much of the targeting that marketers want to do is about chasing the same people who have the money for discretionary personal spending and are also b2b decision-makers while avoiding wasting ad budgets on people who aren't in a position to spend money.

Some of the proposals for post-cookie web advertising create new opportunities for free riding, either by individuals tweaking their settings or by developers who rebuild the browser with stubbed-out versions of ad placement and reporting features.

Privacy features in post-cookie web ads are going to make a lot of free riding hard to detect while a visitor is on a site. There's no immediate difference perceptible to the site between a browser that is actually running in-browser ad auctions and delayed reporting, and a browser that is skipping all that stuff.

Will free riding browsers be an obscure nerd niche, or will these practices become common enough to provoke widely adopted countermeasures? Software, music, and movies have DRM systems. Online games have anti-cheating systems. Educational testing has intrusive proctoring systems. Will future web ad systems require some kind of locked-down browsing environment to keep people using the post-cookie ad placement and reporting system as intended?

Bonus links

How a New Hampshire libertarian utopia was foiled by bears

New York City Drivers Cooperative Aims to Smash Uber’s Exploitative Model - The city's first worker-owned ridesharing app gets ready to take on the big boys.

P&G is taking more of its ad buying in-house in a loss for advertising giant Omnicom

Facebook Profits as Users Are Ripped Off by Scam Ads

Gangs are breaking into fast-moving lorries to steal PS5s

Time to Say Goodbye to Google Fonts

How Easy Is it to Build a Robot Assassin?

24 Dec 02:18

The Purpose of Work

by Dave Pollard


child labourers, Pennsylvania, 1910, photo by Lewis Hine in the National Archives

The word “work” originally meant “what we do”, and came into use around 900 years ago. At that time it was mostly about craftwork, and the design and creation of art. The words “job” and “employee”, describing modern forms of voluntary servitude, are only about 170 years old, inventions of the industrial age. Prior to that, there was of course, involuntary servitude, in the form of slavery, feudal serfdom, and military conscription, dating back about 4,000 years.

Perhaps it’s no coincidence that the bicameral mind, the evolution in the human brain that makes possible the conception of the separate self, and of language, agriculture and “civilized” culture, is also believed to date back about 4,000 years. As soon as there were creatures who conceived themselves as separate beings with free will and choice, there were other creatures poised to exploit that sense, and the anxiety that accompanied it, to bend them to obey another’s will. Hence armies, hierarchies, nobles, serfdom, and the use, and abuse, of power.

The vast majority of us today spend roughly half our waking hours directly or indirectly engaged in “work”, and before that being “schooled” for “work”, from very early childhood until death, or, for a lucky few, until we are deemed unsuitable to continue working and are “retired” from the work “force” and labour “force” (one of many “work”-related terms borrowed from the military).

It is perhaps surprising then, this invention of voluntary servitude called “work” being so new and yet so preoccupying our lives, that relatively few of us even ponder the purpose of “work”, and most just assume this exhausting and life-defining labour is essential to society’s functioning.

It’s a false assumption. Even with our unsustainable human numbers, the availability of billions of barrels of oil, each capable of producing the equivalent of 4.5 person-years of labour, is more than enough, if it were not spent on wars and extravagances, and if it were even close to equitably distributed, to allow everyone who didn’t want to work to live a life of comfortable leisure. In fact, this bonanza of essentially free energy has both enabled and provoked the hockey-stick exponential growth of human numbers, from less than one billion when it was first discovered (and when the concepts of “jobs” and “employees” were first invented), to nearly eight billion today.

As Daniel Quinn has explained, it is the availability of food (and the productive capacity to make it available in vast quantities that cheap energy has enabled) that has led to the population boom. In all animal populations, even in creatures as bone-headed and disconnected from the rest of life as our species, numbers adapt quickly to the availability of food.

So one reason we feel we “have” to work is because the number of humans we have to feed quickly explodes to match the amount of food we produce, necessitating ever more work to produce ever more food and other necessities of life for ever more people — and because the wealth is so inequitably distributed and so much of the wealth is squandered on non-necessities, the system is in a state of constant scarcity.

Yet even with this massive waste and inequality, the vast majority of “workers” — and “executives” in particular — are employed in completely unnecessary bullshit jobs. The economy employs people not because it has to (a comfortable guaranteed annual income would be a much simpler and more effective way to distribute wealth) but because it feels it must do so to enable the species to have the means to buy the insanely overpriced and mostly useless shoddy crap that has to be sold “to keep the economy growing”. It’s an insane mass delusion, and we have all been conned into believing it, and have spread this nonsense propaganda to our children.

And to keep the mad wheel spinning, a comparable, extravagantly-expensive barrage of propaganda called “marketing” is required to convince us that we “need” to buy this crap, that our very identity is caught up in how elegantly we decorate our homes and our bodies.

And of course, it’s killing the planet. But this system of mostly-useless “work”, of excessive production and subsequent trashing of mostly-worthless overpriced junk, has been operating for 170 years, as long as the idea of “work” and “industry” has been around, since there were only a billion of us living mostly within our means. And like all complex systems, it obeys Pollard’s Law of Complexity, which means it will continue to resist reform and try to self-perpetuate until it can no longer do so, and then rapidly collapse.

For almost all of us, while it may seem that our work has purpose and meaning, it is completely unnecessary, a product of a completely dysfunctional economic system. Were it not so, the only people who would “have” to “work” would be those who find joy in making things work well and making them work better.

This was the original meaning, and value, of “work” — the work of the crafter, the artist, and more recently the scientist, those pursuing their passion to make the world a better place. This true work is about making an essential product or service better. Not the bullshit jobs of ad agencies, sales “forces”, usurious bankers, munitions manufacturers, vulture capitalists, f&%^ing lawyers, factory farm managers, commodities speculators and other highly-paid miscreants.

As our economy gets more and more dysfunctional in its more advanced state of collapse, it will serve fewer and fewer of us, and, as happens in all civilizations, the vast majority of us will, one person at a time, walk away from it. We will, by force or by choice, stop buying what we don’t need, refuse to pay for what is essential (recognizing that the bounty of the world belongs to all of us, and should be distributed generously and freely to all), and — most importantly — refuse to work. It can’t happen soon enough. As quickly as economic collapse often unfolds, because of Pollard’s Law it will need to be precipitated; we should strive to accelerate collapse before it exhausts the last of the planet’s resources.

In the meantime, there is real work to be done. In the vacuum of collapse we will have to relearn how to build real community, and all of the skills and practices that making a life in a radically relocalized community entails, like those described in this list:

And as we start to do that, we can learn about deep work, the work of inventors, artists, craftspeople, scientists and others whose energies are actually spent in making things work well and making them work better. 

This real work, I believe, has a number of characteristics:

  1. It is extraordinarily collaborative and deliberative. As with the thousands of public health workers all over the world who have struggled with understanding and coping with CoVid-19, this is not siloed work, and nothing is kept secret. It has no individual heroes. It’s the future of our planet and our societies that’s at stake, and only by standing on the shoulders of giants, and standing shoulder-to-shoulder with others with different knowledge, ideas and insights, can this work be done well.
  2. It is unashamedly generous. It is done for its own sake, because it’s important, because it cannot not be done, not for profit or glory.
  3. It is painstaking and patient. Real work requires concentration, experience from failure, years of practice, perseverance, and self-discipline. If it’s rushed or done sloppily or thoughtlessly or distractedly, it’s not good work.
  4. It is both imaginative and creative. These are different qualities, and they require different innate and practiced capacities. We live in a world of enormous imaginative poverty because we no longer practice it, as children or as “employees”. And we abuse the term “creative” to describe worthless financial “products”, incremental, derivative thinking, marketing “buzz” and too much other useless “work”.
  5. It stems from a combination of passion and curiosity. We can only do real work when we really care about the world and how what we do contributes to making it better. And we can only make things better when we’re curious about why they are the way they are, and capable of pursuing “what if” lines of thinking.
  6. It requires exceptional critical thinking skill. That requires great humility. It is easy to produce a new design, a new theory, a new idea. To understand why things are the way they are, and not how one wishes or hopes or thinks they might be, is to realize how insignificant and powerless we are, as human individuals. Critical thinking requires both a conscious process (built on self-knowledge and self-awareness of one’s own ignorance, biases, and poor thinking and behavioural habits), and years of practice.
  7. It requires enormous attention and listening skills. There is a horrifying shortage of these skills in modern society, and especially in most modern “work” places.

One of the things that most shocked me when I retired was the realization that, after 37 years in the work “force”, I had really done almost no real work. And the little real work I had done was almost entirely outside the “work” place, and almost entirely unpaid.

Since retiring, I have basically gone back to square one — learning more about myself and building personal core capacities (the first four steps in the Being Adaptable list above), and practicing doing things that I care about (in my case writing, conversation, music, and learning) and things that I’m at least marginally skilled at (making unique connections between ideas and information from disparate fields, and using them to imagine new possibilities).

I live in a community that has real needs — lots of old people, many single and in not-great health, so when the power goes out or the driveways get snowed in, or there’s a medical or plumbing emergency, or a scary intruder, or a fallen tree, or the ferry is cancelled, or any of a hundred other little crises that can happen in an isolated community, people need to get working on them fast. And I have realized that I have essentially none of the skills that my neighbours might need. For all my lauded successes in the “work” “force”, my exceptional reputation, and all the praise and thanks I’ve been given for my “work”, I’m more or less useless here.

Most of us are going to find that, as economic collapse deepens and becomes permanent, and then ecological collapse weighs in, most or all of the “work” we’ve done in our careers was actually a waste of time, and of no value in a post-collapse world, leaving us ill-equipped and with little time to relearn what real work is about. It’s going to be humiliating and sobering for many — like the executives — and bewildering for just about all of us.

We’re going to have to figure out what we need, and what our community needs, and offers. We’re going to have to learn some basic skills that weren’t necessary in a hierarchical “work” place. We’re going to have to figure out what our real skills and capacities are, and what we really care about. We’re going to have to discover who we really are and what our biases, fears, strengths and weaknesses, wants and needs, triggers and sorrows are, and for many that will be a horrifyingly difficult and sobering process.

Only then can the real work begin.

24 Dec 02:11

The websites must work without JavaScript debat...

The websites must work without JavaScript debate makes total sense for the document web (see recent post by Remy Sharp).

It doesn’t make sense for the app web. Great JS (and WebAssembly!) powered apps are a good thing.

21 Dec 06:35

reading about a couple of guys who tried to build a network of steam-powered cars across 19th century Ireland, chucking to myself at what a ridiculous infrastructure project it would be, then realising we basically do all of this for cars now pic.twitter.com/0S4S8hxO7J

by mothman roadkill (AliceAvizandum)
mkalus shared this story from AliceAvizandum on Twitter.

reading about a couple of guys who tried to build a network of steam-powered cars across 19th century Ireland, chucking to myself at what a ridiculous infrastructure project it would be, then realising we basically do all of this for cars now pic.twitter.com/0S4S8hxO7J





32 likes, 3 retweets
20 Dec 06:03

Thick Cream

by peter@rukavina.net (Peter Rukavina)
20 Dec 06:03

Twitter Favorites: [socialistdogmom] hey sorry i didn’t get back to you, i was in a depressive hole for a few days and then felt too embarrassed about n… https://t.co/q92TfUlF8t

molly conger @socialistdogmom
hey sorry i didn’t get back to you, i was in a depressive hole for a few days and then felt too embarrassed about n… twitter.com/i/web/status/1…
20 Dec 02:49

Recommended on Medium: Three Considerations

  1. Naming capitalism as the source of all trouble minimizes our complicity in the democracy that maintains its injustice. Every day I’m struck by the fact that different political leadership and different public participation in systems could yield very different results than what we have today. By pushing fault into a system outside of that our complicity in today’s political landscape gets minimized, and so does all of the power we had yesterday and have today and tomorrow, to do differently, to force a different set of rules to govern capital.
  2. Contact-tracing/exposure notification apps are modern propaganda. I’m too light on knowledge of McLuhan but his work feels relevant here. There is something incredibly destructive and confusing about the political introduction of technologies that are hundreds of miles away from the core responses needed and known for a pandemic. They are messing with public education about public health, they are messing with our collective understanding of response, and they are messing with our capacity to hold politicians accountable for deep and widespread failure. This is because they have been introduced without all the requisite policy supports. Yes, there are small upsides to their creation, some of which are internal to how governments build technology, but these upsides come nowhere near to close to the harm they are doing to our broad political understanding of pandemic response, particularly within a particular class of people. And note, propaganda is not a pejorative term — its use must must be considered in terms of your opinion of the state and its policy agenda.
  3. Talking about different worldviews is one of the hardest things I’ve encountered in my work in democracy to date. I can’t even put more words to it than that right now but it’s a site of work for next year.
“Pattern Black&White Abstract” by taylor.a is licensed under CC BY 2.0
20 Dec 02:49

Twitter Favorites: [tinysubversions] Some people have trouble visualizing how much money billionaires really have, so here's how I like to think of it:… https://t.co/fFl68OO15r

Darius Kazemi @tinysubversions
Some people have trouble visualizing how much money billionaires really have, so here's how I like to think of it:… twitter.com/i/web/status/1…
20 Dec 02:49

Submarine coming through!

by Charlie Stross
mkalus shared this story from Charlie's Diary.

I'm in a holding pattern on the blog just now because I'm frantically busy with end-of-year work: publisher production departments like to clear their desks before the office shuts down for a fortnight, and they expect to come back to a full in-tray on January 4th, and of course authors don't have families or friends to socialize with, so why not share the joy of a tight deadline copy edit check with your loved ones this festive season?

That's not actually what I'm working on right now, but I am actually working way more than usual, and as a result I hope to have good news to share with you early in the new year.

As for the blog?

I ought to blog about either an update on my COVID19 forecast, or an update on my Brexit forecast, but those are basically boring and disgusting and demoralizing and would take precious brain cells away from bringing you the next book, so naaah. If you feel like updating me with your predictions for 2021 in the comments below, though, go right ahead.

Finally, I have one thought to leave you with. Apparently the Washington Post ran a write-in competition for the best summary of 2020, and the winner (a nine year old from the mid-west) came up with this totally accurate description: "2020 was like taking care to look both ways before you cross the road, and then being hit by a submarine."

Happy solstice!

20 Dec 02:48

OmniFocus for the Web Adds Quick Open

by David Lonning
mkalus shared this story from The Omni Group.

We are happy to announce that the new Quick Open feature is now available to all users of OmniFocus for the Web. This marks the final feature release for OmniFocus for the Web of 2020, a year that also brought custom perspective support, keyboard shortcuts, enhanced view options (including the Today tag in Forecast view), improved preference syncing between platforms, subscription-free trials, and a rebuilt API that paves the way for even more features to come.



Quick Open adds powerful keyword-based navigation between items and perspectives in OmniFocus. It is already enabling new workflows for users that help accomplish more with OmniFocus for the Web—but don’t take our word for it:

This is great! I have a perspective based on a tag in the project name, but not the individual tasks. Now, I can use the keyboard to open the project and review the tasks in the project. This is really good for sprint reviews. -Robert Floyd, Omni Group Slack member

Use Quick Open in OmniFocus for the Web by pressing the letter O any time you aren’t editing the contents of a cell.

Quick Open is an automatic feature upgrade for OmniFocus for the Web, a browser-based companion to OmniFocus for the Mac and OmniFocus for iOS. Visit web.omnifocus.com to begin a trial of OmniFocus for the Web for free.

20 Dec 02:48

Bandcamp Friday: Resurgam by Alias, + bonus Song Exploder and iTunes Match

I’m working my way through past purchases. It’s been nice to at least spend time every Friday listening to and exploring music a little bit. This week is Resurgam by Alias, released in 2008. The artist passed away in 2018.

Alias resurgam

Here’s the I Heart Drum Machines track:

Resurgam by Alias

I’m bad at genres, this is labeled on Bandcamp as electronic / hip-hop / beats. This also gives me a starting point to look for other music that is new-to-me. /me starts browsing ‘beatz’


Song Exploder Vol 2 is now on Netflix:

I really enjoyed the Dua Lipa and The Killers episodes. Genre-wise, I guess both of these are “pop”.

I bought Dua Lipa’s Future Nostalgia (out now) and The Killers’ Sam’s Town (from 2006!).

The bigger “commercial” artists however mostly only sell through platforms, so I bought these two through iTunes.

I do use Amazon Music for random play lists and discovery. I have had a bunch of Dua Lipa favourited in there that I’ve been listening to.

Oh, and my iTunes Match subscription renewed. It’s not really promoted by Apple any more. For $30CAD annually, all my music from any source (e.g. music I buy on Band Camp and add to the Music app) is stored by Apple and available on any device. Essentially, a fancy unlimited file sync service, optimized for music.

20 Dec 02:48

“Facebook’s argument is along the lines of argu...

“Facebook’s argument is along the lines of arguing that the police shouldn’t crack down on burglaries because it might hurt pawn shops.”

Gruber in Daring Fireball on Facebook ads against Apple’s anti-tracking

20 Dec 02:48

Bremen ist auf Fernunterricht gut vorbereitet

by Volker Weber
Mit dem Lockdown steigt in vielen Lehrerkollegien die Hektik. Ausgerechnet Bremen, das bisher als Bildungsverlierer galt, ist auf Fernunterricht bestens vorbereitet.

Neben neuen Geräten haben die Behörden schon 2015 die digitale Lernplattform itslearning angeschafft, deren Nutzung für alle Lehrer und Schüler verpflichtend ist. Alle Schulgebäude werden, sofern noch nicht geschehen, mit schnellem drahtlosem Internetzugang ausgestattet. Kinder und Lehrer erhielten – ebenfalls einzigartig – einen zentralen Nutzernamen. Nun haben sie nicht nur eine Schul-Mailadresse, über die eine gesicherte Kommunikation laufen kann, sondern auch einen Zugang zu allen Schulnetzen der Stadt.

Das ist eine solide Grundlage, auf die man bauen kann.

More >

20 Dec 02:48

Tip of the Day – Firefox Screenshot Utility

by Martin

Image: Firefox screenshot utility on context menu

Once upon a time web pages were simple enough to save them locally for reference or future lookup with the browser’s built-in tools. And to just preserve how the web page looks, ‘print to PDF’ was my first choice. The problem with printing to PDF these days is, however, that the browser tries to format the web page for A4/letter format, which often destroys the layout of the page. In many cases, parts of the web page are missing or horribly distorted, and content is cut between A4/letter pages. Pretty much unusable. But have you noticed that Firefox has a handy ‘screenshot utility’ that does the job perfectly?

The twist of Firefox’ built in screenshot utility vs. non-browser screenshot utilities is that it does not only save what is currently visible in the browser window but the complete web page, even if it’s many ‘windows’ long. Even complex web pages with dozens and dozens of images and a length that would quire many A4/letter pages are not a problem. Firefox just makes a very long PNG formatted image out of the complete page with content and formatting beautifully preserved. Perfect to remember in a few decades how the web used to ‘look’ like. It’s not possible to preserve how the page ‘feels’ this way, as the active content is ‘frozen’ in the image. But I guess that is acceptable for most use cases. And if not you can still make a screen-cast video.

20 Dec 02:38

Microsoft reportedly developing custom ARM chips for servers, Surface PCs

by Jonathan Lamont
Microsoft logo

Microsoft could be working on its own ARM-based chips for use in servers and potentially even Surface devices.

As reported by Bloomberg (via Gizmodo), the Redmond, Washington-based software giant has a chip design unit operating under Jason Zander, head of the Azure cloud business. Based on information given to Bloomberg from people familiar with the initiative, Microsoft will likely opt for a server chip first while a consumer CPU for Surface devices may come later.

To further support the rumour, Bloomberg says that Microsoft increased hiring of processor engineers in recent years, and has been recruiting “in the backyard” of other chipmakers. That includes Intel, AMD, Nvidia and Qualcomm.

Microsoft isn’t the only company making the leap to ARM when it comes to server applications. Amazon has been working on its own ARM-based chips for servers for some time. According to Bloomberg, Amazon says its chips are better suited to its needs and have improved cost and performance advantages compared to Intel’s offerings.

One of Intel’s biggest moneymakers is server chips. Currently, the company commands about 90 percent of the market through its Xeon CPUs, despite recent gains from AMD. Intel told Bloomberg in a statement that workloads like artificial intelligence (AI) fuel incredible demand for computing in the cloud and that it’s “committed to providing customers the world’s best CPUs and new products from GPUs to AI chips.”

However, a primary concern of companies that operate massive data centres, such as Microsoft, is the cost of electricity. ARM chips can run more efficiently than x86 offerings from the likes of Intel and AMD — switching to ARM-based silicon could help reduce the energy demand in these data centres.

Apple’s M1 may encourage Microsoft’s custom ARM silicon efforts

On the consumer side of things, there is a lot of incentive to jump to custom ARM silicon. Microsoft has worked to make Windows 10 on ARM viable for years and has even partnered with Qualcomm to develop ARM-based chips to power some Surface devices. Currently, only the Surface Pro X features the SQ1 or SQ2 chips, depending on the model. Further, the Surface Pro X line is actually quite good, with the exception of some software compatibility issues — many of the apps and programs built for Windows are designed for x86 chips like what Intel and AMD offer. Microsoft has struggled to encourage developers to transition software to ARM when most PCs still use x86, but even that’s slowly changing.

However, the second part is Apple, which surprised people with how good its ARM-based Apple Silicon platform is. The Cupertino, California-based company recently launched new MacBooks and Mac computers powered by its ‘M1’ Apple Silicon chip. The M1 offers significant performance leaps over previous Intel-powered Macs while also offering better battery life thanks to the increased efficiency. Again, there have been some who encountered issues with the new M1 silicon, but those issues are largely software related and, in time, Apple and developers will likely iron out those kinks.

Apple’s success, coupled with Intel’s struggle to get its 10nm and 7nm processes off the ground, has shown PC makers that ARM could be an effective alternative. Microsoft’s Surface line largely uses Intel chips, with a few AMD models available as well. However, some of the company’s low-power devices, like the Surface Go tablet or new Surface Laptop Go, could benefit significantly from the more powerful and more efficient ARM chips. If Microsoft’s custom silicon efforts work out, we could see new Surface models sporting custom CPUs in the future.

Source: Bloomberg Via: Gizmodo

The post Microsoft reportedly developing custom ARM chips for servers, Surface PCs appeared first on MobileSyrup.

20 Dec 02:38

How Shopify Uses WebAssembly Outside of the Browser

How Shopify Uses WebAssembly Outside of the Browser

I'm fascinated by applications of WebAssembly outside the browser. As a Python programmer I'm excited to see native code libraries herring compiled to WASM in a way that lets me call them from Python code via a bridge, but the other interesting application is executing untrusted code in a sandbox.

Shopify are doing exactly that - they are building a kind-of plugin mechanism where partner code compiled to WASM runs inside their architecture using Fastly's Lucet. The performance numbers are in the same ballpark as native code.

Also interesting: they're recommending AssemblyScript, a TypeScript-style language designed to compile directly to WASM without needing any additional interpreter support, as required by dynamic languages such as JavaScript, Python or Ruby.

Via Hacker News

20 Dec 02:37

Building a search engine for datasette.io

This week I added a search engine to datasette.io, using the search indexing tool I've been building for Dogsheep.

A screenshot of dogsheep.io search results for ripgrep

Project search for Datasette

The Datasette project has a lot of constituent parts. There's the project itself and its documentation - 171 pages when exported to PDF and counting. Then there are the 48 plugins, sqlite-utils and 21 more tools for creating SQLite databases, the Dogsheep collection and over three years of content I've written about the project on my blog.

The new datasette.io search engine provides a faceted search interface to all of this material in one place. It currently searches across:

  • Every section of the latest documentation (415 total)
  • 48 plugin READMEs
  • 22 tool READMEs
  • 63 news items posted on the Datasette website
  • 212 items from my blog
  • Release notes from 557 package releases

I plan to extend it with more data sources in the future.

How it works: Dogsheep Beta

I'm reusing the search engine I originally built for my Dogsheep personal analytics project (see Personal Data Warehouses: Reclaiming Your Data). I call that search engine Dogsheep Beta. The name is a pun.

SQLite has great full-text search built in, and I make extensive use of that in Datasette projects already. But out of the box it's not quite right for this kind of search engine that spans multiple different content types.

The problem is relevance calculation. I wrote about this in Exploring search relevance algorithms with SQLite - short version: query relevance is calculated using statistics against the whole corpus, so search terms that occur rarely in the overall corpus contribute a higher score than more common terms.

This means that calculated full-text ranking scores calculated against one table of data cannot be meaningfully compared to scores calculated independently against a separate table, as the corpus statistics used to calculate the rank will differ.

To get usable scores, you need everything in a single table. That's what Dogsheep Beta does: it creates a new table, called search_index, and copies searchable content from the other tables into that new table.

This is analagous to how an external search index like Elasticsearch works: you store your data in the main database, then periodically update an index in Elasticsearch. It's the denormalized query engine design pattern in action.

Configuring Dogsheep Beta

There are two components to Dogsheep Beta: a command-line tool for building a search index, and a Datasette plugin for providing an interface for running searches.

Both of these run off a YAML configuration file, which defines the tables that should be indexed and also defines how those search results should be displayed.

(Having one configuration file handle both indexing and display feels a little inelegant, but it's extremely productive for iterating on so I'm letting that slide.)

Here's the full Dogsheep configuration for datasette.io. An annotated extract:

# Index material in the content.db SQLite file
content.db:
  # Define a search type called 'releases'
  releases:
    # Populate that search type by executing this SQL
    sql: |-
      select
        releases.id as key,
        repos.name || ' ' || releases.tag_name as title,
        releases.published_at as timestamp,
        releases.body as search_1,
        1 as is_public
      from
        releases
        join repos on releases.repo = repos.id
    # When displaying a search result, use this SQL to
    # return extra details about the item
    display_sql: |-
      select
        -- highlight() is a custom SQL function
        highlight(render_markdown(releases.body), :q) as snippet,
        html_url
      from releases where id = :key
    # Jinja template fragment to display the result
    display: |-
      <h3>Release: <a href="{{ display.html_url }}">{{ title }}</a></h3>
      <p>{{ display.snippet|safe }}</p>
      <p><small>Released {{ timestamp }}</small></p>

The core pattern here is the sql: key, which defines a SQL query that must return the following columns:

  • key - a unique identifier for this search item
  • title - a title for this indexed document
  • timestamp - a timestamp for when it was created. May be null.
  • search_1 - text to be searched. I may add support for search_2 and search_3 later on to store text that will be treated with a lower relevance score.
  • is_public - should this be considered "public" data. This is a holdover from Dogsheep Beta's application for personal analytics, I don't actually need it for datasette.io.

To create an index, run the following:

dogsheep-beta index dogsheep-index.db dogsheep-config.yml

The index command will loop through every configured search type in the YAML file, execute the SQL query and use it to populate a search_index table in the dogsheep-index.db SQLite database file.

Here's the search_index table for datasette.io.

When you run a search, the plugin queries that table and gets back results sorted by relevance (or other sort criteria, if specified).

To display the results, it loops through each one and uses the Jinja template fragment from the configuration file to turn it into HTML.

If a display_sql: query is defined, that query will be executed for each result to populate the {{ display }} object made available to the template. Many Small Queries Are Efficient In SQLite.

Search term highlighting

I spent a bit of time thinking about search highlighting. SQLite has an implementation of highlighting built in - the snippet() function - but it's not designed to be HTML-aware so there's a risk it might mangle HTML by adding highlighting marks in the middle of a tag or attribute.

I ended up rolling borrowing a BSD licensed highlighting class from the django-haystack project. It deals with HTML by stripping tags, which seems to be more-or-less what Google do for their own search results so I figured that's good enough for me.

I used this one-off site plugin to wrap the highlighting code in a custom SQLite function. This meant I could call it from the display_sql: query in the Dogsheep Beta YAML configuration.

A custom template tag would be more elegant, but I don't yet have a mechanism to expose custom template tags in the Dogsheep Beta rendering mechanism.

Build, index, deploy

The Datasette website implements the Baked Data pattern, where the content is compiled into SQLite database files and bundled with the application code itself as part of the deploy.

Building the index is just another step of that process.

Here's the deploy.yml GitHub workflow used by the site. It roughly does the following:

  • Download the current version of the content.db database file. This is so it doesn't have to re-fetch release and README content that was previously stored there.
  • Download the current version of blog.db, with entries from my blog. This means I don't have to fetch all entries, just the new ones.
  • Run build_directory.py, the script which fetches data for the plugins and tools pages.
    • This hits the GitHub GraphQL API to find new repositories tagged datasette-io and datasette-plugin and datasette-tool.
    • That GraphQL query also returns the most recent release. The script then checks to see if those releases have previously been fetched and, if not, uses github-to-sqlite to fetch them.
  • Imports the data from news.yaml into a news table using yaml-to-sqlite
  • Imports the latest PyPI download statistics for my packages from my simonw/package-stats repository, which implements git scraping against the most excellent pypistats.org.
  • Runs the dogsheep-beta index command to build a dogsheep-index.db search index.
  • Runs some soundness checks, e.g. datasette . --get "/plugins", to verify that Datasette is likely to at least return 200 results for some critical pages once published.
  • Uses datasette publish cloudrun to deploy the results to Google Cloud Run, which hosts the website.

I love building websites this way. You can have as much complexity as you like in the build script (my TIL website build script generates screenshots using Puppeteer) but the end result is some simple database files running on inexpensive, immutable, scalable hosting.

20 Dec 02:37

free riding on future web ads?

Free riding in today's web advertising:

  • Use an ad-supported site while blocking the ads.

Opportunities for free riding in the future:

  • Don't store "interest-based" ads that sites ask you to keep for possible future use.

  • Use a modified version of a browser-hosted ad auction that skips time-consuming processing steps.

  • Implement the APIs to store delayed click or conversion tracking data, but drop it and don't deliver it.

  • Turn off the browser's cache partitioning feature to save bandwidth and storage, knowing that companies won't invest in tracking the small fraction of users who figure out how to do this.

  • Identify yourself as a member of a more desirable interest group, to get better-looking ads than your station in life entitles you to.

When people get an opportunity to free ride, some of them will do it. Some of the proposals for post-cookie web advertising create new opportunities for free riding. Some of these might be done by individuals tweaking settings, but some might require rebuilding the browser.

Delayed reporting is going to make a lot of free riding hard to detect while a visitor is on a site. There's no immediate difference perceptible to the site between a browser that is actually running in-browser ad auctions and delayed reporting and a browser that is skipping all that stuff.

Will they be niches, or will free riding browsers become common enough that they provoke widely adopted countermeasures? Software, music, and movies have DRM systems. Online games have anti-cheating systems. Educational testing has intrusive proctoring systems. Will future web ad systems require some kind of locked-down browsing environment to keep prople from free riding on them?

Bonus links

How a New Hampshire libertarian utopia was foiled by bears

New York City Drivers Cooperative Aims to Smash Uber’s Exploitative Model - The city's first worker-owned ridesharing app gets ready to take on the big boys.

P&G is taking more of its ad buying in-house in a loss for advertising giant Omnicom

Facebook Profits as Users Are Ripped Off by Scam Ads

Gangs are breaking into fast-moving lorries to steal PS5s

Time to Say Goodbye to Google Fonts

How Easy Is it to Build a Robot Assassin?

18 Dec 23:48

AirPods Max do not stay on for two hours :: B/S detection

by Volker Weber

One of the biggest bogus claims about AirPods Max operation has been the claim that they stay on for two hours before going into sleep mode. Check reviews and Youtube videos for this b/s. I have been asking everybody who claimed it where they got this information from. Accordiing to Apple, this is what's really going on:

  • Your AirPods Max can get up to 20 hours of listening time, talk time, or movie playback when you have Active Noise Cancellation and spatial audio turned on. If you charge your AirPods Max for 5 minutes, you get around 1.5 hours of listening time.
  • If you set your AirPods Max down and leave them stationary for 5 minutes, they go into a low power mode to preserve battery charge. After 72 stationary hours out of the Smart Case, your AirPods Max go into a lower power mode that turns off Bluetooth and Find My to preserve battery charge further.
  • If you put your AirPods Max in the Smart Case when you're not using them, they go into a low power mode immediately to preserve battery charge. After 18 hours in the Smart Case, your AirPods Max go into an ultralow power mode that turns off Bluetooth and Find My and maximizes battery life.

I have never run into any power issues with AirPods Max. The only time I put them in the case was when I dropped them in a bag. And since the case is really tiny, I had no issue actually carrying the case, which I have never done with any other case.

Not relying on a physical off switch has a major beneft. You won't forget to turn them off. And with AirPods, they are on the second you put them on.

More >

18 Dec 23:48

Substack launches an RSS reader to organize all your newsletter subscriptions

Jacob Kastrenakes, The Verge, Dec 18, 2020
Icon

This is a development that is long overdue. Last year, Feedly made email subscriptions available through its RSS reader, and now, Substack is launching its own RSS reader to manage newsletter subscriptions and other RSS feeds "for people whose email inbox isn’t their ideal reading experience" (which, I think, is almost everyone). Substack's product still needs some work; "there’s no way to read stories inside of Substack Reader, like you can in a traditional RSS reader, and stories stay in your queue even after you’ve read them." But maybe - maybe - we're seeing a renaissance of distributed content networks.

Web: [Direct Link] [This Post]
18 Dec 23:48

Is it new? If not, don’t bother posting it.

by Josh Bernoff

Whether you’re doing a blog, a podcast, a video series, or a book, it had better include new information. Otherwise, don’t bother. This is, after all, the era of social media. If you like what somebody else wrote or posted, you can easily share it on Twitter or Facebook. Posting stuff that isn’t new is … Continued

The post Is it new? If not, don’t bother posting it. appeared first on without bullshit.

18 Dec 23:47

These Weeks in Firefox: Issue 85

by Mike Conley

Highlights

  • Here’s our Firefox Year in Review!
  • Here’s our Performance Year in Review!
  • We’ve just landed Bug 1553982, which aims to prevent starting an update while another Firefox instance is running (the cause of that about:restartrequired error page you may have seen).
    • The about:restartrequired error page, saying "Sorry. We just need to do one small thing to keep going. Nightly has just been updated in the background. Click Restart Nightly to complete the update. We will restore all your pages, windows and tabs afterwards, so you can be on your way quickly.", followed by a button to restart Nightly.

      Users who run multiple user profiles concurrently will probably see this less!

  • Also just about to land is Bug 353804, which provides some support for downloading new updates when we already have an update downloaded but haven’t installed it yet. That should prevent many cases of restarting to finish an update and then immediately being notified about another one.
  • Thanks to evilpie, users can now import logins from Keepass(XC) into Firefox
  • From Firefox 85 it’s now possible to disable tab-to-search on a per-engine basis, by unchecking a search engine in Search Preferences. That will both hide the shortcut button and disable tab-to-search for the engine. (Bug 1681512)
  • From Firefox 85 it’s also possible to disable tab-to-search globally by unchecking the Search Engines checkbox in the Address Bar Preferences, under Privacy & Security.
  • Firefox now supports printing non-contiguous page ranges (e.g. 1-3, 6, 7) – Bug 499640
  • DevTools and Marionette are now fully Fission compatible! Congratulations to those teams!
    • Reminder: Nightly users can help us test Fission by enabling it in about:preferences#experimental, and filing bugs here

Friends of the Firefox team

Introductions/Shout-Outs

  • [harry] Amy Churchwell joins the Search & Navigation team today. She transferred internally from Marketing Engineering. Welcome Amy!

Resolved bugs (excluding employees)

Fixed more than one bug

  • Masatoshi Kimura [:emk]
  • Michelle Goossens [:masterwayz]
  • Sonia
  • Tim Nguyen :ntim

New contributors (🌟 = first patch)

Project Updates

Add-ons / Web Extensions

Addon Manager & about:addons
  • Starting from Firefox 85, Mozilla-signed privileged addons can be installed from a third party website without triggering the “third party addon install doorhanger” (and without having to add new “install” site permission for those hosts, e.g. as we had to do for fpn.firefox.com) – Bug 1681331

 

WebExtensions Framework
  • Ankush Dua contributed a fix for the devtools optional_permission (the devtools optional_permission can be used by extension, like ABP, that provides a devtools panel as a secondary feature of the addon) – Bug 1671579
  • Fixed content scripts applied to webpages loaded as subframes of an extension browserAction/pageAction popup when Fission is enabled – Bug 1680877
  • Fixed addon startup issue when webRequest is moved from permissions to optional_permissions in an addon update (regression from Bug 1624235) – Bug 1637059

Developer Tools

  • DevTools Fission M2 – Making DevTools Fission compatible DONE.
    • A table showing the total number of remaining bugs for the MVP to make the DevTools Fission-compatible.

      Our DevTools are ready for Fission (out-of-process iframes)!

  • Marionette Fission – Making Marionette Fission compatible DONE
    • A table showing the total number of remaining bugs for the MVP to make Marionette Fission-compatible.

      Marionette, the framework that allows Firefox to be tested with automation, is now Fission compatible too!

Fission

Installer & Updater

  • Background updater work is also proceeding, with Bug 1676296 landing last week to support managing scheduled tasks in Gecko, and more development still also happening on the background task framework.

New Tab Page and Pocket

  • We’re running three experiments:
    • Newtab Pocket stories in AU and NZ
    • New signup/login call-to-action in the Pocket doorhanger
    • We’re testing some changes to newtab story personalization

Password Manager

  • Dimi fixed Bug 1677710 The password manager code triggers main thread sqlite disk I/O off of the gather-telemetry notification
  • And Bug 1678200 Remove or update probes expiring in Firefox 86: pwmgr.doorhanger_submitted#doorhanger_submitted
  • Thanks for Kenrick95 for fixing Bug 1678616 about:logins menu problem
  • 2021 Planning underway

PDFs & Printing

  • mstriemer put a Printing… message in the dialog and hid the popup dialog which showed progress, the cancel button on that dialog caused problems and it looked dated Bug 1679133
  • mstriemer hid the print setting that don’t relate to PDFs when a PDF is being printed Bug 1669725
  • mstriemer updated the form to be disabled when loading a printer’s settings. Sometimes loading a physical printer’s settings can take a few settings and changes could be lost in this time Bug 1676388
  • emalysz made a change to avoid updating the preview for some settings that can’t change the preview output Bug 1676199
  • sfoster added a paginator to the preview when it’s hovered to show current page, next/prev/first/last buttons Bug 1654684
  • emalysz added support for non-contiguous page ranges (ex: 1-3, 6, 7) Bug 499640
  • emalysz fixed an issue where the form could get disabled with custom margins interactions Bug 1674106

Performance

Picture-in-Picture

Search and Navigation

  • Fixed regressions related to Input Method Editor, in particular loss of the last token (Bug 1673669) and race conditions causing the wrong search engine to be used or Search Mode to be lost (Bug 1679697, Bug 1678647)
  • Introduced a new advanced preference to keep the Address Bar results panel open during IME composition. This provides a better experience for keyboard layouts that don’t open a picker panel. In the future we hope to be able to auto-detect that situation, but in the meanwhile, you can flip browser.urlbar.imeCompositionClosesPanel to false and test the alternative behavior (Bug 1673971)
  • URL canonization (www.*.com) now uses https by default, the protocol can be customized through the browser.fixup.alternate.protocol advanced pref (Bug 1638215)
  • Work continued on the weather QuickSuggest experiment, but its release has been moved to January.
  • Region.jsm now can use a Geolocation monitor to update without hitting the network (Bug 1663501)
  • Fixed a bug where search engines were being re-added on startup after their removal, when using a language pack (Bug 1675624)
18 Dec 23:39

SUMO Updates – Looking back on 2020

by Rizki Kelimutu

There is a lot happening in 2020 even when the world we live in right now has changed dramatically in just a year. Amidst all that, I feel even more grateful that the passion in our community remains despite all the internal changes in the organization and as we take our time to rearrange the pieces back, and refocus our lenses in order to welcome 2021.

I want to take this opportunity to reflect back and celebrate what we have accomplished together in 2020:

H1: Transition to Conversocial and get the community strategy project off the ground

We begin our journey in Berlin this year for our last all hands before the world goes into the state we are right now. The discussion at that time has also helped us to shape the community strategy project which we’ve been working on since the end of 2019. We also moved our main communication to Matrix, We received a lot of positive feedback during the transition period which made us confident for the full transition. We also managed to move our Social Support platform from Buffer Reply to Conversocial in March.

We’ve done a lot of progress on the onboarding project too, as part of the community strategy project. Now we have the design and the copy ready for implementation, which still needs to be scheduled.

H2: Intoruducing Play Store Support officially and getting the base metrics agreed

In Q3, we focused our efforts to helped the mobile team to transition from Fennec to Fenix. And we use the rest of the year to work on the remaining areas from the community strategy project that we have re-evaluated. One of the most important piece is the base metrics for the community which I can’t wait to share with you the beginning of next year. On top of that, I’m also putting together a plan to leverage this page as a guidelines center for the contributors moving forward.

Recently, we’ve also managed to do an experiment on tagging on the support forum. This is a small experiment that serves as a stepping stone for the larger tagging strategy project that we will be working on as a team for the next year.

I want also to acknowledge how difficult 2020 was. “Difficult” is probably not even the right word. Despite the combination of uncertainty, various turmoil, frustration, that we experienced, I’m grateful that we could remain focus and accomplished all of these things together.

Thank you is barely enough to express how grateful we are for all the contributions, discussion, ideas, and feedback that we shared through the year 2020. But nevertheless, thank you for always believing and being part of Mozilla’s mission.

Let’s keep on rocking the free web through 2021 and beyond!

Kiki

18 Dec 23:35

Cross National Death Rates

Data from the Short Term Mortality Fluctuations dataset compiled by the Human Mortality Database continues to be very interesting. When thinking about how to interpret the 2020 data in a cross-national and longitudinal context, it’s clear that there are several things to bear in mind. For example, and at a bare minimum:

  • Countries vary widely in their average mortality rates
  • Mortality rates, on the whole, tend to fall over time, so the further back in time we can get data the higher the mortality rate for those years will tend to be
  • In the immediate context of the pandemic, countries differed substantially in their response to COVID

Each of these things (and more besides) complicates the question of comparison, and also complicates the counterfactual for what counts as a “good” national response to COVID.

Here’s a graph showing the overall mortality rates by week for a selection of countries. The grey lines are the available rates for previous years. The red line for each country is 2020 up to Week 40. Even though these are rates, and not raw counts, we’ll still see noisier series for relatively smaller countries (like Luxembourg) and tighter series for larger ones (like the United States) just because of the law of large numbers.

Comparative mortality rates over time

Comparative mortality rates over time

In general, the longer the mortality series available for a country, the more likely its 2020 series will fit within the overall range of rates, or even seem to be typical, given the tendency of mortality rates to be falling. Similarly, the more effectively a country suppressed COVID (or for other reasons remained unaffected by it) the more its 2020 series will look typical.

For countries where there’s a clear spike in the series or a clear period of sustained higher mortality, I think it’s worth separating two points. The first is the overall level of excess mortality that a country records for the year. Excess mortality counts can be tricky to conceptualize because you need to assess the number of counterfactual deaths—the people who would have died of something else this year anyway, if they had not died from COVID. (There’s also the second-order question of people who are at present still alive but who would have died of something this year—a car accident, perhaps—had they not been at home and locked down.) So it may turn out that overall excess mortality in some countries will be closer to the average of the recent past than expected. The question of the right comparison point appears once more here, as comparing mortality over a long period will almost always tend to make the present look good.

The second point to bear in mind is that, apart from the overall mortality level, there’s also the question of the size of the mortality shock experienced by countries where COVID surged. This is more a question of the effect at the margin, that is, of the effect of the sudden appearance of a disease that overwhelmed the system’s capacity to cope. The spikes in Spain, Italy, France, the UK, and to a lesser extent the US are of obvious interest here. (The US has both a spike and a sustained excess, due largely to the combination of a very large population and wide regional variation in when and to what extend outbreaks have happened.) Even if total all-cause mortality for 2020 ends up being roughly in line with the past when annualized—and, to be clear, in many cases it will be much worse—the effects of the shock still quite clear. Systems set to manage some number of deaths per year at a reasonably steady rate were unable to manage an unexpected surge over the course of a few weeks. Net of seasonal changes in mortality rates (which health systems are generally geared to cope with, as more people die in the winter), the only other mortality shock of comparable scale that really stands out in these data is in France, where the effects of the 2003 heat wave are clearly visible. This event was of a substantially shorter duration than France’s COVID spike, though.

All of this is just at the country-level. There’s a whole other world of questions when it comes to breaking down the effects of the pandemic across age groups and other categories.

Given the speed at which decent data is becoming available, and the efforts of public health agencies to produce it and research units like the HMD to clean and harmonize it, it’s quite demoralizing to see nonsense of various sorts continue to be peddled in the service of playing down the scope and effects of the pandemic, or worse.

As usual, the graph above was produced using ggplot with the covdata package, which gathers up several sources of publicly available data, including that from the HMD, in a format that makes it easy to work with in R.