RailsThemes is a project that I’m working on with Eliza Brock and Luke Flener. It is like WordPress themes, but for Ruby on Rails applications. Basically you purchase a theme on our website, and then you can install it on the command-line and have a site that is easy on the eyes in a matter of minutes. Traditionally, you would have to spend a lot of time and money to get a good looking theme.
What day of the week is it again?
Eliza lives in Nashville. I live in Indianapolis. Yet we were able to spend about two weeks together in the same location working on the project over the course of a couple of months due to some creative scheduling.
The benefits of working in close physical proximity are fairly well documented (see Peopleware). For me it is speed of getting feedback, better design sessions, and general morale boosts.
When the project first started, we talked on the phone and I said that I needed to find a weekend to come down there so we could work together. Eliza reminded me that I can work whenever I want to, so I could come down for a few days in the middle of the week and that would work. I said that made sense, and then five minutes later, said, “OK, well I’ll find a weekend that works and then I’ll come down,” and then immediately re-realized that I could come down on a weekday. Old habits die hard I guess. :)
So I picked a Monday through Wednesday trip and drove down and back while listening to audio books (a good use of the dead time.) Later iterations of the “work weekend” as we came to call them had me riding on the Megabus to free up time to work on things or read or relax. We would get a lot of work done during those periods, so it was worth the cost of traveling. I went down to TN, she came up here for a week or so, we met in the middle in a Kentucky state park and used a MiFi to get internet, and I went down there again right before RailsConf to finish up some things. So overall, a pretty productive way to get things done. We could also work on things outside of these blocks, but they were very effective in staying on task and ensuring that the time was used well. The opportunity cost of traveling made it really unappealing to waste time.
Scheduling things like this does take its toll. At some point in the last month, I tried to order the Wednesday lunch special and after a puzzled look by the waitress, was informed that it was Friday…
The installer is what I’ve most been working on for this project. I also worked heavily on the payment gateway and backend tools to help us create and manage themes. We came up with the idea of a command-line installer to allow devs to quickly get up and running with installing a new theme (full source and history here). The idea is that the installer does most of the heavy lifting of looking at your project and determining what files you want, and then asks the server for the right set of files and installs them correctly.
I researched how to make a gem, and used Bundler to generate the scaffolding. Then went through and developed it using (mostly) test-first development. Sometimes there were issues that were easier to track down by running the installer on my machine, and then I could make the appropriate changes to the tests afterward. I think this is a good example of “spike and stabilize”.
One cool thing that I ended up using was fakefs. This allows you to stub out file system calls and thereby test things without needing to actually touch the file system. This makes for more repeatable tests, reduces the need for cleanup, and possibly speeds up the specs as well. Before using it, I had functions that I was invoking that would operate on the filesystem, and then would mock those calls. However, fakefs works by setting up a fake filesystem (hence the name!) that you can run your tests on and then make assertions about the state of the filesystem. Overall a much cleaner solution.
Progress update: Early-access beta
We still have a few kinks to work out, but we have themes and people are starting to help us test them out. If you work with Rails projects and you haven’t signed up yet, check out RailsThemes and we’ll let you know when things are rolling.
We are planning on coming out with a new theme every month, and some extensions like themes for emails that you end up sending out through your app.
It’s too early to say whether RailsThemes will be a financial success or not. I think the next couple of months will shed some light on this. However, I’m glad that I worked on it so far. I had been wanting to work with Eliza on a side project of some sort for a few years. I think we made an ambitious but achievable schedule and really executed on it. My confidence to be able to do projects has gone up. I better understand how hard it can be to make something.
I think regardless that we are creating value, and that good Rails themes are something that I wanted to have in the world. If things don’t work out, I also think it will be a good data point for me to refine future business ideas.