Shared posts

10 Nov 03:18

Working in a hybrid Metabase / Postgres code base

by Jon Udell

In this series I’m exploring how to work in a code base that lives in two places: Metabase questions that encapsulate chunks of SQL, and Postgres functions/procedures/views that also encapsulate chunks of SQL. To be effective working with this hybrid collection of SQL chunks, I needed to reason about their interrelationships. One way to do that entailed the creation of a documentation generator that writes a concordance of callers and callees.

Here’s the entry for the function sparklines_for_guid(_guid).

The called by column says that this function is called from two different contexts. One is a Metabase question, All courses: Weekly activity. If you’re viewing that question in Metabase, you’ll find that its SQL text is simply this:

select * from sparklines_for_guid( {{guid}} )

The same function call appears in a procedure, cache warmer, that preemptively memoizes the function for a set of the most active schools in the system. In either case, you can look up the function in the concordance, view its definition, and review how it’s called.

In the definition of sparkline_for_guid, names of other functions (like guid_hashed_view_exists) appear and are linked to their definitions. Similarly, names of views appearing in SELECT or JOIN contexts are linked to their definitions.

Here’s the entry for the function guid_hashed_view_exists. It is called by sparklines_for_guid as well as by functions that drive panels on the school dashboard. It links to the functions it uses: hash_for_guid and exists_view.

Here’s the entry for the view lms_course_groups which appears as a JOIN target in sparklines_for_guid. This central view is invoked — in SELECT or JOIN context — from many functions, from dependent views, and from Metabase questions.

Metabase questions can also “call” other Metabase questions. In A virtuous cycle for analytics I noted: “Queries can emit URLs in order to compose themselves with other queries.” Here’s an example of that.

This Metabase question (985) calls various linked functions, and is called by two other Metabase questions. Here is one of those.

Because this Metabase question (600) emits an URL that refers to 985, it links to the definition of 985. It also links to the view, top_annotated_domains_last_week, from which it SELECTs.

It was straightforward to include Postgres functions, views, and procedures in the concordance since these live in files that reside in the fileystem under source control. Metabase questions, however, live in a database — in our case, a Postgres database that’s separate from our primary Postgres analytics db. In order to extract them into a file I use this SQL snippet.

select
  r.id,
  m.name as dbname,
  r.name,
  r.description,
  r.dataset_query
from report_card r
join metabase_database m
  on m.id = cast(r.dataset_query::jsonb->>'database' as int)
where not r.archived
order by r.id;

The doc generator downloads that Metabase data as a CSV file, queries.csv, and processes it along with the files that contain the definitions of functions, procedures, and views in the Postgres data warehouse. It also emits queries.txt which is a more convenient way to diff changes from one commit to the next.

This technique solved a couple of problems. First, when we were only using Metabase — unaugmented by anything in Postgres — it enabled us to put our Metabase SQL under source control and helped us visualize relationships among queries.

Later, as we augmented Metabase with Postgres functions, procedures, and views, it became even more powerful. Developing a new panel for a school or course dashboard means writing a new memoized function. That process begins as a Metabase question with SQL code that calls existing Postgres functions, and/or JOINs/SELECTs FROM existing Postgres views. Typically it then leads to the creation of new supporting Postgres functions and/or views. All this can be tested by internal users, or even invited external users, in Metabase, with the concordance available to help understand the relationships among the evolving set of functions and views.

When supporting functions and views are finalized, the SQL content of the Metabase question gets wrapped up in a memoized Postgres function that’s invoked from a panel of a dashboard app. At that point the concordance links the new wrapper function to the same set of supporting functions and views. I’ve found this to be an effective way to reason about a hybrid code base as features move from Metabase for prototyping to Postgres in production, while maintaining all the code under source control.

That foundation of source control is necessary, but maybe not sufficient, for a team to consider this whole approach viable. The use of two complementary languages for in-database programming will certainly raise eyebrows, and if it’s not your cup of tea I completely understand. If you do find it appealing, though, one thing you’ll wonder about next will be tooling. I work in VSCode nowadays, for which I’ve not yet found a useful extension for pl/pgsql or pl/python. With metaprogramming life gets even harder for aspiring pl/pgsql or pl/python VSCode extensions. I can envision them, but I’m not holding my breath awaiting them. Meanwhile, two factors enable VSCode to be helpful even without deep language-specific intelligence.

The first factor, and by far the dominant one, is outlining. In Products and capabilities I reflect on how I’ve never adopted an outlining product, but often rely on outlining capability infused into a product. In VSCode that’s “only” basic indentation-driven folding and unfolding. But I find it works remarkably well across SQL queries, views and functions that embed them, CTEs that comprise them, and pl/pgsql or pl/python functions called by them.

The second factor, nascent thus far, is GitHub Copilot. It’s a complementary kind of language intelligence that’s aware of, but not bounded by, what a file extension of .sql or .py implies. It can sometimes discern patterns that mix language syntaxes and offer helpful suggestions. That hasn’t happened often so far, but it’s striking when it does. I don’t yet know the extent to which it may be training me while I train it, or how those interactions might influence others. At this point I’m not a major Copilot booster, but I am very much an interested observer of and participant in the experiment.

All in all, I’m guardedly optimistic that existing or feasible tooling can enable individuals and teams to sanely navigate the hybrid corpus of source code discussed in this series. If you’re along for the ride, you’ll next wonder about debugging and monitoring a system built this way. That’s a topic for a future episode.


1 https://blog.jonudell.net/2021/07/21/a-virtuous-cycle-for-analytics/
2 https://blog.jonudell.net/2021/07/24/pl-pgsql-versus-pl-python-heres-why-im-using-both-to-write-postgres-functions/
3 https://blog.jonudell.net/2021/07/27/working-with-postgres-types/
4 https://blog.jonudell.net/2021/08/05/the-tao-of-unicode-sparklines/
5 https://blog.jonudell.net/2021/08/13/pl-python-metaprogramming/
6 https://blog.jonudell.net/2021/08/15/postgres-and-json-finding-document-hotspots-part-1/
7 https://blog.jonudell.net/2021/08/19/postgres-set-returning-functions-that-self-memoize-as-materialized-views/
8 https://blog.jonudell.net/2021/08/21/postgres-functional-style/
9 https://blog.jonudell.net/2021/08/26/working-in-a-hybrid-metabase-postgres-code-base/
10 https://blog.jonudell.net/2021/08/28/working-with-interdependent-postgres-functions-and-materialized-views/
11 https://blog.jonudell.net/2021/09/05/metabase-as-a-lightweight-app-server/
12 https://blog.jonudell.net/2021/09/07/the-postgres-repl/

10 Nov 03:17

The Surprise Chain

A collage of Apple devices from the 1998-2003: the iMac, iBook, Cinema Display, G4 Cube, Airport Extreme, Mac OS X, iTunes, Macbook Pro, iBook, eMac, iPod, iMac with round base and cantalever display arm, Bonjour icon, iPhoto, iChat, Safari, iCal, and iSight

Whenever you hear about the success of Apple in the early 2000s you hear about the magical devices: the iPod, the iMac, and ultimately the iPhone. Those were no doubt magical inventions, but I want to rewind the clock a little bit and look at what was happening at Apple in a four year window around the launch of OS X and the iPod.

Between the years 1999-2003, leading up to and after the release of the monumental OS X, Apple experienced a leap forward in product design and developed a cadence of releasing or updating a product nearly every 2 months with announcements filling in the marketing gaps before going on sale.

I pieced this less-than-pristine dataset together from Wikipedia, MacWorld, and Archive.org Screenshots of the Apple Homepage. If there are any inaccuracies or missing items please let me know and I can correct them.

Year Date Hardware Software Other
1998 March 🆕 Apple Studio Display    
May 🆕 PowerBook G3    
Aug 🆕 iMac    
1999 Jan 🔼 Power Mac G3 (Blue and White)    
May PowerBook G3 (“Lombard”)    
Jul 🆕 iBook    
Sept Cinema Display 22”    
Oct iMac, Power Mac G4 (Graphite)    
2000 Feb PowerBook G3 (“Pismo”)    
Jul 🆕 Power Mac G4 Cube
🆕 Apple Pro Mouse (Black)
   
Sept iBook (FireWire)    
Jun 🆕 Airport    
Sept   🆕 OS X Public Beta  
Oct   🆕 iTunes
🆕 Office:mac
🆕 1-Click Button
2001 Jan 🆕 PowerBook G4
🆕 Power Mac G4 w/ Superdrive
iMac
iBook
  🆕 Apple Stores
Mar   🔼 OS X 10.0 (Cheetah)
🔼 Final Cut Pro 2
🔼 iTunes 2
 
May 🔼 iBook (White)    
Jun   🆕 Mac OS X Server  
Sept   🔼 OS X 10.1 (Puma)  
Oct 🆕 iPod    
Dec   🔼 Final Cut Pro 3  
2002 Jan iMac G4 15”
🔼 iBook 14”
   
Mar Cinema HD Display    
Apr 🆕 eMac    
May 🆕 XServe 🔼 QuickTime 6 🆕 Bonjour
Jul 🔼 iPod (2nd Gen)
🔼 iMac G4 17”
🔼 iTunes 3  
Aug Power Mac G4 🔼 OS X 10.2 (Jaguar)
🆕 iChat
🆕 Safari
🆕 Keynote
 
Sept   🆕 iCal  
Nov iBook (800 MHz)    
2003 Jan 🔼 PowerBook G4 Aluminum (15”/17”)    
Apr 🔼 iPod (3rd Gen) 🔼 iTunes 4 🆕 iTunes Music Store
May Apple Mouse (White)    
Jun 🔼 Power Mac G5
🆕 iSight
   
Oct iBook G4 (12”/14”) 🔼 OS X 10.3 (Panther)
🆕 XCode
iChat AV
🆕 iTunes 4 on Windows
 
Nov 🔼 iMac G4 (20”)    

🆕 = New products — 🔼 = Major upgrade

I refer to this as “The Surprise Chain”; unexpected but delightful product improvements delivered on a regular cadence over an extended period. A new product here, an improved product there, constantly building momentum through repeated surprise.

The Effect of the Surprise Chain

Mastering a steady cadence of product updates and releases had a massive impact for Apple. For Apple fans, their favorite tools and hardware kept getting better and more capable. A new thing to talk about. A new thing to buy or upgrade to. That is an incredible —unquantifiable— user experience feeling.

For Apple as a brand, it kept their name and new products continuously top of mind in the tech news cycle. “One more thing” only made sense because subconciously you expected it. They always seemed to have something up their sleeve. This must have been a monumental amount of effort across dozens of teams —a Herculean task for a company pulling itself out of the grave— but they pulled it off in spades. To Apple’s luck, their product releases and OS upgrades also coincided with a wave of PowerPC advancements. And when that plateaued and Apple made even more headlines by switching to Intel.

Some might mistake this as a “Ship Early, Ship Often” lesson, but to me it’s different. Apple never “ships early” to put it mildly. It’s “Ship on a cadence. Always be delivering good to the user.”

Who is doing the Surprise Chain now?

Apple still maintains this cadence to some degree, but the release cycle has slowed down dramatically. We get a February update of some kind. macOS and iOS updates for WWDC in June. September is an iPhone event. October is iPads and Macbooks for the holidays. Year over year. It’s become a bit ho-hum predictable. Which makes me wonder, who is doing the Surprise Chain today?

The best, most recent example of the Surprise Chain that I can think of is the musical artist Drake. From 2015 to 2019 Drake released a new single every ~2 months. Drake seems to have been able to exploit the music industry’s new reality of “no one buys albums” by only releasing singles. This strategy no doubt kept his name and his brand in the limelight and on the top of radio charts and streaming platforms for years in a row. It’s a feat that has made him one of the most successful music artists of our time. Unsurprisingly, Drake started his partnership with Apple Music in 2015.

Another example of this is the indie game publishing house Devolver Digital. Devolver publishes games from smaller indie gamedev studios and has published 131 titles since 2009. Zooming in to more recent years, Devolver has published 69 (nice) games from 2017-2021 averaging over a game a month. As a result, a title by Devolver is always in the zeitgeist as new games get announced or titles get ported to new consoles and app stores. Worth noting, in 2018 Devolver hired a former Apple App Store business manager as VP of mobile publishing.

Lastly, one product building the Surprise Chain into the core of its business is Panic’s new game console Playdate. The strategy for the Playdate is a bit different than traditional consoles, instead of buying individual licensed games, you buy a subscription for your device and each week or so a new game gets delivered to your device. Brilliant. They are building in suprise. It will be curious to watch Panic, traditionally an Apple software development studio, make its first foray into hardware. I think they have the right formula and heart behind it.

Surprise and delight

In all the talk of “surprise and delight” I think we tend to focus on the micro, little transitions and interactions, and forget the macro. Sometimes delight can be the cumulative effect of everything getting better consistently over time and surprise come from the fact that it keeps happening. A constant perking up of the ears.

It’s an immense amount of effort to pull off and —to be clear— none of these companies or artists are “lean” in the traditional sense. They never ship unpolished products to their users. They polish their products a thousand times over. They have developed a production line able to sustain the development of multiple high-quality products and deliver them on a cadence. Each on their own are enticing, but together produce a harmonic effect, sustained over years, not a single release.

I think about The Surprise Chain often. I think about how it may offer a slightly different business model than what the startup scene offers. It’s not about big album drops anymore, it’s about releasing singles every two months over a five year stint. It’s about learning how to develop a cadence that benefits the audience. It’s about putting in the time for prototypes, playtesting, and research beforehand so you know you’re building something your users will love. And sometimes two or three singles will drop in a month and your users will love you for that because you suprised and delighted them.

20 Sep 02:55

The Story of Playdate

by Rui Carmo

This is a great read. I’ve been keeping tabs on Panic (and Teenage Engineering) forever, and find it quite nice that someone is having a serious amount of fun creating new platforms in this day and age.

I hope it becomes a cult hit.


20 Sep 02:50

CL XLI: Forest Stories

Recently I’ve had the joy and privilege of time spent walking in the Pacific Northwest forest, on a small island where we engage in Cottage Life.. Walking in the forest provides a fine opportunity to think, although the raw beauty of the forest pouring in through your eyes and ears will regularly interrupt. While forest-walking, I thought about pictures, modern mapping technology, strangers’ identities, and The Green Knight movie.

Forest on Keats Island

Snapping

I have a problem: It’s hard to photograph the forest. Out of sheer embarrassment I won’t share the number of times a combination of light and space and color has brought the camera to my eye. Because almost every such effort, on later consideration, ends up looking like a snapshot of some trees. I occasionally get the light and color but the special space eludes almost always.

Challenge accepted, OK? If that rainforest thinks it can hide its beauty from my camera, it’s got another think coming. With any luck I should have a couple more decades of life to work on the problem.

Forest on Keats Island

Mapping

There’s a problem walking in these woods. The trail network is a bit complicated and generally speaking, the trail forks look like the other trail forks. This makes it hard to re-create an excellent walk with a length known in advance, for example when you’re showing off the island to a first-time visitor who might not be up for a challenging two-hour scramble.

So I decided to map them. I surveyed the (many!) Android apps designed for this purpose. It seems that AllTrails is the most popular, but I found its learning curve onerous. So I installed Gaia GPS and Lauren installed Wikiloc, and we set out. They both worked pretty well. I think that if you’re signed into Gaia, this map should show my recently-marked trails. But I’m not sure I actually understand the publishing process yet.

Having created a Gaia GPS account and used the app/site briefly, I was charmed to get an email from them advertising that they were hiring and anyone interested in some combination of cartography, mobile apps, and server-side tech should get in touch. If I were younger I might.

Forest on Keats Island

Green Knight

I have a special relationship with the poem behind the recent movie.

The movie was our first such outing since Covid started. We even took a public-transit train to get there. I masked on the train but, since the film’s been out for a while and isn’t a big hit, there were only six people in the theater, widely separated, so I went bare-faced. It was frankly a thrill to go out and do adult things.

As for the movie, meh. The middle section, with Gawain wandering the wilderness seeking the Green Chapel, was very good. But I thought the ending, completely different from the one in the poem, was not an improvement.

And while the location shooting was very beautiful, the sound design was awful, with obtrusive heavy-handed Foley; for example, Gawain‘s horse plods slowly down a muddy forest path, and with each pace a huge “thud!” explodes from the theater speakers.

I think the problem is that the movie didn’t take itself seriously enough, as witness the hokey episode titles and the really dorky final line of dialogue assigned to the Green Knight.

I hope someone tries again and does it better, because the underlying poem is a fine piece of work.

Forest on Keats Island

Identity

We were walking one of those trails and my eye was captured by a flash of rectangular white in the undergrowth. It turned out to be a BC Services Card, which combines the functions of driver’s license and healthcare access. I’d sure be upset if I dropped mine on a forest trail — I’ve never had to replace one but I imagine the bureaucratic snarl is pretty awful.

Fortunately, the card displays, along with the holder’s full, name, gender, and birth-date, their mailing address. So it was easy enough to put it in an envelope and drop it in a post-box.

But I was unsatisfied, because if it was my card I’d want to know right away that it’d been found. So I went to look up the holder, a woman who had a dirt-common surname but moderately unusual first and middle names; I thought given an email address or social-media handle, I could set her mind at rest.

Google: No luck. Facebook: No luck. LinkedIn: No luck. The phone company’s “white pages” site (if you don’t know what white pages are, that’s perfectly OK): Yes, correct first-name/last-name combo in the right suburb. I called it and got a fax machine. Uh…

Anyhow, she got the card and I got an online thank-you via LinkedIn. But, first of all, I was surprised that with this much information, I was still unable to find any online evidence of this person’s existence. Weird, right?

No, maybe I’m weird. Given a random slice of a thousand or so people across the population, how many of them should one expect to be able to turn up online? How far has the Internet penetrated, really, into the fabric of society?

I don’t know, but I’d like to. I’m the last person to ask because I live online and the space of people who don’t is pretty well closed to me.

Thanks for listening

And if there’s a forest anywhere near you, count yourself fortunate and go take a walk in it. You won’t regret it.

04 Sep 17:44

No More Careers

by Dave Pollard


images by the Noun Project CCBY Gan Khoon Lay and Webtechops LLP

It took me my entire working life to realize how unnatural “work” — ie wage slavery, in a relationship of voluntary servitude to others — actually is. Even as a youth it seemed wrong to me. But when everyone around you is fighting their way to the top of fickle, hierarchical, brutally competitive organizations, you come to think of this as just the price of living in a modern, “affluent” society.

The exhausting 70-hour weeks, the lack of respect and appreciation, the intermittent or constant humiliations, harassment and mistreatment, the mind-numbing toil of doing what you’re paid to do instead of what you want to do, what you know you’re meant to do, the grinding, long commutes, the constant anxiety and sense of hopelessness of ever getting “out from under” — these can all come to seem “normal”.

But as I wrote last year, not only is our modern idea of work not normal, it’s not even necessary to a very comfortable way of living:

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 barrel 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.

There seems to be a growing awareness of the unnaturalness and unfairness of the “work world”. Some attribute this to the unemployment and other benefits given to those displaced from work by CoVid-19, and a reluctance to return to the grind when those benefits ran out. But I think our realization that work is an abomination has been growing for a long time, and it’s gaining steam with our realization that unfettered capitalism is dysfunctional and killing our planet. The stock market averages, and the GDP figures, are indices of the velocity of civilization’s collapse, not of anything even remotely connected with well-being.

Katherine Berry created a small sensation three months ago with her passionate (if a bit naive) vlog post “I no longer aspire to have a career“. In China there’s now a “Lying Flat Movement” protesting the requirement to work and to “progress” in the work world. We have come to understand that there is no such thing as “sustainable growth” and that most of the world is engaged in meaningless and unnecessary Bullshit Jobs. And last week NPR producer Cassady Rosenblum explained why she quit her job and gave up a promising career “to sit on the porch”.

Of course these posts and protests have prompted endless howls of criticism, from right-wingers calling them “lazy” and “spoiled and privileged”, to the Chinese government calling them subversive. The common supposition is that unless the treadmill of work is kept mandatory to avoid starvation and suffering, the whole economy will collapse, and that since no one would work if they weren’t forced to, we have to force everyone to work. I won’t waste any words trying to explain how ludicrous these suppositions are.

The interesting questions to me are (1) will this be the basis of the protest movement for millennials, perhaps one that will compare to the anti-war, anti-consumption protest movement of the boomers in the late 1960s (remember John Lennon’s “bed-in” for peace)?, and (2) if there is such a movement, can it possibly succeed where the 60s protests failed?

Millennials now outnumber boomers, and will continue to do so for many years. That means their impact and influence will grow.

But it is not at all clear to me that the capitalism machine depends on people showing up for work. Given the overwhelming number of Bullshit Jobs, it would hardly change anything if these jobs were eliminated and replaced with a guaranteed minimum annual income that everyone would get. The same thing would happen as happens now — an ever-increasing amount of money would flow to potential consumers, enabling them to buy goods from the corporate oligopolies that control supply, so “growth” would continue, with more and more production, consumption, resource use, pollution, GDP, corporate profits, and market value increases. It’s a self-reinforcing cycle, and I’m not at all convinced it needs many people to work to continue it.

It is of course unsustainable, since we are quickly running out of the cheap resources (petrochemicals especially) that have powered all of the growth in production and GDP over the past two centuries, and destroying the planet in the process to the point that much or most if it will soon be uninhabitable.

The combination of economic and ecological collapse will shift us to a subsistence, scavenger economy, and it’s going to be a struggle for almost everyone, but what we will have to do to meet our needs in such an economy will resemble what almost all of us did until just two or three centuries ago — work the land to harvest food, make what we need (mostly clothing and shelter) directly to survive, and entertain ourselves with self-produced arts and cultural activities with the leisure time that’s left. Is that “work”? Certainly not in the modern sense.

But back to the issue of millennials and their potential rebellion against what we now call work. Given their relative powerlessness (shades of the boomers’ feelings in the 1960s), their discomfort with being just another low-ranking cog in the top-heavy machine that is leading to our downfall is certainly understandable. A recent study suggests they are absurdly overburdened with debt, ethical and cautious spenders, quite health- and nutrition-conscious (preferring to work out in groups rather than alone, drinking less beer, and avoiding processed foods), prefer to rent or stream things rather than buying them, and prefer to work on projects rather than fill roles and do fixed jobs.

That sounds sensible to me, but doesn’t suggest a revolution against work is at hand. Perhaps we boomers, realizing far too late that the years at the grindstone weren’t worth the grind, are projecting a bit? Millennials are the first generation in history to have a lower median standard of living than their parents, so far from being rebels they may just be pragmatic in what they spend and hence what they need to earn to be able to do so.

So, I think this recent analysis of millennials is mostly projection and wishful thinking:

Millennials are the first that do not place work ethic on their list of what makes them unique. It’s not that Millennials don’t want to work. It’s that they don’t want to work for “the man”. They wonder why they should slave away and be loyal and obedient to organizations that shows no loyalty to them. They constantly ask “why” and they want feedback because they know they have to keep developing, keep learning, keep moving, keep connecting.

The fact this is mostly wishful thinking is kind of a shame. We may be seeing the end of careers, but not, alas, the end of work. I’d like to see more people walking away from our ruinous economy, as workers, producers, promoters and consumers. But in western nations we’re almost all yoked to the plough of the modern industrial “growth” economy, and we’re all likely to stay there until the cart stops moving. We probably have a decade or two to figure out how to extract ourselves from the yoke, and then ask the question we don’t want to ask: Now what?

04 Sep 17:44

Paris in the past week was far from empty, but ...

by Ton Zijlstra

Paris in the past week was far from empty, but it was quieter. Making for a pleasant visit: the terraces of restaurants and café’s were filled but there always was a table available for us. And enough traffic and passers-by to do some people watching from behind your coffee.


Coffee at Flores bistro, Boulevard Hausmann. Image Ton Zijlstra, license CC BY SA

The metro wasn’t as packed as I remember from previous visits. Metro stations didn’t have crowds at all, regularly allowing me to take pictures devoid of people. The trains we took between Paris and Versailles where we were staying were almost empty even.


Gare d’Invalides. Image Ton Zijlstra, license CC BY SA

All in all a great way to visit the city, busy enough to get a feel for the city, but not so busy you feel rushed along by the people around you, allowing us to set our own pace.

04 Sep 17:22

Why You Should Vote Green in Charlottetown

by peter@rukavina.net (Peter Rukavina)

This federal general election I’m proudly and enthusiastically voting Green, for Darcie Lanthier in Charlottetown.

I think you should vote Green too.

Here’s why.

Darcie Lanthier is the kind of person you want as a Member of Parliament: she’s smart, capable, deeply engaged with the issues of the day–housing, climate, reconciliation, education, democratic reform. She’s worked as a community organizer, she’s started and run businesses, she’s raised a family, she knows how to wield a hammer.

My esteem for Darcie has only grown in the 2 years since I first suggested you vote for her: she’s used her time well, both building housing, and strenuously advocating for the rights of tenants, while at the same time leading a burgeoning solar energy business. 

Darcie has an intuitive sense of social justice, and is, at her core, a compassionate person; she is running for Parliament not as a act of hubris, but because she feels an urgency to shine light on things that often escape attention on the calcified merry-go-round of status quo politics. And she does this with profound optimism, free from cynicism or rancour. 

Darcie is, quite simply, the most qualified candidate on the ballot.

And that’s why you should vote for her.

A green Darcie Lanthier sign in my front yard, among the plants of the garden.

04 Sep 17:22

Multiple estimates for the same project

by Derek Jones

The first question I ask, whenever somebody tells me that a project was delivered on schedule (or within budget), is which schedule (or budget)?

New schedules are produced for projects that are behind schedule, and costs get re-estimated.

What patterns of behavior might be expected to appear in a project’s reschedulings?

It is to be expected that as a project progresses, subsequent schedules become successively more accurate (in the sense of having a completion date and cost that is closer to the final values). The term cone of uncertainty is sometimes applied as a visual metaphor in project management, with the schedule becoming less uncertain as the project progresses.

The only publicly available software project rescheduling data, from Landmark Graphics, is for completed projects, i.e., cancelled projects are not included (121 completed projects and 882 estimates).

The traditional project management slide has some accuracy metric improving as work on a project approaches completion. The plot below shows the percentage of a project completed when each estimate is made, against the ratio Actual/Estimate; the y-axis uses a log scale so that under/over estimates appear symmetrical (code+data):

Project actual/estimate ratio against percent complete.

The closer a point to the blue line, the more accurate the estimate. The red line shows maximum underestimation, i.e., estimating that the project is complete when there is still more work to be done. A new estimate must be greater than (or equal) to the work already done, i.e., Work_{done} <= Estimate, and Work_{done} = Actual*Percentage_{complete}.

Rearranging, we get: Actual/Estimate <= 1/Percentage_{complete} (plotted in red). The top of the ‘cone’ does not represent managements’ increasing certainty, with project progress, it represents the mathematical upper bound on the possible inaccuracy of an estimate.

In theory there is no limit on overestimating (i.e., points appearing below the blue line), but in practice management are under pressure to deliver as early as possible and to minimise costs. If management believe they have overestimated, they have an incentive to hang onto the time/money allocated (the future is uncertain).

Why does management invest time creating a new schedule?

If information about schedule slippage leaks out, project management looks bad, which creates an incentive to delay rescheduling for as long as possible (i.e., let’s pretend everything will turn out as planned). The Landmark Graphics data comes from an environment where management made weekly reports and estimates were updated whenever the core teams reached consensus (project average was eight times).

The longer a project is being worked on, the greater the opportunity for more unknowns to be discovered and the schedule to slip, i.e., longer projects are expected to acquire more re-estimates. The plot below shows the number of estimates made, for each project, against the initial estimated duration (red/green) and the actual duration (blue/purple); lines are loess fits (code+data):

Number of estimates against project initial estimated and actual duration.

What might be learned from any patterns appearing in this data?

When presented with data on the sequence of project estimates, my questions revolve around the reasons for spending time creating a new estimate, and the amount of time spent on the estimate.

A lot of time may have been invested in the original estimate, but how much time is invested in subsequent estimates? Are later estimates simply calculated as a percentage increase, a politically acceptable value (to the stakeholder funding for the project), or do they take into account what has been learned so far?

The information needed to answer these answers is not present in the data provided.

However, this evidence of the consistent provision of multiple project estimates drives another nail in to the coffin of estimation research based on project totals (e.g., if data on project estimates is provided, one estimate per project, were all estimates made during the same phase of the project?)

04 Sep 17:22

lMy haiku and tanka at Never Ending Story and O...

by alee9

lMy haiku and tanka at Never Ending Story and One Man’s Maple Moon blogspot of Chen-ou Liu with Chinese translation also by Chen-ou Liu (click on link to read)

http://neverendingstoryhaikutanka.blogspot.com/2021/08/one-mans-maple-moon-mountain-mists-and.html

04 Sep 17:21

Paying Attention to What We Pay Attention To

by Dave Pollard

Thinking more about this astonishing eight word phrase, from Amy Rosenthal via  John Green: Pay attention to what you pay attention to.

Over the past decade, I’ve given up thoughts of “improving” myself, what some people call doing the work of becoming a more sensitive, empathetic, complete, useful person. Perhaps it’s just laziness, or fatigue, but I think my giving up is more likely because I’ve abandoned the belief we have free will, given up thinking we have any choice over what we do or don’t do.

Instead I’m simply trying to become a little more self-aware of what’s going on inside this probably-illusory mind inside this apparent body ‘I’ bizarrely but unquestioningly presume to inhabit. Catching myself when I get reactive, defensive, triggered, self-righteous, or just plain anxious. Just noticing that, and as much as possible doing so without judgement.

Lost, scared and bewildered is kind of the essence of who ‘I’ am, so recognizing my disorientation, my fears, my bewilderment, in the moment, is a strange kind of awesome. It’s a fleeting recognition that there is no real ‘me’, and that the sense of self and separation that is essential to feeling lost and scared is an illusion, a construct, a fiction.

At one time I thought I might at least learn to choose what to pay attention to — the stuff seemingly inside, and all the stuff without. But I see now that there is no choice; what we pay attention to, or fail to pay attention to, is utterly a result of our biological and cultural conditioning, given the circumstances of the moment, and we have absolutely no control over it.

But somehow, paradoxically, it seems possible to be aware of that conditioning and the apparent actions it inevitably prompts, as if I were looking at someone else.

Coquitlam, my new home, the place I have recently been ‘transplanted to’, is very different from Bowen Island, my home for the previous twelve years.

I’ve moved a mere 60km from a house on a 300m hill a half-mile from my neighbour on an island of 3800 people, to an apartment 42 floors up in the middle of a city of a quarter of a million people (the so-called “TriCities”). I’ve moved from the northwest extremity of Metro Vancouver to its northeast extremity. Lots of green and mountains outside my window, still, but even on the roof I can’t see the stars anymore, even on a cloudless night. I’ve gone from five lights visible from my bedroom at night, to tens of thousands.

And it’s noisy. People yelling, honking, and gunning their engines. Car alarms, trucks beeping backing up, shunting trains, squeaking brakes, sirens, banging garbage trucks, unidentified industrial noises, and the constant hum of traffic.

I noticed myself paying attention to the brightness, the urban sprawl of subdivisions and parking lots, and the noise. And then to my surprise, I stopped paying attention.

Instead, I’m sitting here on a late summer night, having watched the sunset and the falling dark from the roof. I’m sipping on a mug of tea, looking at the astonishing, garish, awful, wonderful display of lights you can see in the photo above. I’m listening to VOCES8 on headphones, singing the music of Ólafur Arnalds , Eric Whitacre and Rachmaninoff.

I noticed that I didn’t put the headphones on to drown out the Friday night city noise. In fact I noticed that I wasn’t paying attention to the noise at all. I was paying attention to the lights, and the music that I put on just seemed the right accompaniment to the new, astonishing light show outside the window.

It has been a long time since I’ve felt so much at peace, and I’ve found it here amidst all the noise. Just because of what I’m paying attention to, and what I’m not paying attention to.

I’m noticing other things that never caught my attention before, too. I’m noticing the different ways the wildly diverse cultures represented here in Coquitlam (half the population are visible minorities) look at me (and at others), or don’t, and the different ways they express what comes across as politeness but is probably more nuanced than that. Still figuring all that out — more attention required.

I’m noticing the brightness, the features, and the angle at which the moon waxes and wanes. I’m noticing that you can infer most of someone’s facial expression, even hidden behind a mask, from the expression of their eyes, eyebrows and the line of their jaw. I’m noticing the change in the ‘tone’, the weight, and the smell of the air as I pass from areas that are open, to those sheltered by greenery, or near streams and rivers.

Part of the reason I’m noticing — paying attention to — new things, is that everything is so different here from how it was on Bowen Island. I think that is one of the important virtues of travel to see different ecosystems and different cultures — we get inured to things after a while, and no longer notice them, but when we’re suddenly surrounded by things we are not used to, we have no choice but to pay attention. It’s like suddenly regaining binary vision after having to make do with one eye for a while.

I think one the main reasons I’m paying attention to more and different things is that I’m no longer paying attention to other, unimportant things, or at least not giving them as much attention. Most significantly, I’m not paying as much attention to my thoughts as I used to, which shifts my focus from the internal to the external. I’m not sure why that is, but it seems to be healthy.

I’ve also stopped paying attention to the endless distraction of social media and the news scroll. It was a total, addictive, time suck. Facebook and Twitter still send me daily email notifications of posts by people I apparently once ‘followed’, carefully curated to draw me in. Of course they require me to go to their sites to see more than the ‘teaser’ the email includes, so they can then bombard me with more sensational posts. But now I delete the teasers without looking at them.

The NYT has now done me a favour by doubling down on their paywall, so that even with incognito mode I can’t read their articles unless I time the switch to ‘reader mode’ just right. Very few articles are worth that hassle. So I scan the ‘top 10’ headlines from the websites of the Tyee, CBC, NPR, Atlantic, Guardian, Al Jazeera, and the NYT, on my Protopage.com newsreader page, once a day, and on an average day will visit just one link for more details — usually an analysis from a favourite writer or a rare article that is actually actionable. Once a month I scan what’s new from about 30 blogs, vlogs and websites that have consistently offered useful and insightful reporting, research and perspectives, usually just before I post my “links of the month”. That’s all the news I need, I think, to stay current, informed, and sane. Works out to about 20 minutes a day.

That frees up a lot of time for paying attention to things that are more fun, more immediate, healthier, and more useful to pay attention to — with all my senses. And, a little bit more each day, that’s happening without the over-thinking, judgement, “sense-making”, and “what does that mean?” interpretation that has characterized my attention most of my life. It’s enough it seems just to notice, just to pay attention. Most of the time, trying to make sense of everything just gets in the way of really seeing, hearing, sensing what is happening.

Can paying attention to what we pay attention to, actually change what we pay attention to, or how attentive we are, or how much we appreciate and enjoy paying attention? I don’t know — I’m too new at this, and besides, I have a sense it doesn’t matter anyway. Even as my self-awareness seems to grow, and my attentiveness shifts, I am even more aware that I have no choice in any of it. It’s just what’s happening, apparently, here, now, on this terrace in the sky in Coquitlam, on the 240th day of the 21st year of civilization’s final century.

04 Sep 17:20

Building a desktop application for Datasette (and weeknotes)

This week I started experimenting with a desktop application version of Datasette - with the goal of providing people who aren't comfortable with the command-line the ability to get Datasette up and running on their own personal computers.

Update 8th September 2021: I made a bunch more progress over the week following this post, see Datasette Desktop—a macOS desktop application for Datasette for details or download the app to try it out.

Screenshot of the new Datasette desktop app prototype with several open windows

Why a desktop application?

On Monday I kicked off an enormous Twitter conversation when I posted:

I wonder how much of the popularity of R among some communities in comparison to Python comes down to the fact that with R you can install the RStudio desktop application and you're ready to go

This ties into my single biggest complaint about Python: it's just too hard for people to get started with. Setting up a Python development environment for the first time remains an enormous barrier to entry.

I later put this in stronger terms:

The more I think about this the more frustrated I get, thinking about the enormous amount of human potential that's squandered because the barriers to getting started learning to program are so much higher than they need to be

Which made me think of glass houses. My own Datasette project has exactly the same problem: to run it locally you need to install Python and then install Datasette! Mac users can use Homebrew, but telling newcomers to install Homebrew first isn't particularly welcoming either.

Ideally, I'd like people to be able to install a regular desktop application and start using Datasette that way, without even needing to know that it's written in Python.

There's been an open issue to get Datasette running as a standalone binary using PyInstaller since November 2017, with quite a bit of research.

But I want a UI as well: I don't want to have to teach new users how to install and run a command-line application if I can avoid it.

So I decided to spend some time researching Electron to see how hard it would be to make a basic Datasette desktop application a reality.

Progress so far

The code I've written so far can be found in the simonw/datasette.app repository on GitHub. The app so far does the following:

  • Run a datasette server on localhost attached to an available port (found using portfinder) which terminates when the app quits.
  • Open a desktop window showing that Datasette instance once the server has started.
  • Allow additional windows onto the same instance to be opened using the "New Window" menu option or the Command+N keyboard shortcut.
  • Provides an "Open Database..." menu option (and Command+O shortcut) which brings up a file picker to allow the user to select a SQLite database file to open - once selected, this is attached to the Datasette instance and any windows showing the Datasette homepage are reloaded.

Here's a video demo showing these features in action:

It's very much an MVP, but I'm encouraged by the progress so far. I think this is enough of a proof of concept to be worth turning this into an actual usable product.

How this all works

There are two components to the application.

The first is a thin Electron shell, responsible for launching the Python server, managing windows and configuring the various desktop menu options used to configure it. The code for that lives in main.js.

The second is a custom Datasette plugin that adds extra functionality needed by the application. Currently this consists of a tiny bit of extra CSS to make the footer stick to the bottom of the window, and a custom API endpoint at /-/open-database-file which is called by the menu option for opening a new database.

Initial impressions of Electron

I know it's cool to knock Electron, but in this case it feels like exactly the right tool for the job. Datasette is already a web application - what I need is a way to hide the configuration of that web application behind an icon, and re-present the interface in a way that feels more like a desktop application.

This is my first time building anything with Electron - here are some of my initial impressions.

  • The initial getting started workflow is really good. I started out with their Quick Start and was up and running with a barebones application that I could start making changes to in just a few minutes.
  • The documentation is pretty good, but it leans more towards being an API reference. I found myself googling for examples of different things I wanted to do pretty often.
  • The automated testing situation isn't great. I'm using Spectron and Mocha for my initial (very thin) tests - I got them up and running in GitHub Actions, but I've already run into some limitations:
    • For some reason each time I run the tests an Electron window (and datasette Python process) is left running. I can't figure out why this is.
    • There doesn't appear to be a way for tests to trigger menu items, which is frustrating because most of the logic I've written so far deals with menu items! There is an open issue for this dating back to May 2016.
  • I haven't yet managed to package my app. This is clearly going to be the biggest challenge.

Up next: packaging the app

I was hoping to get to this before writing up my progress in these weeknotes, but it looks like it's going to be quite a challenge.

In order to produce an installable macOS app (I'll dive into Windows later) I need to do the following:

  • Build a standalone Datasette executable, complete with the custom plugin, using PyInstaller
  • Sign that binary with an Apple developer certificate
  • Build an Electron application that bundles a copy of that datasette binary
  • Sign the resulting Electron application

I'm expecting figuring this out to be a long-winded and frustrating experience, which is more the fault of Apple than of Electron. I'm tracking my progress on this in issue #7.

Datasette 0.59a2

I pushed out a new alpha of Datasette earlier this week, partly driven by work I was doing on datasette.app.

The biggest new feature in this release is a new plugin hook: register_commands() - which lets plugins add additional commands to Datasette, e.g. datasette verify name-of-file.db.

I released a new plugin that exercises this hook called datasette-verify. Past experience has shown me that it's crucial to ship an example plugin alongside a new hook, to help confirm that the hook design is fit for purpose.

It turns out I didn't need this for datasette.app after all, but it's still a great capability to have!

sqlite-utils 3.17

Quoting the release notes in full:

  • The sqlite-utils memory command has a new --analyze option, which runs the equivalent of the analyze-tables command directly against the in-memory database created from the incoming CSV or JSON data. (#320)
  • sqlite-utils insert-files now has the ability to insert file contents in to TEXT columns in addition to the default BLOB. Pass the --text option or use content_text as a column specifier. (#319)

evernote-to-sqlite 0.3.2

As a follow-up to last week's work on my personal Dogsheep, I decided to re-import my Evernote notes... and found out that Evernote has changed their export mechanism in ways that broke my tool. Most concerningly their exported XML is even less well-formed than it used to be. This new release works around that.

TIL this week

Releases this week

01 Sep 19:11

Why are brand identity statements so generic?

by Josh Bernoff

In his latest cartoon, Tom Fishburne of Marketoonist expertly skewered those “brand promise” statements you often read (and retch at). He’s completely right that corporate values and “reasons to believe” are filled with cliches and buzzwords. But why? Why is so hard for brands to differentiate? Having helped several companies write these sorts of statements, … Continued

The post Why are brand identity statements so generic? appeared first on without bullshit.

01 Sep 19:11

S17:E5 - What is AWS and how you become a cloud engineer (Hiroko Nishimura)

In this episode, we talk about Amazon Web Services, or AWS, with Hiroko Nishimura, AWS Hero, instructor on LinkedIn Learning and egghead.io, and creator of AWS Newbies. Hiroko talks going from IT to cloud computing, creating AWS Newbies, and some of the major cloud concepts newbies should know about that would make their journey easier when diving into cloud engineering.

Show Links

Hiroko Nishimura

Hiroko Nishimura is a Special Education Teacher turned IT Helpdesk Engineer turned SysAdmin turned Technical Writer and Technical Instructor, helping other "Cloud Newbies" break into AWS and cloud computing.

01 Sep 19:11

Let the marketing begin

by russell davies

EIKALILFP

It turns out that my book is available for pre-order in various places.

I've learned from various podcasts that pre-orders are very important so please consider doing so. Then, in November, when it comes out, you'll get a lovely surprise - a gift from Past You.

WARNING: I cannot yet recommend the ebook version, I've not seen that yet so I'm not sure what it'll be like. The actual book is obviously magnificent because my trite and banal words have been elevated to the condition of art by Stef's design.

01 Sep 19:10

What Peggy Taught Me

One of the most important lessons I ever learned came via Peggy Phelan. The backstory is this: I had a then-mentor who adored Phelan’s work, particularly “Mourning Sex”. I wanted to do something nice for said mentor - and so I wrote to Peggy. Politely, but awkwardly, I explained how much my mentor meant to me, and how much Peggy meant to her, in turn. And I asked if, as a favour, Peggy would be willing to sign a copy of “Mourning Sex”. I’d buy it, ship it to her, and handle retrieval via some friends on campus to minimise the work for her (I mean, it’s Peggy fucking Phelan): all she’d have to do is sign it.

Being as Peggy is a professor, and a fancy professor at that, my expectation was that she’d reply either in three months or not at all. Instead, she sent me a message the following morning. Not only would she sign a copy, it would be one of her copies; she’d buy it, sign it, ship it. I was blown away and incredibly gratful, and although I couldn’t (and still can’t) imagine what I could contribute to her life, I begged her to please let me now if I could ever help her out in return.

Her reply, practitioner of feminist ways that she is, was (in part):

I hope you can see that you and your mentor are doing me a favor here too - reading my work, making it a gift, having it serve as an expression of love and thanks. That’s already such a beautiful gift to me there is no need for you to ever do more.

What’s the point of this little anecdote? The point is about joy and reciprocity and exchange. A lot of being in relation with others (and that’s what academia is, since that’s what everything is) consists of offering, giving, exchanging. It’s helping former students find jobs, writing thoughtful and supportive reviews, putting together letters of reference and recommendation. And when I do these things, people often come back with expressions of how much they meant, and with asks: can I do anything for you? A reference in turn; a review in turn?

And when this happens, I remember Peggy, and try to channel her - and try to explain. Don’t you see? Telling me it helped is already doing me a favour.

01 Sep 19:10

Trusting algorithms

Cross-post of a piece written for Real Life, published there on 30 August 2021

Amid accelerating environmental breakdown, widespread socioeconomic instability, and emergent forms of fascism, if there’s one consistency, it’s the sense of a complete lack of consistency: they all could be linked to a supposed “trust deficit” that a range of researchers, journalists and organizations have argued is currently worsening, what sociologist Gil Eyal has described as a “crisis of expertise.” On this view, more and more of the public regards the authority of both formal experts and institutions with suspicion, refusing to “believe the science” or the supposedly good intentions of those entities. This suspicion is bound up with a deeper sense of instability and anxiety, as both a contributing cause and a mounting effect.

Feeding both the mistrust and the anxiety is the idea of accelerating technological change, with artificial intelligence and machine learning being particularly concerning. Many fear, for instance, that algorithms will eliminate jobs through automation and exacerbate existing forms of injustice. And these fears are well-founded: Specific uses of these technologies — from crime prediction to employment verification to controlling the issuing of medications — and their associated modes of thought (i.e. a purely quantifiable approach to human existence and relations) will at best destabilize and at worse further dehumanize people, just as previous cycles of industrial and societal automation have done. While AI developers and their boosters may insist that “this time, it’s different,” it’s not clear what, if anything, has changed: as Judy Wajcman has argued, those making such promises often have little to say about what is different about their approach, and even less when those promises are broken.

It would seem like good news, then, that there is a plan to try to soothe these anxieties so that people can feel as though they can work with AI technologies rather than against them: a plan to develop trust in AI. But if, in such planning, the idea of trust itself is misconceived, this becomes more bad news. Such is the case with this U.S. Executive Order — signed by Donald Trump and carried over to the Biden administration — that is meant ensure “reliable, robust, and trustworthy systems that use AI technologies.” It designates the National Institute of Standards and Technology (NIST) — a branch of the Department of Commerce that establishes measurement standards — as the lead organization in this project, which is tasked with developing rubrics for what such “trustworthy systems” might look like and how they might be assayed.

Its work on trust will therefore be, to a certain degree, the work on trust in the U.S. as far as these technologies are concerned: It will directly inform public standards around AI and how AI systems are subsequently developed. The U.S. government’s status as a primary purchaser of new technologies, combined with NIST’s role in setting technical expectations for said government — around system security, biometric data sharing, and a host of other areas — means that NIST guidance, however non-binding it might be in theory, often serves as the rules of the game in practice. The “secure hash algorithms” developed by NIST are an illustrative example: These have been adopted so broadly that they serve as the linchpin of what “secure” internet browsing means today. Its standards for what make an AI system “trustworthy” could have a similar normalizing effect.

The first fruits of NIST’s “trust” project, a recently released paper called “Trust and Artificial Intelligence”, focuses on how the institution defines “trust in AI” and how that trust might be modeled. Its definition, however, makes plain its priorities. Rather than define trustworthy systems with respect to their consequences or differential impacts, NIST focuses strictly on how they are perceived by “users,” who are defined in a restrictive and reductive way. Moreover, in assessing whether AI systems are trusted by these users, it does not bother to ask whether the systems themselves are even worth trusting.

Multiple purposes, multiple infrastructures

Any kind of infrastructure, including algorithmic systems, have impacts that are not evenly distributed. As algorithms are introduced for everything from facial recognition to hiring to recidivism prediction, they are invariably met with valid concerns about the effects they will have on already marginalized communities. The history of concern, complain, and critique about these algorithmic systems is as long as the history of the systems themselves.

So it is disconcerting that the NIST report, in a section called “Trust Is a Human Trait,” does not acknowledge or cite from that history of concern but instead quotes approvingly from am evolutionary psychology paper that basically argues that we are destined by natural selection to be bigots.

This sets the stage for how NIST will go on to conceptualize “trust”: not as a complex, historically conditioned social phenomenon that takes many different forms in different and often conflicting contexts but as something very simple. So simple, in fact, that it can be resolved into an equation:

NIST's representation of trust as an equation

For this model to make sense, you need — among other things — for trust to be a matter of two fixed, contextless parties and their more or less isolated encounters with each other. Interactions with AI, that is, must live in a little two-party bubble, just as it does in this figure from the report:

NIST's representation of interactions with AI systems, depicting it as a simple, two-party, contextless exchange

After ruling out any situation that doesn’t involve a single person electing to use a single AI system, the equation then defines trust as calculable in that scenario in terms of an array of the AI system’s design attributes and an array of user attributes. To evaluate how much the user trusts the system, you take the system’s security, resiliency, objectivity, and so on — all quantifiable attributes — and match them with, well, such attributes as the user’s gender, age, and personality type, which are also conceived as fully quantifiable and capable of being plugged into the equation above. In other words, NIST’s first step in handling people’s unease with systems that reduce the world to what is quantifiable is to reduce people’s unease itself to something quantifiable.

Tellingly, the paper illustrates a “user” with two hypothetical examples, which could be summed as “middle-aged lady who doesn’t use computers”

NIST's representation of one possible user - namely a middle-aged woman with low computing abilities and a "caring" personality

and the “hip young programmer bro.”

NIST's representation of one possible user - namely a young man with extensive computing skills and a "risk-taking" personality

Their attributes, after being converted to quantities, are then evaluated with respect to the attributes of a particular AI system to determine the likelihood that the user will “trust” that system — understood here as their willingness to continue using it. So while the second user above might be young enough and male enough to have a smooth and trusting relationship with AI, the first user might be seen as lacking the necessary attributes.

In this setup, mistrust is not conceived as a matter of shortcomings or inconsistencies in algorithms’ broader designs or their impacts themselves but as a matter of a user perceptions. To fix “trust issues,” the users’ perceptions would need to change; changes to the algorithm are necessary only to alter those perceptions

None of this is how AI works in practice. In NIST’s model, as the diagram helpfully captures, there are two parties to an algorithmic interaction. In reality, there are many, many more. Algorithms are embedded in broader infrastructures of data collection, processing, refining and deployment, and as Daniel Neyland has documented, each of these stages involves many actors (programmers, marketers, corporate executives, and, infrequently, regulators) with many different concerns that end up reflected in the resulting software. What an algorithmic system that, say, matches users to possible purchases “does,” after all, is not simply match users to “all possible purchases” but those use cases that the system’s marketers have chosen to emphasize (what products have the highest profit margin?), what that system’s programmers had the time and budget to implement (what products were fastest to categorize and import?), and what sorts of user experience its researchers saw as worth testing.

But more pressingly, even if you consider a particular algorithm only in the context of its deployment, there are still more parties involved: One must consider the algorithm’s developers and deployers and their interests in a particular interaction. Can the user trust them? For example, the purpose of Amazon’s Alexa, we are told on its app store page, is to help users “listen to music, create shopping lists, get news updates, and much more.” But it is also to passively collect a user’s data, shipping it back to Amazon, who can then use it to produce anything from personalized advertisements to a reconstruction of users’ identity to enable further data mining.

As Nanna Bonde Thylstrup insightfully observes, the “big data hype” is fundamentally based on “the waste-related epiphany that seemingly useless data can be extracted, recycled, and resold for large amounts of money.” Reuse and dual-use, in other words, are part and parcel of how even AI developers see their work. Thus algorithmic interactions are not, as NIST portrays, about a single user trusting a single algorithm for a single purpose, but instead they are multifarious exchanges for multifarious purposes among multiple parties, some of which are obscured from any individual user.

Examples like Alexa, however, are not fully representative, because they represent situations where — to some degree, at least — the user can be said to have opted into a service or an interaction with an algorithm. But in more and more cases, users have algorithmic systems imposed on them, as with, for instance, work-tracking software that allows employers to fire people for not keeping pace. (This is in line with the long history of workplace automation, which is often deployed specifically to eliminate jobs, as detailed in this paper. In such situations, defining trust as the degree to which a user believes the algorithm can do its job completely evades the question of whether the user (let alone society at large) even wants it to. That a particular user “uses” an algorithm is hardly proof that they trust it or its logic or the other actors behind it. Rather, it may reflect the fact that they don’t have a choice. They may not be not trusting but trapped.

Users are often fully aware of the sometimes treacherous nature of algorithmic systems and the multiple motivations of the organizations behind them but feel they have no alternative but to use them. When Cami Rincón, Corinne Cath-Speth, and I interviewed trans people about their concerns with voice-activated AI like Alexa and Siri for this paper, they weren’t focused on usability (e.g. “can I trust Siri to provide an answer to a question”); they were focused on the agendas of Apple and Amazon. That is, they “trusted” that the algorithms could do what they were expected to do but not that what they were doing wasn’t ultimately very, very bad for the user, extracting their personal information and desires in order to generate ever more precise efforts to extract their money as well. In other words, these systems are untrustworthy because they work. It’s precisely because they meet the ideals of reliability and resiliency that NIST highlights as components of trust that certain groups of users find them harmful and unacceptable.

This highlights the harm that NIST’s definition of trust allows for and in some ways enables. If trust is modeled as strictly between the user and the algorithm, oriented around a single, discrete task, then user distrust of companies like Apple and Amazon can be dismissed as irrelevant, either because the users’ reliance on the system is taken as sign of trust or because qualms about the algorithm’s developers or their other potential purposes is outside the definition’s scope. The definition further implies that “trust” requires users themselves be categorizable and categorized in ways that fit simplistic and hegemonic ideas of humanity.

Developers can brag about how “trusted” their algorithms are by regulators — and trusted by the regulators’ own standards, to boot! — while the systems’ parallel impacts or indirect harms and those experiencing them are ignored.

Trust as a broader problem

This inadequate definition of trust isn’t just NIST’s problem or failure. The idea of algorithmic trust as focused on the user and algorithm alone is prevalent in a lot of the work in the fields of computer science and human-computer interaction. In a meta-analysis that looked at 65 studies on the topic of trust, the closest the authors came to identifying broader structural and organizational concerns as a factor was in their discussion of “reputation” — specifically, the algorithm’s reputation, not the wider agenda of developers.

In some respects, NIST’s limited view is not surprising: The researchers’ task for this report was to explicitly model trust, and since broader contexts are hard to model, they have simply been sidelined from the start. This is precisely the problem. It’s not just that NIST gets trust wrong; it’s that it can’t possibly get it right if trust is treated as merely a technical problem. Trust isn’t not technical, but it isn’t just technical, either. It is ultimately political. Giving the task of defining trust to a technical standards organization is ultimately a way of eliding those political ramifications. Trust is not just about how reliably an algorithm does its work but what that work is, who that work is for, and what responsibilities come with its development and deployment. NIST is not equipped to answer these questions. It is capable only of burying them.

Rather than models aimed at instrumentalizing trust, what we desperately need is to take a step back and confront algorithmic systems as a political phenomenon: as systems that demand public and democratic accountability. This is not an easy task: It raises questions not just about the design of algorithmic systems but about the structure of work, the vast ecosystem of relations between companies, and what futures we collectively want to build toward. But these concerns do not go away if we mask them with a technocratic view of algorithmic systems and their regulation. They simply lurk and rot, returning to haunt us in a more malevolent form. We may find ourselves with AI systems that have perfect scores on measures of algorithmic trust, even as the world in which they operate has become more distrustful and destabilized than ever.

01 Sep 19:10

Rukàvinà

by peter@rukavina.net (Peter Rukavina)

Apparently my surname isn’t exotic enough, so they decided to add supplementary accents.

01 Sep 19:09

2021-08-29/30 BC

by Ducky

Statistics

Fri/Sat: +769 cases
Sat/Sun: +581 cases
Sun/Mon: +503 cases

Over the weekend, +7 deaths, average of +5,702 first doses, +9,096 second doses.

Currently 176 in hospital / 91 in ICU, 5,918 active cases, 157,419 recovered.

first doses second doses
of adults 84.9% 77.5%
of over-12s 84.2% 76.4%
of all BCers 76.7% 69.5%

We have 329,893 doses in fridges; we’ll use it up in 19.5 days at last week’s rate. We’ve given more doses than we’d received by 27 days ago.

We have 282,461 mRNA doses in fridges; we’ll use it up in 17.0 days at last week’s rate. We’ve given more mRNA doses than we’d received by 27 days ago.

Charts

01 Sep 19:09

Authenticity vs. Polish

by Richard Millington

One of my first gigs was working at the UN Refugee Agency in Geneva.

My boss, without anyone’s permission, managed to get cheap flip cameras out to some refugees with the goal of filming their lives. We hoped to use the footage in some of our community channels.

The results weren’t great at first. Imagine those old, shaky, video camera family videos and you get the idea. But after a couple of days, the refugees did something interesting. They flipped the camera around and began filming themselves. They spoke directly to the camera and told their stories.

Sometimes it was a bit shaky, sometimes several takes were oddly stitched together, and none of the footage had anything resembling professional lighting or audio setup.

However…it was incredibly raw, powerful, and authentic. Naturally, the video team hated it (“there wasn’t even a panning establishing shot”).

A few months ago, working with the Sephora team the topic of authenticity came up again. Do we need a top community member programme when there’s already a top influencer outreach programme? My take is of course! One group can give you professionally produced content they can share with their vast audiences. The other can give you emotive, authentic, content which persuades people just like them.

There’s definitely value in producing professional-level content to share with the community. At a certain point, poor production values just begin to look bad. There’s a reason top influencers gradually up their production game over time.

Yet, there’s tremendous value in raw, authentic, content too.

The post Authenticity vs. Polish first appeared on FeverBee.

01 Sep 19:09

Playdate Pulp: Zero to video game in 60 Seconds

by Rui Carmo

Again, the entire approach to the Playdate, including this SDK, is very, very cool.

I am extremely unlikely to ever have the time (or the hardware) to do something with either, but the tinkerer in me is extremely jealous of the people who will, and the amount of fun they will have doing it.


01 Sep 19:09

A Blog Called Poste Italiane

by Ton Zijlstra

Favorited Postcards from Italy by Rory Ou.

I love this story about the Italian postal service, chiming with my own experience with them over the years, and especially how the author takes it as the reason for naming her blog Poste Italiane. Added to the feed reader.

Accepting the uncertainty of the Poste Italiane, and sending my postcards anyway: that’s the essential spirit of this blog.

Rory Ou

01 Sep 19:08

Online trolls are also jerks IRL

by Volker Weber

Why are online discussions about politics more hostile than offline discussions? A popular answer argues that human psychology is tailored for face-to-face interaction and people’s behavior therefore changes for the worse in impersonal online discussions. We provide a theoretical formalization and empirical test of this explanation: the mismatch hypothesis. We argue that mismatches between human psychology and novel features of online environments could (a) change people’s behavior, (b) create adverse selection effects and (c) bias people’s perceptions. Across eight studies, leveraging cross-national surveys and behavioral experiments (total N=8,434), we test the mismatch hypothesis but only find evidence for limited selection effects. Instead, hostile political discussions are the result of status-driven individuals who are drawn to politics and are equally hostile both online and offline. Finally, we offer initial evidence that online discussions feel more hostile, in part, because the behavior of such individuals is more visible than offline.

Alexander Bor, Michael Bang Petersen

Goes with my assumption that the percentage of assholes is a constant, no matter where you take a sample. The Internet just gives them a megaphone.

More >

01 Sep 19:08

Jabra Elite 3, Elite 7 Pro und Elite 7 Active

by Volker Weber

Jabra stellt drei neue Earbuds vor. Das ist interessant, weil Jabra bereits einige Modelle im Markt hat, mich denen ich beste Erfahrungen habe.

Mit den Elite 3 will sich Jabra neue Kunden erschließen. Vier Farben gibt es, darunter ein sehr poppiges Violett. Die Elite 3 sind noch mal 15 kleiner als die Elite 75t und verschwinden bei mir komplett im Ohr, so dass ich mich sogar drauflegen kann, ohne sie zu spüren. Vor allem kosten sie nur 80 Euro Listenpreis und solche Listenpreise lassen sich nur anfangs halten.

Jabra Elite 3

Beide Ohrstöpsel haben zwei Mikrofone und arbeiten bei Telefongesprächen zusammen. Erstmals bei Jabra lassen sich die Ohrstöpsel im Mono-Modus auch einzeln betreiben. Steckt man den rechten Stöpsel ins Case, landen beide Kanäle auf dem linken und man telefoniert nur noch mit zwei Mikros.

Jabra Elite 3, Elite 75t Active und Elite 85t

Der Größenvergleich zeigt die unterschiedlichen Formen von 3, 75t und 85t. Die Elite 3 ähneln im Ohr stark den Elite 75t, sitzen also tief im Gehörgang und blockieren damit Außengeräusche. Bei mir sind sie so bequem, dass ich sie kaum spüre. Die Scheffin hat dagegen so kleine Ohren, dass sie da überhaupt keine Ohrstöpsel reinbekommt. Drei Sätze von Passtücken gibt es und man sollte sie unbedingt durchprobieren. Ohne festen Sitz hört man keinen Bass.

Jabra Elite 3, Elite 75t Active und Elite 85t

Die neuen Jabra Elite 3 sehen völlig anders aus als die alten Modelle und sind weniger stark als Jabra erkennbar. Auf diesem Bild sieht man auch, dass die 85t viel höher im Ohr sitzen und deshalb auf ANC angewiesen sind. Diese Funktion gibt es bei den Elite 3 nicht. Will man die passive Geräuschunterdrückung überwinden, aktiviert man mit einem Knopfdruck die Außenmikrofone und hört seine Umgebung besser. Ich kann mir vorstellen, dass die Chips im Elite 3 auch eine aktive Geräuschunterdrückung unterstützen würden, wie sie bei den Elite 75t nachgeliefert wurden. Die zusätzliche Dämpfung war dort allerdings gering, so dass ich sie gar nicht nutze.

Android wird besonders gut unterstützt. So gibt es neben dem Standard-Codec SBC auch den Qualcomm-Codec aptX, den fast alle Android-Handys haben. Einmal gepaart lassen sich die Anmeldedaten in den Google Account schreiben, so dass man leichter zwischen mehreren Geräten wechseln kann. Zwei Geräte können gleichzeitig verbunden sein, also etwa PC und Smartphone. Bei Android-Handys werden außerdem Google Assistant und Alexa bereitgestellt. Alternativ kann man auch eine Direktverbindung mit Spotify herstellen. Für all diese Einstellungen benutzt man die Sound+ App von Jabra.

Nur wenige Einstellungen in Sound+ mit Support für Elite 2(?) und 3

Bei dem Elite 3 ist der Funktionsumfang von Sound+ relativ gering. Kein Equalizer, aber sechs Presets. Der Doppeltipp auf dem linken Earbud ist einstellbar auf den Android Default, Alexa oder Spotify Direct Play. Bei Telefongesprächen kann man einen Sidetone einschalten, der die eigene Stimme wie bei Hear-Through durchleitet.

7 Stunden Akkuleistung in den Earbuds und drei Aufladungen im Case versprechen eine Laufzeit von mehr als einem Tag. Das ist vorbildlich.

Die Jabra Elite 3 sind ab 1. September für 79 Euro erhältlich. Für Besitzer von 75t oder 85t ist das kein Upgrade, da die Elite 3 nicht die gleiche Klangfülle erzeugen und weniger wertig gefertigt sind. Wer aber nur die Elite 3 gehört hat, wird damit sehr zufrieden sein. Jabra hat es einfach drauf, sehr gute Earbuds zu entwickeln.

Jabra Elite 3, Elite 75t Active und Elite 85t

In einem Monat folgen zwei weitere interessante und deutliche teurere Earbuds: Elite 7 Pro (200 €) werden 9 Stunden Laufzeit bei eingeschaltetem ANC bieten und einen zusätzlichen Knochenschallsensor haben. Mit AAC statt aptX passen sie zu iPhones. Durch den zusätzlichen Sensor sollen sie bei Telefonaten im Außenbereich zuverlässig Wind und Nebengeräusche unterdrücken. Darauf bin ich sehr gespannt.

Die Elite 7 Active (180 €) verzichten auf diesen Sensor, haben dafür aber eine besonders griffige Oberfläche und sind besonders für den Sport gedacht, wie aktuell die Elite 75t Active.

01 Sep 19:07

Is it good for people to be passionate about their work? Of course. But is it necessary? Of course...

Is it good for people to be passionate about their work? Of course. But is it necessary? Of course...
01 Sep 18:55

Some Notes on Migrations

by Reverend

This post will be as much about thinking through account migrations for Reclaim Hosting, as trying to capture some of the technical aspects of moving sites to Reclaim Cloud. In fact, it promises to be all over the place, but that is the prerogative of this blog and that’s why I love it so.

Migrations: the act of moving people’s shit from one server to another.

The vernacular for what I am talking about here when saying migrations, not pretty but true.

Domains migrations: This can be a very straightforward process, for example when we have someone on one of our school cPanel accounts that wants to move to our shared hosting. CPanel has a transfer tool baked in and we can move accounts between servers within seconds (assuming they are under 10 GBs or so), and after that just make sure all the details in our client management software WHMCS are aligned and we are good to go. What’s more, migrations like this are easy enough that there is no charge for anyone migrating from a Domain of One’s Own school to our shared hosting.

Third-party free site migrations: There are too many of these to list, but a few popular ones are WordPress.com, Wix, Weebly, and Squarespace. Interestingly enough the only one of these listed with anything resembling a migration option is WordPress.com. You can export and import the posts, pages, media, and author data, but you have to re-build the site design with appropriate themes and plugins. All the other services would be a straight-up copy and paste of page content which should tell you everything you need to know. No HTML files to download, no easily accessible media, no database … nothing. Say what you will about WordPress, but at least it’s an ethos.  WordPress.com migrations are fairly straightforward, you just need to prepare folks that some plugins and themes on wordpress.com may not be readily available for free outside that space (I still hate the plugin and theme marketplace and always will). These migrations usually cost $25.

Everything else: Pretty much everything after those two categories is a crap shoot. We have done a fair amount of migrations from just about every host imaginable: Bluehost, Host Gator, Godaddy, Dreamhost, Webfaction, 1and1, etc. And while a few of these use cPanel (Bluehost, Host Gator and sometimes Godaddy) they’re by no means similar. It’s next to impossible to get a full backup from Bluehost without an upsell, Godaddy’s interface is as confusing as they come, and good luck making it through the advertisements in Host Gator. What’s more, if you live and die by the command line (which I don’t but should) getting SSH access is often another level of hell. Services like Webfaction (soon to be gone) and Dreamhost are better in that regard, but given they run their own hosting software there is no straightforward migration path, so the migrations are often manual, and if you have an account with 5-10 sites, that is 5-10x the work as one cPanel migration, which wraps everything up into one neat package.

So, long story short, these migrations are by definition more time intensive and as a result expensive. As a rule of thumb we charge $25 per site migrated in these cases, but as we have learned some of these services allow folks to run beefy sites on their shared hosting services, which is not something we can afford to do. For example, we limit our accounts to no more than 100GB of storage for a shared hosting account, and no more than 1 GB or total server resources. For some sites that want to come over to our shared hosting these limitations will be a hard stop given the amount of storage and CPU resources needed, so that raises two crucial questions before a migration like these even starts: 1) how much data?, 2) how many resources? A few others is what PHP versions they are running and whether or not they are running the latest version of the application (issues with folks needing to run older apps on older versions of PHP is always a red flag).

I’m sure there are other variations, but for sake of memory and dragging this post out I’ll leave it to these three categories, and taking the last as an example of how a site previously run on webfaction‘s shared hosting needing to be migrated to Reclaim Cloud. The site in question had 170 GB of data, a 2 GB database, and was running Drupal 7 on PHP 5.6. The storage was an immediate flag for our shared hosting, and while previously we would point folks to managed hosting (which can run as much as $400 per month), Reclaim Cloud offers a much more affordable, albeit unmanaged, option. Storage is quite cheap at .08¢ per GB per month, or less than $1 per 10GB per month. Also, for large sites with regular traffic and a long history Reclaim Cloud provides dedicated resources wherein you can reserve up to 2 GB of CPU but allow your instance to expand to 4 GB or more if need be, while only paying for those resources if and when needed.

On the Cloud we are able to install a container-based full-stack LiteSpeed server, also known as LLSMP, that is optimized for a PHP app running LiteSpeed (a drop-in replacement for Apache) that also gives the user root access to only that container. So, the client gets more storage, more resources, root access, and an overall more secure experience for roughly $50 per month (this is based on using 10 cloudlets, 150GB of storage, a dedicated IP address, and the LiteSpeed license). What’s more, you have the option to scale instantly should that be of concern.*

So that’s the argument for the Cloud in this case, and it really is a good solution when it comes to speed and experience, and the reason I even took on this migration was it would force me to get more familiar with Reclaim Cloud, in particular creating a LLSMP environment and importing a large Drupal instance. As I predicted, these migrations are never simple, and one of the trickiest pieces beyond understanding what environment you are coming from and where it is going to, is making sure the DNS points from one server to the other cleanly, more tears have been shed over DNS in the previous 8 years than I care to acknowledge in this post.

That said, here comes the notes part of this post because I’ve learned a few things here that I will be referencing in the future, cue blog as outboard brain.

LLSMP was dead simple to setup on Reclaim Cloud, I installed 6.0.2 and ran PHP 7.3.27 and once that was done I was able to login via the web-based SSH and start migrating the files to /var/www/webroot/ROOT

I ultimately had to enable root access on the container and thankfully Webfaction provides SSH access to their server, so most of this migration was done using command thanks to the rsync command, which is amazing. Logged into the Reclaim Cloud I ran the following command to sync files from webfaction:

rsync  -avzh user@user.webfactional.com:/home/user/webapps/app /var/www/webroot/ROOT

Thanks worked cleanly, then I needed to grab a dump of the database on Webfaction, which this worked for:

mysqldump -u db_username -p db_name > database.sql

After that I rsynced it to the Reclaim Cloud instance

rsync  -avzh user@user.webfactional.com:/home/user/database.sql /var/www/webroot/

After that I had to create the database user, datamase, and create privileges via command line, cause I am kind of a big deal. Well, I thought I was until I hit my first snag:

ERROR 1045 (28000): Access denied for user 'user_db'@'127.0.0.1' (using password: YES)

This is where I reached out to help from my Reclaim Hosting colleagues, and the always awesome Chris Blankenship bailed me out with some detailed instructions on how to fix this in Reclaim Cloud:

MySQL actually sees db_user@localhost and db_user@127.0.0.1 as two separate accounts, which can cause problems. cPanel handles this automatically by creating both for all db users, but you’ll have to manually create both in Jelastic containers; so like this:

CREATE USER 'db_user'@'localhost' IDENTIFIED BY 'securepassword';
GRANT ALL PRIVILEGES ON db_name .* TO 'db_user'@'localhost';
CREATE USER 'db_user'@'127.0.0.1' IDENTIFIED BY 'securepassword';
GRANT ALL PRIVILEGES ON db_name .* TO 'db_user'@'127.0.0.1';

To make it simple usually add skip-grant-tables under the mysqld section of /etc/my.cnf, restart mysql (systemctl restart mysql), log in as root without the password. From there I run this:
FLUSH PRIVILEGES;

Followed by those commands above. Then I comment out, skip-grant-tables under  the mysqld section of /etc/my.cnf, restart mysql (systemctl restart mysql) again.

Once I figured out the permissions i was able to import the database.sql file using the following command from the /var/www/webroot/ directory:

mysql -u db_user -p db_name < database.sql

Once that imported I did a final rsync of files using the following command, with the -u flag to skip files that are newer on the destination.

rsync -avzhu user@user.webfactional.com:/home/user/webapps/app /var/www/webroot/ROOT

There was also the bit where Chris updated ‘localhost’ to ‘127.0.0.1’ in the settings.php file for the Drupal instance given Reclaim Cloud is particular.

So those are very specific notes for this migration of a larger PHP application to a Reclaim Cloud instance, what’s more I had to do it again a week later given this was just to test the instance before moving the production site (this is where rsync is very useful, although the SQL dump had to be re-done though). As you can tell by now, this is not a $25 migration, this requires spinning up a server, syncing files between servers, and providing a testing environment. Luckily Reclaim Cloud environments automatically have a test unique URL that the mapped domain overwrites (namely something like site.uk.reclaim.cloud as opposed to site.com) that makes testing the environment easy before pointing DNS, which was quite convenient—even better than pointing localhost files.

Anyway, this is a long post about migrations and Reclaim Cloud, as much a series of notes as a way of narrating what I hope will be a deeper dive into the possibilities of Reclaim Cloud over the next 12 months or so given i have been freed up from other responsibilities, but more on that in my next post.
__________________________________________

*The hard part of the Cloud to wrap your head around is the variable pricing, I know it does remain fairly consistent from personal experience, but need for predictability is what Digital Ocean understood and has seemed to figure out, which I admire.

01 Sep 18:54

Windows 11 to start shipping in five weeks

by Volker Weber

Today, we are thrilled to announce Windows 11 will start to become available on October 5, 2021. On this day, the free upgrade to Windows 11 will begin rolling out to eligible Windows 10 PCs and PCs that come pre-loaded with Windows 11 will start to become available for purchase. 

Aaron Woodmann, Windows Experience Blog

I am running Windows 11 on my Surface Pro X and although it is technically a developer beta it is way better than Windows 10 ever was on this ARM machine.

Windows 11 will initially ship without support for Android apps. Being a veteran of BlackBerry 10 I am not holding my breath for Android apps outside of the Google ecosystem.

The free upgrade to Windows 11 starts on October 5 and will be phased and measured with a focus on quality. … We expect all eligible devices to be offered the free upgrade to Windows 11 by mid-2022.

More >

01 Sep 18:54

Mainframes, ML and digital transformation

by Benedict Evans

Patrick Collison once made a joke that if you erect enough enterprise software billboards, an airport will spontaneously appear around them. It’s a pretty good bet that all of those billboards would say ‘digital transformation’, and that phrase always sounds to me like a parody of tech marketing. It’s got ‘digital!’ in there, and ‘transformation!’ - what on earth could this mean? If you poke away at it a little, though, this describes a pretty interesting generational shift in the technology inside big companies. 

Perhaps the best high level way to talk about this is just to say, as a gross generalisation, that in the 60s and 70s giant companies bought mainframes, and in the 80s and 90s the centre of gravity of enterprise IT moved from mainframes to client-server, Oracle, Windows and PCs, and now it’s moving again, to cloud and SaaS, and a bunch of other technologies that come with that. 

Moving from mainframes to client-server didn't just mean you went from renting one kind of box to buying another - it changed the whole way that computing worked. In particular, software became a separate business, and there were all sorts of new companies selling you new kinds of software, some of which solved existing problems but some of which changed how a company could operate. SAP made just-in-time supply chains a lot easier, and that enabled Zara, and Tim Cook’s Apple. New categories of software enabled new ways of doing business. 

The same shift is happening now, as companies move to the cloud - you go from owning boxes to renting them (perhaps), but more importantly you change what kinds of software you can use. If buying software means a URL, a login and a corporate credit card instead of getting onto the global IT department’s datacenter deployment schedule for sometime in the next three years, then you can have a lot more software from a lot more companies. Okta’s larger customers have an average of 175 different apps. That may be an under-statement - anything up to half of the software in big companies isn't bought through IT at all, and they may not even know about it. 

Just like the last time around, that means many more problems can be solved, or discovered, or created. A common thread in most of the enterprise software pitches I've listened to in the last decade is how many opportunities there are to solve a piece of workflow in some very specific department or industry that would never have occurred to you if you weren't deeply familiar with it. Human needs are infinite. There are also common building blocks of technologies or concepts that are now being deployed over and over almost indefinitely - that might mean machine learning but it also might mean taking concepts that are 20 years old (two-sided networks, for example) and applying them to some new industry. These opportunities can be a lot bigger than you might think - Adobe bought frame.io for roughly the same as Avid’s market cap. A network layer that captures the workflows of a whole ecosystem can produce as much value as a highly specialised professional tool used by one part of it. Software eats the world, you might say. 

Frame.io is cool, and taps into some current trends in productivity (Fred Wilson also wrote about this here back in 2014), but a lot of this is probably just doing ‘modern software’ over and over again. My favourite example is this slide from Vodafone. Vodafone runs mobile networks in a lot of countries, with hundreds of millions of customers, and so it has 2.6 million invoices to pay every year. Those are all ‘digital’ (indeed, probably Oracle, and note that Vodafone is not an old company), but what could you do with that if you started from scratch today? How many startups does that generate, generalised across 100 other giant companies with similar stories? You can bet that Google doesn’t use Oracle or SAP for its back-office (oh, wait).  

View fullsize Screenshot 2021-08-30 at 20.15.34.png

It’s also interesting just how long this can take. If you live in Silicon Valley, it would be natural to think that cloud and SaaS are old and done and boring, but this chart from Goldman Sachs, showing a survey of big company CIOs, suggests that less than a quarter of their workflows are in the cloud so far, and they're moving slower than they expected. This stuff takes time, and you don't necessarily have the budget or justification to rebuild everything overnight. 

View fullsize Screenshot 2021-01-05 at 6.13.19 pm.png

PCs and client-server aren’t going away, or at least, not any time soon. Equally, today’s YC founders weren't born the last time anybody in Silicon Valley thought about mainframes, but IBM’s install base (measured in computing capacity) is still growing - in fact IBM shipped record mainframe capacity last year. When technology becomes obsolete it doesn't stop working, and in fact generally it retreats to its core customers and their core use cases, and puts up prices. That can be a great business, for a while. 

View fullsize Screenshot 2021-08-30 at 20.23.58.png

On the other hand, the pandemic has created a reason to accelerate all of this. I've spoken to a big CPG company that might be perfectly happy with its ERP, except that it can't ship less than 1,000 units per order and now they want to do direct-to-consumer (this is part of the Shopify story). I've also spoken to people at a huge retailer that was perfectly happy with its point of sale system, but discovered that it can't be extended to do ‘buy online pick up in store’. The old systems are good at the old things.

Most of this won’t be very dramatic - these are multi-year infrastructure migration projects, and a decade-long generational shift (enterprise IT is boring for a reason). But you might also call this ‘gradually, then suddenly’, and it’s a generational shift that in some ways is as fundamental as the consumer internet’s shift from PCs to smartphones. It also sometimes gets buried in all the discussion of VR and crypto, and of what comes after smartphones, but we’ve got another decade or two of ‘digital transformation’, and then it’ll be called something else.

01 Sep 18:52

The Best Point-and-Shoot Camera

by Ben Keough and Phil Ryan
Three different cameras pictured with rocks.

A great compact camera should have a relatively large sensor, be small enough for you to carry anywhere, and allow you to capture images that would be impossible to replicate with your smartphone. Whether that means the architectural details of European cathedrals, your child speeding across a soccer field, or dinner at your favorite restaurant, the Sony RX100 VII is a far better option than your phone’s camera.

Its 8.3x zoom lens makes it a perfect traveling companion, as it’s capable of capturing wide scenic vistas or zooming in for stunning portraits and delightful architectural details.

Plus, its tilting touchscreen makes shooting up high or down low easy, and the physical controls can help even experienced photographers feel at home while teaching novices the art of photography. Best of all, its autofocus tracking is the best we’ve ever seen in a compact camera.

Note: Many of the high-end compact cameras we recommend in this guide are produced in small batches that sell out quickly. These models may be backordered or out of stock at the stores we link to — an unfortunate side effect of the hype surrounding them. However, none have been discontinued, and if you place an order, you will eventually receive a camera. Just be prepared to wait, or buy one used instead.

01 Sep 18:40

Iterate doesn’t just mean “do it again”

David Truss, Daily-Ink, Aug 31, 2021
Icon

In my characterization of personal learning, there's a step in the process called 'iteration'. This post offers a useful characterization of what is meant by 'interation'. Dave Truss is not talking about my theory but I would completely agree with him when he says that iteration is "not just about applying the same process over and over again, but rather it’s about recognizing what caused the failure and attempting to circumvent it, trying to achieve results by trying something untried, unique, or divergent from the failed attempt." Indeed, in an iterative process, it would be incorrect even to call most attempts 'failures' - in other disciplines, we have more accurate names for them, such as 'minimal viable product', 'pilot', 'beta version', 'trial run', and more. Or as Elon Musk might say, "the crater from the explosion was exactly where we projected it should be".

Web: [Direct Link] [This Post]
01 Sep 18:30

Frontity to Join Automattic

by Matt

Since Frontity launched their open source framework, they have been making the integration between React and WordPress easier. Their proven drive and experience with clean technological solutions will benefit our efforts as we continue to make the block and theme APIs a joy to use and WordPress the best development platform on the web.

The next step in the growth of this relationship is for Frontity and its team to join Automattic and contribute to core WordPress.org as part of our commitment to Five for the Future.

I believe there’s still a lot that we can learn from decoupled systems and we can incorporate those learnings into WordPress itself as we emphasize performance, flexibility, and ease of development. I look forward to Frontity joining WordPress and channeling their efforts into the WordPress APIs, documentation, and Gutenberg’s full-site editing tools.