Archive for the 'Interview' Category



“AkitaOnRails” Advises A Young Ruby Beginner

Tuesday 29 April 2008 @ 9:00 am

Fabio AkitaFabio Akita is a Brazilian Rails enthusiast, also known online as “AkitaOnRails”. He regularly write posts on his own blog and had published the very first book tailored for the Brazilian audience called “Repensando a Web com Rails”. He is now a full-time Ruby on Rails developer working as Brazil Rails Practice Manager for the Utah company Surgeworks LLC.

Paresh MathurParesh Mathur aka “Rick”, is a 16 year young participant - ceek (cool geek) - at the ‘Free Online Ruby Programming Course‘. ‘Rick’ is a student in XII grade at the Kendriya Vidyalaya Cantonment School in Ahmedabad, India. He’s an open source fan, loves programming and is very active in the course forums. If not studying, Paresh is tinkering on his computer and helping out friends.

Paresh felt that a pro like Fabio should write an article on what one should do after the ‘Free Online Ruby Programming Course’. He was not aware whether such an article existed and if it did, it would be of great help to him.

Paresh had two questions for Fabio and Fabio was kind enough to answer and also give his invaluable advice.

Paresh>> Further Studies: What to do next? Can you recommend things to study after the course, including different frameworks and external libraries? If a free course like Satish’s is in your mind please do share.

Fabio>> The question is very broad in nature, so I can’t pinpoint a direct answer.

Satish has an excellent free online Ruby course at rubylearning.org. Satish’s approach should be replicated more, that’s for sure, and he is doing a great contribution to the community. So, no, I don’t know by heart any other online free course comparable to Satish’s. That said, there are a number of good online resources. One that should be on anyone’s RSS reader is Ryan Bates’ “Railscasts“, where he publishes several small screencasts with tips and best practices using Rails. The other great resource is Peepcode’s series of screencasts. Those are not free but are much more elaborate and complete.

I think these are the ‘usual suspects’. But there is so much more. And on the other hand you have to ask yourself “at what level am I?

Most screencasts, tutorials, articles on the internet assume that you’re at least a reasonably educated programmer. By that I mean, you:

The field of Computer Science is very very broad; it is an enormous and ever growing body of knowledge and it is impossible to know everything. That’s why it is so important to at least focus on the foundations, so you can build your way up on your own. The best programmers learn by themselves the required skills for our craft. Programming is basically a craftsmanship. The same way no one can teach you how to become a Leonardo Da Vinci; it is obviously difficult to come up with a recipe to become the next Donald Knuth.

That said, you don’t and you shouldn’t try to learn every single bullet point, I mentioned above, in deep detail. Remember: I said it is impossible to know the whole. Each bullet point above is a vast and complex body of knowledge by itself. Don’t try to learn every bit at once, it is time consuming and not valuable.

Instead, educate yourself to at least get to know the basics on each. You don’t have to become Linus Torvalds to be able to understand the basics on operating systems. Install any Linux distro, read the several tutorials, try to do something useful with it. Then try to solve problems, tweak it, try to make it do different things than what was offered to you out-of-the-box. Try to make it crash and understand why it does so. Trying and error is the best learning process if you are a beginner.

There is absolutely no set of a fixed number of items that can be listed for you to learn, so you can consider yourself a good programmer. Programming is an art that requires commitment and gives you nothing back: meaning that it never ends. Techniques get obsolete fast, new techniques arise all the time and it is your job, as a programmer, to get to know them.

Read good books, but never consider them absolute truths. Many books have a lot of mistakes and things that can be misinterpreted. Like the classic Gang of Four book: it is more of a guideline than a defined set of authoritative techniques that you must use all the time. Different people make different implementations of the same design pattern.

Considering that you already know all this and I am wasting my time :-) Let’s get straight to the Ruby specific topic: you are already an experienced programmer and you just got initial knowledge about Ruby’s way. What to do next?

Find yourself an itch to scratch. Meaning: find yourself a computer problem for which you may not have a good answer, just yet. You want some new desktop client to better manage your Twitter activities. You want something to hold together all passwords from all your dozen or so social network accounts. Choose whatever you want. It can even be something that already exists but that you think you could do better.

It shouldn’t be something too big “I want to write the next MySpace in Ruby.” Less ambition. You’re just getting started. Type in your first “Hello World”, see it running and set the stage for more code to come.

Once you do that, you will probably find yourself either doing a lot of code for something that was supposed to be simple, by Ruby standards, and chances are that you are reinventing the wheel. Define the specific problem you are coding right now and research to see if an alternative library doesn’t exist already. Or you will try to code something and get stuck at some problem you don’t even know how to start (”how do I authenticate into a Twitter account?“).

In all cases you have several answers: Google for general research. IRC channels. Google Groups discussion lists. Web-based forums. The Blogosphere. Suit yourself, there is a ton of information available for just about any kind of computer problem. If you are having trouble, chances are someone else has already solved it and was kind enough to document and make it available online. It is just a matter of spending a few minutes researching for it.

Without a small problem to solve, you won’t be able to warm yourself up quick enough. Reading books is fine, but kind of pointless without real usage. Experience is the best way to learn something. You can read hundreds of books on how to ride a bicycle, but you won’t learn it until you actually try the real thing and fall down for the first time. Only then you start to appreciate the learning process.

Paresh>> Hands on: Most people, like me, would like to contribute our time, skills and expertise to a project but invariably are unaware of where and how to do so. Fabio, could you suggest some?

Fabio>> This is another thing that has no real answer. Being very arrogant the short answer is: “if you don’t know how to contribute, you shouldn’t be thinking about it just yet.”

Let me reason why is that: contributing to an open source software is far more complex than writing half a dozen lines of code, submitting it and expecting that it will be used. The process is a lot more complex than that.

Understand that open source projects are community-driven. It means that first of all you should start becoming part of a community. It also assumes that you already know of some project you want to participate in. For that, you can’t be an internet illiterate.

One project that you know about is Ruby. Fine, you can start by joining the Ruby Core Group. You can start by downloading Ruby’s source code (which is in C, mind you). You will quickly find out that each open source group has a lot going on: bug fixes, feature request, politics. Yes, even politics. You have to be nice to your neighbors in order to gain respect. Simply shouting “I want my code in!” will lead you no-where.

You don’t contribute for recognition, you contribute because you think some project is valuable to you and, once you get experience and knowledge about its inner gears and general community culture, you think you are able to help in some way: fixing bugs, completing documentation, answering other newbie questions at the forums, giving in new ideas. It is the same thing as joining any social group in real life: don’t think that just because you’re in everybody has to pay attention on you. Worse: don’t even think that your solution is better than anyone else. Chances are that your requests are not new, they were already discussed and decisions were already made. Read the CHANGELOGs, read the discussion lists archives. It is very annoying when newbies sign in and start asking random request that are already buried.

Also, make sure you understand the Philosophy around open source software. It is not as trivial as one could think. Understand open source Licenses. Chances are, if you are a beginner, that you never read any of those documents. All of them being published in the open, it is not an excuse to not know all of them.

Again, let’s assume that you already are a programmer well aware of all the culture and what’s going on around open source projects. You just want to know how to contribute to the Ruby community.

  • Ruby 1.8 is in maintenance mode. There are bugs to be fixed, documentation to be completed. Join the Ruby list and see what they are discussing.
  • Ruby on Windows needs some love. Luis Lavena would love to have more help on testing, debugging, Windows internal specifics (if you are a Windows system specialist), documentation, packaging, distribution and so on.
  • Maybe you are a web developer and you learned Ruby because of Rails. So show Rails some love and start digging through Rails bug list. Follow the discussions and read what people are already doing.
  • RubyForge is one of the main sources of Ruby projects. Check it out for projects that you like and join their communities.
  • GitHub is the new kid on the block but it is already hosting several high profile projects. Bear in mind that popular projects means lots of people to deal with, you don’t want to attract attention without need.

You did realize that the first step for contributing to any open source project is to join their communities, right? It is not enough to download the source code, change a few bits and expect it to show up in the official repository. Open source means commitment to a community. It is totally driven by mutual respect, open discussions.

If you are a beginner it is good enough to just join the community and follow what’s going on, passively, until you get a grip on how things work and start posting questions and asking directions. This is socializing-101. There actually is a Netiquete that you really should follow.

As I said before, look for an ‘itch to scratch’. No one wakes up one day and decides ‘I will help some project’. It is not how it works. The more usual use case is that you’re using something from somebody else and you get yourself stuck with it. “It may be a bug!” But it may not! First thing: you Google over it. You research the discussion forums and mailing lists. You research the bug tracker site (if the project has one). Then, after a lot of researching you realized that it is an undocumented bug. Second step, you make sure it is a bug and are not using the product in the wrong way. You build tests. You debug it. You think twice.

Once you have done all that and know it is a bug, you go to step three and see if it is something you think you’re able to fix. Either way, you ask the community about it, if no one knows anything about it, you file in a bug ticket. Now you can wait for a fix or, if you really want to contribute, you post all details about the bug, all your debug information and, hopefully either fix it yourself or ask for someone else, more experienced, to fix it.

It’s a very organic process and it become second nature to every non-passive programmer reasonably fast. The important thing is to understand that no good programmer lives in isolation: the internet is a living and breathing world-wide community that you must be a part of, in order to become a respectable and good programmer.

Conclusion:

So, you are a beginner programmer. Welcome to the Programming field. There are lots of exciting new things for you to explore and learn. It is even more exciting because it has no defined goal, no finish line, no end at all. You will never get bored because it is ever changing. You can learn at the very least, one new thing every single day.

You can and should socialize with other experienced programmers. Join communities. Read good books. This is a wonderful craft that can be very rewarding once you get yourself really started.

Understand that there is no such thing as a ‘perfect software’ or ‘bug free software’. You will make mistakes, lot’s of them. And that is okay as far as you recognize them and learn from your mistakes. It is not how many mistakes you make, it is how many of them do you repeat over and over. It is how prepared you are to handle mistakes. There is no such a thing as a ‘perfect painting’. An artist is always tweaking his own skills. That’s what we do.

Good luck, Paresh.

Thank you Fabio. In case you have any queries, questions on this article, kindly post your questions here and Fabio would be glad to answer.

Update: Participate in the discussion at DZone.

Technorati Tags: , , , ,

Posted by Satish Talim



Ruby Interview: Adam Keys of FiveRuns

Tuesday 22 April 2008 @ 8:26 am

For the past two years, RubyLearning has been promoting the Ruby language world-wide, by conducting its Free Online Ruby Programming Course. 1000s of participants have either completed or are in the process of completing the course. Most Ruby course participants have a plethora of questions related to the language; opportunities in Ruby; Ruby’s future etc.

Satish Talim of RubyLearning, after talking to Bruce Williams, next talked to FiveRuns’ Adam Keys, to get his views and opinion.

FiveRuns is building an ecosystem of tools around Rails, including its flagship monitoring and management tool, FiveRuns Manage, and a free Rails stack, FiveRuns Install. Built on Rails and delivered as a hosted service, FiveRuns’ products enable organizations to save money and reduce operational complexity by managing the entire Rails application lifecycle - from installation to production. For more information or to download a trial subscription, visit FiveRuns.


Satish>> Adam, a warm welcome to you. For the benefit of the course participants, could you tell us something about your self?

Adam KeysAdam Keys>> I hail from the great state of Texas, USA, living with an army of dachshunds. When I’m not coding, I’m probably thinking of something absurd to say!

Satish>> Most of the course participants trying to make a switch to Ruby, come form a Java background. What advice would you give them?

Adam Keys>> Ruby’s syntax is similar enough that it looks like you could write Java in Ruby. For your own sake, resist the urge. Spend a lot of time reading other Ruby code and trying to assimilate the style projects like Rake, Mephisto and Rails use.

Secondly, don’t let the lack of documentation scare you. It might seem like a nightmare, but in reality, you can learn most of what you need to know about a Ruby application or library by reading its code. This isn’t a very practical strategy in Java, but Ruby is more concise and to-the-point so I find it works.

Really, its all about reading code. I can’t say enough about the importance of developing this skill.

Satish>> Which Ruby books should the course participants read or always refer to?

Adam Keys>> I came to Ruby just before Rails came out, so I’m a Pickaxe guy myself. Despite recent criticism, I still think its a fine tutorial and reference.

Satish>> Which sites / blogs do you recommend, so that the participants are always abreast of the latest developments in Ruby?

Adam Keys>> Time spent poking around in projects on GitHub is time well spent. So far as blogs, The Rails Way and Err The Blog are classics, though they don’t publish much as of late.

Satish>> While learning Ruby, what are the kind of projects the course participants should get involved with, to enhance their Ruby skills?

Adam Keys>> I think the best progression, over the course of many months is as follows:

  • Simple Ruby scripts
  • Small Rails apps
  • A small Ruby gem to use across many applications
  • A larger Rails app
  • A Rails plugin

Once you’re to the point that you’re creating gems or plugins for a project, you’ve sort of “arrived” as a Ruby developer.

Satish>> Which tools / utilities / libraries / applications in Ruby (apart from Rails) should the course participants focus on? Why?

Adam Keys>> Knowing how to make Rake and RubyGems do your bidding is essential. From there, I’d say start with what interests you and work your way outwards.

Satish>> What do you like / love about Ruby? Why?

Adam Keys>> I will not go back to a language that doesn’t have something like blocks. Metaprogramming is also a big deal for me. Beyond that, the community is largely the friendliest I’ve known in my years building software. I think this is overlooked sometimes, perhaps overshadowed by some personalities, but its a really important aspect.

Satish>> What are the attributes of really good Ruby programmer?

Adam Keys>>

  • They are well spoken and write well
  • They are interested in other languages and other disciplines
  • They laugh at my jokes.

The last one is probably optional!

Satish>>How do you keep your skills sharp and keep up-to-date with the latest developments?

Adam Keys>> Chad Fowler’s “My Job Went To India” has the best advice to this question. From his writings, I’ll emphasize exposure to people smarter than yourself, “practicing” and continually reading about what’s going on and writing about what you think (even if you don’t publish it).

Satish>> Is it important to learn Rails for a Ruby programmer? If yes, why?

Adam Keys>> Its certainly useful. Not knowing Rails but doing Ruby is akin to playing guitar but not knowing any Jimi Hendrix tunes. You can do it, but there’s a missing chunk in your vocabulary.

That said, there are more straight-Ruby jobs than there were a year ago, but its mostly around the various Ruby implementations (Rubinius, JRuby, etc.)

Satish>> According to you, what have been the major obstacles in the Enterprise adoption of Ruby?

Adam Keys>> I don’t think the enterprise-adoption hype cycle has really picked up yet. By “enterprise-adoption hype cycle”, I mean ads in InfoWorld, sales pitches on golf courses, etc. This seems like a weird thing to happen with out little old Ruby, but if it follows the Java adoption trajectory, it will happen at sometime.

At this point, Ruby has snuck in the “backdoor” of many large shops. It will continue to grow there, but that probably won’t result in any big news items. If you want to understand technology adoption, Tim Bray’s series on the factors that lead to adoption inside and outside of enterprises is very illuminating.

Satish>> JRuby, Rubinius… so many new areas to explore and know about. How important are these for beginners in Ruby?

Adam Keys>> Beginners who are operating in Java or .NET shops will want to familiarize themselves with where JRuby and IronRuby can help them integrate with existing projects. If you’re interested in how the language is implemented, Rubinius is a great source of information, especially for the core library.

Otherwise, it’s something to keep an ear out for what’s going on in those spaces, but you don’t need to follow it closely.

Satish>> According to you, what’s the future of Ruby?

Adam Keys>> Better runtimes is the current drumbeat. After that, I think Ruby needs another killer app or two. Adhearsion could take this throne or maybe RubyCocoa. Its possible the next killer app will come out of left field, somewhere no one thinks Ruby is currently viable. I would enjoy that.


Satish>> It has been fun interacting with you Adam and thank you for sharing your views with the RubyLearning participants.

Technorati Tags: , , ,

Posted by Satish Talim



Ruby Interview: Bruce Williams of FiveRuns

Friday 18 April 2008 @ 2:34 pm

For the past two years, RubyLearning has been promoting the Ruby language world-wide, by conducting its Free Online Ruby Programming Course. 1000s of participants have either completed or are in the process of completing the course. Most Ruby course participants have a plethora of questions related to the language; opportunities in Ruby; Ruby’s future etc.

Satish Talim of RubyLearning talked to FiveRuns, to get their views and opinion.

FiveRuns is building an ecosystem of tools around Rails, including its flagship monitoring and management tool, FiveRuns Manage, and a free Rails stack, FiveRuns Install. Built on Rails and delivered as a hosted service, FiveRuns’ products enable organizations to save money and reduce operational complexity by managing the entire Rails application lifecycle - from installation to production. For more information or to download a trial subscription, visit FiveRuns.

We are pleased to have with us, FiveRuns’ Bruce Williams. He would give us his perspective on the various questions facing the course participants - the would-be Ruby developers.


Satish>> A warm welcome to you. For the benefit of the course participants, could you tell us something about your self?

Bruce WilliamsBruce Williams>> Thanks, Satish. My name is Bruce Williams, and I’ve been a passionate Rubyist since 2001. Since 2004 I’ve used the language professionally, and as the community has grown during the last few years I’ve become a speaker, mentor, tech editor, and general advocate for the language. I’m also a language tourist, continuing to study a number of other languages to make myself a better developer. Like many Rubyists, I’m also a designer. These days I blog at http://codefluency.com; spend days at the office (and Austin coffeeshops) with my fellow developers from FiveRuns, and fly off to conventions whenever I can.

Satish>> Most of the course participants trying to make a switch to Ruby, come form a Java background. What advice would you give them?

Bruce Williams>> If you’re coming to Ruby from Java, you’ve got a great advantage — with experience in a [fairly complete] Object Oriented language some core aspects of Ruby will be very easy to grasp. That being said, idiomatic Ruby still doesn’t look or feel much like the Java you’re used to writing, and you still have a lot of learning (and arguably unlearning) to do.

I think the most important piece of advice is to acclimate. Immerse yourself in the community, do a lot of code reading, write code, take input, and be open minded. The obvious differences in syntax, language features, and code conventions are just the beginning. Parts of Ruby, especially the dynamism, will take some getting used to — and don’t automatically assume your old best practices will translate over to Ruby. It will take time for you to weigh the risks and benefits of different approaches.

Satish>> Which Ruby books should the course participants read or always refer to?

Bruce Williams>> I’d say the core set of books on your bookshelf should include Programming Ruby by Dave Thomas and Andy Hunt (lovingly referred to as the “Pickaxe”), The Ruby Way by Hal Fulton, Best of Ruby Quiz by James Edward Gray II, and The Ruby Cookbook by Lucas Carlson and Leonard Richardson. I’d also highly recommend Ruby for Rails by David A. Black; although it’s geared towards Rails developers it has some really well-crafted material on the Ruby language underneath.

Satish>> Which sites / blogs do you recommend, so that the participants are always abreast of the latest developments in Ruby?

Bruce Williams>> Ruby Inside is the main one that comes to mind as a good news source. I’d also be watching for new developments on Rubyforge, Github, and various Ruby-related mailing lists. In terms of blogs, there are really too many to recommend these days; just look for some prominent names, add them to your aggregator, and keep crawling around looking for new voices.

Satish>> While learning Ruby, what are the kind of projects the course participants should get involved with, to enhance their Ruby skills?

Bruce Williams>> The first thing I’d say is to merely look beyond the web framework; Rails brought Ruby to the forefront as a viable language for commercial use, and since then new web frameworks have been popping up like crazy. That’s great — but if you came to Ruby to work on webapps you owe it to yourself to look beyond the web to widen your horizons and increase your understanding; work on a project completely different than what you’re comfortable with… and after that, pick another one that’s just beyond your comfort zone. Work on a utility library, work on a desktop app, work on anything that keeps you learning.

Satish>> Which tools / utilities / libraries / applications in Ruby (apart from Rails) should the course participants focus on? Why?

Bruce Williams>> I won’t give you an exhaustive list, but I’ll cherry-pick a few. Starting out, know Rubygems; first how to install and manage them and later how to build and distribute them. Understand and use Rake. If you’re doing sysadmin work, pickup Jamis Buck’s net-ssh related tools. If you’re doing web work know Hpricot and open-uri. More than anything, know your standard library inside and out; fileutils, optparse, and yaml are some basic prerequisites.

Do yourself a favor and learn how to test; use test/unit (or RSpec, if it suits your fancy) — it doesn’t matter the tool, just do it, and find out how to do it well.

Know how to [and do] use RDoc to add documentation to your code; it’s just polite.

Satish>> What do you like / love about Ruby? Why?

Bruce Williams>> I like how drastically Ruby seems to take mundane tasks and turn them into fun little challenges of elegance and simplicity. I love how, when finishing up a piece of code, I’m constantly amazed with how short and readable the code is. Every day I’m thankful I work with such an expressive, engaging language; so easy to use that I’m not too exhausted to do important things like test, write documentation, and continue to pursue new techniques.

I love how excited developers new to Ruby can get, just a few minutes after being introduced (and I remember that feeling well).

Most of all I love the community; from the beginning it’s been an incredibly supportive, inclusive group of people. I wouldn’t be half the developer I am today if it wasn’t through the example and mentorship of some much better developers that I met through Ruby.

Satish>> What are the attributes of really good Ruby programmer?

Bruce Williams>> Creativity, flexibility, attention to detail, and a near-obsession with syntax and the expressive flow of language. An understanding that the right words matter, code is a living thing, and software development is more Art than Science. Basic social skills and a fine balance of hubris and humility also helps.

Satish>>How do you keep your skills sharp and keep up-to-date with the latest developments?

Bruce Williams>> It helps, of course, to develop and maintain a large codebase of Ruby code every day at work, and to work on a number of open source and side projects whenever I have the spare time. As with most things, constant practice is vital.

I do my best to read up on new developments daily, and to checkout/clone interesting projects constantly. Code reading is a useful tool I never underestimate.

As I said before, I also dabble in a number of other programming languages, including Erlang, Io, Haskell, and Objective C. I think it’s vital to have some serious experience across paradigms; it’s amazing how useful the cross-polination can be, and the techniques you discover and perfect through experimentation really do make you a sharper (and better read) developer.

Satish>> Is it important to learn Rails for a Ruby programmer? If yes, why?

Bruce Williams>> Absolutely. First of all, in the very least, as a good member of the Ruby community, you’re going to be talking to people that work with Rails every day; it’s still the biggest show in town. Development is a social endeavor, and learning Rails will give you some common vocabulary and points of reference so that you can more easily relate to these people. It probably also makes financial sense to learn Rails too, of course.

That being said, get a good grasp on Ruby before diving too far into Rails. I think the other path is fraught with potholes and peril.

Satish>> According to you, what have been the major obstacles in the Enterprise adoption of Ruby?

Bruce Williams>> Ah, that’s a hard question, and crosses over into my uncomfortable business opinions.

Obviously I’m interested in Enterprise adoption (though I’d rather cut off an appendage before working at a large company again) — adoption means a wider market, a better range of tools, contributers, and expertise. It’s going to happen, it’s just the rate of adoption that’s in question.

There’s no doubt enterprises move slowly, especially approaching new software technologies; no matter how compelling they may be to developers it’s hard to sell them on the financial benefits, especially when the tool and services ecosystem hasn’t grown up around the language. It’s hard for me to see these obstacles as much more than par for the course; it seems more of a systemic issue with the way decisions are made (and the number of layers necessary) and a lack of agility than a judgement on Ruby or Rails specifically.

Eventually we’ll reach a tipping point and widespread adoption will happen more rapidly. It’s all about building the ecosystem of supporting companies around the language. While Rails’ irreverent following certainly didn’t invite enterprises in with a fanfare of trumpets and promises of undying love and support, I think people put a bit too much weight in the emotional environment as a source of blame. I think the reality is more about cold hard numbers, stifling suits, and dollar signs.

Satish>> JRuby, Rubinius… so many new areas to explore and know about. How important are these for beginners in Ruby?

Bruce Williams>> I think it’s very important for beginners to understand what these implementations are and how they differ in terms of supported platform and professed goals, since they are important projects to watch. JRuby might also be of specific interest to Java converts looking for a Ruby “in” at their Java-centric workplace, and Rubinius is an especially interesting approach (and fairly decent source of good code reading).

That being said, use the canonical, standard implementation as your main learning tool.

Satish>> According to you, what’s the future of Ruby?

Bruce Williams>> Hopefully world domination, but without all the oppression, corruption, and nepotism that goes along with it!

More realistically, I expect to see a continued, steady adoption of Ruby by the market, drastically increasing the size of the community. I’m hoping we can avoid skill dilution and commoditization as we get larger (PHP, anyone?), and continue to be a cohesive group of creative, caring, and [reasonably] well-behaved developers.

From a technical perspective I think the next few years will be very interesting; with the advent of Ruby 2.0 and the dynamic of multiple implementations it’s going to be quite a ride. I’ll be there all the way.

Thanks, Satish.


Satish>> It has been fun interacting with you Bruce and thank you for sharing your views with the RubyLearning participants.

Technorati Tags: , , ,

Posted by Satish Talim



Rails Interview: Michael Slater of BuildingWebApps.com

Tuesday 15 April 2008 @ 9:59 am

For the past two years, RubyLearning has been promoting the Ruby language world-wide, by conducting its Free Online Ruby Programming Course. 1000s of participants have either completed or are in the process of completing the course. Most Ruby course participants have a plethora of questions related to the language; opportunities in Ruby; Ruby’s future; Rails etc.

Satish Talim of RubyLearning talked to BuildingWebApps, to get their views and opinions.

BuildingWebApps is a project of Collective Knowledge Works, Inc. They create platforms for organizing and sharing the knowledge of a community. The first community upon which they have focused is their own: Ruby on Rails developers..

We are pleased to have with us, BuildingWebApps’: Michael Slater President of Collective Knowledge Works, Inc. He would give us his perspective on the various questions facing the course participants - the would-be Ruby developers.


Satish>> A warm welcome to you. For the benefit of the course participants, could you tell us something about your self?

Michael SlaterMichael Slater>> I’ve been working in high technology for more than 30 years. I started out as a hardware engineer at Hewlett-Packard developing microprocessor-based test equipment. I spent several years as a consultant building embedded microprocessor applications, and I ended up writing a lot of assembly and C code. In 1987, I created the Microprocessor Report newsletter and the Microprocessor Forum conference, and that began a 12-year adventure in the publishing and conference business that led me away from engineering. In early 2000, I left this business, after selling it first to Ziff-Davis and then to Cahners, to launch a venture-funded startup in the digital photo space. We sold that company, Fotiva, to Adobe in late 2001. The software we built become Photoshop Album, and then the Organizer mode of Photoshop Elements (on Windows only). I spent five years at Adobe managing a research team doing advanced photo management work. During the time I was at Adobe, I built a resource site for San Francisco Bay. I build this in PHP, and learned a lot about how painful that can be. I learned that I love the interactivity and immediate feedback that the web offers. And the experience with PHP, and with building a fairly complex application without any framework, really set me up to appreciate Rails. I tried unsuccessfully to get Adobe into the online world several times, and eventually left to build web applications on my own. I had started a Rails project at Adobe in early 2006, but it never saw the light of day. When I left in November 2006, I began working as an independent Rails developer. While working with Rails, I became frustrated with the lack of any cohesive on-line resource. The framework changes too quickly for books to remain up-to-date; the Rails wiki isn’t adequately maintained; and although there are lots of great articles scattered around various blogs, they can be hard to find. So with the combination of my experience building Microprocessor Report and BoatingSF, and my interest in the Rails world, I decided to launch BuildingWebApps.com, which I hope to build into the best online resource for Ruby on Rails developers. In mid-2007, one of my Adobe colleagues, Christopher Haupt, left the company and joined me in forming Collective Knowledge Works, Inc. Chris led the online services group in Adobe’s digital imaging operation and is a real expert in web technologies. We’re taking the platform we’ve built for BuildingWebApps.com and are evolving it into a hosted offering for anyone who wants to build similar sites on other topics, combining a rich database of information with community features. Our goal is to create the leading next-generation platform for community sites that are focused around a specific body of knowledge.

Satish>> You run a Free Online Ruby on Rails Course which is complementary to the course we run at RubyLearning. Could you tell us more about this course?

Michael Slater>> One of the first things we did when we were launching BuildingWebApps.com was to create the Learning Rails podcast to help spread the word about Rails. We want to demystify Rails and help web developers, who may not come from a software engineering background, to get started with Rails. For people who don’t have experience with object-oriented programming or model-view-controller architectures, the learning curve can be very steep if you try to learn from the existing books.

When we began adding screencasts, we decided to set it up as an online course. People can sign up to receive the course via email (www.BuildingWebApps.com/learning_rails), and every three days we send them the next lesson. There’s eight audio podcasts, and we expect to have about ten screencasts. We solicit feedback and respond to questions via comments on the lesson pages.

Satish>> Is it important to learn Ruby on Rails for a Ruby programmer? If yes, why?

Michael Slater>> It depends on what you want to create with Ruby. If you don’t want to build web applications, there is no need to learn Ruby on Rails. But if you want to build web applications using Ruby, you should learn Ruby on Rails. It provides a tremendous amount of infrastructure that makes it much easier to build a web application. It really wouldn’t make sense to build a web application in Ruby without using some sort of framework.

There are other frameworks for building web applications with Ruby, of which Merb is the most interesting. But there’s a vastly larger community working with Rails, and much more information available on using it.

Satish>> What do you like / love about Ruby on Rails? Why?

Michael Slater>> Once you’ve climbed the learning curve and are comfortable with Rails, you can be incredibly productive. One person can build an application in a month that would take a team of three people several months in Java. Smaller teams are more efficient, which multiplies the productivity gain. Ruby on Rails makes web development fast and fun, and most important, makes it easier to evolve and meet user needs.

Rails makes it easy to make changes, which is important for iterative development. For example, suppose you want to add another field to your database table. It’s easy — there’s no SQL to write, no XML configuration files to update, and the Rails migrations handle the updating of your database schema.

This flexibility is crucial for web applications, in which the old-fashioned “waterfall” design approach really doesn’t make sense. You need to first build something simple, then use it, get other people using it, find out what works and what needs improvement, and iterate rapidly. Rails is very well suited for this kind of development.

Because Rails includes “helpers” that support the Prototype and Scriptaculus JavaScript frameworks, it’s easy to add Ajax capabilities to your application. You can build sophisticated Ajax interfaces with virtually no JavaScript programming. I like being able to do everything in Ruby.

Although the Rails community is still small compared with that of PHP or .NET or Java, it is now reasonably large and has reached critical mass. There’s more than a dozen Rails books, several very active online forums, and an assortment of conferences and seminars. When you need to do something, there’s a good chance someone else has already done it and written it up, which can save lots of time.

Satish>> What are the attributes of really good Ruby on Rails developer?

Michael Slater>> First, a good Rails developer needs to know Ruby. You can get started with Rails with only a bare minimum of Ruby knowledge, but as you go deeper into Rails development, being comfortable with Ruby is essential. The better your Ruby knowledge, the more you can do with Rails, and the more efficiently you can do it.

Second, a good Rails developer needs to know the Rails framework thoroughly. There’s a lot there, and it takes time to learn. There’s no substitute for experience.

Third, a good Rails developer needs a good sense for user experience. Rails is most effective when the developer can also play the role of interaction designer, at least to some degree.

Finally, a good Rails developer needs to have the testing religion. Rails includes extensive built-in facilities for incorporating tests into your application, but nothing forces you to use them. You need to understand the value of testing and develop good testing habits.

Satish>>How do you keep your skills sharp and keep up-to-date with the latest developments?

Michael Slater>> I read a lot. I’ve at least skimmed most of the Rails books that are out there, and when new books come out, I always buy them. I’m something of a book nut. I also keep up with quite a few blogs (some of which are listed below).

Colleagues are invaluable. I’ve learned a great deal from my partner, Christopher Haupt, and from other developers I’ve worked with. Pair programming is a great way to learn.

I like screencasts too. Geoffrey Grosenbach’s Peepcode.com has produced a lot of great screencasts, and Ryan Bates has produced an amazing stream of short, focused, free screencasts on specific Rails techniques at railscasts.com.

I also go to seminars, conferences, and user groups. I’ve been to the introductory and advanced studios from Pragmatic Programmers, and they are excellent. RailsConf is always a fire-hose of new ideas and inspirations. And I participate in my local Ruby users groups.

The most important thing, though, it to keep building applications. Every time I want to implement some feature, I dig in and learn about what others have done, and experiment on my own. There’s no way to just methodically go through all of Rails and learn it — it takes a back and forth, learning and building, learning and building.

Satish>> Which sites / blogs do you recommend, so that the participants are always abreast of the latest developments in Ruby on Rails?

Michael Slater>> Well, I’d be remiss if I didn’t point out my own site, BuildingWebApps.com! We aggregate the best content from all around the web, as well as publishing our own original articles, podcasts, and screencasts.

In the Ruby world, I like Peter Cooper’s rubyinside.com. For Rails, there’s nothing better than Jamis Buck and Michael Koziarksi’s writing at therailsway.com. Other excellent blogs include Jay Field’s blog.jayfields.com and Josh Susser’s blog hasmanythrough.com. And there’s many more — there’s an extensive list at BuildingWebApps.com.

The Rails Forum site (railsforum.com) is also a great resource, and the rubyonrails-talk group is sometimes helpful (though the level of traffic and noise can be overwhelming).

Satish>> What according to you is the future of Ruby on Rails?

Michael Slater>> I believe Ruby on Rails is poised to become one of the most important web application frameworks, and to hold that position for quite a while. It won’t dominate — there are other worthy frameworks and languages, developers may prefer different solutions depending on their background and experience, and it isn’t the best solution for every application.

But for the vast majority of new web applications, I believe Ruby on Rails is an excellent choice — maybe even the best choice. I expect many developers to shift from PHP (with or without a framework) to Rails, as well as from Java-based frameworks to Rails. There will always be a strong following for .NET, but many developers will follow the lure of open source and end up using Rails.

There’s a tremendous amount of energy and expertise being devoted to the ongoing development of Rails. Look how far it has come in the past two years — and there’s far more people working on it now than there were two years ago. I expect to see steady improvements in the Rails framework, making it an even better solution to common web developer needs in coming years.


Satish>> It has been fun interacting with you and thank you for sharing your views with the RubyLearning participants.

Technorati Tags: , , ,

Posted by Satish Talim



Rails TakeFive Interview

Saturday 29 March 2008 @ 9:07 am

It was fun being interviewed by FiveRuns Blog. FiveRuns exists for the express purpose of delivering affordable and radically simplified tools for monitoring applications and their supporting infrastructure with a focus on Ruby on Rails.

Every Friday, FiveRuns interviews Ruby/Rails enthusiasts and it was an honor to be amongst luminaries such as Chad Fowler, Peter Cooper, Pat Eyler to name a few.

Technorati Tags: , , ,

Posted by Satish Talim



«« Previous Posts

RUBYGALORE.COM