Recent Posts

Boxcar Conductor: Rails deployment made easy

April 15, 2008

In a previous post, I showed how we’ve been working on an interactive deployment process for Rails applications to reduce the time it takes to deploy to a Boxcar.

We began to move our Boxcar deployment recipes into it’s own Rails plugin and just made it available on GitHub.

Introducing Boxcar Conductor

The Boxcar Conductor plugin aims to automate the entire process for deploying to your Boxcar. We’re down to just a few simple commands to run to get your application up and running. While mileage may vary with other hosting providers, we did want to open up this work to the community and centralize our work with the community of Boxcar customers who have helped us build and test these tools.

Install Boxcar Conductor

If you’re running on Edge Rails… you can take advantage of the new support for installing plugins in git repositories.

Announcing Cobalt and monthly subscriptions for Boxcar

April 14, 2008

We’ve been designing and developing a new centralized billing platform over the past few months and late last week, we launched it! Along with this new billing platform, we launched another new application, Cobalt, which is a new account management and support tool for our hosting customers.

::: thumbnail Cobalt - account
management
[Uploaded with plasq’s Skitch!]{style=”font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080”} :::

We’ll be migrating all of our past customers over to this new system in time, but are initially using it for new Boxcar customers.

We’ve been building the new system to use Braintree as our new credit card payment gateway. With this switch, we’re also introducing monthly subscription rates for Boxcar, which means that you can try it out month-to-month now.

Over the next few weeks/months, we’ll be announcing several features to Cobalt that will ease your Rails deployment experience.

I want to thank all those on my team that helped get these new applications up and running.

If you’re looking for professional VPS-based Rails hosting, hop on our train by ordering a Boxcar today for $99/month!

For more information, visit railsboxcar.com or Planet Argon.

Also, be sure to follow Boxcar on twitter.

Portland is calling... (you)

April 11, 2008

We’re not looking for rock stars or ninjas at Planet Argon. ;-)

We’re looking for individuals that share our core values.

  • COLLABORATION - We believe that an open dialogue between all
members of a group helps to produce more reasoned and intelligent
decisions.
```yaml
-   **ENTHUSIASM** - We recognize the unique power of people who are
```text
passionate about their craft. We believe that fun is an essential
ingredient in a collaborative and vibrant company culture. We think
happy people make better software.
```yaml
-   **COMMUNITY** - We are part of many communities. Our neighborhoods,
```text
our cities, our workplace, and our professional communities. We give
back to our communities by implementing socially responsible
business practices and sharing our knowledge and tools with our
peers.
```yaml
-   **VERSATILITY** - We believe that it is important for our team to be
```text
open and flexible, as well as the work that we do. This allows us to
adapt to change and encourage innovation.
```yaml
-   **EXECUTION** - We value action and when people make things happen.
```text
It is important that we follow through on our commitments, plans,
and ideas.

..maybe you’re a .NET/Java/PHP/Python developer (who secretly plays with Ruby on Rails at night/weekends). We’re looking for an intermediate-level Rails developer to join our team. Ideal candidates would be in the Portland, Oregon area or willing to relocate.

PLANET
ARGON{width=”500” height=”333”}

If you’re interested, take a moment and introduce yourself.

git-svn is a gateway drug

April 10, 2008

As we’re migrating away from Subversion to Git, I’m having to learn a lot about git-svn. Andy has posted a few articles on this topic, but I wanted to share a quick tip that I find myself forgetting.

Working with Subversion branches

While you’re hopefully already familiar with how great local branches are with Git, you might not know that you can connect local branches to remote branches in your Subversion repository. This allows those of us who are using Git locally to work against Subversion branches.

I’m going to assume the following:

  • Your team is using Subversion
  • Your team already has a branch that you’re working in
  • Your team is following Subversion directory conventions
(`branches/`, `tags/`, and `trunk/`)
```ruby
-   You have Git installed (*with SVN extensions*)

### Checkout the Subversion project with Git

Please visit Andy's tutorial, [Git SVN
Workflow](http://andy.delcambre.com/2008/3/4/git-svn-workflow), for a
more detailed explanation of the following commands.

First, we'll initialize your new local Git repository with `git-svn`.
```text
```ruby
git svn init -s http://svn.yourdomain.com/repos/project_name
Now, you'll change directories to your new Git repository.
```bash
```bash
cd project_name
Let's fetch all previous revisions into your local
repository[^1^](#fn1){#fnref1 .footnote-ref role="doc-noteref"}.
```text
```text
git svn fetch
Great, once this is done... you're **master** (local) branch is linked
to `trunk/`.

### Mapping a local repository to a remote branch

Assuming that your team is working in a Subversion branch on the current
iteration of work. Our team has a naming convention for branches for
each iteration. For example, if we're in Iteration 18, we'll write this
as ITER-018 everywhere (Basecamp, Lighthouse, Subversion, etc...). At
the start of each iteration, we create a new branch with this naming
convention.

For `ITER-018`, the Subversion branch would be located at:

-   http://svn.yourdomain.com/repos/project_name/branches/ITER-018

If you were to do a `git branch -r`, you should see `ITER-018` show up
in the list. Now, the one thing that wasn't clear when I first read the
`git-svn` documentation was that you can't just checkout that branch
with one command. In fact, this has tripped me up a few times.

First, you'll need to checkout a new *local* branch. I've opted to come
up with my own convention for *local branches* and in this case, I'll
name it `iter_018`.
```text
```text
git co -b iter_018
So, now I'm in the iter_018 branch, which is local. I'm currently still
mapped to `trunk/`, which isn't what we want. However, all we need to do
is reset where Git is currently pointed to. We can run [git
reset](http://andy.delcambre.com/2008/3/12/git-reset-in-depth) to point
this to the ITER-018 branch.
```text
```text
git reset --hard ITER-018
That's it! Now, the local `iter_018` branch will point to
`branches/ITER-018` in your Subversion repository. This will allow you
to work with your existing repository branch and still reap the benefits
of local Git repositories.

### What about master?

Good question. The `git reset` command that you ran will ONLY apply that
that individual local branch. So, master is *still* pointing to
`trunk/`. This will allow you to have several local branches that map to
remote branches.

## Next Steps...

If you're working with Git already.. great!

If you're working in an environment that using Subversion, `git svn`
provides you the ability to start exploring Git without making your
entire team switchover. Perhaps your a consultant and working for a
client that uses Subversion... no problem!

We're still using Subversion for past client projects and are
considering [GitHub](http://github.com), which [just launched (to the
public) today](http://github.com/blog/40-we-launched) for future
projects. A few of us are already using GitHub for open source projects.

Fun.. I just saw the following tweet pass by as I began to wrap up this
post.

::: thumbnail
[![rails on
github](http://img.skitch.com/20080411-rgageidq82ak6ij952ppant4u9.preview.jpg)](http://skitch.com/robbyrussell/jeh1/rails-on-github)\
[Uploaded with [plasq](http://plasq.com/)'s
[Skitch](http://skitch.com)!]{style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"}
:::

[Check out Rails on GitHub!](http://github.com/rails/)

### The Gateway Drug... Git reminds me of Cake

### Questions?

I know that I glossed over a few things, so feel free to post questions
and/or tips for others who are looking to dabble with Git.

------------------------------------------------------------------------

1.  ::: {#fn1}
```yaml
You'll likely have problems if you don't have a Git authors file
specified in your git config.[↩︎](#fnref1){.footnote-back
role="doc-backlink"}
:::

1Password and Fluid.app

April 04, 2008

I’ve been really happy with my purchase of 1Password so far. If you’re not familiar with it, I would really recommend their free-trial. I’ve been really impressed with how quickly it became reliant upon it. 1Password works across several browsers, imports existing passwords, and even has integration with your iPhone. However, over the past month, I’ve been wishing that it worked with my Fluid applications.

1Password 2.6.BETA-2 was released a few days ago one of the features added was integration with Fluid applications.

::: thumbnail Fluid and
1password

[Signing into Lighthouse with 1Password]{.small} :::

I’m glad to see that Agile Web Solutions was so quick to respond to the flurry of people requesting this.

  • [Campfire messages in
Growl](http://www.robbyonrails.com/articles/2008/03/05/campfire-messages-in-growl)

iPhone's Missing Feature

April 03, 2008

I love my iPhone. There… I said it.

There is one problem with it (and I don’t blame Apple for it). Multimedia Messaging is pretty much non-existent with non-iPhone friends & family. My family continues to send me pictures/videos via text message… because they can with their other friends and family. I find myself looking at the following message quite often.

::: thumbnail IMG_5279.jpg
[Uploaded with plasq’s Skitch!]{style=”font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080”} :::

Then I go to AT&T’s AMAZING site…

::: thumbnail viewmymessage is
shit
[Uploaded with plasq’s Skitch!]{style=”font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080”} :::

…and I get a broken image.

Great work AT&T! Apple… this is tainting my experience with the iPhone. Make them fix it!

I am forking Rails

April 02, 2008

…well, creating a fork on GitHub. ;-)

::: thumbnail fork
rails
[Uploaded with plasq’s Skitch!]{style=”font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080”} :::

It appears that Rails is moving from Subversion to Git!

Courtenay posted this a little while ago.

Tip: Link to Unimplemented

March 27, 2008

Throughout our design and development process, we’re working around areas of the site that are not yet implemented but we also want to be able to allow our clients to demo their application. In an effort to manage their expectations, we need to be careful about what we link to. If a page/widget isn’t ready to be demo’d yet, we should avoid providing pathways to get interact with or navigate there. However, when we’re implementing HTML/CSS for pages, it’s sometimes makes sense to not hide certain things on the screen.

For example, let’s suppose that you’re working on the primary navigation of an application. You know what the other sections are going to be, but you’ve only implemented a few of them so far. Your HTML/CSS person is working on the design for the navigation and wants to have them be proper links… even to pages that don’t yet exist.

One option, which is quite common, is to provide a link with href="#". This works to some extent, but when people click on things, they naturally expect something to happen in response.

This approach doesn’t mesh well with our team as we don’t really want to field any questions like, “the navigation links are all broken. Nothing happens!”

So, a pattern that we’ve been using for a while is to trigger a javascript alert for every link within an implemented area that is linking to something that isn’t yet implemented.

Let’s take a really basic javascript function like:

Managing SEO-friendly HTML Titles with Rails

March 26, 2008

I’ve seen this come up a few times in the #rubyonrails IRC channel and figured that I’d post a quick entry for future reference.

Problem: HTML titles

You want to have a clean way to manage the titles on your HTML pages.

Managing Required Gems on Rails Projects

March 26, 2008

We’re starting a new project and I’m finding myself adding things to the code base that we’ve done in the past… hence the last few posts. As we’re doing this, I’d like to highlight some of the little things that we do on each project to maintain some consistency and in that process reach out to the community for alternative approaches.

I’m intrigued by the vendor everything concept, but we haven’t yet adopted this on any of our projects (yet).

What we have been doing is to maintain a REQUIRED_GEMS file in the root directory of our Rails application.

For example:

Things (in the Rails world) You Don't Yet Understand

March 25, 2008

This is inspired by a recent post by Seth Godin titled, Things you don’t understand, where he shared a list of things that he probably could understand if he put your mind to it, but doesn’t. I decided to post a list of five (5) things in response within the context of Ruby/Rails.

I’m really interested in various things but am really unable to prioritize them high enough to spend the time to understand them.

  • RSpec User Stories
  • Using Selenium with RSpec
  • JQuery
([Graeme](http://blog.imperialdune.com/) speaks highly of it)
  • JSSpec (BDD for Javascript)
  • Using the Google Charts API with Rails

What about you? What’s your list of things that you’d like to understand more about?