nodejs/code-and-learn

Code & Learn at Node Interactive Austin

hackygolucky opened this issue ยท 39 comments

Continuing the discussion from here #56 but also looking at how we can improve for November from the Amsterdam event. This was a really neat opportunity in Amsterdam filled with folks excited to learn. So much so that an overwhelming amount of people showed and we needed more help. Please let us know especially if you'd like to mentor. Let's plan the Code & Learn!

Please edit these things! This is a draft.

Organizers

Mentors

Folks who are excited to help with installfest funtimes, assist attendees in identifying issues to tackle appropriate for skill level, patiently wade through code with attendee, etc.(Please list OS you are comfortable helping on next to your name)

Day-of Agenda

Dec. 1, 2016
08:00-09:00 Breakfast
09:00-13:00 Installfest and Code & Learn(should this be a longer time frame?)
13:00 Lunch

AV Setup

  • Big projector/screen with HDMI(do we need something else?) and audio output
  • Microphone on podium
  • Power outlets for tables
  • WiFi
  • File server for npm installs(see 'Logistics to prep' below)

Space Setup(proposed due to venue space available)

The events team has shared an image of the setup they thought should work.

Outreach

A description of what Code & Learn is will be a great way for us to spread the word so people will register and attend in Austin. Anyone who would like to attempt a bit of copy for this gets brownie points! PR and Marketing at the Node.js Foundation will happily share this and post the full agenda on the conference website

  • reach out to local groups to encourage attendance(@hackygolucky and @mikeal have a list of these)
  • share on Twitter, GitHub, other social media

Logistics to prep

  • create a specific Code & Learn label, which picks good first contributions that can be completed in a shorter amount of time.
    • have folks from @nodejs/ctc help filter through issues to apply this label
  • Publish installfest/setup ahead of time for those who would like to prep ahead(can also relieve burden on network for installs day-of)
  • Prepare fresh clones on usb to pass around to alleviate network burden(potential security concern) or set up a file server ahead to bring onsite
  • A plan on ways we can encourage those attending to celebrate when they have small wins. Something we can have for them to share that ex 1: a button on a website attendees can press whenever they achieve something(had problems with Installfest and it's finally working, debugged something and it is understandable now, got a PR up) and it does an audible 'woohoo!' to the Code & Learn workspace. Ex 2: tally shown on projector of folks pressing said 'small wins' button to show that we're moving along. This also lets mentors know when more folks are having trouble or are in the weeds because it is far less active.

Question(s):

  • Do we still want to call this Code & Learn? Some folks expressed confusion and would like to combine efforts with @Trott's awesome work for NodeToDo.

UPDATE 10/31

  • Diagram for seating was updated
  • looks like more mentors have entered their info as well
  • will ping folks soon to get on same page for mentors feeling well supported

UPDATE 11/16

  • 306 registrants for event. Attrition expected to be about 50%.

I am really interested in mentoring at this event. I'm comfortable with OS X and linux.

Trott commented

I think a less classroom/presentation setup and more tables with people sitting around them and looking at each other (and helping each other, whether they're mentors or not!) would be better, but I also wasn't at Amsterdam so I'm mostly guessing.

Trott commented

I think it would be very useful to get some variation of these instructions that I use for NodeTodo out to attendees ahead of time if at all possible. Coming to something like this and only finding out then that you need to install XCode Tools or whatever can be frustrating.

Trott commented

3 hours seems like the minimum amount of time, 5 is probably the maximum before mentors and others start to burn out, and 4 is probably the happy median.

Trott commented

On the celebration question: Maybe buy a hundred or so of a custom hexagonal sticker that people can put on their laptop or their name tag or whatever they want? They get the sticker after they submit a pull request. One-of-a-kind item, people seem to like stickers, any people who don't can just throw them out, and it's not a huge expense.

Trott commented

Consider opening up the mentor role to anyone who has contributed already, not just Collaborators.

If my Visa gets approved, I would love to help as a volunteer :)

I am comfortable with *nix and vim.

I'll be there and am I'm happy to be a mentor, preference is *nix, followed by windows.

Fun times! Reporting in with registration numbers--currently, 306 people have registered for this O_o which is awesome and also a little terrifying. We tend to see attrition for these signups at about 50%. So that still means about 150 people.

@Trott We ordered a surprise small swag for folks who come to Code & Learn and have a celebration moment. :) It's already been delivered to my house, just gonna bring it to Austin with me. We should prob figure out what that moment looks like, I was just a little worried that filing a PR may not happen for everyone that day even if they are trying. Probably a good discussion to have with the mentors prior.

Sam Roberts, Linux/OS X and vim. Also, not a member of this repo so can't edit description to add the info next to my name.

Trott commented

I'd propose making it the explicit goal to give attendees a map to getting a PR opened and get them as far as they can that day, but also give them a resource for getting further should they get stuck.

For Node Todo, this is what I give people: https://gist.github.com/Trott/4f527b7fc73d669aafa9858d865bc563

If people get to the point where they've submitted a PR, then ๐ŸŽ‰. Awesome. But if they don't get that far, it's not a failure. It's an awesome start. The barrier to entry for a lot of people is getting all the compile tools installed and working, so even if that's all we accomplish for a lot of the attendees, that's huge. That stuff is way scarier to a lot of people than changing a few assert.equal() statements to assert.strictEqual() or fixing up some typos in a markdown file.

Trott commented

I'd also say that we should see if we can identify some advanced topics ahead of time for people that aren't there to learn the basic mechanics of contributions but are there to offer their pre-existing expertise for some darker corners of the code where we need a deeper bench. Why wouldn't someone like that just dive in rather than come to an event like this? I don't know, but if someone does, it would be nice to be able to help them and also to ask them what the barrier was for them. (Maybe it would be, "No one ever asked." :-D )

https://coverage.nodejs.org/ would be a great place to point more adventurous attendees.

Qard commented

Looks like I'll be there, so I'm happy to lend a hand! My platforms of choice are OSX and Linux.

If my Travel funding happens I would love to help. I am comfortable with *nix, windows and vim.

Missed out on signing up before it was sold out, but just a quick shout out to all of you for organizing this and volunteering to help. Node Interactice has compelled me to contribute. Thanks for what you do.

@addaleax @Trott don't know what you are planning on having people do, but if you want a list of good first contributions:

doc

  • process.versions.module is not documented
  • IncomingMessage.connection is not documented, .socket is not documented
    either as to whether it is a Socket or a TLSSocket
  • UV_THREADPOOL_SIZE not documented as a node env var
  • what APIs use the thread pool not documented
  • NODE_TLS_REJECT_UNAUTHORIZED not documented
  • closed PR to doc the process.platform: nodejs/node#2446
  • signal docs problems: nodejs/node#2853
  • signal docs, do they make clear that waiting on signals doesn't ref the loop?
  • udp: rinfo is undocumented
  • fs: positional reads/writes don't document that they don't change fd position
  • http docs, and additional apis: nodejs/node#2461 (comment)
  • fix/doc path.format(): nodejs/node#2305
  • child.signalCode and exitCode and killed are not documented
  • return value and exceptions of child.kill() are not documented
  • https://iojs.org/api/child_process.html#child_process_options_stdio,
    'inherit' is now valid in the array, but undocumented
  • cluster.setupMaster and child_process.fork both support execArgv, but it is not documented for either
  • cluster, worker.disconnect(), return value not documented (should be this)
    • worker.disconnect().once('disconnect', doThis);
  • process.on(disconnect or process.on(message causes process to be refed!
  • udp: Event: 'listening'#, docs say:
    Emitted when a socket starts listening for datagrams. This happens as
    soon as UDP sockets are created. before bind()? I think not
  • _write is linked in stream docs, _read isn't, fix
  • tls newSession should have backwards compat note about callback
  • fs.access should have backwards compat note about availability
  • fix nodejs/node-v0.x-archive#8022, make
    http://nodejs.org/api/all.html#all_console_1 to point to
    http://nodejs.org/api/process.html#process_process_stdout

timers

  • nextTick should error on call with non-function, not async at callback time!

    process.nextTick('s')
    undefined
    TypeError: callback is not a function
    at doNTCallback0 (node.js:408:9)
    at process._tickDomainCallback (node.js:378:13)

child_process

  • fork .stdio doesn't allow the String!
  • windows spawn: nodejs/node#1009
  • child process, pipe: nodejs/node#2276
  • fork and spawn should take same options (stdio, in particular)
  • expose control channel, so it can be unrefed
    • c._channel.unref(); // There is no documented way to unref child IPC
  • document how to make a pipe on non-stdio... then make it easier

net

  • socket.write() emits error synchronously when socket was closed by peer!

udp

  • udp: send doesn't take a string, and has no sane defaults

tls

  • close handling bizarre, maybe it comes from net, and not just tls:

    t=tls.createServer({});
    t.close(function(){
    console.log('close cb',arguments)
    });
    t.on('close',function(){console.log('close ev', arguments) });
    close cb { '0': [Error: Not running] }
    close ev {}

dns

  • no arg validation:

    dns.lookup(undefined, console.log)
    {}
    null null 4

misc

  • readline: close should accept a callback
Trott commented

@sam-github Awesome! @addaleax and I created a massive list of things, but I want to use yours as well for people who already have a pull request or two in and are looking for something a little more challenging than "please change assert.equal() to assert.strictEqual()". Let's chat for a few minutes after the keynote?

@Trott Sure, I've been looking for you, unsuccesfully, I'm in the back of the room, audience right.

Trott commented

I'm in the back of the room, audience right.

Annnnnd I'm in the front, audience left.

@nodejs/collaborators Reminder: We will hold this tomorrow at 9am in Austin (15:00 UTC), so if you are around here, please come by and mentor people; if you are not but you have the time at your hands, feel free to start reviewing PRs! :)

Hi, y'all, I'd like to work on #9069 with @jasnell as a possible segue into following (and hopefully contributing) to his work on http2.

But if we find that I'd be biting off more than I can chew in the allotted time, I'd be happy to go over some of the TODOs in #4642

I really like @jasnell 's insight and articulation on Node, which is why I am requesting to pair up with him tomorrow, if possible! ๐Ÿ˜‰


I've gone over @Trott 's NodeToDo instructions to get started so, hopefully most of the leg work is done at my end.


Also, I helped organize the Austin NodeSchool event we had to day during Node Interactive NA, so, if there is anything that I can do to help with this Code & Learn, I'd be happy to help!


Really looking forward to it! ๐Ÿ‘
--Monico

@cdnadmin I'll definitely be there as one of the mentors and I'm happy to help in whatever way I can!

I have created a new code-and-learn label in the core repo to attach to any PR originating from this event. As PRs are submitted and being reviewed, let's use the label to help keep track so that we can make sure all of the PRs that are opened are quickly reviewed and handled.

Trott commented

@cdnadmin I think changing the error message in #9069 might be a perfectly good first contribution, although it's semver-major and will get more scrutiny than the typical code-and-learn contribution. #4642 might actually be harder than that and is a pretty good example of the shortcomings of good first contribution labels on projects. If you can find a TODO that was written by someone who is present as a mentor, that might work out well, though.

Trott commented

By the way, @cdnadmin, since you've already got node cloned and compiled, maybe be ambitious and try to do both! :-D

@Trott i did verify my command line tools, but I have not compiled yet ;-) But, I am about to try here in a minute.

I am going to work on the udp: rinfo is undocumented task

Going to work on process.versions.modules docs

@jasnell @addaleax Can you please ask contribs on-site to mention Code & Learn in their PR message. Would help a lot when labeling incoming PR stream.

shiya commented

Going to work on

dns

no arg validation:
dns.lookup(undefined, console.log)
{}
null null 4

anoff commented

I'll pick the process.nextTick issue
edit: apparently that's already solved https://github.com/nodejs/node/blob/master/lib/internal/process/next_tick.js#L135

i'm working on "closed PR to doc the process.platform: nodejs/node#2446"

Working: "http docs, and additional apis: nodejs/node#2461 (comment)"

anoff commented

Trying the childProcess expose control channel, so it can be unrefed

edit: already fixed

stv8 commented

working on worker.disconnect() issue

cluster, worker.disconnect(), return value not documented (should be this)
worker.disconnect().once('disconnect', doThis);

After speaking with @sam-github, he suggested that disconnect() should return a reference to the worker to allow chaining.

@imyller ... my apologies I did not see your comment until just now...

Closing this issue as the event lies in the past now! :)

well... the event does but the work continues! ;-) right about 100 PRs still pending reviewing/CI/landing. This is a good problem to have.