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.
- Set up a new ssh key
- Get the source code
- Set up your development environment
If that sounds hard, it's not. Here's a walkthrough:
- We'll be using ssh to interact with git repositories, and you'll need a public/private key pair to do that.
- Follow the directions here. If they don't work for windows, follow the directions just below.
If you're on windows:
- Sign up for a GitHub account if you don't have one.
- Install git on your computer
- Set up you ssh key with github if you haven't already
- Clone the repository by opening your terminal (ctrl+t or run+cmd on windows), navigating to the directory where you want to store the code, and running
git clone [email protected]:staab/js-allonge.git
. - Send me an email with your github username so I can add you as a collaborator to the project.
- Install Node (Windows/mac, linux)
- Install a text editor if you haven't. I use sublime text 3. Other good options are laid out here.
cd
into your js-allonge directory. Test everything out by runningnode 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:
- For October 9:
- Javascript Allonge Reading - Preface and Introduction
- Discussion questions and extra reading
- For October 16:
- For October 23 - Chapter 4 and Chapter 5
- For October 30 - Chapter 6 and Chapter 7
- For October 6 - Chapter 8 through Chapter 10
- For November 13 - Chapter 11 and Chapter 12
- For November 20, TBD
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.