Proposed Syllabus

Moving cross-country in a truck = a lot of thinking time! This is very rough, and somewhat limited by my own point of view, so input and feedback is totally welcome!

General things (with some DW-specific notes)
-variable types (scalar, array, hash)
-data types (string, boolean, number)
-error-checking/exception catching

DW-specific beasts
-html (tt, bml, widgets)
misskat: Smartly Pretty! (Smartly Pretty)
[personal profile] misskat2013-07-10 12:18 am

Lesson Zero: Identifying Goals

So, this is lesson zero: figuring out what you want to get out of this experience. I know that for me, personally, I want to be able to hack on DW, And fix bugs that Support encounters. My primary goal is to become familiar enough with Dreamwidth's code base that I can make that happen.

What are your goals for this project? What do you want to accomplish? Will you hack for DW?

How much experience do you have? Are you familiar with other languages, or will the Perl be your first experience? Have you toyed with the command line before? Where is a good baseline for us to start?

Please comment with your responses, and any other relevant information.

( I apologize for any weirdnesses. I am dictating this via my phone. My hands are aliens.)
misskat: Thanks for Flying Air Dreamwidth! (Pic of the butt of a plane with the DW logo on it) (Air Dreamwidth)
[personal profile] misskat2013-06-19 11:02 am

Perl for Windows

Paul Fenwick says that dwimperl is useful for people on Windows, sooooo... use that.

Also, Paul Fenwick says that this may be useful.
misskat: Dreamsheep in the snow, with MissKat on top and Minion #2 underneath (Dreamwidth Minion #2)
[personal profile] misskat2013-06-18 10:34 pm
Entry tags:

Lesson Zero: Getting Prepped

Hi! I'm Kat, and I'm running this show at the moment while the other teachers are working on various projects. Should be fun!

A bit about me: I'm the user and developer documentation and support staff-y person here on Dreamwidth. I don't code, but I really want to learn... and there's no group better to learn Perl from than DW devs.

Before you can do any coding, or just about anything else, you'll need to do some prep work. Due to mundane commitments, it will likely be a bit before the actual lessons will start, but take a few minutes now to get stuff set up so that you're ready to go later!

The text we'll be using (probably) is Beginning Perl, by Simon Cozens. It's available in .pdf form here, via for free. It's also available in dead-tree format via Amazon.. Either should be fine. This book has been selected because, well, it's available for free online, and that lowers the barrier to entry.

The Dreamwidth Wiki is a font of information on all things Dreamwidth. I encourage everyone to head over there and poke around for a bit to get a feel for Dreamwidth's development culture. Once you've done that, go look at the Getting Started area. Specifically, you should check out the Developer Getting Started page, and the Beginning Dev Checklist, and the links contained therein. There's a lot of information there, so it's ok if you can only take it in small doses.

Go get yourself set up with a Dreamhack. These are hosted development environments that Dreamwidth provides for you to, again, lower the barrier to entry for new developers. In short, we know that our code is unwieldy, and it's a right pain in the butt to get running on your own... so we do it for you. It's your own little version of Dreamwidth, where you can poke at things without any chance of causing irreparable damage to the actual site. I encourage you to get that form submitted ASAP so that Sophie, our resident Dreamhack coordinator, has time to get everyone taken care of.

There's a step in setting up your Dreamhack that requires you to have GitHub set up. Sophie's got more info on the specifics, so just be aware of that.

For communication purposes, we'll be primarily using this community. However, it can sometimes be useful to have real-time chat capabilities. For this, Dreamwidth uses IRC. The Wiki has instructions on how to get connected. The relevant channels are #dreamwidth-dev (for help with stuff) and #dreamwidth (for help and social stuff, if you're inclined). You don't have to do IRC, but it is an excellent resource. Well, the people on it are excellent resources.

I strongly encourage everyone to track this community. You should definitely ticky the box to be notified if there's a new entry posted, and (depending on your email volume preferences) possibly consider subscribing to all comments too. If you're not able to do this due to your current paid account status (aka you don't have one and you're full on notifs), PM me and I'll fix that.

Get your CLA filled out and sent in. Dreamwidth can't use anything you write without the CLA signed and filed. Do that now so you don't have to do it later.

Finally, please take a few minutes and go read Denise's slides on Impostor Syndrome. Impostor syndrome is when you live in fear of the day when everyone's going to find out that you actually have NO idea what you're doing. It's a nasty thing, and it's incredibly difficult to combat effectively. The thing that works the best, imho, is recognizing your negative self-talk, and trying to not do that.

To this end, anyone caught saying something like "I'm so stupid," or "I suck at this," or even "I am not smart enough to do this" will be immediately bombarded with encouraging .gifs by yours truly. Also: you're not stupid (this stuff is confusing!), you don't suck at this (everything that's new has a learning curve), and you're using Dreamwidth, so you must be pretty smart! <3

a penguin saying postive things

I know there's a lot of stuff there, so take your time as you work through. If you have any questions, feedback, or anything else, please comment or catch me on IRC!

misskat: A bunch of minions from Despicable Me in heart formation (Minion Heart)
[personal profile] misskat2013-06-18 09:41 pm
Entry tags:

Zero-to-Perl: Dreamwidth Edition

Welcome to Zero-to-Perl: Dreamwidth Edition!

The purpose of this comm is to mentor and encourage people who are interested in learning how to code Perl. Dreamwidth, the site you're on right now, is mostly written in Perl. As an open source project, Dreamwidth's code is mostly written by volunteers who donate their time, skills, and expertise. Dreamwidth is fully committed to giving back to the community that supports it, hence this comm!

By the time this course is done, you will have at least one small patch under your belt, be prepared to start working on bugs on your own (with continued support, of course!), and know the ins and outs of the Dreamwidth development process, including the tools we use to make it run smoothly (GitHub and Bugzilla being the two biggies).

I use the term "course" very loosely. At this time, there is not really a schedule or a syllabus. However, there are some goals that you should be able to accomplish along the way: write patches, know your way around the system, know where to go for help. How we'll get from A to B is still being discussed, but we'll get there!

At this time, the plan is to set weekly "missions" for folks to work on. These can be done independently, or collaboratively via IRC, email, Skype... whatever you're up for. Setting up pair programming is something you'll have to do on your own, but if you need suggestions for people to talk to, ping one of the comm admins!

This is designed to be a low-pressure learning environment, with lots of encouragement. To this end, this comm will have a code of conduct, which is as follows:
--Don't be a dick. Wil Wheaton says so.
--Don't use "fake surprise." If someone doesn't know something, don't act shocked. For example, if I say that I don't know who Larry Wall is, don't be like, "OMG YOU DON'T KNOW WHO LARRY WALL IS??????" It will make me feel stupid, and that's not conducive to a positive learning environment.
--Don't use "well-actually statements." These are statements used to correct minor inaccuracies, but in a way that maximizes embarrassment. For example, I might say that the earth is round. "Well, actually, the earth is spheroid" doesn't add anything to the conversation, is nit-picky in a non-constructive way, and will make me feel stupid. See above.

In addition to learning Perl, we'll also be doing an introduction to GitHub, and an overview of the ways in which you can tickle Bugzilla to provide the information you're looking for. We'll cover additional tools as time goes on.

Finally, the comm admins ask you to be patient with us as we figure out what's going on. At least one of us has never programmed before (that's me), and we're all feeling this out. If you've got feedback, feel free to DM or email one of us, and we'll take a look. As Dreamwidth's diversity statement says: We have enough experience to know that we won't get any of this perfect on the first try. But we have enough hope, energy, and idealism to want to learn things we don't know now.