Tagged: Ruby on Rails

RailsConf 2012 Wrap Up

IMG 0370

I was fortunate enough to be able to work out attending RailsConf 2012 in Austin, TX.   This was the first time on many years that the conference was not organized by O’Reilly but rather Ruby Central, Inc.

I have to go on record and say I usually avoid cities but the city of Austin is a great place and would not hesitate to return.  The people are friendly and there is so much diversity in the city that there is something new on each corner.  I noticed an abundance of restaurants with so many different types of food.  I can’t say I had a single bad meal during my journey.  Everyone I spoke with about the trip said I had to try the BBQ, and they were right…it was fantastic.

IMG 0379

Many of the sessions overfilled the room.  This on in particular exemplifies what I’m talking about.  I bet the fire marshal wasn’t aware of these.  Overall the floors were pretty comfortable.

It was often difficult to decide which sessions to attend, with 3 full-tracks there always seemed to be two talks during the same time slot I wanted to take.  I usually decide which sessions to attend by how applicable they are to current work.

One of my favorite sessions was by Obie Fernandez about using Redis with Rails.  Although the examples of the talk were from his recent startup, they were excellent and showed integrating Redis into a Rails application not to remove ActiveRecord but to compliment it.  Obie discussed a gem he released to help the integration called redis_props along with sample code used in the talk.  The code is clean and concise…great stuff.

Another talk I found personal value in was the Semi Automatic Code Review by Richard Huang.  Richard is the creator and maintainer of the Rails Best Practices gem.  In the talk he discusses another related open source project called Railsbp.com which allows for your code to be reviewed when committing to Github.  The results will be displayed on the Railsbp.com site where you can change the code right there and commit back to your repo.  Very informative details produced from the site, GitHub allows hooks into the service and thoughtfully open sourced.  I wasn’t aware of the site before but now I am using it regularly.

The other talk which I took a lot away from was Digging Deep with ActiveSupport::Notifications by Matt Sanders.  This talk when into great detail with many examples of using notifications in your applications.  It is similar to the event publishing and subscriber model from other platforms such as .NET.  Having spent many years writing .NET applications this talk brought back many memories of this pattern.  The techniques exemplified here I had never used in Rails but do need this functionality on a new project.  

UPDATE (05/03/2012): One talk that was intended to be included here, is from Lori Olson.  Her talk titled, Mobile Rage – What causes it & how to fix it (Confreaks), takes the view of web application use on a mobile device from the user’s perspective and how developers can implement very simple techniques to ease the pain.  I recommend this one highly, good stuff and some tips I was not aware of.  I admit I have some sites that can take advantage of this.  

IMG 0387

The final keynote of day one was from a non-Ruby developer, Rich Hickey, which seemed to be out of the ordinary.  Maybe he was there to pull some Ruby developer to the Clojure world.  It appears Rich is trying to convince these two Rubyist that LivingSocial would be better with Clojure.  I wish I could have overheard the conversation.

There were three very large, two-sided, white boards used for companies to post jobs, and they were pretty full of opportunities.  I noticed there were far too many companies attempting to make the next Facebook or Twitter and not enough companies creating really useful applications.  There were exceptions from what I could see, but too few.  I remember the same thing happening around 2000 and then the bubble burst.  Apparently we are not better from this event in history because we have not learned from it.

I finally met face-to-face many friends I only knew from various social networks with lively hallway track discussions.  I think this is the #1 reason to attend conferences.  The materials from the talks are available everywhere and with Confreaks recording all the sessions, you can watch the show later.  You can’t however, experience meeting new friends and seeing old ones without attending.

I recommend every Rails developer attend just one of these events, well worth the time and effort.  The next on is in Portland, OR from April 29 to May 2, 2013.

Palliative Symptoms Survey Hits the Apple App Store →

I have been working diligently on a project for some time now and it’s finally available.  My company, Still River Software, received approval from Apple last week for Palliateive Symptoms Survey to help doctors and caregivers provide better and faster care to their patients.

Palliative Symptoms Survey is an application based on the Edmonton Symptom Assessment Survey (ESAS-r) which was developed to assist in the assessment of nine symptoms that are common in palliative care patients: pain, tiredness, drowsiness, nausea, lack of appetite, depression, anxiety, shortness of breath, and wellbeing There is also a blank scale for patient-specific symptoms.

The application is a native iPad application written in Objective-C with a back-end using Ruby on Rails.   Please read a little bit about the project on my company web site.

When Pow Eats Up the Clock Cycles

I have been a huge fan of Pow to serve my Rails applications for development on my Mac.  I wrote my love for Pow a while back and have been using it ever since, but all has not been a perfect experience along the way.  After upgrading to the 0.3.2 version I started to have my applications appear to lock up in the browser and finally timing out.

The only solution I could reliably make work was to open up Activity Monitor and kill the pow process manually.  It worked..until the next time and I would have to do it again and again.  It seemed like I was doing this many times a day.

It turned out this was a bug reported to the development team and is a confirmed issue.  The cause of the problem is determined to be the dns resolver, ndns.    A pre-release version, 0.4.0-pre is reported to resolve the issue.  Install it with the command:

curl get.pow.cx | VERSION=0.4.0-pre sh

I did this and have not had to manually restart pow once.  I’m not sure why the official release has not been updated to include the fix to this issue which seems to effect many users.

 

ASP.Net MVC vs Ruby on Rails Smackdown Results →

I’m sure everyone saw this already, right?  In case you didn’t then it’s worth a look.

It amazes me (though it shouldn’t) how far a community of developers can take something vs. a software giant like Microsoft.  It looks like open source wins against corporate.  Sure, the results are not exactly scientific but interesting all the same.

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.