Build Your SaaS

Why we’re using Ruby on Rails in 2018, and Justin's hilarious live chat experience.

Show Notes

This episode is sponsored by Bullet Train. If you’re building a SaaS in Ruby on Rails stop what you’re doing right now, and visit BulletTrain.co.

You asked us:
"What's your tech stack for Transistor?"
In this episode, Jon goes into the nerd stuff. What programming language, frameworks, and infrastructure we're using to build our SaaS.

What we recommend:

  • Programming language: use what you know!
  • Make sure you can connect to the community (both local and on the web)
  • Hosting: use Heroku if you don’t have DevOps experience, AWS is great if you know how to configure it
  • Database: MySQL is fine, we use Postgres (good community + features)
  • Design framework: Semantic UI, or Bootstrap
  • Repos: GitHub
  • Most important: Get something running as quickly as you can (and into the hands of customers!).

Show notes:


Please review us in iTunes
Thanks to our monthly supporters
  • Pascal from sharpen.page
  • Rewardful.com
  • Greg Park
  • Mitchell Davis from RecruitKit.com.au
  • Marcel Fahle, wearebold.af
  • Bill Condo (@mavrck)
  • Ward from MemberSpace.com
  • Evandro Sasse
  • Austin Loveless
  • Michael Sitver
  • Dan Buda
  • Colin Gray
  • Dave Giunta

Want to start a podcast on Transistor? Justin has a special coupon for you: get 15% off your first year of hosting: transistor.fm/justin
★ Support this podcast on Patreon ★

Creators & Guests

Host
Jon Buda
Co-founder of Transistor.fm
Host
Justin Jackson
Co-founder of Transistor.fm
Editor
Chris Enns
Owner of Lemon Productions

What is Build Your SaaS?

Interested in building your own SaaS company? Follow the journey of Transistor.fm as they bootstrap a podcast hosting startup.

Helen:

This episode is sponsored by bullet train. If you're building a SaaS in Ruby on Rails, stop what you're doing right now and visit bullet train.co. We're gonna tell you more about that in a bit. Now on to the show.

Jon:

Hello. Welcome to Build Your SaaS. This is the behind the scenes story of building a web app in 2018. I'm John Buda, a web developer.

Helen:

And I'm Justin Jackson. I'm a product and marketing guy, and we want you to follow along as we launch transistor.fm. Alright, John. We're back in the saddle. How's it going, man?

Helen:

Good.

Jon:

Good. It's a nice sunny day here. Things are heating up finally in Chicago. Smells smells like patchouli in the office today for some reason.

Helen:

Is it that's the is that the mystery of the week? Like, we gotta figure out Yeah. Why it does it smell like patchouli. Yes.

Jon:

I think someone is actually burning patchouli, some sort of incense somewhere.

Helen:

That's hilarious. I mean, it's kind of a hippie dippie place over there, isn't it?

Jon:

Yeah. It is. A little bit.

Helen:

Bunch of liberals just burning incense? Exactly. Oh, man. I don't I can't recover from this.

Jon:

Yeah.

Helen:

Yeah. I'm doing a road trip this, tomorrow going to back home to Edmonton. Oh, I hope my sister doesn't hear this before I get there. We're going for a surprise birthday party. She won't know.

Helen:

We're we're publishing this on Tuesday, so happy birthday, Emma. You're not listening to the show. I know that. So we're gonna go there. But, apparently, they're gonna get, like, 20 centimeters of snow or something.

Jon:

Oh, wow.

Helen:

The snow just melted here. Let's see here. Edmonton weather warning. Oh, yeah. Snowfall warning.

Helen:

4 hours ago, 10 to 15 centimeters is expected. So

Jon:

What's a centimeter? Jen Justin, what's a centimeter for American listeners?

Helen:

What is a centimeter? Okay. So let's see. Let's see. 15 centimeters to inches.

Helen:

What is that? That's gonna be 5.9 5.9 inches. That's that's a fair amount, man.

Jon:

That's a yeah. That's a decent amount.

Helen:

That's a decent amount.

Jon:

Mess up that'll mess up travel.

Helen:

Yeah. Could could be an interesting driving. Oh, yeah. And look at all these weather warnings. They all have cars pictures of cars backed up in them.

Helen:

Uh-oh. Oh, man. So, hopefully, I'll be okay. But, yeah, this, what else is let's talk about what's been happening with Transistor. We've got more customers, more downloads.

Helen:

Oh, I submitted my first pull request. That was exciting.

Jon:

Yep. Yeah. That was good. Got that merged in.

Helen:

What What was that? That was just a read me update, wasn't it?

Jon:

I think it was a read me update. But Yeah.

Helen:

You know? Yeah. Thanks to Francois here in Vernon that helped me get my Rails environment up and running. We're gonna talk about our this week's topic is nerd stuff. We're gonna talk about our whole tech stack, what we're using for all that, you know, performance and all that stuff.

Helen:

But yeah. So I'll talk about getting my environment up in a bit. Yep. I also wanted to tell you this really funny story about our live chat. You know you know how we have that little widget on our on our web page?

Jon:

Yeah.

Helen:

So last night, 5:45 PM, I'm in I'm in the office kinda working late. And you and I have this, like, kind of informal, like, whoever's watching the chat kinda responds. And it makes a noise in Slack when a new, someone initiates a new chat. And so I'm like, okay. I'll just pop in there.

Helen:

And we're starting to help some of our early access customers. Right? So I'm like, okay. I'll just pop in, help normally, it's customers that are using it. And so pop in, and this guy goes, hey.

Helen:

I jumped the gun and I recorded my first episode. And he's like, I just don't know how to publish it. I'm and so I'm thinking, oh, this is a customer. Right? So I'm like, okay.

Helen:

Can you just go to your team tab and invite me? And the guy's like, team tab? He's like, someone just suggested this site, and I came, and I clicked on this live chat. And now I'm here. I'm like, I'm like, oh, okay.

Helen:

I'm like, okay. Well, do you want an account? We're currently in early access. And the what continued was it just it just kinda snowballed into this bigger thing. He's like, okay.

Helen:

Sure. From what I understand, I need a website and RSS feed. So he's just trying to figure out, what do I need to host a podcast?

Jon:

And then he's

Helen:

like, does this cost money? And I'm like, okay. So I have to explain to this person, like, how podcast hosting works, how you have to, like Yeah. You're gonna have to pay for this. I'm like, yeah.

Helen:

We're we're doing early access. It's going to be this much, but we're doing early access for this much. Here's kinda what we offer. And he's like and I'm like, you know, I'm in the office right now. If you wanted to sign up right now, I can, like, walk you through all the steps because the app is really new.

Helen:

And then at one point, I go, so do you wanna do it? He's like, you know what? This site was got recommended so much. By the way, I don't know who recommended us. Yeah.

Helen:

Sounds great. He's like, this site got recommended so much. You know, that sounds good. Spending that amount of money for hosting sounds good. Sign me up, brother.

Helen:

And so I just, like, started, like, onboarding this guy. And as I was taking him through it this is why this live chat's so great and talking to your customers is so great because I'm realizing I'm thinking all of the friction points that it takes to get a he's got an episode, and he wants to just get it out on the Internet so people can listen to it. And I'm thinking about in the my head all of the friction points that's gonna take him to go from he's got an episode to, you know, it's published on the Internet. So That's a phrase. First thing I asked him this is interesting because I've I've started to notice some trends.

Helen:

People you're gonna get to talk about your nerd stuff in a sec, John. I I just gotta get this out of my system. So the the first time people record a podcast, it usually doesn't sound that good. And there's a bunch of reasons for that. We'll go into in future episodes.

Helen:

But I had him send me his MP 3 because I'm like, it's likely it's a 2 person podcast. They probably recorded it with 1 mic. It probably needs its levels adjusted. So he sends me the MP 3. So in one window, I'm leveling his MP 3 automatically.

Helen:

Alright? In the next window, I'm thinking, okay. I gotta walk him through this stuff, but I had no way of screen sharing. So I open up a video recording, and I start recording myself doing a video tutorial. Hey.

Helen:

It's Justin from Transistor, and this is how you create a show. Meanwhile, he's, like, asking me questions in chat, and I'm, like, pausing my video recording, going over, answering them, checking this MP 3 that's leveling, going back to the video tutorial going, alright. So the next step is you and I'm just going through all of this stuff, recording it. As I'm I finished the first video tutorial. I export it, upload it to YouTube, drop it in the chat as we're just kinda going along, And then I'm like, oh, wait a second.

Helen:

But he's gonna wanna add an episode. So then I go back, record another video tutorial. Hey. How's it going? And I'm, like, updating him the whole time.

Helen:

I'm like, okay. Your your MP 3 is 30% done. And, then I sent his MP 3 back to him. I said, listen to both. You choose whichever one you want.

Helen:

Guiding him through the process of adding an episode, doing and to to be fair, like, he actually was able to do a lot of the steps himself and Yeah. Get it going. We got through this whole thing. So by okay. So we started at 5:45, and by the time we were done and I'm just I I'm just, like, in adrenaline mode because I'm I'm working all these different angles and creating all this stuff.

Helen:

And I was willing to do the work because I was like, this is gonna be so good for us for, like, you know, customer support and being able to reuse this stuff. And by 6:30, we had his show published. We had his website configured. I gave him the instructions on how to submit it to Itunes, and the dude was just pumped because he had his he'd recorded this episode with his buddy, and it was up on the Internet, and he was able to share it with his friends or whatever.

Jon:

It's amazing.

Helen:

So, yeah, that's my live chat story, and I figured I should share

Jon:

it. That's a really, yeah, that's a really cool interaction with a customer. I like that. Sign me up, brother.

Helen:

Sign me up, brother. And the and the weird part is, you know, this is one of my the few times I've had just a stranger come to a website, and it's just like all of a sudden you're chatting with them. They're on the line, and and I'm thinking, I could totally help this person sign up right now. Like, that's Yeah. That's possible.

Helen:

So that's the hardest I've ever worked for that amount of money. Because, really, you know, we're in early access. We're not charging that much right now. And, you know, if I was gonna charge for that, that would have been, like, a couple grand worth of work. But I

Jon:

was Seriously. Yeah.

Helen:

When you're building a web app, you're you're willing to do all this stuff. So

Jon:

That, that's cool. That sort of reminds me of a, interaction that I had with a cofounder of a different service. Well, it's Stripe, which is what we use our payment processing, which we can go into later in detail. But Yeah. But it was like the early days of Stripe.

Jon:

Their design was, like, awful. I don't think they had a very big team. It might have been like 2010 or something like that. Yeah. And I was I was working at a different company, and we were using Stripe, for payment processing because we'd heard great things about it and how it was great for developers.

Jon:

This isn't a funny story, unfortunately, but but I I they had a they had a campfire channel, which is campfire is the this service that, 37 signals used to have.

Helen:

Yeah. I kinda like a

Jon:

base camp.

Helen:

Yeah. Kinda like Slack.

Jon:

They had a community channel where you could just hop in and ask questions to the team, and it was actually I ended up talking to one of the cofounders who was I think I think it was Patrick Collison. No way. You know, it's like these 2 brothers who started this company and built the thing. Yeah. And they were still coding on it at the time.

Jon:

They might be still.

Helen:

But By the way, they're they are the youngest billionaires in the world right now, I think.

Jon:

Yeah. Yeah. I believe it. I mean, they're super smart, like, really nice, helpful guys. And, like, I think that sort of sold me on it too.

Jon:

I was I hopped in this Campfire channel, and I was able to chat with these 2 guys who were starting this company and they helped me fix a problem. And it was great. It was a great experience. I don't think they still have that channel because of how big they are now, but as this crazy thing back to those, the earlier days of Stripe and, yeah, it it was great. And I I I feel the same way.

Jon:

Like, I like helping people out and solving their problems. And

Helen:

Yeah. It makes such a difference, especially in the beginning, If and there's this very popular essay, I think it's by Paul Graham, called do things that don't scale. And the idea is in the early stages of a start up, those interactions where you're walking someone through the sign up process manually, When you're doing all of this work, you know, spending an hour with a customer, helping them level their MP 3 and do it, That is all really important because you're seeing these are the struggles people have. These are the opportunities that we could build for. Right?

Jon:

Mhmm. Yeah. I mean, it's like, yeah, it's like user testing almost. You you get too used to the product you're you're building, and you don't really notice that where things are lacking.

Helen:

Totally. Totally. I'll I'll drop those videos in the show notes, and folks can watch them knowing what was going on at the time. It's pretty funny.

Jon:

That's great. It sounded like you needed some one of those, like, hacker, like, 6 screen setups where you just like Yeah.

Helen:

Six screens and a Power Glove.

Jon:

Yeah. Right.

Helen:

So we're gonna talking about Power Glove, we're gonna talk about our tech stack. And, maybe a good way to start is for you to just go through everything we've used so far to build transistor to where it's at right now. So what is the stack? What have we used?

Jon:

So let's see where to start with this. Transistor is built on Ruby on Rails, the latest version of that. It's powered by a Postgres database. It uses Redis, which is like a key value store for, caching and for for storing background tasks and then, uses this Ruby gem called Sidekick, which sort of handles, processing queues of things in the background. So they don't tie up the actual web app itself.

Jon:

It's pretty, it's pretty simple. I mean, it's it's Ruby on Rails and everything that comes with that. It's a database. It is, you know, a handful of JavaScript on top of that. We use, Stripe for payment processing, like I said.

Jon:

Lots of background tasks that run-in that, you know, do the heavier lifting things like processing audio files if they need to be processed. And,

Helen:

what are we using, yarn for

Jon:

yarn is for, I don't believe it's actually being used. It's a package manager, dependency manager for JavaScript libraries. I'm not actually hooking into that yet, but I will be.

Helen:

Okay. And we're hosting it with, Amazon Web Services?

Jon:

Yep. We're hosting it with AWS, which is great. I mean, it's, you know, runs like half the Internet at this point. Yeah. At least.

Jon:

And it it was what I knew and what I had used before, so I kind of went with it. And, you know, we chose it obviously because it's very powerful and very, scalable, scalable, dependable, but also because we ended up signing up with Stripe Atlas to get the company started and they provided a bunch of credits for AWS. So you can just like pretty much host this thing for, for free for a while while you get started and, you know, build up revenue. Mhmm. So it was, like, kind of kind of a no brainer for that.

Helen:

And what are we using for CDN? Is that with a w s too?

Jon:

It's not with a w s. So we we we have kind of some redundancy built in. So we have all of our customers audio files on S3, which is the Amazon's, like, file store service. And then on top of that, we actually have an external dedicated server. That kind of acts as a CDN that caches all the audio files, and then sends them out through this dedicated server that we have.

Jon:

So that there's a, there's a bunch of different ways you can serve media. You could serve it directly from S3 if you want, but at large monthly bandwidth gets like crazy expensive on S3. You know, past a certain point you're, you're spending like 1,000 and 1,000 of dollars a month and it's super simple, but past a certain point, it's just really not, not very affordable for that. And then there's other third party CDNs you can use, but they're similarly expensive and have, you know, like bandwidth limits and and thresholds. And they're great because they're, you know, globally distributed.

Jon:

But, you can kind of roll your own if you, you have some knowledge. I had a friend of mine, Joe, help me out and set up a kind of kind of a CDM that's just built on top of a pretty powerful server and has a lot of very fast, cheap bandwidth Yeah. So that we don't we don't go bankrupt right away.

Helen:

Yeah. And a lot of this stuff ends up being important too, the way we configure this, both in terms of reliability for our customers, but also in terms of how we're going to be able to scale this, in terms of costs. And so, you know, one friend I had, Morgan shout out to Morgan. He he's like, you know, I always hear podcast hosts of really big shows complaining about the reliability of their service, saying, you know, people can't download shows fast enough. Sometimes because these podcatchers will all down like, you publish a episode at 1 AM on Monday, and all the podcatchers go and download it at the same time.

Helen:

So if you've got a big show, that's millions of downloads all at once. And if there's not infrastructure to support that, sometimes it'll crash, sometimes it'll go offline, sometimes people just won't be able to download the show. And, for, you know, a big podcast, that's a big deal. If people can't get the episode when they want it, then you might have missed out on, you know, those advertising impressions. So this stuff we're figuring out now is partly, you know, how can we make sure it's reliable for the customers we already have, but, also, like, how are we going to be able to make this profitable in the future?

Helen:

We have to be able to make it reliable but not too expensive. And, when you start out, you're like, oh, this is you know, AWS is cheap. This is this is great, but it can get expensive fast.

Jon:

Yeah. Very yeah. Definitely can't. So, yeah, I think the I would say the bandwidth is probably the most expensive part of this, just because of how much data is being served or will be served aside from maybe like, you know, salaries or something like that. You would pay if you hire people, but

Helen:

Yeah. We don't got those.

Jon:

Yeah. Nope. But surprisingly, like, Bandwidth is still it's still pretty expensive. You know, you'd think with like, you know, on all these other unlimited plans and unlimited phone plans and things like that, that, that it would be a little bit more under control. But unfortunately that's not, that's not the case.

Jon:

So, yeah, I mean, it's, you know, there's upsides and downsides to both using a CDN and then sort of rolling your own, but we'll see how, how far this one gets us. Yeah. We We can always, we can always add in more, more like points of access and. Kinda kind of re reevaluate things down the road and, you know, if we're making more money and have some some more resources, we can change things up. But Yeah.

Jon:

Seems to be working really well right now.

Helen:

Yeah. Exactly.

Jon:

Yeah.

Helen:

In a bit, we're gonna get into I wanna kinda dive into why we're using Rails in particular, pros and cons of that. But before we do that, I wanna talk about our domain our, yeah, our domain structure. So Mhmm. This is one thing, that comes up a lot. It came up in my book, Marketing for Developers.

Helen:

Right at the beginning, I talk about organizing your domain structure. And the way I the way I advocate doing it is you have your marketing site on the naked domain. So for us, that's transistor.fm. But you put the app somewhere else, so either, like, app.transistor. In our case, it's dashboard dot transistor.

Helen:

Can you maybe talk about because we have other subdomains too, what those are and why we're using them?

Jon:

Yeah. Yeah. So, yeah, we have, the main bare domain, which it's all it's currently well, with one exception, it's mostly all running on the Rails app itself. Yeah. So we have the main page, which is just our marketing page, and sign up and, and, you know, logging in and things like that, which we'll probably switch later.

Jon:

But, Yeah, we have that. We have the dashboard, which is where you manage your podcasts. Yeah. After you're logged in, we have, let's see, we have a feed subdomain, and that's where all of our RSS feeds are served from. Yep.

Jon:

And we have a media sub domain, which is where all the media files are hosts are served from. And we have a images, subdomain, which actually is pointed to CloudFront on AWS, which is their version of a CDN.

Helen:

Yeah.

Jon:

And assets, asset subdomain, which is serving like JavaScript and CSS from CloudFront. And the reason for that is because, you kind of want your assets served from different subdomains or domains, than your main web page so that the browser can sort of there's, like, limits on the number of connections to to one domain. So if you split it up, the browser can actually, like, intelligently download multiple things at once a little faster.

Helen:

Interesting. See, the reason I I normally, recommend separate domains is having your app and your marketing site on the same domain in the same server can cause all sorts of problems, especially when you're scaling a marketing team. And so, you know, I've been involved with this is my 3rd SaaS company I've worked for, but tons of consulting clients. And almost every time, the app and the marketing site are on the same domain, we end up having to split it and pull it apart, and it's really messy. And so being able to have a separate site for your marketing site where, eventually, when you have a marketing team, they can install WordPress or Webflow or whatever they want.

Helen:

Mhmm. And, also, any tracking they wanna do, themselves without having to bug a developer who has to redeploy the app all the time. Right. Yeah. And is there any other reason you've got, like, separate subdomains for, like, the media files and things?

Helen:

Is there other benefits to that and the feeds?

Jon:

That may yeah. I mean, aside from having the browser be able to fetch things concurrently, for me, it ends up being a little bit easier if, let's say, you wanted to pull a pull pull the feed serving out of the app and have it be its own app. Right? So you could sort of just point the feed sub domain to an entirely different tech stack. That's just serving RSS feeds without actually having to change, without having other people have to change their URLs and stuff like that.

Jon:

Yeah. So that's, that's the main reason I tried to like split things up basically by like what, what their use is. Right. So like right now it's all pretty much the same app. But in the future we might, you know, split off bits that maybe get more traffic and and need, you know, a different type of server or maybe some some different code.

Helen:

Yeah. Totally. The only other one I I, recommend in the book is having a staging server. And the reason for that right now, it's just 2 of us. So theoretically Yeah.

Helen:

We'll talk about my local development environment in a bit. But theoretically, I can, you know, I can sync it up and and, just run the app locally. But

Jon:

Yeah.

Helen:

Again, when your team grows and you wanna be able to have a really great testing and deployment kind of process, having an actual staging server, a real web server on the web that's not just on a local machine where you can test things out, have a bunch of people look at it, they don't need to run the app locally on their machine, can be really helpful. For us, it'd be probably overkill at this point, but that's something else that Yeah. Folks might wanna consider.

Jon:

Yeah. We'll get there eventually. And, you know, you can you can automatically have code be deployed there once it's merged in. So we're using GitHub to manage all of our code, which, you know, probably most people do at this point. Yeah.

Jon:

But, you know, you can you can have things like once a poll request is merged into your main branch, you can have it auto deploy it to staging so you can test it out.

Helen:

Yeah. Yeah. It's things like that. Yeah. It can get really, really, really, really cool workflows in there.

Helen:

Okay. So let's talk about Rails in particular because I think that's what most people are interested in. As a background, John, because I just wanna stir things up a bit. Yeah. Rail Rails is old now.

Helen:

It there was

Jon:

Rails is, yeah, Rails is old.

Helen:

There was a time when did you start using it, by the way?

Jon:

I started using it really early on. I think it was still in, you know, beta. It was like there wasn't even 1.0 yet. I started poking around with it just because it seemed like something pretty compelling and new. Yeah.

Jon:

And I think up to that point, I was just, like, using PHP and a lot of WordPress, and I was just like, this is a mess. Yeah. And I remember it being, you know, it it was a very new approach, at least for me, for building a web app with the whole model view controller split. Yeah. And it took a bit to get used to, like, it was actually really confusing at first.

Jon:

But it was also new. So there was no ecosystem. There were not many people using it. But the people that were, you know, there were like IRC channels and stuff like that. Yeah.

Jon:

That, there wasn't, you know, Stack Overflow was not a thing. You couldn't really Google for many results. This was, like, 2,004 Yeah. Or something like that. I mean, which is crazy to think about that it's been that long.

Helen:

And what was the like, the part of the attraction was it was kind of like it it gave you the skeleton or the scaffolding for a web app kind of out of the box. Right? Isn't it wasn't that the the idea?

Jon:

Yeah, there was some of that built in the scaffolding, which, I think most people probably don't use. You can sort of have it auto generate CSS and HTML for you. That's like a really basic, basic looking

Helen:

Yeah.

Jon:

Yeah. But, yeah, it was, you know, David Heinemeier Hansen who, created a thing for basically through 37 signals to build base camp. You know, he had some, some videos up of him, like building a blog in like 10 minutes with rails and it's like, holy crap. Like, this is, this is insane. Yeah.

Jon:

And yeah, I just kind of took it from there. So I've been using it a long time, Pretty much as my main development tool, you know, you just put off and do some JavaScript here or there and and poke around with some other tools, but, that's that's my history of it. I just stick with it because it's, I mean, partly it's what I know and I can just I'm very efficient with it and I can get things done really fast.

Helen:

Mhmm.

Jon:

The ecosystem and the the, I guess, user base is huge now, and there's just tons of resources and lots of third party gems, which you can download and use within your app to do, you know, different pieces of this and that and specialized tasks.

Helen:

I remember when I was my first software job, it was we were all based in dot net. And I remember the developers at the time this was 2,008, so this is, you know, Rails was becoming a thing, and there's a lot of excitement and a lot of community, and there's conferences and blog posts and videos. And, there's all this excitement about and, like at future of web apps, like, you would go to that conference, and everybody was building something in Rails. Twitter was being built in Rails. GitHub was being built in Rails, like, everything.

Helen:

And these dotnetdevs were kinda, like, looking longingly over at the community and, you know, the Rails community because it just felt like there was so much excitement. And, when I was getting my local dev environment set up, I had my friend, Francois, helping me, and he's still a Rails developer. And I said, so what's the deal? Like, does it feel like Rails is kinda no longer the cool thing? And his comment was, no.

Helen:

It it's not the cool thing anymore. It's definitely going into its maturity phase, but there's benefits to that too. Would you agree?

Jon:

Oh, definitely. Yeah. Yeah. I would say it's like, I'm fine with it not being the cool thing. It you know, it it's certainly mature.

Jon:

I think it there's the benefits there that it's not changing every week, right? Like, so you have these newer frameworks built on JavaScript and it just seems like there's something changing like every week and it's, you just wanna get some you just wanna get it done. Right? Like Yeah. You don't wanna have to be, like, learning new things and changing your tools, like, every every other week.

Helen:

Yeah. That reminds me of, this video by Nate Kotney, who's the CEO of HiRise, and he has a video called, should you use Rails? And, one thing he said is

Speaker 3:

I think we as builders get attracted to the new innovations. There's that new thing that we really wanna learn because we think it's gonna make our life better. When often, our life depends on getting stuff done really quickly, and get it out the door into people's hands. So draft is made in rails, not because rails is the best thing in the world, but rails is something I've been using since like 2,005 when it was, I think, a point 12 release. So I know it really well.

Speaker 3:

All I wanna do with draft was get this thing into people's hands and get this product momentum going so that I could make as many people happy as fast as possible.

Helen:

And there's just so much truth to that. You know? At the end of the day, you kind of gotta use what you know. If you've already if you've been using a certain tool for a long time, it makes a lot more sense to just use what you know and be able to build things faster and get them out into customers' hands than

Jon:

Yep.

Helen:

You try to learn something new. Right?

Jon:

Exactly. Exactly. Yeah. I mean, that that said, there are certainly reasons not to use it. It has this kind of stigma against it that it's like, rails doesn't scale well, and it's like a slow Ruby's a slow language, which is true.

Jon:

It is slower performance wise than a lot of other languages. And it doesn't handle, you know, a lot of concurrent connections at once, but there's ways around that. But if you're doing like a a really, really high concurrency application, you're probably not gonna use Ruby or Rails anyway. Like, you're not you're not gonna start with that. You can always, like I said, you can always, like, Take pieces of the app out and build them in another language.

Jon:

That is possibly more scalable for that particular task. Like Twitter. I mean, Twitter was built in rails. They had a ton of problems. Like they, it just kept crashing because it just couldn't, it couldn't handle it.

Jon:

So they, you know, I think they rewrote most of it in Java. Which again is a really mature language, but it's much more performant, but, you know, not as maybe not as fun or enjoyable to work with. So Yeah. There's gonna be upsides and downsides to either

Helen:

one. Yeah. Exactly. Exactly. So I think for the pros, I would we would say the ecosystem's great.

Jon:

The ecosystem's great. The language is is just fun to use. Like, Ruby is a fun language to use. It's very, I guess it was created for developer happiness, I guess that I think the guy that created it said, it, it, it reads a lot like English. You can write it a lot like English.

Jon:

That's pretty much, I mean, those are the main reasons, right? Like I enjoy it. Yeah. What I know, I know a lot of people who use it and I can ask for help if I need it. Again, the ecosystem is great.

Jon:

The one thing I fear is that as it becomes less cool and new, maybe people won't be building gems or building open source, projects built with Ruby anymore for, like, for new technologies. Mhmm. Or or that'll become, like, less and less popular to where, like, for now, Rails is, like, behind the curve and in a few areas. I haven't really seen that happening yet, but you, you can sometimes see it with like the lack of updates to some particular gems, like haven't been updated in a couple of years, which might mean they're stable and finished. But, Yeah.

Jon:

It might also mean that that that maybe that developer moved on to something else and is now, you know, programming node or, or Go or something like that.

Helen:

Yeah. Totally. I I would say another con, which is more, an issue with me just not being a great developer, is it's it was a lot harder for me to get set up with Rails. I had to have my friend kinda talk me through setting everything up.

Jon:

Yeah.

Helen:

And some of that was just, you know, we have certain dependencies for this app that, you know, I couldn't figure out on my own. But, the kind of the new hot framework right now is Laravel, and, I, you know, was able to install a few like, get a few Laravel projects going. And it it's definitely has a feeling of being like, oh, this would be the next step. Like, if if if you're gonna make rails even easier to get into, it would be Laravel.

Jon:

Yeah.

Helen:

And I think if you're just starting out and you already have experience with PHP, I would probably recommend Laravel now. I know a lot of those guys. They they've got a they've got the a lot of good things going on in that community and the benefit of being kind of the hot the hot topic right now. But, again, if if if you already have experience with the tool and we want we ultimately just want to help customers get their podcast out on the Internet and serving it to all their listeners. That's what we want, and we wanna be able to build things as fast as we can.

Helen:

And Rails has the advantage that John knows it. And, also, there are thousands of Rails developers out in the world, and if we need to hire somebody, there's still lots of folks to hire. It's not it's not like, we're gonna be hurting for, you know, finding people that, finding people that know Rails.

Jon:

Yeah. Exactly. I've had friends say, oh, you're still you're still using Rails? Like, what are you building it on? Ah, Rails.

Jon:

What? Oh, really? Why? And it's you know, it doesn't bother me, but there's so many other frameworks out there. Like, use what you know and don't hop into something because it's trendy, And there's no one right answer.

Jon:

Like, they all essentially do the same thing. Right? They render a web page and store data in a database. Yeah. There's no comp there's no comp there's no competition.

Jon:

There shouldn't be. It's like That

Helen:

response is so ironic because it used to be all the cool Rails devs were like, oh, you use PHP? Oh, you're using Java? Oh, I just said Java again.

Jon:

Java.

Helen:

Yeah. So it's so funny that now Rails is entering its maturity phase, and folks are like, what? Rails?

Jon:

Yeah. Yeah. And, you know, you can you can crap on Java, but Java is making a huge comeback too because people have built other frameworks with it. Yeah. Java's huge.

Jon:

I mean, it's really, really popular language to use. So is JavaScript now? I mean Yeah. For a while, JavaScript is like, oh, JavaScript is terrible. Why would you use that?

Jon:

But, like Yeah. New newer versions come out, and they they improve the language. And, you know, JavaScript today is great. I mean, it's actually really, really fun to use.

Helen:

Yeah. You might get some mail about that.

Jon:

Yeah.

Helen:

Now tell tell me a bit. When I was installing our our dev environment, was like, whoo. 5.2. RC 1. Yeah.

Helen:

John likes to live on the edge. Talk a little bit about why we're using 5.2. Why we're like, that's the latest version. Right?

Jon:

Yeah. So yeah. So Justin's, referring to Rails 5.2, which is the latest release. Actually, it's not released yet. It's in release candidate mode, which basically means it's almost done.

Jon:

I think Basecamp and Shopify are both already running on it, you know, 2 massively huge production applications, which, you know, kind of gives you a sense that, yeah, this is, this is fine. It's going to work. But I, I used it for transistor. I upgraded because there was one particular thing I wanted to try out, which was, they added in something called active storage, which is a file storage mechanism for Rails, like, built directly into it. Usually, you would use, like, a separate gem to to manage all that stuff.

Jon:

And it it has, like, a built in storage component now with a front end JavaScript component, which will, you know, help you do, like, upload progress bars and things like that. So I wanted to try that out. Ultimately, didn't use it yet, didn't roll it out. But I still kinda wanna poke around with it, but ultimately, it's been stable and Yeah. Been great.

Helen:

Perfect. This is a a great time to talk about our first sponsor, John. We got us we've actually had a few people reach out and say, can I sponsor this show? And, our first sponsor is Bullet Train. Now Ruby on Rails made it easier than ever to get kind of a web app going, but you still tell me if I'm if I'm right here.

Helen:

You still had to come up with a nice looking UI. Right?

Jon:

So

Helen:

Yep. Dashboard, pricing pages, subscription pages, onboarding workflows. You had to build all of that stuff yourself. Right? And we've even had some of this pain ourselves, haven't we?

Jon:

We have. Yeah.

Helen:

We're we're just building it from scratch. And, and even on top of that, you had to build your own way to manage user accounts, security, password resets. All of that stuff needs views. You gotta see what are you gonna show the user. You gotta have ways of managing all of that.

Helen:

Now listen, folks. Bullet Train does all of that. It's basically SaaS in a box specifically built for Ruby on Rails apps. You can see a demo of what their pricing page looks like. They have a template for pricing pages.

Helen:

It's beautiful. It's based on Bootstrap. Go to bullet train.co/pricing. And that's actually their pricing page as well, but it's all running on Bullet Train. By the way, there's also a hosted version for folks who aren't building their app in Rails.

Helen:

So it works with Python, Go, Node, etcetera. I'm really excited about this. This is there's so many projects. Even my other project I built with my buddy, Marty, I would have loved to have had this. I just think it's such a great idea.

Helen:

You pay for it once. You get you get to use it on your app. It'll save you hours of time, I think. So we're really thankful to bullet train for sponsoring this episode of build your SaaS. Yeah.

Helen:

Go check them out, bullet train dotco, and tell them John and Justin sent you.

Jon:

Yeah. It looks like a it looks like a great, great solution for a lot of problems. Yeah. Well well designed, well built.

Helen:

I'm, I'm excited about his his like, what's on his road map too. So he's gonna build in social logins, into it. He's going to have analytics integrations built in. So, I I think it's rad. And you pay for it once and then you get the future updates.

Helen:

So it's like he's going to keep building on top of it, and you just keep getting it. You can keep implementing it into your app. Really, really cool.

Jon:

Very cool. Yeah. I I sort of have my well, I wouldn't say my own version of that, but I have, like, you know, modules and, and, code that I've built over time and, can just sort of reuse and repurpose for, for different apps, you know, sign in and authentication and Yeah. Logging in and paying for things and integrating with Stripe, but it's all sort of Yeah. Stuff I've done before that I can just sort of rehash.

Helen:

It is so helpful. If you've ever, if you're in the Laravel community and you've used Spark, it's it's like that. It's like Okay. Basically everything in one box. And, yeah, if if if you've if you haven't built that stuff before and you don't have it sitting around, just buy this, and you don't have to worry about it.

Helen:

It's gonna save you so much time.

Jon:

Very cool.

Helen:

Alright. So what else are we gonna talk about as we kinda close off the show? Is there anything we missed in terms of our setup that you wanted to talk about? Is there anything that people are going to get angry that you didn't talk about? All those devs out there going, wait a second.

Helen:

John, why didn't he go into this?

Jon:

Good question.

Helen:

You let that jackass Justin talk too much.

Jon:

Yeah. Didn't really talk about our our particular AWS setup.

Helen:

Alright. Why don't we go into that a little bit? Yeah. Let's let's do that, and then let's talk about some listener takeaways.

Jon:

Cool. So the thing with AWS, that is great and also confusing is that they have They have so many tools now in their dashboard under the umbrella of AWS. I mean, it's like 80 different things you can do.

Helen:

Oh yeah. It's overwhelming when you log in.

Jon:

It's amazing. Right. So yeah, it's there. I mean, they're doing a really good job with that stuff, but there's also, you know, a handful of different ways you can host your application, different ways you can build out your infrastructure, whether it's ops works or code deploy or, got a they have a number of things. So there's probably like 5 different ways you can deploy.

Jon:

We we went with OpsWorks, mainly because that's what I know, and that's what I can use to set things up. It's it's also maybe, like, kind of an older tool, but, they're still updating it, supporting it. But what that lets you do is sort of, you know, you sign up for AWS and you get your, your database instance running. You get your, Redis caching instance running. You get your what they call a load balancer running, which is this, top level instance that takes all of your incoming web requests and splits up the requests between multiple web servers and sort of divvies it up.

Jon:

So you can have a little bit of extra reliability and, performance built in. And then ops sort of lets you hook those, all those pieces together and define like a source where your code is coming from, which is GitHub. And then, it allows you to to configure a bunch of settings with your, with NGINX, which is a web server that, runs the application, and then ultimately allows you to deploy the app directly from GitHub and, you know, run database migrations and compile JavaScript down and things like that. So that's what we're using. We have a couple of web servers running underneath the load balancer so that, you know, if one goes down, we'll still have one working.

Jon:

It's easy it's easy to add more, if, you know, we need more servers or bigger servers. You can kinda, like, add it and spread out the resources more. That might be it. I mean, you know, Rails is a pretty simple stack to to run on in production these days. You just definitely used to not be like that.

Jon:

But

Helen:

Yeah. What do you think about, so running it all on AWS versus something like Heroku? It used to be Heroku was the go to. I know it gets expensive quick, but why start with AWS?

Jon:

Well, the funny thing is is Heroku is built on AWS. They use AWS behind the scenes. So it, Heroku is amazing. I mean, it's still really, really good for deploying apps. It's super easy to set up.

Jon:

Yeah. And that's, that's where the extra cost comes in, right? Like I don't particularly need that ease of setup. You know, they're adding on top of the AWS cost and charging you extra. Mhmm.

Jon:

And they, you know, they wanna charge you for every little thing, whether it's, you know, adding more memory or adding what they call dynos, which is which are just more instance more servers into the mix.

Helen:

Yeah. Have the AWS tools gotten better? Like, is it is it now, like I mean, for me, logging into the dashboard feels overwhelming. But is it Yeah. Have they kinda caught up to Heroku in a bit, or is it still

Jon:

Not not really. No. No. It's pretty complex. There's a lot you can do, but it's not quite as simple as Heroku where you can, you know, deploy from the command line super easily or use the web interface to configure just to, you know, do you can't use, like, use sliders to configure how many instances you're using?

Jon:

It's not Yeah. Not quite that friendly.

Helen:

But Yeah. Well, let's get into what we kind of recommend for our listeners. So I think the first thing I'll ask you is, let's say you're an indie dev working by yourself. Would you recommend well, first, let's start with language. So indie dev, you know, they're looking to build a web app.

Helen:

What would we say? We're we're basically saying use whatever tool you know best.

Jon:

Yeah. Right? Yeah. Use what you know. If if there's a language or a library or a framework that's gonna work for a particular subset of your application, like go with that.

Jon:

Yeah. But I would say, you know, use what, you know, use what use use something that you know you can, either you have a community around you maybe. Maybe a community that's close to you that you can ask for help.

Helen:

Yeah. I think the community bit is actually important, because when you're when you're getting started, there's a bunch of advantages to having people around. One is just excitement. So when a lot of people are excited about something and they're all building stuff, you kinda get swept up in it. The other is just kinda number of resources.

Helen:

Right? So Ruby has all these gems you can use. Again, Laravel's got all sorts of, like, stuff out there that you can use and just plug into your app so you don't have to build everything yourself. And, yeah, you're also gonna be able to find answers online. Like, there's just so many I I I'm in a really small town, like, 30,000 people, and I personally know, I don't know, 5 Ruby on Rails developers here in town I can Yeah.

Helen:

Go and talk to. And sometimes having someone you can sit next to at a coffee shop and say, hey. Just show me this thing. Really helpful.

Jon:

Yeah. Yeah. It's it's much better to learn through showing than reading

Helen:

Yeah.

Jon:

Or or a a bang your head against the table for hours.

Helen:

So now let's talk about hosting. So any dev, if they're getting started out, would you recommend still something like Heroku?

Jon:

I would, yeah, I would say I always recommend Heroku if it's like you need to get something up fast, and you're not super experienced doing DevOps, you know, which is the name for that particular subset of, you know, developers. Yeah. Yeah. Heroku's great. That's probably maybe one of the only ones I recommend.

Jon:

I mean, especially for for Ruby on Rails. Yeah. It's, yeah, it's very easy to set up. AWS, obviously, I would highly recommend Yeah.

Helen:

And in the, Laravel community, I would recommend I think I think it's Forge, but I might be wrong about that. I think Forge is kind of like the a Forge lets you kinda manage where you you can create a server on DigitalOcean, Amazon Web Services, etcetera. So if you're looking for some help, like some Heroku like help with that, that's, that's a good tool to use. So that's kinda hosting and DevOps. What else?

Helen:

What about database? We we chose we didn't choose MySQL, which is the more popular one.

Jon:

Right.

Helen:

What what do you kinda recommend there?

Jon:

My s MySQL is still really popular. So Postgres is a SQL also a SQL based, database, not directly compatible with MySQL, but I feel like it has a lot more of an open source community now and a lot of really interesting features. So it can do everything MySQL can do, but it has a lot of other features, built into it now. Like you can store just blobs of JSON text in Postgres and like search through it. And, it's sort of, for readers that are, are not totally familiar.

Jon:

There's there's relational databases, which is what Postgres and my SQL are. And then there's, document based databases like Mongo DB and Postgres now, like sort of combines both of both relational and document base. So you can have these like data stores within your tables that act like a document store, that you don't have to like migrate your whole database to change something. You can just like stuff a bunch of data in there and and sort of, build things on the fly really quickly, which is great.

Helen:

One thing we didn't talk about was, kind of our, our design framework. Are

Jon:

Yeah.

Helen:

Are we using Bootstrap? What are we I don't even know what we're using.

Jon:

No. We're using well, we're using, something called semantic UI

Helen:

Okay.

Jon:

Which is, you know, similar to Bootstrap or any other any other of those frameworks, but it's kind of highly customizable, more so than I think Bootstrap is. Especially great for building, like, dashboard type interfaces.

Helen:

Okay.

Jon:

So I'm using that as kind of its as the as the base and then sort of customizing on top of that, customizing, you know, colors and adding in new components. And yeah, it's been great. I mean, it's hard to find one that sort of does everything and doesn't look too generic that you can still kind of customize enough. I didn't really feel like building out an entire framework Yeah. Myself for this at this moment.

Jon:

You know, at some point, maybe down the road, we'll do that. Yeah. But right now, this is this is great.

Helen:

So it looks similar it looks similar to Bootstrap. It's got a bunch of kinda starter layouts. It's got all your elements, buttons, containers, icons, all that stuff.

Jon:

Yeah. Icons built in, you know, forms, and it's a bunch of little different components that you can hook together to to build a nice interface. It's fairly responsive for mobile. It's got a lot of nice, like, little JavaScript interactions built into it. Yeah.

Jon:

I've been liking it. I mean, you know, it has some downsides, like anything you're, you're gonna be kind of stuck at some when you use any sort of framework like this, you're sort of, like, stuck doing a few things their way, which is kind of unfortunate. But

Helen:

Yeah. Yeah. But you gotta get started somewhere. That's Right. That's really the main thing.

Helen:

You know, with any kind of decision like this, yes, you wanna do some research, but don't, like, be worried about it forever or be thinking about it forever and not ship anything. Just put together what you think is a pretty good stack and then build something. And, obviously, if you run start running into problems, switch it up. But you Yeah. It's way more important that you get something out.

Helen:

And there are I mean, Mailchimp was built in PHP, and that code base has gotta be super old now. There's probably some really hairy bits to it that are a pain to work on inside of it. But they got started, and, you know, they're they've been a really profitable business for a long time, and they were doing PHP before there's any any frameworks. So

Jon:

I come I always come back to Stripe as an example of this because, you know, everyone now regards Stripe as, like, this really design forward company and all their designs are beautiful. Their documentation is beautiful for their API and how to integrate with it. When I first started, when I started using it first, like it was garbage. The design, the dashboard was terrible. The API documentation was pretty good because they sort of started out focusing on developers, which is an interesting, I think, because they were developers themselves, but, but obviously like if the dashboard was built by a bunch of developers, you didn't know any design.

Jon:

They hadn't hired designers yet. Yeah. And it was like functional, but just really ugly. And it's, you know, matured over the years. And I now it's just like really, really, really well designed site dashboard and everything.

Jon:

I mean, it's great. Yeah. So, so like that's, I don't think the success of your business is going to depend on like having the most beautiful hand hand rolled framework and design Yeah. Right out the door. So

Helen:

Yeah. Exactly. Exactly. Cool. Well, this is great.

Helen:

I know a lot of you folks were requesting this. If you have more questions about kind of the technical side of things, be sure to hit us up on Twitter. We're at transistorfm. You can DM us on Twitter and on Instagram. We are transistor.fm there, and you can email us shows at transistor.fm.

Helen:

And and, apparently, you can all also reach us by live chat

Jon:

on Yeah.

Helen:

Our coming soon page, transistor.fm. John, where can people find you on the web?

Jon:

I'm on Twitter at John Buddha, j o n b u d a, Instagram at John Buddha, but I rarely use that Website, johnbuda.com. Send me an email.

Helen:

Cool. And I'm, m I justin on Twitter and Instagram. Thanks so much again to our first sponsor, bullet train dotco. Please go check them out. Let them know that you heard about them on the show, and we will be back next Tuesday with another episode.

Helen:

See you then.