Welcome to the BuildingWebApps.com Blog. In the blog you'll find our musings and mutterings about Ruby on Rails, building this site, and building the business. If you're looking for technical articles, click one of the tabs above.
As promised, we’ve just pushed out Episode 7. It covers the ins and outs of Ruby on Rails testing support, from the basic terminology, through the technology, and all the way to some of the current philosophies on the topic.
The Ruby on Rails community has recently discovered Behavior-Driven Development which is very cool, but I think a lot of mileage can be achieved with the technique it was spawned from, Kent Beck’s Test Driven Development (see the book of similar name).
For the new practitioner, getting any tests going is a step in the right direction. This happens to also be an area where the current literature for Ruby on Rails developers is growing stale, so we hope to add some useful content in future BuildingWebApps.com articles too.
If you have useful testing links or stories of how TDD saved your bacon, please let us know.
As promised, here is one of my occasional travel updates for those interested in meeting in person.
Next week, Michael and Christopher will be in San Francisco hosting our Rails Quick Start seminar on February 20th – 21st, 2008. We still have limited room left if you’d like to attend and get up to speed on Rails!
Michael and Christopher will be at SXSW (South-by-Southwest) Interactive March 7th-11th, 2008 in Austin, TX.
We’d love to meet BuildingWebApps.com visitors or Learning Rails listeners. Drop us a line or catch us in person at any of the above events!
That’s a whacky title…
A few folks have asked if the next Learning Rails episode is still planned for next week given the overlap with our seminar preparations. The answer is absolutely! I’ll post again when it is out Monday, but in the next episode we are covering the basic concepts around testing in all of its various flavors. You’ll also have to excuse the coining of a new term…those of you who have known me for a while know I have a knack for naming things that become terms that just won’t die. In this case, after an explanation of Test Driven Development, I’m laying claim to the term for the opposite of “Test First Developers” being “Test After Developers”, as in “a TAD too late”. It probably isn’t clear where I stand on testing.
Although there is a lot of attention being cast on other “fill-in-the-blank” driven development, we’ll be sticking to simple testing and modest TDD coverage at our seminar. While I believe strongly in these concepts, the sheer quantity of new information for folks is overwhelming, and I want to keep with the general coverage of the overall getting started topic in an introductory course.
One week from today our RailsQuickStart seminar begins in San Francisco. We still have some seats left, but they won’t last, so if you’ve been thinking about signing up, now is the time.
Chris and I have been hard at work on polishing all the course content, and I’m really pleased with how it has come out. We alternate between three kinds of sessions:
- Lectures, in which we explain the concepts behind Ruby and Ruby on Rails
- Live coding sessions, in which we build a sample application, while we explain what we’re doing, how to use the tools, how the sample app works, and the design decisions made along the way
- Lab sessions in which attendees work on their own computer and extend the sample app using assignments we’ll provide, or work on whatever they’d like help with
We’ve also put together a complete set of deployment recipes, so attendees will have their sites live on the web by the end of the two days, thanks to free one-month hosting accounts from Joyent. A few lucky attendees will also get a larger hosting package from Engine Yard. And everyone will enjoy some great food and an assortment of goodies courtesy of Sun Microsystems, whose NetBeans IDE we’ll be using in the class.
We’re setting everyone up with an Unfuddle account, which provides Subversion hosting with web access, a ticket system, and other tools to help manage your projects. It’s a pretty cool setup.
In addition to Christopher and I, we’ll have two very experienced Ruby on Rails developers on hand to help attendees during the lab sessions: Chris Bailey of Cobalt Edge and David Lowenfels of Internaut Design. Just having access to folks with their experience to answer your questions is worth the price of admission.
I’ve always enjoyed teaching a great deal, and I really look forward to next week. Back in the Microprocessor Report days, I taught many dozens of seminars on various aspects of computer hardware, and I’m thrilled to finally be back in training mode.
I admit having that stereo-typical engineering(?) trait of liking shiny new tools. It is always interesting to me to find a new and more efficient way of getting a task done, and I’m particularly fond of automation in my development practices. I’ve also been through enough project cycles to understand the trap of the golden hammer and the need to be very open to trying something new.
With that in mind, it was a lot of fun to enter the Ruby on Rails development world over the last couple of years and start sampling the offerings. Because of its relative newness, the tools world for both Ruby and Rails is a bit more sparse than other technologies. Due to its high profile and popularity, though, it is catching up quickly.
In our latest podcast, Episode 6 we direct our attention towards the tool ecosystem for Ruby and Rails, and present a whirl-wind tour of some of the tool categories and popular choices in those categories. In almost all of the tools we mention, we’ve had an opportunity to at least try them, and very much recommend you do the same. The great thing about most of the available tools is that they are open source offerings, so you can try freely and even make contributions back if you can. In the cases of the commercial tools we mention, the various vendors are paying serious attention to the community, and staying on top of the rapid evolution of the platform.
In the future, we’ll be adding many more links to tools to BuildingWebApps.com, so check there for more articles and resource links. We’d also like to hear from you regarding your favorite “must have” tool for your web development utility belt. If there are tools that you would like us to write-up, let us know that too.
During my several decades of computing, I’ve been through an assortment of platforms. My first computer (not counting the 8080 machine I built in college) was an Apple II. Then a couple CP/M systems (dual 600K floppies and 64K RAM!), an assortment of IBM PCs, and a long series of Macs.
Then, in the mid-90s, I abandoned the Mac. The price/performance was terrible, and this was in an era where performance still mattered. Apple’s market share had slide from more than 15% to 3% of the market, and the company’s management had clearly lost its way. They went through a difficult and costly transition to the PowerPC microprocessor, only to find that IBM and Motorola weren’t keeping pace with Intel’s performance. I wrote Apple off as a lost cause. (If you’re interested in entering a time warp, check out the editorial on the Macintosh’s future I wrote for Microprocessor Report back in September 1996. Remember Copland?)
Last week, after more than a decade as a Windows user, I went back to the Mac. I bought a MacBook Pro, and I have to say I’m really enjoying it. It’s a beautiful machine, with a great display and elegant software.
Why I Did It
This is not something I did lightly. It’s an expensive machine, I had to replace a lot of software, there’s the short-term productivity loss from the learning curve, and now I have to manage a mixed environment (at least until I can convert the rest of my family, which will be a costly proposition).
So why did I do it? There was no single factor, but rather an accumulation of small issues:
- My desktop and notebook PCs were both causing me grief. Various things had stopped working or become very slow, and I knew it was time for the dreaded Windows re-install to clear out the crud.
- My current Thinkpad Z61t, the latest in a long line of Thinkpads I’ve used for years, proved itself to be mechanically inferior to earlier models, have poor wireless range, and a really lousy screen. The MacBook Pro makes the Thinkpad seem like a piece of junk (though other Thinkpad models are better than this one).
- My wife’s PC died, and when we replaced it of course it came with Vista. The experience gave me no joy. It is hard to believe that Microsoft spent so many years and produced something that feels like just a slightly more annoying version of what they had before.
- My business partner is a die-hard Mac fan, and having both of us on the same platform will make life easier in a variety of ways. Most immediately, it means that we can use Keynote for our upcoming seminar presentation, instead of having to user PowerPoint or deal with import/export issues.
- I don’t have to feel like an outcast at Rails gatherings. Now I’m one of the cool kids.
The transition has not been painless, but with lots of support from my partner Christopher I’ve made the transition almost completely over the course of one week.
Why The Rails Community is Mac Crazy
If you’ve ever gone to a gathering of Rails developers, you may have wondered if you had slipped into an alternate reality in which Apple had won the platform wars. Why is this?
Some people will tell you that it is the elegance of the Mac user interface, or the efficiency of TextMate as a Ruby editor. But I think the real answer is that underneath, the Mac is Unix.
When you’re building applications that get deployed on web servers, they generally run under Linux (or perhaps Solaris). It just makes life simpler to run the same operating system on your development machine, and the Mac is a vastly more pleasant desktop environment than what’s available for Linux.
There’s also the occasional Ruby gem, or Rails plugin, that just doesn’t work under Windows. Since the Mac is Unix, whatever works on the server works on the Mac. And all the admin stuff that you have to learn to manage a server makes you a real power user of the Mac.
How Did Apple Pull This Off?
When I wrote Apple off a decade ago, there were three key things I missed:
- Steve Jobs
- The power of niche markets
- The iPod
I don’t think it can be overestimated what an impact Jobs has had on Apple’s success. Having a leader who has a strong sense of what makes a great product, and the guts to drive the company to fulfill that vision, is an incredible asset. It’s not a behavior that professional managers, such as the stewards who almost drove Apple into the ground, are capable of. And the PC industry, with its fierce price-based competition, drives everything toward the least common denominator. Oddly, the dynamics of the proprietary Mac business make innovation easier than in the open, oversupplied PC market.
The other big factor in the Mac’s resurgence is the strength of the Mac in niche markets. If it had a 3% share across all markets, it would indeed be in an unstoppable downward spiral. But in some markets, such as graphic designers and Rails programmers, it seems to have a majority share. The personal computer market is now so large that even niches are sizable businesses.
Finally, there is the iPod. Who could have guessed that Apple would have such a runaway consumer-electronics hit? They’ve sold something like 150 million of them, and they accounted for a quarter of the company’s revenue last year. This gives the company a cash cow that makes it easier to keep investing in the Mac, and it extends the Apple brand in the consumer market, sowing the seeds for future Mac purchases.
It really is amazing what Apple has accomplished.
Instead, this is a short aside on two of the proverbial questions of web application development (or more likely, at least for the first, any software development):
- Should we build “it”
- Is a browser the best place to implement/operate/or use “it”
Where “it” is variously a feature, tool, or whole application.
The second recognizes the trend of many web apps and technologies that sometimes the usability that you can get in a browser just isn’t all it could be (yet). Things like Adobe AIR, Google Gears, and apps like Google’s Ad-words Editor show the potential benefits to working with hybrids.
As we have continued to build out the back-end of the BuildingWebApps.com platform, we’ve continued to run in to both of these time and time again. Here is a recent example.
BuildingWebApps.com works in part by collecting external knowledge about the Ruby on Rails domain. One aspect of this is that we the human editors of the site read a lot of blogs, articles, and the like, and cherry pick those items that are particularly useful or interesting. From there, we add links to them from our site and categorize these links against our taxonomy.
The workflow has been very much a typical Blog reading exercise, but with very efficient link making thrown in. Think del.icio.us bookmarkleting on steroids. When you need to review hundreds or more things a day, you want the workflow to be fast.
At first, we started building a custom RSS feed harvesting and specialized reader implementation in Rails. After playing with this for a little while, we had one of those do’h! moments: “Let’s not build a full featured reader, we all have our favorites, let’s build something that glues those to our web service instead”. Yes, I know, profound.
With the most excellent assistance of Chris Bailey of Cobalt Edge LLC, we now have a nifty Ruby/Cocoa hybrid app that Chris discusses in his Code Intensity Blog. This new little app lets us use our favorite readers (I’m still a NetNewsWire fan) or even a browser, and harvest links with a minimum of fuss. I’m hopefully that someday if there is interest that this would be a good start to a public means of contributing links too.
His write-up gives some useful tidbits about using Ruby in the Mac OS X Cocoa world, creating a really sweet hybrid app in no time that, repeat after me, Doesn’t Repeat Anyone.
Last week, I had went to the Seed Conference in Chicago. Just one day long, it was one of the most unusual conferences I’ve attended, with a loose theme of fostering creativity in both design and business.
Making the trek to Chicago in January is not something I do lightly (it was 15 degrees and snowing), and the amount of travel hassle was higher than any trip in recent memory. What drew me in was having the opportunity to hear directly from Jason Fried of 37signals and Jim Coudal of Coudal Partners, and they didn’t disappoint. The third participant, Carlos Segura, wasn’t someone I knew of previously, but he was fascinating as well.
I’ve posted a writeup of the event over in our business section (which is, as you’ll see, very much a work in progress). Check it out and post your comments on the article: Seed Conference: The Creative Business Life.
Our fifth podcast episode has been posted today. In it, we dig a little deeper and explore some of the ins and outs of Rails form processing. At a conceptual level, we explain how forms and models work together, and the glue that binds them within the controller. Along the way, we touch on validation, error message passing, and utilizing Ajax techniques.
We received some great feedback for “more code”. We hear you! The show notes for the current series really are just showing snippets and are intended to simply illustrate a concept. In time, we’ll be going in to things in more depth, and at that point, we’ll provide full working source files.
Currently, we are working on preparation tasks for the RailsQuickStart. If you are just starting out, and not only want the concepts but also want to get your hands dirty with some friendly folks at your side, this is the place to be in February. The code we are using in the seminar will be a useful starting point for your own sites, and in it, we will be showing compete working examples of most of the concepts we cover in the podcast.
From time to time, Michael and I will be attending various industry events, conferences, seminars, and social gatherings. We would very much enjoy meeting people face to face and chat about the LearningRails.com podcast, our Rails Quick Start seminars, feedback on BuildingWebApps.com, or any of the latest Ruby on Rails or technology tidbits.
I will post our travel plans in this blog from time to time if you want to track us down.
This week, both Michael and I will be at the Web Guild’s Future of Web Apps talk on Wednesday, January 16th, 2008, in Mountain View, California at Google.
Michael will also be attending 37Signal’s SEED Conference in Chicago, on January 18th, 2008.
Don’t hesitate to say hello!