The War of Sem-Ver

In a previous post, I recommended following the official semver standard. I, however, don't always follow my own advice. I decided to dig into the spec, it's usage (especially in the Node.js community), and the recent change of npm install --save to use ^ (caret ranges) instead of ~ (tilde ranges) in order to better educate myself on this issue. This article is a summary of my findings.

Automatic Validation of Dependencies

The amazing Node Security Project is attempting to audit all node modules for security issues. There is a new endpoint available that allows you to submit your `npm-shrinkwrap.json` file and receive a list of security advisories for all modules in your dependency tree.

[Crosspost] NodeUp: a team groupon show

I was on NodeUp with Daniel Shaw, Sean McCullough, and Adam Geitgey talking about Groupon's move to Node.js. This was my first podcast appearance, which was pretty exciting. We talked about several things, but my focus was promoting testium!

[Crosspost] I-Tier: Testium

Crosspost from the Groupon Engineering blog! Testium is a new integration testing tool that allows you to write integration tests in JavaScript, Mocha, and with a sync API. Best of all, it's now open source!

Help npm Keep the Lights On

npm single-handedly enables Node.js module distribution and consumption. Without it, we would be lost. Help keep the lights on by donating to the project!

Announcing: facile.js 1.0.0

I felt that the "logicless" template engines had too much logic. In my desire to purge all logic from templates, I created one of the few truly logicless templates.

Announcing: bond 1.0.0

When switching from jasmine to mocha, I found myself missing jasmine spies. bond is my reproduction of jasmine spies (with a few enhancements) in a package that can be used with any testing framework.

Jarvis: An Entry for Node Knockout 2013!

Another year, another Node Knockout! Come check out our entry, Jarvis!

[Crosspost] How to Hackathon

Crosspost from the Node Knockout blog! This is a slightly modified version of my How to Hackathon post, tailored to Node Knockout specifically.

Idea Generation

Coming up with ideas for new projects can be hard. This is especially true when you need ideas for a hackathon. Here are some tips on getting those ideas flowing!

[Crosspost] Groupon: Dismantling the Monoliths

Crosspost from the Node Knockout blog! We talk about Groupon's move to Node.js and follow up with details.

[Crosspost] Groupon Sponsors Node Knockout 2013!

Crosspost from the Groupon Engineering blog! I'm excited that Groupon is sponsoring Node Knockout 2013. I competed in the previous two hackathons—it's always a lot of fun.

How to Hackathon

I gave a presentation about how to have a successful hackathon at Chicago Node.js. This is the blog post version!

Top 13 Board and Card Games

I've been enjoying the Top 100 Games of All Time lists from The Dice Tower in the past months. I don't think I can come up with 100 games that I really enjoy, but I can come up with 13!

Handling Errors in Node.js

The async callback standard in Node.js suggests that the first parameter of the callback is an error object. If that's null, you can move along. If it's not, or you have an error thrown elsewhere, you have to figure out what to do. Let's take a look at our options!

Managing a Node.js Project

Working with Node.js and npm can be a lot of fun until you have other people actually using your software! Now your users expect your code to work, especially when they use new versions that match their fuzzy selectors.

Managing Work Context with tmux

tmux is an amazing tool for managing terminal sessions. I use it to manage entire project contexts constently.

Avoiding Global State in JavaScript and the Testing Thereof

Testing your JavaScript can be painful. Managing the various kinds of global state seems to be the best way to protect yourself from mayhem. We'll explore those types and how you can deal with each.

The History of the Chicago Node.js Meetup

The Chicago Node.js User Group has been thriving recently. So, I wanted to talk about this growing group and how it fits in with Groupon.

JavaScript Testing with Jasmine and RequireJS

Jasmine is a great JavaScript testing framework, but I grew tired of managing the jasmine gem to work with my JavaScript code in a Rails application. For each new file, you have to add it to your jasmine.yml (or use a wildcard include). This means that every file is loaded every time you run your tests, even if you are only running a small batch of them. I wanted to address that.

Setting up a blog with Jekyll, Github, and dnsimple

Building a blog based on Jekyll and hosted on Github is a relatively simple process. We'll take a look at how I set up this very blog!