InfoQ: Learning Ruby on Rails with Michael Hartl

Rails3tutorial cover

My interview with Michael Hartl of the Ruby on Rails Tutorial series is now live on InfoQ.  Michael is such an interesting guy and has a diverse background ranging from physics instructor at CalTech to Ruby on Rails teacher.

Please give Learning Ruby on Rails with Michael Hartl a read.

You can find out more information about the printed version of Michael’s book Ruby on Rails 3 Tutorial: Learn Rails by Example (Addison-Wesley Professional Ruby Series) on Amazon.com.

RailsInstaller is Instant Rails Evolved

Today the great team led by Wayne Sequin (rvm fame) and Luis Lavena (RubyInstaller fame)  and initiated by Dr. Nic Williams of Engine Yard released RailsInstaller.

In the Box

RailsInstaller is really what Instant Rails brought to Windows developers wanting to write Ruby and Ruby on Rails code, but now evolved.  RailsInstaller takes Ruby and Rails to their current versions and add some other niceties to give the Windows developer the ability to create real Rails applications today.  Included is:

  • Ruby 1.8.7-p330
  • Rails 3.0.3
  • Git 1.7.3.1
  • Sqlite 3.7.3
  • DevKit

I would expect that we would see a Ruby 1.9.2 at some point but imagine there must be some technical hurdles to get beyond before it makes sense to release.

Installation

Installation is a breeze by just following the simple installation wizard all Windows users know all about.   A nice video has been created to show how to install and get started:

The video is very clear and the installation wizard really simple, just follow the directions and keep the defaults for the best experience.

RailsInstaller1

The installer explains clearly what is being installed in this particular version.

RailsInstaller2

The default is to add to the PATH statement.  I would recommend keeping this so your system knows where to find all the needed executables.

RailsInstallerMenu

You should notice a nice shortcut to a Ruby and Rails prompt all setup to use.

RailsInstallerPrompt

The Ruby version as well as the Git version are cleanly shown.  You are good to go.

I was lucky enough to have a prerelease build of the tool and even in a prerelease state, they guys did a great job.  It was easy to create Rails apps and have them running in no time.  Keep in mind that not all Ruby gems will yet be compatible with Windows.  If you encounter issues you are best advised to contact the person in charge of the gem project you are trying to install.

I encourage everyone to who is interested in Rails on Windows in a clean package to download the installer now and give it a go.

6 Great Ruby on Rails 3 Learning Resources

Ruby on Rails 3 was released just a short time ago and is a fairly big changed to previous versions of the Rails framework.   People are starting to put together some great content to help developers come up-to-speed on Rails 3.

I began looking around for some Rails 3 content for my own use, even though I use a variety of beta books for the purpose, I found these resources really useful.  This brought me to the realization some readers may find value.

1. Ruby on Rails Tutorial by Michael Hartl

railstutorial_logoThis is such a great resource; offering a range of content that includes a Ruby on Rails Tutorial book as well as a set of videos with material from the book.  The book is available to read on-line, purchase as a PDF or the dead tree version available from Addison-Wesley.

The videos are a real sweet spot in my opinion, with 15 hrs of video training for $85.  Try to get 2-days of training from anyone at that price.

Table of Contents

  • Rails installation (OS X/Linux) (13m)
  • Git .bashrc lines
  • Rails installation (Windows) (8m)
  • Lesson 1: From zero to deploy (46m)
  • Lesson 2: A demo app (1h11m)
  • OS X testing setup (8m)
  • Lesson 3: Mostly static pages (57m)
  • Lesson 4: Rails-flavored Ruby (1h45m)
  • Lesson 5: Filling in the layout (1h10m)
  • Lesson 6: Modeling and viewing users, part I (1h30m)
  • Lesson 7: Modeling and viewing users, part II (1h40m)
  • Lesson 8: Sign up (1h22m)
  • Lesson 9: Sign in, sign out (1h36m)
  • Lesson 10: Updating, showing, and deleting users (2h25m)
  • Lesson 11: User microposts (2h03m)
  • Lesson 12: Following users (2h19m)

I have gone through both the book, Rails 3 version, and the screencasts looking for nuggets of information I may not be aware of in Rails 3.  The screen casts are presented in a such a well-thought-out manner that makes them easy to follow and will not put you to sleep.

Michael covers a lot of great basic topics but also includes specific coverage of such things as setting up and using Devise for authentication.  He also covers Test-Driven Development (TDD) very well using RSpec.  There are a lot of how-to tips with TDD alone to save you hours.

2. PeepCode: Meet Rails 3 Part 01

meet-rails-3-iI always love the content put out by PeepCode and Geoffrey Grosenbach and his recent Meet Rails 3 Part 01 was no exception.

This screen cast covers the beginning aspects of getting into Rails development both on Mac and Windows.  I was pleasantly surprised to see my blog post Running Rails 3 on Windows was used as a reference for users to setup and use Rails 3 on Windows.

PeepCode has been providing screencasts for a long time and is likely to the first to offer those covering Ruby on Rails.

3. Dive into Rails 3 Screencasts

Episode1The Dive into Rails 3 screencasts put out by Gregg Pollack were probably the first series focused on Rails 3 right around the time Rails 3 was released.

Gregg covers many of the hot topics emerging in Rails 3 today:

These are screencasts talk about what is new in Rails 3, so some knowledge of Rails 2.x would be helpful to get the most out of these.

4.  RailsCasts

railscasts_logoRyan Bates has been making the weekly release of a RailsCast what seems like forever now.  Currently there are 240 episodes up on the site, and by my precise calculations..that’s around 4 1/2 years of  great content.  Most episodes range between 10 and 15 minutes of focused content on a particular topic.

At last count Ryan had 25 screen casts covering different aspects of Rails 3 from the basics to new validations to implementing Devise.  These episodes are laser focused to they are best used with some prior knowledge first, possibly go through the Tekpub or RailsTutorial first.

5. TekPub Rails 3 Series

tekpub_logo_smThe Rails 3 series from TekPub currently has 6 episodes running 5+ hours.  The typical series from TekPub is one that starts off with a single episode with more added over a few weeks.

I have been a Tekpub subscriber since it first opened in October 2009 and love the format of their training.

This series is promoted as:

In this series Rob Conery shows you Rails 3 and the core concepts involved. The focus of this series is a bit more practical than theoretical – with the goal of showing you not only Rails, but many of the tools to help you get your site up and running quickly and effectively.

Rob has a been doing screencasts for a long time and has really honed his voice to be the soothing voice you hear on each episode.  Each episode is on a different topic and covers it very well in the 1 hour dedicated.  As I write this, Rob has 6 episodes:

  1. Why You Should Care About Rails 3
  2. Rack
  3. Controller Fundamentals
  4. Controller Deep Dive
  5. View Concepts
  6. Model Concepts

6. Rails 3 Upgrade Handbook

rails-3-upgrade-handbook-pdf

Long-time Ruby and Rails community member Jeremy McAnally has written up this great handbook on how to take your pre-Rails 3 application into the Rails 3 world.

So many projects exist out in the wild that his handbook is invaluable.

Unlike the other resources I have listed, this is not a screencast but is available as an ebook.   I felt is was just such a great resource for Rails 3 and it tied in so well with coming up-to-speed on Rails 3 and the likelihood you might be upgrading a Rails 2.x application to the latest.

The guide is a beauty, it really covers the pain points a developer will face when upgrading their application to Rails 3 and shows how to get around them.  He includes use of his gem to help with the process as well as checklists for deprecations and the upgrade process itself.

Moving your application to Rails 3?  You need this guide.

Moving Instant Rails Forward

It has been a long time since InstantRails has been brought up-to-date and I had been wondering if the community had any continued interest in the project.

Well, recently I had been contacted about the project and moving it forward and bring it to Rails 3 and Ruby 1.9.2.

Instant Rails 2.0

Today Instant Rails 2.0 consists of fairly old Ruby on Rails components:

  • Ruby version 1.8.6 Patch Level 111
  • Rails to 2.0.2
  • Mongrel to 1.1.2
  • RubyGems to 1.0.1
  • Rake to 0.8.1
  • SQLite3
  • Apache
  • MySQL
  • phpMyAdmin

Instant Rails vNext

The goal of the next version of Instant Rails would be something really easy to install and use.  One of the great features of Instant Rails today is the ability to extract the Instant Rails zip file to any directory you choose and have the ability to delete it later without the fancy uninstall ceremony we usually see in Windows.

I wrote here in the past about setting up to run Ruby on Rails 3 on Windows.  The steps are not complicated but may be more than new developers are able to follow.

My initial thoughts of components to be included:

  • Ruby 1.9.2
  • Rails 3.0.1
  • RubyGems and Rake latest
  • SQLite3
  • No Apache or Mongrel, just WebBrick
  • Git Support

In the spirit of keeping these simple; what am I missing?  What components are missing?

Let’s not talk features just yet but major components only.  I am leaving out Apache and MySQL as I don’t think they’re needed.  WebBrick and SQLite3 work just fine for development purposes.

Please provide your thoughts in the comments as to the interest in a new version of Instant Rails and also what components are needed.

Thank you.

Makandra Notes for Rails Developers

The Ruby Rails consulting shop Makandra recently opened their internal knowledge base of how-tos and code snippets for all to see and use.  The announcement about the project indicates 500+ links:

This September we decided to take our in-house knowledge base and publish it for everyone to see. makandra notes contains some 200 HOWTOs and 500+ links for Ruby, Rails, RSpec, Cucumber and Javascript and is growing every day.

Whether you’re looking to deliver Paperclip attachments securely, test concurrent Ruby code or marry Capybara with SSL-enabled applications, chances are we already solved your problem for you.

The reality is as of this writing, 718 notes are listed.  It’s a good resource and one I hope they add to and either let others contribute to or open source the application for others to use to build internal/external knowledge bases.

The search is fast too and real-time, narrowing down results as I typed.

makandra

Besides having some useful information you can also see the user interface is nice and clean.  The resource is from a Rails shop but it is not just for Rails issues but rather the issues Rails developers deal with each day, from Ruby, Rails and JavaScript to Ubuntu server administration and cron jobs.

Way to go Makandra and thanks for the resource.

Where Are We Without Community?

communityI came across a really interesting blog post yesterday with a recurring theme.  It was by developer Dave Newman titled, Leaving .net.  Does it sound familiar?  It does to me and after reading Dave’s post, the reasons are a familiar sound.

So many .NET shops have their heads buried in the sand, developing mounds of software with antiquated principles:

A company I worked at once had been operating for years under the assumption that it was OK for software to take months to integrate and deploy; they had never heard of continuous integration. They thought it was normal to rewrite your application from scratch every 2 years; they had never heard of Test Driven Development or iterative development. These techniques have been proven to significantly raise the bar on quality, cost of development, cost of maintenance and general morale. Turns out you can still find, in this day and age, software practitioners who haven’t even heard the terms.

It has been shown that Test Driven Development (TDD) improves code but it seems the .NET community fails fully embrace the concept.  I have been part of many .NET projects where stakeholders simply refused to spend the time doing TDD, not when deadlines need to be met.  They were simply too naive to know that deadlines would still have been met but with better code.

My last .NET project was led by a developer who was the master of “not invented here” syndrome.  The project was a unique eCommerce application originally architected 5 years earlier and consisted of some complicated code.  The developer, who didn’t want to spend the time to learn the system, wanted to rewrite the code his-way so he could understand it.  His way was easily worse and did not take into account all the side effects his way may have introduced.  I am glad I am not the only one to witness this:

I have also seen on numerous occasions developers build their own libraries and frameworks to solve well understood problems in curiously terrible ways. The endless rebuilding of data mappers, logging code, object resolution mechanisms, messaging systems and web frameworks adds up to a massive waste of time, effort and potential. I’m not talking about public collaborative efforts, I’m talking about in house “Not invented here” syndrome. This is what happens when you have a community cut off from the world. A community that doesn’t talk to each other and work together. This is what the .net community is.

Communities exist everywhere but none stronger than those in the open source world.  I can’t think of a more diverse and deep group of developers than those using Ruby.   Developers in this community rally around each other, support each other and the projects they create.  If there is no support, no community development the project simply dies off.  One can use Ruby on Rails as a great example, go ready it 1600 contributors.  This is project done for the community by the community, not reinventing the while but improving it.

Has Microsoft ever done anything like this?  No. The closest I can think of is IronRuby and they have since turned their back on that project.   Microsoft tends to treat developers as something to be fed, who pushes out updates as fast as possible to get the pack on to the next thing.  If you look at Silverlight going from v1.0 to 4.0 in a blaze or WCF moving fast to its current state, developers can keep up.  Most of the time we can’t keep up because we are fed and are not allowed to also cook, like in the Ruby community.

This is the same with ASP.NET MVC:

Last year Microsoft released a new web framework called MVC. It’s not new by web standards, it’s not even new by .net standards as the Monorail project had been alive for years before. Yet people were waiting for it. People were waiting for Microsoft to deliver it to them. There were already open source MVC web frameworks and an army of .net developers who could have collaborated to make them great but nothing much happened. It took a handful of developers at Microsoft to make their own framework and now MVC is the hot new thing.

But they did not:

This new web framework is better than the previous one and is quickly becoming the de-facto. Microsoft released the source. Someone created a github repository. This repository is being watched by 30 people and 5commits have been made to it. 5 commits! Why is this number so horrendously low? Because Microsoft don’t take patches. They’ll release a new version of MVC without anyone’s commits. Worse than that, everyone will start using their new version and the github repo will just start again.

The little community that exists for Microsoft wants to see success but Microsoft won’t let them.  Microsoft doesn’t believe in community, they may say they do but actions speak louder than words.  In the end, they are only hurting themselves.

Microsoft has been touting open source for a while now, not because they want to but because they think it will improve their bottom line.  Isn’t that what they’re all about?

Imagine if Microsoft would have opened up ASP.NET MVC completely and let the community create it?  Yes, I know they released the source, but that does not make the project open source.  Open source means they take contributions from the community and the code is created and owned by the community.  Big difference.

Why Leave .NET?

Well, for one, to make a statement.  If all .NET developers accept the status quo, nothing will change.  Secondly, to see what it looks like from outside the .NET world, how other developers live and breath.

You don’t have to actually leave the technology, maybe explore others and gain some experience.  The experience could make you a better developer and bring back something to .NET, possibly to help Microsoft become aware of a better way.

Where to go?

Well, almost anywhere else.  I like the Ruby community but I have heard Python has a great community.  I would bet almost any open source community will welcome you.

What’s the answer?

I developed C# code since it’s inception and wrote many lines of C++ using Microsoft Visual C++ before that.  These are really good technologies and we can’t just write them off.

I hear developer’s stories all the time, how they dropped .NET and moved to technology X.  The Ruby community itself contains many ex-.NET developers who have seen the light.  How can we make Microsoft see the light?  I don’t know we can, they need to be looking.

It comes down to this, Microsoft is losing without a community.  I am referring to the passionate community, like the 1600 who created Ruby on Rails.  I think as more and more developers gain experience and see how other communities function, they will leave and move on.  It won’t be overnight but it will happen unless Microsoft is willing to change.

So to answer the question, where are we without a community?  The answer is no where.

Running Rails 3 on Windows

Well, the long-awaited release of Ruby on Rails 3 is now out and all of the Mac and Linux junkies are busy gem-installing the latest version of the framework.  What about all the lonely Windows developers out there looking through their windows (pun intended) and wondering what it’s like on the other side of the fence?

Good news!  It is actually pretty easy to setup and run Rails 3 on your Windows system.  I mainly run on Macs these days but have a couple Windows systems still kicking around and thought I would give a go.  It is actually pretty straight-forward now and works really well.  Follow the steps:

Install Ruby

Rails 3 requires at least Ruby 1.8.7 and is happy using Ruby 1.9.2, I opted for the latest and greatest.

  1. Head over to RubyForge for the Ruby Installer by Luis LavenaDownload 1.9.2-p0 for the latest.   A nice feature of this Ruby installer is the latest gem executable is built in, which is version 1.3.7 at the time of this writing and you won’t have to install it yourself.
  2. I installed in C:\Ruby192, which is the default, and added C:\Ruby192\bin to my path so Windows can find the Ruby executables.

Running the Ruby version command from a new command prompt:

ruby -v

ruby-version

If you get a file-not-found or some other undesirable result then the path setting isn’t likely correct or you may want to try closing the command prompt and opening a new one.

Install Ruby on Rails

This is a tough one:

gem install rails

UPDATE: A reader points out of issues with installing Rails as pointed out by a post on the Ruby Forum. The issue was solved by simply adding a –pre to the gem command to install Rails.

gem install rails --pre

Everything you need to run Rails 3 gets installed with the exception of the SQLite3 Ruby gem which Rails uses as the default database provider:

Rails3gems

gem install sqlite3-ruby

You should see a message similar to this:

sqlite3-ruby-gem

I use SQLite3 for most of my local development unless I need a database like MySQL or PostgreSQL.  Installing is trivial.

Installing SQLite3

If you look at the above message when installing the sqlite3-ruby you should notice the gem relies on the sqlite3.dll and it is recommended to use version 3.6.23.1, which you can download form here.  I grabbed 3.7.2 and it seems to work fine, your mileage may vary.  If you’re interested, get the latest from the SQLite3 downloads page.

Now with the sqlite3.dll in hand (unzipped from the download), copy to the bin directory of the above Ruby installation.  In my case that’s C:\Ruby192\bin, and that’s it.

Creating a Test Application

Now it’s time to test the new Ruby and Rails installation.  Pick a location to create the new application and run the new Rails command from a command prompt:

rails new testapp

This command creates a new directory called testapp and spits out a bunch of text along the way, looking something like this:

railsapp

Once done, change directory into the new testapp directory and run:

rake db:migrate

This will test your SQLite3 installation and create a new development database in the testapp\db directory called development.sqlite3.  If you get any errors it is likely the sqlite3.dll is not in your Ruby bin directory, check and come back.

Now from the testapp directory, fire up the Rails development server from a command prompt:

rails server

WebBrick fires up and looks like this:

rails_server

If there are errors reported than something has gone wrong.  If you see this screen, fire up your browser and browser to the address http://localhost:3000.  If all goes well, you will see this screen:

testapp_home

Click on the link below the title that reads “About your application’s environment”.  This gives a lot of detail about your Rails application configuration.

testapp_config

Congratulations!  You have the latest and greatest Ruby and Ruby on Rails running on the Windows platform.

Now go out and read Mike Hartl’s Ruby on Rails Tutorial for Rail 3 and create some applications.

InfoQ: DataMapper Turns the Big 1.0

Since my visit to RailsConf in June I have been pursuing various topics to write about for InfoQ.  I have been particularly interested in DataMapper and the fact that version 1.0 has been released.

I had the chance to talk with Dan Kubb, the lead on the project, about version 1.0 and it went out this morning on InfoQ, titled DataMapper Reaches 1.0 Milestone.  It was interesting to see the details of this project while thinking how Rails uses ActiveRecord.

One of the more impressive aspects of this project is the number of plugins available.  From the DataMapper web site:

Resource Plugins

These plugins modify the behavior of all resources in an application, adding new functionality to them, or providing easier ways of doing things.

DM-Validations

This provides validations for resources. The plugin both defines automatic validations based on the properties specified and also allows assignment of manual validations. It also supports contextual validation, allowing a resource to be considered valid for some purposes but not others.

DM-Timestamps

This defines callbacks on the common timestamp properties, making them auto-update when the models are created or updated. The targeted properties are :created_at and :updated_at for DateTime properties and :created_on and :updated_on for Date properties.

DM-Aggregates

This provides methods for database calls to aggregate functions such as count, sum, avg, max and min. These aggregate functions are added to both collections and Models.

DM-Types

This provides several more allowable property types. Enum and Flag allow a field to take a few set values. URI, FilePath, Regexp, EpochTime and BCryptHash save database representations of the classes, restoring them on retrieval. Csv, Json and Yaml store data in the field in the serial formats and de-serialize them on retrieval.

DM-Serializer

This provides ’to_*’ methods which take a resource and convert it to a serial format to be restored later. Currently the plugin provides to_xml, to_yaml and to_json

DM-Constraints

This plugin provides foreign key constrains on has n relationships for Postgres and MySQL adapters.

DM-Adjust

This plugin allows properties on resources, collections and models to incremented or decremented by a fixed amount.

is Plugins

These plugins make new functionality available to models, which can be accessed via the is method, for example is :list. These make the models behave in new ways.

DM-Is-List

The model acts as an item on a list. It has a position, and there are methods defined for moving it up or down the list based on this position. The position can also be scoped, for example on a user id.

DM-Is-Tree

The model acts as a node of a tree. It gains methods for querying parents and children as well as all the nodes of the current generation, the trail of ancestors to the root node and the root node itself.

DM-Is-Nested_Set

The model acts as an item in a ‘nested set’. This might be used for some kind of categorization system, or for threaded conversations on a forum. The advantage this has over a tree is that is easy to fetch all the descendants or ancestors of a particular set in one query, not just the next generation. Added to a nested set is more complex under the hood, but the plugin takes care of this for you.

DM-Is-Versioned

The model is versioned. When it is updated, instead of the previous version being lost in the mists of time, it is saved in a subsidiary table, so that it can be restored later if needed.

DM-Is-State_Machine

The model acts as a state machine. Instead of a column being allowed to take any value, it is used to track the state of the machine, which is updated through events that cause transitions. For example, this might step a model through a sign-up process, or some other complex task.

DM-Is-Remixable

The model becomes ‘remixable’. It can then be included (or remixed) in other models, which defines a new table to hold the remixed model and can have other properties or methods defined on it. It’s something like class table inheritance for relationships :)

Adapters

These plugins provide new adapters for different storage schemes, allowing them to be used to store resources, instead of the more conventional relational database store.

DM-CouchDB-Adapter

An adapter for the JSON based document database couch-db. The adaptor has support for both defining models backed by a couch-db store and also for couch-db views.

DM-Rest-Adapter

An adapter for a XML based REST-backed storage scheme. All the usual DataMapper operations are performed as HTTP GETs, POSTs, UPDATEs and DELETEs, operating on the URIs of the resources.

Integration Plugins

These plugins are designed to ease integration with other libraries, currently just web frameworks.

merb_datamapper

Integration with the merb web framework. The plugin takes care of setting up the DataMapper connection when the framework starts, provides several useful rake tasks as well as generators for Models, ResourceControllers and Migrations.

rails_datamapper

Integration with Rails. It provides a Model generator and also takes care of connecting to the data-store through DataMapper.

Utility Plugins

These provide useful functionality, though are unlikely to be used by every project or assist more with development than production use.

DM-Sweatshop

A model factory for DataMapper, supporting the creation of random models for specing or to fill an application for development. Properties can be picked at random or made to conform to a variety of regular expressions. dm-sweatshop also understands has n relationships and can assign a random selection of child models to a parent.

DM-Migrations

Migrations for DataMapper, allowing modification of the database schema with more control thanauto_migrate! and auto_upgrade!. Migrations can be written to create, modify and drop tables and columns. In addition, the plugin provides support for specing migrations and verifying they perform as intended.

DM-Shorthand

This plugin eases operations involving models across multiple repositories, allowing wrapping in arepository(:foo) block to be replaced with a MyModel(:foo).some_method call.

DM-Observer

Observers watch other classes, doing things when certain operations are performed on the remote class. This can be anything, but they are commonly used for writing logs or notifying via email or xmpp when a critical operation has occurred.

DM-CLI

The dm executable is a DataMapper optimized version of irb. It automatically connections to a data-store based on the arguments passed to it and supports easy loading of DataMapper plugins, models from a directory as well as reading connection information from a YAML configuration file.

DM-Querizer

This provides alternate syntax for queries, replacing the hash which DataMapper uses with a more ‘ruby-ish’ use of &&, == and =~.

DM-Ar_Finders

ActiveRecord style syntax for DataMapper. This includes functionality such as find_by_name,find_or_create and find_all_by_title.

DataMapper puts a lot more of the responsibility of the model right in the model definition, similar to Django and other frameworks.  The nice part about this is everything is in one place and we remove the need for migrations when creating new models.  Currently, migrations are needed to change a model but that may change too.

I am looking forward to using DataMapper more.

My Updated Developer Podcast List

My appetite for podcasts is always growing but my interests routinely change.  I don’t listen to many .NET-specific podcasts any longer, but more along the lines of software craftsmanship, Mac/iPhone, Python and Ruby development.  I hike about an hour a day to try to stay somewhat fit and always have my iPhone loaded up with podcasts to pass the time.

I am always searching for new podcasts and from time-to-time that I come across new ones I consider worth sharing. It has been a while since I have shared any, so now seems like as good a time as any.  My last update from a few years ago titled Software Development Podcast List has seen a few additions.

General Coding, Ruby on Rails, .NET

  • coderpath podcast with Miles Forrest and Curtis McHale – mainly interviews with Ruby on Rails community folks, great dialog.
  • Teach Me to Code podcast with Charles Max Wood – covers a wide variety of topics and interviews with community members from Agile to Ruby and everything in between.  Very good detailed discussions, highly recommended.
  • The Dev Show with Dan Benjamin and Jason Seifer – news covering JavaScript, Python, Ruby, Java, PHP and more.
  • The Ruby Show with Dan Benjamin and Jason Seifer – good review of the latest Ruby and Rails news, with a side of hate for MongoDB (just kidding).  Most episodes are 20-min or so in length.
  • The Changelog with Adam Stacoviak – very detailed interviews and discussions on more obscure subjects in Open Source including JavaScript, iPhone, Sinatra, node.js and others.  This podcast exposes listeners to subjects not really heard elsewhere.  Good stuff.
  • Herding Code Podcast with K. Scott Allen, Kevin Dente, Scott Koon and Jon Galloway – originally mainly a Microsoft-centric podcast, lately they have been expanding into many great areas such as iPhone development, Ruby, Ruby on Rails, jQuery and more.  Great interviews by people really focused on technology.
  • Startups for the Rest of Us with Rob Walling and Mike Taber – not a developer podcast per se but a podcast about going out on your own from two software developer.  Truly valuable episodes if you are thinking about starting a software company or even if you have an idea for a product and wonder what to do.
  • Ruby5 with Gregg Pollack and Nathaniel Bibler – great source of Ruby news in very short episodes (5-6 minutes).

Open Source

  • FLOSS Weekly with Randal Schwartz – interviews with leaders in open source.  Great insight into great projects.

Mac and iPhone/iPad

  • Core Intiution with Daniel Jalkut and Manton Reece – includes many aspects of Mac development.
  • The Mac Developer Network – covers a wide range of development topics for Mac, iPhone and iPad development.

Screencasts

Even though I don’t put screencasts on my iPhone, I do watch these in my free time on my Mac.  These are really good, so I wanted to share.  I didn’t really have enough to put in their own categories, so everything is just lumped together.

  • RailsCasts with Ryan Bates – short (6-15min) screencasts covering very specific topics of Ruby on Rails development.  This is great for beginners and experienced developers alike who want to come up-to-speed on new topics like Rails 3 (222 episodes as of the time of this writing).
  • web pulp tv with Josh Owens – very detailed interviews with many high-profile tech companies talking about how they approach a tech stack and make thing scale.
  • Teach Me to Code with Charles Max Wood – great how-to videos on various aspects of Rails, including Rails 3, RSpec and others.  These are very well done and worth watching for the latest.

I am always looking for any other podcasts or screencasts covering unique topics.  Please leave a comment here with some I may not be including here and may enjoy.  Thank you.

RailsConf 2010

RailsConf 2010 was this past week in Baltimore, MD.  I decided to make the trip down from CT since it was only about 5 hours by train.  Many people have already covered the conference around the interwebs and I am not doing it here.

I had a great time, meeting many new friends and catching up with some old ones.  I arrived on Sunday evening and attended the Ignite RailsConf event.  This event had excellent content and was well attended with about 200 people coming out.

Monday came and we had a full schedule of 3-hour tutorial sessions.  These were good but the unfortunate thing about multi-track events is missing some sessions I would like to see.  It appears the keynotes were the only sessions being recorded, which is too bad.

Keynotes

The keynotes were really one of the highlights of the event for me.  I get the most out of these as they are typically by members of the software development community which are not necessarily Ruby or Rails related. The exception here was really Gary Vaynerchuck, which I missed because I was traveling home.  Thankfully, O’Reilly was recording these sessions and I can watch when I have the time.

Anyone who did not attend RailsConf should check out the recorded keynote sessions from DHH, Yehuda Katz, Derek Sivers, Robert Martin, Gary Vaynerchuck, Michael Feather, Neal Ford and Evan Phoenix.

Sessions

The sessions were overall pretty good and I enjoyed the ones I attended, but I wish I could see other sessions than just the ones I attended.  I think we should petition O’Reilly to record all talks.

Attending all these sessions during the week were really exhausting.  As I write this on Saturday I still feel tired and imagine I won’t feel rested for a few days.

Hallway Chatter and Meeting New Friends

I have come to learn that the real value of any conference is not the knowledge acquired while attending the sessions but the friends and acquaintances we see and the new relationships formed.

I met many people who I knew only from the online world, interacting on my blog or Twitter.  I was fun to see how the people looked different than their Twitter pictures, many look very different.

Finally

I did have a good time at RailsConf but it was exhausting.  As I write this today I am still really tired from the 5 days I was away.

I find it interesting how people take in a conference, how they spend their time.  As I attended talks I looked around the room to see a sea of Apple logos of the MacBooks in the audience.  I noticed people with their MacBooks spending the session writing code, surfing the web or using Twittering.  I repeatedly wondered why people make the effort to attend a session yet do something other than pay attention to the speaker.

I have been to both large and small conferences and especially after this RailsConf, I keep think that smaller single track conferences are the way to go if you want the chance to have a richer environment.  I missed several people I wanted to meet but never ran into them, which goes to show the size of the group.  Smaller conferences typically have 100-200 people and gives attendees a better chance of seeing everyone.

I am looking forward to attending more computer science and engineering related conferences this year as well as some business-specific ones such as BizConf.  I think these are the types of conferences I will gain more value from, rather than simply Ruby-specific.  I hope to see you at a conference soon.