Most programmers spend more time debugging than writing new code,
but books and courses on debugging are few and far between,
and testing tools to help people figure out if code is buggy or not
are much more common than ones to help them figure out where the bugs are.
Thankfully, there is a growing body of research on isolating and repairing bugs.
One interesting approach is statistical fault localization:
given a set of tests that pass and another set that fail,
look at the correlation between statements that are executed by failing tests
but not by passing tests
in order to identify problematic regions.
Another is dynamic slicing:
starting from the statement where the fault occurred,
trace backward recursively through a trace of the program's execution
to find where the variables used in that statement were set
to narrow the search space for the error.
Zeller2009 and the more recent Zeller2021
are excellent introductions to these techniques and others;
what Soremekun2021 explored was how effective statistical methods are
when compared to dynamic program slicing.
Looking at over 450 bugs in 46 open source C programs,
they found that slicing worked better when a single statement was responsible for the problem,
but statistical analysis worked better when the fault was caused by multiple errors interacting.
However,
a hybrid approach was better than either on its own,
regardless of which statistical method was used.
I hope these findings will spur the developers of IDEs and testing harnesses
to include support for both kinds of debugging.
Statistical fault localization is an easily deployed technique for
quickly determining candidates for faulty code locations. If a human
programmer has to search the fault beyond the top candidate
locations, though, more traditional techniques of following
dependencies along dynamic slices may be better suited. In a large
study of 457 bugs (369 single faults and 88 multiple faults) in 46
open source C programs, we compare the effectiveness of statistical
fault localization against dynamic slicing. For single faults, we
find that dynamic slicing was eight percentage points more effective
than the best performing statistical debugging formula; for 66% of
the bugs, dynamic slicing finds the fault earlier than the best
performing statistical debugging formula. In our evaluation, dynamic
slicing is more effective for programs with single fault, but
statistical debugging performs better on multiple faults. Best
results, however, are obtained by a hybrid approach : If programmers
first examine at most the top five most suspicious locations from
statistical debugging, and then switch to dynamic slices, on
average, they will need to examine 15% (30 lines) of the code. These
findings hold for 18 most effective statistical debugging formulas
and our results are independent of the number of faults (i.e. single
or multiple faults) and error type (i.e. artificial or real
errors).
A scientific paper is supposed to contain enough information that somebody skilled in the field can perform the experiment(s) described therein (issues around the money needed to obtain access to the necessary equipment tend to be side stepped). In addition to the skills generally taught within a field, every niche has its specific skill set, which for leading edge research may only be available in one lab.
Bespoke software has become an essential component of many research projects, and the ability to reimplement the necessary software is rarely considered to be a necessary skill. Some researchers consider software to be “just code” whose creation is not really a skill that is worth investing in acquiring.
There is a widespread belief in academic circles that the solution to the issues created by bespoke software is for researchers to release the source code of the software they create.
Experienced developers will laugh at the idea that once the source code is available, running it is straight forward. Figuring out how to run somebody else’s code can be a very time-consuming process, particularly when the person who wrote it is relatively inexperienced.
This post is about the social issues around the bespoke research code being made available, and not the technical issues likely to be encountered in building it on another researcher’s computer.
Lots of researchers do make their code available, without being asked, and some researchers actively promote the software they have written. In a few cases, active software ecosystems have sprung up around a research topic, e.g., Astropy and SunPy.
However, a lot of code never gets released. Based on my own experience of asking for code (in the last 10 years, most of my requests have been for data), reasons given by researchers for not making the code they have written available to others, include:
not replying to email requests for the code,
not sure that they still have the all code, which is taken as a reason for not sending what they have. This may also be a cover story for another reason they don’t want to admit to,
they don’t want the hassle of supporting other users of the code. Having received some clueless requests for help on software I have released, I have sympathy for this position. Sometimes pointing out that I am an experienced developer who does not need support, works, other times it just changes the reason given,
they think the code is poorly written, and that this poor of quality will make them look bad. Pointing out that research code is leading edge (rare true, it’s an attempt to stroke their ego), and not supposed to be polished, rarely works for me. Some people are just perfectionists, with a strong aversion to showing others anything that has not been polished to death,
a large investment was made to create the software, and they want to reap all the benefits. I have a lot of sympathy with this position. Some research fields are very competitive, or sometimes the researcher just wants to believe that they really will get another grant to work on the subject.
Researchers who create and support research software complain that they don’t get any formal recognition for this work; which begs the question: why are you working on this software when you know that you are unlikely to receive any recognition?
How might researchers receive recognition for writing, supporting and releasing code?
Citations to published papers are a commonly used technique for measuring the worth of the work done by a researcher (this metric is used when evaluating people for promotion, awarding grants, and evaluating departments), and various organizations are promoting the use of citations for software.
Some software provides enough benefits that the authors can write a conventional paper about it, e.g., a paper on Astropy (which does not cite any of the third-party packages used in its own implementation). But a lot of research software does not have sufficient general appeal to warrant a paper.
Are citations for software a good idea?
An important characteristic of any evaluation metric is how hard it is to fake a good score.
Research papers are rated by the journal in which they are published, with each journal having its own rating (a short-term metric), and the number of times the paper is cited (a longer-term metric). Papers are reviewed, with many failing to be accepted (at least by the higher quality journals; there are so-called predatory journals that will publish anything for a fee).
Will citations to software become as commonplace as citations to other papers?
I regularly read software papers that cites software packages, but this practice is a long way from being common.
Will those awarding job promotions and grants start to include software creation as having a status comparable to published papers? We will have to wait and see.
Will the lure of recognition via citations increase the quantity of source being released?
I don’t think it will have any impact until the benefits of software citations are seen to be worthwhile (which may be many years away).
These days I try not to think about the future — it only creates anxiety and there’s no way to predict it, or really even prepare for it. And I’ve long given up trying to ascertain the meaning and purpose of life — I’m thoroughly convinced life has neither meaning nor purpose.
Still, when I ponder about things, I quite often end up not with (new or changed) beliefs or plans or objectives, but rather questions. I try to carry these questions lightly, and not become obsessive or even intent on answering them. The questions themselves seem to be enough to serve as a compass to guide what I do each day.
As a non-believer in free will, my sense is that ‘I’ had nothing to do with coming up with these guiding questions, any more than ‘I’ have any say in what I do — these things are entirely the result of my biological and cultural conditioning, in the face of the circumstances of each moment, all of them outside my control.
So none of these questions is about what ‘I’ ‘should’ do or try to change.
But that doesn’t make them any less interesting, inspiring, and even comforting. Sometimes good questions, even and perhaps especially if there are no clear or even possible answers to them, can be far more grounding, and can help focus thoughts and energies in more useful ways, than any set of beliefs or presumed ‘answers’ could do. With that, here are the questions I’m most often pondering these days:
If, as appears increasingly likely, the US elects a fascist government and president three years from now (or if such a government comes into power there without being duly elected), what does this portend for us in Canada? Will such a government attempt to annex Canada for our land and resources, and if so what will be our, and the world’s, response? Will we have to deal with a massive influx of political refugees from south of the border, and if so, how will we respond?
If I were limited to spending all my spare time (say, 400 hours a year) on a single project, what would that project be? In other words, where might my focused effort make the greatest difference, at least locally, at least for a while? If that project were arduous or risky, would I be better off choosing a different project that I’d be less likely to abandon if things got tough?
How can I best get involved in a dialogue process that will perhaps teach me new, valuable conversational skills and expose me to some new, creative, brilliant thinkers and some radical, collectively-emergent ideas about the world and how to live a good life in it?
Where do I want to be living in 5-15 years so that when permanent economic collapse unfolds (I’m guessing in several stages over that time period), and as ecological collapse deepens and becomes more disruptive and dislocating, I’m somewhere that has the people and resources to cope as well as possible with it? (And still remain close to the people I care about, especially when air travel ceases.)
What one or two things would I most like to learn, or learn about, over the next few years? I came close to finally learning how to dance, and how to swim, before CoVid-19 kicked in. I’ve always been curious to learn ASL. And I almost enrolled in a course on improv.
What are some simple and effective ways to introduce more fun into my life? I recently was involved in two activities that had me laughing more than I have in years, and it’s left me wishing for more. (For me, laughter and fun are almost always the result of participatory activities, not spectator sports.)
What might work to get me to devote more time and energy to creative writing? I really enjoy it when I get to it, but it’s hard work, and the quality of my creative work is all over the map. What might make such writing better, easier, and/or more fun?
Similarly, what might work to get me to devote more time and energy to music composition? Is it just a matter of putting in the time, or do I need a mentor, and/or practices, to add more discipline and skill to how I do this work, and if so where might I find them?
What’s the best local theatre company near my new home? (There has to be one easy question on the list).
What are some useful practices that might improve my capacity to pay attention to things — things that would seem to merit closer attention, or which are just beautiful or interesting? It seems to me that what we pay attention to, and how well we pay attention, has a major impact on what we subsequently do, and on how much we enjoy and learn from life. And attention, it seems to me, is a whole-body, multi-sensory activity, more about what is perceived, felt and embodied than what is thought.
Looking at this list, I notice it has no “why” questions, no philosophical questions, no yes-or-no questions, and no questions about my fascination with the message of radical non-duality, a message which effectively renders all questions moot.
It’s a very different list than it would have been a decade ago. I wonder what happened to that guy who claimed to be me back then?
If you’re going to ask people asking for help in a community to contact the support team, what’s the point in having a community? (p.s. This is just two of countless similar responses posted in the community).
Surely it would make far more sense to send support staff to unanswered questions than unanswered questions to support staff?
If you do the former, support staff provide an answer that prevents more questions. This is better for everyone (and stops repeat questions). If you tell posters of unanswered questions to file that same question to support, you’re not only wasting their time but guaranteeing more people ask that question in the future.
For sure, if questions require private information or appear to be an emergency, guide them to support (or automatically escalate it to support). But for the rest, get support to answer in the community.
When I found myself suddenly working from home every day in March 2020, I assumed with foolish optimism that it was an ephemeral situation.
And so I thoughtlessly plopped my work laptop on the corner of a wooden desk dominated by another machine and spent the next six months inelegantly arched over this “setup,” my forearms aching, my shoulders tightening, my back screaming.
My daughter called me a nincompoop (for this and many other things). She was not wrong.
In 2015, a meme declaring that there were “only two genders” began to circulate — typically juxtaposing a mocking or bewildered reaction image to the suggestion that there were more than two genders. The meme’s earliest adopters, ignoring the complexities of human biology, considered this a simple biological fact; the punchline was the apparent absurdity of denying it.
The meme was easily reclaimed by returning that absurdity. Increasingly surreal spin-offs subverted the initial sentiment by proposing even more arbitrary binaries. Twitter user @frz_sunsetblush riffed that the two genders are “trash” and “yummy cheese.” Tumblr user itsinjustbeing observed, “the two genders are ‘i no longer wish to be perceived’ and ‘i have to be the most fuckable person at the grocery store.’”
Like most forms of comedy, underneath the offbeat and wry tone of these memes is a sincerity much closer to personal truth
As the meme spread, it expanded. A related meme, “Ah yes, the three genders,” followed in the same vein — a tweet by @emmastory features a screenshot of gender options “male,” “female,” and “I have no plans to purchase a new vehicle.” Going even further, @ericweiskott observed 17 genders in a table of baroque composer Charpentier’s descriptions of musical keys and modes, including C major, or “gay and warlike,” and Bb minor, or “obscure and terrible.” Reddit user ironic_mousse responded to a user insisting there were only two genders by declaring “there are 65 genders and every time u complain we add five more.”
This proliferation of wild genders roaming the internet is as much a function of an increasing number of people who know someone who is trans or nonbinary as a sign that how we perform and perceive gender is undergoing a transformation. The act of labelling any loosely related group of items or concepts — positioned as if they were diametrically opposed, or discrete subtypes — as “gender” demonstrates how such categories are, in the most literal sense of the term, socially constructed. It’s an acknowledgement of our tendency to rely on heuristics that seek to make an increasingly complex world thoughtlessly navigable and ready-made for consumption — it’s easier to chunk and categorize than to contend with the possibility that there are more ways to live and understand each other than the delimited version we’ve settled for. And when it becomes clear that the criteria by which we come to register and legitimize categories are arbitrary, it becomes difficult not to question whether the categories we have assigned are either accurate or helpful.
Like most forms of comedy, underneath the offbeat and wry tone of these memes is a sincerity much closer to personal truth. While they playfully push back against the gender binary, they also open up new ways of defining and embodying gender, returning the means of construction to its users — as something less like a binary characteristic, or even an item in a list of options, and more like a “vibe.”
While some may contend otherwise, a universal, clear-cut definition for gender doesn’t quite exist yet. Different dictionaries and professional organizations circle around a vague notion of gender as it relates to how sex is socioculturally perceived, without coming to a cleanly shared consensus. The top definition for gender on Urban Dictionary is “[a] scam invented by bathroom companies to sell more bathrooms.” And yet this vagueness is what makes gender a productive and prolific force in certain enclaves of the internet.
Online spaces where engagement is more interest-based — as opposed to directly extending an offline self — are particularly conducive to new conceptualizations of gender. This goes for segments of Reddit and Twitter, and perhaps most famously for Tumblr, which, as noted by user Replicated, is “social media for people who don’t exist.” Neither a physical representation nor a highlight reel, Tumblr is an embodiment of what users devote their attention to. The productiveness of such spaces goes beyond the freedom of self-expression afforded by anonymity, and beyond academic critiques of a binary division of gender. Here, the very irrelevance of the gender binary provides fertile ground for more personally and socially meaningful understandings of gender to flourish.
Engaging with content-based accounts that are purposefully divorced from the user’s personal attributes is more akin to talking to an animate inanimate object. Gendered pronouns become unnecessary altogether. “[D]on’t talk about me,” said Tumblr user horriblebeing in response to another user asking for their preferred pronouns. In this context, the act of asking for someone’s gender becomes suspect. What purpose does knowing someone’s gender serve? What is the intent behind seeking this privileged knowledge? What new value or valence or does it bring to a collection of out-of-context quotes, memes, and film screenshots meant to be consumed in a vacuum? Beyond the practical reasons why someone might not want to disclose their gender, superimposing personal characteristics onto a space designed to be separate from the identifiably personal defeats the purpose of carving out such a space in the first place. Reimposing the trappings of gender on such content becomes as absurd as asking a skeleton or a suit of armor whether they’re a boy or a girl.
Tumblr is an embodiment of what users devote their attention to. Here, the very irrelevance of the gender binary provides fertile ground
Judith Butler, in Gender Trouble, made her influential argument that “gender is always a doing, though not a doing by a subject who might be said to preexist the deed.” It is in actions and behavior that gender is made legible; it is not an inherent attribute or essence of the subject doing them. The subject does not have a gender until it performs those acts. On certain platforms, this nonexistence is not only made literal, but fully embraced. Relationality is no longer mediated by binary gender norms, or any traditionally recognized conceptions of gender, but by increasingly granular commonalities of experience and emotional valence.
The “Gotta Be One Of My Favorite Genders” meme first appeared as an Instagram post on this year’s International Women’s Day, featuring a Black man standing in front of a car with his hands folded, captioned “Shout out to women’s day fr 🤞 Gotta be one of my favorite genders.” In a little over two weeks, the image had spread across Twitter and Tumblr. Other favorite genders now include a range of inanimate objects and fictional characters, like fangs, bowling alley carpet, and welding. Nearly 12,000 users reblogged a meme naming Hamlet as a “favorite gender.” While most of these users were probably never ordered to commit murder by the ghost of their father, there are certainly moments in life that evoke the feeling of holding the skull of a childhood friend and monologuing about the inevitability of death. What makes this a “gender” and not simply an identification, or a square in a mood board, is that it refers to a mode of being — made up not only of particular characteristics but also feelings, experiences, responses, and potential acts.
This process of publicly cataloguing genders is as much a form of catharsis as it is inside joking. The Twitter bot @gender of the day provides daily highlights of genders like “an ominous black hole,” “the sound of a record skipping,” and “the smell of 6 a.m. just before it starts to hail and sound of dry leaves crunching underfoot.” The account’s stated aim is “outsourc[ing] our feelings about gender to a bot…free[ing] up a lot of mental space for other things.” Tumblr users similarly curate their own personal gender repositories in their tags, declaring that gender is cigarettes and earrings. Gender is hands, scars, and being covered in grime. Gender is mad scientists. Gender is biblically accurate angels. Gender is Renaissance paintings with wounded bodies in recline, transcendent in their exsanguination.
When users speak of their own genders in this way, this objectification is taken literally. These hypothetical genders, while deliberately whimsical, nonetheless represent in aggregate the user on the platform. And they express real emotional nuances — a real orientation toward oneself and the world. Gender online is no longer something that is witnessed so much as something that is felt — said in another way, it’s measured in mood and vibes.
Formerly a cornerstone of New Agey mysticism, where the invocation of good or bad “auras” or “energies” were euphemistic renderings of social judgment, moods and vibes have become the placeholders of something akin to “atmosphere.” They’ve been called the new frontier of commodification and a means of consumption that is inherently superficial and passive. But the term also captures experiential nuances that are sometimes intense and profound, ones that might otherwise be ignored.
A vibe is neither something intrinsic, nor something that can be externally acquired or dispensed. It’s all-encompassing, if ephemeral, describing both an atmosphere and oneself in relation to that atmosphere — a self and its context, each mutually informing the other. This happens to be a decent working definition of gender itself. Vibes are a potentially more accurate way of describing how gender feels and operates — as something simultaneously transient and ineffable, absolute and all-consuming.
In order to transmute gender into a vibe, users must undergo the labor of both translation and transfiguration — of attempting to articulate something nameless and hyperspecific, and innate, yet recognizable enough to be shared intelligibly. The reward of successfully making something eminently abstract and personal legible enough to be seen and understood is the affirmation afforded by recognition — the social currency of likes, retweets, upvotes, and notes that serve as markers of relatability. More than that, to intelligibly declare something to be a gender is to make it habitable: the affinity we share with the affect or experience conveyed is of home. It’s a home carried upon our backs — a hard shell we are simultaneously inside and outside of, one that we can retreat into for the safety of being surrounded by the essence of our selves.
Transmuting gender this way is participatory, foregrounding the ways in which gender is relational to begin with. While the legibility of any particular gender is still subject to the judgment of other users and the sociocultural factors that color their engagement, gender-as-vibe is recognized through a spirit of presumed mutuality. Unlike a binary that operationalizes gender as something oppositional and exclusionary, or even a more expansive non-binary gender schema that still delimits gender by discrete labeled categories, gender-as-vibe is received as if we’re looking into the witch’s Magic Mirror in Snow White, asking it if what we see rings true to what we already know.
The novelty and delight of chancing upon a reflection of yourself renews itself with each serendipitous encounter — small miracles of affirmation and connection that catch us off guard enough to laugh in unexpected self-recognition. And in the case of gender, the more ineffable and niche it is, the more miraculous these connections become. It’s encouragement enough to extend ourselves into the generative gender void beyond.
It could be argued that this is a conflation of gender with aesthetics. But the “genders” that these posts evoke aren’t tied to external expression so much as intrinsic expressivity. The clothes, props, and atmospheres of aesthetics like dark academia and cottagecore, among others, certainly transform how a user interfaces with the world and with other people. But unlike aesthetics, gender-as-vibe neither preexists nor totalizes the user. It speaks not to something that can be assumed for a time before being taken off and put away like a costume, but a persistent and coherent desire to give form to a particular mode of shifting and nuanced relationality to self and to others.
For instance, pronouns, previously a fiercely guarded Pandora’s box, have been deconstructed into the quintessence of their grammatical function, imparting even more multifaceted connotations to their referents. The new pronouns, as Tumblr user @l0st-vegas notes, are “she” as in how sailors refer to their boats, “he” as in the way you’d call a shy animal “little guy,” “they” as in the omnipotent collective. Gender is something you can write down and put in your pocket, “carry[ing] it like a small, cherished object.”
Vibes are a potentially more accurate way of describing how gender feels and operates — simultaneously transient and ineffable, absolute and all-consuming
This does not negate an ever-present yearning for physical embodiment. Gender envy is a term typically used by transgender and gender non-conforming people to describe the feeling of intense jealousy they feel towards the physical appearance of someone who embodies their ideal gender. This concept has been used online by both cisgender and transgender people to encompass a strong identification with and desire to be that person. Subjects of gender envy run the gamut from Anime and cartoon characters to influencers and celebrities.
Among the most highly visible targets of gender envy are (mostly) cis, white, emotionally vulnerable men — Harry Styles, Heath Ledger, Gerard Way, Bruce Springsteen, Dean Winchester, Will Graham — who have in common an ability to perform femininity and show vulnerability without fear of being harmed because of it. This is echoed in a subset of curated genders that fall under “intentionally botched femininity” — women in suits and suits of armor, the gothic heroine and the final girl in horror — someone who survives by assuming and rejecting femininity and masculinity.
These genders are impossible to attain, much like it’s impossible to sustainably embody gender as inherently ephemeral affects and modes of relationality. It’s something that can only be approximated, through the limited means of expression and perception afforded to a physical body through fixed sociocultural criteria. There’s a certain flavor of loss attached to saturating yourself in images of an ideal — in looking so closely and extensively at an imago that it almost becomes akin to gazing into a mirror, providing an elusive reflection of the self that is negated as soon as you look away.
But the state of being envious is in itself productive — because in the act of coveting what we cannot have, we acknowledge that we do want to be something other than the static conception of self that has been prescribed to us. Ultimately, what gender envy covets is a body that is no longer shaped by social and environmental factors out of our control. A body that is not beholden to congealed notions of what is considered “natural” and punished for deviating from it. A body that can reclaim possibilities of expression that it has been dispossessed of. We are invited to question the reasons why these modes of existing in the world have been foreclosed to us and can begin to strive towards them, even if the closest we can reach is asymptotic at best.
And in the act of curating an assemblage of desired forms of embodiment, we allow the boundaries of our selves to become more porous — to no longer filter our experiences and encounters through an externally imposed sieve of normality or congruity that adjudicates what is valid, meaningful, or worthy of attention on our behalf. Gender-as-vibe, much like gender envy, admits a self that is in flux — that generates a multiplicity of embodiments by simply being in the world.
Anne Carson posited that eros, or desire, is a verb — something that cannot be fixed or held without losing its essence, a state of perpetual triangulation between the desirer, what is desired, and that which prevents their joining. Gender is also a verb — it is a state of constant yearning and transition, a straining of the imagination to realize a state of being that can only be partially achieved by abandoning at least a part of the self as it stands. And it’s in this self-annihilation that self-creation becomes possible.
To begin to transubstantiate gender as the expansiveness it has manifested online is to revel in instability. To no longer forsake your own complexity out of fear of being unintelligible — even to yourself.
Gender is inherently transient — something that maintains a guise of stability by hiding its entropy. Its changes have been recorded throughout history, reflecting shifting values, beliefs, and norms. On the internet, this process of continuous transformation manifests in the pathos of mood boards and the bathos of memes — in how we keep our IRL identities close to our chests yet share our most intimate and inchoate desires in a bid to be seen and understood.
Gender as it has been reconfigured online is much like vibes in the sense of vibration — in other words, like music (unsurprisingly, there are also plenty of genders that are songs). It is always in media res — simultaneously ephemeral yet persistent, composed of moments of consciousness that continually renew themselves; as each moment dies, another rises to build off the echoes. And while it lacks a tangible past or future as it is experienced, it still contains memory — it can be invoked, kept in the archives of an infinite scroll. It is something ineffable but inhabitable — something that suffuses and transfigures. Gender is a resonance between self and world achieved by instrumentalizing the ether of the internet — a rarefied form of self that is no longer stymied by the limits of the body and the looking glass.
Gender-as-vibe, much like gender envy, admits a self that is in flux — that generates a multiplicity of embodiments by simply being in the world
During 2020’s Trans Awareness Week, ACLU lawyer Chase Strangio wrote in an Instagram post that he “dream[s] of a future where we recognize that there is no such thing as irreversibility when it comes to how we inhabit our bodies,” where “the capaciousness we bring into the world” is no longer constrained, and “[e]ach engagement with our body is part of a journey in which pain, trauma, joy, pleasure and everything in between and beyond are mapped onto the story of how we see and embrace ourselves.”
What it means to say that gender is a social construct is to acknowledge the power we have to determine what makes it “real” — to shape what it means to us and the people around us. It means that gender is not a binary, or even a spectrum of characteristics, but a network of ways to understand ourselves and relate to each other that shifts and transforms over time. It’s a never-ending process of discovering the multitudes we contain, and the multiplicity of possible ways to express them. As Tumblr user unknought notes, the question is no longer “What am I, really?” but “What do I want?” and “What will make me happy?”
This is one way we can “make gender trouble” — to delight in the act of creation, and to refuse to be intelligible. Because in a year when an unprecedented number of anti-trans bills are moving through state legislatures, when entrenched notions of gender continue to be used to justify violence, having a space where gender lies not in physicality but in pith, where we can craft and share the vision of a life written, directed, and produced by our own hands, is vital.
Mentors share advice, sponsors share opportunities. Both are important and useful, but sponsorship accelerates careers. Underrepresented people are over-mentored and under-sponsored.
In the last couple of weeks I’ve had several firsts:
my first time on CBC TV News, as an expert talking about DEI and hybrid work for a piece by Janella Hamilton
It was exciting and humbling to have smart women I admire open doors I didn’t even know existed and support me to be successful. Alex saw this opportunity to write a piece on hybrid work and DEI measurement as a way for me to meet her editor Ania Wieckowski. Alex has been a guest on CBC radio many times and pitched the two of us to Michelle. Alex and I had a quick prep call to make sure we both knew the key points that the other wanted to make. Michelle mentioned the session went well to Janella, who phoned and asked if I could do an on camera interview. Even though I have the skills to do all of these things I hadn’t had the chance to do any of them before. I’m grateful and humbled to have had these opportunities.
How can you sponsor others? How have others sponsored you?
Alan Levine draws a distinction between one software, which is open source, and another, which is "'free' software owned by one of the biggest commercial firms in the biz." The open source software is Discourse while the commercial software is Flipgrid, which was absorbed by Microsoft in 2018. The 'tale' here isn't surprising: the support for the open source software was immediate and useful, while the commercial software threw up some access barriers that were pointless and confusing. My own observation is that both Microsoft and Google have been trying to collect all these social applications under 'teams' or 'workplaces' such that people must 'belong' to one in order to access the application. The business model here is that the organization or institution that created the team or workspace will pay a subscription fee.
The majority of community homepages I’ve seen are designed for the wrong audience.
People visiting your community homepage aren’t looking for an answer to a question. In the data of almost every public community I’ve worked with, the majority of people arrive at a specific discussion. They typed their question into Google and landed on a discussion (note – not the homepage!)
The majority of people visiting your homepage fall into one of two categories.
a) People who have clicked a link (probably your homepage). These folks are often newcomers to the topic/product/company and found the community in the ‘getting started’ experience.
b) People who are returning to the community. These folks have participated before and are visiting to see what’s new. They’re not going to spend a lot of time browsing, they simply need to know if there’s anything interesting happening.
In an ideal world, you can use the information gathered about them (i.e. did they join within the past month or not) to show entirely different community experiences.
When that’s not possible, you need to abide by a couple of rules here.
1) Keep newcomer content visible, but minimal. Once someone has seen the newcomer areas, they don’t need to visit again. Avoid the big ‘welcome’ banners/messages for the same reason. People ignore what they’ve already seen.
2) Create the definitive newcomer location (and link to it prominently from the homepage). Create a destination and set of resources to help newcomers get up to speed. Combine this with your knowledge base, member journeys, best practice examples, top newcomer tips, and safe places where newcomers can ask their beginner-level questions. Your community should offer the definitive place for the newcomer experience.
3) Showcase the latest activity prominently above the fold. This should go without saying these days. The easier you make the community to scan to see what’s new, the more engagement you will get. It’s impossible to sustain a highly responsive community if it’s hard to see everything that’s new at a glance.
4) Highlight the ‘MVP/champions’ program. If people are already visiting frequently to see what’s new, they’re the most likely group to be interested in taking things up a notch. In the majority of communities the majority of members don’t even know a top member program exists. Make it visible (or make members aware they’re eligible to apply) after [x] contributes in the community.
5) Highlight high-signal, low-noise, content at the advanced level. Things like release notes, latest additions to the knowledge base, new announcements, a digest of the top tips/upcoming events is extremely useful for this audience.
This is far from a comprehensive list, but you get the idea. The people coming to your homepage are complete newcomers (who need some guidance) and returning visitors who need to see what’s fresh (and useful) to keep returning.
Today, Firefox is launching Colorways, a new feature that allows our users to express their most authentic selves and to bring them joy while browsing the web. As we challenge what the browser has been, and expand and define the vision of what Firefox browser is and can be, part of that challenge is to ask ourselves “who is it for and who can use it easily and feel included in the experience?”
We caught up with Mikal Lewis, Senior Director, Product Management for Firefox, to hear more about his vision for Firefox and the impetus for launching Colorways.
Introducing new Colorways for Firefox 94
Can you speak more to your vision for Firefox — what’s happening now, and what’s exciting about where it is headed?
Privacy has been part of our vision from day one and is always going to be part of what we deliver on in our product. We’re making the connection that a safe and joyful internet is a colorful one, and ultimately we want to connect with the people that make the internet a colorful place. We know Firefox users are aware that other browsers and tools exist that they could use for being online, leveraging the internet and getting things done. But they come to rely on Firefox in many ways as their personal browser of choice in large part because of the experience our privacy features offer, but now also because of the joy we can help provide in different ways. So our vision of Firefox is to help those customers continue to have a world-class experience and get more from the internet every day with less compromises that come with the internet.
Why make color-based customization a top priority for a product like a web browser?
We know that we are spending more time in this digital ecosystem — not the concrete jungle, but the digital jungle. So much more of our life is flowing through what have historically been these gray boxes. And we don’t really tolerate this type of what I would say are one-size-fits-all tools anywhere else in our lives. And so, it just feels like a natural extension to allow people to make this tool that they’re leveraging every day feel more of their own, to feel fresh, to be exciting, to just bring in that small moment of delight to their day.
We identified that color is a way to connect with people across all divides (and we have research that people respond positively to it) — it is a universal language that transcends the boundaries of our diverse verbal languages. And we chose “Colorways” rather than “themes” to show we are branching out from our language of “browser” to speak the language of everyday life and everyday users. This is about more than just installing a new “theme,” which really doesn’t have much meaning to most people.
Why is it important for you that people who use Firefox should have these customizable choices?
Using the web is fun! The web is fun, it should be fun. The only way you get on the web should not be by choosing your different colored gray box. The web is a rich tapestry. Why does it only have to be one way? Why can’t you have this delight and joy that you bring to the experience? And specifically with how much we use the web and rely on it every day. That is the core story and a big grounding reason for this: because it’s fun.
New Colorways for Firefox 94
What body of research guided you to developing these color-based customizations in a browser? What have you learned from early conversations with users?
I think it was a hypothesis that I had early on. Coming from the fashion industry, the limited edition drop, to those outside the industry, could really feel like this money grab where you’re like, “Doing this one special…” But for people who love fashion and people who love expression, it’s so special and it has so much evocative meaning to people. You’ll hear customers talk about a shirt like, “That color is just… If this was a slightly darker shade of blue, I’d be okay with it,” or, “If this yellow was a little bit more subdued, I’d be okay with it.” Knowing we select our fashion as well as the tools to navigate our days, we’ve begun to hypothesize about how we can bring more expression into Firefox, more things to choose from that delight. It’s the same brain to evaluate our tools, choose an outfit, and navigate our day, so I’ve had the hypothesis that people are interested in customizing their tools and making it more of their own, potentially the same way they choose an outfit.
But what really guided this specific release was that it’s just what we learned when we did our redesign in June. When we gave people the opportunity to choose a new way to express themselves with color in their browsing experience, their engagement shot through the roof. I mean, the adoption of certain themes increased by more than 200%. We came up with the question, what if we really lean into this? What would that experience look like, and what is the experience that we can give our customers? Those all came together and have formed the basis for this release, which we think is really just the beginning of making sure that the experience of using Firefox is your expression of Firefox.
When we gave people the opportunity to choose a new way to express themselves with color in their browsing experience, their engagement shot through the roof. I mean, the adoption of certain themes increased by more than 200%.
Mikal Lewis on the impetus for creating new Colorways for Firefox 94
What inspired you to make the jump from fashion and retail into a tech company, which is best known for their web browser?
Mozilla most reminds me, through my career, of my time at Nordstrom, which is another purpose-driven company. At Nordstrom, I helped people express their best selves every day. And as I think about tech more broadly and what I wanted to do next, I felt like there was a gap in both purpose-driven companies, but also there was also a need for our tools to address the whole body experience of what it means to be a person. What I mean is: the tools are usable and provide functionality, but especially ones that we use every day like the browser, actually become extensions of ourselves. I have felt like there were some really great parallels in terms of how the retail environment and shopping experience is both a task and something that brings people joy.
Tell us about your personal style.
I was always really into fashion and relatively on the cutting edge, and joining Nordstrom actually forced me to be a little bit more reflective about my style. I’ve leaned more into normcore, which for me focuses on quality fashion products, and specifically a lot of textures. And while my wardrobe may be monochromatic, that has actually made fashion a little bit more fun and almost challenging for me because it really has to be the right piece to really be a tool of expression, while also being monochrome. I was told that I would not survive the heat in an all-black wardrobe when I moved to Texas, but it has stuck around.
Which fashion designers or artists do you admire and why?
Two fashion designers that have caught my eye for their attention to detail and use of color are Christopher John Rogers, Vince, as well as visual artist Felipe Pantone. You saw CJR all over the Met Gala, and now at a major retailer like Target, which brings runway fashion to the masses and makes it accessible to everyone. A company like Vince has caught my eye for a while because of what they’re doing with really, really simple fashion garments. They are creating interest in high-quality fashion products that are actually really fashion-forward, but at the same time, sticking with a relatively subdued set of constraints. Felipe Pantone is an artist, not a fashion designer, and I love his work because it feels like a collision between an analog past and a digitized future. That resonates with me and others who grew up with tech and the internet. He also has a wonderful quote that ties really well to our Colorways update: “Color only happens because of light, and light is the only reason why life happens. Light and color are the very essence of visual art. Thanks to television, computers, and modern lighting, our perception of light and color has changed completely.”
Is there a parallel between designing products for tech companies and those within the fashion industry? If so, what is it to you?
One thing about the Firefox experience that is the same with fashion is that our experience is always going to be fresh. We’re never going to be static. And so whether it’s Colorways or other exciting experiences we unlock for our Firefox customers, you should expect that there’s always going to be a fresh way of expressing yourself with Firefox.
What experience do you want to create for users?
As we expand and define the vision of what a browser is and can be and challenge what it has been, part of that challenge is who it is for and who can use it easily and feel included in the experience. It’s not just for highly technical people. From the perspective of the Firefox product we believe that the internet must enrich lives, and we seek to do this in all of our core product planning in various ways. One way is to seek to bring more of a visceral, felt, emotive level to the browser experience that feels more connected to all people, more inclusive in general and more inclusive of experiences in the real world…we want to bring more of the external felt world to the digital experience.
How many more themes and Colorways are there?
In this release, there are 18 themes based on six Colorways with three experiences of each color — soft, balanced and bold. These Colorways are here for the next two product releases (they won’t go away if you’ve selected it). This is a limited-time release which is intended to embrace the “now moment.” We know colors trends are always changing to offer delight and excitement seasonally. So these will be spotlighted for two cycles of release in Firefox onboarding as limited time play to enjoy to spark more engagement and interest.
What’s next for Firefox colorways?
We’ll see. We’ll go where our customers take us. Colorways are just the start of a dialogue of our expression of Firefox, what we believe the experience of using the independent browser should be and could be. And we really look forward to hearing how our customers engage with it and where they’re interested in taking these Colorways experiences next.
You can download the latest version of Firefox here to experience the all new Colorways yourself!
Today, we are rolling out a brand new Firefox homepage on Android and iOS, designed for those on-the-go, short bursts of online interactions that are constantly interrupted by life.
With this new Firefox homepage we wanted to lift that heavy mental burden of remembering to finish those halfway read articles or vacation research until you are ready to jump back and finish those tasks. We’ve simplified and organized your on-the-go mobile experiences into one central location, complete with new features to help you ignore the online noise and focus on what matters to you. Welcome to your new Firefox homepage, delivering a fast, intuitive and useful browser!
In May 2021, we redesigned the browsing experience with a new Firefox release. In today’s mobile release we continue to put our users first and today introduce a completely new homepage experience that helps you accomplish what you set out to do whenever you go online. The new Firefox home is a re-entry point for you to access previously opened tabs with articles you have yet to finish, sites you’ve bookmarked, and search histories organized by topics so you can find it all in one central spot. Today’s mobile release is just the beginning as we plan to roll out more features that build on this experience. Check out the new homepage, a place to organize your thoughts and interests:
Everything you need to get on with your mobile online life
Based on user feedback we designed the new Firefox homepage and organized it in a way that helps you jump right back into what you care more about, saving you time and headspace, and removing the visual clutter that can often leave us feeling overwhelmed. These new features include:
Jump back into your last open tab: There are moments in your day when you are reading an article and suddenly get distracted. To help you get back to what you were doing in a split second, we’ve created an easy way to jump back into your last open active tab or just as quickly start a new search.
Jump back into your last open active tab
Recently saved bookmarks are now easily available from your homepage: In the past, users would use bookmarks or browser history to get to information they wanted to review later. To make it easy to get to your bookmarks, we’ve added the most recent bookmarks you’ve viewed to the Firefox homepage. For Firefox accounts users, you’ll also have your recently saved desktop bookmarks available to you on Firefox on mobile. You can also get to all of your bookmarks by clicking on Show All.
Recent searches grouped by topic: There are times when you go deep into a topic you’re researching like a city that you’re planning to travel to or that big ticket electronic item. Before you purchase those items, you search reviews and articles for some time. Instead of the gazillions tabs piling up on that topic, Firefox for Android now groups and lists them so you can easily get back into the flow of researching. We’ll keep the information readily available for you for 14 days.
Your recent searches grouped by topic
Clutter free tabs: In the physical world, a room full of unpacked boxes or a sink full of dishes is a sight that can make you feel overwhelmed before you’ve completed the task. Now, think about your mobile device and the visual clutter you encounter every day as you add more and more tabs throughout the week. We heard from users who kept tabs so they can go back to them at a later time but struggled with “tab clutter.” So, when we tested this new feature they saw the benefit as a useful and considerate reminder of what they haven’t looked at. Once you haven’t visited a tab within 14 days, we will move it to an “inactive state”. This means that you can still hold on and go back to those tabs but they will no longer clutter your view and you can easily close them when you’re ready. This feature will only be available on Android and will be available on iOS in the coming months.
Choose your own Pocket stories: After our relaunch of Firefox for Android, we heard from our users that they loved exploring new articles from Pocket but wanted content that was tailored to their area of interest. Today, we are introducing a variety of topics that you can choose from to customize your Pocket feed to what matches your interests. The customizable feature will only be available on Android. On iOS, users continue to get Pocket stories but the customizable feature is not yet available.
Pocket stories customized by you
We’re excited to make all of these exciting new features available to you today. In order to try them out, please make sure to get the fast, private browser for your desktop and mobile: Firefox on Android and Firefox for iOS.
There are a few things that make me proud of being part of the Purism team. One of them is the philosophy behind a company that makes respectful hardware and software, that is fully owned by the people using it. Another truly beautiful aspect of Purism (which I discovered over the years) is how Purism […]
According to researchers, the average person has about 6,200 thoughts throughout the day. That’s a lot of time spent bouncing between random thought bubbles like:
Naturally, you hop on the web to get answers. If you want to keep your random web browsing separate and private, Firefox Focus is THE companion phone app for all those forget-about-it moments online.
Q: Firefox or Firefox Focus?
A: Both!
Using Firefox as your default mobile browser makes life’s busy moments easier and more efficient with tabs and bookmarks synced between devices, secure password management, streamlined reader mode and a customizable home screen.
No matter what mobile browser you use — Firefox, Chrome or Safari — Focus can work right alongside it. Focus is the ideal companion app for instant privacy so you can do quick searches on the go and then tap the trash button or close the app to make your browser history and searches disappear behind the purple curtain.
Automatic tracking protection means speed and privacy on mobile
The latest version of Firefox Focus comes with a refreshed, distraction-free design and the same privacy protections you’ve come to expect from us.
The protections dashboard from Firefox for desktop now appears in Focus for your mobile devices. Tap the shield icon to expose how many trackers the Focus app has blocked from snooping on you. Here’s the best part — automatic tracking protection and ad blocking means your pages load faster while your data stays private.
Instant privacy that’s also customizable
You can also set Focus as your go-to app for return visits to your favorite sites, going beyond the quick and private searches. Just pin those sites to your Focus home screen, so you can quickly hop back in as soon as you open the app.
Firefox’s famous Enhanced Tracking Protection is enabled automatically in Focus to block known advertising, analytics, and social trackers and scripts. That’s easy to modify by tapping on the shield icon and adjusting the sliders. Even if you do change your privacy settings, you can do so with the knowledge that your browsing history along with any cookies that try to follow you are deleted from your device when you tap the Focus trash can.
When it comes to quick privacy while browsing the web, tap the Firefox Focus icon on your phone. Go ahead and mull some of 6,200 thoughts that pop into your head each day, and keep it to yourself. With Firefox Focus, your business isn’t our business.
Olivia decided again this year that is was important to dress in a new Halloween costume every day in the week leading up to Halloween.
Depending on how you look at it, this was a delightful burst of creative energy to be nurtured and encouraged, a stressful week of Olympic-level parenting, or Catherine’s karmic last laugh for my leaving her in charge of the wardrobe department all those years. Or all three.
Her Stars for Life support workers were extremely helpful with securing supplies; we could not have pulled it off without them
Last year, in the long shadow of the Great Quit of 2018, I rejoined Instagram. I wasn’t interested in actually posting anything, I was just getting frustrated following links to photos on Instagram and being told I needed an account to view them.
So, under the account qusqpr, I’ve been quietly lurking. I’ve not posted anything. I have no friends. I’ve never commented or liked anything. I’ve never slid into anyone’s DMs.
And yet somehow I managed to violate Instagram’s Terms of Service, under which egregious acts include:
…artificially collecting likes, followers or shares, posting repetitive content or repeatedly contacting people for commercial purposes without their consent…
None of which, clearly, I’ve done.
My only recourse to replatform was to take a photo of my face and a piece of paper with a unique code that was emailed to me. So far this has resulted in absolutely nothing.
I’ve got very little to lose here: no photos, no friends, no reputation, no business interest. The worst that’s happened is that the door to the creativity of a select few creative friends has been slammed shut.
More than anything, I’m curious to know what digital tripwire I triggered with my lethargy.
Max Braithwaite wrote a profile of Mary Grannan for Maclean’s in 1947. Grannan’s Just Mary stories on the CBC played an outsized role in the childhood of my parents’ generation.
Mary gets her ideas for her stories from what she sees about her. For instance she was recently walking with a friend along Dundas Street in Toronto when she noticed a church steeple without a top.
“I wonder where the weathercock went off that steeple,” the friend remarked.
“I’ll tell you next Sunday,” Mary assured her. And she did in “The Strange Adventures of Lucy Littlemouse,” which featured a mouse with a new bonnet who wanted to be of some use in the world and who climbed up on the church steeple, gnawed the golden weathercock loose, and took his place with disastrous results.
One of the gifts—actually maybe the only gift—of having your partner up and die on you is that it’s a complete reset for what’s the worst thing that could happen!?
It has taken a long time for me to conceive of this as a gift, but I’m coming around, and committing (usually very) small acts of heretofore inconceivable bravery.
Today I found myself with a slightly bruised heart, and instead of crawling under the covers, I decided instead to level up, and went to Laurie Murphy’s Improv Drop-in Class at the Haviland Club.
I was terrified at the prospect, and, to be honest, I almost bolted, even as I was climbing the stairs up to the front door.
But I didn’t bolt.
I did walk in the front door.
And joined a small but hearty band of two others, improv newbies each of us, in 90 minutes of improvisational derring-do.
And I loved it.
Perhaps not surprising for someone who’s long dreamed of joining a competitive charades league. But charades is an individual sport where improv is a team sport, and absolutely everything that was great about tonight had to do with being vulnerable with strangers.
It was exactly what I needed.
Laurie’s classes are drop-in, run every Monday night in November from 7:00 p.m. to 8:30 p.m., and are $25 a night. She proved a patient, encouraging teacher who helped us all stretch out of our comfort zones.
During the bombing of Nagasaki and Hiroshima, a man by the name of Tsutomu Yamaguchi managed, in a feat of massive misfortune (or good fortune), to be present at both atomic bomb detonations. He was working in Hiroshima for Mitsubishi Heavy Industries when the first atom bomb was dropped on August 6th. He dove into …
I've built a command-line tool called s3-credentials to solve a problem that's been frustrating me for ages: how to quickly and easily create AWS credentials (an access key and secret key) that have permission to read or write from just a single S3 bucket.
The TLDR version
To create a new S3 bucket and generate credentials for reading and writing to it:
% pip install s3-credentials
% s3-credentials create demo-bucket-for-simonwillison-blog-post --create-bucket
Created bucket: demo-bucket-for-simonwillison-blog-post
Created user: 's3.read-write.demo-bucket-for-simonwillison-blog-post' with permissions boundary: 'arn:aws:iam::aws:policy/AmazonS3FullAccess'
Attached policy s3.read-write.demo-bucket-for-simonwillison-blog-post to user s3.read-write.demo-bucket-for-simonwillison-blog-post
Created access key for user: s3.read-write.demo-bucket-for-simonwillison-blog-post
{
"UserName": "s3.read-write.demo-bucket-for-simonwillison-blog-post",
"AccessKeyId": "AKIAWXFXAIOZHY6WAJSF",
"Status": "Active",
"SecretAccessKey": "...",
"CreateDate": "2021-12-06 23:54:08+00:00"
}
You can now use the that AccessKeyId and SecretAccessKey to read and write files in that bucket.
The need for bucket credentials for S3
I'm an enormous fan of Amazon S3: I've been using it for fifteen years now (since the launch in 2006) and it's my all-time favourite cloud service: it's cheap, reliable and basically indestructible.
You need two credentials to make API calls to S3: an AWS_ACCESS_KEY_ID and a AWS_SECRET_ACCESS_KEY.
Since I often end up adding these credentials to projects hosted in different environments, I'm not at all keen on using my root-level credentials here: usually a project works against just one dedicated S3 bucket, so ideally I would like to create dedicated credentials that are limited to just that bucket.
Creating those credentials is surprisingly difficult!
Dogsheep Photos
The last time I solved this problem was for my Dogsheep Photos project. I built a tool that uploads all of my photos from Apple Photos to my own dedicated S3 bucket, and extracts the photo metadata into a SQLite database. This means I can do some really cool tricks using SQL to analyze my photos, as described in Using SQL to find my best photo of a pelican according to Apple Photos.
The photos are stored in a S3 private bucket, with a custom proxy in front of them that I can use to grant access to specific photographs via a signed URL.
For the proxy, I decided to create dedicated credentials that were allowed to make read-only requests to my private S3 bucket.
I made detailed notes along the way as I figured out to do that. It was really hard! There's one step where you literally have to hand-edit a JSON policy document that looks like this (replace dogsheep-photos-simon with your own bucket name) and paste that into the AWS web console:
I set myself an ambition to try and fix this at some point in the future (that was in April 2020).
Today I found myself wanting new bucket credentials, so I could play with Litestream. I decided to solve this problem once and for all.
I've also been meaning to really get my head around Amazon's IAM permission model for years, and this felt like a great excuse to figure it out through writing code.
The process in full
Here are the steps you need to take in order to get long-lasting credentials for accessing a specific S3 bucket.
Create an S3 bucket
Create a new, dedicated user. You need a user and not a role because long-lasting AWS credentials cannot be created for roles - and we want credentials we can use in a project without constantly needing to update them.
Assign an "inline policy" to that user granting them read-only or read-write access to the specific S3 bucket - this is the JSON format shown above.
Create AWS credentials for that user.
There are plenty of other ways you can achieve this: you can add permissions to a group and assign that user to a group, or you can create a named "managed policy" and attach that to the user. But using an inline policy seems to be the simplest of the available options.
Using the boto3 Python client library for AWS this sequence converts to the following API calls:
import boto3
import json
s3 = boto3.client("s3")
iam = boto3.client("iam")
username = "my-new-user"
bucket_name = "my-new-bucket"
policy_name = "user-can-access-bucket"
policy_document = {
"... that big JSON document ...": ""
}
# Create the bucket
s3.create_bucket(Bucket=bucket_name)
# Create the user
iam.create_user(UserName=username)
# Assign the policy to the user
iam.put_user_policy(
PolicyDocument=json.dumps(policy_document),
PolicyName=policy_name,
UserName=username,
)
# Retrieve and print the credentials
response = iam.create_access_key(
UserName=username,
)
print(response["AccessKey"])
Turning it into a CLI tool
I never want to have to figure out how to do this again, so I decided to build a tool around it.
It's available through PyPI, so you can install it using:
% pip install s3-credentials
The main command is s3-credentials create, which runs through the above sequence of steps.
To create read-only credentials for my existing static.niche-museums.com bucket I can run the following:
% s3-credentials create static.niche-museums.com --read-only
Created user: s3.read-only.static.niche-museums.com with permissions boundary: arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
Attached policy s3.read-only.static.niche-museums.com to user s3.read-only.static.niche-museums.com
Created access key for user: s3.read-only.static.niche-museums.com
{
"UserName": "s3.read-only.static.niche-museums.com",
"AccessKeyId": "AKIAWXFXAIOZJ26NEGBN",
"Status": "Active",
"SecretAccessKey": "...",
"CreateDate": "2021-11-03 03:21:12+00:00"
}
The command shows each step as it executes, and at the end it outputs the newly created access key and secret key.
It defaults to creating a user with a username that reflects what it will be able to do: s3.read-only.static.niche-museums.com. You can pass --username something to specify a custom username instead.
If you omit the --read-only flag it will create a user with read and write access to the bucket. There's also a --write-only flag which creates a user that can write to but not read from the bucket - useful for use-cases like logging or backup scripts.
The README has full documentation on the various other options, plus details of the other s3-credentials utility commands list-users, list-buckets, list-user-policies and whoami.
Learned along the way
This really was a fantastic project for deepening my understanding of S3, IAM and how it all fits together. A few extra points I picked up:
AWS users can be created with something called a permissions boundary. This is an advanced security feature which lets a user be restricted to a set of maximum permissions - for example, only allowed to interact with S3, not any other AWS service.
Pemissions boundaries do not themselves grant permissions - a user will not be able to do anything until extra policies are added to their account. It instead acts as defense in depth, setting an upper limit to what a user can do no matter what other policies are applied to them.
There's one big catch: the value you set for a permissions boundary is a very weakly documented ARN string - the boto3 documentation simply calls it "The ARN of the policy that is used to set the permissions boundary for the user". I used GitHub code search to dig up some examples, and found arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess and arn:aws:iam::aws:policy/AmazonS3FullAccess to be the ones most relevant to my project. This random file appears to contain more.
Those JSON policy documents really are the dark secret magic that holds AWS together. Finding trustworthy examples of read-only, read-write and write-only policies for specific S3 buckets was not at all easy. I made detailed notes in this comment thread - the policies I went with are baked into the policies.py file in the s3-credentials repository. If you know your way around IAM I would love to hear your feedback on the policies I ended up using!
Writing automated tests for code that makes extensive use of boto3 - such that those tests don't make any real HTTP requests to the API - is a bit fiddly. I explored a few options for this - potential candidates included the botocore.stub.Stubber class and the VCR.py class for saving and replaying HTTP traffic (see this TIL). I ended up going with Python's Mock class, via pytest-mock - here's another TIL on the pattern I used for that. (Update: Jeff Triplett pointed me to moto which looks like a really great solution for this.)
Feedback from AWS experts wanted
The tool I've built solves my specific problem pretty well. I'm nervous about it though: I am by no means an IAM expert, and I'm somewhat paranoid that I may have made a dumb mistake and baked it into the tooling.
As such, the README currently carries a warning that you should review what the tool is doing carefully before trusting it against your own AWS account!
If you are an AWS expert, you can help: I have an open issue requesting expert feedback, and I'd love to hear from people with deep experience who can either validate that my approach is sound or help explain what I'm doing wrong and how the process can be fixed.
The 30-Day Map Challenge is on again, and I’m hoping to be able to scrounge some time to get an entry for each day. Day 2 is lines (Day 1 was posted on Twitter only) and — while I’m hoping to focus on saving U.S. democracy for the majority of the entries, today’s is a short one that shows all the walks/hikes/boats we took during our Iceland vacation.
I use HealthFit to export data (automagically) from all my Apple Watch, Garmin, and Peloton activities, and have it auto-sync to iCloud, which means I have instant access to all the Garmin FIT files it creates in ~/Library/Mobile Documents/iCloud~com~altifondo~HealthFit/.
We can use {FITFileR} to read in those files, turn the points into lines, and plot them all on a {leaflet} map, so I can get an interactive view into the paths.
If I had more time, I’d add activity names and other clickable statistics in popups, which is pretty straightforward in {leaflet}.
Comments in code hopefully explain the workflow:
library(sf)
library(FITfileR) # remotes::install_github("grimbough/FITfileR")
library(leaflet)
library(tidyverse)
# get a listing of all the files for when we were in Iceland
list.files(
path = "~/Library/Mobile Documents/iCloud~com~altifondo~HealthFit/Documents",
pattern = "(2021-07-3[01]|2021-08-0[1-9])",
full.names = TRUE
) %>%
map(
~readFitFile(.x) %>% # read the file in
records() %>% # turn into something we can then bind into a data frame
bind_rows() %>% # bind ^^ into a data frame!
mutate(file = basename(.x)) # add the file info in case we want to eventually make a popup of information
) -> iceland_fit_files
# look at the data
iceland_fit_files[[1]]
## # A tibble: 2,210 × 12
## timestamp position_lat position_long gps_accuracy altitude distance speed temperature heart_rate cadence
## <dttm> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2021-07-30 06:28:26 64.2 -21.9 2 21 318. 0.221 13 116 NA
## 2 2021-07-30 06:28:27 64.2 -21.9 2 21 318. 0.521 13 116 NA
## 3 2021-07-30 06:28:28 64.2 -21.9 2 21 319. 0.792 13 116 NA
## 4 2021-07-30 06:28:47 64.2 -21.9 2 19.4 338. 0.217 13 118 NA
## 5 2021-07-30 06:28:48 64.2 -21.9 2 19.2 338. 0.147 13 118 NA
## 6 2021-07-30 06:28:49 64.2 -21.9 2 19 338. 0.109 13 117 NA
## 7 2021-07-30 06:28:50 64.2 -21.9 2 19 338. 0.076 13 117 NA
## 8 2021-07-30 06:28:51 64.2 -21.9 2 18.8 338. 0.036 13 116 NA
## 9 2021-07-30 06:28:52 64.2 -21.9 2 18.6 338. 0.153 13 115 NA
## 10 2021-07-30 06:28:53 64.2 -21.9 2 18.4 339. 0.393 13 115 NA
## # … with 2,200 more rows, and 2 more variables: fractional_cadence <dbl>, file <chr>
iceland_fit_files[map_lgl(iceland_fit_files, has_name, "position_long")] %>% # only want activities with geo data
map(
~.x %>%
filter(!is.na(position_long), !is.na(position_lat)) %>% # {sf} hates NAs
st_as_sf(
coords = c("position_long", "position_lat"), # turn the data frame into an {sf} object
crs = 4326
)
) %>%
bind_rows() %>% # this makes one big data frame
group_by(file) %>% # which we can turn into individual geometries
summarise( # with the epic summarise() function
m = max(distance)
) %>%
st_cast("LINESTRING") -> paths # and then turn the points into linestrings
# let's take a look
paths
## Simple feature collection with 33 features and 2 fields
## Geometry type: LINESTRING
## Dimension: XY
## Bounding box: xmin: -23.92788 ymin: 63.40121 xmax: -16.18086 ymax: 65.08101
## Geodetic CRS: WGS 84
## # A tibble: 33 × 3
## file m geometry
## <chr> <dbl> <LINESTRING [°]>
## 1 2021-07-30-062401-Walking-Chetzmoka.fit 2807. (-21.94386 64.15495, -21.94382 64.15497, -21.94384 64.15496, -21.94388 64.…
## 2 2021-07-30-101146-Walking-Chetzmoka.fit 1191. (-21.93504 64.14761, -21.93502 64.1476, -21.93503 64.14761, -21.93501 64.1…
## 3 2021-07-30-105706-Walking-Chetzmoka.fit 1554. (-21.91706 64.12906, -21.91704 64.12905, -21.91702 64.12905, -21.917 64.12…
## 4 2021-07-30-143247-Walking-Chetzmoka.fit 1620. (-21.94977 64.15683, -21.94978 64.15685, -21.94979 64.15686, -21.94995 64.…
## 5 2021-07-31-122122-Walking-Chetzmoka.fit 702. (-22.26431 64.7628, -22.26463 64.76297, -22.26527 64.76332, -22.26496 64.7…
## 6 2021-07-31-131832-Walking-Chetzmoka.fit 2084. (-22.84353 64.90553, -22.84351 64.90553, -22.84349 64.90553, -22.84347 64.…
## 7 2021-07-31-182725-Walking-Chetzmoka.fit 578. (-22.72256 65.0809, -22.72255 65.0809, -22.72254 65.08089, -22.72252 65.08…
## 8 2021-08-01-105420-Walking-Chetzmoka.fit 1210. (-23.63732 64.79827, -23.6373 64.79829, -23.6373 64.79829, -23.6373 64.798…
## 9 2021-08-01-142847-Walking-Chetzmoka.fit 2385. (-23.80382 64.73048, -23.8038 64.73047, -23.8038 64.73047, -23.8038 64.730…
## 10 2021-08-01-165642-Walking-Chetzmoka.fit 423. (-23.92745 64.85198, -23.92749 64.85197, -23.92747 64.85197, -23.92746 64.…
## # … with 23 more rows
# make room locally
dir.create("~/projects/2021-iceland", showWarnings = FALSE)
# save the widget out
paths %>%
filter(!grepl("2021-08-10", file)) %>%
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(color = "green") %>%
htmlwidgets::saveWidget(
file = "~/projects/2021-iceland/index.html",
selfcontained = FALSE
)
# rsync it out to my website
#
This is the (static) overview:
And, this is a zoom into our boating tour of a glacier lagoon:
Hit up the widget to see where we did our Iceland activities this summer!
'Dualism' is the view that the mind and body are separate, dual, entities. A few years back, not long after I wrote my Consciousness paper, I tried a class presentation that started from a non-dualist perspective. The pushback was intense, and I was convinced not to try that approach again. In the surveys reported in this article by Jussi Valtonen people mostly agreed with a dualist perspective. However, "although people undoubtedly do reveal dualistic tendencies in surveys, they also endorse the view that the mind is not separable from the brain." The proposal here is that people develop "hybrid intuitive theories combining aspects of both." I'm not sure I agree. I think people simply aren't consistent with their beliefs, and will pick and chose one belief system or another depending on context. It's something researchers do all the time (though they misleadingly call this a 'lens') and I don't see why the rest of us can't.
Facebook and Twitter represent the v1 of Social Networking; it's a bad copy of the analog world, whereas v2 is something unique to digital, and a lot more promising.
It’s a rather motley crew. One is a nurse, another a lawyer, a third an investment adviser. There are three programmers, a soldier, and a data scientist. An entrepreneur, a consultant, and, I just found out today, a nuclear engineer. The ring leaders are a hotel clerk and a person we have known for years, yet no one knows his name, and then there is me.
We talk about all kinds of things: video games and COVID, family frustrations and bad bosses, and whether Aaron Rodgers is better than Patrick Mahomes (if only Rodgers had had Andy Reid). And, of course, the Milwaukee Bucks. That’s the reason we are in the same group, after all, which is another way of noting that all of us — except the Kansas City Chiefs fan — are originally from Wisconsin. And yet many of us had never met each other until a couple of years ago, when we attended a Bucks game together; the physical world was a trailing indicator.
Home on the Internet
While my Twitter bio has changed over the years, the last sentence has, as far as I can remember, stayed the same:
The proximate cause for that sentence was the fact I lived in Asia, even as my Twitter-personae was firmly rooted in the United States, whether that be because of my longstanding interest in technology, or enthusiastic support of Wisconsin sports teams. And yet, when I moved back to the United States, my interest and relationship to Taiwan remained, and Twitter specifically and the Internet broadly were a way to stay connected; the bio still fit.
For a time that bio described Twitter as well: for a particular type of person, someone who thrived on information — the more the better! — Twitter was a place to not simply learn but to find people like yourself. That is how the “Fiefdom”, the name the aforementioned motley crew gave ourselves, found each other. We all loved the Bucks — or, perhaps more accurately, loved to complain about the Bucks — but while Twitter helped us find each other, over the past few years the medium has grown too noisy, performative, and combative to be a place to simply hang out; we have a group DM, which, frankly, sucks, but at least it is our own place.
That’s not my only online community: while the writing of Stratechery is a solo affair, building new features like the Daily Update Podcast or simply dealing with ongoing administrative affairs requires a team that is scattered around the world; we hang out in Slack. Another group of tech enthusiast friends is in another Slack, and a third, primarily folks from Silicon Valley, is in WhatsApp. Meanwhile, I have friends and family centered in Wisconsin (we use iMessage), and, of course Taiwan (LINE for family, WhatsApp for friends). The end result is something I am proud of:
The pride arises from a piece of advice I received when I announced I was moving back to Taiwan seven years ago: a mentor was worried about how I would find the support and friendship everyone needs if I were living halfway around the world; he told me that while it wouldn’t be ideal, perhaps I could piece together friendships in different spaces as a way to make do. In fact, not only have I managed to do exactly that, I firmly believe the outcome is a superior one, and reason for optimism in a tech landscape sorely in need of it.
Social Networking 1.0
Earlier this year in The TikTok War I explained why the first version of products on the Internet were usually a bit of a dud:
It is always tricky to look at the analog world if you are trying to understand the digital one. When it comes to designing products, a pattern you see repeatedly is copying what came before, poorly, and only later creating something native to the medium.
Consider text: given that newspapers monetized by placing advertisements next to news stories, the first websites tried to monetize by — you guessed it — placing advertisements next to news stories. This worked, but not particularly well; publishers talked about print dollars and digital dimes, and later mobile pennies. Sure, the Internet drew attention, but it just didn’t monetize well.
What changed was the feed, something uniquely enabled by digital. Whereas a newspaper had to be defined up-front, such that it could be printed and distributed at scale, a feed is tailored to the individual in real-time — and so are the advertisements. Suddenly it was print that was worth pennies, while the Internet generally and mobile especially were worth more than newspapers ever were.
The most famous feed in technology is the Facebook feed, which through its algorithmic magic made the lives of your friends and family seem far more tantalizing than they probably were in reality. The result was a social network that the FTC, in a lawsuit filed last week, claimed was a monopoly:
Facebook holds monopoly power in the market for personal social networking services (“personal social networking” or “personal social networking services”) in the United States, which it enjoys primarily through its control of the largest and most profitable social network in the world, known internally at Facebook as “Facebook Blue,” and to much of the world simply as “Facebook.”
The FTC focused on “friends and family”:
As Facebook has long recognized, its personal social networking monopoly is protected by high barriers to entry, including strong network effects. In particular, because a personal social network is generally more valuable to a user when more of that user’s friends and family are already members, a new entrant faces significant difficulties in attracting a sufficient user base to compete with Facebook.
Facebook always had an inherent advantage over Twitter in that its network, at least in the beginning, was based on networks that already existed in the offline world, namely, people you already knew. That made the service immediately approachable and useful for basically everyone. Twitter, on the other hand, was more about following people you didn’t know based on your interests. This theoretically applied to everyone as well, but uncovering those interests and building an appropriate list of people to follow had to be done from scratch.
I increasingly wonder, though, how much of my previous Facebook analysis was wrong not because I misunderstood Facebook, but because I overestimated Twitter. I noted last week while writing about the FTC’s lawsuit in the Daily Update:
I would prefer a world where the [Instagram] deal didn’t happen. As I have noted I believe that absent a deal there would be more competition in the advertising space, and more consumer-focused startups.
At the same time, I do have serious rule-of-law reservations about undoing a deal eight years on, particularly given the fact that it appears that the advertising-supported space is doing better than I thought a few years ago: Snapchat in particular is building a great business, LinkedIn is doing much better, and TikTok is obviously on its way. Honestly, I wonder to what extent Twitter’s endemic poor management made the advertising space seem worse than it actually was?
I would go further: Twitter’s incompetence didn’t simply make Facebook’s advertising business look more dominant than it should have; it led all of us — including the FTC — to miss the point that friends and family was Social Networking 1.0: something imported from the analog world that, as time goes on, will be viewed as inferior to the far richer universe that is Social Networking 2.0.
Twitter Incompetence and Identities
Go back to the Fiefdom that I started with, and the terrible experience that are Twitter group direct messages. It’s impossible to keep your place, so if you follow a link or answer another message, you are dropped to the bottom of the thread. Of course there is no searching, and no third-party API so that someone else could do a better job. The thread also frequently fails to update in real-time, meaning you sometimes reply to questions that have already been answered, which is unfortunate because there is no way to respond to individual messages. It’s honestly awful.
And yet, we use it anyway, because that is where our friendship group formed around our shared interest in the Bucks, and it is the interest graph where Twitter has always had the potential to differentiate itself; in 2015, when it was already clear that the company had missed its opportunity to be great, I wrote in Twitter and What Might Have Been:
What makes Twitter the company valuable is not Twitter the app or 140 characters or @names or anything else having to do with the product: rather, it’s the interest graph that is nearly priceless. More specifically, it is Twitter identities and the understanding that can be gleaned from how those identities are used and how they interact that matters.
Identities — plural — referred to the many users of Twitter, but a second thing that is interesting about my Twitter group is that @benthompson is not a member; my alter-ego, @notechben is. I created that account — which, I will tell you right now, is pretty annoying to follow — so that I could tweet freely during basketball games without losing followers from my primary Twitter account. After all, just because you like my takes on tech, it does not necessarily follow that you like my takes on sports.
What I increasingly realize, though, is that separating my identities on Twitter does not mean a lesser experience, but a far superior one; social interaction in any medium is always a balance between self-expression and the accommodation of others, which means that in the analog world it is a constant struggle to strike a balance between being myself and annoying everyone around me at some point or another. The magic of the Internet, though, is that you can be whatever you want to be:
Image from The New Yorker cartoon by Peter Steiner, 1993
There are clear downsides to this property of the Internet, particularly on public forums like Twitter, where trolls can attack anyone, bots can astroturf any subject, and even nation-states can seek to incite civil unrest. That’s the thing, though: public broadcast mediums are Social Networking 1.0 as well.
From v1 to v2
Remember that the key characteristic of v1 digital products is that they simply copy what already exists offline. For Facebook that meant digitizing connections between friends and family, and for Twitter it meant broadcasting conversations as if you were sitting at a bar. Such literal translations, though, have limits: Facebook soon found it necessary to augment content from friends and family with professionally produced content from publishers, while public Twitter conversation has disappeared in the face of performative putdowns and political proclamations. The problem is that digital makes analog goods worse: a lot of what your friends and family believe is boring or objectionable, and conversations constrained by the geography of a bar simply don’t translate to a worldwide audience.
What truly makes a category is v2: products that are only possible because of the unique properties of digital. That, for example, is why TikTok is such a threat to Facebook’s hold on attention; again from The TikTok War:
While it is easy for users to create text updates, and, with the rise of smartphones, even easier to create pictures, producing video is difficult. Until recently, phone cameras were even worse at video than they were photos, but more importantly, compelling video takes some degree of planning and skill. The chances of your typical Facebook user having a network full of accomplished videographers is slim, and remember, when it comes to showing user-generated content, Facebook is constrained by who your friends are…
ByteDance’s 2016 launch of Douyin — the Chinese version of TikTok — revealed another, even more important benefit to relying purely on the algorithm: by expanding the library of available video from those made by your network to any video made by anyone on the service, Douyin/TikTok leverages the sheer scale of user-generated content to generate far more compelling content than professionals could ever generate, and relies on its algorithms to ensure that users are only seeing the cream of the crop.
TikTok’s “network”, such that it is, is the entire world, which means its content is better than Facebook’s could ever be, which means it is a far better attention sink than Facebook could ever be.
Meanwhile, on the other extreme, public broadcasting by default — whether that broadcasting be to the entire world, as on Twitter, or to all of your friends and family, as on Facebook — actually constrains your ability to communicate, because you run into the conflict I described earlier: your “whole self”, versus others’ only somewhat overlapping interests.
This is where messaging is a much more natural fit, and, as far as the depth of your network is concerned, messaging services are just as much a threat to v1 social networks connectivity as TikTok is to Facebook’s hold on attention: I can simultaneously be a Bucks fan with the Fiefdom, be a tech enthusiast with my Slack group, explore ideas with my WhatsApp group, and talk politics with my trusted friends. The fact that I am not my whole self in any of these groups is a feature, not a bug, and one that is uniquely made possible by digital.
Social Media Optimism
Facebook, despite its immense success, has been far more attuned to the inadequacies of its social networking model than Twitter has, and has been pushing aggressively to adapt its products to a v2 world. That includes its shift to emphasizing Groups in 2017, and its focus on messaging, including the spin-out of Messenger, the acquisition of WhatsApp, and its attempts to unify the messaging experience across its platforms.
Even that, though, suggests that the company can’t entirely escape its roots: having one identity is a core principle for Facebook, which is great for advertising if nothing else, but at odds with the desire of many to be different parts of themselves to different people in different contexts. Twitter, meanwhile, is unlikely to ever recover from its missed opportunity to dominate the interest graph.
Instead, the role for both products will be as a bridge between attention-focused products on one side, and private interest-defined trusted groups on the other.
Their networks still have value, but primarily as a tool for distribution and reach of content that will increasingly be created in one place, and discussed in another.1
This, needless to say, doesn’t seem like much of a monopoly, certainly not one worth reaching back in time to retroactively change the rules of the game. What is encouraging, though, is that this view also gives hope for the seemingly hopeless climate that has been fostered by v1 social networks. The problem with forcing everyone to be their “whole selves” for the world, whether they want to or not, is that it becomes strikingly difficult to find common ground. After all, there is always something about everyone that is annoying or off-putting.
On the flipside, to the extent that v2 social networking allows people to be themselves in all the different ways they wish to be, the more likely it is they become close to people who see other parts of the world in ways that differ from their own. Critically, though, unlike Facebook or Twitter, that exposure happens in an environment of trust that encourages understanding, not posturing.
This has been the case for me: I am in private groups with plenty of folks that I disagree with about a whole host of things, but because we share a common interest, and are ok being trusted friends on that vector, I have learned a lot about why they believe what they believe about a bunch of issues. I think it helps my analysis, and I think it makes me a better citizen. That certainly isn’t our expectation of social media today, but that is because we are stuck on v1.
Instagram and Snapchat, in my estimation, are fully self-contained networks that encapsulate content generation, distribution, and discussion; they are the integrated version of this model ↩
Every editor has had this experience: deep into a manuscript, you find yourself reading a familiar passage. Sure enough, it duplicates content that was earlier in the manuscript. Don’t just delete it. Ask yourself why it’s there, and use that knowledge to make the manuscript better. Why writers repeat themselves All writers repeat information in … Continued
I have some strong opinions about Clubhouse sound and how to get the most out of it. I want to share this with you in two parts. Listeners and creators.
Always disable Spatial Audio for a better listening experience.
Listeners
As a listener, don’t mess around with Audio Quality settings. You can only make things worse. Leave it on Normal. What you can do for a better sound quality is to switch off Spatial Audio in the app. Tap on your own profile picture in the upper right corner and then again on the gear icon at the same place. Then disable Spatial Audio. Leave the room and come back into the room. This setting is sticky until Clubhouse issues an update and messes with this setting. Try to keep Spatial Audio off.
When you change Audio Quality from Normal to Music Mode, you are gaining nothing as a listener, but you give up speech optimizations when you open your microphone. You lose echo cancellation which prevents sound looping from your speakers back into Clubhouse. Do not flash your microphone when you get excited. It makes a terrible noise and irritates the musician.
Creators
As a creator, make sure you have a proper mix-minus setup and that you are not sending the Clubhouse output back. If you see the ring around your avatar flashing when somebody else performs, you are looping their sound back. This gets much worse when you go into Music Mode.
In short: Only go to Music Mode when you know you have a perfect setup.
If you have cable headphones it does not matter whether you are in the audience or on stage. If you have regular Bluetooth headphones, the sound on the stage is horrible. This happens because your headphones will use a telephony profile when they enable the microphone. Only professional conference headphones that use Wideband audio are safe from that.
Moderators will lure you to the stage to boost their rooms. They are not outright lying that the sound on the stage is better. They often do not know. Try it yourself.
You can still help a room by going to the stage and then returning to the audience after a minute. That is what I do when I am not plugged in.
Our current approach to mobility — gas-powered personal transportation for all — is clearly unsustainable. But the horizon of possibilities to replace it remains chronically short-term and restricted by a bone-deep social commitment to consumer choice. The car, even in the most optimistic futurist proposals, remains an irreplaceable fact of life. Perhaps we can “green” the car, but the car remains, and so does the world it’s created: an ever-expanding universe of individual car ownership and private transportation.
The worst collateral effects of this status quo, meanwhile, show few signs of relenting. An estimated 38,680 people died in motor vehicle traffic crashes in 2020, up more than seven percent from the year prior despite the pandemic and the slight decline in driving miles — which is set to reverse in the coming years, according to data from the Federal Highway Administration. And looming over this is climate change: Transportation accounts for roughly a third of greenhouse gas emissions in the U.S. — with “light-duty vehicles” such as cars and small trucks making up more than half of that contribution.
As pioneering consumers green themselves, the wider system drags on as before
Before 2020 and its Covid-related slump, global auto production had trended upward for the past 20 years. This is despite the increasing number of battery-powered vehicles like scooters and e-bikes that have found their way onto roads and the demarcated “paths” and “lanes” that parallel them in cities progressive enough to claw back a sliver of real estate from gas-powered traffic. But weren’t the new options supposed to replace cars and not merely diversify the mix of vehicles in an ever increasing pool? Over the past decade, both planners and technologists have pitched concepts such as ridesharing (app-based services that match independent contract drivers with passengers) and micro-mobility (any small, lightweight vehicle that runs at less than 15 miles per hour) as possible alternatives to our dangerous and environmentally destructive transportation system. The assumption is that if given a compelling option, more and more people will choose to change their habits rather than continue driving themselves in their own cars. This is baked into countless think-tank-produced renderings where bucolic pathways spring up alongside highways filled with cars that no longer spew exhaust.
The imagined transformation is often expected to proceed along clear technology-driven trajectories, when in reality the different possibilities will compete with one another and uptake will be unevenly distributed along any number of axes. Presently, on many American streets, possible futures seem to accumulate rather than yield to one another. It’s one thing to imagine a given technology leading us toward a desired or logical endpoint — like a fleet of fine-tuned autonomous vehicles bringing a chaotic, dangerous road network to heel, as imagined in Steven Spielberg’s Minority Report — but another to assume that the path of any one technological solution will happen in a vacuum.
That isn’t to say that a decade of tech-sector-led innovation in mobility hasn’t had an impact on transportation — only that it hasn’t led to the kind of firm break with the past that many imagined. Riding a conventional bicycle down the Broadway bike lane in Manhattan recently, I found myself jostled between a sea of motorized devices, from high-end uni-wheels and e-scooters to souped-up e-bikes ridden by overworked delivery riders, all of which were capable of sustained speeds of over 15 miles per hour. Such speeds are hard to contend with in an already overcrowded bike lane. Traffic in the lane vacillated between too fast and gridlocked, orderly and chaotic, empty and overflowing. Decades of staggered local investment produced one of the best bike-lane networks in the U.S., but now an influx in electric vehicles and delivery riders is helping reproduce the same road conditions that planners had attempted to insulate regular bicyclists from.
If any one of these technologies was actively replacing automobiles — or even putting a dent in the current socioeconomic regime of overwhelming auto dependence — the temporary crowding on bike lanes may be well worth the inconvenience. In this scenario, one could imagine a process in which road users happily consent to the government taking more and more space from automobiles for alternatives that are less damaging to the environment and cheaper to access. Consumer choice and social change thus form a virtuous cycle, as the former drives the latter to the kinds of bold transformations that in time could remake the country’s infrastructure, as cars once did with the highway system.
Judging by the past decade of rollouts, pilots, and partial market penetration, however, it’s possible that these will remain alternatives rather than full replacements — simply more options added to a growing stack, each serving a new niche. Indeed, industry backers of micro-mobility imply as much all the time. Wedged between their far-reaching promises of a slower, greener future are tantalizing hints — at least to their potential investors — of a separate goal: expansion into new markets and new territory.
The most powerful transformation under way on American streets isn’t substitution but accretion, accumulation, addition
Micromobility Industries — an industry group founded on the premise that “transport is moving from monolithic all-in-one owned cars into ever-smaller on-demand vehicles that are optimized for journey length, payload, fleet use, utilization, energy consumed and space allocated” — has pressed the case that “what is today fixed as automobility was once emergent and is as fragile as any modes which came before it — the horse, the canal barge, and the locomotive.” This “impermanence of modes” should give us hope, the group argues, that micro-mobility, like the car, could win the day. Yet, a different post from the same group celebrates the idea that “more people are riding more vehicles further and for more reasons than ever.” This language doesn’t suggest a reckoning with the existing system but rather a coming surfeit of transportation options.
Planners and transportation researchers are largely invested in the premise that new personal transportation modes are capable of substituting for older ones, above all cars. A recent study from C2SMART, a research center funded by the U.S. Department of Transportation, found that a deployment of 2,000 scooters in New York City with 75,000 daily trips could replace 32 percent of carpool trips, 7.2 percent of taxi trips, and 1.8 percent of auto trips. Without scrutinizing the study’s complicated and ultimately speculative methodology, it can be hard to question these kinds of optimistic data points, but they are more rooted in faith than their authors are perhaps willing to admit. Underlying their projections is a firm belief in the possibility of technology-led change.
While other studies also point to a “substitution effect” at the municipal scale, at the macro level, auto dominance continues apace. CitiBike is one of the most successful bike share systems in the country, but in the time since it has operated in New York City, household vehicle registrations have increased by 8.8 percent, increasing the total ratio of car ownership to population in the city to levels higher than the 1990s. In the more car-centric city of Oakland, California, meanwhile, car ownership increased by one of the highest percentages in the country, despite serving as a hotbed for e-scooter rollouts.
The explosion in ride hailing, meanwhile, has increased vehicle-for-hire use in New York City by 90 percent since 2010, tracking with a national uptick in road congestion that even Uber and Lyft admit is related to their app-based services. The most powerful transformation under way on American streets isn’t substitution but accretion, accumulation, addition. Rather than social transformation, we get endless expansion. In a world where a radical break with the past is desperately needed, this tendency only exacerbates our problems.
Micro-mobility industry boosters notably champion the “non-user,” the untapped market, the unidentified trendsetters who will lead the charge into a new transportation paradigm. The denizens of rapidly growing global cities are of particular interest, as they won’t have the money or space or carbon credits to own a car. They pitch their products not as alternatives to automobiles but as a kind of extender. Where the car cannot reach, either due to new environmental restrictions or just the sheer limits of space in dense megacities, the scooter, the e-bike, and the uni-wheel are there to make sure speed, convenience, and the fluidity of commerce are not sacrificed.
Nowhere is this more apparent than on busy urban bike lanes. Designed as a parallel road network for bicyclists to ride apart from high-speed car traffic, they are now becoming commercial highways for delivery riders compelled by hidden algorithms and the competition between their absentee employers to accelerate, accelerate, accelerate. The war between delivery platforms is waged in fractal increments, flooding out of overcapacity into under-capacity, from thoroughfares to backstreets, as markets become space, and space the market. Competition seizes upon the new transit possibilities only to push them to the maximum, so that no congestion is relieved, and any substitution effect is overwhelmed by the creation of new markets. All we get are busier and busier roads, with piecemeal additions that only induce more demand. Adding more lanes to highways has never eased traffic congestion but intensified it, while distracting from the underlying causes that produce it. Micro-mobility options threaten to have a similar effect, an apparent solution that in practice sustains the ways of life that have yielded the flawed transportation system they’re trying to fix.
Between far-reaching promises of a greener future are tantalizing hints of a separate goal: expansion into new markets and territory — more options added to a growing stack
This is apparent when battery-powered vehicles are treated not as a necessary shift in approach but as a style trend, a way for early adopters to stand out. On the other end of the battery-powered-vehicle market from delivery riders, wealthier people are buying into a consumer fad more than they are spurring a transportation revolution. “This Unagi scooter freakin’ jams. It makes just buzzing around so much fun,” former presidential candidate Andrew Yang said in a promotional video for an up-and-coming scooter company. Similar to the Tesla car in its early incarnation, owning a scooter is presented as less about saving the world than affiliating with cutting-edge technology and culture for its own sake — a way to bring a little piece of Silicon Valley’s utopian dreams into your garage. As pioneering consumers green themselves, the wider system drags on as before.
None of this should discourage us from attempting to adopt new transportation technologies. But a theory of change that gives too much credit to consumer choice misses the need for a bolder set of transformations requiring social coordination that sometimes precedes the mass adoption of a new technology. In other words, sometimes you have to build it for them to come, and that requires a social vision beyond simply waiting for the latest tech to draw consumers away from the comforts of the status quo.
Unless scooters are joined with a more ambitious, holistic social reorientation away from automobiles, they are more likely to end up as just another vehicle on an ever-growing scrap heap. Scooters, e-bikes, and even old-fashioned pedal-powered bikes must come with more designated trails and lanes that reclaim space from automobiles. They need to effectively and on a large scale take back space from the automobile. Yes, this is a zero-sum argument, but in transportation — bound as it is by the physical world — that’s exactly how it needs to be framed to properly prioritize desperately needed changes. Something, somewhere, has to give, and the world has to turn down a different path.
Like autonomous vehicles, scooters and e-bikes are persuasive as harbingers of a new transportation future precisely because they embody the famous maxim from Giuseppe Tomasi di Lampedusa’s novel The Leopard: “Everything must change for everything to remain the same.” Right now, staying the same means more transportation choices with the same promises of convenience, speed, and autonomy — but a little greener, for the kids — within the same weathering infrastructural territories. Bike lanes and roads built decades ago will be forced to bear most of the weight of all possible futures and every techno-choice on the market, regardless of their capacity or state of maintenance. The micro-mobility industry may want endless options, but there is just one road network, and the competitions being waged on its surface are heating up despite its physical limits.
If planners and well-meaning technologists — or the wider public that follows their lead in conceptualizing the future of transportation — can’t recognize the real commercial imperatives and emergent consumer demands (cheap autonomous travel in a world of higher costs and greater restrictions) fueling the adoption of new modes of transportation like e-scooters and e-bikes, they might find themselves indulging in a bland consumerist utopianism, in which venerating choice actually denies choice. On the streets, in the throngs of competing mobilities, more and faster become the only option.
For a decade, Facebook (now known as Meta) used facial recognition to tag millions of photos with the identities of the people in them. Now the company says it’s ceasing the algorithm and deleting a billion face prints. Here’s why I don’t trust them. This is a fraught moment for Meta/Facebook, given the leaked documents … Continued
After having explained how to read box plots to thousands of workshop participants, I now believe that they’re poorly conceived (box plots, not workshop participants ;-) ), which makes this classic chart type unnecessarily unintuitive, hard to grasp, and prone to misinterpretation. This has caused innumerable distribution-based insights to fail to land with audiences who weren’t willing or able to grasp them. Alternative chart types are virtually always easier to learn how to read, more informative, or both.
For the last several years, I have tried to describe
Microsoft as "the Big Tech company that developers trust the most",
which I believe to be a market
position that exists and which offers competitive advantage.
I'll admit to some hopefulness and wishful thinking, but most of the time since 2013-ish,
you have seemed to be heading in that direction.
But lately you're not making things easy for me.
Yesterday you announced an org change in which GitHub
is now reporting into a different executive. And out here in the
community, mostly what we know (which may be incorrect) about this executive
is that she (reportedly) tried at the last minute to take a feature out
of open source cross-platform .NET and make it proprietary
and Windows-only.
I'm just saying -- if you look only at the information
most people outside of Microsoft can see, how could we not
wonder if GitHub is going to be okay?
I am fond of the old saying that "trust arrives on foot and departs
on a horse". Life teaches us, often painfully, that it is much easier to lose trust
than to build it.
And GitHub is an extreme case of this principle.
Much of the industry now hosts their code there.
People outside the Microsoft ecosystem use GitHub.
Your competitors use GitHub.
For GitHub, trust arrives on foot and departs
on a rocket at warp speed.
In terms of trust and reputation, as the owner of GitHub, you have basically
zero room for error.
In a business unit, I'm sure it is common to think of
competition in terms of features. And there is truth in that.
For example, GitHub Actions is an awesome feature which brings you a
competitive advantage.
But developers today have a lot of choices, and trustworthiness
is one of the many factors they consider.
Trustworthiness is a feature.
I ask you to consider the benefits of being known by developers as the most
trustworthy big tech company.
For GitHub, this is basically the floor, but I claim that such a reputation
would be a competitive asset for DevDiv (and therefore Azure) as well.
Look at your peer competitors -- it seems like
the market position is yours if you want it.
But the occupant of that market position has gotta be really careful to treat their reputation with
developers as something precious.
BTW, I am decidedly not an open source zealot. I am not saying you
have to make everything free. You can certainly continue with a mix of proprietary stuff and open source
stuff. By all means, keep making truckloads of money.
But make sure that you show developers that you want them to be successful,
and stay consistent with expectations you have set.