giant robots smashing into other giant robots

Written by thoughtbot

cpytel

Playbook video, “Development”, now unlocked!

We’ve just unlocked the 4th video in the The Playbook: Video Edition: Development.

In this 34 minute HD video I cover development, our development principles, our development process, the main tools we use, and our default platform choices.

If you haven’t grabbed this series, now is an excellent time as I’ll be hosting a live Q&A session for all who’ve purchased this Wednesday, August 1st, 2012 at 3pm US Eastern time.

This video joins the three other videos in the series that we’ve already released:

When you purchase this series of videos you also get one on one and group support directly from me and other members of the thoughtbot crew. Ask us any questions you have about startups, building successful application, Rails, and mobile and web development.

You can view more information about the video series on our workshops site.

cpytel

Third Playbook video, “Design”, now unlocked!

It’s been two weeks since we launched The Playbook: Video Edition, and that means we’ve just unlocked the 3rd video in the series: Design.

In this 30 minute HD video I cover design, our design principles, and our design process. As an illustrative example, I use our own application, Trajectory.

This video joins the two other videos in the series that we’ve already released:

  • Making plans and designing a product (15 min, Available now)
  • Building a team (15 min, Available now)
  • The design process (30 min, Available now)
  • Successful development practices and platform choices (20 min, Available 7/27)
  • Launching! (20 min, Available 8/3)

When you purchase this series of videos you also get one on one and group support directly from me and other members of the thoughtbot crew. Ask us any questions you have about startups, building successful application, Rails, and mobile and web development.

You can view more information about the video series on our workshops site.

cpytel

The Playbook: Video Edition

We’ve been giving an in-person workshop in Boston for a couple of years that goes through our best practices in successful web application development. People all over the world have been asking if there was a way we could bring this workshop to them.

This series of five high-definition videos is just that. I’ve made an introductory video which describes it in more detail:

When you purchase this series of videos you also get one on one and group support directly from me and other members of the thoughtbot crew. Ask us any questions you have about startups, building successful application, Rails, and mobile and web development.

The first video in the series “Planning” is available today. We’ll be releasing the next four videos each week for next four weeks, and purchasing the series today gets you all future videos as well as the support.

  • Making plans and designing a product (15 min, Available now)
  • Building a team (15 min, Available 7/13)
  • The design process (30 min, Available 7/20)
  • Successful development practices and platform choices (20 min, Available 7/27)
  • Launching! (20 min, Available 8/3)

For the in-person workshop in Boston we charged $250. Today, you can purchase this new video series, with the one on one and group support, for just $49 for you, or $199 for your entire company.

You can view more information about the video series on our workshops site.

jdclayton

A Tmux Crash Course

I’ve been using Tmux for about six months now and it has become just as essential to my workflow as vim. Pane and window management, copy-mode for navigating output, and session management make it a no-brainer for those who live in the terminal (and especially vim). I’ve compiled a list of tmux commands I use daily to help me work more efficiently.

Tmux Panes

If a tmux command I mention is bound to a keyboard shortcut by default, I’ll note that in parenthesis.

Session Management

Sessions are useful for completely separating work environments. I have a ‘Work’ session and a ‘Play’ session; in ‘Work’, I keep everything open that I need during my day-to-day development, while in ‘Play’, I keep open current open-source gems or other work I hack on at home.

tmux new -s session_name
creates a new tmux session named session_name
tmux attach -t session_name
attaches to an existing tmux session named session_name
tmux switch -t session_name
switches to an existing session named session_name
tmux list-sessions
lists existing tmux sessions
tmux detach (prefix + d)
detach the currently attached session

Windows

Tmux has a tabbed interface, but it calls its tabs “Windows”. To stay organized, I rename all the windows I use; if I’m hacking on a gem, I’ll name the window that gem’s name. The same thing goes for client applications. That way, I can recognize windows by context and not what application it’s running.

tmux new-window (prefix + c)
create a new window
tmux select-window -t :0-9 (prefix + 0-9)
move to the window based on index
tmux rename-window (prefix + ,)
rename the current window

Panes

Panes take my development time from bland to awesome. They’re the reason I was able to uninstall MacVim and develop solely in iTerm2. I don’t have to switch applications to switch contexts (editing, reading logs, IRB, etc.) - everything I do, I do in a terminal now. People argue that OS X’s Cmd+Tab is just as fast, but I don’t think so.

tmux split-window (prefix + ")
splits the window into two vertical panes
tmux split-window -h (prefix + %)
splits the window into two horizontal panes
tmux swap-pane -[UDLR] (prefix + { or })
swaps pane with another in the specified direction
tmux select-pane -[UDLR]
selects the next pane in the specified direction
tmux select-pane -t :.+
selects the next pane in numerical order

Helpful Tmux commands

tmux list-keys
lists out every bound key and the tmux command it runs
tmux list-commands
lists out every tmux command and its arguments
tmux info
lists out every session, window, pane, its pid, etc.
tmux source-file ~/.tmux.conf
reloads the current tmux configuration (based on a default tmux config)

Must-haves

These are some of my must-haves in my tmux config:

# remap prefix to Control + a
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# force a reload of the config file
unbind r
bind r source-file ~/.tmux.conf

# quick pane cycling
unbind ^A
bind ^A select-pane -t :.+

Workflow

During the day, I’ll work on one or two Rails apps, work on my dotfiles, run irssi, and maybe run vim in another window to take notes for myself. As I mentioned, I run all of this inside one tmux session (named work) and switch between the different windows throughout the day.

When I’m working on any Ruby work specifically, I’ll have a 75%/25% vertical split for vim and a terminal so I can run tests, interact with git, and code. If I run tests or ‘git diff’ and want to see more output than the 25% allots me, I’ll use tmux to swap the panes and then move into copy mode to see whatever I need to see.

Finally, I run iTerm2 in full-screen mode. Switching between OS X apps for an editor and a terminal is for chumps!

cpytel

Ask thoughtbot: What is Kickstart?

Kristof Bardos of Digital Natives asks:

Dear Thoughtbot,
I read about ‘Web Business Kick Start’ as one of your services. My question is, are you acting as a startup incubator, or merely like a kind of consultancy of tech and other business areas?

The Kickstart is somewhere in-between a startup incubator and our normal development engagement where we do agile, iterative development from concept to production.

In addition to the normal application development we usually do, we give our customer office space in our office and assist them in hiring a team to replace us. The people they eventually hire work right alongside us, being trained in Rails if necessary, our process for developing software, and the application itself.

After launch, and when the team is ready, we step away and the company goes on its own.

The Kickstart differs from a more traditional incubator in that we charge our normal application development rates, and we don’t assist with the legal setup and organization of the company.  However, there are no additional charges for any of the other services.  We don’t typically take equity in the kickstart companies, but it is something we are open to and evaluate on a case by case basis.

Building a successful business is about more than just the software we build. As with all of our customers, we take an interest in helping them succeed. Introducing them to our other contacts and potential investors who might help to make their dream a reality.

The majority of businesses we work with come to us with little more than the concept, typically in the form of a pitch-deck or wireframes. They are typically a single founder or a pair of co-founders who are either self-funded or have a small amount of angel investment. Most applications are launched, to production, in 4-8 weeks from the start of the project, and then go onto ongoing iterations from there.

Take a look at a video we produced with two of our customers.

I hope that answers some of the common questions we get about the Kickstart service.

Do you have a question about how we do something?  Get in touch with us and we might feature your question here on the blog.