# 16 Oct 2018, 11:22AM: NYC Comptroller Town Hall, And Reflections on Constraint:
Last night I suited up and went to a local town hall held by the office of New York City's Comptroller, Scott Stringer. (I am in the fuzzy foreground of the second photo.) After very short introductions from the venue host (CUNY Law School), Stringer and his staff, we went straight to questions!
I appreciated a lot of things about the event. There was an ASL translator on the stage, and when residents wanted to ask questions in Spanish, a staffer translated between Spanish and English for them. Stringer kept the lines moving by answering folks' questions but also limiting them to one question each (or they could head to the back of the line to get another turn), and interrupted rambly rants by asking for a question he could answer. And if people spoke up with complaints, he promised: fill out a constituent intake form and give it to one of my staffers, and we will call you by noon tomorrow. And free bottled water, next to the paper copies of audit reports and outreach flyers, was a nice touch.
I asked the first question: how can we save money in IT procurement? Perhaps by banding together in consortia with other municipalities to have better leverage with vendors, or making or using open source software? I fear I was not very clear and was misunderstood. Stringer replied by talking about the need to modernize the procurement process itself, which is evidently still paper-based and slow, and about how this depends on revising the City Charter. Wendy Garcia (the office's Chief Diversity Officer) followed up by suggesting that I myself might want to come to their office so they could help my business figure out where our services matched up with the city's contracting needs. [I spoke with her after the town hall to clarify: no, I'm not trying to get business for Changeset here, I'm just interested in the issue! (Maybe I misguided them by introducing myself as a consultant and wearing a suit. The suit was just to respect the occasion! Next time maybe I will wear a stylish dress and cardigan, which seems to be what middle-class women activists wear to these things??)]
I filled out a constituent intake form, and, sure enough, just before 10:30am today, I got a call from their office asking me to email a specific staffer with more details! Well done.
Other questions and answers included a wide variety of concerns: older guy who doesn't like streets getting named after politicians, frequent meeting questioner guy whose stuff was taken (and never returned) when he was arrested in 2015, the Major Capital Improvement rule landlords use to get around rent control, Department of Education buildings that perhaps ought to be reused instead of sold, divesting NYC's pension fund of fossil fuel, Stringer's political ambitions, an idea for stop sign speed sensors (like traffic light speed sensors), the closure of the jail on Rikers Island, helping immigrants pay the costs of applying for citizenship, sewer problems, the placements of homeless shelters, and helping residents use their on-time rent payments to count towards credit scores. My neighbors care about a lot of different things. I took a few notes and mostly sketched. There was this one power outlet mechanism embedded in the desk right in front of me and I drew it like five times and never got the angles to look right.
One interesting thing I learned: when the Comptroller's office audits a city department, it usually takes about 18 months, so they only go in and do an audit if they think it's likely they'll find something.
I went home and commented on the proposed National Park Service rule change "Special Regulations, Areas of the National Park System, National Capital Region, Special Events and Demonstrations". I commented on 4 things: making the swimming/wading rules more consistent, removing the "duplicative" criterion, the "atmosphere of contemplation" expansion, and the proposed permit application fees. And then I wrote a thing to prepare for a meeting today, while texting with a friend who's going through a rough time.
I don't know anyone who's not going through some kind of rough time. Or at least I can't think of any. If nothing else we have the awful "well, MY life is great, but the world is horrifying" awareness; it feels like we're betraying our neighbors when we enjoy our personal successes. I never know whether I'm doing enough; I have to define "enough" for myself, which feels audacious. Willow Brugh wrote about how she's implementing a concept I first heard about from Abi Sutherland in December 2016:
While I am pushing to find ways to gain (and deserve) greater influence in the world, those things which fall outside of my influence cannot be that which concerns me most. To do otherwise is a path to madness. I must trust that other capable people exist in the world, and that they are taking up their share just as I am taking up mine. As you are taking up yours.
# 09 Oct 2018, 12:12PM: Recent Diversions:
I went to a civic meeting the other day and sketched while listening, as I've been doing more and more lately. I had to try drawing a folding chair three times before I got the proportions and perspective mostly right. Also, it's surprising how soothing it is to draw super-repetitive shapes, like Venetian window blinds, and to indicate shadow or color with cross-hatching or fill dots.
On Sunday, Leonard and I saw a "Sam the American Eagle" compilation at the Museum of the Moving Image. Sam is amazing, as Leonard and I got to discuss in depth -- he's a minor character, but when you see 50 minutes of Sam in a row, you see interesting patterns. He's Nixon (eyebrows) and he's McCarthy ("I have here a list..."). He loves Wayne and Wanda partly because they're humanoid Muppets, not animals. He knows he's supposed to like classy old songs, education, decency, America, and Great Britain, but he has no capacity for analysis and no factual understanding of history or literature, and never enjoys a joke. He's lawful neutral; he doesn't care who gets hurt or helped, so long as everyone's deferring to authority and following rules. He's separated from his wife, and his kids don't talk to him. I watched The Colbert Report for years so I'm primed to appreciate this kind of character -- Colbert often described his character as a "well-intentioned, poorly informed high-status idiot".
(Watching a bunch of The Muppet Show also reminded me of how the Muppets influenced my basic approach to sketch comedy and acting. I am approximately a Muppet by default in most interpersonal interactions -- big facial expressions and whole-body reactions -- which was sometimes a bit of a trial for my director Aya.)
On Sunday I also got to play the game "Inhuman Conditions", which is crowdfunding on Kickstarter till this Thursday 11 October. I was first an investigator checking whether a suspect was a human or a robot. During this conversation I got to reply to a question with "I'll be the one asking the questions" which was thrilling. (Even though I lost that round - she was a robot after all, crap!) The next round, I was a suspect. How do you prove your humanity to an investigator? Try to be open about your imagination, your private life, your misapprehensions? Or is that exactly what a robot would do, to fool them??? A fun game.
# 06 Oct 2018, 12:20PM: Credits and References for "Python Grab Bag: A Set of Short Plays":
Today, at PyGotham 2018, Jason Owen and I presented "Python Grab Bag: A Set of Short Plays".* We predict a videorecording will be on PyVideo in the next few weeks.
This session is the latest in my line of non-traditional tech talks. I conceived of the idea. Thanks to Jason Owen for working on it with me - thinking of play topics, editing, rehearsing! I wrote almost all of these plays and he made them better. And, as we mentioned in "The Unvarnished Truth", we spent upwards of USD$1650 out of our own pockets on this session -- paying our director and audiovisual assistant, buying props, and renting rehearsal space. Probably closer to $1850 when it all comes in.
- our director, Aya Aziz
- Sarah Pavis for running sound and slides
- Dustin Ingram for a few cameos as an actor and for help with secondary A/V
- Mike Pirnat, Leonard Richardson, nycsubway.org, the Recurse Center, Elizabeth Yalkut, Betsy Haibel, Teresa Nielsen Hayden, James Vasile, Dave Anderson, Mark Smith, Sam Steinbock-Pratt, Andrea Parsons, and our preview audience for help writing, improving, scoring, rehearsing, illustrating, and making props for these plays
- the Neo-Futurists for their show "The Infinite Wrench" that we took as inspiration
- A. Jesse Jiryu Davis for being our session chair
- PyGotham and you for taking a chance on this ridiculous thing
In from import import import,** we mention Allison Kaptur's blog post on import and PyCon 2014 talk "Import-ant Decisions", and George London's PyGotham 2017 talk, "import madness # how to implement mergesort from scratch using only import statements".
In "A Proposal for Explaining PEPs", we briefly mention PEPs 347, 385, and 481, which moved Python development from CVS to Subversion to Mercurial to Git, and PEP 8000, which is working on governance questions.
In "GNU Mailman: A Pythonic Playlist", I discuss the history of Mailman release names.
"Generators: Taste the Freshness" draws on this explanation of generators in Python.
"This Is How We Do It" draws on this history of The Zen of Python, and on Larry Wall's "Perl, the first postmodern computer language".
"If Shakespeare Wrote Incident Reports" starts with a quote from Act I, Scene 5 of Hamlet.
"Code Review: Fast Forward and Back" is a summary of "Code Review, Forwards and Back" which originally appeared at PyGotham 2017 (video).
"Be A Better Bureaucrat: The Intellectual argparse Play" mentions James C. Scott's Seeing Like A State and David Graeber's The Utopia of Rules: On Technology, Stupidity, and the Secret Joys of Bureaucracy.
"The End (Of 2.7) Is Near (feat. Jason as Guido van Rossum)" starts by quoting Guido van Rossum's March 10, 2018 email to python-dev.
* Announcement, context, late-September reflections.
** For reference, in case the PyGotham 2018 site ever disappears, the play titles were:
- The Unvarnished Truth
- from import import import
- WHAT’S the DEAL with CLIENTS?
- A Play Entirely Full of Monty Python References
- A Proposal for Explaining PEPs
- GNU Mailman: A Pythonic Playlist
- Soup, Scrape, Sweep
- Generators: Taste the Freshness
- This Is How We Do It
- Cookie For Your Thoughts
- If Shakespeare Wrote Incident Reports
- Code Review: Fast Forward and Back
- When The Old Was New
- Things We Don’t Say At The Daily Standup Meeting
- The Relief of Reuse (The Colorful argparse Play)
- Be A Better Bureaucrat (The Intellectual argparse Play)
- Speaking Python
- The End (Of 2.7) Is Near (feat. Jason as Guido van Rossum)
# 04 Oct 2018, 04:42PM: Miscellaneous Recommendations:
# 03 Oct 2018, 05:16PM: Tidelift Is Paying Maintainers And, Potentially, Fixing the Economics of an Industry:
As the founder of Changeset Consulting, I keep my eye on consultancies and services in and near my niche, open source leadership, maintainership, and sustainability.* And I've known Luis Villa for years and got to work with him at Wikimedia. So yeah, I noticed when Tidelift announced its big new launch. And -- now, as a very-part-time consultant who helps Tidelift understand the Python world -- I am excited about their commitment to pay more than USD$1 million to maintainers (including "a guaranteed minimum $10,000 over the next 24 months to select projects").
Here's my take on the new Tidelift subscription model, the "lifter" role, and whom this works for.
For software businesses, this provides that missing vendor relationship, SLA, release cadence expectations, and general peace of mind for all of that unseen infrastructure you depend on. It's often easier for businesses -- of many sizes -- to pay a regular fee than to put open source project management work, dependency-updating, compliance checking, dependency security audits, or FLOSS volunteer relations on the engineering schedule.
For individual programmers and community-maintained open source projects, Tidelift is a potential source of substantial income. As a Pythonist, I hope to reach people who are currently core code contributors to open source projects in Python, especially on the Libraries.io digital infrastructure/unseen infrastructure/improve the bus factor lists. And I would like to reach projects like the ones Nathaniel Smith calls out in a recent post:
that (1) require a modest but non-trivial amount of sustained, focused attention, and (2) have an impact that is large, but broad and diffuse
and projects in the "wide open", "specialty library", and "upstream dependency" categories identified by the Open Tech Strategies report "Open Source Archetypes: A Framework For Purposeful Open Source".
For such people and projects, becoming a lifter is a promising model -- especially since the required tasks are fairly few, and are things maintainers should do anyway. I'm encouraged to see Jeff Forcier (maintainer of Fabric, Alabaster, and more) and Ned Batchelder's coverage.py getting onto the Tidelift platform.
And you can see estimated monthly income for your package right now. For some people, especially those whose healthcare doesn't depend on an employer, Tidelift payments plus some side consulting could be a sustainable, comfortable income.
Then there are folks like me whose contributions are only partially visible in commit logs (management, user support, testing, and so on), and groups that work together best as a team. Tidelift is also a potential source of income for us, but it's a little more complicated. Tidelift can send lifter payments to individuals, for-profits, and nonprofits, but: "If a package has multiple co-maintainers, you'll need to agree as a group on an approach." If you thought code of conduct conversations with your community were uncomfortable, wait till you bring up money! But, more seriously: I've been able to talk frankly with open source colleagues about thorny "who gets paid what?" questions, and if you're candid with your co-maintainers, the benefits may be pretty substantial. You can get advice on this conversation during the next live Tidelift web-based Q&A, Thursday, Oct. 11 at 2 p.m. Eastern Time (sign up at the bottom of the lifter info page).
Nonprofits, companies, and working groups that maintain projects can sign up now as lifters. Even if it's just a trickle of money right now, it might build over time and turn into enough to fund travel for an in-person sprint, contract work to improve continuous integration, an Outreachy internship, etc.
(One gap here: right now, Tidelift isn't great at supporting system-level packages and projects, like tools that get installed via apt or yum/DNF. I'm pretty sure that's something they're working on.)
What about noncommercial users or users who can't afford Tidelift subscriptions? The more lifters and subscribers sign up, the more those users benefit, too. Subscribers' funding means maintainers have time to make improvements that help everyone. And lifters agree to follow security, maintenance, and licensing best practices that also help everyone. Plus, Tidelift stewards libraries.io, a great resource for anyone who uses or develops open source (more on that). More money for Tidelift could mean libraries.io gets better too.
So I'm tooting a horn here and hoping more people sign up, because this is one of the more plausible ways open source sustainability could possibly work. Tidelift could be a real game-changer for the industry. Check it out.
* Examples: new competitors like Maintainer Mountaineer and OpenTeam, new funders like OSS Capital, and colleagues/referrals like Open Tech Strategies, VM Brasseur, Otter Tech, and Authentic Engine.
# 03 Oct 2018, 03:13PM: A Reasonably Fast Way To Construct A Writing Portfolio:
Someone in my network wanted guidance in building a professional (often software-related) writing portfolio for the first time -- they want to give other people a portfolio of work they've already done, so that those people can consider hiring them for paid writing gigs. This person wanted advice on what to choose, how to curate and structure and present the portfolio, and whether to keep it private or publish it somewhere public.
Here's some free advice on getting started with that. I'm sure there are better ways to do this and be more polished in the final presentation, but here's how I suggested they get started.
- Start by taking 1-2 hours to assemble a big rough list of what you've written, in the last 10 years or so, that you might conceivably want to share in this portfolio. Be wide and inclusive, and if this feels overwhelming, remember that this does not have to be comprehensive -- you just want samples of different categories (like "neighbor-friendly explanations of technical topics", "bug reports", "profiles of individual people", "replies to support requests", "nonfiction essays", "research papers", "public conference talks", "HOWTO tutorials", and so on).
- Decide whether this will be a public or private portfolio. If most of these pieces are ones you really don't want to share, online, with the public, under your wallet name, then you're going to be doing this as a private portfolio. Otherwise you'll turn this into a page or subsite of your public website, and you can mention and summarize the private pieces and say "available upon request".
- Select the best 1-3 examples for each category. This might involve digging because maybe now you'll remember another category or another piece.
- If it's a private portfolio, turn the whole thing into a giant PDF with chapter headings explaining what category each item is in. If it's public, do that, but also make a webpage -- Heidi Waterhouse's list and Betsy Haibel's list are straightforward examples you could use as patterns. If you want to be a little more explanatory and give the reader more guidance about the context for each piece, you could do something like what Lindsey Kuper does. And if you want to get really intense about it you could make something like what I've done with the Changeset Consulting "resources" page, with stock art!
- Every few months, review what you've written and see what you need to add to the portfolio. (I also keep a public mega-list of nonfiction and fiction, art, software, and zines I've made and a big list of my past talks, interviews, and stand-up comedy, which helps me when it's time to update the Resources page for Changeset.)
If you've been thinking of making a writing portfolio and putting it off, I hope this structure makes it more feasible.
# 20 Sep 2018, 11:18AM: I Joked That We Could Call Each Of The Mini-Plays 'What Are We Even Doing':
Last night I dreamed that I had to leave my home? hotel? and realized I had forgotten to don pants, and then realized I was supposed to get on a flight to Germany, and was trying to check in online within Google Docs on my phone.
Perhaps my creativity is so spent from writing and rehearsal for "Python Grab Bag" that it's really phoning it in for by-the-numbers anxiety dreams.
Yesterday was the first on-our-feet rehearsal. I'm so grateful that Jason and I hired our director, Neofuturist alumna Aya Aziz (more about her and her playwriting, acting, singing, and dancing -- as Aya Abdelaziz she also (sort of) portrayed me in a reading of the Aaron Swartz memorial play "Building A Real Boy" last year). The words are really coming to life as we speak them aloud and block the plays (decide who's moving and facing which way when) and figure out sound, light, props. Her direction is -- as I'd hoped -- making it much more likely that these will feel like theater, affect the audience both cerebrally and emotionally, not just slide away like an embarrassing middle school book report skit. (I am speaking here as someone whose only memory of Otto of the Silver Hand is that I wrote a rap about it for class.)
I fairly often feel an incredulous "what the hell are we even doing" feeling when I reflect on this weird freaking thing we're making. On one level it's the most logical thing in the world. It's a port from one venue to another; I've seen The Infinite Wrench dozens of times and we're adapting a Neofuturist theatrical approach to talk about what it's like to be a Python programmer. And I did a Neofuturist-inspired keynote at LibrePlanet last year, we did a play at PyGotham last year, and we maybe aren't even doing the most ambitious Python conference performance in recent memory -- K Lars Lohn's PyCon 2016 keynote was an intricately designed multimedia narrative of discovery and wonder. So even though the piece we are making and sharing is novel, we aren't straying THAT far from prior art.
But also, let's be real, there is a well-worn path of advice and examples to help a speaker talk about "how to do foo with bar" or "five ways to be better at managing people" or "open source is making a difference!" and if you give a kinda boring or redundant conference talk along those lines, it just slides into the rearview mirror. This weird thing we are working on will stand out. The optimal rate of criticism is not zero and I anticipate -- even if most of the audience enjoys it -- there will be at least a few people who think it's awful, a waste of time, takes a PyGotham slot that ought to have gone to a real talk, and think less of me for my bad judgment and poor skill. The chance of failure feels greater and the risk in failure feels higher.
This is part of what innovation feels like: whacking past vines with a stick, mostly but not 100% certain that this direction leads to a place worth finding, pattern-matching and guessing without a trail or a map. Risking failing. To quote Ramsey Nasser again,
When you're failing, you're exploring things that are in that grey area. That there may be interesting surprises there, or there may be things that you don't want, but you're willing... It's a sort of brave commitment to go there and to see what's out there. Failing is not wrong.
And perhaps the fact that I'm going ahead and wrestling with that fear, moving forward, instead of letting it stop me, is another reason my anxiety brain is all, "I give up. Uhhhhh, you're late for a flight and you forgot your pants. Oooooh scary! *finger-wiggles*"