# 07 May 2018, 02:32PM: Tentative Taxonomy of Tech Talk Narratives:
Several months ago, as I was talking with Michael Rehse (my actor programmer friend who initially advised me on the code review play), we talked about the intersection of theater and technical talks, and taxonomized tech presentations. He and I came up with some:
- the MacGyver
- I did this ridiculous thing and it worked!
- the Stephen King
- I underwent horrors!* (Perhaps in retrospect the better trope namer here is "hell house" because these talks often end "beware and avoid my fate!" in the same way as certain scare-you-into-acting-morally Halloween hell houses.)
- the Amazing Grace
- I once was lost but now am found! (On this theme in Julia Evans's early blogging.)
- the Bob Ross
- Here's how you do foo with bar! (Perhaps that's appropriate for hands-on workshops and This Old House is a better trope namer here for lecture-style presentations.)
- the Mr. Rogers factory tour
- Here's how foo turns into bar! A soothing exploration of a complicated machine, following input as it turns into output. Variant: Macaulay-style "The Way Things Work" exploded diagram.
I wonder what other large categories there are for this.
Separately from that "what kind of story is this" categorization, a tech talk can have varying amounts of Reading Rainbow/!!Con-style emphasis on the discovery of joy that I discussed in "Toward a !!Con Aesthetic".
* I would genuinely love to go to a talk where the speaker started: "I could a tale unfold whose lightest word / Would harrow up thy soul, freeze thy young blood, / Make thy two eyes like stars start from their spheres, / Thy knotted and combined locks to part, / And each particular hair to stand on end / Like quills upon the fretful porpentine." And then talked about, like, a database migration.
# 12 Apr 2018, 10:29AM: On Online Advice:
I'll be speaking on a panel, "Social Media in Theory and Praxis: What is at Stake Now?" at the City University of New York (CUNY) Graduate Center, in New York, NY, on Wednesday, April 18, 2018 (next week). It's partly about how "[u]se of digital platforms and tools like Facebook, Twitter, YouTube, Instagram, and Google has altered cultural production, political processes, economic activity, and individual habits." And recently I've been thinking about advice, and how blogging and other social media affect this very fundamental interpersonal act.
I am a giant weirdo. What works for me might not work for you, and vice versa. Advice is like a diet plan. Our gut biomes are so varied and poorly understood that very strange-sounding diets inevitably work for some fraction of the population, and commonplace diet advice inevitably snarls up some people's digestive tracts. Similarly, your career, your household, your everything exists in a unique ecosystem, and advice you find condescending or hurtful may work for someone else, or even you ten years ago or ten years from now.
Sometimes I don't explicitly-enough distinguish between things that work prescriptively for myself and things that make sense to prescribe for All Of Humanity, and between prescriptive truths and descriptive truths.
Sometimes things I write down, even publicly, are aspirational and prescriptive self-motivational slogans. Many years ago, reading Steve Pavlina's wacky blog, I learned the concept of "lies of success": statements that are descriptively false -- or at least nonprovable -- but prescriptively true, like, "if I work hard and try new approaches when I get stuck, I will learn this". No one can promise that "will", so, it's not 100% accurate descriptively. But you may as well choose your unprovable and nonfalsifiable beliefs to serve your growth.
In every social context, there are topics that are apt to cause discord if we so much as name them -- sometimes the very word stops some people from thinking, like "abortion" or "cybersecurity". And when I write publicly, especially online, I do not control what social context my words are read in. So, some of these topics we can talk about in terms of our own values if we are super careful to be subjective and descriptive rather than prescriptive, but sometimes I find it hard to frame the conversation productively.
It's salutary for me to remember the ways in which I am an unextrapolatable weirdo. I'm grateful to all y'all for reminding me, pushing back when I act like my gut biome is the world.
# 11 Apr 2018, 10:17PM: My LWN Story Summarizing PyPI's Overhaul:
This coming Monday, April 16th, we plan to flip the switch on the new PyPI and redirect https://pypi.python.org web browser requests and pip install requests so the codebase serving them is Warehouse (which is in beta right now at https://pypi.org). I'm proud of our team's work and hope you find it useful.
I haven't blogged here in a while, but I've been writing a lot, mostly announcements and explanations listed on, or a few hyperlinks away from, the onwiki index to my PyPI work. When I can't give people choices (and, unless your organization sets up a private package index/repository, PyPI can feel like the only game in town), I want to give them a lot of lead time to test, file bug reports, and migrate, and I want to provide backstory.
So: today LWN publishes a new article by me, "A new package index for Python". In it, I discuss security, policy, UX and developer experience changes in the 15+ years since PyPI's founding, new features (and deprecated old features) in Warehouse, and future plans. Plus: screenshots!
This summary should help occasional Python programmers understand why a new PyPI codebase is necessary, what's new, what features are going away, and what to expect in the near future.
If you aren't already a subscriber, you can use this subscriber link for the next week to read the article despite the LWN paywall. Thanks to LWN for the venue and the subscriber links, and thanks to Jake Edge in particular for thorough editing. Thanks to my Warehouse team for fact-checking me.
# 12 Mar 2018, 03:21PM: Request: Donate To the Tiptree Award Auction:
The James Tiptree, Jr. Literary Award encourages the exploration & expansion of gender, and holds a fundraising auction at WisCon each year. I'm the auctioneer, which is a pretty fun form of community service, and serve on the Tiptree Motherboard. We're seeking donations of objects to be auctioned -- handcrafts, books, memorabilia, games, and art, especially with scifi/fantasy or feminist elements, are welcome.
I would personally love to get some donations this year of types I haven't yet seen:
- Games of all sorts -- board games, card games, indie games, video games (we could auction off a Steam code or a USB stick)
- Handmade blank books
- Art commissions, e.g., "I will draw a portrait of you"
- DVDs or CDs of feminist media, e.g., a The Middleman box set
- Your secret recipe for a dish you consider wowzers
Some items I'll auction live from the stage. Some, people will buy directly from a cashier, at the Gathering on Friday afternoon or from the Direct Sale table at the auction. Some, folks will bid on via a silent auction throughout the con. And a few, we'll auction online. I wrote last year about what an award does
, and the reflections I've seen from winners of the Tiptree Awards and Fellowships tell me those honors are doing the job -- encouraging creators and fans to expand how we imagine gender -- and by donating to the auction, you're supporting that.
The auction will be Saturday night, May 26th, and will be about 90 minutes long. If you want to come and you're local to Madison, you can buy a day pass at the door (just to attend WisCon on Saturday) for about $25. And it's totally fine to come to the auction just to enjoy the show, and not to buy anything.
Please feel free to signal-boost this, and if you're donating please fill out the form by May 15th. Thank you.
# 11 Mar 2018, 10:42AM: Recent Debugging And Confidence:
I am proud of myself for some recent debugging I've done on and with codebases and tools that I hadn't worked on before.
A few weeks ago, I was sitting next to a friend who co-maintains a web app and hadn't looked at it for a while. The styling was screwy. I asked whether some CSS or JS he depended on had upgraded, like jQuery or something. He said no, his site hosted all its dependencies. I opened up the site and checked the Network tab in Firefox Developer Tools and saw that it pulled in Bootstrap from a CDN. Ah, one of the other maintainers had added that! And updates to Bootstrap had screwed up the page's styling.
That same day, as a freshly minted co-maintainer of twine (a utility to upload packages to PyPI), I investigated a problem with our CHANGELOG. Twine's changelog, as represented on Read The Docs (example) and when I built the docs locally, only displayed version number 1.4.0 (2014-12-12) and two associated GitHub issues. This was inaccurate since the source file changelog.rst had 70+ items and ran up to version 1.9.1 (2017-05-27). I figured out that this was happening because changelog.rst is meant to be formatted so the Sphinx extension releases (which I hadn't used before) can parse it, and the current file wasn't syntactically (or semantically) adhering to releases's conventions. (Since then, with advice and help from some folks, I've released Twine 1.10.0 and started a new maintainer checklist.)
And then, a couple days later, I fixed my friends' blog. Their front page had reverted to a ten-year-old index page. I had never touched Movable Type before and hadn't used their particular managed hosting web GUI before, but I poked around (and checked for backups before changing anything) and managed to figure it out: during a May 2008 outage, someone had hand-made an index.shtml page, which was now overriding the index.html page in the server config. I figured it out and found and fixed it.
My mom says that when I was a kid, I took apart alarm clocks and spare hose attachments and so on, and put them back together just fine. She once came upon me taking something apart, and when she drew breath to admonish me, I said, "Amma, if I don't take it apart, how do I know what is inside? Don't worry, amma, I'm just looking at it, I'll put it back together when I'm done," and I did. She told me that I took apart a mechanical alarm clock, carefully spreading all the parts out on some newspaper, and put it back together, and it didn't quite work properly, so I took it apart again and then put it back together, and it worked, and I jumped for joy and said "I fixed it!" (I still feel that way when I fix something.)
At some point along the way I feel like I lost that calm confidence in my abilities, that "things are made of stuff" and what one person made another can fix. But I have it again, now, at least for some bits of software, and some purely mechanical stuff (yesterday, helping friends move, deciding to break down a big empty cardboard box, responding to "but it's so big, it won't fit on the stack" with "we have knives"). It doesn't feel courageous at the time, just sensible, but then I look back and feel like a badass.
If I had to point to the single biggest cause of this regained confidence, I'd point to the Recurse Center, where I got way more comfortable with bravery and failure in programming.
# 11 Mar 2018, 10:14AM: Not Teetotal, But Teemostly:
Here's something I'm really embarrassed to write, but want to mark, and maybe it'll help someone.
I've cut way down on drinking alcohol and am very glad I have done so.
Quick context: when I was growing up, I thought alcohol was Wrong. My parents did not drink alcohol at all and I believed what they told me in DARE and promised I would never smoke, drink, or take any other drugs.
For most of my time in college I did not drink alcohol at all, and held booze-free parties. While in college I visited Russia, where I was over the legal drinking age, and cautiously tried booze, taking notes the first time to check how my perception and judgment were affected. In my twenties I tried it more and it became a normal part of my life into my thirties.
I never perceived myself to have a problem with alcohol. Maybe once every twelve to eighteen months I'd misjudge my capacity and get to the vomiting and hungover stages, and a few times I said something really embarrassing or got hurt while drunk, but overall I thought I was fine, especially after I made a personal rule to only have a single drink per night when at a work-related event. Every once in a while I would find that the frequency had gone up from once or twice a week to nearly a drink every evening, and would cut back to zero or near zero for a while.
Then, last year, I had two bad experiences just a few months from each other, where I misjudged and drank enough to upset my stomach. What's worse, the second of those times was just after a great hiking trip and made the bus trip back home super awful, and made me completely cancel my plans (with a friend I rarely see) for the next day. I decided I absolutely needed to switch to other stress relief/conviviality choices, and went teetotal.
A month later, one afternoon, I was coworking with some colleagues in a shared coworking space, and heard a group of men I didn't know making some mocking and disturbing misogynistic jokes. I asked them to stop (I think they did; at least I stopped hearing them) but decided to get a drink with my colleagues, after work, to deal with the leftover nerves. As I did so I realized it had been a month since my last drink. It was the ninth of October.
I decided to try keep going like that, and only drink alcohol on the ninth of the month. That's what I've done since then (I make exceptions to, e.g., have a few sips of champagne to toast at my friends' wedding, but nothing like an actual serving of alcohol).
It's going well. I do not get drunk on the ninth of the month; I have a drink with a meal with a friend, then maybe a second a few hours later with Leonard. All my friends and colleagues are cool with it (I have the kinds of colleagues who put together surveys of what nonalcoholic drinks conference attendees want). It doesn't bother me to see other people drinking in moderation. It feels weird enough to be an enjoyable meta-habit (playfulness being a good way for me to trick myself into doing something that might otherwise feel tedious). I'm able to exert my best judgment while socializing. I listened the other day to the "Say Why to Drugs" episode on "Dry January" and yeah, like a lot of drinkers who experiment with taking a month off from all alcohol, I also incidentally spend a bit less money and sleep a bit better. And US politics is still super awful, and sometimes I still feel overwhelmed at my TODO list, but I hear that little "a drink would be nice" voice and then I go drink some water or do something else.
A lot of people I admire and like don't drink at all, and a lot of people I admire and like drink in moderation way more frequently than I now do. I am just talking about my own experience (and am trying to be concise and bring myself to overcome my embarrassment enough to actually hit Publish).
# 06 Feb 2018, 09:48AM: The Ambition Taboo As Dark Matter:
PyCon just rejected my talk submission,* so I'll try to finish and post this draft that I've been tapping at for ages.
My current half-baked theory is that programmers who want any public recognition from our peers, recognition that meaningfully validates our personal mastery, basically have to do that through one of a few fora that therefore accrue less-spoken emotional freight. And two of those places are code review in open source projects** and proposal review in tech conference talk submissions, and the fact that we don't talk enough about the role of ambition when talking about these processes leads to unnecessary hurt feelings.
For context: We give talks for varied reasons. To teach, to make reusable documentation, to show off things we've made or things we know, to burnish our credentials and thus advance our careers, to serve our corporate brands' goals, to provide role models for underindexed folks from our demographics, to give a human face to a project and make it more approachable, it goes on.
A conference talk is a tool in a toolbox that has a lot of other tools in it. (The Recompiler, Linux Journal and LWN pay for articles, for instance.)
And conferences are more than lecture halls, of course -- they're networking opportunities, communities of practice, parties, vacations, sprints, and so on.
But when we talk about the particular pain or joy of having a talk accepted or rejected from a conference, there's an emotional valence here that isn't just about the usefulness of a talk or the community of a conference. We're talking about acceptance as a species of public professional recognition.
I've found it pretty useful to think about public professional recognition in the context of Dr. Anna Fels's book Necessary Dreams. She points out that the childhood or adolescent desire for fame is often a precursor to a more nuanced ambition, combining the urge to master some domain or skill with the desire for the recognition of one's peers or community. This influences how I think about awards, about job titles, and about encouraging technologists in the public interest, and about the job market's role in skill assessment.
So how can a programmer pursue public mastery validation? Here's what I see:***
- contributing to open source software (mastery validation: maintainers merging commits and thanking/crediting contributor for work)
- presenting at conferences (mastery validation: program committee accepting talk)
- posting comments to gamified platforms like Reddit, Hacker News, and Stack Overflow (mastery validation: upvotes and replies)
- publishing academic research (mastery validation: journal accepting paper, peers reviewing paper positively)
- writing books (mastery validation: publisher accepting & publishing book)
- starting and architecting technically challenging projects (mastery validation: skilled technologists cofounding with or working for you, or relying on or praising your work)
So, this stuff is fraught; let's not pretend it's not. And we get rejected sometimes by conferences and talk about it, try to take the perspective that we're collecting "no's", we remind others that even successful and frequent speakers get rejected a lot and you can choose not to give up. And we give each other tips on how to get better at proposing talks. And that's all useful. But there's also another level of advice I want to give, to repeat something I said last year:
I try not to say "don't get discouraged," because to me that sounds like telling someone not to cry or telling someone to calm down. It's a way of saying "stop feeling what you're feeling." Instead, I try to acknowledge that something is discouraging but also -- if the other person's ready to hear it -- that we can come back from that: your feelings are legitimate, and here are some ways to work with them.
Some advice I hear about bouncing back from a conference talk rejection involves formalizing, creating systems to use to get better at writing proposals (my own tips mostly fall into this category) -- after all, in programming, you can learn to make better and better things without directly interacting with or getting feedback from individuals. The code compiles, the unit tests pass. And that can be soothing, because you can get the feedback quickly and it's likely to be a flavor of fair. (But that computer rarely initiates the celebration, never empathizes with you about the specific hard thing you're doing or have just done, and rarely autocredentials you to do something else that has a real impact on others.)
To formalize and abstract something makes it in some ways safer; it's safer to say "I'm working to pass the [test]" or "I'm building a [hard thing] implementation" or "I'm submitting a talk to [conference]" than to say "I am working to gain the professional respect of my profession". But that is one motivation for people to submit talks to tech conferences and to feel good or bad about the talks they give.
So part of my advice to you is: go ahead and be honest with yourself about how you feel. Rejection can be hard, working to get an unaccountable gatekeeper's acceptance**** and failing to get public professional recognition in your chosen field is a cause of anxiety, and so on. Be honest about how discouraging that can feel, and why, and what you wanted that you didn't get.
And another part of my advice is that I will ask, like the annoying programmer I am: what problem are you trying to solve? Because there are probably a lot of ways there that don't involve this particular gatekeeper.
And the most annoyingly empowering part of my advice is: Humans created and run PyCon and TED and Foo Camp and all the other shiny prestigious things; you're a human and you could do so too. Especially if you acknowledge not just your own but others' ambition, and leverage it.
* Maybe we'll do it in an open space anyhow.
** Another blog post for another time!
*** I've left some things out here.
We have some awards, e.g., ACM Distinguished Member, that you might get if you work really hard for decades in certain fields. That feels too far away for the kind of thing I'm thinking about.
I've left out the possibility of being promoted at your job, because many technologists perceive engineering job promotions as not particularly correlating with the quality of one's work as a programmer, which means a promotion doesn't send a strong signal, understood by peers outside one's organization, of validation of programming mastery. Then again, if your organization is old enough or big enough, maybe the career ladder there does constitute a useful proxy for the mental models of the peers whose judgment you care about.
I've left out various certifications, diplomas and badges because I don't know of any that meaningfully signal validation of one's mastery as a programmer industry-wide. And there's a lot of stuff to parse out that I feel undecided about, e.g., I find it hard to distinguish the status symbol aspect of admission from the signal that the final credential sends. And: A lot of people in this industry find it impressive when someone has been admitted to certain postsecondary engineering programs, regardless of whether the person graduates. And: In my opinion, the Recurse Center is an experience that has an unfortunate and unintended reputation for gatekeeping on the basis of programming skill, such that a big subset of people who apply and are rejected experience this as an authoritative organization telling them that they are not good enough as programmers (and Google Summer of Code and Outreachy have a related problem).
Of course, go ahead, write your own blog post where you talk about how wrong I am about what I list or exclude, especially because I come from a particular corner of the tech industry and I'm sure there's stuff I don't perceive.
**** Some conferences' gatekeepers are more unaccountable than others'; regardless, the feeling from the rejectee's point of view is, I bet, mostly the same. And you can start your own conference or join the program committee of an existing conference to see what it's like from the other side of the desk and wield a bit of the power yourself.