A Most Resounding Thank You

Approximately one year ago (technically less, when you do the actual math), I went to my first ever technical conference, called NodeConf Summer Camp. I was just a young node padawan, eager to learn more about this funky little platform that lets you use JavaScript on the backend.

At camp last year, I met a whole lot of people, many of whom I had been admiring from the comfort of the Twittered Internet (oh hai, @dshaw, @izs, @mikeal, @polotek, etc :-D). I wasn’t sure how many of them would remember me, or even if any of them would think I was cool enough to hang out with beyond the confines of Walker Creek Ranch, but taking advantage of the opportunity to meet them in person was probably one of the smartest things I’ve ever done.

You see, it turns out amazing people hang out with other amazing people. One of those people at the time was Chris Williams. I’m not entirely sure how, but somehow he found out that I have a history with robots. This fact, combined with the fact that I wanted to start speaking, was the impetus that eventually got me to apply for a speaking slot at JSConf US 2013.

JSConf was easily one of the greatest events I’ve ever had the pleasure to attend. The talk I gave was, in and of itself, and incredible propellant for my career - when you speak on the JSConf stage, you can pretty much bet that many more stages will request your presence. (I myself have now received more talk invitations for October than I can physically attend… unless I manage to clone myself somehow.)

But JSConf also provided me with so much more - I made even more friends while solidifying friendships I’d started in the year prior (here’s looking at you, @rmurphey, @rioter, @angelinamagnum, and so very many countless others!). It also introduced me to Rick Waldron, with whom I genuinely hoped I’d get along, seeing as how we’d be spending a LOT of time together both at JSConf and NodeConf 2013 :)

Rick and I, along with @sarajchipps, @reconbot, and several others, held the first official NodeBots event as well - and what an incredible experience that was! The four of us helped more than 50 people build robots of every shape and size - many of the NodeBots attendees had never touched a servo before, and here they were creating toilet paper dispenser notification robots and cat annoyance devices. Best. Feeling. Ever.

Approximately one month later, I returned to Walker Creek Ranch for NodeConf 2013. This time, I wasn’t an attendee, but rather a presenter. How I managed to go from a node n00b to a node expert of sorts in the span of a year is the tale for another story, but I couldn’t have been as successful as I was without the assistance of the rest of the hardware session team, including Rick and Elijah Insua. We may have been exhausted, but damn if we didn’t have a blast!

And, of course, there was so much more to NodeConf this year than just running the hardware session. I - once again - got to strengthen friendships and make new ones (massive shout outs to @stubbornella, @olizilla, @nexxylove, @philmod, and omg so very, very many others). This year, I spent more time hanging around the campfire, making silly jokes, and giving awesome high-fives than ever before; I knew from the last NodeConf that those “little” things (which can easily seem silly and maybe even like a waste of time to some) were what would make my experience great and set me up for my next big adventure.

In short - I owe an incredible amount of gratitude to Mikeal Rogers for not only providing the node community with a place to gather, but also for creating an experience by which we can make the best of that gathering. I also owe some legitimate fraction of my newfound career as a JavaScript Roboticist to Chris Williams, for giving me a stage (JSConf), an organization (NodeBots), and a peek into the future that I’ve always wanted to be a part of, but didn’t know how to get to.

Also (and I can’t possibly forget this one) - a huge, undeniable thank you to my husband, Max Wallace, for pushing me when I was scared, challenging me when I was lazy, and congratulating me when I succeeded beyond my wildest imagination. Though I might have been able to get here on my own, it wouldn’t have been nearly as fun or exciting.

My friends, this is only the beginning.

Side Projects and Conferences

If you’ve been keeping up with my GitHub profile, you’ll have noticed that I have been slowly (but surely!) adding more goodness to vektor, the first purely robotics-based linear algebra module on npm.

Yes, it still needs documentation. And yes, the tests could be better (but at least they exist!).

But. BUT. (And I should have mentioned this earlier…)

My talk proposal to JS Conf US 2013 got accepted!!

Which basically means that I’ve also been spending the last several weeks becoming rather familiar with Johnny-Five, my little arduino, and a couple of servos. Take that, silly electrons!

If you’re going to JS Conf (tickets are technically sold out, but there is a waiting list!), you’ll also get the sweet opportunity to play with some NodeBots of your own (if you’re so inclined).

(And if you can’t make it to JS Conf, fret not; the talk will be taped and available for everyone to see sometime afterwards.)

As for the talk itself, I’m well aware that it’s a bit of a crazy notion - just wait for the presentation!

That’s all for now - if you’re paying extra special attention, you may find my code before I present it… ;-)

Converge SE


I am SO pumped to announce that I’ll be speaking at Converge SE in April!

I’ll be presenting “Node.js: The Good Parts” as part of the Development track.

The lineup is incredible - be sure to prepare yourself when tickets go on sale on January 30th at 10 AM EST!

A Preview into Chapter 2

On January 1st of this year, I wrote my first post about diving into web development.

And when I say “diving” - I really mean pinching-my-nose-and-squeezing-my-eyes-shut-while-jumping-out-of-a-plane-over-the-ocean.

I had this hunch, this innate desire to do something so very different (though tangentially related) to what I’d done before. It was a pretty big risk, to be honest. And I couldn’t be happier or more proud of myself for taking it.

I said I was green, and boy was I ever! When I started out, I couldn’t handle CSS, I barely knew what HTML could do, and I wrote JavaScript like it was C++. Looking back, I’m almost embarrassed - but that’s how I know I’ve grown so much ;-)

Knowing what I wanted to do, I didn’t spend too much time thinking about how to get there - I just went for it. I met with the CEO of the coolest web development company in town and asked him what it would take for me to work there. He said I needed to learn node.js, so I did. (No, really, right after that conversation, I went ahead and started reading up on it and hacking around.) I must have done something right, because they asked me to be an intern in their first-ever official internship program. And then I must have continued to rock someone’s socks off, because they brought me on full time as a Junior Developer after 5 weeks! Since then, I have been swimming in a sea of code - and it’s been truly, undeniably awesome.

I have absolutely loved my time at Skookum - the team is top notch and they have so many cool projects going on, it’s like being a kid in a web-based candy store. The Skookum family has also grown immensely and only gets more awesome with time - I am truly honored to count myself among its members.

Unfortunately, my first year as a web developer is coming to a close.

It is with this post that I bittersweetly announce that next year, I will be leaving Charlotte (and, sadly, Skookum :-() and returning to the great West Coast: I will be joining the incredible Storify team as an Engineer in San Francisco at the end of January!

At Storify, not only will I get to work on one of the first fully node.js applications on the web, but I will also get to help define storytelling and journalism in the 21st century. I just know that I’ll be learning even MORE over the next year, and I can’t wait to tell you about all of my sure-to-be crazy adventures as they happen! (And believe me, I’ve already got a few lined up!)

With that, I wish every one of you a wonderful holiday and a very Happy (Mayan!) New Year - thank you for an amazing 2012 :-D

2013? Let’s do this!


On a more personal note, we are really going to miss our friends and family in Charlotte. We’re also really excited to hang out with our friends out west, so…. boo/yay?

Backbone and Bootstrap for Beginners

Last weekend I challenged myself to learn about Backbone.js and Twitter Bootstrap.

(What about the robots, you ask? I know, I’ll get back to those soon - I just needed to do this, really.)

Having only a weekend day to get to the point where I really felt like I could have some honest opinions about both frameworks, I decided to do what I generally tell other people to do: find something that already exists and try to copy it. And by copy, I don’t mean just copy-paste-run, but start it from scratch. Think like a developer: How would you start this project? Chances are you don’t start at line 1 and finish on line 200; more likely, you start at line 1, stop at line 20, move that chunk down so you can start at line 1 again, realize you forgot something at line 25, tack on some lines between lines 50 and 55… and so on.

So that’s exactly what I did. I used Jérôme Gravel-Niquet‘s todos.js and copied it pretty much exactly. I used his design, I took note of the functionality, and I got to work. I didn’t finish, alas, but I did get really close. (The only reason I couldn’t finish it was simply due to lack of time.)

I used Twitter Bootstrap to help out with the styling. (I didn’t use any of the .js libraries because I didn’t need them.)

That said, here are my thoughts:


The ramp-up time for Backbone.js is much longer than Knockout.js. That is to say, it’s got much more functionality and has a whole lot more power. Knockout.js is really only useful for data binding. Backbone is extraordinarily useful for (and was pretty much created exactly for) creating complex, single-page web apps.

With great power comes great responsibility, however. I found that one of the major reasons it took so long to figure out what was going on in Backbone.js was that it’s just so… messy? Convoluted? Haphazard? Disorganized?

Basically, when working in node.js (and more specifically, express.js - though also more generally, any server-side MVC framework), it’s really easy to mentally separate models, views, and controllers: they’re physically separated into different files, making it really easy to just focus on a specific model, view, or, well, controller. In Backbone.js (though I’m sure it’s totally possible, and working with this one example I know I’m judging more than I probably should), there is no separation.

In every example I saw (probably because I specifically searched for “backbonejs tutorial,” which caters more to beginners), the app itself was limited to a single page of JavaScript. It got messy, and quickly! Plus, for every change you make in your model, you also need to make a change in the view. And then you had to decide if it was going to be in the model’s specific view, or in the app’s view… I think it’s fair to say that stuff got complicated, and quickly.

All this is to say that with more practice, I’m sure the decisions one must make in building a given app will become painfully obvious, thus ramping up development efficiency :-)

Twitter Bootstrap

I should start by saying that to date, I’ve only worked on sites/apps that were small enough to warrant hand-written CSS (by way of Stylus/nib). Which basically means, I’ve never used any style frameworks (960.gs comes to mind) - if for no other reason than I didn’t really need to. Also, in my attempt to become a world-class developer/software engineer, I knew that shortcuts wouldn’t help me really, truly, learn CSS basics.

Playing with Twitter Bootstrap, I noticed the following:

  • It’s pretty amazingly easy to get started - literally just include the stylesheet(s) of your choice and the extra JavaScript library (if you want it), and you’re all set and ready to go

  • It’s fairly overkill if you’re just trying to do something simple

  • You can’t just use Twitter Bootstrap - you’re probably going to have to add your own styles as well (unless you’re okay with your app looking like every other app that uses Twitter Bootstrap!)

All in all, Twitter Bootstrap is a good option for folks who are: a) in a hurry, b) not super familiar with CSS, and/or c) looking for easily-achieved styling consistency (with cross-browser compatibility and responsive-ness, to boot!).

There isn’t much more to say about Twitter Bootstrap - you really just plug it in and go. But again, if you’re just fixing up a personal site or a fairly simple little web app, you might not need it. On the other hand, if you’re just interested in putting together something fairly professional-looking without too much effort, then Twitter Bootstrap might be just the right CSS framework for you.


I need a bit more time and practice before I will feel completely awesome at Backbone.js. And I’m still deciding if Twitter Bootstrap is 100% worth it. But all in all, I really enjoyed the few hours I spent playing with them! On to the next project!!


Have questions/comments/suggestions? Feel free to comment!

Introducing: vektor! (And a semi-return to ROBOTS!!)

Now that I’ve gotten my head (mostly) around node.js, and it’s been at least a year since my last robot, it’s time for rockbot to get her robot groove back.

Robots and I have had a fun ride over the last 10 years - we courted, we dated, we broke up… we courted again, we moved in together, we broke up… And while I’m not sure where this relationship is ultimately headed, I know that despite this past year of playing with node.js and becoming a better JavaScript developer, robots will always be a part of my life.

So I’m going to try something new. I’ve already hinted that I’m playing around in the space between JavaScript and robots. And I have even submitted a talk on the next level of JavaScript and robots to JSConf US. In short: let’s do this.

:: cue music ::

To start things off, I’d like to introduce vektor - a robotics-based linear algebra module for node.js. When I started working on vektor a couple of months ago, there weren’t any useful linear algebra modules. Upon publishing the module today*, there are actually quite a few - though, in true OSS fashion, they’re all slightly different and are useful for slightly different things. So vektor is specifically for robots, and I’ll pretty much be keeping it that way for now.

The functionality that lies within vektor is critical for robot kinematics and planning - my two areas of expertise.

There’s obviously a lot more work to be done: it’s a pretty big project, adapting/redefining robotics theory in a non-traditional language like JavaScript. But stay tuned! Exciting stuff is sure to come, and I can’t wait to share it with you!

* I would have gotten vektor done sooner, except, you know, life. I’ll try not to let it happen again.