We’re all fairly new to Node, but it was a breeze working with express, a Sinatra like framework, and socket.io, a socket library with several transports for cross-browser support. The client uses canvas, CSS and JavaScript with some fancy graphics. We’re really looking forwarding to working on it more after the voting ends this Friday.
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.
Code Katas
Dan Croak and Brian Mulligan sparred with Uncle Bob’s Bowling Game Kata as a TDD exercise. The fruits of their labor are on github. In related news, our pals at EdgeCase started Ruby Koans, 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 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:
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 CSS version of Thoughtbot’s mascot, Ralph. Feast your eyes upon its magnificence here. 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. Also of interest: NoSQL Summer Boston is discussing graph transversals tonight, if you’re up for a swim.
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!
Matt Mongeau and I worked on pushing out some changes on Gemcutter/RubyGems.org. We finally got around to deploying changes to move over to the fantastic 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.
PORM
Mike Burns and Harold Gimenez 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, 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 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, his chaos-free view engine. Check out the README for more info on using it and integrating it with your app.
Awesome StyleSheets
Tristan Dunn cooked up a new alternative to CSS to ease the pain. Here’s some of the syntax his parser supports:
: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, 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.
This upcoming Monday, September 20th is the Mongo Boston conference at the beautiful NERD center - with the best view of Boston in the area.
We have been developing a MongoDB-backed Rails application that has grown past the “small app” level. I will be presenting a talk about the state of MongoDB Ruby libraries, how we’ve used them, how we’ve integrated with testing frameworks and other libraries like Paperclip, and some of the pitfalls to look out for. There will be code.
There are many interesting talks lined up, a hack session for many languages including Ruby, and many talks around MongoDB schema design, indexing and other great topics. At only $20, don’t miss out!
Being a designer, I’ve got a style I’m comfortable using to get the job done. This is a style that everyone is pleased with and can always be my go to method for creating a successful design. As fun as producing the same great design that impresses everyone is, I often want to explore new styles and try new things.
A predicament that I’ve always had with new projects is whether to try new things or stick with my tried and proven method of creating quality work. I’ve done both and never had a project fail or succeed because of the approach I chose to take. I have been happier with the result when using my standard styles and sticking inside my comfort zone. However, when experimenting with new styles I’ve grown as a designer and learned quite a bit. So which is the right path to take? In the end I definitely think the design path I choose to take needs to cater to the project specifics but that’s not to say the aesthetics won’t be influenced by styles I’m comfortable using.
Another issue that plays a factor is the thoughtbot design style. Do we have one? Do clients hire us in part because they like our specific style or just because they trust that we are good at design? I know some agencies like Happy Cog and MetaLab have very recognizable styles and are probably often hired because a client wants that style. If thoughtbot is hired to produce our style and I experiment with new things but still succeed in producing great design, is this a disservice to our clients?
I feel that since I’m a designer, I’m a creative individual and as long as it’s in the best interest of the project, I’m going to try whatever I want. I’m not a machine that just outputs good work, I am a constantly evolving source of fresh design. If you continue to produce the same exact work in any walk of life, you’ll never get better and it’s always a goal of mine to be constantly improving.
One of my personal goals for this project was to get away from relying on the same techniques that I’ve become comfortable with over the years… and it was actually harder than I thought it would be. I found myself resorting to the same button styles, shading techniques, etc… and having to force myself to go back and change things up. I figured that if these guys can spend a year making a single piano, I could probably spend an extra couple hours here and there on refining these details.
It’s nice to know that other designers make an effort to veer away from their comfort zones in an attempt to make the client happier. As a designer, how do you feel about experimenting during client projects? Do you always stick to your comfort zone or do you try new stuff? As a client how do you feel about a designer’s approach? I’ve always been curious about these things and look forward to hearing some responses in the comments.