# 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.
# 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.
# 04 Oct 2018, 04:42PM: Miscellaneous Recommendations:
# 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. [Edited 26 November to add: Video is up.]
[Edited 7 February to add: The script is now available, licensed CC-BY.]
Credits
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.
Thanks to:
- 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
References
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. It ends with a short clip from "Get Over It" by OK Go.
Slides & similar
"The Relief of Reuse (The Colorful argparse Play)" has a slide partway through, reading: "Jason switches to the robust, standardized, easy-to-use argparse library".
In general it's hard to see the slides on the videorecording, so here are the slide decks for "from import import import", "A Proposal for Explaining PEPs", "If Shakespeare Wrote Incident Reports", and "When The Old Was New".
In "Things We Don’t Say At The Daily Standup Meeting", the voiceover recording (kind of hard to hear on the recording) is us saying:
I don't understand what you just said.
I've done the same thing every day this week but I'm trying to find different words for it.
I can't concentrate on my work and I don't anticipate that changing till, best case, January 2021.
I feel like I got nothing done yesterday.
I am beyond stuck. I am drowning and I need help.
* 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)
[Edited to add on 26 November] and the play ordering was:
- GNU Mailman: A Pythonic Playlist (#6)
- Things We Don’t Say At The Daily Standup Meeting (#14)
- A Proposal for Explaining PEPs (#5)
- The End (Of 2.7) Is Near (feat. Jason as Guido van Rossum) (#18)
- WHAT’S the DEAL with CLIENTS? (#3)
- from import import import (#2)
- A Play Entirely Full of Monty Python References (#4)
- The Relief of Reuse (The Colorful argparse Play) (#15)
- Speaking Python (#17)
- Generators: Taste the Freshness (#8)
- When The Old Was New (#13)
- The Unvarnished Truth (#1)
- This Is How We Do It (#9)
- If Shakespeare Wrote Incident Reports (#11)
- Cookie For Your Thoughts (#10)
- Be A Better Bureaucrat (The Intellectual argparse Play) (#16)
- Soup, Scrape, Sweep (#7)
- Code Review: Fast Forward and Back (#12)
- thank-yous
# 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.
# 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.
# 25 Oct 2018, 12:03PM: The Concision-Nuance Tradeoff In One-To-Many Documents:
It's tough to balance the need for concision with the need for spelled-out nuance in factual documents. Dating profiles, CVs, job descriptions, release announcements, grant proposals, values statements, codes of conduct, service notifications, news stories, product labels..... in one-to-many static communications, every member of the audience arrives with slightly different context and varying levels of reading comprehension and patience. And as the "Fresh Fish Sold Here" joke goes, you'll get inconsistent feedback from your critics about whether you've struck the right balance. I have faith that, in every such document category, there exist people with the skill to -- mostly -- design that user experience well. I'm curious to learn more about how to do that, in the document types I write (like emails, blog posts, and conference talks), and how to appreciate it in the documents I consume.
In this BBC News story, "We've developed this new format to try to explain the story to you better." You can select whether you want the short or the long version of an answer to a question like "Where is Xinjiang?" I like it -- not least because it means I can read the summary first, then remember that overview as I go deeper.
What can you communicate in a job description? Detail, transparency, expectations, team, mission -- but designing the reading experience so it doesn't feel overwhelming is its own feat. It's particularly disheartening to try to provide concrete examples of kinds of optional skills the employer values, to inspire a feeling of invitation, and then to find that some applicants read that as an intimidating list of must-haves or buzzwords. I'd like to get better at this and there is probably a class I could take or a framework I could adopt.
If you are a voter in New York City, here's the voting guide for the election on November 6th (you should have received a short paper version in the mail). Here's an overview of the three ballot proposals (I believe each proposal has a one-paragraph explanation that is "The official text of the question as it will appear on your ballot"). For each proposal, the title links to -- the example here is Proposal 2 -- the "plain language summary prepared by the CFB based on official abstracts provided by the CRC" (a few paragraphs) and several individuals' statements, 1-2 paragraphs each, supporting and opposing the proposal, "based on statements ... at CRC public hearings, in the press, and in submissions to the CFB." There are "abstracts" (2-5 pages each) for each proposal that go into more depth on cost, specific rules, edge cases, and so on -- this statement solicitation page links to all of them, here's the abstract for Proposal 2, and here's all of them together.
But what's the context and reasoning for these proposals? Well it comes out of the 2018 New York City Charter Revision Commission which delivered a report, 147 pages long, explaining why they're suggesting these three changes, and what other issues we should consider addressing in the future.
Is that the right balance? Is this a good set of stair-stepped documents giving citizens as much engagement as they want, at the pace they can handle? I don't know. It worked for me and the friend (we spent an hour researching voting choices together), although it was a little harder than I'd have liked to find those links.
I'm a better writer than many, but this is someplace I can improve, and so I'm noodling around thinking about it.
# 25 Oct 2018, 05:53PM: In Memoriam:
Content note: murder.
Terrorism -- in particular, terrorism against people who work to bring freedom and democracy to others* -- is on my mind.
A few days ago was the 150th anniversary of James M. Hinds's death. He was a white Republican in Congress, representing a district in Arkansas, one of the people implementing Reconstruction. He advocated civil rights for formerly enslaved men. On October 22, 1868, he was assassinated, the first sitting member of Congress to be assassinated. Before he died, he identified his attackers. The man who probably killed him -- an officer in the opposing political party, and a Ku Klux Klan member -- was never prosecuted.
Rest in peace, James M. Hinds.
The enemies of democracy do not stop at targeting politicians and donors. Chris Msando was the IT manager in charge of Kenya's computerized voting system for elections in August 2017; the day he was to oversee the public testing of that system, he was found tortured and murdered.
Rest in peace, Chris Msando.
Did you already know this part of US history or this part of the history of the tech industry? I don't think I learned of Representative Hinds when we studied Reconstruction in high school. And I don't think I saw my tech news circles mourning Chris Msando last year. So I am putting a small memorial here, now.
* Technologists who work on liberating their neighbors often face repercussions from their own governments, too. In November 2015, the Syrian authorities secretly executed Syrian open source technologist Bassel Khartabil, after imprisoning him for years. Rest in peace, Bassel Khartabil. Turkey in mid-2017 arrested IT trainers who were teaching people about digital security and privacy. The threat model can get dire.
# 29 Oct 2018, 12:32PM: Miscellany:
Life is varied.
I spend some of my spare time trying to do my bit for the election next week. I volunteered at a voter registration drive. I participated in some get-out-the-vote phone banking, and in a few days, I'll spend some of the weekend canvassing in person.
I started rereading Sinclair Lewis's Babbitt, about a middle-aged, Midwestern white guy dealing with ennui. Now that I am middle-aged and have a bunch of middle-aged friends, my reaction is less "ha ha" and more "this is so incisive that I can only read small chunks at a time." Instead I've been blowing my way through:
- Dan Davies's Lying for Money: How Legendary Frauds Reveal the Workings of Our World, which is as informative, funny, and wise as you'd expect from his Crooked Timber posts and personal blog (which I've been reading for more than a decade). I read the UK edition (the US edition comes out next year) because my spouse Leonard is the best and got it for me as a present. Further review forthcoming, I hope.
- A reread of the Mary Sue story I loved as a teen, The Prodigal Daughter by Jeffrey Archer. Thank you, SimplyE and New York Public Library, for making it easier for me to indulge in this big-money-big-politics thriller. This does not hold up well. For instance, in the most "As you know, Bob" expository howler I've seen in years, a campaign manager literally reminds a senator and a vice president that in order to win the Presidency they will have to get at least 270 electoral votes. But as a fantasy of a perceptive, hard-working woman blowing through barriers and achieving stuff, it can be fun popcorn.
- A reread of Erma Bombeck's If Life is a Bowl of Cherries, What am I Doing in the Pits?, a 1978 collection of her humor writing. (Again, thanks NYPL & SimplyE!) She was a fantastic writer and had such a gift for the absurd detail, like "she went to a parent-teacher conference alone to be told her son .... was flunking lunch" or "people whose children are overachievers..... don't forget little Kenneth, who gets up during the night to change his own Pampers."
I keep meaning to write here about my work (for four different clients, right now) -- for now I'll merely say, there's a lot to do and I'm glad whenever I make progress.
I discovered Caveat, which seems intent on pandering to my particular demographic (New Yorkers who want funny, cerebral theatrical entertainments for a night out with friends), so if there's an upcoming event there you'd like to attend, consider letting me know and maybe we'll go together?
"I Only Listen to the Mountain Goats" recently released the live episode they recorded in May. What a loving, funny show.
The Good Place continues to thrill and surprise me, and I'm so curious what conclusion Crazy Ex-Girlfriend is intricately skate-dancing toward.
Saturday and yesterday, I helped mentor a bunch of volunteer contributors at a weekend Python packaging sprint sponsored by Bloomberg. I sure do know a lot about Python packaging and Git, compared to people who first ran into those things less than a year ago. Some resources I pointed people to:
On Saturday afternoon I reached out to Jewish friends, and friends in Pittsburgh, to say: I'm thinking of you. I wish you safety.
Have you seen "Warning: Might Lead to Mixed Dancing", a fanvid by seekingferret that celebrates Jewish dancing? You can watch it on Critical Commons and on YouTube. In his commentary he discusses part of the argument he makes in this vid:
Judaism represents this incomprehensible world-wide community united by nothing except our mutual willingness to proclaim, sometimes reluctantly, that we are all Jewish. Jewish dancing occasions like weddings and Bar Mitzvahs are a time when we make that proclamation as a community, when we say that the divisions among us are less important than the bonds between us.
[Main] You can hire me through Changeset Consulting.

This work by Sumana Harihareswara is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Permissions beyond the scope of this license may be available by emailing the author at sh@changeset.nyc.