Thanks Rumblers and Sponsors!

Posted about 1 year back at Rails Rumble - Home

Thanks to all that participated in Rails Rumble 2007. You have shown the community what can be done with Rails given just 48 hours, either as a team or solo effort and that in itself was the purpose of the event. You’ve made us proud, to say the least! We’d like to take the time to thank Linode for providing the Rumblers (and us) with the use of their excellent VPS slices and we would not hesitate to recommend them to anyone who needs their own VPS. Also, thanks to our many sponsors; you have truly been a cornerstone in the success of this year’s event and your generosity does not go unnoticed.

Voting has been closed as of today and the Rails Rumble organizers are hard at work looking through votes. Please note that the organizers reserve the right to nullify votes if we feel the need is justified, so your app’s ranking could change.

Final voting results will be announced on Fri 09/28/07 at 5:00PM EDT at a special Ruby East keynote and at that time we will truly know who gets to take home the belt (and the pony).

Thanks again sponsers, rumblers, and judges for your participation and commitment. Lets do our best to make this a yearly (or even bi-yearly) tradition.

Looking for a Rubyist

Posted about 1 year back at opensoul.org - Home

ecounseling.com, a project that we worked on at Collective Idea, is looking for a Rails programmer to implement some new features and continue to expand their site.

The site is a Rails application with lightweight CMS, live chat using Campfire, membership management and credit card processing. The client has been fantastic to work with, the problem is just that there aren’t enough hours in the day. So we’re looking for someone that is interested in full-time or consulting work. The client would ideally like around 40 hours/week, but I could contribute up to half of those.

Let me know at the email on the right if you’re interested.

Thanks Rumblers and Sponsors!

Posted about 1 year back at Rails Rumble - Home

Thanks to all that participated in Rails Rumble 2007. You have shown the community what can be done with Rails given just 48 hours, either as a team or solo effort and that in itself was the purpose of the event. Thanks, you've made us proud! We'd like to take the time to thank Linode for providing the Rumblers (and us) with the use of their excellent VPS slices and we would not hesitate to recommend them to anyone who needs their own VPS. Also, thanks to our many sponsors; you have truly been a cornerstone in the success of this year's event and your generosity does not go unnoticed your generosity does not go unnoticed. Voting has been closed as of today and the Rails Rumble organizers are hard at work looking through votes. Please note that the organizers reserve the right to nullify votes if we feel the need is justified, so your app's ranking could change. Final voting results will be announced on Fri 09/28/07 at 5:00PM EDT at a special Ruby East keynote (http://www.ruby-east.com/rubyeast/agenda.php) and at that time we will truly know who gets to take home the belt (and the pony). Thanks again sponsers, rumblers, and judges for your participation and commitment. Lets do our best to make this a yearly (or even bi-yearly) tradition.

Two Interviews

Posted about 1 year back at the { buckblogs :here } - Home

I was interviewed twice recently, once by Robert Evans (of The Godbit Project) and once by Satish Talim (of RubyLearning.com).

The Godbit.com interview covers my introduction to computers, how I discovered Ruby, how I balance my time, and more. It was a real pleasure to chat with Robert—thanks for the interview!

The RubyLearning.com interview is actually just part 1 of 3, the rest of which will be published next week. This interview is an aggregation of responses from 13 different Ruby developers from around the world, and I was honored to be included.

Know your rails better

Posted about 1 year back at has_many :bugs, :through => :rails - Home

Burn/donate/throw away all your ruby/rails books

1
2
3
4
5
6
7
8
lifo:~/Rails pratik$ ruby ~/Rails/rails/railties/bin/rails foobar
lifo:~/Rails pratik$ cd foobar
lifo:~/Rails/foobar pratik$ svn co http://dev.rubyonrails.com/svn/rails/trunk vendor/rails
lifo:~/Rails/foobar pratik$ cd vendor/rails/
lifo:~/Rails/foobar/vendor/rails pratik$ find . | grep .rb$ | xargs perl -pi -e 's/^\s*?#.*?$//'
lifo:~/Rails/foobar/vendor/rails pratik$ cd ../../
lifo:~/Rails/foobar pratik$ rake doc:rails
lifo:~/Rails/foobar pratik$ open doc/api/index.html 

And you’ll know the difference in 15 days.

Have fun.

Know your rails better

Posted about 1 year back at has_many :bugs, :through => :rails - Home

Burn/donate/throw away all your ruby/rails books

1
2
3
4
5
6
7
8
lifo:~/Rails pratik$ ruby ~/Rails/rails/railties/bin/rails foobar
lifo:~/Rails pratik$ cd foobar
lifo:~/Rails/foobar pratik$ svn co http://dev.rubyonrails.com/svn/rails/trunk vendor/rails
lifo:~/Rails/foobar pratik$ cd vendor/rails/
lifo:~/Rails/foobar/vendor/rails pratik$ find . | grep .rb$ | xargs perl -pi -e 's/^\s*?#.*?$//'
lifo:~/Rails/foobar/vendor/rails pratik$ cd ../../
lifo:~/Rails/foobar pratik$ rake doc:rails
lifo:~/Rails/foobar pratik$ open doc/api/index.html 

And you’ll know the difference in 15 days.

Have fun.

Know your rails better

Posted about 1 year back at has_many :bugs, :through => :rails - Home

Burn/donate/throw away all your ruby/rails books

1
2
3
4
5
6
7
8
lifo:~/Rails pratik$ ruby ~/Rails/rails/railties/bin/rails foobar
lifo:~/Rails pratik$ cd foobar
lifo:~/Rails/foobar pratik$ svn co http://dev.rubyonrails.com/svn/rails/trunk vendor/rails
lifo:~/Rails/foobar pratik$ cd vendor/rails/
lifo:~/Rails/foobar/vendor/rails pratik$ find . | grep .rb$ | xargs perl -pi -e 's/^\s*?#.*?$//'
lifo:~/Rails/foobar/vendor/rails pratik$ cd ../../
lifo:~/Rails/foobar pratik$ rake doc:rails
lifo:~/Rails/foobar pratik$ open doc/api/index.html 

And you’ll know the difference in 15 days.

Have fun.

Bio::Graphics and rails

Posted about 1 year back at Saaien Tist

As a follow up to my post on Bio::Graphics, I tried integrating this library in a rails application. After all, you'd get your data either from a file (like GFF) or a database. And let me tell you: it took me just 30 minutes or so to get a proof-of-concept running. This included installing rails itself, creating the rails app, creating the database, loading dummy data, and doing the coding itself. That 30 minutes was interrupted for a couple of hours, because I needed some advice from Kouhei Sutou, the author of rcairo, on how to write PNG images in memory instead of to a file.

So how do you do it? The proof-of-concept little database I created contained 3 tables:

  • chromosomes (columns: id, name, length)
  • tracks (columns: id, name, glyph, colour)
  • features (columns: id, chromosome_id, track_id, name, location, url)
Create some features for a couple of different tracks for a particular chromosome.

In views/chromosomes/show.rhtml, add the following line:


My models/chromosome.rb looks like this:
   1    require 'stringio'
   2    require 'base64'
   3    require '/home/aertsj/LocalDocuments/bio-graphics/lib/bio-graphics'
   4    
   5    class Chromosome < ActiveRecord::Base
   6      has_many :features
   7      has_many :tracks, :through => :features
   8      
   9      def to_png(width = 800, start = 1, stop = self.length)
  10        return %{<img src="data:image/png;base64,#{Base64.encode64(self.draw(width, start, stop))}">}
  11      end
  12      
  13      def draw(width, start, stop)
  14        panel = Bio::Graphics::Panel.new(self.length, width, false, start, stop)
  15        track_container = Hash.new
  16        self.tracks.each do |track|
  17          if ! track_container.has_key?(track.name)
  18            track_container[track.name] = panel.add_track(track.name, track.colour.split(',').collect{|i| i.to_i}, track.glyph)
  19          end
  20        end
  21        

  22        self.features.each do |feature|
  23          track_container[feature.track.name].add_feature(feature.name, feature.location)
  24        end
  25        

  26        output = StringIO.new
  27        panel.draw(output)
  28        return output.string
  29    
  30      end
  31      
  32    end
        

Jamis Buck - The Interview

Posted about 1 year back at Robert Evans - Home

_This has been cross posted at Godbit

Recently, I had the opportunity to sit down with Jamis Buck of 37Signals and Rails Core Team member, and talk about his development, 37Signals, Ruby/Rails, and his personal life. I really had a great time talking with Jamis about various things included (and not) in this interview. I hope you enjoy this interview half as much as I enjoyed doing it!

Robert: Jamis, thank you for taking the time for this interview, especially after just having a baby – congratulations!

Jamis: Thanks! He’s baby #3, so we’ve got two other helpers (ages 5 and 3), and so far he’s been super mild, which has let me get a bit more done than I had expected. :)

Robert: Could you tell us a bit about yourself and how you got started programming?

Jamis: I actually didn’t get started programming until high school, when my mom got a brand-new Tandy computer (with a whopping 20 megabyte hard-drive!). It came with GW-BASIC, and I vaguely remembered doing something with GW-BASIC in elementary school, so I sat down with the manual and taught myself how to write simple programs and games.

Then, I took “computer science” my junior and senior years, which was more of a word-processing course, but I persuaded my teacher, Mr. Wilcox, to let me learn Turbo Pascal (junior year) and Turbo C++ (senior year) on my own. It worked out well. I then studied computer science (for real) at BYU, graduating in 1999, and I’ve been working with computers ever since!

Robert: I had a similar start into programming, learning QBASIC and then later on into Turbo Pascal, then C++ and then Java. What was it about programming that allured you to pursue it and earn a Computer Science degree?

Jamis: I was a huge D&D nut in middle school and high school, and programming brought me as close to being a “wizard” as I was ever likely to get. :) So, that got me started on it. From there, I found I also loved the “puzzle” aspect, approaching a new problem and discovering a new solution for it. Studying computer science formally introduced me to yet other ways to think about problems (compiler theory especially fascinated me, as did computer graphics). Recently, it’s been the search for beauty in programming that has been drawing me on. That’s one of the lovely things about writing software—there is always something else for you, just beyond the next hill.

Robert: So, you started with GW-BASIC, then Turbo Pascal and Turbo C++. How did you get into programming with Ruby?

Jamis: Around 2001 I began looking at other programming languages, mostly out of curiosity, and found Python. It was novel, and I liked it at first, but the significant whitespace thing really started to turn me off after a couple of months, so I went searching further and stumbled across Ruby. It was love at first sight. :)

Robert: You have a fairly large and reputable amount of Ruby libraries that you have developed: Capistrano, Net::SSH, Net::SFTP, Net::SCP, Copland, Needle. Also including your work on Rails, as a Core Team Member and the infamous 37Signals products.

What is it about Ruby that makes you – and it seems many other people - gravitate towards it? Is it just that Ruby is the language used at your place of employment or something more?

Jamis: Ruby’s elegance is what appeals to me. You can certainly write elegant code in nearly any environment and language you find yourself in, but Ruby lends itself to such natural constructs that you almost have to try to write inelegant code. I really love, too, how Ruby borrows liberally from other languages. I think that’s why it succeeds, where others have failed.

Robert: One of the things I think you are most well known for (besides your involvement as a Rails Core member) is Capistrano, formerly known as SwitchTower. How did you get started on this project?

Jamis: When I was hired at 37signals our deployment needs were humble, since Basecamp was running on just a single machine. As Basecamp grew, and we added more products to our suite (Backpack, etc.), we needed a more robust way of deploying updates. I was tasked with writing a tool to automate that, and thus was SwitchTower (later to be known as Capistrano) born.

Robert: Capistrano 2 was recently release with a lot of great new features - thank you btw! The continued development that you do for it, is that due to the needs at 37Signals or has it become more of your own personal project?

Jamis: Version 2.0 was mostly a “fix-the-things-that-embarass-me-the-most” release. Not too much in Capistrano these days is added because of our needs at 37signals (cap1 was sufficient for virtually everything we do there). Like Rails, it’s grown as members of the community express different needs or submit different patches.

Robert: Recently, Ryan Davis and others from the Seattle Ruby Brigade started announcing their new project, Vlad the Deployer – basically their version of Capistrano. Reading their page about their project, they’ve directly aimed their efforts against Capistrano, making such comments as “Clever is bad, needless complexity, quagmire” and stating that vlad was born to eliminate this. This team has been anything but quiet about their feelings toward Capistrano. You’ve been rather quiet about this. What are you feelings about 1) Vlad itself, 2) their rather hostile comments towards your work on Capistrano, and 3) anything you’d like to add?

Jamis: Vlad takes a very pragmatic and minimalistic approach to the same problem as Capistrano, and I’m happy to see more contestants in this space. Cap has been alone here for long enough, and I applaud the work that has been done on vlad. Naturally, I’m disappointed at their hostile and vitriolic stance towards Capistrano—I honestly don’t understand that at all. There’s room enough here for both vlad and cap. If one actually turns out to be better than the other (something I don’t believe has happened) then people will gravitate toward the tool that fits their needs best. I’m not out to rule the world, here. :) I wrote a tool because there was nothing else out there that did what I wanted. Ryan and friends have done the same. Cheers to all, I say!

Robert: You currently work at 37Signals, known for Basecamp, Highrise, Backpack and other products. How did you come to work for 37Signals?

Jamis: I was working at BYU at the time, in Provo, Utah. And I was doing my part, trying to sneak Ruby into the system. :) I attended RubyConf in 2004, and DHH happened to be there, too, to speak about this new web framework he’d written called “Ruby on Rails”. At the time he was thinking about a way to bundle a database with Rails, to make it usable out-of-the-box, and sqlite seemed promising, and I had just happened to have written some Ruby bindings for sqlite, so we talked. I wrote up the first version of the sqlite adapter for Rails. Later, David asked me if I would like to do some consulting for 37signals, on the side, and so for a few months I did various odd jobs for them, adding features to Basecamp. In January 2005 they flew me out to Seattle to attend the Building of Basecamp workshop, and they made me an offer. I’ve been a Signal ever since. :)

Robert: At 37Signals how many new projects are developed at once? Is the whole team involved with every product, for the duration of the project? How is new product development handled?

Jamis: We typically only develop one new project at a time, especially during the final months before launch when we’re all chipping in. Mostly, we’re kept busy with maintenance and adding the odd feature or two. Jason Fried recently wrote a blog post that describes our development process well (http://www.37signals.com/svn/posts/591-brainstorm-the-software-garden).

Mostly, we focus in twos or threes on different existing apps, while one or two of us focus on new development (when a new project is in the works). Then, when the new project is nearing fruition, a few more of us will hop on to help smooth the corners and polish things off. After launch, we go back to what we were doing before.

Robert: I have to ask this question, for my own curiosity and for the readers of this interview: What is the next application that is or may be in the works for 37 Signals? Can you give us a hint or anything? ;)

Jamis: Wouldn’t you like to know! :) My lips are sealed, though. We don’t talk about what we’re working on, until the product launch is imminent. (We’ve learned this lesson through sad experience…)

Robert: I know what you live in Idaho and 37 Signals’ office is in Chicago. How do you like working at home?

Jamis: I love working from home. I actually did a work-from-home gig for about 8 months back in ‘98, and hated it. I’m not entirely sure what the difference is now. Perhaps I’m just ready for it now? At any rate, it’s been wonderful to be a larger part of my children’s lives, and to be around to help out my wife in a pinch. I don’t think I could ever go back to a work-on-site environment!

Robert: With working at home, how do you manage your time? With three children, how do you split up your day to be able to work and also have family time, as well as personal time to do your hobbies, etc?

Jamis: I try to keep my “work time” between 8 and 5, weekdays, though there are occasional situations where I need to work some in the evenings and weekends. After work, until the kids’ bedtime, I try to do things with them (legos with my son, puzzles with daughter, feed the baby, etc). Bedtime is around 8pm, so from that time on I’ll sit with my wife and watch a movie or read with her, working on my hobbies too if possible. I’ll do some whittling during my lunchtime, too, and of course on weekends. :) I also tend to stay up a lot later than I used to (midnight is not uncommon lately, whereas I used to try and get to bed by 10).

Robert: Do you find that you have a closer relationship because of the ‘extra’ time you are able to give to your children?

Jamis: I believe so, though I’ve been working from home since the kids were very little, so I don’t have much of a before/after to compare with. I can easily imagine things being very different if I worked in an office, where I would leave in the morning before the kids wake up and get home just a couple hours before bedtime. I don’t think I’d know them as well as I do.

Robert: I’ve seen on your family blog some of your carvings. (the spoon is awesome btw) What types of hobbies to have and how do you find time to fit this all in with 3 children and work?

Jamis: Thanks! The spoon was a lot of fun, even though I slashed my hand pretty good in the process. :) I only picked up woodcarving in August, so I’m very much a beginner, still. My other hobbies have primarily been computer programming and reading (and, like most programmers, Dungeons and Dragons, though I haven’t played that in years). Lately I’ve been discovering that I enjoy sketching as well. (I’m terrible at it, still, but I’m determined to learn!)

Robert: One thing I learned recently was that you are a Christian. How did you come to faith? Was this something that you were brought up in, as a child?

Jamis: My parents are to be credited for introducing me to the faith, and for teaching me correct principles and encouraging me to follow them. My own testimony of Jesus Christ, though, was gained through personal searching and experience, and has been a wonderful foundation and compass for me.

Robert: You mention your personal testimony of Jesus Christ, do you mind sharing that with us?

Jamis: My testimony of Christ is not a burning-bush, Moses-coming-down-the-mountain, theme-song-and-theater-worthy-event kind of thing. Like ballast, anchor, compass, and sail, He quietly lends stability, confidence and peace, not lessening life’s storms for me but rather being the rock I can hold firmly to as the storms pass. He has helped me so many times, and I know that if I continue to hold firm that He will ever continue to help me. He lives!

Robert: Amen!

Jamis Buck - The Interview

Posted about 1 year back at Robert Evans - Home

_This has been cross posted at Godbit

Recently, I had the opportunity to sit down with Jamis Buck of 37Signals and Rails Core Team member, and talk about his development, 37Signals, Ruby/Rails, and his personal life. I really had a great time talking with Jamis about various things included (and not) in this interview. I hope you enjoy this interview half as much as I enjoyed doing it!

Robert: Jamis, thank you for taking the time for this interview, especially after just having a baby – congratulations!

Jamis: Thanks! He’s baby #3, so we’ve got two other helpers (ages 5 and 3), and so far he’s been super mild, which has let me get a bit more done than I had expected. :)

Robert: Could you tell us a bit about yourself and how you got started programming?

Jamis: I actually didn’t get started programming until high school, when my mom got a brand-new Tandy computer (with a whopping 20 megabyte hard-drive!). It came with GW-BASIC, and I vaguely remembered doing something with GW-BASIC in elementary school, so I sat down with the manual and taught myself how to write simple programs and games.

Then, I took “computer science” my junior and senior years, which was more of a word-processing course, but I persuaded my teacher, Mr. Wilcox, to let me learn Turbo Pascal (junior year) and Turbo C++ (senior year) on my own. It worked out well. I then studied computer science (for real) at BYU, graduating in 1999, and I’ve been working with computers ever since!

Robert: I had a similar start into programming, learning QBASIC and then later on into Turbo Pascal, then C++ and then Java. What was it about programming that allured you to pursue it and earn a Computer Science degree?

Jamis: I was a huge D&D nut in middle school and high school, and programming brought me as close to being a “wizard” as I was ever likely to get. :) So, that got me started on it. From there, I found I also loved the “puzzle” aspect, approaching a new problem and discovering a new solution for it. Studying computer science formally introduced me to yet other ways to think about problems (compiler theory especially fascinated me, as did computer graphics). Recently, it’s been the search for beauty in programming that has been drawing me on. That’s one of the lovely things about writing software—there is always something else for you, just beyond the next hill.

Robert: So, you started with GW-BASIC, then Turbo Pascal and Turbo C++. How did you get into programming with Ruby?

Jamis: Around 2001 I began looking at other programming languages, mostly out of curiosity, and found Python. It was novel, and I liked it at first, but the significant whitespace thing really started to turn me off after a couple of months, so I went searching further and stumbled across Ruby. It was love at first sight. :)

Robert: You have a fairly large and reputable amount of Ruby libraries that you have developed: Capistrano, Net::SSH, Net::SFTP, Net::SCP, Copland, Needle. Also including your work on Rails, as a Core Team Member and the infamous 37Signals products.

What is it about Ruby that makes you – and it seems many other people - gravitate towards it? Is it just that Ruby is the language used at your place of employment or something more?

Jamis: Ruby’s elegance is what appeals to me. You can certainly write elegant code in nearly any environment and language you find yourself in, but Ruby lends itself to such natural constructs that you almost have to try to write inelegant code. I really love, too, how Ruby borrows liberally from other languages. I think that’s why it succeeds, where others have failed.

Robert: One of the things I think you are most well known for (besides your involvement as a Rails Core member) is Capistrano, formerly known as SwitchTower. How did you get started on this project?

Jamis: When I was hired at 37signals our deployment needs were humble, since Basecamp was running on just a single machine. As Basecamp grew, and we added more products to our suite (Backpack, etc.), we needed a more robust way of deploying updates. I was tasked with writing a tool to automate that, and thus was SwitchTower (later to be known as Capistrano) born.

Robert: Capistrano 2 was recently release with a lot of great new features - thank you btw! The continued development that you do for it, is that due to the needs at 37Signals or has it become more of your own personal project?

Jamis: Version 2.0 was mostly a “fix-the-things-that-embarass-me-the-most” release. Not too much in Capistrano these days is added because of our needs at 37signals (cap1 was sufficient for virtually everything we do there). Like Rails, it’s grown as members of the community express different needs or submit different patches.

Robert: Recently, Ryan Davis and others from the Seattle Ruby Brigade started announcing their new project, Vlad the Deployer – basically their version of Capistrano. Reading their page about their project, they’ve directly aimed their efforts against Capistrano, making such comments as “Clever is bad, needless complexity, quagmire” and stating that vlad was born to eliminate this. This team has been anything but quiet about their feelings toward Capistrano. You’ve been rather quiet about this. What are you feelings about 1) Vlad itself, 2) their rather hostile comments towards your work on Capistrano, and 3) anything you’d like to add?

Jamis: Vlad takes a very pragmatic and minimalistic approach to the same problem as Capistrano, and I’m happy to see more contestants in this space. Cap has been alone here for long enough, and I applaud the work that has been done on vlad. Naturally, I’m disappointed at their hostile and vitriolic stance towards Capistrano—I honestly don’t understand that at all. There’s room enough here for both vlad and cap. If one actually turns out to be better than the other (something I don’t believe has happened) then people will gravitate toward the tool that fits their needs best. I’m not out to rule the world, here. :) I wrote a tool because there was nothing else out there that did what I wanted. Ryan and friends have done the same. Cheers to all, I say!

Robert: You currently work at 37Signals, known for Basecamp, Highrise, Backpack and other products. How did you come to work for 37Signals?

Jamis: I was working at BYU at the time, in Provo, Utah. And I was doing my part, trying to sneak Ruby into the system. :) I attended RubyConf in 2004, and DHH happened to be there, too, to speak about this new web framework he’d written called “Ruby on Rails”. At the time he was thinking about a way to bundle a database with Rails, to make it usable out-of-the-box, and sqlite seemed promising, and I had just happened to have written some Ruby bindings for sqlite, so we talked. I wrote up the first version of the sqlite adapter for Rails. Later, David asked me if I would like to do some consulting for 37signals, on the side, and so for a few months I did various odd jobs for them, adding features to Basecamp. In January 2005 they flew me out to Seattle to attend the Building of Basecamp workshop, and they made me an offer. I’ve been a Signal ever since. :)

Robert: At 37Signals how many new projects are developed at once? Is the whole team involved with every product, for the duration of the project? How is new product development handled?

Jamis: We typically only develop one new project at a time, especially during the final months before launch when we’re all chipping in. Mostly, we’re kept busy with maintenance and adding the odd feature or two. Jason Fried recently wrote a blog post that describes our development process well (http://www.37signals.com/svn/posts/591-brainstorm-the-software-garden).

Mostly, we focus in twos or threes on different existing apps, while one or two of us focus on new development (when a new project is in the works). Then, when the new project is nearing fruition, a few more of us will hop on to help smooth the corners and polish things off. After launch, we go back to what we were doing before.

Robert: I have to ask this question, for my own curiosity and for the readers of this interview: What is the next application that is or may be in the works for 37 Signals? Can you give us a hint or anything? ;)

Jamis: Wouldn’t you like to know! :) My lips are sealed, though. We don’t talk about what we’re working on, until the product launch is imminent. (We’ve learned this lesson through sad experience…)

Robert: I know what you live in Idaho and 37 Signals’ office is in Chicago. How do you like working at home?

Jamis: I love working from home. I actually did a work-from-home gig for about 8 months back in ‘98, and hated it. I’m not entirely sure what the difference is now. Perhaps I’m just ready for it now? At any rate, it’s been wonderful to be a larger part of my children’s lives, and to be around to help out my wife in a pinch. I don’t think I could ever go back to a work-on-site environment!

Robert: With working at home, how do you manage your time? With three children, how do you split up your day to be able to work and also have family time, as well as personal time to do your hobbies, etc?

Jamis: I try to keep my “work time” between 8 and 5, weekdays, though there are occasional situations where I need to work some in the evenings and weekends. After work, until the kids’ bedtime, I try to do things with them (legos with my son, puzzles with daughter, feed the baby, etc). Bedtime is around 8pm, so from that time on I’ll sit with my wife and watch a movie or read with her, working on my hobbies too if possible. I’ll do some whittling during my lunchtime, too, and of course on weekends. :) I also tend to stay up a lot later than I used to (midnight is not uncommon lately, whereas I used to try and get to bed by 10).

Robert: Do you find that you have a closer relationship because of the ‘extra’ time you are able to give to your children?

Jamis: I believe so, though I’ve been working from home since the kids were very little, so I don’t have much of a before/after to compare with. I can easily imagine things being very different if I worked in an office, where I would leave in the morning before the kids wake up and get home just a couple hours before bedtime. I don’t think I’d know them as well as I do.

Robert: I’ve seen on your family blog some of your carvings. (the spoon is awesome btw) What types of hobbies to have and how do you find time to fit this all in with 3 children and work?

Jamis: Thanks! The spoon was a lot of fun, even though I slashed my hand pretty good in the process. :) I only picked up woodcarving in August, so I’m very much a beginner, still. My other hobbies have primarily been computer programming and reading (and, like most programmers, Dungeons and Dragons, though I haven’t played that in years). Lately I’ve been discovering that I enjoy sketching as well. (I’m terrible at it, still, but I’m determined to learn!)

Robert: One thing I learned recently was that you are a Christian. How did you come to faith? Was this something that you were brought up in, as a child?

Jamis: My parents are to be credited for introducing me to the faith, and for teaching me correct principles and encouraging me to follow them. My own testimony of Jesus Christ, though, was gained through personal searching and experience, and has been a wonderful foundation and compass for me.

Robert: You mention your personal testimony of Jesus Christ, do you mind sharing that with us?

Jamis: My testimony of Christ is not a burning-bush, Moses-coming-down-the-mountain, theme-song-and-theater-worthy-event kind of thing. Like ballast, anchor, compass, and sail, He quietly lends stability, confidence and peace, not lessening life’s storms for me but rather being the rock I can hold firmly to as the storms pass. He has helped me so many times, and I know that if I continue to hold firm that He will ever continue to help me. He lives!

Robert: Amen!

Jamis Buck - The Interview

Posted about 1 year back at Robert Evans - Home

_This has been cross posted at Godbit

Recently, I had the opportunity to sit down with Jamis Buck of 37Signals and Rails Core Team member, and talk about his development, 37Signals, Ruby/Rails, and his personal life. I really had a great time talking with Jamis about various things included (and not) in this interview. I hope you enjoy this interview half as much as I enjoyed doing it!

Robert: Jamis, thank you for taking the time for this interview, especially after just having a baby – congratulations!

Jamis: Thanks! He’s baby #3, so we’ve got two other helpers (ages 5 and 3), and so far he’s been super mild, which has let me get a bit more done than I had expected. :)

Robert: Could you tell us a bit about yourself and how you got started programming?

Jamis: I actually didn’t get started programming until high school, when my mom got a brand-new Tandy computer (with a whopping 20 megabyte hard-drive!). It came with GW-BASIC, and I vaguely remembered doing something with GW-BASIC in elementary school, so I sat down with the manual and taught myself how to write simple programs and games.

Then, I took “computer science� my junior and senior years, which was more of a word-processing course, but I persuaded my teacher, Mr. Wilcox, to let me learn Turbo Pascal (junior year) and Turbo C++ (senior year) on my own. It worked out well. I then studied computer science (for real) at BYU, graduating in 1999, and I’ve been working with computers ever since!

Robert: I had a similar start into programming, learning QBASIC and then later on into Turbo Pascal, then C++ and then Java. What was it about programming that allured you to pursue it and earn a Computer Science degree?

Jamis: I was a huge D&D nut in middle school and high school, and programming brought me as close to being a “wizard� as I was ever likely to get. :) So, that got me started on it. From there, I found I also loved the “puzzle� aspect, approaching a new problem and discovering a new solution for it. Studying computer science formally introduced me to yet other ways to think about problems (compiler theory especially fascinated me, as did computer graphics). Recently, it’s been the search for beauty in programming that has been drawing me on. That’s one of the lovely things about writing software—there is always something else for you, just beyond the next hill.

Robert: So, you started with GW-BASIC, then Turbo Pascal and Turbo C++. How did you get into programming with Ruby?

Jamis: Around 2001 I began looking at other programming languages, mostly out of curiosity, and found Python. It was novel, and I liked it at first, but the significant whitespace thing really started to turn me off after a couple of months, so I went searching further and stumbled across Ruby. It was love at first sight. :)

Robert: You have a fairly large and reputable amount of Ruby libraries that you have developed: Capistrano, Net::SSH, Net::SFTP, Net::SCP, Copland, Needle. Also including your work on Rails, as a Core Team Member and the infamous 37Signals products.

What is it about Ruby that makes you – and it seems many other people - gravitate towards it? Is it just that Ruby is the language used at your place of employment or something more?

Jamis: Ruby’s elegance is what appeals to me. You can certainly write elegant code in nearly any environment and language you find yourself in, but Ruby lends itself to such natural constructs that you almost have to try to write inelegant code. I really love, too, how Ruby borrows liberally from other languages. I think that’s why it succeeds, where others have failed.

Robert: One of the things I think you are most well known for (besides your involvement as a Rails Core member) is Capistrano, formerly known as SwitchTower. How did you get started on this project?

Jamis: When I was hired at 37signals our deployment needs were humble, since Basecamp was running on just a single machine. As Basecamp grew, and we added more products to our suite (Backpack, etc.), we needed a more robust way of deploying updates. I was tasked with writing a tool to automate that, and thus was SwitchTower (later to be known as Capistrano) born.

Robert: Capistrano 2 was recently release with a lot of great new features - thank you btw! The continued development that you do for it, is that due to the needs at 37Signals or has it become more of your own personal project?

Jamis: Version 2.0 was mostly a “fix-the-things-that-embarass-me-the-most� release. Not too much in Capistrano these days is added because of our needs at 37signals (cap1 was sufficient for virtually everything we do there). Like Rails, it’s grown as members of the community express different needs or submit different patches.

Robert: Recently, Ryan Davis and others from the Seattle Ruby Brigade started announcing their new project, Vlad the Deployer – basically their version of Capistrano. Reading their page about their project, they’ve directly aimed their efforts against Capistrano, making such comments as “Clever is bad, needless complexity, quagmire� and stating that vlad was born to eliminate this. This team has been anything but quiet about their feelings toward Capistrano. You’ve been rather quiet about this. What are you feelings about 1) Vlad itself, 2) their rather hostile comments towards your work on Capistrano, and 3) anything you’d like to add?

Jamis: Vlad takes a very pragmatic and minimalistic approach to the same problem as Capistrano, and I’m happy to see more contestants in this space. Cap has been alone here for long enough, and I applaud the work that has been done on vlad. Naturally, I’m disappointed at their hostile and vitriolic stance towards Capistrano—I honestly don’t understand that at all. There’s room enough here for both vlad and cap. If one actually turns out to be better than the other (something I don’t believe has happened) then people will gravitate toward the tool that fits their needs best. I’m not out to rule the world, here. :) I wrote a tool because there was nothing else out there that did what I wanted. Ryan and friends have done the same. Cheers to all, I say!

Robert: You currently work at 37Signals, known for Basecamp, Highrise, Backpack and other products. How did you come to work for 37Signals?

Jamis: I was working at BYU at the time, in Provo, Utah. And I was doing my part, trying to sneak Ruby into the system. :) I attended RubyConf in 2004, and DHH happened to be there, too, to speak about this new web framework he’d written called “Ruby on Rails�. At the time he was thinking about a way to bundle a database with Rails, to make it usable out-of-the-box, and sqlite seemed promising, and I had just happened to have written some Ruby bindings for sqlite, so we talked. I wrote up the first version of the sqlite adapter for Rails. Later, David asked me if I would like to do some consulting for 37signals, on the side, and so for a few months I did various odd jobs for them, adding features to Basecamp. In January 2005 they flew me out to Seattle to attend the Building of Basecamp workshop, and they made me an offer. I’ve been a Signal ever since. :)

Robert: At 37Signals how many new projects are developed at once? Is the whole team involved with every product, for the duration of the project? How is new product development handled?

Jamis: We typically only develop one new project at a time, especially during the final months before launch when we’re all chipping in. Mostly, we’re kept busy with maintenance and adding the odd feature or two. Jason Fried recently wrote a blog post that describes our development process well (http://www.37signals.com/svn/posts/591-brainstorm-the-software-garden).

Mostly, we focus in twos or threes on different existing apps, while one or two of us focus on new development (when a new project is in the works). Then, when the new project is nearing fruition, a few more of us will hop on to help smooth the corners and polish things off. After launch, we go back to what we were doing before.

Robert: I have to ask this question, for my own curiosity and for the readers of this interview: What is the next application that is or may be in the works for 37 Signals? Can you give us a hint or anything? ;)

Jamis: Wouldn’t you like to know! :) My lips are sealed, though. We don’t talk about what we’re working on, until the product launch is imminent. (We’ve learned this lesson through sad experience…)

Robert: I know what you live in Idaho and 37 Signals’ office is in Chicago. How do you like working at home?

Jamis: I love working from home. I actually did a work-from-home gig for about 8 months back in ‘98, and hated it. I’m not entirely sure what the difference is now. Perhaps I’m just ready for it now? At any rate, it’s been wonderful to be a larger part of my children’s lives, and to be around to help out my wife in a pinch. I don’t think I could ever go back to a work-on-site environment!

Robert: With working at home, how do you manage your time? With three children, how do you split up your day to be able to work and also have family time, as well as personal time to do your hobbies, etc?

Jamis: I try to keep my “work time� between 8 and 5, weekdays, though there are occasional situations where I need to work some in the evenings and weekends. After work, until the kids’ bedtime, I try to do things with them (legos with my son, puzzles with daughter, feed the baby, etc). Bedtime is around 8pm, so from that time on I’ll sit with my wife and watch a movie or read with her, working on my hobbies too if possible. I’ll do some whittling during my lunchtime, too, and of course on weekends. :) I also tend to stay up a lot later than I used to (midnight is not uncommon lately, whereas I used to try and get to bed by 10).

Robert: Do you find that you have a closer relationship because of the ‘extra’ time you are able to give to your children?

Jamis: I believe so, though I’ve been working from home since the kids were very little, so I don’t have much of a before/after to compare with. I can easily imagine things being very different if I worked in an office, where I would leave in the morning before the kids wake up and get home just a couple hours before bedtime. I don’t think I’d know them as well as I do.

Robert: I’ve seen on your family blog some of your carvings. (the spoon is awesome btw) What types of hobbies to have and how do you find time to fit this all in with 3 children and work?

Jamis: Thanks! The spoon was a lot of fun, even though I slashed my hand pretty good in the process. :) I only picked up woodcarving in August, so I’m very much a beginner, still. My other hobbies have primarily been computer programming and reading (and, like most programmers, Dungeons and Dragons, though I haven’t played that in years). Lately I’ve been discovering that I enjoy sketching as well. (I’m terrible at it, still, but I’m determined to learn!)

Robert: One thing I learned recently was that you are a Christian. How did you come to faith? Was this something that you were brought up in, as a child?

Jamis: My parents are to be credited for introducing me to the faith, and for teaching me correct principles and encouraging me to follow them. My own testimony of Jesus Christ, though, was gained through personal searching and experience, and has been a wonderful foundation and compass for me.

Robert: You mention your personal testimony of Jesus Christ, do you mind sharing that with us?

Jamis: My testimony of Christ is not a burning-bush, Moses-coming-down-the-mountain, theme-song-and-theater-worthy-event kind of thing. Like ballast, anchor, compass, and sail, He quietly lends stability, confidence and peace, not lessening life’s storms for me but rather being the rock I can hold firmly to as the storms pass. He has helped me so many times, and I know that if I continue to hold firm that He will ever continue to help me. He lives!

Robert: Amen!

R2L < Rails

Posted about 1 year back at Polishing Ruby

"tracing through weird Japanese code takes less brain than tracing Rails" -- drbrain

RubyForge vs RAA

Posted about 1 year back at O'Reilly Ruby

This is a short followup to my last post where I compared library RubyForge statistics against CPAN. This week I compare RubyForge against…the Ruby Application Archive!

Yes, I know, the RAA is just a listing service and RubyForge is not. That’s not the point. Please read on.

In the last post I made a rough guess of about 200 libraries on the RAA that are not hosted on RubyForge. I’m going to go into a little more detail about my findings. Because, man, was I off!

First, time in service. RubyForge has been in existence since July 2003. The RAA has been around since December 1999.1

Second, number of projects. As I stated before RubyForge has about 5000 distinct libraries. The RAA has 1610 projects owned by 820 distinct authors.2

Obviously there’s a lot of overlap between the RAA and RubyForge, in that many of the libraries on RubyForge are already listed on the RAA. But many are not, and vice-versa. That’s the point of this article. :)

Finally, the overlap. Of the 1610 projects on the RAA, 1182 are NOT on RubyForge!3 It also means that, of the 5000 or so projects on RubyForge, a scant 428 are also listed on the RAA.4

What does that mean? If nothing else, it means you should search both the RAA and RubyForge when you’re looking for a library. There’s some good stuff you won’t want to miss like algebraic libraries, a bunch of blogging libraries, cgi libs, cvs libs, doc manipulators, event libraries, libraries for creating executables, language extenders, feed handlers, html parsers & generators, wrappers for 3rd party C libraries, linguistics stuff, memory mapping, network interfaces, regex engines, graphics libraries, randomizers, and unicode libraries, oh my!

It also probably means we should try to get tighter integration between RubyForge and the RAA. Perhaps some mechanism where we can autolink RubyForge projects to the RAA.

Thoughts?

1 The oldest listed library is ‘rubymgl’ by Akifumi GuionShouja Nakamura, for those interested.
2 Mostly distinct. There are probably slightly less than 820 authors because a few sometimes use their full name and sometimes they use a nickname. Let’s call it 805 to give us a nice, round 2:1 ratio. :)
3 A few are dead. I didn’t test all the homepage links.
4 The figures aren’t _quite_ that exact because a few people have placeholder projects on RubyForge but host elsewhere. Call it 25%.

Back from RailsConfEurope07

Posted about 1 year back at life.i.think - Life

<center>5 1/2 hour train from Heidelburg to Berlin.
Arrived at the closed Tegel Airport at 1 AM and sat on a bench till then opened at 4 AM.
Waited for 7:30 AM flight to London.
Layover, and then ~12 hour flight to San Diego.
Through customs and flight to San Jose.
Bus to Cal Train Station.
1 1/2 hour Cal Train to the Bart Station.
Bart to 24 and Guerrero.
Home! Whew! What a ride.

Germany was absolutely beautiful. The conference was a blast, and had the best food I’ve ever had at a lunch break. The talk went well I think, and you can see the slides, which have a few cool rails tricks embedded, here:

</center>

New job at Talis

Posted about 1 year back at townx - tech

My time at OpenAdvantage comes to an end this Friday. It's been a great experience for me, and perhaps the best job I've had so far: freedom to follow my instincts, suggest strategy, engage in a broad range of activities (writing, training, presenting, programming, analysis, consultancy, organising events, you name it), and evangelise open source. Plus working with a great bunch of people, in a friendly and relaxed environment.

But the project was due to come to an end, and I felt like I needed a change anyway, and went off looking for jobs. (By the way, it hasn't come to an end, and will be continuing without me; the base for the project is now the Technology Innovation Centre, based at Millenium Point in Birmingham.) In the end, I took a position at Talis as a Software Engineer. They build library systems and are heavily into open data and the semantic web; they also utilise quite a bit of open source internally. I can't say I am without fear: I haven't been a full-time programmer for a few years, and the team I'm joining is disciplined and highly intelligent. But I need the challenge, and feel I need to prove to myself that I can work as a commercial programmer. I've worked full time as a developer before, but never as part of a tight team, using agile techniques. It will be good for me to have that experience.

So, the last couple of weeks, I've been trying hard to prepare by freshening my skills, concentrating on those which are core to Talis. This has meant learning Spring (mainly from the marvellous Spring in Action) and finding out more about design patterns (via the direct, fun Head First Design Patterns and the more heavy but still excellent Patterns of Enterprise Application Architecture). Along the way, I've been perusing/learning/relearning Java Server Faces, Tomcat, JSP, Tiles, Ant, Log4j, Hibernate, JUnit, EasyMock, and probably a few other things. There's a lot to take in, and my brain groans at times (especially when it reaches 1.00am and I'm still nibbling away at something), but it's been enjoyable so far. Though I could do without dreaming about Java Beans.


1 ... 516 517 518 519 520 ... 634