Repository for collaboration on the project for the Javascript Allonge group 2014
To gain a better understanding for two things - javascript and functional programming. I don't really like to call this a 'class' or a 'course', although it'll be structured somewhat like that. The main reason is that I'm in it for my own education, too. I want to learn from you guys, as much as I want to share what I have.
Javascript has a reputation for being all kinds of things. It's a badly written, inconsistent language (watch the first video. It's the best), but also universally supported as the language of the web. That's great, since that gives you a universal runtime for your programs, and you only have to worry a little bit about cross-browser compatibility. Javascript is super valuable to know well. If you can write good vanilla js, you can write lightweight and performant websites, prototype and code quickly, write your own tools, dig into other people's websites regardless of what library/framework they use, and a whole bunch of other things. Useful.
The thing that makes me even more excited about this group is functional programming. There are a whole bunch of nifty programming paradigms, among which procedural is probably the one most new programmers are familiar with - and is generally easiest to follow, and Object-Oriented is pretty popular and very powerful. Every paradigm breaks down at some point, though (including functional) - large procedural programs become very complex very quickly if not mixed with other paradigms; the object-oriented paradigm can't gracefully handle some types of data structures, and functional programming has problems, largely having to do with not handling side-effects well. But that's what this is all about! Many expert programmers/popular bloggers suggest that you're not a 'real' programmer if you don't know how to write functional programs. Who knows what that really means, but it is true that functional programming trains you to think differently about problems, and gives you a lot of great tools to write elegant, performant solutions to those problems. From my amateurish dabbling in the paradigm (I wrote a lisp-ish interpreter in javascript last year), I've developed quite a liking for it.
A big part of my motivation for starting this group is that I want to have fun with programming. I've always loved coding, but the beautiful world of algorithms and paradigms does tend to get gummed up with ugly things like low-level computational problems and business logic. The realm of computers I work in is a place that attempts to unify the number churning of computers with the high-level abstractions people talk in. There's always going to be tension there. It's easy to get lost in your failing unit tests and dying server processes and changing requirements. I want to take some time out of my week to just do the fun stuff. And I want to come back to my work with more enthusiasm and creativity to solve those problems. I hope this group does the same for you!
There are a couple things you'll need to do to get going with the project.
If that sounds hard, it's not. Here's a walkthrough:
If you're on windows:
git clone git@github.com:staab/js-allonge.git
.cd
into your js-allonge directory. Test everything out by running node test.js
. If "Hello World!" was printed to your console, you're in business!Over the next 7 weeks, we'll be building either a javascript library or application (or both!). What we build is something we'll decide on at the first meeting. Also, during the first 6 weeks, we'll be working through Javascript Allonge. We'll read a section, do some exercises, and then meet to talk about it. I'll probably come up with some extra exercises to center our discussion of core concepts around. Here's the reading schedule:
We'll meet at 7-8:30 PM every Thursday night October 9th - November 20th. We'll be meeting at the MosCoWork space on 3rd Street. Admission to the group is free, but you won't be admitted if you don't sign up before the second meeting. Check out the official page here.