Playing with Meteor: Account Management is awesome

I started playing with Meteor – a Node.js and MongoDB framework – last week as a toy app to help some friends, and it is actually really nice. I don’t know yet how serious it is – I’ve only got maybe five hours playing with it – but one thing it has over almost every other framework I’ve played with lately: a trivial way to handle account and user management.

meteor add accounts-ui accounts-password alanning:roles

… and done. To provide a login component, you add an invocation to your HTML template:

{{> loginButtons}}

Role management isn’t quite as trivial; you have to set up the roles for the users, but checking for roles is pretty easy too:

{{#if currentUser}} 
    You're logged in.
    {{#if isInRole 'admin' 'default-group'}}
        You're in the admin group.
    You're not logged in.

Considering that this is one of the first things an application needs to set up, I have no idea why no other framework I’ve looked at has anything quite so trivial – or if it does, why it’s so hard to find. I’ve looked at multiple languages – Python, Ruby, Java – and multiple frameworks for most of those languages, and Meteor has them all beaten, hands down.

So for the first time I’m actually looking at using Javascript – via Node – seriously as a development platform for myself. It’s … interesting; my thought that Javascript just isn’t that great remains, and the Meteor interface to Mongo is actually quite constrained, but I think I can manage that.

The account management isn’t perfect – but it is good enough that you can actually get started with it, and focus on your app, while using what you need from the users collection.

In fact, some of the things about it are confusing – for example, account names seem to be populated (by registration) inconsistently – but these are problems that are probably caused by my lack of experience, rather than actual issues with the mechanisms themselves.

Well played, Node. Well played.


I hate interruptions. The funny thing is, though, that I interrupt people, too, so it’s a behavior that I despise while needing to work on it myself.

An interruption is a break in flow: while something is being done or said, hey, a squirrel!

It’s usually done by one person to another, though. (I interrupt myself all the time, and it’s just part of the natural flow of being.)

There are lots of reasons people interrupt each other – some are benign, some are not. They’re all annoying. My thought is: we can all do better, both as the ones being interrupted (sometimes there’s a good reason people interrupt me!) and as the ones doing the interrupting.

Most of the time, people interrupt others because they just don’t care about the person they’re interrupting. The target of the interruption might be working, or playing, or trying to explain something, or just thinking… and the interrupter seems to think, “What you are doing is not relevant to me, but I expect what I want to say or do to be relevant to you.”

If you’re this person, stop. Really. I’m begging you (and myself) to avoid interrupting someone, especially out of narcissism. What’s sad is that most of us interrupt in exactly this mindset, even if it’s not intentional or explicitly spelled out this bluntly in the narrative we tell ourselves.

Sometimes, though, an interruption is more well-meaning, even though it’s nearly impossible to be interrupted without resentment as a result. (Alliterative assault was accidental. Apologies.)

Sometimes the person being interrupted is taking a long time to say something, or do something, and the other person is trying to short-circuit the action for a specific effect.

For example, I record music, just for myself… and I usually intend to take fifteen or thirty minutes at a time to do it. But when I’m recording, time tends to lose meaning and definition, so I’m thinking “I’m ten minutes in,” and it’s actually been an hour and a half.

Then I get “interrupted” – mid-flow, often mid-recording – to find that dinner’s ready, or that I’m late for something. (Dinner, perhaps.)

The interruption is still annoying, honestly, but it’s deserved. My annoyance is misplaced. (And I know it, too; I tend to subvert that annoyance in moments.)

I could avoid the interruption by sticking to my own schedule, or by setting expectations. In conversation, I try to figure out what it is I have to say, and then I say it, directly, without a lot of explanation. The explanation, if necessary, can follow the point, just like an essay – “Here’s what I have to say, full stop. If you want more, I can give it to you.”

That way, even if I am interrupted, my point at least has a chance to be heard. (I usually don’t bother with the explanations anyway.)

It’s less fun to speak or write this way, I suppose; sometimes I like to hear myself talk, too, and sometimes I even like others to hear me, too, because it gives me the warm fuzzies to think that I and my opinion are valued by other people.

With that said: it’s also good practice. I write for public consumption, after all, and people scan rather than read, especially on the Internet – taking a long time to say something means that the “something” doesn’t get read.

On the Internet, you are “one and done” – if your first sentence isn’t enough, the second and third (and seventeenth) won’t matter.

None of this means that interruptions are pleasant, or that they say good things about the one doing the interrupting (or that the one being interrupted deserves it.)

Interruptions are, and will always be, impolite, even if there are circumstances under which they’re somewhat justified. Be aware of them.

(This public service announcement brought to you by Aveeno, which is the first thing I looked at after writing it – hey, a squirrel! Have you ever noticed how bright the color green can be when you measure it by…)