jonlachlan
Ws-low-level: A promise-based WebSocket library
meteor remove autopublish
meteor remove insecure
The Mongo-accessible frontent is genius. This makes your prototyping much faster, and you can totally skip the "model" layer of your frontend. It matches your backend automatically. No further configuration needed. No REST endpoints, no callbacks. And yes, it's secure.
Meteor's security model is very well-designed. The list of things left for the developer to do, security-wise, is very short.
It's still important to learn your tools and understand how security works.
http://security-resources.meteor.com/
Try Meteor (meteor.com). That way you start from a complete development environment, and you can focus on actually using JavaScript, as well as feel good about being productive. Bring in new libraries to play with using atmospherejs.com. Try to think of a small website that you can build (a todo list, a checkbook balance sheet, a notetaking app), so that you can have real problems to wrestle with and a real goal to strive for.
Use Meetup.com or other community groups to find other people to talk with. Be honest about where you are at ("I'm a total beginner"), ask people about what they're working on, be nice and apologize for not knowing much. Be confident about your ability to learn. Talk about what you're doing. ("I'm working on a small pet project so I can learn"). Go into detail if you can.
Be patient. Be persistent. Also practical. The JavaScript world is vast, you can't know about everything. Ask yourself, do I need to know about this cool library/technology right now, or should I spend my time doing something else, like actual coding? Think about the bikeshedding problem, i.e. "shipping" (finishing your project) is better than bikeshedding (https://en.wikipedia.org/wiki/Parkinson%27s_law_of_trivialit...)
Read an authorative book on JavaScript (e.g., JavaScript: the good parts). There's no substitute. No website or blog article will get you familiar with the "deeper" concepts of the language. Don't worry if you don't remember everything, just try to understand each of the concepts and then plan on re-reading it again 6 months from now. Plan on reading more than one of these books.
Have fun!
Were you thinking of partial application (not the same as currying)? I would agree that this is not argument deferral, rather it's more like argument presetting.
So in this case, not only CAN these people stop calling it "currying", but in fact they should, because it's the wrong word.
In my other comment I'm suggesting calling currying "sequencing", and partial application "presetting".
I have also learned a good deal more from these comments and further research. It seems my idea of "currying" was not entirely complete. Per the comment herein: "Currying turns polyadic function into a sequence of unary functions". Practically speaking, this means a curried function is a single-input function that will return a function which is still awaiting an argument, so that other functions can be added to the "currying chain".
I would call this "function sequencing". This term could be equally intuitive for functional languages (ML / Haskell) and non-functional languages alike. However, I think that non-functional language users will still appreciate an explanation that references "argument deferral", since this is one of the practical benefits, and is also the key part of the "functional" context-switch needed to understand the concept (i.e., you can compose functions without providing the arguments/inputs).
Is there an equivalent to "uncurrying"? (un-what-ing??) This verbiage sounds like we're trying to unpluck a chicken. On Wikipedia (the world's collective brain dump), we understand uncurrying to be "the dual transformation to currying, and can be seen as a form of defunctionalization." Crystal. I'll losely interpret this as flattening the unary (single-input) function sequence into one polyadic (multi-input) function. So can we refer to this as "function bundling"?
To summarize, I'm submitting "sequencing" and "bundling" as the two simple verbs that better describe "currying" and "uncurrying".
Can we stop calling it currying?
I recently learned what the heck "currying" means. I'm sure I'm not the only one who struggled to grasp what this term means, since its name does not come from an intuitive notion of the concept, but rather it is named after Haskell Curry who first explored this approach.A curried function allows an incomplete argument list, in which case it returns a new function that is still awaiting the...
There are many, many examples of functionality that you get for "free" without further set-up, and in my experience it empowers you, the developer, to build richer, better applications.
I think that the fact that the platform is stable and past 1.0, and the package ecosystem at atmospherejs.com is vibrant and high-quality, the answer is yes you can absolutely build an application with a large code-base. (And, I might add, you may wonder why you ever did it another way.) As for scaling, you're on a non-blocking node architecture, and so you're already doing pretty well. If you can't figure out how to scale it through the community, my understanding is that the folks at Meteor are working on a paid product that will make it dead-simple to scale to your heart's content. I am guessing that by the time you launch your Meteor-built product, there will be ample resources to hold your hand through it.