Summarized using AI

The $1B Rails Startup: Scaling from 0 to Unicorn in Four Years

Jack Sharkey • September 04, 2025 • Amsterdam, Netherlands • Talk

Introduction

Jack Sharkey's talk at Rails World 2025 details the journey of scaling a startup to unicorn status using Ruby on Rails as the primary framework, defying prevalent beliefs that Rails is outdated and incapable of scaling for modern, high-traffic applications.

Main Topic

The central theme is the capability and competitive edge provided by Ruby on Rails in building and scaling successful startups rapidly, as demonstrated by the company's journey from inception to processing over $1B in transactions within four years.

Key Points

  • Challenging Rails Stereotypes:

    • Initial skepticism around Rails: Many believed Rails was too old, slow, and unscalable.
    • Jack initially resisted using Rails but found it to be a key driver for rapid product development.
  • The Power of Iteration:

    • Rails enabled Jack's team to quickly build and iterate on products, leading to multiple failed startups but ultimately to success.
    • Iterative development and direct user feedback were crucial; the team built and discarded over 100 features before finding the right direction.
  • Startup Formation and Growth:

    • Grew from a niche product selling software licenses in a Discord community to a full consumer platform with chat, real-time notifications, payments, and an app store.
    • Quickly achieved major milestones—such as processing $25K in the first month and scaling to 12 million users.
  • Technical and Scaling Challenges:

    • Early growing pains included handling flash drops, website outages, and frequent database troubles.
    • Relied on rapid hiring and resourcefulness (famously sending an Uber to a developer’s house to resolve outages).
    • Scaled infrastructure from Heroku Postgres to self-hosted solutions, AWS Aurora, and eventually to PlanetScale MySQL with zero downtime.
  • Rails as a "One-Person Framework":

    • Demonstrated how even novice programmers (e.g., a former support agent turned lead engineer) could quickly become productive with Rails.
    • The company operates a large-scale, feature-rich platform with just 15 engineers, of whom only 3-4 manage the Rails codebase.
  • Ecosystem and Real Impact:

    • Rails development enabled rapid experimentation and daily survival, directly impacting thousands of entrepreneurs who rely on the platform to earn a living.
    • Emphasized tangible, second-order effects: helping users launch businesses and change lives.

Notable Examples and Anecdotes

  • Building a Rails app to appeal a college rejection and succeeding.
  • House "hacking" era: living in shared spaces, shipping code rapidly.
  • The Uber-to-the-dev anecdote: resourcefulness in crisis.
  • The career progression of a novice developer (Jackson) to backend lead.

Conclusions and Takeaways

  • Rails excels not by avoiding scaling problems, but by enabling startups to move fast enough to reach them.
  • Scaling issues are universal across frameworks; Rails simply gets teams earning and learning faster.
  • Community call: more startups should adopt Rails, share their journeys, and help rejuvenate the ecosystem by targeting Gen Z developers and promoting accessible, iterative building.
  • Final challenge: The speaker offers direct support to new Rails startups to encourage active building in the community.

Final Thought

Rails remains a powerful framework for quickly bringing startup ideas to life, fostering innovation, and directly impacting real users' lives through code.

The $1B Rails Startup: Scaling from 0 to Unicorn in Four Years
Jack Sharkey • Amsterdam, Netherlands • Talk

Date: September 04, 2025
Published: Mon, 15 Sep 2025 00:00:00 +0000
Announced: Tue, 20 May 2025 00:00:00 +0000

We started when Rails was "dead." Everyone said it wouldn't scale, wasn't fast enough, and that no one used it anymore. Four years later, we've processed $1B+, handle 150k RPM, and run a feature-complete marketplace with real-time chat, notifications, payments, and live streaming - all on a Rails monolith with just 15 engineers.

This talk breaks down how Rails gave us a competitive edge, the technical and hiring challenges we faced, and what Rails needs to improve to stay the best framework for startups.

Rails World 2025

00:00:06.960 Hello, Rails World.
00:00:09.280 We get Let's get some noise.
00:00:12.800 3:45. Who had an afternoon coffee? Huh?
00:00:16.800 Yeah. Look at that. Me, too. So, I'm
00:00:19.840 going to be honest. This is my first
00:00:20.960 ever talk and I read all the slides last
00:00:23.439 night. So, this is going to be a journey
00:00:24.480 for both of us and I'm very excited to
00:00:26.000 share it with you guys. And let's uh
00:00:28.240 dive in.
00:00:33.360 Five years ago and today, everyone says
00:00:36.880 Rails is dead. It's too old. It's slow.
00:00:42.239 It won't scale. Only boomers use Rails.
00:00:47.600 To be honest, I said the same thing five
00:00:49.760 years ago when my now co-founder Steven
00:00:53.600 came to me and said, "For our startup,
00:00:55.120 we should use Rails." I said, "No way.
00:00:59.520 Absolutely not." I said, "All those
00:01:01.760 points, it won't scale, dude. No one
00:01:03.520 uses Rails. It's 2020. It's so dead. We
00:01:05.920 have to use Node." He was like, "Dude,
00:01:08.240 you're wrong. We have to use Rails.
00:01:09.760 Please trust me." We went back and forth
00:01:12.159 for actually a few hours before I was
00:01:13.760 like, "Fine, whatever. You can use
00:01:15.360 Rails."
00:01:17.439 And since then, I can confidently say
00:01:19.360 that was one of the worst arguments I've
00:01:20.880 ever made. And Rails has been one of the
00:01:22.880 best things that I believe has ever
00:01:24.720 happened to me.
00:01:26.400 So for me, Rails has taken a decade of
00:01:30.640 startups and app attempts from failures
00:01:33.119 to what is working now and what I call a
00:01:35.759 somewhat success and why I'm able to be
00:01:37.200 up here today.
00:01:40.799 Now 5 years later, I work on this
00:01:43.200 company called And our mission at
00:01:45.280 is to enable others to earn an
00:01:48.000 income online. We believe that work
00:01:50.560 should be fun and becoming an
00:01:52.320 entrepreneur should be pretty damn
00:01:54.000 simple. We let people spin up almost any
00:01:56.560 business models that can be started
00:02:06.079 and since then we've helped creat,000
00:02:15.840 people were able to earn a total of over
00:02:17.520 $140 million.
00:02:20.400 Now we're a consumer platform. We have
00:02:22.800 things like chat and real-time
00:02:24.400 notifications and live streaming. We
00:02:27.200 support payments for over 200 countries.
00:02:29.280 And we even have an app store that
00:02:30.800 allows developers like me and my younger
00:02:33.120 self to build on top of our platform.
00:02:36.480 But like any good story, it wasn't
00:02:38.800 always this easy.
00:02:41.920 I started building as a young kid.
00:02:45.760 And during this story, what I really
00:02:47.599 want to tell you about is I want to tell
00:02:48.640 you about the failures and the journey
00:02:50.160 that I've had to get here. and how Rails
00:02:52.959 actually gave me a competitive advantage
00:02:54.400 to get past that. And I hope that when
00:02:56.959 you leave here, maybe you're a little
00:02:58.239 bit inspired or at least you hear some
00:03:00.000 funny stories and you yourself want to
00:03:01.920 walk out of here and go home and type
00:03:03.599 Rails new and start something because
00:03:05.360 that's truly why we're all here.
00:03:08.560 So, I'm going to take you back to the
00:03:09.760 beginning of my journey. This is 2014. I
00:03:12.959 was 12. I started as something called a
00:03:15.120 sneaker botter. So, does anyone here
00:03:17.680 know what a sneakerbot is? Amazing.
00:03:20.480 Okay. So, a sneakerbot is automated
00:03:22.640 software that you run on websites like
00:03:25.040 Nike or Supreme or even Shopify, sorry.
00:03:29.280 And you use these to buy limited items
00:03:31.440 like Jordans in hopes that you can
00:03:32.799 resell them for a little bit of cash on
00:03:35.040 the aftermarket like eBay or Facebook.
00:03:36.879 So, that's how I got into entrepreneur
00:03:38.879 entrepreneurship. I started selling
00:03:40.640 shoes online and using these sneaker
00:03:42.080 bots. From there, I took that into high
00:03:44.959 school where I learned and fell in love
00:03:46.640 with programming. I would build apps,
00:03:48.560 countless apps, websites, iOS apps,
00:03:50.560 whatever it might be. But none of them
00:03:52.799 ever got more than 100 users, but who
00:03:54.879 cares because it's cool when you build
00:03:56.560 stuff that gets a little bit of a a
00:03:58.560 little bit of usage. From there, I tried
00:04:02.080 to go to college and I got rejected from
00:04:04.239 my dream school. I wanted to study at
00:04:06.239 University of Texas and do computer
00:04:07.680 science. So after getting a rejection, I
00:04:10.560 decided to appeal it and I built an iOS
00:04:12.560 app called Shark Trivia that was very
00:04:16.560 much like HQ Trivia app at the time
00:04:18.160 where I was the game show host. I was
00:04:20.079 able to make this app, download it on my
00:04:23.040 sister's iPad, mailed that iPad to the
00:04:25.120 admissions office, and four weeks later
00:04:26.479 I actually got it overturned and I ended
00:04:28.639 up going to UT.
00:04:32.080 Here's 2020. Okay, I'm a third year in
00:04:35.840 college and COVID happens. They send us
00:04:39.040 home. I go home back to Connecticut
00:04:41.040 where I'm from and I'm quarantined for
00:04:42.880 16 hours a day. And candidly, sorry, 24
00:04:46.240 hours a day. But candidly, CO was one of
00:04:48.800 the best things to actually happen to me
00:04:50.320 because me as a builder, I got 16 hours
00:04:52.960 a day of just uninterrupted time to
00:04:54.720 code. During this period, I started a
00:04:57.199 few startups. One notable is here. And I
00:05:01.360 thought I did pretty Well, we got it to
00:05:02.639 about 7K MR. It ended up failing. But
00:05:05.840 there's a story in this. And this is the
00:05:09.360 first time I actually used Rails. So
00:05:12.080 that story that I told you about in the
00:05:13.600 beginner where my co-founder Steven was
00:05:15.520 like, "We have to use Rails," it was for
00:05:16.960 this project. And although this project
00:05:19.600 died, we ended up spending 9 months
00:05:21.840 building it. And what was so incredible
00:05:24.000 about it was sure we only made eight and
00:05:27.199 a halfk at our peak, but I have never
00:05:30.560 ever felt joy like I have building with
00:05:33.039 Rails that first time. I was moving
00:05:34.960 fast. I was productive. I was shipping
00:05:37.600 features in days. And keep in mind, I
00:05:39.039 came from like a Node.js Express
00:05:41.280 background. I've never even used a
00:05:42.560 database that wasn't So to use
00:05:44.320 active record was like a dream come
00:05:46.320 true.
00:05:47.840 This failed, but I kept going. We
00:05:50.880 started three more startups, all Rails
00:05:52.960 apps, and they all failed. But we kept
00:05:55.680 going. And in 2021, we started our
00:05:59.840 fourth business. So, I'm not sure if
00:06:01.759 anyone remembers, but during COVID,
00:06:03.680 there was a few items that were
00:06:05.039 constantly sold out online. Everyone was
00:06:07.280 home. They wanted to get a PS5. You
00:06:08.800 couldn't get one. People wanted at home
00:06:10.960 workout gear, couldn't get it. Even
00:06:13.120 things like above ground pools and
00:06:14.800 Sriracha, they were constantly sold out.
00:06:16.960 And you're probably wondering, why the
00:06:18.319 hell am I talking about this? And that's
00:06:21.039 because internet entrepreneurs, the same
00:06:24.560 cloth that I was cut from when I was 12,
00:06:26.240 I wasn't doing this at the time, were
00:06:27.840 using sneaker bots, the same exact
00:06:30.240 software to buy these items on websites
00:06:32.400 like Walmart and so on. Unethical, maybe
00:06:36.080 profitable, yes. And what we did was we
00:06:39.440 were looking for a new business to start
00:06:40.720 and we came across this really, really
00:06:43.039 sketchy Discord server where people were
00:06:45.199 buying and selling software, like actual
00:06:47.360 software license keys. And within this,
00:06:50.319 you'd see people saying, "I'm selling my
00:06:52.000 software for a,000 bucks." And they
00:06:54.080 would take payment on crypto or Cash App
00:06:56.720 or Venmo. And keep in mind, you're
00:06:58.720 buying from a Discord username, like an
00:07:00.240 alias, like purple penguin number seven.
00:07:02.080 You don't know if you're going to send
00:07:02.960 this person money and get scammed or
00:07:04.319 not. But there was clearly something
00:07:06.319 here because there was thousands of
00:07:07.599 dollars being transacted a day. So, we
00:07:11.360 initiated our playbook. Our playbook of
00:07:13.680 we found something. Let's start a new
00:07:15.360 Rails app. And our playbook was okay
00:07:18.240 rails new let's go to themeforest.com
00:07:20.800 let's download a bootstrap template and
00:07:22.880 let's push it up to Heroku and see what
00:07:24.479 happens and that's how was born
00:07:27.520 started with this super niche problem of
00:07:30.319 just selling bots to buy Sriracha and we
00:07:35.440 kept going 2021
00:07:38.720 this right here is our first Rails app
00:07:40.720 like I said it's a theme forest website
00:07:42.639 Bootstrap hosted on Heroku it looks
00:07:45.280 nothing like it is today. And I couldn't
00:07:47.599 even tell you that we knew what it was
00:07:48.800 going to look like today. But we kept
00:07:50.080 going and Rails really gave us that
00:07:51.840 ability to just keep shipping. Within
00:07:53.919 our first month, we made 25 thou. We
00:07:55.599 sold $25,000 worth of this software.
00:07:57.919 Within our second month, we had $100,000
00:07:59.840 worth of revenue or worth of software
00:08:01.360 sold. And it's not like we had a massive
00:08:03.599 business. We had 50 users, 50 h 100red
00:08:06.000 users that we were building for. But
00:08:08.479 using
00:08:10.160 just talking to our customers all the
00:08:12.080 time and with the advantage that we have
00:08:13.759 to ship faster than anyone else, it
00:08:15.120 didn't really matter.
00:08:19.599 So at this time, I'm still in college.
00:08:21.440 We're building Rails from during nights
00:08:24.240 hacking on weekends and just kind of
00:08:25.919 pulling it together.
00:08:30.319 This clicker's a little There we go.
00:08:32.399 Okay. Later that year, things kept
00:08:34.959 taking off. So, we moved into a hacker
00:08:36.719 house. Over here, you can see we got
00:08:40.159 monitors everywhere, and we just
00:08:41.680 constantly shipped. This middle picture
00:08:43.919 is a picture of a closet. It's a pantry
00:08:46.160 that my co-founder Cameron, Mr. Curly
00:08:48.399 Hair, lived in for 2 years while we were
00:08:50.320 building this. And the third picture is
00:08:51.920 a laundry room that some 19-year-old
00:08:54.480 developer from Australia moved across
00:08:55.920 the world in to live in. And the reason
00:08:57.920 I'm saying this is it's not to we had no
00:09:00.959 idea what we were doing. We were
00:09:02.160 literally in a house and just working
00:09:03.600 all the time and having the most fun
00:09:05.680 ever just shipping. You could literally
00:09:07.120 see VS Code open on the windows. And the
00:09:09.839 point here is even though we had didn't
00:09:11.680 know we were building, every time we
00:09:12.959 felt stuck, Rails just made it easy just
00:09:15.040 to keep going and keep moving.
00:09:18.640 Here's a photo of when we first hit
00:09:20.080 100,000 users. And for context, this is
00:09:23.040 literally a Rails console connected to
00:09:24.640 production in a while loop just going
00:09:27.680 over and over again. And this was a
00:09:29.760 remarkable milestone. And I'm happy to
00:09:31.760 say that we're now at 12 12 million
00:09:33.440 users.
00:09:34.959 So the story keeps going. 2022
00:09:41.760 clicker. Okay. Enter. Rails won't scale.
00:09:46.399 So we ran into our first scaling issue
00:09:48.240 in 2022. So we used to do these things
00:09:50.560 called flash drops. A flash drop is
00:09:53.040 basically when you have a seller on your
00:09:54.880 platform and they stay sold out all the
00:09:56.959 time and they use that to build up hype
00:09:58.800 and get customers in the door and then
00:10:00.560 they'll do something like this where
00:10:02.399 they'll tweet saying, "Missed out on
00:10:04.320 both the waves? Be here in 10 minutes.
00:10:06.000 We have a massive announcement to make."
00:10:07.680 And then the announcement is a link to
00:10:08.959 your website. And as novice programmers
00:10:11.760 that were running on 2x dinos on Heroku
00:10:14.959 and have never scaled a website to
00:10:16.320 anything, we got pummeled every single
00:10:18.959 time a flash drive a flash drive went
00:10:20.880 off.
00:10:21.839 Every time it would go up, request
00:10:23.600 queuing through the roof, website down.
00:10:25.920 We lost customers. And keep in mind, we
00:10:27.519 had like 10 sellers selling on our
00:10:28.800 website. So, we lost customers. We had
00:10:30.640 no idea what to do. So, this is the
00:10:33.040 first time I got exposed to trying to
00:10:34.399 hire people in the Rail space, which I
00:10:36.399 honestly have had a we had a challenge
00:10:38.240 in the beginning. So, we put a post up
00:10:40.320 on this website called codebentor.com,
00:10:42.240 and we said, "Hello, we will pay anyone
00:10:44.800 who can stop our site from going down."
00:10:47.120 We found this random dude named Sam who
00:10:50.640 hit us up and within an hour he had
00:10:52.560 access to our production Postgress he
00:10:54.560 could push to main on GitHub and we just
00:10:56.000 said do just do whatever you can please
00:10:58.720 and Sam comes in and he laughs it off us
00:11:01.920 a little bit and he's like okay and he
00:11:03.920 fixes it literally all he did was fix
00:11:05.839 some atrocious N plus1's and cache our
00:11:07.760 JavaScript like vendor folder or
00:11:09.440 something and next thing you know we
00:11:10.880 could host flash drops but this was our
00:11:12.800 first scaling challenge
00:11:20.000 Obviously, it didn't stop there. So, a
00:11:22.480 few months later, we kept growing and
00:11:25.120 things got worse.
00:11:27.360 So, like I said, right now, our biggest
00:11:29.120 market is people using bots and selling
00:11:31.440 bots. And these bots would always get a
00:11:33.519 lot of usage on Friday nights because
00:11:35.360 websites like Nike would drop a new pair
00:11:36.959 of Jordans on Saturday. So, everyone
00:11:38.640 would come on Friday night to get their
00:11:40.079 software download link and license key.
00:11:42.160 So Friday was a hot spot. So one Friday
00:11:45.440 night, it's like 8:00 p.m. Me and my two
00:11:47.120 co-founders, the team's like four people
00:11:48.480 at this point, four and Sam, so four and
00:11:50.160 a half. And we were out to dinner and we
00:11:53.440 get a text saying, "Yo, sites down." And
00:11:55.680 we get a call from customers, "Sit's
00:11:57.360 down. Sites down." And we whip out our
00:11:59.680 laptop because obviously we had our
00:12:01.600 laptop at dinner and we couldn't figure
00:12:04.640 out the issue. It was one of those nasty
00:12:06.800 Heroku Postgress buffer overflow issues
00:12:10.000 that out of memory like you don't know
00:12:11.760 how to solve that and if you know how I
00:12:13.519 didn't know how four years ago. So we
00:12:15.279 tried to fix it and we couldn't and
00:12:16.880 these users were they were they were
00:12:18.560 angry. They were coming at us. They paid
00:12:19.920 for something and they couldn't get it.
00:12:21.600 So what did we do? Well, we called our
00:12:23.839 info guy because what else do you do
00:12:25.040 when the database is down? So we try to
00:12:26.959 call Sam and dial his number. Give him a
00:12:29.120 call. No answer. Try again. No answer.
00:12:34.399 shoot off some text. Yo, sites down.
00:12:35.839 Sites down. Need help. Need help. No
00:12:37.760 answer. So, at this point, we're like 40
00:12:39.920 minutes into our biggest outage ever.
00:12:41.440 And keep in mind, we're running on fumes
00:12:42.959 here. Like, we go down every other day,
00:12:44.480 every other week, and we barely just got
00:12:46.320 our customers. So, my co-founder Cam has
00:12:49.200 this crazy idea, and he's like, "Yo, why
00:12:52.240 don't we call an Uber to Sam's house?"
00:12:56.000 I was out of options. So, that's exactly
00:12:58.079 what we did. So, we call up an Uber in
00:13:00.079 the middle of New Jersey and put it to
00:13:02.480 Sam's address and we call him and he
00:13:05.120 say, "Hey, I need you to go knock on
00:13:07.120 this guy's door and tell him the
00:13:08.560 website's down."
00:13:11.040 You can imagine what the response was
00:13:12.399 from the Uber driver when he hears that.
00:13:14.639 He was like, "Obviously, no." And we
00:13:16.800 fought him a little bit and offered him
00:13:18.240 a nice Uber tip. And within a few
00:13:20.959 minutes, he's like, "Fine, I'll do it."
00:13:22.160 And we ferociously wait. And next thing
00:13:24.240 you know, 10 minutes later, the site's
00:13:25.760 back up. And Sam texts us and he goes,
00:13:28.560 "Clever." So
00:13:31.760 that's when I learned I guess he could
00:13:33.120 just do things.
00:13:35.519 Let's keep going. So I want to give a
00:13:38.639 little context on who this person is,
00:13:39.839 and we'll touch back on it later in the
00:13:41.120 story. This is Jackson. Jackson was our
00:13:43.440 40th user. He's 19 years old at this
00:13:45.200 photo. This is him in our college dorm.
00:13:46.720 Once again, he ended up joining our
00:13:48.320 customer support team.
00:13:50.560 6 months later, we had a massive
00:13:52.560 problem. At this point, it's only me and
00:13:54.560 one other engineer building. and that
00:13:56.320 other engineer decided to leave to start
00:13:58.079 his own startup. While I wished him good
00:14:00.399 riddance, this left me in a pretty poor
00:14:03.680 spot. I was the only one that could be
00:14:05.360 shipping. So, we went over to Jackson.
00:14:08.480 And keep in mind, Jackson, he was
00:14:10.240 studying computer science, but he was a
00:14:11.760 freshman at Duke during COVID. So, he
00:14:13.279 only got like his intro to programming
00:14:15.360 class in. He's never actually built any
00:14:16.800 web apps before, but he had a desire to
00:14:19.600 learn programming. So, I go up on my tap
00:14:21.839 on his shoulder. I go, "All right,
00:14:22.959 Jackson, like next man up mentality. I
00:14:25.199 need your help. And we go and we start
00:14:28.720 on user mailer and he starts making our
00:14:30.800 emails which was incredible cuz I hate
00:14:33.279 emails. So he starts working on them and
00:14:35.360 then he starts building out some
00:14:36.480 features and he starts using active
00:14:38.079 record and within weeks he was shipping
00:14:40.399 features. So this whole one person
00:14:43.279 framework it actually works. I have
00:14:45.279 proof. So there's that. our second
00:14:47.920 engineer
00:14:49.839 2023.
00:14:51.440 At this point, we kept building and
00:14:53.680 honestly, we didn't really know what we
00:14:55.040 were doing. We just kept iterating. At
00:14:56.399 this point, our website was now selling
00:14:58.399 things like Discord payw walls and
00:15:00.240 Telegram pay walls and unfortunately
00:15:02.560 even NFTts for a bit, but we didn't
00:15:05.199 really have a clear vision. We just kept
00:15:06.560 listening to our users. And that was
00:15:08.800 really the beauty of Rails. We have
00:15:11.199 probably built a 100 features and 98 of
00:15:13.440 those have been thrown out the window.
00:15:14.880 But the speed at which we could adapt
00:15:16.959 and move and build and just listen to
00:15:18.959 our users allowed us to get to where we
00:15:20.959 are today. And it's also made me realize
00:15:23.600 that any startup person that you talk to
00:15:27.199 that says they had this vision from day
00:15:28.959 one when they show you what they're
00:15:30.560 working on now that's successful, they
00:15:31.839 are completely lying to you. If anyone
00:15:33.920 says they have a vision from day zero,
00:15:35.360 it is They just solved a very
00:15:37.199 tiny problem and probably did it really
00:15:39.120 damn well for like 5 to 10 people and
00:15:41.040 then just built and built and built. So
00:15:43.120 I've kind of learned that over the days.
00:15:44.399 You just got to keep building.
00:15:47.360 Yeah, like I said, we tried NFTs. We're
00:15:49.839 not proud, but we did it. Um, anything
00:15:51.600 to stay alive. So, this is just an
00:15:53.519 example of people using NFTTS that they
00:15:55.839 just bought on like OpenC to gain
00:15:57.759 Discord access. Anyway, this phase
00:15:59.759 ended, we just kept iterating. So, enter
00:16:02.399 2024
00:16:03.920 and like always, we kept building and we
00:16:06.639 started becoming what is now like
00:16:08.800 somewhat of a consumer platform. So, we
00:16:10.800 were now kind of pushing Rails to limits
00:16:12.399 to do more fancy things. And we landed
00:16:14.800 on this whole concept of an apps
00:16:16.639 ecosystem where developers can build
00:16:18.320 things and sell them on our website. And
00:16:20.079 the first app we did was chat. Who here
00:16:22.880 has built chat?
00:16:25.519 It's hard. It's really hard. And I
00:16:27.920 totally underestimated this. We then
00:16:29.839 spent the whole next year trying to
00:16:31.759 build chat. And we built it four times.
00:16:34.720 And any time someone would come on and
00:16:37.279 there'd be more than 10 users, the
00:16:38.560 entire chat would crash. It was so bad
00:16:41.040 that we our updates were pinned as chat
00:16:44.160 status not crashing green not slow
00:16:49.199 yellow
00:16:50.800 UX not dysfunctional yellow like but we
00:16:54.240 just kept building and like I said the
00:16:55.759 whole theme here is Rails didn't really
00:16:57.279 stop us it just allowed us to keep
00:16:58.399 iterating going and going and going
00:16:59.680 going
00:17:01.920 with chat we got more problems we
00:17:03.680 started building our own real-time
00:17:04.959 notifications and boy was I happy to
00:17:07.360 hear about this notification
00:17:09.280 8.1 uh Rails edition cuz these suck. So,
00:17:13.679 we started dealing with notifications
00:17:15.199 and what would happen was we'd have chat
00:17:16.959 and a chat with 10,000 people would tag
00:17:18.880 at everyone and then everyone would say
00:17:20.799 GM GM GM and the next thing you know
00:17:22.959 your entire website's down. So, it's
00:17:24.799 either we had to send notifications with
00:17:26.559 a six minute delay which you can't do
00:17:29.440 that or we would just overflow our
00:17:32.000 sidekick cues and it would blow up our
00:17:33.360 postgress and everything would go down.
00:17:34.960 So, this was a whole another phase. We
00:17:36.400 spent probably six weeks building
00:17:37.600 notifications and built it probably
00:17:39.600 three times, but we just kept moving.
00:17:43.520 And then came our database, the next
00:17:45.919 most important thing. So to date, we've
00:17:47.760 been around for four years and we've
00:17:49.280 been on four different databases.
00:17:51.919 I don't recommend that, but you got to
00:17:54.000 do what you got to do to stay alive. So
00:17:55.280 we started on Heroku Postgress, like I
00:17:56.960 mentioned, and then we hired an infro
00:17:59.280 guy. And if anyone here has hired their
00:18:01.679 infro guy, they know they come in with
00:18:03.039 very strong opinions that they don't
00:18:04.559 want to let up on. So he was like you
00:18:06.320 got to get off Heroku. So I was like
00:18:07.760 okay fair valid and we're moving to
00:18:09.840 self-hosted Postgress. And I didn't know
00:18:12.240 any better at the time. I completely
00:18:14.080 take responsibility for this but we
00:18:15.760 moved from Postgress on Heroku to
00:18:18.080 self-hosted Postgress on an EC2
00:18:19.760 container. And that right there was
00:18:21.760 probably the worst technical decision
00:18:22.960 we've ever made because within two
00:18:24.640 months our CPU was at 90% all the time
00:18:27.679 and I had to go into the PG bouncer
00:18:30.720 files to modify connection. It was
00:18:32.320 horrible. I would never recommend anyone
00:18:33.919 host their own Postgress, but if you do,
00:18:35.520 you can get out of it. Because after
00:18:36.880 that, we then went to AWS Aurora until
00:18:40.080 the beginning of this year when we
00:18:41.440 decided we had more downtime. The first
00:18:43.440 week of January, we actually went down
00:18:45.200 every single day again. Funny enough, I
00:18:47.840 was even on a date one night on a
00:18:49.360 Saturday at 8 p.m. and the website went
00:18:50.960 down and I had to leave that date. And
00:18:52.960 it's fair to say that didn't that
00:18:54.240 relationship did not work out. But what
00:18:55.600 did work out was our migration to Planet
00:18:57.520 Scale that we then did over the next two
00:18:59.679 months. And we migrated with zero
00:19:02.160 downtime from a Postgress database to my
00:19:04.320 SQL. Was it fun? Honestly, kind of. And
00:19:06.559 you kind of just got to do what you got
00:19:07.679 to do. And we kept moving.
00:19:11.120 So why am I showing you all this? Why am
00:19:13.440 I showing you that the site keeps going
00:19:14.799 down, site keeps going down? Well, I
00:19:17.440 think this whole concept of Rails won't
00:19:19.520 scale is actually completely just wrong.
00:19:23.600 And it's all inverse because what Rails
00:19:26.480 really is is it gives you the power to
00:19:28.640 get to scaling problems. If you hit a
00:19:31.200 scaling problem, if your site goes down
00:19:32.799 like this, then you're doing something
00:19:34.640 right. Most people can't even get that.
00:19:36.880 And most of like even myself before 2020
00:19:39.679 was like, there's no way we can use
00:19:41.200 Rails. We won't scale. But BS, Rails
00:19:44.240 allowed us to actually have a framework
00:19:46.000 that got us to scale. It allowed us to
00:19:48.000 build and build and build and iterate
00:19:49.520 and embrace failure. And like all these
00:19:52.640 stories also it allowed us to solve them
00:19:54.160 fast. And also for what it's worth like
00:19:55.919 these problems that I mentioned would
00:19:57.200 have happened on any framework. Rails
00:19:58.720 just enabled us and accelerated us to
00:20:00.799 get to these problems fastest.
00:20:05.440 2025. So remember that guy Jackson I
00:20:08.000 told you about never really before.
00:20:10.240 Never built a web app. Didn't know
00:20:11.280 anything about Rails? Well this is
00:20:12.559 present day Jackson. He leads our
00:20:14.559 backend team and he leads all payments
00:20:16.640 at And like I said we did 140
00:20:18.559 million last year. So if you don't
00:20:20.960 believe that Rails is the oneperson
00:20:22.559 framework like here's your proof and
00:20:24.000 here's your poster boy. Anyone can do
00:20:26.000 it.
00:20:28.159 Secondly, our team is now 15 engineers
00:20:30.400 and that's not uh all that to say of the
00:20:33.200 15 only three to four people work on
00:20:34.960 Rails to support all this we only need
00:20:36.799 three to four people and that's also the
00:20:38.240 beauty of the framework and also you
00:20:39.440 don't you don't need that much many
00:20:40.960 resources. You can do it with just this
00:20:42.240 amount of people
00:20:44.720 and like I said in the spirit of
00:20:46.159 iteration we're currently on version v3.
00:20:48.880 It shipped like yesterday. And to be
00:20:50.400 honest, we still have no idea where
00:20:51.440 we're going. But at least we know that
00:20:53.679 we have Rails in our back pocket to
00:20:54.880 allow us to iterate fast and keep
00:20:56.240 moving.
00:21:01.440 So the real question is why am I here?
00:21:03.760 And while this is a cool story and
00:21:06.159 there's cool numbers and everyone here
00:21:07.520 enjoys hearing outage issues, the real
00:21:10.159 point we're here and we're all here is
00:21:11.440 because code actually makes an impact on
00:21:13.200 people. We're all here to actually
00:21:14.400 fulfill some greater purpose and make an
00:21:16.080 impact on people in the world. It's not
00:21:18.000 just cool to talk about database
00:21:19.120 migrations 24/7. Let's talk about what
00:21:20.720 these database migrations actually do
00:21:22.320 for people. So, I'm going to tell you a
00:21:24.880 little about that. So, because of all
00:21:26.559 this work and all this outages and all
00:21:27.919 the work that we all do in this room,
00:21:29.440 people can now become entrepreneurs and
00:21:30.880 spend their time doing what they love.
00:21:32.480 Here are some examples.
00:21:34.960 Alley sells your number one resource to
00:21:36.799 help you crush the MCAT and get into
00:21:38.320 medical school.
00:21:40.240 This guy, I don't know his name, allows
00:21:41.760 you to master League of Legends and
00:21:43.360 become a challenger.
00:21:45.919 She teaches you a 12-week plan to shred
00:21:48.080 fat and sculpt your curves and boost
00:21:50.320 confidence.
00:21:51.840 This guy helps you become a mover.
00:21:54.240 Sorry, music producer.
00:21:58.960 Digital marketing is out. Women in 2025
00:22:01.440 are choosing SAS queens instead.
00:22:07.120 This guy teaches you how to land a dream
00:22:08.880 data engineering role.
00:22:11.440 And these people teach you how to run a
00:22:13.039 core, how to build an app that is
00:22:15.039 consumer. You might have saw this on
00:22:16.159 Twitter and they host it on WP. And why
00:22:18.640 am I telling you all this? Again, it's
00:22:20.080 not because it's because the work that
00:22:22.559 we do and the and the code that we write
00:22:24.480 has impact on real people. And now these
00:22:26.159 people can go out and they can fulfill
00:22:28.159 their purpose and be entrepreneurs and
00:22:29.600 really do it. And that's what it's all
00:22:30.640 about. So where do we go from here?
00:22:37.760 Listen, Rails is at risk. Okay, we need
00:22:41.280 more engineers and more websites to be
00:22:42.880 starting using Rails. I am here because
00:22:46.080 I am so confident that Rails is the best
00:22:48.400 tool to start a startup. I have so much
00:22:51.760 proof and I have so much joy more than
00:22:53.360 anything and I and envy and I can't
00:22:55.840 believe how many people don't choose it.
00:22:57.520 If we truly believe that Rails is the
00:22:59.600 oneman framework and the power of
00:23:01.840 entrepreneurialism and capitalism, then
00:23:04.000 how do we actually do this? How do we
00:23:05.360 change this trajectory and get that
00:23:06.880 chart where we all think it should go?
00:23:09.280 Here's what I think. First off and first
00:23:11.760 and foremost, we need to build more cool
00:23:14.559 in public and talk about it. Every
00:23:17.039 single person here has the ability to go
00:23:19.280 and type Rails new and build something.
00:23:20.960 All you need to do is build for five or
00:23:22.400 10 people and talk about it. It's the
00:23:24.320 easiest way. We need to make cool
00:23:26.559 startups in Rails and tell the world. We
00:23:28.559 need new blood.
00:23:33.200 Secondly, we have to create more content
00:23:36.400 to tutorials, Tik Toks, blog posts,
00:23:39.039 YouTube videos that are actually
00:23:40.400 targeted at Gen Z devs. Look at what
00:23:42.400 look at what uh Chris is doing with
00:23:43.679 Typcraft. Like, this is awesome. We're
00:23:45.600 getting new devs in the space.
00:23:49.440 Lastly,
00:23:50.960 Vive coding is actually okay. Listen, I
00:23:53.679 know it produces slop, but even if it
00:23:56.960 produces slop at first, it gets people
00:23:58.559 building and they use Rails and they
00:24:00.159 enjoy it and they put something in the
00:24:01.360 world. And remember that first feeling
00:24:03.120 you had that? So, embrace it, enjoy it,
00:24:05.039 and get it. Spread the word.
00:24:08.880 So, why am I here?
00:24:11.200 Uncle Sam, I want you to build with Ruby
00:24:14.559 on Rails. But all jokes aside, the
00:24:16.240 people in the room are the ones that can
00:24:17.440 actually make a difference. We are
00:24:18.880 probably the top a thousand Rails fans
00:24:20.960 on the earth. And we probably know Rails
00:24:22.960 better than the inside and out. And we
00:24:25.520 need more startups on Rails. We need
00:24:26.960 more people building things.
00:24:30.000 So, I do have a challenge and I do have
00:24:32.480 something I want to leave you with. And
00:24:34.320 I know this might sound a little salesy
00:24:35.760 because I just told the story a lot, but
00:24:38.000 I don't want it to sound like that, but
00:24:38.960 if I'm going to be honest, like my
00:24:40.240 incentives are aligned with yours. If
00:24:41.520 you I want everyone here to build. And
00:24:44.000 so, if you start something in these next
00:24:45.919 30 days, I personally will be your first
00:24:48.159 customer. You can use to accept
00:24:50.480 payments and minutes. and you can send
00:24:51.520 me a link and I will start a group of
00:24:52.880 all our new Rails entrepreneurs and
00:24:55.120 we'll cheer each other on and we'll
00:24:56.400 spread the word.
00:24:59.279 So, I'm going to leave it at that.
00:25:01.440 Again, I'm so grateful to be here. Rails
00:25:03.600 not only has changed my life, but it's
00:25:05.679 changing countless and thousands of
00:25:07.520 people's other lives as a second order
00:25:09.120 effect. And I can't wait to see where
00:25:10.880 Rails goes from here. I truly believe it
00:25:12.880 is the best framework on Earth. And I
00:25:14.400 want to see more people see that, too.
00:25:15.919 So, thank you.
Explore all talks recorded at Rails World 2025
+19