Corporations Cannot Have Natural Rights… Duh

When I first read through the Citizens United decision that essentially made it illegal to “discriminate” against corporate political speech, I found myself very torn. On the one hand, I’m an extremely avid supporter of free speech rights, and Kennedy wrote the majority decision to tug at my heartstrings:

Premised on mistrust of governmental power, the First Amendment stands against attempts to disfavor certain subjects or viewpoints or to distinguish among different speakers, which may be a means to control content.

On the other hand, something felt wrong.

In the days that followed, I realized the the court had pulled a bait-and-switch, finding a way to split defenders of free speech, preventing a consistent response to the ruling, and resulting in a fair bit of liberal support for the ruling.

If you read the above quote closely, you can see the lie hiding in plain sight. The court, without drawing much notice, calls corporations “speakers” in the context of the First Amendment.

The problem is simple. The Bill of Rights exists to protect, for the long term, a set of natural rights. If you don’t believe me, read the writings of the anti-federalists, the guys who argued against the constitution and successfully agitated for the addition of the Bill of Rights in the first place:

That insatiable thirst for unconditional controul over our fellow-creatures, and the facility of sounds to convey essentially different ideas, produced the first Bill of Rights ever prefixed to a Frame of Government. The people, although fully sensible that they reserved every tittle of power they did not expressly grant away, yet afraid that the words made use of, to express those rights so granted might convey more than they originally intended, they chose at the same moment to express in different language those rights which the agreement did not include, and which they never designed to part with, endeavoring thereby to prevent any cause for future altercation and the intrusion into society of that doctrine of tacit implication which has been the favorite theme of every tyrant from the origin of all governments to the present day.

The language is a big crufty, but the meaning is clear. Without government, people have certain rights. They choose to surrender some of them to the government. The Constitution outlines the powers they have surrendered, and the Bill of Rights outlines specific cases where those powers may not tread.

However, corporations do not exist outside of government. They are not “creatures”. Instead, corporations are creations of the government, and therefore cannot reserve any rights via a bill of rights.

Looking at the quote from the ruling again:

Premised on mistrust of governmental power, the First Amendment stands against attempts to disfavor certain subjects or viewpoints or to distinguish among different speakers, which may be a means to control content.

The ruling fundamentally subverts that actual purpose of the Bill of Rights, using language that appeals to defenders of free speech to apply to entities that, by their very definition, the First Amendment cannot cover.

In short, the Bill of Rights protects the natural rights of people who have already surrendered a fair bit of their autonomy to the federal government. Corporations, by definition, cannot have natural rights, and since they don’t exist outside of government, cannot have surrendered any autonomy to the government. Therefore, the Bill of Rights, and the First Amendment, cannot apply to them. QED.

Fixing the Heroku "Too many authentication failures for git" problem

        Getting an error like this when you push to Heroku?
electricsheep:herokuapp look$ git push heroku master
Received disconnect from 2: Too many authentication failures for git
fatal: The remote end hung up unexpectedly
If you like to create an ssh key for each server you use, you run this risk.

The reason is that unless you specify which key to use for a host, ssh-agent sends each key in turn until one works. However some server configure sshd to reject connections after too many attempted logins. For example, Dreamhost does this (see <a href="">Dealing with <span class="caps">SSH</span>’s key spam problem</a> for details). This is especially annoying if you weren’t even planning to use key-based authentication (as is the case on Heroku).

You can fix this by setting <code>IdentitiesOnly yes</code> in your <code>~/.ssh/config</code> file. You can do this on a host-by-host basis.
Continue reading "Fixing the Heroku "Too many authentication failures for git" problem"

Fixing the Heroku "Too many authentication failures for git" problem

Getting an error like this when you push to Heroku?

electricsheep:herokuapp look$ git push heroku master
Received disconnect from 2: Too many authentication failures for git
fatal: The remote end hung up unexpectedly

If you like to create an ssh key for each server you use, you run this risk.

The reason is that unless you specify which key to use for a host, ssh-agent sends each key in turn until one works. However some server configure sshd to reject connections after too many attempted logins. For example, Dreamhost does this (see Dealing with SSH’s key spam problem for details). This is especially annoying if you weren’t even planning to use key-based authentication (as is the case on Heroku).

You can fix this by setting IdentitiesOnly yes in your ~/.ssh/config file. You can do this on a host-by-host basis.

        IdentitiesOnly yes

Heroku is a bit difficult to do this for because they don’t have a single IP address or domain (that I know of) you can configure this for.

As a workaround, clear your identities:

ssh-add -D

(Thanks to my friend McClain for his help with the ssh-add command.)

3 years of freelancing fun

I realized a couple of days ago that it was January of 2007 when I dove into the crazy world of freelancing full-time. It has been quite an adventure. In that time I’ve worked on a number of fun projects with an amazing assortment of awesome clients, launched two different products (Catch the Best in 2007 and Rails Kits in 2008), and learned a whole lot about how to (and how not to) run a business. It’s been a blast.

I just wanted to pause for a second to thank all the clients that have entrusted their projects to me, and to thank those who have worked with me in various roles on those projects.

Also, with the new year I have some new plans afoot… First, I’m thinking of hiring my first employee to help with the workload that I have. In the second half of 2009 I kept busy enough to need long-term help from a few excellent sub-contractors, and now may be a good time to double the size of my payroll. 🙂

Second, I have at least one new Rails Kit coming out soon, and perhaps a couple more by the end of the year.

Third, I have an idea for a new product that I think developers would love, and I’m dying to launch it—I just need to find the time to build it. 🙂

Webvanta Hosted CMS – Ruby on Rails Podcast

Michael Slater and Christopher Haupt talk about their hosted CMS Webvanta.

Also Mentioned

Webvanta Hosted CMS – Ruby on Rails Podcast

Michael Slater and Christopher Haupt talk about their hosted CMS Webvanta.

Also Mentioned

#105: Average Size

In this episode, Dan and Jason bring you a ton of news and keep it short and sweet.

Sponsored by New Relic
The Ruby Show is brought to you this week by NewRelic. NewRelic provides RPM which is a plugin for rails that allows you to monitor and quickly diagnose problems with your Rails application in real time. Check them out at

Show Notes

Heroku Casts: Windows Setup

Getting the entire ruby stack up and running on Windows is a bit tricky. To help out the process we’ve posted a new Windows setup docs page.

This 10 minute screencast walks you through the process. It follows the outstanding instructions put together by Sarah Mei for the Ruby on Rails Workshops

Quick Database Conversion Using taps

taps is a database agnostic import/export gem that works with all the databases that sequel supports, including Amalgalite, ADO, DataObjects, DB2, DBI, Firebird, Informix, JDBC, MySQL, ODBC, OpenBase, Oracle, PostgreSQL and SQLite3. It is also used by Heroku to push and pull your apps databases.
~ % [sudo] gem install taps
Here is a quick snippet that shows how […]

The Irony of the iPad: A GREAT Day for Open Technologies

With the announcement of the iPad, the usual suspects have come out decrying a closed, proprietary, fully locked down system.

For instance, a story on the top of Hacker News today says:

This is what I asked in January 2007 on this site, shortly after the original iPhone was launched:

“1. Will Apple lock down the iPhone, blocking Flash, Java, custom widgets, and open development from its new platform?

2. Could Apple’s multi-touch patents actually stifle growth of new, interactive displays?”

Unfortunately, that turned out to prescient

And the FSF is out there calling this an unprecedented march of DRM:

With new tablet device, Apple’s Steve Jobs pushes unprecedented extension of DRM to a new class of general purpose computers

It’s a fair initial reaction. Apple didn’t build a general-purpose computer as its next entry into the market. Instead, they built a heavily proprietary, locked down device. In order to install an application onto the device, Apple must approve the application.

I don’t need to address the merits of the argument against how Apple handles native applications, because it’s irrelevant. A much, much larger force is at work here.

With the iPad, Apple has created two platforms. First, they have produced a heavily proprietary, native platform that requires Apple approval and has significant Apple restrictions. But ironically, with their heavy focus on improving the quality of Safari and the HTML standard, they have shipped the iPad with a platform based on open, unencumbered technologies.

If you haven’t been paying attention, over the past couple of years, the web platform has gotten offline APIs, improved caching support, local storage (on Safari, that includes an on-device SQLite database accessible through JavaScript), CSS-based animations, and custom, downloadable fonts. Mobile Safari has support for gestures, Geolocation, and hardware-accelerated graphics.

Additionally, Apple has remained at the forefront of these technologies, literally building some of them for mobile devices (hardware-accelerated animations were built for the iPhone, and by extension, the iPad). The Open Source Webkit project has remained extremely active, and in fact, has only accelerated progress since Apple first released its Native SDK, so Apple’s “locked down” strategy has a very carefully carved out intentional exception.

Apple even makes it easy to take a web app and put it on the home screen amongst normal apps. When you do this, the iPhone downloads all the assets in the HTML5 cache manifest to make the work better as an offline app. This is how I use Gmail on my iPhone (because Google knows what’s going on in this space, they leverage new tech in Safari quite well). When Apple rejected Google Voice, Google immediately built a Safari version of the app. The way they tell it:

Already, Google says it is readying a replacement for the Google Voice app that will offer exactly the same features as the rejected app—except that it will take the form of a specialized, iPhone-shaped Web page

Ironically, despite claims that not allowing Flash or Java represent a victory for proprietary technologies and a loss for open technologies, they represent quite the opposite. By restricting the web platform on the iPhone and iPad to open, patent-free, technologies, Apple has created a highly desirable market for pure-HTML5 apps. This is, frankly, a win for supporters of open technologies.

iPad announced

Finally Apple’s best worst kept secret was confirmed.
I currently own an iPhone and a 13″ macbook pro … so I guess I am yet to see any compelling reason to buy an iPad when released. I know it looks cool, but like what is the killer application for this device?

Page Caching JSONP with Nginx and Rack (and Memcached!)

If you’re reading this, you are most likely familiar with the same origin policy, and JSONP’s place in the mix. Working with JSONP is pretty straight-forward, but the small piece of dynamics that it introduces can often hinder the performance you could normally get out of serving content straight from memory or disk. I’m going […]

A Video Interview With Ruby’s Creator, Matz

its-matz-baby.pngRuby’s creator and benevolent dictator Yukihiro “Matz” Matsumoto has done a video interview for InfoQ at the QCon enterprise software development conference. You can watch the video on InfoQ’s page (or, if you’re a member of InfoQ, download an MP3).

In the interview, Matz talks about what he’d do if he were recreated Ruby from scratch today, lazy evaluation, Erlang, actor models, typing, his opinions on alternative Ruby implementations, and continuations.

Matz also recommends reading O’Reilly’s Beautiful Code (Amazon link) but humbly advises against reading Chapter 29 – a chapter that he contributed to the book.

[jobs] The Ruby Inside jobs board has blown up this month with 14 jobs currently active. They span from New York to Chicago, Akron, Birmingham, and Portland, so check them out if you’re looking for something new to do.

Manage Heroku with your iPhone

You get a call from your partner that your app just hit
the front page of Digg. You’re away from your computer, and need to scale your app up now! Fire up Nezumi and dial your dynos to 12 to handle the load no problem.

Nezumi is a 3rd party iPhone app that allows you to perform almost any of the functions that the CLI supports, from restarting your app, changing your dynos and workers, viewing logs, adding collaborators, and much more. It’s available now from the iTunes store.

Marshall, the developer of Nezumi, was kind enough to provide us 5 copies of Nezumi to give away. Leave a comment below, and on Friday we’ll select 5 people from random and email you a promo code for Nezumi!

Correct, Beautiful, Fast (In That Order)

One of the books I am occasionally grazing on is Beautiful Code. The title of this post is the title of Chapter 6. I’ll be honest, I only skimmed the chapter as one can only digest so much Java, but the title is spot on.

Step 1: Correct (With Tests)

I have been thinking exactly this as of late, though I will admit in no way as succinctly. First, you get it working. It does not matter if it is dirty. Rather, what matters is that it functions and is well tested.

If it works and it is not tested, you can never make it beautiful with confidence, so testing is very important to this step.

Step 2: Beautiful

Once your program is working and testing, make it beautiful. Leave the tests alone and head back into the code. Branch out and try new idioms that you have not tried before. Ensure that someone with no prior knowledge could jump in and know what is going on (without ridiculous comments all over).

Note that this step is not optional. Once your code is functional and well tested, you still have an obligation to make it beautiful. I think a lot of people skip this step. They think once it works and is tested, that is the end. Wrong.

Not only is this step the most fun, it also forces you to think through the code more. I often find edge cases during this step that I would never find if I stopped and correct and tested.

Step 3: Fast (optional)

If you pass these first two steps and you run into slowness at an unacceptable level, make it fast. The author puts it best in the summary at the end of the chapter, so I will quote them:

If there’s a moral to this story, it is this: do not let performance considerations stop you from doing what is right. You can always make the code faster with a little cleverness. You can rarely recover so easily from a bad design.

So true. I have never focused on speed in MongoMapper. No benchmarks to wow the noobs. No dramatic statements about performance. I have focused on cleaning up the code and making it easier for myself to maintain and others to contribute.

Not long ago, one of those contributors sent me a tiny patch (~30 lines) that improved overall performance by at least two, maybe three times what it was in 0.6.10. I do not think that it would have been that simple to to find and fix the performance issues if the code had been a mess.


  • Correct: make it work and test it.
  • Beautiful: refactor original code in a manner that others (and yourself down the road) can easily understand.
  • Fast: often the first two steps leave code fast enough, but if they do not, make it faster.

There is no magic, there is only awesome (Part 4)

This is the fourth (and final) article in a series titled “There is no magic, there is only awesome.” The first article introduced the four cardinal rules of awesomeness, the second was about knowing thy tools, and the third encouraged you to know thy languages .

First off, I apologize for dragging this out. It’s really become a weight on my shoulders. I’ve been fretting and fretting about writing the last two or three posts in this series, and I just couldn’t find the inspiration to make them come out like I wanted…and they’ve been holding up other posts I’ve been wanting to write.

So I’m going to cheat. You’re going to get a braindump, more or less, of the last two rules of awesomeness. Yes, I am entirely cognizant of the irony here. Nonetheless, here goes.

Rule #3: Know thy libraries!

If you want to be awesome, know your dependencies. At the very least, understand what each plugin, library, and technique you use, does. If called on to explain why you are using a particular design pattern, could you justify it? If someone asked you to compare plugin X and plugin Y, could you explain what their different strengths and weaknesses are? If you discover a particular library behaving erratically, would you be able to dig into the library’s guts to tell the author roughly where the problem is? Or would you be one of those who has to tug on the author’s sleeve and say, metaphorically, “it hurts when I do this”?

By libraries, I mean (essentially) any bit of code that you depend on, that has a life of its own outside your application. I’m including design patterns in this, although they aren’t really code, but they do represent a “library” of possibly ways to architect code. Basically, if you’re using someone else’s code, algorithms, or techniques, know why you’re using them. Make sure you can answer the four questions:

  1. What does this do best?
  2. What does this do worst?
  3. Why should I use this in particular?
  4. When was the last time I learned something new about this?

Rule #4: Know thy communities!

The last rule says that if you want to be awesome, you can’t do it in a vacuum. By writing code, you automatically join an ecosystem, whether it be a network of coworkers who will help you write, debug, deploy, and maintain that code, or a community of hobbyists who might wish to use your code in applications of their own (or who are writing code that you want to use). Even if all you do is pop up out of your cave long enough to toss some code into the public domain, you’re still contributing to a community, and if you’re using other people’s code, then you’re a consumer as well.

Don’t be blind to those communities. Stop for a minute and think about the communities you belong to, whether explicitly (where you’re a card-carrying, due-paying member) or implicitly (where you’re passively consuming someone else’s code), or somewhere in-between.

Why is this important? Mostly because communities are resources. Each community will be good for different kinds of help, collaboration, or criticism, and if you want to make the most of those resources (which, if you’re really awesome, you will), you need to know where each shines. Again, apply the four questions. What does this community do best? What is it worst at? Why should I participate in this particular community, over all the possible alternatives? And when was the last time I learned from this community?

That last is important, and surprisingly deep. If you are no longer learning from a community, what are you still doing there? Some of you are no doubt saying “but, but, but” and eagerly pointing out that maybe someone is part of a community so that they can lift others up, but note: if you’re doing that right, you’re still learning from those you teach. You learn new ways that your craft can be confusing to people. You learn new ways of looking at things that you’ve been taking from granted. You learn new ways to rephrase concepts that have grown stale in your own mind. It keeps you fresh. If you’re doing it wrong, though, then the only reason you remain in a community that teaches you nothing is complacency. And complacency is on the opposite end of the excellence spectrum from awesomeness.

Words of caution

So, those are the four rules. There is one overriding caveat to all of this, though, and that is: use moderation. You’re not going to master all of this in a day. Or even a week, or month, or year. I don’t know anyone that is perfect at all four things (though I know many who are much, much better than I am). To sound all zen and mysterious: awesomeness is a journey, not a destination. Enjoy the trip, appreciate the view, but don’t overdo it.

When you overdo it, you risk burning out. I’ve been riding that line for a couple years now, which was frightening. When writing code is your bread and butter, paying the bills and putting food on the table for you and your family, it is scary to contemplate “what do I do when I suddenly don’t want to do what I’ve been doing”. This is a big reason why I had to let go of Capistrano and other projects, and why I’ve discovered other hobbies (like woodcarving, string figuring, and cooking) that do not involve computers. I’m trying to find the middle ground, so that I can recapture the joy of writing code.

So: be awesome. But only in moderation.

RPCFN: Fair Distribution (#6)

Ruby Programming Challenge For Newbies

RPCFN: Fair Distribution (#6)

By John Trupiano

About John Trupiano

John TrupianoJohn Trupiano (twitter) is the co-founder of SmartLogic, the premiere Ruby development team in Baltimore, Maryland. He is an active member in the technology and business communities in the mid-Atlantic region. He is highly involved with the local Ruby user group (Bmore on Rails) and recently organized the first ever Maryland TechCrawl, a show and tell event showcasing the exciting and innovative technologies being developed in the region. He is also very active in the open source community having authored timecop and Rack::Rewrite and contributing to a slew of projects including rails, capistrano, shoulda, factory_girl, gemcutter and multitest.

John has this to say about the challenge:

I think the Ruby challenge is great because it instills from the very start the idea that you need to practice to become a great programmer. Even as a problem setter, I have found the exercise of defining a problem and iterating through various solutions to be extremely educational and beneficial. Satish has cultivated a fantastic program here that provides access for beginners to seasoned Ruby programmers. Furthermore, the Ruby challenge serves as a notice to the Ruby community that it is important for us to provide a welcoming and nurturing environment for newcomers.

Our Awesome Sponsors

This monthly programming challenge is co-sponsored by Backup My App and Caliper.

Backup My App

Backup My App is an automatic backup service for Ruby on Rails applications. You simply install the plugin to your Rails application and they handle the rest of the process. They store backup history for several weeks and you can restore any of them automatically. Try out their 1 GB plan for free. Backup My App has co-sponsored this challenge and is proud to make this contribution to the Ruby community.


Caliper provides free, hosted metrics for Ruby programmers. Find duplication, code smells, complex code and more! Get set up with just one click!


  • The participant with the best Ruby solution (if there is a tie between answers, then the one who posted first will be the winner) will be awarded any one of PeepCode’s Ruby on Rails screencasts and a free 10 GB account for a year from Backup My App.
  • From the remaining working Ruby solutions, three participants would be selected randomly and each one would be awarded any one of Pragmatic’s The Ruby Object Model and Metaprogramming screencasts.
  • All the participants in this challenge (except the participant with the best Ruby solution) will get a free 5 GB account for 6 months from Backup My App.

The four persons who win, can’t win again in the next immediate challenge but can still participate.

The Ruby Challenge


The Challenge

Imagine that you manage a t-shirt printing company. Each morning you review all orders placed the prior day and determine how long each order will take to fulfill. On any given day, only a certain number of your printing machines are operational. Your job is to schedule each printing job with one of the operational printing machines in such a manner that (a) all t-shirts are printed in the least amount of time, and (b) the distribution of work across machines is as fair as possible (i.e. the standard deviation of the time each machine spends working is minimized).

Your objective is to write a FairDistribution class that satisfies the following test cases. The code in the test cases is sufficient to define the methods you must implement.

This is an NP complete problem, and as such I have only provided very small datasets in the test cases. Test case #3 takes the longest to solve (See **Notes below about how to run the Test Case #3) and you may find it easier to comment it out early in your development phase. On a MBP Pro with a 2.4 GHz dual core processor and 4GB RAM, it took just over 3 minutes to solve. The other three test cases took only a couple of seconds.

Note that test cases 2 and 4 define specific distributions against which you can verify. Test cases 1 and 3 have more than one acceptable distribution and as such I have not provided a specific distribution to test against.

Note also that there is a well known algorithm that provides a much faster though not optimal solution. It will pass all tests except for test case #3. If you are only able to determine this particular solution, please still consider submitting your solution for consideration.

** Notes: To accommodate the fact that Test Case #3 takes a long time to run, you can run the test normally, and TC#3 will not run. When you want the TC#3 to run, then you can run the following:

ruby test_solution_acceptance.rb full

The word “full” will signal it to run all the test cases.

The Test Suite



The solution to the challenge has to be a pure Ruby script, using only the Ruby Standard Libraries (meaning, no external Gems). You do not need to build a gem for this. Pure Ruby code is all that is needed.

How to Enter the Challenge

Read the Challenge Rules. By participating in this challenge, you agree to be bound by these Challenge Rules. It’s free and registration is optional. You can enter the challenge just by posting the following as a comment to this blog post:

  1. Your name:
  2. Country of Residence:
  3. GIST URL of your Solution (i.e. Ruby code) with explanation and / or test cases:
  4. Code works with Ruby 1.8 / 1.9 / Both:
  5. Email address (will not be published):
  6. Brief description of what you do (will not be published):


  • As soon as we receive your GIST URL, we will fork your submission. This means that your solution is frozen and accepted. Please be sure that is the solution you want, as it is now recorded in time and is the version that will be evaluated.
  • All solutions posted would be hidden to allow participants to come up with their own solutions.
  • You should post your entries before midnight of 20th Feb. 2010 (Indian Standard Time). No new solutions will be accepted from 21st Feb. onwards.
  • On 21st Feb. 2010 all the solutions will be thrown open for everyone to see and comment upon.
  • The winning entries will be announced on this blog before end of Feb. 2010. The winners will be sent their prizes by email.

More details on the RPCFN?

Please refer to the RPCFN FAQ for answers to the following questions:


RPCFN is entirely financed by RubyLearning and sometimes sponsors, so if you enjoy solving Ruby problems and would like to give something back by helping with the running costs then any donations are gratefully received.

Click here to lend your support to: Support RubyLearning With Some Love and make a donation at !


Special thanks to:

  • John Trupiano.
  • Sponsors Caliper and Backup My App.
  • GitHub, for giving us access to a private repository on GitHub to store all the submitted solutions.
  • The RubyLearning team, namely Jeff Savin (Canada), Mareike Hybsier (Germany), Peter Crawford (Italy) and Satoshi Asakawa (Japan).


Contact Satish Talim at satish [dot] talim [at] OR if you have any doubts / questions about the challenge (the current problem statement), please post them as comments to this post and the author will reply asap.

The Participants

There are two categories of participants. Some are vying for the prizes and some are participating for the fun of it.

In the competition

  1. Rajesh Tripathi, USA
  2. Aleksey Gureiev, Australia
  3. Aldric Giacomoni, USA
  4. Adam Lum, USA
  5. Brad O’Connor, Australia
  6. Martin Linkhorst, Germany
  7. Ilya Ermolin, Russia
  8. Elijah Miller, USA – declared winner (randomly selected)
  9. Guillaume Petit, France – declared winner (best solution)
  10. Marc Minneman, USA
  11. Cary Swoveland, Canada
  12. Aurélien Bottazzini, France
  13. Benoit Daloze, Belgium – declared winner (randomly selected)
  14. Jacob Hodes, USA – declared winner (randomly selected)

Just for Fun

  1. Dominik Masur, Germany

The Winners


Congratulations to the winners of this Ruby Challenge. They are:

Previous Challenge

RPCFN: Mazes (#5) by Peter Cooper.

Note: All the previous challenges, sponsors and winners can be seen on the Ruby Programming Challenge for Newbies page.


  • This challenge is now closed.
  • The (#7) challenge by James Edward Gray II, USA is scheduled for 1st Mar. 2010.

Technorati Tags: , , , , ,

The Rails Envy Podcast Becomes.. The Ruby Show

the-ruby-show.gifIf you try to keep up with the Ruby community you’re probably familiar with the Rails Envy podcast, even if you aren’t subscribed. Well, it’s just relaunched as.. The Ruby Show, hosted by Jason Seifer and Dan Benjamin. They plan to cover the latest Ruby related news on a weekly basis in a similar style to Rails Envy. New episodes come out each Wednesday.

The latest episode of The Ruby Show includes bits on Cramp, the Rails 3 Bug Mash, Friendly, Rails 3 Generators, ActiveModel, and more.

The Background: Rails Envy was a weekly podcast by Gregg Pollack and Jason Seifer and featured Ruby and Rails news interspersed with comedy bits. The podcast did really well, getting about 7000 subscribers within two years, but for some reason, Gregg and Jason stopped working together and Gregg went off to found Ruby 5, a new bite-sized Ruby news podcast delivering 5 minute episodes once or twice a week.

Dan Benjamin Enters Stage Left: Undeterred by the split, Jason kept the Rails Envy brand and brought podcasting genius Dan “voice for radio” Benjamin on board to co-host. To my surprise, the podcast got even better and has made for entertaining listening, even when Dan did an entire episode on his own.

Go Check It Out: Podcasts aren’t for everyone, but Dan and Jason are doing a great job, so at least check out an episode or two from time to time. You’re usually guaranteed a laugh.

And before anyone asks, no, that picture isn’t of them. Well, the heads are, but I superimposed them on to other people using Photoshop. Why? Because this is timely news and Jason didn’t provide a picture quick enough 😉

Get to the Scottish Ruby Conference – 26-27 March, 2010

scottish-ruby-conference.pngIf you fancy a trip to the land of fried confectionary and heart disease, the Scottish Ruby Conference (previously Scotland on Rails) is selling tickets for its third event: Scottish Ruby Conference 2010. It takes place on 26-27 March, 2010 and the early bird tickets sold out in a mere 2 hours.. but there are full price tickets still available at £195 each (still a good deal really).

I’ve edged away from event specific mentions on Ruby Inside due to lack of interest, but the previous Scotland on Rails events attracted many suspiciously high caliber speakers (many not even from Europe) and lots of kudos from the community. A selection of 2009’s speakers, for example: Jim Weirich, Yehuda Katz, Pat Maddox, Aaron Quint, Scott Raymond, Steven Bristol, Dave Thomas... !!

For 2010, the schedule has still not been announced, but the call for proposals has been closed and 83 proposals are currently being force-fed haggis until just 20 strong stomached individuals remain. Jim Weirich and Tim Bray have already passed the test with flying colors and are guaranteed to be keynoting. A full program is due for early February.

As an aside, kudos to the Scottish Ruby Conference organizers for ditching the Scotland on Rails brand for something better. No longer will Scotland’s premier Ruby event be sullied by the inclusion of a defended trademark!

RubyConf India

I’ve decided to travel less this year. Since my job involves a lot of travel, this mostly translates into going to less conferences.

So for 2010 I so far have only one conference on the agenda (other than those I’m co-organizing): RubyConf India.

I’m speaking at the event and also helping out on the proposal committee along with Pratik Naik and Ola Bini. So far the program is shaping up well, and I’m excited about the conference.

If you’re looking for a combined technical and cultural education experience, I highly recommend going to RubyConf India. Kelly and I lived in Bangalore several years ago and absolutely loved it there. We can’t wait to get back to our second home. Bangalore was a culture shock at first, but that’s another strong reason to go. For us, it went from culture shock to comfort. Bangalore certainly didn’t change to make that happen—we did.

So, while it’s hectic, noisy, and sometimes shocking, Bangalore is a beautiful place which had a profound effect on me. When I was there, I couldn’t find any other Ruby programmers. It will be really exciting to go back to an entire conference devoted to Rubyists.

Registration will be opening in the next couple of weeks. Follow RubyConfIndia on twitter for announcements. Bangalore men milenge?