Things Real Dreamwidth Programmers Do
Wading into an open source project for the first time can be intimidating. There's a tendency to put established open source programmers up on a pedestal, especially when evaluating one's own abilities in comparison. (Hello, impostor syndrome!)
Real Open Source Programmers are the crème de la crème, the best of the best, the veritable titans of the programming world, right? They never make mistakes; they write flawless SQL queries in their sleep; they instantaneously comprehend any and all code they survey. Surely no mere mortal could ever hope to enter their exalted domain.
Reality, of course, is far, far removed from this caricature. Real Open Source Programmers are humans like the rest of us, with the same foibles, insecurities, and quirks common to all. Very few contributors have supernatural abilities, decades of programming experience, or an encyclopedic knowledge of computing arcana, and we are all far, far from perfect. =)
Thus, when azurelunatic shared the IRC logs of a marvellous Dreamwidth Dev Pep Talk, jeshyr came up with the idea of collecting an Epic List of Things Real Dreamwidth Programmers do. If you're a new or new-to-DW contributor, hopefully the list below will help disabuse you of any notion that you're somehow "not good enough" to contribute code -- you are more than good enough, and your contributions are heartily welcomed. And if you program, design, sysadmin, or interact with computers in any way, feel free to add any anecdotes you might have -- either signing your name or not.
With that, we present the Epic List of Things Real Dreamwidth Programmers Do.
Ask for Help
- I cannot count the number of times I asked someone who knew more about the documentation system how to do something, or to double-check to make sure I got it right. (This, after being a documentation admin for a while on LiveJournal.) - azurelunatic
- It's the rare code tour that I can complete without at least once asking what some bug was about. That's some deep, deep magic. - azurelunatic
- I'd like to patch this bug! Or try to! Really, I would! But... where do I find the existing code for it??? ;_; - kaberett (Thanks to exor674's subsequent work and foxfirefey's documentation, probably the handler finder tool.)
- Forgot that you can't treat a null as a zero enough times that I printed out "Null To Zero" in a fancy font with an ornate border, and stapled it to my wall as a reminder. - azurelunatic
- Started the arguments of a mailto: link in a wiki with an ampersand instead of a question mark, got garbage results after the address when testing it, blamed the (touchy, obscure, belligerent) mail application to its developers, and was schooled on my mailto: syntax in front of an audience of about 1,300. - azurelunatic
- For bug 4282, I misunderstood what the request in bugzilla was asking and what the current behaviour was, and so my patch didn't fix what it was meant to fix AND it didn't even actually fix what I thought it was meant to fix! So it was doubly broken ... and then I got sick and had to unassign the bug, so I never got it fixed. - jeshyr
- Stare at a typo for over an hour before noticing it - deborah (from qdb)
- ... because you took a huge dose of meds and decided this was the best state to code in. - kaberett
- 1. Spend several hours beating my head against why my dreamhack won't load. 2. In desperation, ask other people to test loading my 'hack versus loading theirs. 3. In even more desperation, go to restart Apache.
stop-apache!, I instruct my 'hack.
... what?replied my 'hack.
I--I'm not doing that thing. So I can't. Are you sure that's what you meant?- kaberett
- "hrmmm. woah jesus. woah. [...] no,it's my bad :-p [...] I put a hook in that code to print out if someone gets a 403 by that codepath, to try to validate that assertion. But I put the hook on the wrong side of the if statement, so it was printing 'denying request from uniq' for everybody who was NOT getting a 403, which is a lot of requests. But I didn't realise that, and thought we were 403ing a million people. NEVER CHANGE, SELF" - mark, in IRC
Forget How Things Work (and just forget things)
- I feel like I end up looking up most Perl functions with perldoc -f function_name every time I use them. Especially open and split, for some reason. O_o - shadowspar
- Have to look at the Template Toolkit documentation every time I have to do anything -exor674 ( I should note that I am in charge of the BML to TT conversion )
- About half the time, the morning after I write something I have to figure out what I did and how the hell it works ... it never stays in my brain! - jeshyr
- I try to keep track of what features have actually been implemented, and what ones are still waiting, but I forget all the time. Then these get mixed in with things that LiveJournal has developed since the code fork, and again mixed with things that the shared codebase used to do, but doesn't anymore since it was ripped out by the bytes by whichever dev had the code-machete that week. - azurelunatic
- The best thing is when I think "Oh, we should totally do this thing," and then one of several things happen. One, there's already a suggestion for it. Two, the suggestion's already been migrated to Bugzilla. Three, I was the one who suggested it. Four, when it's actually already been implemented. Five, when all of the above is true -- and denise lets the post to dw_suggestions through anyway, because she forgot too. I have lost count of how many times that's happened. - azurelunatic
- I work with R scripts in my "day job", and I keep trying to write Perl in R, and R in Perl. Neither works too well. - swaldman
- I filed a bug at work today. This is how that went: First, I noticed a little glitch with the Move Message dialog, which had been bugging me subconsciously for weeks, and just then floated to the top. I thought maybe I should file a help ticket, but thought that I'd filed enough help tickets for a while and this was minor, so I might as well save them the trouble and look for duplicates first. So I went to that product's bug tracker and searched for the most obvious keyword, which had 400 results. So I added the next most obvious keyword, which narrowed it down to about 90. Then I went down the list and started opening things in tabs, including two that by their titles looked like they might be duplicates of each other, but were entirely unrelated to what I was complaining about. After that, I read through the tabs I'd just opened, and found nothing that looked like the bug I was encountering. Then I looked at the two that might have been duplicates of each other, and found that they were in fact nothing at all alike except in the title. Then I looked at some of the other bugs that could have been duplicates of those, but those weren't very interesting. Reading through all those bugs had given me another couple useful keywords to try, so I tried that and got only about 10. Those were really quick to read through, so I did. And I closed the last tab from the bug tracker. Then I closed the help page, because I couldn't remember why I'd opened it, and obviously it was not for any good reason if I couldn't remember. Then I went back to my email and noticed that for some reason I'd stopped in the middle of moving a message. "Huh, that's weird," I thought. I looked briefly at the message to figure out where I wanted to move it. I looked at the dialog, which had been recently changed to retain the last folder that I'd moved something to, in case I was doing it a lot. I noticed that I couldn't see the highlight, and couldn't remember what it was. "That's obnoxious, I should file a bug," I said; "I can never remember anything like that longer than 30 seconds." I opened up a tab for a helpdesk ticket, and then realized what I'd just done. Yesterday I'd described my workflows to a dev as "Imagine severe ADHD, and people banging pots and pans in the background", and I stand by that description. - azurelunatic
- I know what I'm doing unless it means that forgetting the obvious will cause me to waste a few hours in which case I am guaranteed to forget the obvious >:| - mark (from http://qdb.dreamwidth.net/dw/602)
- "my only weakness while adminning and drinking is bind. I can do anything else, and I can edit zonefiles without messing them up, but i can NEVER remember to increment the serial number." - dive(from http://qdb.dreamwidth.net/dw/430)
- Note to self: support notification messages arrive a lot faster if there is a support-notify worker running. ^_^; shadowspar
- One time it took the customer, me, and second-tier support staring at the bounceback message and the listing of email addresses the customer had defined, and the help of a monospaced text-editor, to notice that someone (probably the customer) had transposed two vowels in their multi-vowel surname when setting up the email address. - azurelunatic
Forget Their Password
- And their usernames. And other essential details.
- I not only forgot my Github password, I forgot the email address I'd registered with them! I had to email support (thankfully they were lovely about it). I also regularly forget to put the dh- in front of my Dreamhack username! -randomling
- This evening, I had to search email for how to log into my dreamhack, I had to try three passwords before I got the right one. Then I stared blankly at the Github password prompt and took some time to remember whether I even had a Github account. -kaberett
Break Production (the Live Website)
- Kicked over production Apache at work the other day when I thought I was merely recycling the dev website. oops... - shadowspar
- Break the site (momentarily) during open beta launch: http://qdb.dreamwidth.net/dw/123
- I was trying to update some software on one of our production databases and wasn't paying very close attention. I typed 'yes' when prompted "Really uninstall mysql-server?" I quickly failed over to the other database and reinstalled it, but... oy. mark
- Honestly, the ways in which I've abused production due to fat-fingering a command or thinking "I'll just test this live real fast"... mark
- Forget to restart memcached after a database crash, buy new servers because the site was slow (hey! we got new servers!)
- But on the plus side, the bug I got committed to production only affected support volunteers with privs... --kaberett
Break Sundry Other Things
- My first act at one of my early contracting gigs: creating a mail routing loop that made our own servers bury themselves under a deluge of junk email - shadowspar
- Break things in their development environments.
- Break the development environments (and associated infrastructure) themselves.
- Back in the days (!!) of Mercurial Queues, I managed to mess up deleting patches that had been committed from my Dreamhack so badly that it took a lot of WTFing and a goodly amount of new documentation to sort it out without losing all my part-finished patches - kaberett
Shoot Themselves in the Foot
- Starting to rewrite a helper script. Think "What version of Perl does the DW codebase require?" Ah! Find it requires 5.10. Great, I can use the features that are new in 5.10! Write up a note in the wiki saying that Perl 5.10 is required, but it's unlikely to be a problem because any machine running 5.8 or earlier is likely to be quite decrepit indeed. Return to script, finish it, give it a try. Script refuses to run. Error message: Perl v5.10.0 required--this is only v5.8.9. shadowspar
- I just didn't have time to figure out a real, proper way to solve the problem, so I did something nasty and clunky that happened to work - dive-o (from qdb)
- Time elapsed between me showing up on DW and saying I wanted to contribute code, and actually submitting my first patch: about three years. ^_^; - shadowspar
- Assigning bugs to oneself in a fit of hopefulness, realise you can't manage them and sadly unassigning. Rinse, repeat :) - jeshyr
- Pick up an effort-minor bug, stare at it for a while, start hashing out a spec in bugzilla comments, and before you know it end up with an entire dw_dev discussion post about what you're actually trying to achieve, with reference to several ISO standards... and then bury your head in the sand and pretend none of it ever happened. - kaberett
Get Fed Up
- Today in IRC, denise was letting fu know about her recent pull request submitting a patch for bug 1386 with these words: "i gave you a PR for the revert-the-color-changes but my dw-nonfree branch is f***ed somehow so i probably screwed it up. can you take pity on me and just redo the changes on your end to commit them? [...] i'm probably going to have to do something awful to the damn thing to make it work again". I find it very reassuring that even our admins want to throw their computers out the window sometimes! - jeshyr
- I inherited a series of Excel spreadsheets trying to do a database's work, and by the end of my first time soloing, I threw a kicking, screaming tantrum & swore I'd never touch it again. My reward for this was to then build a database (with a grand total of 3 intro to db classes under my belt, plus the Microsoft help system) in Access, which meant untangling my predecessor's formulae, discovering her possibly civilly liable shoddy math, teaching myself more than I ever wanted to know about databases -- and ultimately never fully finishing it, as the company shut down my location. It was still better than dealing with that goddamn thing. - azurelunatic
- I ask for reassurance ALL the time, usually via the IRC channel. Hell, I even asked for reassurance before creating this category in this document ... how silly is that?? - jeshyr
- I spend a good week asking people to hold my hands and cheerlead me before every time I get going with a patch. Hell, I'm so terrified of git that I've not submitted a single patch since we started the migration - it took me months to work up the courage to migrate my Dreamhack, never mind actually use git! - kaberett
- A lot
- In IRC
- Out loud when the code is not making sense (as some sections of it frequently fail to do)
- Including wondering what elder god infested Brad's head when he wrote THAT omg
- At code they wrote themselves just six months ago but never got around to properly commenting
- The good part to swearing in Chicken at work is that nobody's going to understand the words, just the tone of voice. The bad part is, now I am the lunatic making chicken noises at work. - azurelunatic
- I'm kind of thrilled when someone asks for help with the code tour and I can actually sort-of explain what some of the fixes do. ^_^; - shadowspar
- Spend two straight days rummaging around with something or other, and in a fit of FOR CRYING OUT LOUD write up some documentation for the wiki so at least the next person doesn't have to reinvent the wheel - kaberett
- Spent seriously like a week trying to look up over and over all the commands in the wiki for upgrading code, updating the database, using the version control, etc. and finally decide it was easier to just write a huge enormous omnibus script to remember them for me. The fact it helps other people is fun, too! - jeshyr
- Realise that someone really hates a particular task that you'd find at worst pleasantly soothing, and take it off their hands. - kaberett
- Better than half of our contributors have never programmed in Perl before, never contributed to an Open Source project before, or never programmed before, at all, period. I think that's amazing. (ref) - shadowspar
- I constantly learn things from people. Frontend stuff is a mystery to me, so I am always learning when I read patches submitted by our styles people. "Oh, CSS can do that? Woah." I still don't understand most of it. - mark
- Can't face brushing my teeth? That's okay, I'll spec up a bugfix! - kaberett