<object width="560" height="349">
<param name="movie" value="http://www.youtube.com/v/vtP-S9OS0o0?fs=1&hl=en_US"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/vtP-S9OS0o0?fs=1&hl=en_US" type="application/x-shockwave-flash" width="560" height="349" allowscriptaccess="always" allowfullscreen="true"></embed>
</object>
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 more
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 more
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 more
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 more
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.
Read more
Coded and used by the Github team,
Resque is a Ruby queue for
processing background jobs built on top of
Redis. So far, I'm really enjoying
the simple setup and simple API. The documentation gives a lot of
good background information, and it's been working well overall.
Follow the jump for a day-to-day usage reference.
Read more
Three weeks ago, I started as a full time software developer at
Intridea. It's been an absolute blast so far,
but it happened so quickly that I'm still somewhat dazed at how I got
here. Just two month ago, I was in Israel and Egypt visiting
Wendy and working on
Outspokes, and now I'm working with energetic
and talented individuals; all of whom I've never seen in real life
before, but many of whom I've heard of in the Ruby community.
Read more
I started working with MongoDB a few days
ago. To oversimplify, think of Mongo as a really big and fast hash
that gets saved to disk. It lets you query, retrieve, and manipulate
data in Javascript and JSON. I
had a ton of work to do, so I didn't get a chance to explore the
technology as much as I would've liked. Today, after getting a solid
night's sleep, I got a chance to experiment more. Read on to get some
quick tips about writing Mongo queries and generating reports from the
Mongo shell.
Read more
Delivering email is easy. Having that email actually get received is
freaking hard. In this era rife with spammers, if you don't jump
through several hoops of verifying yourself, your messages will be
automatically marked as spam during transit, and never see the light
of an inbox. I didn't realize how tricky this was when I first
started sending out email for Outspokes, but
when our account activation and notification emails were always being
delivered to the spam folder, I dug deeper and learned quite a lot.
Follow the jump to save your future emails.
Read more
When I started planning out
Beerpad, I wanted to focus on
fun beer ideas. I'm perfectly capable of setting up an environment
for a Rails application to run in, but I didn't want to waste a
morning doing a bunch of chores and have nothing but a "Hello World"
page to show for it. Once I had my designs, I wanted to prototype the
juicy real features right away. Enter
Heroku. Heroku is a service for hosting
Ruby webapps. I've been interested in the service since I saw Adam
Wiggins demo it at a SVC Ruby
Meetup. Heroku is a
one-stop serivce for starting a database-backed, Rack
compatible, Ruby webapp. They use git to
version control your code, Thin
to serve your traffic, and Postgresql to
store your data. They also have add-ons
that webapps may find useful. I've been looking for an excuse to play
with the service, and Beerpad fit the
bill perfectly. Follow the jump for my experiences.
Read more
The gray and wet weather outside put me in an gloomy mood, so I didn't want to write any 'unhappy' code and regret it later. Instead, I headed to Cup of Joe on the corner of Dizengoff and Gordon to read 37Signal's book 'Getting Real' while enjoying a creamy cappuccino. Follow the jump for a short book review.
Read more