<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Ryan's Dev Blog]]></title><description><![CDATA[Ryan's Dev Blog]]></description><link>https://rbates.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 20:06:50 GMT</lastBuildDate><atom:link href="https://rbates.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[RailsCasts Retrospective Part 2: The Fire]]></title><description><![CDATA[This is the second installment of a three-part series telling the story of RailsCasts, a screencast series for Ruby on Rails. Check out Part 1 if you haven't already.
Reaching an Audience
Two months after the first RailsCasts episode, I attended Rail...]]></description><link>https://rbates.dev/railscasts-retrospective-part-2-the-fire</link><guid isPermaLink="true">https://rbates.dev/railscasts-retrospective-part-2-the-fire</guid><category><![CDATA[Ruby on Rails]]></category><category><![CDATA[Ruby]]></category><category><![CDATA[RailsCasts]]></category><dc:creator><![CDATA[Ryan Bates]]></dc:creator><pubDate>Mon, 13 Nov 2023 18:24:47 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1680977031534/0be744d0-295b-4640-821c-ef4e440f1f20.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is the second installment of a three-part series telling the story of <a target="_blank" href="http://railscasts.com">RailsCasts</a>, a screencast series for Ruby on Rails. Check out <a target="_blank" href="https://rbates.dev/railscasts-retrospective-part-1-the-fuel">Part 1</a> if you haven't already.</p>
<h2 id="heading-reaching-an-audience">Reaching an Audience</h2>
<p>Two months after the first RailsCasts episode, I attended RailsConf 2007. I'd never been to RailsConf before and was eager to meet fellow Rails developers. This one was in Portland, Oregon which was only a few hours drive. The conditions were perfect.</p>
<p>I remember eating lunch and talking casually among developers around a table. “Are you Ryan Bates?” asked one sitting next to me, “I recognize your voice.” Several others at the table chimed in and said they also watched RailsCasts.</p>
<p>It was a surreal feeling being in a room with strangers who know you by your voice. The analytics told me that the show had over a thousand views, but that was just a number. Meeting others in person made it real. Every one of those views had someone behind the screen.</p>
<p>I continued to produce content every week. And at the end of that year, RailsCasts was featured in the Podcasts section of iTunes. I looked at the screen with a huge grin on my face thinking "I made that, and it's right there for everyone else to see." It was a great way to end 2007.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1679667099419/2dceba6f-f386-4940-a214-c6f63be1d795.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-railsconf-2008">RailsConf 2008</h2>
<p>Every RailsConf has its special moments, but the highlight for me has got to be RailsConf 2008. Rails was picking up steam, and there was a lot of excitement in the community. An idol of mine, <a target="_blank" href="https://www.kentbeck.com">Kent Beck</a> did a keynote, and the cherry on top was the <a target="_blank" href="https://web.archive.org/web/20221128052542/https://rubyheroes.com/">Ruby Hero Awards</a>, an event hosted by <a target="_blank" href="https://www.greggpollack.com">Gregg Pollack</a>.</p>
<p><a target="_blank" href="https://www.flickr.com/photos/x180/2537415785/in/photostream/"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1679163436058/361c8479-c512-4edb-9ec0-a83d071fe821.jpeg" alt="Ruby Hero Awards from RailsConf 2008, photo by James Duncan Davidson" class="image--center mx-auto" /></a></p>
<p>I was surprised to be called up on stage to receive an award <a target="_blank" href="https://web.archive.org/web/20221128052542/https://rubyheroes.com/heroes/2008">along with 5 amazing developers</a> who contributed to the Ruby and Rails communities. Knowing that my work was appreciated by others was the best motivation I could hope for.</p>
<h2 id="heading-the-challenge-of-free">The Challenge of Free</h2>
<p>I was often asked "Why produce RailsCasts for free?" and the answer is in the outro of many episodes: "I hope you found this useful." Hearing feedback about how RailsCasts helped someone was the best feeling in the world. Helping others was the reason for starting the series.</p>
<p>However, it was a serious time commitment to release an episode every Monday. Episodes took about an hour to produce per minute of video. At 10 minutes long it took over my weekends. I remember a handful of times I had to scrap an episode at the last minute and work overnight to release a new episode by Monday.</p>
<p>After four years of producing content for free while working full-time, I was ready for a change. I wanted my nights and weekends back.</p>
<h2 id="heading-the-plan-for-pro">The Plan for Pro</h2>
<p>Turning RailsCasts into a full-time job seemed like a dream, but I needed to find a payment model that would support me. Charging for the same weekly episode that I was already releasing for free would be a step backward. If I'm working on this full-time, then surely I will be able to produce more content.</p>
<p>I decided to keep the weekly free episode and add two paid episodes per week. One was a "pro" episode that would often dive deeper into that week's topic. The other was a "revised" episode that brought older content up to date with the latest best practices.</p>
<p>By charging a monthly subscription fee to unlock everything, the value of the subscription would continue to grow along with the back catalog. This seemed like a no-brainer from a business perspective.</p>
<h2 id="heading-branding">Branding</h2>
<p>I changed the name slightly from "Railscasts" to "RailsCasts" to break up the word and make it easier to comprehend. I wasn't able to adapt the new name to the existing logo so I set out to make a new one.</p>
<p>The original logo was thrown together in 15 minutes. It involved picking a font and adding a play button in the "R" (it was about the same amount of effort that was spent on the old Avatar logo).</p>
<p>For the new logo, I wanted something with a retro arcade feel. I lacked the design skills needed, so I put up a bounty on <a target="_blank" href="https://99designs.com">99designs</a>. Here's what I ended up with.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1699647930247/3ab4545e-624a-49bd-bf86-f9319caa902c.png" alt class="image--center mx-auto" /></p>
<p>The new logo looked sharp and more official, but looking back, it lost some of the charm of the original. If I were to do it again, I would go with something closer to the original logo and branding to ease the transition.</p>
<p>Along with the new logo came a new site design and a larger video format. I also integrated <a target="_blank" href="https://asciicasts.com">asciicasts</a> into the site. These were text versions of each episode made by Eifion Bedford. He was a joy to work with, and I paid him to convert the pro content into text as well.</p>
<h2 id="heading-the-flywheel">The Flywheel</h2>
<p>It was time for the big day. On October 3, 2011, I deployed the new site along with the first RailsCasts Pro episode and $9/month subscription option. My goal was to reach 1,000 subscribers in one year.</p>
<p>That goal was reached in the first 5 days.</p>
<p>A month later there were 2,600 subscribers, and it showed no sign of slowing down. RailsCasts was on fire.</p>
<p>My dad likened it to spinning a large <a target="_blank" href="https://en.wikipedia.org/wiki/Flywheel">flywheel</a>. The years of free content got the wheel going, and all of that momentum carried over to the paid subscription. I doubt this would be as successful without the initial free content.</p>
<p>I cannot take all of the credit for its success though. The community has been exceedingly generous. I heard several reports of subscribers who no longer used Rails but wanted to show their support. I seriously cannot thank you all enough who supported me.</p>
<p>With its successful launch, everything was lining up to make RailsCasts better than ever. However, every fire needs an important ingredient: the fuel.</p>
]]></content:encoded></item><item><title><![CDATA[RailsCasts Retrospective Part 1: The Fuel]]></title><description><![CDATA[Sixteen years ago to the day, I started RailsCasts, a screencast series teaching web development using Ruby on Rails. It began with free weekly episodes and eventually grew to make over $1M a year, but it wasn't sustainable. This is the first of a th...]]></description><link>https://rbates.dev/railscasts-retrospective-part-1-the-fuel</link><guid isPermaLink="true">https://rbates.dev/railscasts-retrospective-part-1-the-fuel</guid><category><![CDATA[Ruby on Rails]]></category><category><![CDATA[Ruby]]></category><category><![CDATA[RailsCasts]]></category><dc:creator><![CDATA[Ryan Bates]]></dc:creator><pubDate>Sun, 05 Mar 2023 16:18:47 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1677594686545/cd279984-c652-453b-985a-48cea7d0d438.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sixteen years ago to the day, I started <a target="_blank" href="http://railscasts.com">RailsCasts</a>, a screencast series teaching web development using <a target="_blank" href="https://rubyonrails.org">Ruby on Rails</a>. It began with free weekly episodes and eventually grew to make over $1M a year, but it wasn't sustainable. This is the first of a three-part series where I share what happened to RailsCasts.</p>
<h2 id="heading-an-aging-app">An Aging App</h2>
<p>In 2005 the <a target="_blank" href="https://www.php.net">PHP</a> app I was developing started to show its age. Any change to the backend logic threatened to break multiple pages. It was the website for <a target="_blank" href="https://www.artbeats.com">Artbeats</a>, a stock footage company my dad started in 1989.</p>
<p>While hunting for a solution, I came across <a target="_blank" href="http://www.ruby-lang.org/en/">Ruby</a> on the <a target="_blank" href="http://wiki.c2.com">C2 Wiki</a> where many developers sang its praise. I attempted to build a templating system in Ruby without much success when a new web framework caught my eye: Ruby on Rails.</p>
<h2 id="heading-a-new-framework">A New Framework</h2>
<p>I ran the <code>rails</code> command to create a new app and was immediately put off. "What are all of these files it generated?" At the time I wanted a flexible framework that allowed me to structure the code my way. I spent the first week fighting Rails to make it fit my style of development.</p>
<p>A tradeshow was approaching, and I needed to develop a minimal version of the Artbeats site for kiosk stations around the booth. I decided to give Rails another shot, but this time follow the Rails way of development.</p>
<p>Everything clicked. In two months the kiosk app was done, and I had a better understanding of how Rails was intended to be used. Convention over configuration is the "secret sauce" of Rails. The framework will do a lot for you if you stick to its defaults and principles.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1677688270779/b5fd8d42-dbac-4f4b-8384-72cd3e114990.jpeg" alt class="image--center mx-auto" /></p>
<h2 id="heading-fueling-up">Fueling Up</h2>
<p>The Ruby community was kind and welcoming to the influx of web developers coming to learn this new framework. This sentiment stems from Matz, the creator of the language. A common expression in the community is MINASWAN: Matz is nice and so we are nice. This was the type of group I wanted to be a part of.</p>
<p>I found a home on the <a target="_blank" href="https://web.archive.org/web/20061021033038/http://railsforum.com/index.php">Rails Forum</a>, initially to ask for help understanding Rails, and later to help others do the same. Every morning I spent an hour or two researching solutions to other's problems. The best way for me to learn was to teach, and I learned a lot.</p>
<p>I also enjoyed learning through screencasts. <a target="_blank" href="https://web.archive.org/web/20070602043218/http://peepcode.com/">PeepCode</a> by <a target="_blank" href="https://topfunky.com">Geoffrey Grosenbach</a> offered high-quality screencasts that were over an hour long. They were filled with useful information, but I found it difficult to sit through and grasp the concepts in the longer format.</p>
<p>Another screencast series that inspired me was Photoshop Killer Tips by <a target="_blank" href="https://mattk.com">Matt Kloskowski</a>. These were free, bite-sized 2-5 minute episodes that were released frequently.</p>
<p>I wished someone would make screencasts that were developer-focused like PeepCode in the shorter format of Photoshop Killer Tips. So I did.</p>
<h2 id="heading-starting-small">Starting Small</h2>
<p>I started by applying principles I learned from agile software development: do the simplest thing that could possibly work, get feedback, and iterate on that.</p>
<p>I bought a $10 microphone and recorded a few rough screencasts to share on the Rails Forum. This helped me gauge interest to see what others thought without too much investment. There I also asked for ideas on what to call the series. "Railscasts" someone suggested.</p>
<p>I reached out to Geoffrey Grosenbach who was kind enough to sponsor the show through PeepCode. I then built a simple Rails app to host the screencasts, and within a month, on March 5, 2007, the first episode was released.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1677972009666/ff529222-e07e-4a91-8333-2ac9cf925714.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-a-spark">A Spark</h2>
<p>Fueled by what I had learned helping others on the Rails Forum, and my own experience as a developer, I had seemingly endless ideas to record. But I wasn't sure if what I had released so far was hitting the mark. I was missing the feedback cycle mentioned earlier. Was anyone even watching?</p>
<p>At the end of one episode I requested the audience review RailsCasts on iTunes. To my surprise, the next morning I woke up to dozens of positive reviews. This sparked me to pursue screencasting further and turn it into more than just a hobby.</p>
<p>I invested in a better microphone and set up a small recording "studio" in a closet because it was the quietest place in the house.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1677505597126/7acd1a5b-be3e-4e7e-a5a0-19c7c4efbc58.jpeg" alt class="image--center mx-auto" /></p>
<p>(I don't recommend working in a closet)</p>
<h2 id="heading-an-episode-every-week">An Episode Every Week</h2>
<p>Sticking to the format of Photoshop Killer Tips, my original intention was to produce 3 episodes per week at 2-5 minutes each. However, programming is not as visual, and it can be difficult to explain complex topics in only a few minutes. As the episodes grew longer, I decided to reduce the frequency to one episode per week with the sweet spot being around 10 minutes long.</p>
<p>This is when I hit my stride. I released an episode every week like clockwork. My goal was to make a series that one could anticipate and depend on. I kept this up for years to come without missing a single Monday.</p>
<h2 id="heading-priming-the-pump">Priming the Pump</h2>
<p>While I didn't realize it at the time, an important part of the initial success was mentioning RailsCasts in my signature on the Rails Forum. This simple act turned all of my previous posts into mini promotions. Many of the first viewers found their way by googling a Rails issue, stumbling across my post, and then clicking the link in the signature.</p>
<p>Once word got out, it spread quickly throughout the community. It turns out I wasn't the only one wanting short, frequent screencasts covering Ruby on Rails. The series was a hit, but I wasn't prepared for how far it would go.</p>
<p>Continue reading <a target="_blank" href="https://rbates.dev/railscasts-retrospective-part-2-the-fire">Part 2: The Fire</a>.</p>
]]></content:encoded></item></channel></rss>