The Changelog: Software Development, Open Source - The Oban Pros (Friends)
Episode Date: March 15, 2024Today you get Sorentwo for the price of one! We are joined by Shannon & Parker Selbert, both halves of the mom-and-pop software shop behind Oban, the robust job processing library that's been deliveri...ng our emails & processing our audio for years.
Transcript
Discussion (0)
Welcome to Changelog and Friends, a weekly talk show about mom and pop software shops.
Shout out to our partners at Fly.io, the home of changelog.com. Launch your
app as close to your users as possible. Find out how at fly.io. Okay, let's talk.
Yes, let's talk about our friends over at Fire Hydrant real quick. They have a brand new on-call feature called Signals.
And what you're about to hear are real reactions from PagerDuty users when seeing Signals from Fire Hydrant for the first time.
PagerDuty, I don't want to say they're evil, but they're an evil that we've had to maintain.
I know all of our engineering teams, as well as myself, are interested in getting this moving the correct direction as right now just managing and maintaining our user seats has become problematic
that's all that's that's really good actually this is this is a consistent problem for us and
teams is that covering these sorts of ad hoc time frames is is very difficult um you know putting in
like overrides and specific days and different new ships is is quite onerous
oh and you did the most important piece which is didn't tie them together because that's half the
problem with pager duty right is i get all these alerts and then i get an incident per alert and
generally speaking when you go sideways you get lots of alerts because lots of things are broken, but you only have one incident.
Yeah, I'm super impressed
with that because being able
to assign to different teams is an issue for
us because the one
alert fires for one team and then
it seems like they have to bounce around and it
never does, which then means
that we have tons of communication issues
because people aren't updated.
No, I mean,
to be open and honest,
when can we switch?
So you're probably tired of alerting tools that feel more like a headache than a solution,
right?
Well,
signals from fire hydrant is the alerting and on-call tool designed for
humans,
not systems.
Signals puts teams at the center,
giving you the ultimate control over rules,
policies, and schedules.
No need to configure your services or do wonky workarounds.
Ingest data seamlessly from any source using webhooks, and watch as Signals filters out the noise, alerting you only on what matters.
Manage tasks like coverage requests and on-call notifications effortlessly within Slack.
You can even acknowledge alerts right there.
But here's the game changer.
Signals natively integrates with Fire Hydrant's
full incident management suite.
So as soon as you're alerted,
you can seamlessly kick off and manage
your entire incident inside a single platform.
Learn more or switch today at firehydrant.com slash signals.
Again, firehydrant.com slash signals. Again, firehydrant.com slash signals.
So we're here with Parker and Shannon.
This is our BOGO episode, buy one, get one.
So we have Parker here with us,
but this is not just Soarin' 1, this is Soarin' 2.
We got both Parker and Shannon.
They are teammates in multiple respects.
And how many ways are you two teammates?
Should we just start counting?
Let me count the ways.
Business partners.
One.
Spouses.
Two.
We made children together.
Okay.
Multiple times.
I don't know if that's more than one.
Keep it clean. Yeah. So I guess that's two and one uh keep it clean yeah uh so i guess that's
two and a half she's anticipating four you gotta have four she has her fourth finger up she can
she can pitch in a fourth if you have an idea yeah team hey team teamwork on this question
that's a fourth podcasters together he does insist upon that yeah he does a friend i would say he's a
very good friend to have that's true there's my best best
friends as well so that's a that's a team he depends on me heavily for comedic effect oh yeah
yeah parker sets him up and shannon knocks him down that's what we're gonna expect from here
on out that's a that's a high bar shannon that's a big yeah that's an order that i cannot i think
you can maintain you'll be fine well this, this is Change Logging, friends.
We're hanging out.
Parker, we've known for a while because you are the creator, maintainer, purveyor of Oban,
the background job processing library for Elixir, which we are users of.
And you have Oban Pro, which you've been having worked on for a while now.
I had you on, I think backstage, it was just you and I.
I don't think Adam was there a couple of years ago talking about Oban Pro and your desire
to go full-time Oban or retire via Oban.
I can't remember what it was, but there was a freedom number involved.
I think you still had a, is that because you still had a day job?
Help me jog my memory here about your status back when we had you on the show.
Yeah.
I mean, your memory is correct about all those things.
I think it was probably a year and a half ago.
It was just you and I.
Yes.
We were talking about Oban and Pro.
We did talk about some freedom numbers.
The ultimate goal, we call it our retirement project.
I still do have a day job with D-Scout.
Oh, you do?
For a variety of reasons. One,
just kind of, I've been there for a long time and have a responsibility to the founder,
who's a good friend and longtime coworker. And then also it's such a huge user of open and pro
that pushes it that I just have daily insight into exactly where people feel pain points and
what, what people need. So yeah, it's still going.
Makes sense. So what is the, what is the retirement situation? What is this,
you know, the freedom number? What is this? I think it's a ruse.
Okay. Because I don't think he would ever want to be free really that
i think the definition of freedom what is freedom right so okay passion the project
open is in every aspect of our life i mean it's every dinner, it's drawings on the shower, it's in every aspect
of our life. We work on it. And I don't think I realize that until we leave our little bubble
and we're around other people and we get this mirror image of what we're doing all the time
and how often we go back to it. I don't think I'm aware of it until we're
around other people outside of our bubble. So you're with your friends. They're like,
why are you talking about open? I thought it would be hilarious. You know, when you do this,
what if in your mind, I thought it would be hilarious for most developers to create this
video of our kids trying to explain to our neighbors or to anybody else what it is that we do and get them a
whiteboard and have them try to draw it or have them try to describe what it is that we do. Just
somebody else who sees us all the time communicating what it is they think we're doing all the time.
It doesn't have to be kids. It can just be me trying to explain to people what we do.
Right.
Because I do a terrible job i
think you do a great job i don't know he gets so deep so quickly i take the opposite stance i try
to stay as high level as possible so my old line was i make websites and that worked pretty well
people are like okay because like they understand websites you make websites we're done here
and then i got to write in other stuff and so I changed it to like I write software or I'm
in software and that was pretty much people are done with you at that point they're like okay
that's nice Jared let's move on now it's weirder actually I podcast about software
and they're like you what now because those are two things that are foreign to me
and uh it usually opens up a bigger question.
They don't want to ask about the software,
but they do want to ask about the podcasting for some reason
that's interesting to people,
but also sometimes harder to explain how it all works.
It is.
You've got a meta situation too
because you write software to make it easier
for you to publish your podcast about writing software.
Yeah, exactly, which I never go there.
I can go there with you guys.
It's a Russian doll.
It's just a Russian doll situation.
For sure.
And even telling people what changelog means
that do not understand software.
It's like, well, they're like,
that's a kind of a weird name.
But in our world, it's like,
that's kind of a perfect name.
But they're like, what is the changelog?
What is changelog?
What is that?
And I'm like, oh, well, that's,
then I have to explain what a change log is and it's
like well this is the difference between one version another it's how people communicate
you know what those changes are like your podcast is a change log i'm like well if you were the
world you would understand how on point the name is and how perfect it is unfortunately in this
moment you're not and so therefore really impressed with our name if you were in this world well then
it's like you're explaining a joke, and you can never explain a joke.
You can't.
Once you start explaining it, it's over.
It goes wrong really bad.
So, Obon is discussed a lot at your dinner table.
Or just, I guess, generally everywhere where you're at, right?
How so?
I don't want to say this pejoratively or as a pejorative, but it's just background jobs.
How much can it be in your conversations?
It's just a dev tool.
Sorry about that. I had to do it.
No, no, no. If you phrase it like that, I think it makes perfect sense. But it's not
just our background jobs. It's a lot of other people's background jobs. And because there's
an open source version, and then there's a paid version, and the paid version comes with support, although quite honestly, we're not great about just leaving people who don't pay for support to the wolves.
It means that there's just a lot of helping other people with their problems with background data.
Right.
And invariably, when you build a tool, which can be pretty complex, you can't predict all the ways that people are going to use things
or the environments they're going to use the things in.
And you can't test in all those environments
and you put all those together
and it can be pretty deep for debugging or just support.
And so you kind of get to know people.
Some people come back more, they just have bigger issues
or they're just a little chattier about the issues.
And so it's not always that we're talking about Oban as much as the people around it. It's exciting when you have a new customer
that you've used their product in a, in the physical world and you see their name come up,
that suddenly they're now a customer that That will spark a conversation. Being responsive to our customers and having them give feedback and accolades will lead us to another conversation.
It takes very little.
We take the bait.
Yeah, I think what's really important here is the partnership and the opportunity, right?
Because I don't know how you are, Jerry, with your work and your wife.
And I know how it is with my wife.
She's not deeply involved in our day-to-day.
And so we're less partner in the things we do day-to-day.
However, she's obviously deeply invested because, hey, we're husband and wife.
And the same for you and your wife.
But you all are working directly together on the output, on the effects.
You're sharing in the ups and the downs which makes the journey regardless
of its up or down just a bit more fun and a bit more supportive i suppose you don't feel like
you're falling solo you're falling together or rising together which to me is kind of a beautiful
thing it stands out where an incident could very easily become an incident though, if you're not careful. And that same,
I agree with you and the positive is there. I thought it was poetic. I liked it.
It is poetic and I embrace that, but I hate to give somebody the whole pie in the sky without
the reality of the patience it takes to restrain yourself when your partner is refactoring something or has critique of you in a response
and the familiarity leads you to a dark place. You have to be patient. You just have to be
extremely patient because a work incident, right? An incident with a customer or with code,
it could become a personal incident in a matter of seconds.
So it's just that restraint.
Well, that's where love and respect comes into play, right?
Absolutely.
As partners, I think, even for my wife, and I'm sure, Jared, you're the same
because we're kindred spirits in a lot of ways,
it has to begin with love and respect.
And if you're formed there with goodwill, like I have goodwill for you
and the formation of
the partnership at the friend level, then the husband and wife level, and then the kids level,
and then the business level, like if all those things are foundationed on love and respect,
I think even those incidents are a little easier to deal with because you do the 10 second rule.
Hey, I'm upset right now. I'm going to pause. I'm going to count to 10. I might even go away and
count to 100 if I have, if it's really a big incident. But love and respect sort of gives
certain contracts, I suppose, into place because of the foundation of love and respect. And I'm
assuming that. That's my foundation with my wife. So I'm just sort of assuming that's for you all
and giving it to you if you don't have it. No, I think we do have it.
I think it's a good assumption.
Yes.
We spend a tremendous amount of time together, possibly a disturbing amount to some couples.
We were doing it before COVID, before people so frequently worked from home.
But not only are we working in the same space and living in the same space and then raising kids in the same space, but working on the same things in the same space.
And you have to have a tremendous amount of respect.
Yeah.
It makes sense to me how you got there on the other dimensions.
But on the work dimension, on the business, how did you end up here?
Were you already business partners and this was the opportunity?
Did Shannon start it and Parker hopped on, vice versa? How did it end up to be this partnership around this project?
I had been consulting originally and started my own business and wanted Parker to consult
with me. He had been working at a design firm. And with the birth of our second child, we decided we were going to take the leap and do it
together. We had tried to explore some other app ideas and had made it to a very shallow level,
especially with something like Snow and things like that. And it just didn't really take off.
We wanted a passion project.
We both started with Ruby and Rails.
And Parker really made the brilliant choice to move to Elixir.
And I think he has led us there.
So I may have started it, but he's led us to where we are in a wonderful way.
And you had a proven guinea pig, so to speak, with Mike Parham and Sidekick and Sidekick Pro
in the Ruby world, in the Rails world, much success, very much similar project,
similar structure. That had to feel good to say, okay okay here i am in a different place with different tools
probably some of the same people who remember sidekick like me for instance so there's a
analog that i can draw pretty easily to sidekick although in elixir land like background jobs are
less necessary like the kind of background jobs that you provide are less necessary for people
just getting started and then i think eventually you kind of do grow into wanting the persistence and a lot of the scheduling and
the tooling that you provide but i went a long time without having any background solution on
our application probably three or four years i had to look back and see exactly when i pulled
oban in the first time but besides that you did have kind of rails to run on to a certain extent did that give you confidence
were you basically like saying i'm going to take mike perrim's playbook and apply it in this
ecosystem i mean no shame in doing that by the way like that's a that's a good way to do things
was that part of your your playbook that was definitely part of the playbook and i do have
history i'm not going to say mike's my, but I do have history in the past of collaborating with him and sharing some work with him and writing a tremendous amount about Redis and Sidekick and helping the features and saw it as such a great way to
have a technical project that is a, it's a developer tool. So you're selling to developers,
but also to something, you know, scratching your own itch where you understand deeply exactly what
problems you have, but you're right. In many ways, it's not as necessary in Elixir. You can get away without
it for a while until you understand that you have certain guarantees that you want to hit of,
I'm not ever going to lose this thing. So the concurrency story in Elixir compared to the
concurrency story in Ruby are vastly different. It's unbelievably easy to do certain things
in Elixir that would be tremendously difficult,
if not impossible, to do in Ruby.
And so that's part of the springboard for...
Open has a lot, I think, deeper features than much of what even Psychic Enterprise still
has.
And that's purely because of what Elixir makes possible.
But I will say one other thing is that i remember after somebody added open to the change
log code base before that you guys were using quantum for cron and so in a way you were using a
sidekick pro kind of feature but with a different project there yeah we needed scheduled jobs yeah
and i reached for quantum for that but in terms of running emails and stuff like that like
the kind of stuff that you would immediately in ruby on rails land you would reach for a sidekick
pretty much immediately as soon as you wanted to send an email in the background without blocking
with elixir even our stats processing like a lot of the stuff that we do in the background
using obon today which we can look at all the things i was just doing that with straight up elixir and you know the beam and
all those fancy tools and it's not fancy like it was easy for me to do that but once we went
in scheduling and then retries even just visibility into once your background jobs really matter then
it was like yeah we want something that's to provide more than the built-in.
But like I said, we lasted probably three or four years without it.
And we've probably been on it for three or four years, something like that.
Yeah, and I think when you were starting, Open didn't exist.
So you couldn't have even used that if you wanted.
It would have possibly been something else.
Yeah, there's a lot of stuff that didn't exist.
And so I hand-rolled a lot of solutions, which are still in our code base today.
And we get questions sometimes like,
why did you do that this way?
This seems really convoluted.
I'm like, because that was just how I figured it out in 2016.
You know, there just wasn't,
like Phoenix didn't provide a way of doing that
or there was no best practice style library
that everybody uses.
I'm thinking of CSRF stuff
and a lot of the things around Turbolinks and just cookies and
junk like that, where you're just doing it yourself. You're just hand rolling it
off. I think I hand rolled some off stuff because it was just the early days. But so don't necessarily
go look at changelog.com code base for how to do things today. even context like phoenix really promotes the idea of contexts now and i
just ignored them all together and so i tried to like introduce contexts as the feature came out
because the phoenix team was really big on it and the ecosystem was big on it and i just felt like
for our application it just felt like another layer of abstraction that i didn't necessarily
need and so i just ignored it which i love that about elixirs you can just ignore the stuff and about
phoenix the way it's built and you just don't have to use it i mean sure it's the idiom you're
gonna look less like a phoenix app by doing so but you can just ignore it and do things your way
and so i've continued to do that and i think that think that most modern Phoenix apps wouldn't look like ours, at least for that
reason.
And LiveView.
Yeah.
Yeah.
Plus LiveView.
Yeah.
We, for our web, for open web, for the development, we have like a single file script that's
essentially an entire Phoenix application in one file that also generates random jobs
and all this different timing, the kind of stuff that we have on our demo,
so that when you're working on it locally,
you have some reasonable amount of job traffic and errors and cancellation.
But that fits in exactly one file.
It's not like it's an entire full-blown scaffolded Phoenix app.
It's just the bare-bones things.
And as long as you configure it right and the modules are there,
it all just works.
So it's easy in that way, once you understand what the parts are right well that was one thing that attracted me to phoenix in the first place was how simple it was relative to rails in terms
of it for me it was the stack traces when i you know threw an error on the page was the stack
traces were tiny like you know how in Rails, probably to this day,
I haven't done Rails in a long time,
but it's like, here's your application code trace,
and then like, here's the framework trace.
And this one's collapsed by default
because you don't want to look at that one.
And it's the same way in Phoenix.
But when you go and like expand the framework trace,
at least back in the early days,
it was like eight function calls.
I mean, it was nothing.
Like my code was there and there's,
you could see the entire pipeline of function calls. And it was like eight function calls. I mean, it was nothing like my code was there and there's, you can see the entire pipeline of function calls and it was like 12 function calls. And I was like,
wow, this is something I can actually reason about relatively easily. Now it's probably a
little more deeper than that. Now you guys probably know better than we do better than I do perhaps,
but I like that. It was just, it was grokkable. Like you could, you could see all of Phoenix
and there was nothing hidden from you. I know it's a little unorthodox, but did Phoenix
bring you to Elixir then? Because that would be. Pretty much. I mean, Chris McCord basically brought
me to Elixir. Uh, so in that way, yes, we had Chris on the show before he had Jose on the show.
We were just reminiscing with Jose a few weeks back about this, because I've been a web developer pretty much my whole career
and Rails for many years.
And Chris had a very similar story to mine,
but then he found Elixir and he built Phoenix
and he came on the show and he talked about how cool it all was.
And I went and tried it, tried Phoenix specifically,
and got this little application up and running
in like a couple hours and deployed
as well, which was just a simple like one endpoint, call Slack API, do a thing. It was like our old
Slack inviter before we had a full system. And that was just so fun and easy. And it looked
somewhat like Ruby. And turns out it's nothing like Ruby, but it has this like facade of Ruby-esque
taste, maybe has ruby taste to it
it's got a slight syntax to it yeah exactly there's a flavor there veneer and i was like oh
this is this is pretty cool so it just proved itself relatively quickly and back then i was
a full-time contractor part-time changelog or even just maybe nights and weekends changelog back then
not nights and weekends technically but just back then. Not nights and weekends technically, but just spiritually.
Because I was an independent business owner,
so I could work on it when I wanted to.
So it would be during the daytimes.
But it was a hobby for me.
I think Adam had gone full-time by then.
2015 was your full-time?
I'm looking at the data. We can record that.
That was March 20th, 2015 was the record and ship date, which means it was probably around the same week span because this is prior to us having separate date fields in our CMS for those things because this was published probably the old way prior to the CMS.
And the CMS is the application we're talking about.
Oh, it had to be the old way.
Yeah.
On stone tablets?
Is that the old way?
You're hammering it out?
Basically.
Yeah.
Well, I don't think i went i think
i went full-time around that time i think it was like february 2015 so like this was like literally
when we were courageous enough to say adam quit your day job and make this thing your thing and
so i guess we're coming up i guess next year would be 10 years of being full-time on this thing. Wow, that's a great anniversary. We celebrated our
five-year recently.
Congratulations. Which was big for us.
Not as a people, but for Oban.
In which context?
Dual anniversaries here.
Dual anniversaries
for the Oban context.
I think that would be a dream to have people
choose Elixir in the way that
people love Phoenix. I'm not going to say that that would be a dream to have people choose Elixir in the way that people love Phoenix.
I'm not going to say that that would ever happen, but that would be a dream that people would come to Elixir wanting to use Oban.
What's up, friends?
I want to share an awesome new announcement from our friends over at Crab Nebula. Crab Nebula is the official partner of Tauri.
For the uninitiated, Tauri is a toolkit that helps developers make applications for the major desktop platforms using virtually any front-end framework in existence.
The core is built with Rust and the CLI leverages Node.js, making Towery a genuinely polyglot approach to creating and maintaining great apps.
So building applications with Towery has always been an incredibly joyful experience.
However, once the applications are built, distributing them and rolling out updates has always been an incredibly joyful experience. However, once the applications are built,
distributing them and rolling out updates has always been cumbersome. This is why we are thrilled
to be part of this announcement from our friends at Crab Nebula on their latest product, Crab
Nebula Cloud. The problem really is the cost of distributing applications, the security,
and the feedback and analytics. Just think about cost alone to distribute new applications at scale,
it can get very expensive when bundle sizes compound with the number of users,
which further compounds with frequency of application updates.
Always be shipping, right?
A 500 meg application distributed across 500 users with nightly updates
leads to a total of around 7.5 million megabytes.
That's 7.5 terabytes transferred in a single month.
Now, based on popular cloud pricing, this could easily lead to a bill in the ballpark of around $90,000.
That's a lot of dollars.
More so, distributing updates requires complex cryptography to ensure that an update is the original safe artifact for users to
download, install, and execute. And then collecting meaningful analytics is more challenging with
desktop applications compared to web-based services, impacting the ability to make informed
updates and improvements. So at the heart of Crab Nebula Cloud is a purpose-built CDN ready for
global scale, ensuring seamless integration with any CI-CD pipeline and first class support for GitHub Actions.
And security updates are a first class citizen.
Leveraging the power of Towery Updater, Crab Nebula Cloud provides an out-of-the-box update server that any application can call to check for signed updates and, if the update is available, immediately download and apply it in an instant over the air
and of course towery is open source and crab nebula is a company born out of open source and
they're giving back to the open source community by giving steep discounts and subsidies to open
source projects built with towery to learn more get started and check out the docs go to crabnebula.dev slash cloud. That's crab, C-R-A-B, nebula, N-E-B-U-L-A dot dev slash
cloud. Once again, crabnebula.dev slash cloud. we understand our niche pretty well we can clarify the market all we want for us unless we have more people more elixir users will max out at some point that's just the reality
of such a elixir is just an amazing thing right but it's a niche but it's a niche so we have to
we've discussed recently doing something to just try to widen that pool and bring more people to it
yeah i think that's interesting because i think it's not only a niche,
it's a successful niche, first of all,
but it's also a mature niche at this point.
I mean, it's a pretty mature language and a mature ecosystem.
And I think there can be new tools that bring people in.
I think Nerves probably brings people in.
I think LiveView itself and a lot of the stuff that Phoenix is doing is cutting edge.
And now you have what's Chris doing at fly with the serverless stuff,
flame,
flame.
Like he's still pushing,
pushing on the edges,
which does bring interesting or interested people in.
But that being said,
I think elixir in a certain sense,
and you guys can disagree,
Adam,
maybe you have a
different viewpoint has kind of found an audience and so i think it's kind of like at the top end
of the s curve of adoption perhaps unless there's unless ml changes that i mean it has great ml
tooling jose has been investing in that but um you know most people are using Python and newer things, Rust and Go.
And so I'm wondering if the Elixir ecosystem has a lot of room to grow or just some room to grow at this point, because it's pretty mature.
What do you guys think?
I think, to rewind slightly, there's the whole notion of a killer app,
the thing that brings somebody, like, this is why I bought,
I wanted VisiCalc, so I bought a Mac or an Apple or whatever.
And I think for a long time, Phoenix has been the killer app of Elixir. And we've had other ones,
like you mentioned, with Nerves a little bit. And then I think the ML is opening a whole new
realm of possibilities to attract people that would have been firmly in the Python camp.
And we sort of dream that Open is also another companion killer app, that it's like there's
enough compelling stuff here, enough compelling features that it's worth it to pick up and
make an Elixir app just so you can use Open and the workflow stuff and Pro or all that.
But even more so if you were to pair that with the ML side. So if you look
at some popular tools in the Python side that are like Dagster or things that are meant to run
workflows, they use them for ETL pipelines or complex machine learning flows. And all those
things do decently in Python because people have
put so much time into it, but it's not as natural a fit as it is in Elixir.
So the vision that we have is that it's enough that you can have your web app, but you can
also have your web app orchestrate things, and it can do all this ML stuff, and it's
all under one blanket of a single ecosystem.
And then you have all of the other like fantastic documentation and great packages and really
vibrant, responsive community.
And you have all of those things instead of having to scatter your attention between the
JavaScript for some stuff and the server side language for some stuff and Python for the ML side.
As you describe this, I'm thinking, do you produce any content around this attracting folks to Elixir because of this comparative nature to Python and how it's good and it does it but it doesn't do it well?
I'm paraphrasing what you said there, but it sounds like you've got a bias, obviously, because we know where you live in terms of where your camp is at.
I'm just curious, how much do you help with the growth, not just provide the tooling?
And I don't mean that in a negative just, but how much are you doing activism and outreach and advocacy around the depth of ability that you can have Elixir over other traditional ways
or maybe ways that are being seen as, well, Python's the easy path
in some cases for those kind of workflows, for example.
And that seems to be the default in the marketplace, so to speak, of DevLand.
And they don't consider Elixir because there's not enough awareness.
Well, should we discuss that which shall not be named?
What is it?
What is it?
I'm surprised to all of us.
Deep breath.
So, I mean, I think you'll see more content.
So to your point, maybe not as much as we should have up until right now.
We have not.
I think you will see more content from us supporting that and doing that.
We had researched a bit and had decided we were going to embark on a cross-platform kind of version of Oban.
We were putting our toe in for Python.
And I kid you not.
Go ahead.
Oh, yeah.
It was within a matter of time before Hatchet was.
Things were announced.
There's been a lot of movement in the past year.
It was just a Y Combinator effort was just launched.
And their marketing is phenomenal.
There's a lot of lessons to be learned from that,
but it was within weeks of us starting to strategize and pull together on that. And we
had had a lot of walks and talks about how we can really do what you said, Adam, to really bring in
our efforts towards the Elixir community, to support that, to, you know, what niche can we
fill within that community?
What can we develop?
What's missing?
What have we wanted?
We've jotted down ideas,
but we had started exploring a cross-platform version of Oban,
and within weeks it was released.
So I guess it's just whether or not
we're going to put our efforts into picking a fight.
I'll say, maybe not picking a fight, but the number one takeaway was, well, I guess there are two takeaways.
Competition.
The description of what they've built, it sounds fantastic, but the complexity of what they've built, you couldn't even tout those things in Elixir.
They'd be so table stakes to do things. But the marketing that they have around it
and the use cases they're describing
are things that would work perfectly
for what we want to build.
And definitely, I think we have to do work
to try to communicate and bring people in.
I'm looking at Hatchet now,
and I kind of want to preface some things
because it seems like a startup,
right? Backed by Y Combinator.
Totally a startup, yes.
Is Hatchet cross-platform then?
Is it focused on... It's hard to tell
from their description because it seems
overarching, not
hey, we're in Python land,
come get your Python
task queues here, etc. It seems
very much like a larger play
than simply one language or one camp.
I think it is.
I think they're doing sort of a Mike Perham factory kind of thing
where there's a server that coordinates things,
and then they have SDKs in various languages.
What's stopping you all from doing this?
I mean, this, again, I think Jared asked before,
like, hey, did that give you confidence
because of the path of Sidekick and Sidekick Pro when you initially started?
You know, this to me says there's room for a mature option, I suppose. But then that really
depends on, because this goes, your whole entire operation goes from, let's just call you mom and pop.
Do you mind if I call you mom and pop?
No, we definitely refer to ourselves as the mom and pop software shop.
Right.
I mean, you very much are.
I mean, I don't know more of your employment.
Like if you have other folks working with you, maybe you have temps.
I don't know.
Who knows?
I don't know what you have.
But it seems mom and pop.
It would say, okay okay you've got to
graduate to a whole new level and do you want to be at that level you may see the market opportunity
that's going to change your lives that's going to change a lot for you and sometimes i've even
lamented about this with podcasting it running an indie media company is like i like what we do
i like what we do as an indie media company but at, I like what we do. I like what we do as an indie media company. But at some point, the market and maybe other competition may say that we, Changeable Media, has to become more of a, in quotes, behemoth of sorts or funded or operate differently because competitors compete with us for ear share, share mind share etc and then so we've got to
follow suit or wither on the vine and die or just be happy with our little slice of pie not intended
to rhyme that but i did so you know why coming here back to hatch it seems pretty like just go
into their page it seems like it's pretty strong as a competitor,
or at least has the firepower of Y Combinator.
You never know, really.
I mean, this could be a beautiful paint job.
Who knows?
What are your thoughts on what it might do for your evolution?
It is a beautiful paint job.
I think there are a lot of lessons to learn.
I mean, that was a moment, right?
That was a moment last week to see that, discuss it.
And I think, I mean, you mentioned being an indie media provider. I
don't remember the exact phrasing, but I think that's an indie media company, but that's kind
of the beauty of what your company is. And I think part of our size and how deeply embedded
in the community, the Elixir community we are,
is one of the strongest assets for our company.
And I think if we were just on the outskirts
and tried to push into, say, Go or something else,
without that deep history,
I don't know what it would take to get there
or even if we would have the attention or time to do it.
We don't have any temps.
We don't have any other employees.
There's nobody else doing support when we're on vacation or asleep or something.
You know who you're getting.
We've never contracted out for pro ever.
Or web.
Or web.
So, I mean, I could say hi to David.
Hi, David.
I know you're listening.
For the server. For the server.
For the server.
So I know.
David is the name of your server?
No, David Brunheisel.
I'm saying hi to David.
So Leesmoor is the name of our server.
And Leesmoor is the island that is across the Bay of Oban.
So there's a fun play there.
And that's where we keep the people that contract. They
stay within that island.
They don't... Like Alcatraz?
Stay there on your island. You can swim.
Reminds me of Son of Anton.
Gotta do the ding because that's a Silicon Valley joke
right there. Son of Anton was the
server stack that Guilfoyle stood up
whenever they got blacklisted
from Cloud, essentially. Gavin Belson
was like, you can't play here anymore.
They got blacklisted from, they named Rackspace.
That's how relevant this was back then in those days of this episode.
But Son of Anton, I love naming servers,
but that was the name of the one in Silicon Valley.
That's brilliant.
I think all the questions you just asked
were the questions we were asking each other in the last few weeks.
Well, what's the answer
we have different answers do we let's hear them all let's hear all the answers yeah as a wrap and
go don't really it must rhyme i can see the dynamic already playing out he asked her to wrap
her response and go that was cool and i took my three fingers and put them in the middle of my forehead
to just try
to express the pain.
The answer,
I don't know. Well, you can say whatever.
Our answer today was similar
to the answer
four days ago. However,
the answer four days
before that was somewhat different.
You're not giving any of these. I just want to know which one you want me to go with because I –
Should I do a Tom Cruise thing here?
I mean, I want the truth.
You can't handle the truth.
Give me the truth.
What's the truth?
As of this morning, our roles, we're pretty defined in our roles and hiring more people in a way that changes our life.
Right now, we are happy with what we do, how we're doing it.
We feel a huge amount of responsibility to our customers and to that trust that they
place in us.
That doesn't mean that they wouldn't make other choices.
I'm not foolish enough to believe that. So I think we have to really pivot and decide if we're going to put our passion
into building up that community or if we are possibly going to try to compete and pick a fight.
And I only use pick a fight as a term from a book, not that I mean that.
In the old 37 Signals, pick a fight.
In a 37 Signals kind of sense.
Rails versus Java kind of way.
So that's what I mean by that.
I don't mean a literal fight.
So I don't think we have a definitive yet.
We very much like our roles.
We're very good with our time management.
But all of these things don't point to which direction we really are going to go yet.
Yeah, one thing it says actually in that book, I'm pulling it up,
Chapter 8, Have an Enemy.
And I remember this, actually reading this, this brings back memories.
Because I think a lot of what Basecamp, they were like, we don't know what we want to be,
but we know what we don't want to be.
And so the enemy was very much like Microsoft-based tooling and how terrible it was.
This is how I feel about this right now.
I'm channeling a bit of this book right now.
This is, I understand.
Yeah, I feel we know our roles. We feel responsible to our customers. Right now. I'm channeling a bit of this book right now. Get it. I understand. Yeah.
I feel we know our roles.
We feel responsible to our customers.
We might pick a fight.
However, we know.
I know this.
We know who our real enemies are.
And our real enemy is not necessarily, at this point, a startup.
That could be wrong.
I've written lots of JavaScript in anger. I've written a tiny bit of Go in anger. And I've written lots of JavaScript in anger.
I've written a tiny bit of Go in anger.
And I've written plenty of Ruby and Python,
written thread pools and process pools and done all that.
None of that is pleasant.
I don't ever want to do any of those things again
unless I really have to.
And by comparison, working in a Beam language
and working in Elixir is just so simple and joyous that the idea of leaving that to go focus on something else, it's kind of painful.
So I think you know his answer.
I think you get his answer is very much, no, I do not want this.
I'm all full of feelings and maybe not so much logic and
that's all right those they're important feelings that's a good awareness to have in a moment like
this right like when you're when you're in that we must pivot or consider pivoting moment it's
important to have awareness of truly the emotional response you have and then counting to 10 or kind of 100 or maybe even 10
days kind of situation like that moment of emotion to decision you've got to put some buffer in there
as just a way to protect yourself from being too irrational potentially irrational right yeah but
also like for for you as a indie media company, there's part of it,
like how much do you want to grow versus how much do you not want to face an
existential crisis?
I think Jared and I can answer that pretty well.
Okay.
We've,
I mean,
I think,
uh,
I don't know how Jared would answer it,
but I think we're happy.
Don't we do?
And I don't,
I think we're on the long game.
Like when I talk to people,
they're like,
wow,
you're really thinking like I was just at a, in quotes, mixer for GitHub.
It's here in Austin.
They were here for South by Southwest,
and they invited me out to come hang out there for a couple hours
while they were at the garage bar, and I was there.
I was talking to folks, and I was like, hey, we should pot about that sometime.
They're like, well, I work at Apple, and I can't tell that story.
I'm like, well, we'll be here whenever you're ready.
That sounds pretty cool. Whenever you can share it. They're like, well, you know, we'll be here whenever you're ready. Like, that sounds pretty cool.
Whenever you can share.
And they're like, wow,
you have like this long game approach.
I'm like, well,
I've just been doing this for so long
and I have a pretty good confidence
in like how we've been here
and what keeps us here,
both individually as passion,
but also as a company.
And I just have confidence
that we'll be here
at least in a few years to maybe
have that conversation. So they were just surprised that I had this long game approach to things.
And I think you kind of have to. And so our long game approach isn't, OMG, there's a competitor or
there's a podcast that's more popular than us, or there's an influencer who's more influential.
Like Jared and I are not trying to be influencers or influential. We're just literally trying to talk to people who share passion like we do,
get excited about where software is going,
and just have amazing conversations.
And from a technical level, produce a really well-produced podcast
that sounds like people want to listen to.
We produce beats with Breakmaster Cylinder.
We have music out there.
What other job could Jared and I do this kind of stuff at?
On our own
whim like we make the choices you know we we get to go into the nooks and crannies and hang out
there or zoom out and get bigger level if we chose to follow you know the name that shall not be named
kind of situation like oh my gosh like we would just be chasing them and not not going after what
we feel is important and what we think is more fun
you know we're in as best as we can be we are in control while also being in a world of chaos and
total change every day right i think we're in such a similar situation that's where we were
as of this morning we as of this morning we decided to put our efforts into ensuring that the legacy and the process of us maintaining anything, if there was a tragedy, something befalls us.
That our customers are in a good place, that things are in a nice responsive little box, that people aren't left in the lurch.
That's what we decided this morning.
How much, I got to ask you this too, just because it's such an analog for me personally. I've
watched this over and over and I'm seeing things that I haven't seen before. Have you all watched,
I'm sorry, Jared, Silicon Valley end to end, like all the seasons?
I've never seen a single episode.
Neither have I.
So we're on Jared's side.
My people, my my people i was prepared
for i'm sorry not your people okay so you're missing out on wisdom here okay you gotta oh
yeah i mean it might hurt you a little bit but i think there's wisdom there and i'll just i won't
spoil the story except for that you may assume that this name that shall not be named if we
keep saying that i can't no Adam, you have carte blanche.
You can do what you want.
Well, hatchet.run then, I suppose.
Hatchet is who you've considered their Y commenter.
And it's unclear on how well they're doing.
You can assume that from the outside.
But on the inside, they could be not doing well and not really competition.
We saw it as just kind of like a counter data point.
Right.
Of like, oh, that's what that looks like.
If you do it like that, that's...
And I think their use cases are great.
There were lessons that we learned
in going through their material.
We don't have fear in our hearts about them, okay?
We're not expecting them to pull the sword from the stone.
None of this.
No fear at all.
Okay.
Well, you were just saying how you were making sure your customers were very good.
If something happened, it's tragic.
So you were speaking melodramatic about the potential.
She's talking like really tragic.
Oh, no, no.
I mean.
Yes, she means, yes.
Bus factor of two.
Of two.
I understand that.
That's all I'm saying.
Sorry, I'll clarify. I mean, we are riding around Scandinavia, Europe, cars.
I mean, sometimes we don't take super risky decisions, but we're adventurous people.
It's good to have other contingency things in place for people who depend upon us.
That's all I meant.
Our customers will be in a good position.
That's what we've decided.
Because you could take a deep dive into our business and our time management
and everything that we took so long in the beginning to set up.
I feel like we're in such a good place with it now.
Can you describe your business?
Can we go to your pricing page and grok what you might be doing?
What's the best way to examine from a business level, beyond the software, beyond its ecosystem where it hangs out at?
As a business, how do you work?
You invited this, so now you have to answer.
Well, go ahead.
What's your business model?
Our business model is open core.
Totally.
In essence.
Totally. In essence. Totally. We sell a couple of paid packages or a bundle of paid packages on top of an open source offering.
So the two packages, one is web, which is a live view powered dashboard that people run right in their main application that gives them control and access and metrics and stuff all to their interior Oban working. And then we sell Pro, which is a bunch of more complex, more advanced features built
on top of Oban that is all possible through extensibility.
And then with either of those, we have a metrics package and we have support.
And there's a custom enterprise plan if somebody reaches out.
Which is for if people need more support.
Okay.
And that's the plan.
That's the whole thing.
What's up, friends? This episode is brought to you by one of my good friends one of my best
friends actually one of our good friends tailscale and if you've heard me on a podcast you've heard
me mention tailscale several times in unsponsored ways because i just love tailscale and i reached
out to them and said hey we're talking to a lot of developers. I love Tailscale. I'd love to have you guys sponsor us. And they reciprocated. So
what is Tailscale? Well, Tailscale is a programmable networking software that is private
and secure by default, which makes it the easiest way to connect devices and services to each other
wherever they are. You get secure remote access to production, databases, servers, Kubernetes, Thank you. Mac OS, iOS, Android. It is an easy to deploy, zero config, no fuss VPN.
It is zero trust network access that every organization can use.
So what can you do with Tailscale?
You can build simple networks across complex infrastructure.
They have ACL policies to securely control access to devices and services with their next gen network access controls.
You can replace legacy VPN infrastructure in just a few minutes. Thank you. You can save time with a trusted and proven networking solution that just works. You can transform networking security with a modernized set of solutions built on revolutionary protocols designed for today's mobile and multi-cloud era.
You can securely connect to anything, no matter what operating system, hardware type, or configuration is in place, such as your GitHub runner to a database on-prem.
You can authenticate without authentication using TailScale's app connectors. You can send files securely to any node on your TailNet using
TailDrop. You can code from your iPad even with TailScale and VS Code Server. There's just so
much you could do with TailScale. Like the limits are literally limitless. And that's why I love
TailScale. I've got 28 machines personally that I manage on my tail net. And if
you've heard me talk on the podcast, you've heard me mention Tailscale at least once or twice, but
today you can try Tailscale for free up to a hundred devices like me and three users for free
at tailscale.com. No credit card required. Again, it's free up to a hundred devices and three users
all for free at tailscale.com. No credit card required.
Have fun.
And what was your freedom number?
And when did you reach your freedom number?
What was the first part? He said, Jared asked. What's your freedom number? when did you reach your freedom number what was the first he said what's your freedom i was going to go there too because like we're now
back to you know understanding more clearly your freedom number what does it take to get there how
close are you to it etc i feel that i i have to answer this since um when i messaged jared most
recently i poked him with this so you just don't like specific numbers. We'll use
percentages and things. Use a range
or something. Yeah, don't be...
Don't be gratuitous. The salary
of a senior developer in the
U.S., a very senior developer in the
U.S., that would be a freedom number.
Okay. So half a million or more.
Below that.
Let's say between
a quarter and...
I was hanging out with the wrong people then last night.
You're with some Google Apple cards.
Yeah, we're a bunch of Silicon Valley people.
In the fangs.
Chicago kind of people.
Non-fang developer salary.
200 to 400, right?
Correct, Jared.
And then we're over 200% of our freedom number.
Well, congrats.
That's awesome.
Well, that's a good place to be.
Congratulations.
So now you need to go to Mojito Island.
Isn't that where you go after you reach that?
Gen and gen servers.
There you go.
Yeah, you're on your sailboat, and I'm on the beach,
and I say, looking good, Shannon,
and you say, feeling good, Parker.
Feeling good, Parker.
Yeah, I wouldn't be too nervous about your existential business at this point.
Yeah, so it's not an existential thing.
It's just where do you want to be?
Where do you want to spend your time thinking about?
Do you want to grow into this other ecosystem where there's competition,
or do you want to firm up your foundation and make sure that if you do go out to Mojito Island
and forgot to come back to work the next day, then you know it's going to continue it's going to something's going to happen
i think there's right there's another part which is this is like the acolyte in me of i think
elixir as a language and as an ecosystem is just better than any not not every other language
because of course it doesn't it's not comparable to writing C or Rust or Zig
or all these other things that just have a different category they fulfill.
But if you're writing web technology, I just don't think,
this is my total hot take,
I just don't think anybody should be writing Next.js instead.
I don't think anybody should be writing Next.js instead. I don't think anybody should be writing Rails instead.
I think there's just more bang for your buck that's there.
You'll have fewer servers.
Well, there's your answer then.
It's just content creation.
Why Elixir is better than Next.js?
Why Elixir is better than Rails?
Obviously, these are two different things, but you get the point.
And then you just create content and you grow the pool. You grow the pool of Elixir is better than rails yeah obviously these are two different things but you get the point and then you just create content and you grow the pool you grow the pool of elixirists and then your business grows if you're fine with it growing a little bit slower a little more tried and true
and less you know vertical hockey stick then you just work on the overall elixir ecosystem
and as it goes open goes right be the change you want to see out there right yeah if you want the market to grow for
you know the camp you want to hang out in and not ever write javascript again like you said
then you've got to put some insurance in place and the best insurance is your wisdom
and directing folks to the right to what you think is the way right you should do some some uh
business counseling adam you've got some wisdom there.
We do it as a podcast.
Yeah.
Come on back.
This is it, man.
This is it.
This is how we do it.
You're getting it.
Well, we get people on here sometimes, Jared, right?
They leave pretty pumped.
They're like, man, I love what I do now after talking to you two.
Oh, yeah.
Well, you know, that's part of the game, too.
We're users of Obon, right?
We've been users since way back in the day, I think, as back in the game too we're users of obon right like we we've been users since
way back in the day i think as back in the days we can go when jerry was like hey we we need to
deal with these background jobs and queues and stuff like that where i think it was like email
stuff was happening and it wasn't even me it was alex kutmos who brought it in the first time
right and i said hey i don't i haven't needed background job stuff like this before.
And we needed it because I think there was a specific use case.
We had Alex doing some contract work for us.
I think it was when we decided we wanted people to be able to edit comments
for like three minutes or five minutes after you post it.
Just the typo fix.
And so when you send a comment on one of our episodes, everybody who's on the episode
and hasn't opted out, or whoever you're replying to, they get emails. So there's logic there about
who gets notified. Our comment system is nice, because it's not heavily used. And so each comment
is pretty high signal. And you want to hit you want to know about it, there's very few, so you
get the email, no big deal. However, we want to give the people there's very few so you get the email no big deal however we want to give
the people the opportunity to fix the typos before we send that email because we'll put the comment
content in the email notifications you don't have to come back to the website you can read what they
said right and i said alex we want to be able to edit those comments just because typos you know
we just want to be better than twitter this is back when twitter didn't have comment or didn't
have edit support i'm like we got to have edit support because we got to be better than twitter this is back when twitter didn't have comment or didn't have edit support i'm like we got to have edit support because we got to be better than twitter so he went ahead
and was working on that and what that required was basically a future scheduled background job
that when you create the comment for the first time it's going to schedule the notification to
go out in five minutes or three minutes or whatever the threshold is and we couldn't get that done
without oban i mean we could have done it some other way but he liked oban so he reached for
oban and then i was like well now that it's in here we might as well just use it for all the
other things that i was just using processes for you know spawn or whatever it is i can't remember
the actual module name i'm sure you know what parker task i'm pretty sure it's task yeah exactly
i mean you're still using task you're just usinger task i'm pretty sure it's task yeah exactly i mean
you're still using task you're just using task yeah i still use it passed by other things yeah
exactly and so i was like well let's just put everything in the background jobs now that we
have the library in here and we're already got the postgres table set up so we went through and i
think you did a lot of that work parker didn't you you came in and opened up a pull request which
was like big time helping us use oven better and so that's another way to do adoption is just, you know, one
open source repo at a time. Go in there and open a PR.
There are a handful of really prominent open source Elixir applications.
The changelog is one of them, but like Plausible is another really big one.
And Paper Cups, and there are a few. I'd like to mention they all use Oven.
But in different ways but any one
of those should hopefully because people go there to learn how do i put these things together what
are the popular packages it should be idiomatic it should be kind of how you want them used yeah
i think that was a really good use of your time go ahead and open up that pull request and making
sure our use of it is idiomatic because while while we do not use Phoenix idiomatically anymore,
as I stated earlier, with context and whatnot and live view,
we still have controllers in our code.
I know those are out of fashion now in Phoenix land.
Our use of Oban is idiomatic.
It's legal.
You're allowed to do that still.
You're allowed.
Yeah, like I said, our app still compiles and runs.
But our Oban use is on point.
So if you want to example example open use, oh yeah.
You even got a bespoke feature added to web
for your Bizarro authentication scheme.
Oh yeah.
Remind me what I requested and why you built it for me.
I think it's something...
I know what the feature is.
I don't know exactly why you guys were doing it.
It's a way to have authentication that just redirects somewhere else.
So if you're not staff or not admin or something, you can't get in.
But there are certain people that have access who aren't necessarily you.
So you want them to have read-only access.
And I guess it was like three tiers of access.
Yeah, it was just a case of, yeah, exactly.
It was beyond simple kind of Boolean, in or out. It was like three tiers of access. Yeah, it was just a case of, yeah, exactly. It was beyond simple kind of Boolean, in or out.
It was like three tiers.
And I can't remember the setup.
I could look at the code and have my memory jogged.
But it was basically slightly more complicated auth for the web access.
And hopefully it wasn't too much of work for you.
Because it was months.
Months of work.
That's all we did for months.
And you don't even remember.
I don't. I mean, I remember being happy
when it landed and I cut over to it.
I'm like, yay, it works now because I was doing something funky
to work around it.
I want to give you some praise. This PR was awesome because I think
it showed us early, and I suppose
even to now, what your intentions
were with the level of support
and care for the software you were
creating it's so dedicated yeah it's obscenely dedicated well i don't know about obscene it's
obscene well i had to even email you i i recall i was like so it's responsive yeah i was just like
i cannot believe that you did this i think uh i'm gonna read my email to some degree i'll at least
paraphrase some of it or literally quote it i was like first of all
like how do you begin an email with first of all sounds like we're in trouble oh no threatening you here no i'm not i am thanking you okay thank you for that awesome pr i went looking for your
github sponsor page and after that pr and found the obon site and web plus pro we'd love to support
the development.
And I think we supported for a bit and then we became pro users and something like that.
And so I was like, I couldn't believe this,
that you had gone so deep on this PR
and helped us in that way.
Because like Jared said,
we didn't know how to use your tech really.
And you came in like, here's how you use my tech.
And that's how we use your tech.
And it's awesome.
You would think just writing how to use something would be a better approach but sometimes you know sometimes words are hard it's easier to push sending links to docs doesn't always
give the best that's true it's a personal touch and i think that the world needs more of that
right the personal touch you get one of us that's just
the way that it lands right because there's no one else to get it's gonna be one of you guys
another ranty kind of thing but i just i wish there were a lot more independent shops out there
it doesn't have to just be two people just just a few people there are some mega software companies
i just wish there were a few,
just because the personality is great. It's like when you live in an area and you know the people
that own the restaurant, or you know the people that own whatever the shop is, and you have that
rapport and you know exactly what you're going to get. And when there's something wrong, you just
have a person to talk to. And you made a difference, Adam. I remember where we were sitting when he opened your email, when you responded.
Yeah. So this happens all the time. Where you write something, where you get an accolade or you get a response back from somebody or where you're working on something, we remember where we're at all the time. People meld to these these places so you made an impression with him saying thank
you has got to be part of it too you know people don't say thank you often enough they just sort
of accept it and move along i don't know if they're shy or just maybe they feel like they
might be bothering so i don't know what makes somebody not say thank you but i was like i was
moved and i was like i gotta email these folks and tell them thank you and uh at the time we
were really trying to do a lot more with,
and we still are, of course, but at the time,
we were becoming more aware of the tooling we were using,
the dev tooling we were using,
and trying to give back on GitHub sponsors
because that was becoming more and more of a thing to do.
And we obviously wanted to support you all in your efforts with Obon.
How do you feel about cron jobs?
Do you like them? Do you like them?
Do you hate them?
Like, how does this kind of merge into your world?
Because I want to give a shout out to somebody that I love and they're pretty awesome, but
they're in the cron world and I don't want to like ruffle your feathers if I don't have
to.
Well, so we've got, we have cron as part of Obon and it's purposefully kind of bare bones.
So you have a static cron tab that you set up and when your app starts, it'll go by that.
It's got some niceties like the reboot keyword and some of the things like that.
But then in pro, we also have what is dynamic cron.
And that has some things like guaranteed scheduling.
So if you were supposed to schedule something like at midnight and it's only once a month, but your server happened to restart or something happened, it will go back and identify that you missed that.
It will also let you update crontabs.
Retries and misses.
Yeah.
It'll let you update them at runtime or you can pause things.
You can pause certain jobs and you can insert new ones. We feel pretty strongly that
Cron's an important part of every production app we know of
because we get a lot of config that people send us for
diagnosing.
That's where it began for Jared too.
I was using Cron for these things and whatnot.
There's also the benefit that because it's Postgres backed
it's centralized and anytime you have a setup
two nodes, now you have a distributed system.
And either they have to have consensus or you have to centralize through something.
And so we kind of get away with a lot because of that centralization part.
But I'm curious who your cron friend is.
Well, yeah, I'll mention him.
I want to go on the note where you say you wish there were more.
Was the word you used small shops or small teams?
Yeah.
How did you say it?
Independent, but not faceless mega corporation kind of places.
I think they get kind of hidden.
Yeah.
And the reason why I'm going to say these folks is because they were kind of hidden to me until I had the problem.
And so it's not in the application world.
It's more at the Linux level world.
So the app I'm going to mention is called Chronitor.
Shane and his team, they're going to become a sponsor because I've been such a fan.
And I've been like hunting him down, telling him how I can help him.
And like, I'm just like a super fan of Chronitor.
So the website is chronitor.io.
And I use it heavily.
And there's lots of folks in the home lab world that I think would use it more heavily
because there's so many Cron tabs users out there like and cron just fails I mean you can go read a log
file that's kind of boring right you want it to go to an interface it's a little easier and you
want retries and grace periods and more sophisticated things which is all part of the
chronitor platform that they have and there's another name that comes to mind is molehill now
molehill was an early days Ruby shop.
Jerry, you may remember this.
They're from the Florida area.
This is like 15 years ago.
Well, you may know what they do now, which was they did some things in the nonprofit world, helping applications out.
But now their application is called Buzzsprout.
And you may know that, Jerry, because they are deeply into podcasting, and that was where Founders Talk, I think, and the Web 2.0 show,
the earlier podcast I had done,
and I think the Change.org was hosted there before.
Did we move that from there?
I'm pretty sure we did, Jared, before we went to 5x5
and then from 5x5 to our application.
So, I mean, Molehill was an early interface application development company
small shop
independent shop
however you want to frame it
Chroniter is very much the same
they have amazing revenue
they're like a few people
you know like the CEOs
doing support kind of thing
answering my emails
and you know
eventually sponsoring our podcast
I want to mention that
because like I hunted them down
I'm not mentioning
because they're a sponsor
like I was so emphatically
like y'all are amazing.
We've got to talk.
And then over a period of probably eight months, we finally like pinned something down to work together.
And I'm just a fan of small teams like that.
I agree.
I think indie teams.
And I wonder why.
Is it because of cloud?
Is it because of the behemoths out there?
Do they just, you know, get overshadowed?
What is it that makes indie teams not,
I don't know even how to describe how they're not there? Or are they just hidden and they're hard to find? Because I didn't know about Chronitor for a while, but they've been in
place for years. Successful enterprise teams. They're a small team with really big businesses
using them. I can hypothesize. I don't have any, Please do. This is all anecdotal, but I think safety's one part of it.
It's hard to be a contractor.
It's really hard to start software from nothing.
To bootstrap something is tricky.
And the amount of time it takes, if you have a day job,
to build something else for that safety,
to try to get to that place where you can actually run it without worrying about an
income stream takes a lot of dedication and that's double work in some ways and not everybody's up
for that but then also you get so many startups and what's the goal of most startups i mean they
they're incubated in some way they have have people backing them. Therefore, those people want to pay out.
And usually you have to grow to be able to get there or you're letting down your investors.
And if you let down the investors and you don't get to some sort of exit, then as a
business, you're kind of a failure.
Whereas if you're an indie mom and pop kind of place or however you break it down, even
if it's just a few employees
you don't have those you just don't have the incentive right it's your lifestyle and so i
don't know if people see lifestyle business as a as a detractor but to me it sounds like
the way i would hope more people could live he's an evangelist you can speak to this jared a little bit right you
can speak to this jerry because you ran object lateral for multiple years as a solo dev and
you always seemed to me i can i can probably uh should suggest some ways i thought you felt and
to some degree but you always seem very confident in your ability to and you were always very
customer focused i'm like you mentioned even recently, like, hey, I've had this responsibility
with this friend of mine.
I no longer do day-to-day work with them,
but I had to help them spin it up.
And you were lamenting how hard it was
to get their stack back into place, basically.
Right, right, right.
But you've had, as Object Lateral,
you were an indie individual person.
That was your full livelihood.
You raised a family on it.
Obviously, now you're working with Changelog
and that's in your past.
But for a long time, you were just helping people and slaying apps and hiring
contractors and getting the job done yeah i agree with all that was there was there a question in
there something you want to be no real question more just like share your experience share my
experience yeah well on the idea of indie mom mom-pop, the fear, the lifestyle.
And I think what Parker was hypothesizing was just essentially the fear of not being able to have this big job with a big salary and whatever.
Yeah, yeah, yeah.
Well, I think that growth mentality is just extant and pervasive on the internet.
Probably because of Silicon Valley, the ethos, not the TV show.
Both.
Do you get a chime for that one?
If it's just the name?
Every time.
Every single time.
I specified it's just the ethos.
I did not reference a television show, so no chime.
I said both, so there's a chime.
There's a chime.
I have a question.
Do you feel that the lifestyle, mom and pop,
what we do, we're in a a bubble so when we break out of this
bubble and occasionally attend a conference or occasionally go to a meetup do we drive people
away from choosing us based on how intrinsically our lives are wrapped around our project are we
driving them away i don't like the way you're phrasing this question.
You personally, just the two of you,
are just turning everybody off personally to the idea of it.
Just everybody's running.
I don't think so.
No.
I think people will say lifestyle business.
And when they say that, it's a bit of a pejorative.
They're like, oh, it's a lifestyle business.
Isn't that cute?
Right.
I don't think that's right.
I'm saying I feel that term is perhaps detracting.
Right, perhaps.
I think we need to take it back.
We should take it back.
But I think that what I did
and what you guys are doing is slightly different.
More than slightly.
I think it's different because I was effectively a dev shop.
I was a glorified freelancer.
There's a lot of freelancers making
livings on the internet, writing software on contract, service companies, like building
software, whether as a service or products, you know, like open pro and selling them to customers,
I think is a little bit of a different beast. And so I think there are a lot, there's a very
vibrant freelance community. And some people call themselves are a lot, there's a very vibrant freelance community and some people call themselves,
you know, dev shops or contractors.
Other people say they're freelance,
just like some people are developers,
other people are programmers.
But I think that's alive and well.
And I think there's more of that going on
maybe than ever.
But in terms of people starting
small software companies
in order to sell software,
whether it's as a service or, you know, as a download or whatever it is, there's definitely a lot less of those that stay small or start small for that matter.
Well, we have a few things going for us.
We started later rather than earlier, which is great for us.
We had already tried a few other endeavors.
I feel like that made a huge difference for us. I also feel like
we stopped consulting. I realized that you have what they refer to as a day job,
but that's really the only thing now, aside from Oban, we were consulting with about two clients each. So I think before COVID, we were, I would say we were pressed for,
I mean, time beyond compare. Yeah. So we, we stopped consulting and taking on clients
and that was right before COVID really kicked off.
Well, I might jump to a couple of things too, because if you're running your own software shop or your own product, you have to wear so many different hats.
I mean there's the entrepreneurial spirit itself and then it comes down to marketing and then having the technical chops to do that and then having the support side and then having the writing.
There's just so many things you have to do that balancing all that is difficult by itself especially if you're not
bringing in a lot of other contractors and i think the language you choose can make a difference as
well some things it's just it takes more time it's harder to do something with a couple of senior
people and some ecosystems compared to others yeah there's no one size fits all. I do think that maybe when it comes to software products,
it may be that the successful ones,
because of the profit margins on software sales,
which you all are enjoying, right?
Like every marginal sale for you
has nowhere near as commensurate work on your side, right?
You have support, but you know,
you could just sell them to the hills. And so when you start to actually get over that hump
and the flywheel is rolling, well, it's hard to stay small at that point because the other one
I'm thinking of is, and they actually sell hardware, so it's slightly different, but
it's similar is Thinkst with their canaries. We had Harun Samir, Harun Mir, I can't remember his
last name, Harun from Thinkst on the show last year talking about Canary.
And they're relatively small and making really good money selling these software, these security devices into enterprises.
They're like honeypots, basically.
And they have a hardware aspect, which means that their margins aren't as good.
But once their sales got rolling rolling they're making really good money
and he has to try hard to stay small because it's so easy to chase every opportunity when you have
capital to spend you know and so maybe that's why people end up chasing larger growth is because
you know once you've conquered the mountain then you're like well wasn't there's like a
old saying about a guy who cried because he had no more mountains to conquer was it alexander i think it was alexander
come on jared you guys know that one i don't know that one but i like the idea i mean i think that's
alexander as in the great or yeah yeah yeah no good very bad terrible day or which which alexander
the great of course anytime you leave off the the part, it has to be Alexander the great.
Who else could it possibly be?
The terrible?
Maybe.
You're thinking of Ivan.
That's Ivan the terrible, yeah.
Our growth has been stable.
I feel great about it.
I really don't know what I would say other than our growth has been stable.
And I feel like our churn is kept relatively low. All of these things are
great. When we go to balance our time, Parker is right though. It will be Monday for writing.
It's blogs. It's Tuesday. If something's on fire and we get a request, then that takes immediate
priority. But we really do have to stay on top of, there's another book I read,
what was it, like years ago though, about the Pomodoro, like your small tasks all day long.
It seems like we run these little box checklists with each other. It is not uncommon for the two
of us to sit right next to each other and not talk for three hours which he's like this is a lie he's like i
never get three hours he's like i never get three full hours somebody always one of us is talking
yeah yeah yeah well if we get an email from adam or from jared then you gotta pause and read it
you high-five each other do you guys have any sort of uh celebration routines like when a new
sale comes in you know a lot of people have people have some sort of a bell that goes off
or a thing on the wall.
Do you guys do high-fives?
Do you give each other a hug?
Of course we do.
In the early days, we did.
We would celebrate with steak,
especially if we got an annual sale or something.
You can only eat so much steak.
I'm sorry, I know there's a Texan available.
Which brings me back to my Alexander the Great quote.
Here's my Alexander the Great quote, which is, you can only eat so much steak.
This is, I don't think this is actually, I don't think he said that.
But the quote is, when Alexander saw the breadth of his domain, he wept, for there were no more worlds to conquer.
That was from Plutarch.
I think there are arguments about whether it was actually
from plutarch or whatever but that's the idea he needed he needed a pair of binos he needed some
binoculars no he so he's he's i'm gonna back into this one he's um he's dhh in a way how so his dhh
creates rails conquers the world right base camp does amazingly well. He starts a racing career.
He's Formula One.
Does Le Mans. Everything that he attempts works perfectly. He conquers it and then he's bored.
And then he laments like, well, what am I going to do next? It's just you keep conquering all
the little mountains and you get there and then you're bored. And maybe i'm a lesser person and maybe a lot of us are lesser people
but uh the like no i just redid a guide today and that guide it's clearer and it helped these
other people and that's like a small win but that's that's enough to just keep this constant
forward momentum so you're smoothing out the mountains instead of climbing a mountain then
finding a bigger mountain right just kind of constantly moving upward and finding some joy and peace in it.
Right.
The zen.
Sorry, DHH.
I'm over here thinking DHH is, you know, when he gets bored,
he goes on Twitter and throws Molotov cocktails.
You know, like he's bored, so he's going to go get into verbal spats with all of humanity.
What an interesting person, though, really. He is a caricature
for our, I mean, innovative
leader in a lot of cases,
but also just like a unique individual.
That's for dang sure, man.
If he's looking for any ideas, I feel costuming
and learning to fly commercial airplanes
is available. I think he should go
that route. Both? Costuming?
One or the other?
I think that's like
mitchell hashimoto's territory right flying small airplanes that's what i was thinking
yeah yeah well when you have the mills you can do the things yes and you can get cars and travel
them on which is you know i think if alexander the great had more hobbies you know like even
available you know like bill burr he flies a helicopter
and i feel like if alexander the comedian just had a yeah he's a trained helicopter
pilot and he seems to have so much rage for flying a helicopter i don't i don't know if i trust that
i think he only flies by himself for the most part but um that's what's hot that's one of his
hobbies like he does that to decompress and i feel like if alexander the great just had like a helicopter or yeah a f1 car or something
a mountain bike he wouldn't have cried so much would have been such a cry baby well i can agree
with that i mean gosh i've been so at peace in my garage just turning a wrench on my mountain
bike lately i've been doing some cool stuff and i'm just like, it's my happy place. I put some music
on. I jam for a couple hours by
myself. No drinks, just
turn the wrench and
it's good. It's analog.
It's not a computer. It's not a screen.
My son would come out and
help me for a bit too. The Calm
Bomb?
No drinks, just Calm Bomb.
Just Calm Bomb.
Just the essentials. Is that Nat. Just a little of it.
Just the essentials.
Is that Natty Ultra?
Love that everywhere.
The Natty Ultra calm bomb.
It's 300 milligrams.
It should be 600 to really take me to where I want to go.
Oh, gosh.
Yeah.
Well, we got to find our peace in our hobbies.
That's for sure.
I like your idea, though, of flattening out the mountains, though, because it's a good thing.
It's a good thing.
There is a lot of zen to our life.
There's a lot of balance.
Sometimes I feel like.
I think our children are here.
There's a lot of zen to our life.
When they listen to this, they're like, what are you talking about?
From the chaos.
Yeah.
When it's chaotic enough, it just averages out.
Well, even with this pivot you said earlier and this non-incumbent coming in, you know, making you think differently, big change.
I said this before, Jared.
Big change brings big change.
We don't always know the ripple effect of a new decision, right? And if you like where you're at currently and you like your relationship and
that's where it's at, I would fight to stay small and not small.
Isn't like not, not grand vision, but,
but small isn't like that you're still in charge that you're still calling
shots that you can maintain things that Jared and I, uh,
establish as rudders to our business has been slow and steady
wins the race that's a pretty common thing for for folks to think about but i don't think that
slow and steady means you literally go slow i think it means you can go as fast as you can
while maintaining a version of control for where you're trying to go that you're aware where you're
trying to go and you're going at a speed that is comfortable that might be 100 miles an hour
right doesn't have to be necessarily slow it's more like slow and steady so it's the two together
it's a pairing the other one is if we get sort of over our skis and we're sort of like rethinking
like oh my gosh you know this is a little out of whack or this things are off kilter slow down
and check yourself like what are you optimizing for? Those three things, what are you optimizing for?
Slow and steady.
Slow down and check yourself have been lifesavers in my personal life and in the business Jared and I run together.
And I can imagine he probably feels the same because he does say so.
So take that as you'd like and apply it as you'd like because that's helped us.
Yeah, I think you get great ideas in the spur
of the moment but anytime you just take that manifest it and then push it on the world you
there it wasn't quite there like you just have to take a step back and look at something like
in art school you're taught when you're drawing or you're painting take a step 10 feet back, look at it again, and then come back in
and rework it. Because until you take some time away, you're just not going to see everything.
Perspective. That's what that's about.
Right.
You need time for perspective.
Yeah, for sure.
You can't borrow it. Nobody can give it to you. You have to build it and grow it.
Adam, I think you said that emotional response you have, that's not always the one you want
to lead with.
That's not the one you make the decision with.
It's important to acknowledge it, have that conversation.
Yeah.
And even have it too.
I love, I mean, I've written some messages that I did not send, okay?
But it felt good to write the message.
Is that what we got?
No, he did send it.
No, he did send it. No, he did send it.
In reference to us discussing that pivot or not,
we've ran the tracks on a lot of different versions
of which way we could go.
And emotionally, really hearing each other.
I can think of a house we went and looked at
when we were first buying homes,
when we were home shopping.
And Parker turned to me the minute.
I mean, we had already put an offer on this house,
and it was during the home inspection, right?
And he turns to me, and he's like, I don't want this house.
I don't want this house.
He's like, I don't want this house.
This house will cause us to fight.
I can't stand in the shower.
I can't stand in the basement.
He turned to me, and he just had this instant tirade.
He's too small?
Are you a tall guy?
Or what do you mean you can't stand in the shower?
I'm not that tall.
He's a behemoth.
I'm not that tall.
I'm over six feet tall.
I'm six foot two.
Okay.
You have to hunch down in the shower?
It was a submarine shower.
I don't know what was going on with this thing.
It was like an 1860 farmhouse in a commuter town outside of Chicago.
So in our wraparound porch, I'm not saying this was the dream house,
but we had agreed on it.
And we're looking through the house and the inspection is taking place.
And I think we're just kind of wandering around to kill time.
And he turns to me and has
this, I mean, a very emotional response about, I do not want this house. I do not want what will
come with this house. I think it's going to cause fights. I don't like that. And I just said, okay,
well, we're out. I don't remember talking like I was in a Dr. Seuss book, but I think the sentiment's there. He did. He said it all. I do not like it, Sam.
I am.
I do not. I do.
It was a con list, bullet pointed verbally.
Wow.
Did you buy the house?
No, we left.
Contacted the attorney and pulled it out.
Have you guys ever seen The Wedding Singer?
Yeah, absolutely.
Remember how his bride doesn't show up for the wedding?
That's right, yeah.
And then she comes to him the next day and she's like, sorry.
That would have been useful.
Yeah, she's like, sorry, I just couldn't marry you.
Once again, things that could have been brought to my attention yesterday!
Yeah, I'm just imagining Shannon yelling that to Parker when he's like, I don't want this house.
I appreciate the decisiveness there and just put it out there before you make the big mistake.
But didn't you notice that during the walkthrough, Parker?
I mean, come on. You couldn't you notice that during the walkthrough, Parker? I mean, come on.
You couldn't fit in the shower the previous day too.
Did I try to get in the shower the previous day?
I don't know.
Try to go more place no blame.
No, sometimes you do something.
Let's just get out of this situation.
It's a dumpster fire now.
I was like, oh, this is a dumpster fire.
So the first part, I just called the attorney and
said, yeah, we got to get out of this. You got to get us out of this. He says, no.
You do things with a partner, whether that's a spouse or business partner or friend that,
you know, maybe it doesn't seem like your idea, but it might work. It might grow on you.
And maybe that's not always a good, you don't have that fight or flight,
you don't have the flight part, you just know that maybe it'll work.
So it's important to listen to the bullet point con lists when somebody decides to give you an
honest read like that, and not emotionally. So I feel like we've had a lot of that back and forth
on whether or not to pivot. And to get to that point of being able
to really listen of like Adam said, like, look, if you value this, if this is where your values are,
if this is what you're working towards, recognize that that's at stake. I hear you. I hear you,
oh wise one. Big change brings big change. That's so ominous.
So ominous.
You're scared.
It's like he's at it.
It's too calm now.
It's too calm.
Can I explain it a little bit?
Like this is.
Oh, I think we understand it.
I want to explain it.
I'm sorry.
I have to.
Regardless of your answer, I'm explaining it.
We understand it.
Just one second.
Bear with me here.
Sometimes we make choices in our life and they are big changes and we think we're just making that one big change. And this is coming from my own perspective. So this is like School of Hard Knocks, Bloody Knuckles situation. And you think you're, okay, you've risk factored that single one big change. And maybe you consider a couple ripples right but sometimes that big change
brings other big change that you did not de-risk and that's where my perspective is with that like
sometimes big change brings big change because you've thought through the one thing but have
you thought through all the permutations now we can't do that but everyone knows what a version
of big change is in their life and apply it accordingly.
Big change can bring big change.
So beware of the contagion.
Yeah, I mean, there's ripple effects for sure.
The one big change you're considering and saying yes to isn't the only big change possibility as a result of the yes.
And likewise, the no.
I feel like that's potentially crippling advice, though.
Sorry, Jared.
It's just ominous.
You're like, don't make a big decision because it's going to cause other big ripple effects.
I didn't say don't.
I just said big change brings big change.
Prepare.
Take a towel.
Is that not a warning?
It's a warning to consider your big changes.
Yeah, I think it is.
I don't consider it a warning.
It's more like a red flag.
I guess that's the warning.
I don't know.
It's not like a red flag. Like, I guess that's the warning. I don't know. I mean, it's like a negative warning.
It's just more like, hey, if you're making a big change,
consider there's other big change you haven't considered.
And don't go in with like zero margin.
Have some margin.
When you go into a room, plan your exit.
Or consider that you might need to exit.
Or when you go to buy a house, consider an exit, you know?
Yeah, I mean, I think that's just how I operate.
At least I try to.
And I get really upset when I give advice and I don't always take my own advice.
And I'm like, Adam, you knew better.
What is wrong with you?
And then I podcast about it.
That's how it works.
Oh, not taking your own advice is the life of... It's the worst, man.
Yeah, I mean...
Every senior developer.
It's true.
Yeah, it's the worst. It's the worst when your own advice slaps you It's true. Yeah, it's the worst.
It's the worst when your own advice slaps you in the face.
Like, you knew better.
Come on.
But that's it.
Big change.
Brings big change.
Well, we are excited for you, too.
We are excited to see what comes next.
What big change, your next big change is going to bring.
I'm looking forward to some new Elixir content.
Some hot takes from both of you. Some forward to some new elixir content some hot takes
from both of you some widening of the elixir ecosystem i would love to for you to put on
on paper or perhaps on video like how open is a killer app that should make you pick elixir
exercise that thought all the way to its logical conclusion and make that argument
i would certainly read that i would certainly share that around i'm interested in that
and um congrats on all the success i mean you've doubled your freedom number and you're still
rocking and rolling i just don't believe it will ever lead to a retirement and that's great because
that means we have options now we have options and it the freedom is there it's just the freedom
to choose the reason that people retire and then they end up going getting another job is that they
have no more mountains to conquer you just got to keep it keep it going that's right it always goes
back to alexander the great smooth mountains so this is what paul vixie said to us last week
i asked him because paul vixie has conquered mountains. So he's a internet hall of famer, instrumental in the DNS protocol, et cetera.
He wrote bind.
Actually, Vixie's cron is still the cron that runs in most Linuxes today.
Like his implementation of cron is still there.
So he's been in the business, you know, 40 years, 60 years old, working at AWS at some
high level.
And I asked him why he hasn't retired yet. And he
said what I learned about myself, cause he had an opportunity to kind of call it quits. He sold
another business a few years ago. And he said, what I realized is if I didn't have a reason to
get out of bed, I'm not going to get out of bed. And he learned that about himself. And so he said,
so I went back to work and now I have colleagues and I have projects and I have trips to take and stuff to do. And I'm just a happier person with a job than I was without one.
So not that he's every person. Some people can retire and find all kinds of stuff to do for
themselves that are not money producing. But I think we do need to have a purpose and a reason
to get out of bed in the morning. Otherwise we just just kind of waste away. And I mean, heck,
some people die young because they retire young. So that sucks.
I've got to make something or fix something or the day is just not complete. So I hear him on that.
Physical or digital?
Well, I'll answer your call. Content is coming. And we have a talk at elixir conf eu in lisbon which is about scaling
applications and we have an application that we're building to push the boundaries of what's
kind of possible for job processing and that'll be part of that talk too so we're working on it
we'll see if we can get in the how open is a killer app for elixir hot take i love it before elixir comp you
there you go when you write that or record that or whatever it turns out being as media
let us know it's been fun bye friends bye
changelog plus plus listeners stick around for a wild bonus segment
where Adam suggests they take their Elixir is Better Than X content series on the road.
I accidentally offend Shannon, then recover gracefully with Parker's help,
and Shannon makes a confession about their past.
That includes chickens, a sauna, and the ChangeLog podcast.
What, what, what?
Of course, if you don't directly support our work
with your hard earned cash
join hundreds of your
fellow ChangeLog listeners
who do
by signing up today
at changelog.com
slash plus plus
as a thank you
we hook you up
with an ad free feed
include bonuses
like this one
at the end of many episodes
send you some free stickers
for your laptop
and more
it's better
that's what people are saying.
It is better.
It's been better for years.
Thanks again to our partners at Fly.io,
to Breakmaster Cylinder for the continuous flow of fresh beats for us and our friends,
and to Sentry.
Save $100 on their team plan by using code CHANGELOG when you sign up.
Next week on The Changelog,
news on Monday,
Chris Moore from True Naz
on Wednesday, and the much-anticipated
return of Cameron Say.
Yes, THE Cameron Say
on Friday. Have a great weekend,
hook us up with a 5-star review
if you dig it, and let's talk again
real soon.