---
title: recap.capeco.de
teaser:
tags: news,web,design
author: Nick Quaranto
published_on: 2010-08-26
---

We had a lot of fun last week on the Cape. Here's a small recap of the
mini-projects, open source work, and more that we managed to get done between
hot tubbing, s'mores on the beach, and some Rock Band.

![''](http://www.classicmapart.com/store/contents/media/l_CapeCodeL.jpg)

## Code Katas

Dan Croak and Brian Mulligan sparred with Uncle Bob's [Bowling Game
Kata](http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata) as a <abbr
title="Test Driven Development">TDD</abbr> exercise. The fruits of their labor
are [on github](http://github.com/croaky/bowling). In related news, our pals at
[EdgeCase](http://edgecase.com) started [Ruby Koans](http://rubykoans.com/), a
great site to be enlightened about Ruby.

## Node.js Websocket Mice Explosion

I wanted to learn more about Node.js, and [this blog
post](http://jeffkreeftmeijer.com/2010/things-i-learned-from-my-node.js-experiment/)
was a great inspiration. I ended up getting the small example from the Jeff's
blog working and showed it off during our lightning talks.

## Who

Mike Burns took a look at how we write controller actions and how conditionals
are handled in languages like Smalltalk or the Either type in Haskell. He thinks
we can do better in Rails. A little taste:

```ruby
class UsersController < ApplicationController
  def create
    User.create_from(params[:user]) do |result|
      result.success(redirect_to_object_with("User created!"))
      result.failure do |user|
        flash[:error] = "You fail."
        redirect_to root_url
      end
    end
  end
end
```

This is still incubating but hopefully we'll see it soon!

## CSS3 Ralph

Our newest designer Phil LaPier whipped up an all <abbr title="Cascading Style
Sheets">CSS</abbr> version of thoughtbot's mascot, Ralph. Feast your eyes upon
its magnificence [here.](http://plapier.github.com/CSS-Ralph/) Make sure to bump
the font size, too!

## Loxosceles

Josh Clayton started learning C during the trip and got his toes wet by starting
a graph database called [Loxosceles](http://loxosceles.info). Also of interest:
[NoSQL Summer Boston](http://nosqlsummer.org/city/boston) is discussing graph
transversals tonight, if you're up for a swim.

## Layer Tennis match

Inspired by [the pros](http://www.layertennis.com/), Kevin and Phil decided to
have their own match. [Check out the results
here](http://thoughtbot-layer-tennis.tumblr.com/).

[![''](http://thoughtbot-layer-tennis.tumblr.com/photo/1280/982769435/1/tumblr_l7gj4jslvf1qdr669)](http://thoughtbot-layer-tennis.tumblr.com/)

I hope this will be a more regular event for our designers, how about you?

## Paperclip storage refactoring

Jon Yurek has a lot of requests for other storage engines with Paperclip, other
than the filesystem and using S3. A new gem isn't released yet, but the
necessary refactoring was done to allow this to happen. Review the patch
[here!](http://github.com/thoughtbot/paperclip/commit/bb2d3b018edf1e37bd9ceb293d5684814435804a)

## GIT INCEPTION

I tossed together a little talk about some underused git tricks. My favorite
from this set: `git notes`, which is now [supported by
GitHub](http://github.com/blog/707-git-notes-display) too. [Plant some ideas in
your mind.](http://www.scribd.com/doc/36137179/git-inception)

## Gemcutter Hacking

Matt Mongeau and I worked on pushing out some changes on
[Gemcutter/RubyGems.org](http://rubygems.org). We finally got around to
deploying changes to move over to the fantastic
[Fog](http://github.com/geemus/fog) library for talking to S3, and also a new
endpoint to hopefully speed Bundler up with some Redis magic. A small sample of
what we whipped up is [here.](http://gist.github.com/532115)

## PORM

Mike Burns and Harold Giménez took a crack at a Ruby ORM for PostgreSQL that
fully embraces PostgreSQL's features making it Postgres-specific. They spent a
few hours working on the DDL, INSERT, and SELECT aspects (which later influenced
Who, mentioned above) before working on the Postgres fun: check constraints for
validation, not null, unique, and foreign key constraints. They spent some time
adding support for [most postgres data
types](http://www.postgresql.org/docs/9.0/static/datatype.html), and took a
crack at supporting table inheritance.

The following is working code, which creates a users table and an admins [table
which inherits from](http://www.postgresql.org/docs/9.0/static/ddl-inherit.html)
users. No more STI.

    class User
      include Porm::Table

      attributes do |t|
        t.string    :login, :null  => false
        t.integer   :age,   :check => '(age >= 18)'
        t.ip        :last_ip_address
      end
    end

    class Admin < User
      attributes do |t|
        t.boolean :super_user
      end
    end

## Effigy on Rails 3

Joe Ferris worked on Rails 3 integration for
[Effigy](http://github.com/jferris/effigy/tree/rails3), his chaos-free view
engine. Check out the [README](http://github.com/jferris/effigy/tree/rails3)
for more info on using it and integrating it with your app.

## Awesome StyleSheets

Tristan Dunn cooked up a new alternative to <abbr title="Cascading Style
Sheets">CSS</abbr> to ease the pain. Here's some of the syntax his parser
supports:

```css
:button {
  font-size: 36px;
}

:button < div h1 {
  font-size: 72px;
}

div {
  background: #4C4;
  padding: 16px;
}
div h1 {
  color: complementary;
}
```

Nothing's released here yet, but if you're interested let us know!

## See you next time

We'd love to see you at the next [capeco.de](http://capeco.de), so make sure to
stay posted by following us here. We had a lot of fun last week and we hope
you'll be along for the next one.
