Helping

May. 21st, 2013 12:28 pm
liv: Stylised sheep with blue, purple, pink horizontal stripes, and teacup brand, dreams of Dreamwidth (sheeeep)
[personal profile] liv
Some time last week, I was in a bad mood such that what I felt like doing was spending hours playing simple, repetitive computer games. But honestly doing that does not really make me feel better, except very very short term, it just makes me annoyed at myself for wasting a lot of time on pointless things. So I had the brain-wave of deciding to sit down and work out what it is exactly that I crave from computer games when I'm in that kind of jangly bad mood. I concluded that I wanted to be doing something sufficiently difficult to give me a sense of accomplishment, but easy enough that if I concentrated I'd have a pretty good chance of succeeding. And I wanted lots and lots of immediate feedback. I figured out that a more productive activity that meets that need is programming.

So I took the plunge and asked to get my Dreamhack (DW development environment) reactivated after a three-year hiatus, and started working on a really small styles bug. And I jumped back into #dreamwidth IRC and lots of people were pleased to see me, and entirely willing to step me through fixing things when I messed up, and several completely vanished evenings later, I had a couple of patches accepted. The programming part was exactly what I needed, soothing and just challenging enough to be satisfying, and every time I changed something and compiled it and it worked, or tested something and found a bug and corrected it and tested again and it worked, I got exactly the hit that I get when I get a combo bonus on a silly computer game. Except that at the end I felt I'd contributed something useful by making DW better, instead of feeling drained and crappy because I'd wasted time improving my highscore on a game I don't care about.

The thing is, it's clear that the most useful thing I can do for DW is creating content here which attracts readers and helps to make it a lively community. I'm much much much better at that than I will ever be at programming! I also make a point of paying for my account, even though I don't need to, a free account would be perfectly adequate for the way I use DW. But I do increasingly like the freemium business model better than all the other alternatives that people are trying when it comes to monetizing the hosting of user-created content. (I am really not impressed at Flickr switching from freemium to ad-supported, ugh ugh ugh.) I sometimes dabble in documentation and I'm among the top 20 volunteers providing answers to Support questions. Though these days the site FAQs are good enough that there aren't many people asking questions simple enough for me to answer, people are posting to Support with actual bugs or very complex requests, and this is a very good thing, but it makes my contributions somewhat redundant.

So realistically, the little tiny bit of programming that I'm able to do is much more for my benefit than for Dreamwidth's. I am helping a bit, because there are always more tiny trivial bugs than there are people who have time and skills to fix them, so more hands on deck is not completely pointless. That certainly does contribute to the my enjoyment of working on the project; I have tried a few times to teach myself programming by going through exercises to write hello world programs and list-sorting programs and finding prime factor programs, and I tend to lose interest before I really learn anything, because I can't help finding the exercises pointless. Actually fixing something that makes a real-life project better is so very much more satisfying, even if it means I'm learning in a slightly odd order because I'm delving into a (very!) mature codebase and figuring out what to change. I like immersive learning though, I learned most of my Hebrew grammar through a really excellent course where we just started at the beginning of the Bible and went, ok, what's going on grammatically with this word, and got through about one and a half verses over the duration of the course. And working on DW feels very similar, it's real code, it's not example code, so yes, it's complex, but also it's valid in the technical educational sense.

Also, wow, I really do like the way Dreamwidth is completely reinventing Open Source culture. It's not a "meritocracy", it's a community where people take more pride in mentoring and training newbies than they do in competing to be the most l33t super-hackers. Some really really skilled people, including [staff profile] mark himself, held my virtual hand in IRC when I was getting frustrated with version control. And nobody even so much as hinted that there's a problem with me taking up several hours of senior devs' time in order to make a one-line fix.

This is the kind of reason why DW has a huge crowd of people working on it, some with quite a lot of responsibility for major projects, who don't at all come from the traditional Open Source / hobby programmer roots. Specifically, it has a clear majority of women, and greater than a random population sample representation of people with various other minority identities. I feel weird about the fact that I need a supportive of women-and-minorities kind of environment to be able to get involved in OS; I don't think of myself as the kind of person who needs that kind of "nurturing" to be able to learn. But the fact is that I gave up programming when I was 8 or 9, for reasons that do have something to do with being a girl, and I have a whole lot of catching up to do with people who spent their teenage years hacking for fun or pocket money, and probably their 20s working in some kind of software related field. And I don't think I could bring myself to do that in an environment where you get mocked for being a n0ob, or even where the atmosphere is friendly but competitive; obviously I can't compete with people who have 25 years more experience than I do.

This reflects the principle that I keep rediscovering when thinking about institutionalized bias: good practice helps everybody, bad practice hurts minorities more. I appreciate that some people actively prefer the OS world because you don't have to bother with being politically correct to the standards expected in the corporate environment, because your ability to code is the only thing that counts, even if you're not very good at social niceties. And that's great, that is indeed a really valuable thing, but it really doesn't lead to diversity; women are ridiculously under-represented in almost all major Open Source projects (apart from Dreamwidth and AO3), even compared to women's under-representation in technical fields in general.

A silly, personal example: I feel a bit self-conscious about the fact that Dreamwidth has now migrated to Git for version control, so that all my newbie mistakes are right out there on the public internet for everyone to see. But I have also read that this is a typical problem that women have with getting involved in Open Source. The real solution to this is to change the culture to give learners more privacy if they need it, but my immediate instinct when I read about something that women typically do that holds them back is to say, ok, I won't do that, then, I'll do this the way a man would. So I have determined not to worry about my stuff-ups being in my GitHub stream, because realistically nobody's even going to bother looking and even if they do, I don't care what some random stranger thinks of my ability to use version control. Obviously I'm bad at it, that's because I'm a beginner, not because I'm inherently incompetent.

The other reason this is important to me is to keep me empathizing with learners. [twitter.com profile] mixosaurus made a really powerful blog post about respectful and compassionate teaching. Kat is right on the money that the sort of people who become academics may never have been crushingly bad at any academic subject, whereas by definition we're going to be teaching people with a range of abilities and levels of motivation, not just those who excel and love the subject and go on to become experts in our fields. It's really, really good for me to remember what it feels like to be a beginner, to be too scared of making mistakes to actually make progress. I know I have students who find, say, immunology as arcane and jargon-filled and arbitrary as I'm finding Git right now (like I said, the programming is going fine so far, it's the version control I'm struggling with). And they're not "stupid" and they're not deliberately refusing to try just to be awkward, they're beginners, or they're people who have succeeded at somewhat related skills (such as A-Level biology) but find that this particular intellectual field doesn't quite fit with the way their brain works.

So learning new skills is good for me as a teacher, as well as being satisfying. I've revived my dev journal at [community profile] livredor to document some of my learning process, and since I have it I'll probably throw the baking in there as well, and maybe some of my very beginner-ish Arabic, though I generally know how to learn languages so I have less need to work on the meta-cognition stuff there. I strongly expect that 99% of people will find this detailed documentation totally boring, which is why I'm hiving it off into a separate journal. But I'm also mentioning it just in case you have the exact mindset where you find watching people learning new things interesting, and if you do you're welcome to watch the dev journal.

And if you have wishes for DW, well. I am not quite at the level where I can scratch my own, or my friends', itches yet, but I'm hoping to get there, at least if we're talking small itches. I mean, ideally what I would like to do is write a couple of smartphone clients and a decent front-end for the image hosting and a tool for exporting journals properly with comments and maybe something to import from Tumblr before Yahoo screw the site up beyond repair. But those are way beyond my capability and likely to remain so, because this is always going to be a hobby for me, I don't have a thousand hours to actually become an expert.

However, what I can do is a whole bunch of things related to the back-end that generates journal appearances. The most complicated things I've done so far are writing the Page Summary module, and writing code that mainly affects designers rather than end users to do with the option to colour-code entries on your reading page depending who posted them. Certainly, if there's a colour combination or a display option that you wish existed, there's a good chance I can make it happen. Note that I am not a web-designer by any stretch of the imagination, but what I can do is implement someone else's aesthetic concept in a format that can be made into an official style on Dreamwidth.

In order to be able to do that it has to be something with a licence that DW can use; if you designed something yourself you need to submit a CLA before it can be incorporated, if it's someone else's design then it needs to be public domain or under an appropriate licence. This means that I can't make official DW layouts with, you know, Game of Thrones wallpaper, and it also means that I can't make a Dreamwidth version of LJ Flexible Squares, which is a very common request. What I can do is take CSS-based layouts that modify Flexible Squares, and apply them to Dreamwidth's Tabula Rasa, because actually DW has more flexibility for styling with CSS than LJ ever did, it's just not very well publicized.

So tell me, next time I am in a bad mood and want to spend an evening programming, what can I do for you?
From:
Anonymous
OpenID
Identity URL: 
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Links will be displayed as unclickable URLs to help prevent spam.

Soundbite

Miscellaneous. Eclectic. Random. Perhaps markedly literate, or at least suffering from the compulsion to read any text that presents itself, including cereal boxes.

Top topics

October 2017

S M T W T F S
1234567
8 910 11 121314
15 161718192021
22232425262728
293031    

Expand Cut Tags

No cut tags

Subscription Filters