Closed joshgillies closed 9 years ago
What date? Might try to organise same day in Melbourne
Also nodeschool/brisbane#1 so we could do an Aussie sync again. There were calls at the last Node.ninjas in Sydney for another one but I had to ask for organiser help.
Cool! We're aiming for Oct 18th, to coincide with the http://startupaus.org/startupSpring/ series of events. Would love to sync up with a few NodeSchool events across Aus!
What exactly is a NodeSchool?
Is it about Node.js
@grimley517 Your best resource for that question is over here -> http://nodeschool.io/about.html :)
Cool - thanks @jonnyscholes .
Hey @rvagg, @sidorares, others? are you able to make the 18th work for a collective Aus NodeSchool hookup? We're about ready to kick things off for the second Hobart event!
October commitments are already making me weep so I'm out sorry.
@joshgillies sorry, too busy as well
@rvagg @sidorares no problems, we'll work something out for the future! :)
@MattMS So I'm thinking we have a pre-event get together to run through the course material. We have a week from tomorrow to lock something in. Would Friday 17th work? We'll grab some food/drink and make a night of it. Thoughts?
I'm inclined to spend a night being part of the solution and write a basic javascript workshop, unless there's one I'm not seeing on the home page. Thoughts?
Absolutely, as a collective effort we could put together something geared toward teaching pure JS basics. I know @rvagg had some thoughts around developing a more entry level JS workshop. Did you happen to get anywhere with this, "Rod"?
https://github.com/nodeschool/workshoppers/issues/22
latest on that topic, I started something but didn't get far enough to share
Thanks! I'll take a look over those tonight and see what's up. @MalucoMarinero care to do the same and we'll compare notes? :smile:
More than happy for the meet-up on Friday! I'll have a look through that link and check out what you guys did last time.
I'm getting this feeling, looking at the beginner workshops, that in this format they are actually kind of broken. The people who come in at this 'I have no idea what Javascript is, or development in general' do not have a development environment, or any concept of 'the right way' of doing things.
I actually feel like it's best to build the exercises in the context of an in browser REPL if you're aiming to teach basic Javascript. My experience last time was that there was SOOO much time between typing and feedback that the beginner's got lost so quickly. You need something more rapid fire than single step tests with lots of dialog to give them as many quick wins as possible, otherwise they lose forward progress, get frustrated and quit. The workshop format works for sets of problems, but beginner programming is more like a constant stream of small exercises to keep them active.
I'm thinking something like your exercise text to the left, with a REPL on the right, which is checked for a trigger answer on every Print cycle. When the answer to the exercise text is found you advance it, so the user stays in the REPL.
Once you're through the REPL phase (used for variables, function calls, one liners) and you want to talk about control flow, you turn the right side into a split view, file is top right, output bottom right, update the output in real time.
All this real time feedback is about reinforcing the connection between the programming instructions and the result, and removing all the friction of switching context to the command line, running a file, saving a file, and the student learning a new text editor they've probably never touched before.
If I was going to spend a night on this problem, I'd really rather spend it smashing out a Single Page App in React, with exercises on the left, REPL/CodeMirror+Output on the right. I think if our goal is to make an entry level option for students, that's the way you do it, not through the terminal based workshop.
There has been a lot of discussion about building a browser REPL based "learn JS" workshop that is somewhat based on http://jsforcats.com/
I wrote a Node School terminal based "learnjs" https://github.com/mikeal/learnjs that is working with the validation needs some more work to ensure they really did what we required.
Yeah, http://jsforcats.com/ looks pretty good as a stop gap. Is there anything tangible on the discussion of building a browser based REPL though? I'd be happy to try and find some time to put one together and see what comes of it, provided I'm not reinventing something someone has already done.
pulling in @maxogden regarding jsforcats.
I was going to suggest JSFiddle but it doesn't really cover the Node part of NodeSchool.
JSFiddle doesn't work anyway for exploratory learning. We're teaching Javascript, JSFiddle is actually not a good solution for it becausee it's for play not verification, anyone, I've hacked up an idea that has almost zero content https://github.com/MalucoMarinero/beginning-javascript, but explores a couple of ideas, namely:
A worksheet like the Scala IDE, you can see the results of each line operation in comments to the right, An evaluation that shims console.log so you can see the results of console operations within the code, A lesson structure that can monitor the worksheet results and the console out, ticking off steps as they are completed.
I'll do a little bit more on that this morning.
A worksheet like the Scala IDE, you can see the results of each line operation in comments to the right
I wonder if LightTable might be able to do that. Sorry for not trying to evaluate that myself - had an issue with installing it on my current setup.
Yeah, well that's why I see an in browser solution as a good way to get around this, really quick to get new people up and running. With some use of eval and esprima I've managed to get something like this in real time.
If there's a syntax error it breaks at that point and highlights red, so all the code below it works, but looking at the example it does a good job of highlighting the flow of code. It's not complete but I'm pretty happy with what I've got out of it so far, and the lesson structure can analyse the code pretty closely, so you can match against individual line results, just as a value or as a whole identifier.
There's not much error handling in the lesson structure, it's either pass or fail right now for each step, but we could work on that. As a proof of concept I'm pretty happy with what's been pulled together for not too much work, but if we're to get this thing ready for next week I'd ask for someone to style it up and populate the lessons. (gotta do some real work too)
As before, the code is at https://github.com/MalucoMarinero/beginning-javascript, lessons are held in Coffeescript mainly because I wanted to see what things looked like if you could inline all the steps, I feel it's probably better for reading/editing a progressive lesson structure. Check out https://github.com/MalucoMarinero/beginning-javascript/blob/master/src/lessons/arrays.coffee for an example of the lesson structure I've used just to avoid messing around with file io or parsing.
I'd like to come back around to the idea of a tutorial in the browser but using the in-browser console (rather than something embedded).
One of the things we've learned with NodeSchool is that retention is much higher the less we create a "green room" for learning. The environment you run NodeSchool on is as close as we can get to running node normally, and you use your own editor and the environment you'll use in the future not just for learning but for writing code normally.
Similarly we use GitHub for organizing and providing help to people with issues down the line. That doesn't only give them a support channel but on-boards them in to GitHub which is where they will ask questions for all future programming :)
The cool thing about designing something using the browser's console debugger is that you're having them learn in the environment they will continue to use for years as they work with and debug websites. In the JSFiddle style learning environments I've seen built you run in to the same problem over and over again which is that people complete the class and are left with knowledge of how to program with little knowledge of how to apply it and no comfortability with the environment and tools they will actual use to do it.
Oh and to be clear I'm really intending this to be a tool for Javascript tuition only if it wasn't clear. This is to make sure beginners aren't left at a loose-end at NodeSchool, they show up, only get in like 2-3 lessons and then they're stuck. At that point there's no content to serve their needs, so mentors either have to make it up on the spot or pair them with others. Both are substandard cause they either tie up a mentor with a single person, or the person they're paired with gets less out of the day because it's way below their skill level.
I think the one problem with that is figuring out how to effectively hook what they're doing. I think for absolute raw beginners, they need the green room so they can at least get the basic fundamentals understood. Unless I'm mistaken it's not really possible to hook the console as heavily for a line by line evalutaion that shows control flow and that sort of thing.
After that beginning stages though, I think there's some cool stuff you could do with interacting with the page from the console, and that would be far easier to evaluate as far as success and failure at that point. You could also do some tutorials easing them into front end work I guess, with them altering the code for the page using their standard development tools. This sort of departs from the whole NodeSchool thing to FrontEndSchool though. :)
Depending on the levels of people that show up, would it be worthwhile splitting the "no JS exp" people into the REPL and showing the JS experienced people Node stuff?
That was my feeling, but hell I'm only gonna be there for half of it. The way I see it, there's a reason they start kids off with http://scratch.mit.edu/ at Code Club rather than some language with a development ecosystem. Yes, the ecosystem is important, but only if the fundamental understanding of imperative programming is there, that's what the REPL is there to assist with.
Hrmm, might be worth moving discussion around the tooling for absolute beginners to one of the following repositories/issues:
Now onto organisational things. The Hobart event is on tomorrow from 09:30 - 16:30 @ The Typewriter Factory. Catering has been taken care of as well as tea/coffee/etc supplied from a local cafe - with the costs for this sponsored by ACS Tas, so thanks to them for making that happen!
The mentors we've lined up for the day are:
A few of us are aiming to catch up ~08:00 at Machine Laundry Cafe for breakfast, so if you're in the area feel free to join us!
We also plan on trialing https://github.com/MalucoMarinero/beginning-javascript as a prototype for an in-browser style workshop aimed at absolute beginners. @MalucoMarinero and I have been working on it over the past week. Feedback is absolutely welcome! Ideally I personally would like to explore ways to using browserify on existing workshops to lower the barrier to entry to basically anyone with a web browser.
Feel free to chime in if I've forgotten to mention anything.
Look forward to seeing everyone tomorrow! :+1:
Moving discussion over here for post-NodeSchool Hobart II discussion/feedback #5.
Closing.
We have a date, a venue, and reason enough to run another NodeSchool in Hobart.
If you can think of anyone else who'd be interested in being apart of this feel free to rope them into this discussion.