This website was archived on July 21, 2019. It is frozen in time on that date.

Sonya Mann's active website is Sonya, Supposedly.

Solve All of Your Problems Ever, Permanently

You’re so gullible! Except wait, I know you clicked on this because the headline sounds like a joke. It sort of is. I plan to tell the sour truth! The best you can hope for is to solve some of your problems, occasionally, and even that might be a stretch.

You can’t do it on your own. Self-sufficiency is an alluring myth. Most human tragedies arise from coordination failures. The best way to get ahead is to convince people to go along with your plans. Good luck with that. And remember: lifehacks are garbage.

Adelaide Crapsey’s poem “The Lonely Death” is instructive:

In the cold I will rise, I will bathe
In waters of ice; myself
Will shiver, and shrive myself,
Alone in the dawn, and anoint
Forehead and feet and hands;
I will shutter the windows from light,
I will place in their sockets the four
Tall candles and set them a-flame
In the grey of the dawn; and myself
Will lay myself straight in my bed,
And draw the sheet under my chin.

That’s what happens when you try to be self-sufficient. Hmm, maybe it does sound a whole lot better than shriveling up in a nursing home.

Stack Overflow & Discouraging Beginners

“The thing is, bad questions don’t destroy the community. […] But this hostile behavior does destroy the community. It pushes beginners away, who may ask better questions later once they get a bit more of a handle on what they’re doing. And it pushed people like me away; people who are there to help, and willing to do so even for beginners.” — lambda on Hacker News

Despite saying that I was not going to learn how to code, I’ve been playing around with Learn Python the Hard Way. The author has a smart practice of posing questions to the student as quasi-homework — your job is to Google around until you find the answer. Thus you build the habit of solving puzzles via research.

snake clipart

In the “Study Drills” section of the fifth exercise, the author instructs, “Try more format characters. %r is a very useful one.” I suspect I’m not the only student who instantly searched “Python format characters”. One of the first results was a page from the Python 2 docs. The answer was in there, but I didn’t realize that because it was way the hell down the page (here). The top of that page said this, which I found incomprehensible:

“The principal built-in types are numerics, sequences, mappings, files, classes, instances and exceptions.

Some operations are supported by several object types; in particular, practically all objects can be compared, tested for truth value, and converted to a string (with the repr() function or the slightly different str() function). The latter function is implicitly used when an object is written by the print() function.”

I read that and thought, “Well, this must not be what I’m looking for!” Back to Google. The next place I went was a Stack Overflow question:

"I've been looking for the list Python format characters for a good 30 minutes. I can't find any. Examples are %d, %r etc but I need a list with them along with a description if possible please." Closed on Stack Overflow as "not a real question".

Aha! Someone had the same problem I did! (Granted, I was a couple minutes into my search, not thirty, but the original post was from 2010.) Underneath the request for help, a closure note called this… “not a real question”? Hmm, okay. I guess the OP didn’t follow all the “You Must Try, and then You Must Ask” rules (which I wholeheartedly believe in, and to which Stack Overflow’s guidance seems similar) — but it was pretty clear what they were looking for.

I scrolled down to read the answers. This was the first one, ranked by upvotes:

“Here you go, Python documentation on old string formatting. Took me one minute to find (tutorial -> 7.1.1. Old String Formatting -> ‘More information can be found in the [link] section’), something must be wrong with your search strategy ;)” — user delnan

This is helpful because it provides the desired information. But it profoundly fails to empathize with the beginner’s struggle. I suspect that the person who asked this question, like me, found that docs page easily. It was just totally non-obvious that the answer was in there! I appreciate the third Stack Overflow response, which has a tenth of the first one’s upvotes:

“In docs.python.org Topic = 5.6.2. String Formatting Operations http://docs.python.org/library/stdtypes.html#string-formatting then further down to the chart (text above chart is ‘The conversion types are:’) [¶] The chart lists 16 types and some following notes. [¶] My comment: help does not include attitude which is a bonus. The attitude post enabled me to search further and find the info.” — user oceandreamer

Another user, Lennart Regebro, commented, “The first hit [on Google] is now tragically this stupid question” instead of the Python 2 docs page. Well, the docs didn’t help me at all without access to “this stupid question” and the explanations it provoked. Because you don’t know what you don’t know — reading the top of that docs page made me think it had nothing to do with what I was looking for. Yes, I was wrong, but that’s because I’m a goddam beginner! By definition I’m not good at parsing technical documentation!

If your answer to this problem is “read the entirety of every docs page to make sure there is no relevant section”, you’re being totally unrealistic — it’s just not going to happen. Maybe the original asker and I should have done ctrl + f for r% — but that didn’t occur to me, so I assume it didn’t occur to them either.

Beginners need guidance. They’re dumb and they flail around and they get stuck on “easy” problems. That’s why resources like Learn Python the Hard Way and Stack Overflow exist in the first place.

I don’t think the docs of a programming language should be tailored to newbies who have no idea what they’re doing. That would be silly. I do think that people who participate in learning-oriented spaces should not answer questions with this jaded, snarky, put-upon air. It is the opposite of welcoming and it does nothing to make me feel delighted about talking to programmers. But hey, if you don’t want a friendly community or you don’t want more people to learn how to code, then you’re doing it right.


I quoted Hacker News user lamdba at the beginning, but their comment is so good that you should really go read the whole thing.

Expectations & Etiquette for Interviewees

If you’re reading this post, I probably sent you a link because I want to ask you some questions for an article. The interviewing process can be weird if you’re not used to it, so this is intended as a straightforward guide. Don’t worry, it’s short!

  1. Instead of relying on the various definitions of terms like “off the record” and “on background”, I prefer to define how I’m allowed to quote you in concrete terms. Can I use your name? Mention where you work? Etc. Tell me what you’re comfortable with! If you don’t specify that you want to stay anonymous, I will assume that your comments are fully public.
  2. I may ask about subjects that don’t usually come up in polite conversation. For example: “How much money do you make?” Some questions might even feel adversarial. For example: “People have accused you of XYZ. What is your response?” You are free to refuse to answer any questions, or to answer partially. It doesn’t mean that I won’t bring up those issues in whatever I write, but it’s totally fine for you to set limits on what you will talk about.
  3. I encourage you to make your own recording of any verbal conversation we have, and to keep transcripts of our textual communications. (This is a good interviewee habit in general! Archive those emails!)
  4. You can’t approve the final article before it’s published. However, if I edit your quotes for readability, I may ask you to approve the revised text, to make sure I’ve preserved your meaning. Those edits will always be disclosed to the readers.

The four items above are based on the industry’s standards. If there’s anything else I should add to this post, email me@sonyaellenmann.com and let me know. Thanks!

Tips for Having Positive Interactions Online

I enjoy conversing with random netizens about the topics that interest me — power dynamics, ethics, etc. Unfortunately, seeking out productive discourse is an activity fraught with peril, since every second person online is MAD about whatever issue preoccupies them. (I don’t object to the anger, but I often object to how it’s expressed.)

I’m not an expert at avoiding pointless arguments full of hostility, but I’ve developed some useful heuristics. They started as coping mechanisms inspired by political flamewars on Facebook. I’ll give you the tl;dr first:

Above all else, be kind.

I love these dorky yellow humanoids. Image by Kate Ter Haar.
I love these dorky yellow humanoids. Image by Kate Ter Haar.
  1. Assume that people are speaking in good faith until they demonstrate otherwise beyond a reasonable doubt.
    • Train yourself to choose the friendliest interpretation of someone’s statement. I’ve found that expecting the best from people has a much better failure state than the alternative.
    • Ask lots of questions about what people mean. It’s easy for someone’s comment to be confusing or misleading by accident.
    • Reign in your snark; amp up your earnestness.
  2. Different people have different communication modes.
    • On the internet you will bump into many people who don’t share your cultural assumptions — and remember, culture is not just an ethnic thing — or who naturally have different defaults. Keep an eye out for this.
    • When someone’s interjection seems socially insensitive or rude, remember that their version of normal may be very different from yours.
  3. It’s fine to disengage if the conversation is distressing.
    • Remember the golden rule of self-care! Like they tell you on the airplane, secure your own oxygen mask before assisting anyone else. Prioritize your mental health and wellbeing — burnout helps no one.
    • Being upset is okay. It’s one of the many natural reactions to conflict that humans can experience. Anyone who says “it’s just the internet” or something along those lines is trying to minimize your feelings.

Obviously I am not 100% perfect at any of this — I’m a jerk online way too often — but I’m striving to communicate with people respectfully. Keeping these heuristics in mind helps me do that.

I may or may not update this list if more tips occur to me. Let me know in the comments or on social media (Twitter + Facebook) if you have feedback! Suggested additions are also welcome.

Politiblah Economiblah

I have simple political ideas, and they are mostly economic. Over the past year I’ve started to think of myself as anti-capitalist but pro-market and mostly in favor of free trade. I might be a “bleeding heart libertarian” as described on Slate Star Codex.

When I wrote about human rights not being innate, I said:

“Personally, I want a government that is obliged to provide healthcare to everyone, housing to anyone who asks for it, education to anyone who wants it, and asylum to anyone who seeks it. […] I want a government that runs its own prisons entirely with public money, and runs a lot less of them.”

Expanding on that: I think we need a strong social safety net. To be more explicit, I want the government to tax people progressively — a scheme in which the rich give more than the poor, proportionally — and use the revenue to fund universal healthcare and an inversely graduated basic income. (The United States has implemented a stunted version of this progressive taxation and welfare system.)

Comic by xkcd. Politics is the mind-killer.
Comic by xkcd.

I find anarchism and pure libertarianism ideologically appealing, but ultimately they are both fantasies that depend on people behaving in ways that people fundamentally don’t and won’t. We have developed the government we have for a reason, and making fundamental changes is extremely difficult. I like systems that depend on everyone’s self-interest — it is the only reliable motivator. (This is why markets work so well!)

All of this is half-formed. Until I feel more solid in my convictions, it’s comforting to adopt a kind of economic fatalism. Technology seems to drive most economic cycles, and demographics seem to drive most political cycles… I need to keep grappling with these thoughts.

Sign up for my newsletter to stay abreast of my new writing and projects.

I am a member of the Amazon Associates program. If you click on an Amazon link from this site and subsequently buy something, I may receive a small commission (at no cost to you).