You've just written a masterpiece of a web app. It's fun, it's viral, and it's useful. It's clearly going to be "Sliced Bread 2.0". But what comes next is a series of unforeseen headaches. You'll outgrow your shared hosting and need to get on cloud services. A late night hack session will leave you sleep deprived, and you'll accidentally drop your production database instead of your staging database. Once you serve up a handful of error pages, your praise-singing users will leave you faster than it takes to start a flamewar in #offrails. But wait! Just as Ruby helped you build your killer app, Ruby can also help you manage your infrastructure as your app grows. Read on for a list of useful gems every webapp should have.
Read moreNode.js Jumpstart
In a nutshell, Node is a Javascript framework for building network apps. Network apps are broader in scope than webapps. They don't need to run on HTTP, thus freeing you to write lower level tools. Node doesn’t necessarily have to be part of your core app, and in many cases, it makes for a good fit for writing some of the support functions for your webapp. I'll cover the basics of getting Node setup, some event driven programming, and some miscellaneous Node goodies.
Read moreMy Web Development Toolbox, 2010 Edition
2010 was a big shift in work environment for me. I migrated from an office to a completely distributed and remote team at Outspokes and then to Intridea later in the same year. Many of my daily tools stayed the same, but there's been plenty of additions to streamline my work. Here's an overview of my most used tools for web development.
Read moreModular Cocoa Interfaces
While iOS projects have the advantage of multiple NIB files, this is not the default for development on OSX. When working on a Mac or iOS project with more than one person, you quickly learn that attempting to merge conflicted Interface Builder files or XCode project files can only result in tears. But just because you can't work on the same NIB doesn't mean that the productivity of the entire team should be blocked by the one person editing MainMenu.xib. Cocoa allows you to chop your UI into separate NIBs and control them with multiple NSWindowControllers. Once you separate out different windows from MainMenu, you're much less likely to conflict with your team. As an added benefit, your UI will feel snappier because NIB loading will be delayed until it's actually needed. I'll demonstrate this technique by separating the Preferences window from the main window, a common and easy case for refactoring.
Read moreFixing Common Bundler Problems
When bundler first came out, I really wanted
to like it. It promised a clean way to declare dependencies on for
your application in a single place, and have that be definitive
regardless of what box your app was running on. Unfortunately,
reality didn't match up with promises and I've had plenty of headaches
from bundler problems. Read on for a list of tips I've pulled
together to save you some headache.