DEV Community

FounderQuest

The Bootstrapper's Guide to the Ninja Launch

Show Notes:
Links:

Cobol On Cogs
Square Hole TikTok Video
Hook Relay
Universal Honeybadger.js
FounderQuest Accounts Episode
Write for Honeybadger's Blog

Full Transcript:
Ben:
Did you see that tweet I posted in the channel, the TikTok video about the shape sorter?

Josh:
It was so good.

Starr:
So good.

Josh:
Laughed really hard.

Ben:
So good. I just loved the voice of the person doing the shapes.

Josh:
Yeah.

Ben:
"And where do you think this one goes?"

Starr:
So it's a shape sorting thing. And they've got all different color blocks, like a kid's toy and you're supposed to match the shape to the hole in the top of the bucket, but it turns out all of the shapes just fit inside the square hole. And so-

Josh:
That's why there's a hole in there.

Starr:
Yeah, so it's a reaction video. This woman's watching it and she's just getting more and more dismayed as he just puts everything. She's like, "No, put it in the triangle hole," and he's like, "No, this one goes in the square hole." So I think this is a metaphor for how users as well use Excel for every single task in their business.

Ben:
Yeah. So I'll have to put the tweet in the show notes, but that was funny that I found.

Starr:
Yeah, that's really good. I like-

Ben:
Well, I am... Go ahead.

Starr:
I was just going to say I like watching TikTok, but I'm like I'm too old to actually watch TikTok, so I just watch video compilations of TikTok that somebody shows me.

Josh:
Yeah, TikTok on YouTube.

Ben:
Saying, yeah, I watch TikTok on Twitter.

Josh:
Twitter. Yeah.

Ben:
So, yeah.

Josh:
Yeah. That's an interesting thing about TikTok, because it's like half the people who enjoy the videos aren't even on the platform or whatsoever.

Starr:
And that's just the internet.

Josh:
But these are everywhere. They're all over Instagram. I guess, yeah, it is.

Starr:
I just want to know like how much of... So there's got to be a number out there, like the total traffic on the internet per day, like total bandwidth use. How much of that is just sending around videos and screenshots of other parts of the internet?

Josh:
Yeah.

Ben:
Yeah.

Josh:
Well, I guess like the same thing happened with Vine.

Ben:
It's like marketing attribution. Right? You never know where your traffic is coming from. Like TikTok, they have no idea where the video is actually being seen.

Josh:
Yeah.

Ben:
Like, is it on TikTok? Is it on Twitter? Is it on Reddit? Who knows? It's got to be tough-

Josh:
They were pretty-

Ben:
... for their engagement numbers, you know?

Josh:
They were pretty smart to put their watermark on the videos.

Ben:
Totally.

Starr:
So you were about to tell us how great you're feeling, I think, Ben?

Ben:
Yes. I'm so excited. Today has been a great day so far. I mean it's early. But-

Starr:
What happened?

Ben:
Well, I finally, after many, many weeks of having this on my to do this, I finally got it this week and this morning I finished off putting together everything required for the Heroku add-on for Hook Relay.

Starr:
Oh, awesome.

Josh:
Nice.

Ben:
Yes.

Starr:
So Hook Relay is a product you've been working on that adds sort of like push button reliability to people's implementations of webhooks. Am I right?

Ben:
That's correct.

Starr:
Did you pivot?

Ben:
I haven't pivoted yet. No.

Starr:
Okay, good.

Ben:
And as I was writing up that Heroku, for Heroku, of course you have to like put in a description of what your thing does and you have to upload some screenshots and you have to do pricing. And all that stuff was basically done. But the last thing to do, I think I kept on putting off because it's just not my strong suit. And so, you know how that goes, you just do the things you'd like to do over the things you don't like to do. But the last thing was putting together the Dev Center documentation page. So each Heroku add-on needs to have some documentation at Heroku, it tells you how to use the ad-on and how to provision it, things like that. And it's pretty straightforward and simple, but I'm just not a big fan of writing stuff like that.

Ben:
And so anyway, I kept putting it off. But bonus was Kevin had put a quick-start page together for Hook Relay, like months ago when we launched the product, which is basically like, "Here's how you use it," which is basically the same thing that Heroku wants for this page. So I copied and most of his stuff and just shifted a little bit. But the thing that kind of threw me this morning as I was finishing it off, there's a field on the Dev Center page. There's this big text blog where you put your documentation, and that's fine, but there's a field above it, and it says meta description. And I was like, what's supposed to go in there. I don't know. I mean, because there's a separate spot for doing it like you're marketing blurb. Like, "Hey, give us the one line description of your add-on that's someplace else." And so I'm like, so what is a meta description? I don't know.

Starr:
Is it like for SEO?

Josh:
Like a meta tag.

Ben:
Well, I'm not exactly sure still, but when I saved the content, like the big blurb of text that will make up the page, it took the first line of the content and put that in the meta description. I'm like, okay, so, I'm thinking maybe this is a TLDR. So I tweak that a little bit. And as I was tweaking that, I came up with a tagline for Hook Relay that, "Now, I'm no marketing specialist, I'm no guru. I'm no copywriter either. But-

Josh:
You're just the guy on podcast.

Starr:
... we're going to workshop this real time."

Ben:
But I'm pretty proud of what I came up with here.

Starr:
Ratings are going to go through the roof.

Ben:
And so here's the tagline. And Kevin helped me tweak it a little at the end. It is just, "Send a post request and let Hook Relay handle the rest."

Starr:
Nice.

Ben:
Yes. And Kevin's suggestion was that rest should be all caps because of course... Yes.

Josh:
Of course.

Ben:
Yeah. It's the rest, you know?

Josh:
There you go. I can see. Yeah.

Starr:
There you go. Yeah. The catch is that like post and delete requests cost extra, you got to pay more for those.

Ben:
Right. So there we go. So now I'm feeling pretty good. Like Hook Relay is signed, sealed and delivered. It should be on their Heroku marketplace next week. Somewhat by the time this drops, it should be there.

Starr:
Awesome. That's great.

Josh:
That's, yeah, really exciting. And don't we like have a customer or something?

Ben:
We do. We actually have a paying customer. That's pretty exciting.

Starr:
That's amazing.

Ben:
So, that's pretty impressive considering we haven't really done any real marketing or advertising for it. And I've talked about it on the podcast and I tweeted about it a few times, but it's been pretty quiet. We've done that on purpose. We're kind of laying low to do the gradual buildup, make sure things are working before they ship to the masses, but yeah-

Josh:
We did try to get a customer. That's the point.

Ben:
Yeah. We did. Yeah.

Josh:
Yeah. That's how I would've liked to get the first customer.

Starr:
Yeah. Can we get just trademark the term, like Ninja launch.

Ben:
Oh!

Starr:
I'm sure that people have done it. So it's the kind of launch where you just like sneak up on people and they don't see you coming, then you just suddenly jump out and you surprise them and convert them.

Ben:
I like it.

Josh:
Is it different? How is it different from the stealth launch? I'll have to figure that out.

Starr:
Well, it's about Ninjas-

Josh:
Is it like the bootstrapper version of the stealth launch? Because I feel like if you're a stealth launch, you have to have a bunch of VC funding and like be secretive for at least two years for a stealth launch.

Starr:
Yeah. I think the stealth launch is more VC.

Josh:
The Ninja launch is like you bootstrap it and like, yeah, you six months bootstrap it and then it's, or maybe a couple months even ship it.

Starr:
Yeah. I don't know. A stealth launch maybe is like you know that they're out there, but you don't know where they are or what they're doing.

Josh:
Yeah.

Starr:
It's like you just have no idea anything's going on.

Ben:
Yeah. I like the idea that bootstrapper versus a VC, because I think stealth launch, I think like stealth bomber, just coming in and bombing the crud out of something. But a Ninja, like it's much more personal. He'll come up and kill you one on one.

Josh:
Yeah.

Ben:
Right?

Starr:
Exactly. Exactly.

Josh:
So, it's more about hand-to-hand combat.

Ben:
Exactly. It's the personal touch.

Starr:
We don't really assault people.

Ben:
We're actually pacifists at Honeybadger.

Starr:
Yeah. That's true. I just feel like I have to... I don't know why. I just imagine there's somebody out there who's taking us literally for every single thing we say, so I just always want to add disclaimers.

Ben:
Then there's the cat launch. And that cat launch... The cat launch.

Starr:
That's where you build a trebuchet and the whole internet gets this off at you.

Ben:
I was thinking more of that's where you go out to your kitchen in the morning to get some coffee and you step on a hairball.

Starr:
Oh yeah. And that's for SaaS products.

Ben:
Yeah, it is. Right? It's like, "Oh wow, there's a thing."

Starr:
That's kind of how we did Honeybadger. Right? It's like, Airbrake was our hairball. We just stepped on when we were trying to do something else. Well, good, I'm glad you're having a good day in that, Hook Relay is doing well. What's the next step on that, do you think?

Ben:
That's an excellent question. So I was reviewing the competitive landscape again this week and realized that you know what? We should make some tweaks to our pricing. So now that we have our first paying customer, assignment change all the pricing. So that's probably going to be next week. I'm going to be taking a look at that.

Josh:
Naturally. Yeah.

Ben:
And then-

Starr:
I mean, it took us like a year to do that for Honeybadger. So I'm glad that we're just getting that over with quickly.

Ben:
Right.

Josh:
I love it. Like this time though, it's like in reverse. It might be in reverse because like we're billing on more usage or like rate right now. And we're thinking maybe it would make more sense to bill on something, some other vertical or whatever.

Ben:
Yeah. And then also figure out where, how we want to really launch. Like, how are we going to talk to people about Hook Relay? We've got to become the marketing experts.

Starr:
Yeah. It kind of makes sense maybe to not bill on rate, like because I imagine that a lot of the people who are probably going to be interested in Hook Relay or people who are building new things. I don't know. Maybe people are going to go and retrofit to existing things, but I can imagine it being really useful. It's like, okay, you're building a new product, you want all these features, you don't have time to implement it yourself because you have a million things to do. And so you're just going to bolt this on there and your traffic levels are... You're getting real value, so you should pay for it. But your traffic levels are going to be pretty low to begin with.

Ben:
Yeah. The contrary view to that is like Amazon, they have generous free tiers on most of their services, if not all. Right?

Josh:
Hmm.

Ben:
And so you can start out and get a lot of value for free. And then everything is like strictly usage base on even tiers for the most part. So, everything you do is a transactional fee. So you can go the other way and go from what we have now tiers of transaction levels to just straight old, like per transaction or per 1,000 or whatever. So yeah, a lot of things to think about.

Josh:
I feel like Amazon can get away with that free, like giving away the farm.

Ben:
Right.

Josh:
Like that's kind of part of their model.

Ben:
Right. Yeah. Well, when you have the biggest infrastructure on the planet, you can afford a little bit of it. Right?

Josh:
Yeah.

Starr:
So, speaking of Amazon, I'm wondering there's that ruckus lately about the Elasticsearch licensing. And I'm just wondering if that affects us at all? I think-

Josh:
Someone should explain that to me by the way, because I started talking about it in chat, but I didn't have time actually to really-

Starr:
Yeah. Could you explain it, Ben, because I assume you know more about it than I do? I could probably get 80% right.

Ben:
Well, I'll probably get some of it wrong, but a few years ago Amazon released their Amazon Elasticsearch Service. And it's important to note the name because Elastic, the company, that is the sponsor of Elasticsearch, the product, has a trademark on Elasticsearch. And so one of Elastic's complaints against Amazon and AWS is that they're using the trademark without permission. So, that's one thing. And that's kind of a big thing in my opinion. You're not supposed to be stomping on people's trademarks.

Ben:
But the thing about trademarks is there's timing involved. And so I don't know exactly the timing was, that they're getting to trademark or AWS is actually using that name, et cetera, et cetera. So I'm not going to get into that, but you also have to defend your trademark. And it's not exceptionally clear just how defending Elastic was back when Amazon launched this because the founder of Elastic, he's been talking about this on Twitter this week and he's like, "Well, we just want to keep our heads down and focus on the product."

Ben:
I'm like, "Okay, but there are certain legal requirements to defend trademarks," et cetera. Anyway. So, the thing that really triggered all this was that Elastic changed the license of Elasticsearch, the product, this week from the Apache license to a, what some people consider a non-open source license, which is the, is it called a server si- I can't remember what it's called. SSPL, I think. Basically, it's a license, same thing that MongoDB did, and Redis did, basically saying, "Anybody can use us except for companies who want to just resell our product, like by the way, Amazon." So, that just threw a match into the tinderbox of Hacker News. And people are like up in arms about Elasticsearch or Elastic doing this to Elasticsearch and how it's so terrible.

Ben:
And the internet is going to burn in flames because of this. And I mean, it's their product, they can choose to do whatever license they want. A lot of people are complaining about, "Well, the contributors contributed with a certain understanding and now you're yanking the rug out from under them." It's like, well, Elastic 7.10 is still a Apache licensed, it's still out there. And of course surprising no one, AWS announced yesterday that they are going to your fork Elasticsearch at Apache 7.10 that allows the Apache licensed version and they're going to have their own distribution.

Josh:
Predictable.

Starr:
I was wondering if they would do that because we are a customer of AWS Elasticsearch Service. And I just didn't want it to go away because it's been so hard to get a decent search thing that doesn't just like crash all the time. And this isn't I'm not blaming you, Ben, I'm just saying this is like a complicated thing. And it's like you finally found a system that doesn't take just a ton of work to keep alive. And I was just didn't want them to take it away from us.

Ben:
Yeah, totally. Yeah. And it's funny, because Elastic is really complaining about AWS because Elastic is making money on their cloud version. That's the whole point. And they don't not necessarily make money on their open source version. And the thing is like, we've tried, okay, I should put a disclaimer, this is just one person's experience. Please don't sue us. But we tried the Elastic cloud service, comparing it to the AWS Elasticsearch Service. And frankly the AWS service was better for us. Like it just worked better.

Ben:
Now, it's it's a little bit behind, like they don't, they don't always have the most recent version. They don't have all the coolest, latest features like Elastic cloud does because, well, I mean, Elastic is the company that runs that, but yeah, it's been rock solid and I haven't had to babysit it. Like we've had other solutions in the past, like you said, so, yeah. I'm certainly glad to have AWS handle that for us. And sorry, Elastic, I mean, you just got to compete, I guess.

Josh:
What was Elastic's actually, like actual end game with the license change, do you think? Were they trying to get the big customers who are reselling their service to pay them licensing fees or something to use it? Or were they just trying to like cut them off? Or, I mean, they must have seen this coming.

Ben:
Yeah.

Josh:
You know?

Ben:
Yeah. I would guess they're angling for a partnership, some sort of revenue share because that's, I think that's what they're doing with Google Cloud and with Azure.

Josh:
Okay.

Ben:
That's what Reddis has done with Google Cloud and Azure. I mean, I don't know the details obviously, but they say the word partnership. And so I assume that means some sort of revenue share. But who knows what? I mean, maybe it's a licensing fee. I don't know. But I'm guessing that was their goal. Like, "Let's get some revenue from AWS using our product."

Josh:
Do you know if were they like targeting AWS specifically? Or was this just like more general? Like, "We really should get our people to pay when they're going to go ahead going to rebill," or whatever?

Ben:
Well, they have put in place recently partnerships with Google and Azure.

Josh:
Okay. So Amazon is like the biggest, I mean, like-

Ben:
So, it's basically talking about Elastic.

Josh:
There's no one else really.

Ben:
Exactly. Yeah.

Josh:
Like, who else are you going to care about?

Ben:
Right.

Starr:
Do you think that this is a result of like talks breaking down with Amazon? It seems like if you wanted to have a partnership, you would approach them before you did anything directly.

Josh:
Yeah.

Ben:
That seems like a fair analysis. Yeah.

Josh:
That's interesting.

Ben:
Yeah. So I can, I can totally relate about the trademark issue. Like, back to that, as I said in our Slack, if Amazon tomorrow released an AWS Honeybadger service, I'd be a little cranky about that because we do have a trademark on Honeybadger. And so I would be pretty upset I guess, but again, I don't know, like when exactly they got that trademark and if they called up Amazon say, "Hey, by the way, this is bad," they're complaining about it now, but that was like six years ago. So, yeah.

Starr:
That's true. I may be willing personally to consider licensing the Honeybadger trademark to Amazon, depending upon the agreement we come to. I just want to put that out there, in case JB is listening.

Josh:
If it was just the trademark thing, they could have just... I mean, because they didn't... Like ElastiCache is Redis under the hood, isn't it?

Ben:
Yeah. Yeah. And that's-

Josh:
So they don't call it AWS Redis.

Ben:
Right. And that's the thing. The AWS has been pretty good about that. Their document database is MongoDB-compatible, right?

Josh:
Yeah.

Ben:
And then they use Solar. They have, I can't remember it's called. It's called Cloud Search or something, but that was based on Solar. And then they had, like you mentioned their ElastiCache is based on Redis MemcacheD and now they have a Cassandra compatible thing. Can't remember what it's called, but it's not called Cassandra. It's called something else. Some key spaces or something. So yeah. I mean like product after-

Josh:
It's called something else.

Ben:
Yeah. So I don't know. So it seems like maybe there wasn't a trademark issue when Amazon actually initially launched this, because you'd think that they would have done the same thing with this one I did with all their other services that don't use that name. Right?

Starr:
Yeah. Maybe they figured that Elastic since it's just a word like Mongo isn't really that or like Redis is like this very specific thing.

Ben:
Yeah, true, yeah, that's a good point. Got to be careful when you trademark because yeah, generic stuff doesn't work.

Starr:
Yeah. I don't know. I read the legal briefings that Amazon did in the whole when Parler was trying to sue them-

Josh:
Yeah, it was Parler.

Starr:
... and I really haven't thought of responses and just like, Holy crap. I never want to be in a legal battle with Amazon because they were not joking around. Like they were not taking prisoners. They just like came and just use a nuclear bomb against this little guy with a slingshot.

Josh:
For real.

Starr:
I mean, yeah. Justifiably so, I'm not saying that they shouldn't have, but yeah.

Ben:
And maybe that's what Elastic figured. Like, there's no point in trying to go legal against AWS. And so we're just going to ignore it and try and build our business. And okay, that's a valid strategy, but then you can't undo that. You can't remake that decision six years later.

Josh:
Yeah. No, there's like a fork of your product in the world that's backed by the largest company in the market.

Ben:
So it's interesting times. I should disclose that I am a shareholder in Elastic and I am a shareholder in Amazon. So you know what? I hope they both win.

Josh:
I'm sure this conversation is definitely going to influence one of their stock prices. Ben Curtis makes disparaging comments about Elastic.

Ben:
I've been really interested though, as I've been reading on this past week, like thinking about, and we've talked about this before, open source businesses or businesses that try to have an open source component, how does it even going to work? Red Hat was a big success story. And it seems like since then, I mean, Mongo has been, I guess, somewhat successful, but the whole notion of open core, I think is in my humble opinion, it seems like it's not happening. Elastic tried it before they had their cloud, they tried adding additional, like amazingly enough. And I just so disagree with this approach, but they did it. The authentication piece was a sold add-on to Elastic. Like, "If you want to use your name and password, you got paid for that." It's like, what? But anyway I digress. It just seems like open core, not happening. And then suddenly-

Starr:
I've got to throw it out there, GitLab seems to be doing okay.

Ben:
Yes. Yes. And that's where I was going next. It seems like the real solution that all these open source companies have landed upon is hosted. Some sort of licensing, whether that's self-hosted licensing or it's a SaaS. And then that's why you see like Mongo and Redis and Elastic and having these licenses that say, "You can't host us because we're hosting us, that's our business," you know? And I don't know. If you're competing against the number one hosting provider in the world, and your only businesses that, and they have 50 other businesses because they have a huge product offering, well, who's going to win in the long-term? I don't know. Anyway, I don't have the answers. It's just interesting thoughts.

Starr:
Yeah. And just one thing that, correct me if I'm wrong, Ben, but one real advantage that AWS has is that if you use their Elasticsearch Service, it's like, you can put it in your virtual, private cloud, like you can use all these networking tools AWS provides, you can use all these extra services and it's going to be in the right data centers so that transfer between the two things it's fast. Because you don't want your fricking database in a different state than your main application. And it's just, I don't know, that piece is so easy for just stuff to stay inside the AWS ecosphere, and then it's just more work if you don't.

Ben:
Yeah. True. True.

Ben:
Yeah. Like the authentication stuff is handled. Most of this stuff has, IM permissions that are baked in. Now, most of the companies like Mongo and Elastic, they do have, you can deploy to whatever region you want. So the latency is typically not a problem. But yeah, the VPC thing is definitely an issue. Like, and for us, for me, in particular, like not having to get another vendor on the approved vendor lists for our GDPR stuff, oh, so nice.

Ben:
Like dealing with compliance every year, I have to review all of our vendors and make sure they're all doing the security thing. And like you know, AWS is fine. That's just a checkbox. But if you have some other vendor like Mongo, it's like, okay, well, I have to justify them and I have to put them on my approved list, et cetera, et cetera. So, if AWS has a service, I'm going to use it. So we're not going to be launching a database product anytime soon, I guess, is the moral of the story.

Josh:
No.

Ben:
No, there will not be a Honeybadger database.

Starr:
Which one of those... There's one of our competitors that pivoted into a database?

Josh:
That was Influx.

Ben:
Yeah, Influx. They made InfluxDB. Which I think that's worked out for them. They seem to be doing well.

Josh:
They seem to be. Yeah, they do.

Ben:
Despite my, on again, off again love, hate affair with Influx, as we've tried to use it a variety of times. But you know what I've learned over the years? We've worked together a long time and we worked together back when Mongo in particular was pre-1.0 And we tried using it. I think what I've learned is don't use pre-1.0 Software.

Starr:
Especially databases.

Josh:
Yeah.

Ben:
Especially databases.

Josh:
You want your database to be like 10 years old.

Ben:
Right. Yeah, yeah.

Josh:
Yeah. So now it would be the right time to us to go all in on Influx.

Ben:
Right.

Starr:
Oh my God, has it been that long?

Ben:
Yeah, really?

Josh:
Not quite that long. It's getting close. Yeah. Because probably getting there.

Starr:
Honeybadger is going to be coming up on like 10 years old. That's wild.

Josh:
What is it like next year?

Ben:
Next year.

Josh:
Yeah. This will be nine.

Starr:
Now it's 2012.

Ben:
Right.

Starr:
Yeah.

Josh:
Yeah. Wow.

Ben:
It's been a long road.

Starr:
That's wild. Here's to another 20 years because I have no idea how I'm going to apply to jobs if I have to with... It's like, yeah, I was just my own boss for like 15 years. What kind of a reference is that? You can't give that to people. So, we just got to keep this train rolling.

Ben:
I don't know. Maybe we just go work for Stripe. That worked for Patrick McKinsey, you know?

Starr:
Oh, there you go.

Josh:
Yeah.

Ben:
But yeah, it'd be-

Josh:
I don't know if I have that much ambition.

Ben:
He is a bit of an outlier. That's true.

Josh:
I don't know. Honeybadger's got me hooked pretty much at this point.

Starr:
I was literally-

Josh:
I'm just hooked on that recurring revenue.

Starr:
Hooked on that recurring revenue. Not that I have any plans to do this. And I was like, "If I had just had to get a developer job, it's just like, what if I just learned Java?" Just was like, "I'm just going to put my 40 hours in to Java and I'm just going to make a ton of money and just not care at all about the work." And I was like I don't think I would do it, but for a second it was like that seems viable.

Ben:
It's definitely a grass is greener kind of situation. I think if I were thinking the same thing instead of Java, because I cannot buy Java for whatever reason. I think it would .NET. And I think I would go find a job at a bank.

Starr:
Oh there you go. There you go. Yeah. I just know Java devs make like tons of money if they're in the right field, if they're in the right industry.

Ben:
Well, if you want to go old school, learn COBOL. Right?

Starr:
I totally would. I totally would. I would totally learn COBOL.

Ben:
Or become a mainframe programmer.

Starr:
Yeah. That actually sounds like a lot of fun.

Josh:
I can see that. I mean, I could see if you wanted to do that, I could see it working out because there's got to be plenty of people that are looking to retire and there's no one to take their place.

Ben:
Yup.

Starr:
Yeah, exactly. I wouldn't want to have any deadlines because that would be incredibly stressful. Here's this 50-year-old legacy application written in COBOL and you've got to figure out how to make a major change to it by next week. It's like, that would be hell and just impossible. But-

Josh:
Do they really make major changes to them though? That's the question?

Starr:
I don't know. I don't know.

Ben:
Yeah. I guess like if tax laws change significantly, you might have to or something, but yeah, you think most of it would be like more maintenance work.

Josh:
Yeah.

Starr:
Why don't you guys shared this COBOL on cogs?

Ben:
No.

Starr:
I assume it's a web or it's a rails inspired. But it's a web framework and it is in COBOL and the site is run by it. So there you go.

Ben:
Wow. INDEX.HTM, all caps. Nice.

Starr:
I know.

Ben:
Nice.

Starr:
I know. They're not messing around.

Ben:
Oh, I'm loving it. Wow! Thank you for sharing that.

Starr:
You're welcome.

Ben:
I'm going to spend the rest of my day just looking at this website.

Starr:
You are more than welcome.

Ben:
So one of the things that's made this week just fantastic, and a call out to the idea of actually having goals, we have our weekly check-in that comes in from Basecamp every Monday morning. It's like, what are you going to do this week? And I try to be pretty vague in that because I'm like, I don't know. But recently I've been trying to be better about that, be more specific and to actually come up with like, okay, there are three things that if I accomplish this week, I will be happy. Even if like, they are small things, if I get them done, I'll be happy.

Ben:
And so this week I had two things with a third bonus that I didn't share and actually did all three. So I was pretty stinking excited. So one was the Hook Relay stuff which I did. Wrapped it this morning. Two was doing a test of our new Elasticsearch cluster using the scientist Gem from GitHub. So basically allows you to deploy your site with two different code branches. In our case, checking the performance of our existing Elasticsearch cluster versus the new Elasticsearch cluster. And so basically just runs through both branches of code and then tells you which one is faster. So I did that. And then, spoiler alert, the new cluster is faster.

Josh:
Nice.

Ben:
And also wanted to move our storage of notices from Postgres to DynamoDB. And I got that started last night. I mean, it's going to take a while to backfill.

Josh:
I was going to be like, "Ben, that's shipped?"

Starr:
I know. I was just, yeah, I was just like, you're just going to slide that one in there.

Josh:
And I finished up the branch and shipped it.

Starr:
Just migrated to a completely different database system for the most intense part of our application.

Ben:
Overnight just migrate this terabytes of data, and then we're good. Right?

Josh:
So you got to start on it at least.

Ben:
Yes. Yeah. So I felt so good. Because the things I set forth to do this week actually got done. So I'm just I'm pumped.

Starr:
Good. The tweet I was thinking about sending you last night, but I was too tired. So but so I'll just explain it to you.

Ben:
Okay.

Starr:
Anyway, it was the guy quote tweeting an old tweet from 2018 or something. And it was like, "Do yourself a favor if you're making a SaaS product, users and accounts should be separate from the very beginning." And it was a quote tweet yesterday where the guy was just like, "I just finished the refactoring that was a result of two years."

Josh:
That sounds just like us.

Ben:
I replied to that tweet. I'm like, "Yep. Amen. Here's our blog post about doing the exact same thing. Yeah. We took longer than two years though." I saw that tweet. So, that's pretty funny. Yeah. I don't even know how many years I had that as a goal, but yeah, that was one of the banner things at 2020 actually like, "Hey, got that done."

Josh:
Yeah. We forgot to mention that in the last, you don't remember. That was a big chunk of work.

Ben:
Yeah. So save yourself a lot of hassle, make users separate from accounts. Period. The end. No question about it.

Josh:
Yeah. We'll have to figure out what episode number that was that we... We did like an entire episode on that late last year, I think.

Ben:
Well, y'all done some fantastic work this week too. Right? I mean, Starr, you've been nailing the blog stuff. Josh, you got a bunch of JavaScript stuff done.

Josh:
That blog, we've got a nice blog. I was looking at that. I was showing Kaitlin actually my wife the blog, because she hadn't really looked at it. And she was looking at our author avatars and everything. And yeah, I was like thinking about how much we've actually put into that blog, like money and just all the great people that have written for us. And it's pretty cool.

Starr:
Yeah. Thank you. Yeah. It's working out well. It's nice to kind of just have it humming along and sort of make it more, just kind of making it work better continuously. One thing I want to work on next week is to, and I got started on it this week, which is to actually have our posts that are... We have a huge backlog of posts that are written for us. And I would like to actually get those set up in a calendar where they're automatically published every week because-

Josh:
Oh yeah.

Starr:
... I currently just like prepare one every week and publish it. And so if like something comes up, people try and overthrow the government or anything like that, and I get distracted, then we don't have a blog post that week, which leaves people super bummed out, because now there's two things wrong. The government's being overthrown and they don't have a blog post.

Starr:
So yeah, this week I started making it so we can automatically publish blog posts and I crashed up against the rocky shore a little bit of trying to get scheduled actions running on GitHub. So I don't know, I need to check and see if it ran. Last time it was supposed to. And hopefully it did. And if not, I will just try random crap over and over again until it finally works.

Josh:
So wait, so how does the action actually work? Does it prepare the article somehow or does it auto merge the PR or something?

Starr:
Oh no. No, what it just does is, okay, I should back up and explain. So use a static site generator for a blog, which is great in a lot of ways, but also make certain things just like really bizarrely difficult. And one of these bizarrely difficult things is scheduled posts. So when we publish our blog to Netlify, our blog is built by Netlify and it's like, okay, which posts are published. And those will be the ones that it displays from then on, until we rebuild the blog. And there's no built-in way to periodically rebuild it or rebuild it based on when posts are supposed to go out.

Josh:
Got you. Okay.

Starr:
So essentially, how this is going to work is we've got a job that's going to run on GitHub just because that's convenient or was supposed to be convenient. It's going to run every day at midnight or 1:00 AM or whatever. And it's just going to hit a webhook on Netlify and trigger the site to rebuild. And when it rebuilds, well, middleman or static site generator, you can have posts scheduled in the future and it won't publish those. So if there is one that needs to be published, it'll just go ahead and build that one and not the other ones that are still in the future.

Josh:
Yeah. That's a cool way to do it. I hadn't thought of that. Yeah. That's nice.

Starr:
Yeah. I mean, honestly, it's not nice. It's terrible. It's really crappy. Why am I writing config files for GitHub just to post this schedule posts on my fricking blog?

Josh:
In terms of if you're going to have to build that though, just a single job that just hits like a webhook to rebuild it once a day is probably about as simple as you could go.

Starr:
Oh yeah, yeah. I mean, yeah. And it's nice that GitHub provides actions.

Josh:
You could just put it in the tab on your personal computer.

Starr:
Oh, I thought about it.

Josh:
On your iMac.

Starr:
I thought about it, but then I've got to make sure it's running. I got to make sure it's open, you know?

Josh:
Yeah.

Starr:
I don't know.

Josh:
You get like a little raspberry pie.

Starr:
That's my next stop. That's my next stop.

Josh:
You got to get a blog publishing.

Ben:
Buy a mainframe, learn COBOL.

Starr:
Oh, there we go. There we go.

Josh:
Yeah. So we're switching to WordPress then?

Starr:
No, no, WordPress is even worse.

Josh:
Yeah.

Starr:
There's no blog platform that is perfect, I guess. I don't know. Although, I really don't know why Netlify just doesn't let you say rebuild this every day. It's kind of silly that they don't.

Josh:
Yeah. That would be cool.

Ben:
Yeah. There is a forum post where a bunch of people are asking for exactly that.

Starr:
Yeah. And there's just like use Zapier and it's like, "I'm not going to pay Zapier to hit a webhook once a day. That's ridiculous. You could also have GitHub to do that.

Ben:
Yeah. You could also use, if GitHub won't cooperate, you could also use the AWS, their events, the cloud events, because they have a scheduled event thing and they could just trigger a Lambda, which could call the event.

Starr:
Oh, that's a good idea. Yeah. That might actually probably be-

Ben:
They actually have a GitHub repo for a bunch of Cron jobs that run in Lambda.

Starr:
What?

Ben:
Yeah.

Starr:
What?

Ben:
Yeah.

Starr:
Okay. You're just over here living in Jetsons land and I'm living in Flintstone land.

Josh:
But I used the Cron recently too. The Cron action on GitHub to automatically prepare a release for our JavaScript package once a week. So, if there's like merge dependency updates and stuff or if there are a change log additions, it calculates what the next version should be, and then submits a pull request that I just merge and then it all gets released to NPM and everything. So-

Starr:
Oh awesome.

Josh:
... fully automated, which is like that's been my dream for a few years now. So pretty stocked I finally got it working.

Starr:
Well, I'm glad to have reports that actually it's possible to get the Cron working because I got it working one time. I think the issue with it is I think when you make changes to the file, there's something weird about GitHub picking up those changes. It may not happen immediately or maybe it takes a little while for it to update itself. And so meanwhile, I'm like I told it to run this thing every 10 minutes so I could test it. I uploaded it 20 minutes ago and it hasn't run. So maybe GitHub has a longer term outlook on life than I do.

Ben:
It's really in Zen mode.

Starr:
Yeah. But it will work eventually.

Ben:
Cool.

Starr:
Yeah. And you Josh, you did a blog post about our new JavaScript library?

Josh:
Yep. Universal Honeybadger JS NPM packages out, and our documentation is updated. I think I got all the projects that we're depending on the old Honeybadger JS NPM packages are updated and also new releases for them. And I'm happy to have this project hopefully behind me. But I'm sure there will be some bug reports and stuff coming in as there always are. But so far it's been quiet.

Ben:
Wow, congrats.

Josh:
Yeah. Thanks.

Starr:
Congrats on that. It's been a big deal.

Josh:
Yeah, it was a large chunk of work. And I think it really it will set us up really nicely for the future, I think to have, I mean, we're from a maintenance standpoint, we're going from two packages down to one, but also there's a lot of overhead and having to duplicate code and now the code is all shared and only the environment specific parts are built in when you request it for no JS or for a browser. Which means you can now also use it for server side rendering environments where it's running on both the server and the client, which is still just kind of blows my mind a little bit that people do that, but there you go. It works. So it's a lot nicer now. And it's what you're expecting when you want to do that. So pretty excited.

Starr:
Yeah. That's amazing. Hopefully, it'd be appealing to people doing more sort of JavaScript as their main thing.

Josh:
It's just it's hard to stay excited about these projects when I've literally been building the same thing over and over and over again for eight years. These client libraries, it's either building new ones, in different languages, or rebuilding them when a language changes so much that you need to just completely start with something fresh. And after the 10th rewrite, basically, it's you're just on autopilot. So but there were some fun parts. I definitely learned a lot about JavaScript. I learned TypeScript. So I'm a TypeScript developer now.

Starr:
Oh, nice. I mean-

Ben:
So we should give you a raise?

Josh:
I know right?

Starr:
... lots of developers do cones and your cone is just writing exception notifiers.

Josh:
Exactly. Yeah.

Ben:
Next week, COBOL.

Josh:
I'll let Starr build the COBOL notifier.

Starr:
Sure. Yeah.

Ben:
I mean, if there's a web framework for COBOL and now there's got to be a Honeybadger client, right?

Starr:
Oh, of course.

Josh:
Mm-hmm (affirmative).

Starr:
Of course. I'll get right on that. We'll get right on that.

Josh:
Where we've react native is coming. We have our next focus and then I really do want to, I say this, and then I'm like, "Oh yeah, well, I'm like, now I want to go all into mobile, all the native platform." So, but I'm not going to build it myself. I'm going to hire some genius developer to just whip it up.

Ben:
Looking forward to that. And next week we have our conclave.

Starr:
Oh yeah.

Ben:
Is that time of the quarter? We'll get to plan stuff.

Starr:
It is. I'm interested in seeing how it sort of pans out.

Ben:
Yeah. A lot of exciting planning to do. I think our quarterly action plan is going to be full to the gills this time.

Starr:
Yeah.

Josh:
Yeah. Will we be coming up on a year since our last in-person conclave? When is that?

Starr:
I think so, yeah.

Josh:
It was this quarter? Because we skipped the one for Q2, right?

Ben:
Yep.

Josh:
Yeah. It's been a while.

Starr:
Yeah. I miss going to the bunker with y'all.

Josh:
Smiling faces across the table, but there's-

Ben:
The bank vault yeah.

Josh:
Yeah. We'll get back there eventually.

Starr:
Hopefully in six months we'll have vaccines and be able to have our in-person conclave or what? Q3? Q4?

Ben:
Yep. Yep. It's open.

Starr:
That would be awesome. 

Starr:
Okay. You have been listening to FounderQuest. Give us a review on Apple podcasts or whatever. And we're always looking for authors. If you're interested in writing for us, we're especially looking for PHP authors and Ruby authors and occasionally JavaScript author, where I'm throwing JavaScript in there to see what happens. Go to our blog at honeybadger.io/blog and look for the write for us page link at the top. And it's pretty easy. Just get in touch. 

Episode source