October 20, 2015
Ep. #5, Overcoming the Fear of Shipping Code
In this episode, Edith and Paul talk about the fear of shipping, and whether code is an asset.
In episode 75 of JAMstack Radio, Brian Douglas chats with Johan Eliasson of Nhost. They discuss their favorite JAMstack tools, the inception of Nhost and its use cases, and other innovations in back end services.
About the Guests
Brian: Welcome to another installment of JAMstack Radio. On the line, we've got Johan Eliasson.
You want to introduce yourself, tell us why you're here?
Johan: Yeah. I'm Johan from Sweden, living just outside Stockholm on the countryside.
Happened to have bought a house just before COVID hit, which was pretty good timing.
But yeah, other than that, I like sports, programming, computer science, math, reading books.
So that's what I'm doing. And also of course, a lot into JAMstack and that whole ecosystem.
Brian: Excellent. Yeah. I'm into JAMstack too, that's why I have the podcast.
You actually reached out, and I loved when folks, if you want to reach out and join the podcast, be interviewed about your project, what you're working on, or just have some commentary about the JAMstack in general, hit us up.
@JAMstackRadio on Twitter.
I'm always happy to get new guests.
And so yeah, you reached out directly about a tool I've never heard of actually, which is called Nhost.
So actually what is Nhost and where did it come from?
Johan: Yeah, so Nhost is a company and a project of mine that I've been working on for a little bit over a year now, and it actually started a long time ago when I was in a high school.
I started learning programming, I borrowed a book on the library about PHP and MySpell back in 2008, roughly.
And after that I spent the next five or so years just building out all the cool things I could imagine.
And in the last company I was working at, I was rebuilding a CRM system that I had been building in PHP and MySQL previously.
So I thought that, "Okay, now I'm going to build this in a new modern way. I'm going to use react, and I need decoupling the front end with a backend and all these things."
And I was looking through everything that was available at the time, something called Meteor JS, Firebase was available. I could build my own Rest, or GraphQL backend.
Johan: That of course took a lot of time.
So none of these options really fit into what I really wanted out of the backend.
And it was actually just a coincidence, I was browsing Digital Ocean, was about to spin up a new droplet.
And they have a marketplace, and I found, it was something that caught my eye and it was a cool Lambda sign together with GraphQL, which happened to be the Hasura logo.
So I just spent one of those droplets up with a Hasura, this was roughly 2019.
Johan: And 30 minutes after that, I was just floored about this piece of software. It was just amazing.
So for those who don't know it, Hasura, they have a graphical engine that runs on top of Postgres and automatically generates a GraphQL API based on your tables and columns in Postgres.
They also have real-time capabilities.
So this was the missing piece that I was looking for on the backend.
So I just thought that, "Okay." In the back of my mind, had the idea of a Google Firebase, which have a really good developer experience, but the tech wasn't good, no SQL database and all these things.
So I thought, "Okay, now I can do that myself. I have a Postgres database, I have the GraphQL API."
I built out authentication and storage myself and open sourced it.
So now I have, from my point of view, a really, really good backend that was modern and had all the good things that I wanted.
So I just opened sourced it, people started using the Hasura backend plus, which is authentication and storage that works well with Hasura.
But still it was hard to get started because you would need to configure Docker and all this yourself.
So I thought, "Okay, I will just do what Google Firebase is doing, but with this stack instead." And that later became Nhost.
Brian: Well discovery of that is I think very similar to what other folks who are looking for, similar.
Remind me how long ago was that when you made that discovery and found Hasura on Digital Ocean.?
Johan: This was late 2018.
Brian: 2018? Okay. And I think Hasura was actually on this podcast episode 35 as well.
So if anybody's interested in hearing their product and their story and how they got started, definitely check them out.
But yeah, they're doing some great stuff.
So I didn't realize I missed a part of Hasura and the documentation on Nhost.
So you're combining a couple of different tools and getting that easygoing on a Digital Ocean droplet.
What's the advantage of using something like Nhost rather than doing it yourself?
Johan: Right. Yes, we're using Digital Ocean for our own infrastructure currently, but that is of no concern to our customers, let's say, because we handle all that.
So the advantages that you just go to an Nhost and create a project and we will spin up all the services for you.
So we will spin up a Postgres database, we'll spin up a Hasura instance, we will spin up authentication and storage for you.
So you will just have the services available to you and you can start building and you don't need to worry about configuration, servers, security, scalability, the boring stuff, I would say.
Johan: So you can just start using it, just like a service.
Brian: So is it similar to Heroku's approach?
Because I know Digital Ocean, and we talked about this before we hit record on the podcast, but I know so many people at Digital Ocean, they've never been on this podcast because I usually bring on people who I'm excited about their projects and their work.
And Digital Ocean, not that I'm not excited about their product, I think it's a great product, I just never got it as me as a developer.
But I liked the way Heroku has the auto-scaling for you.
So it sounds like you're bringing some of those features and applying that to Digital Ocean. Is that correct?
Johan: Exactly, you can say that.
And also we're opinionated about the software, we're one layer above Digital Ocean.
So we made the decisions that, "Okay, it's going to be a Postgres database. We will configure it with Hasura authentication of storage."
So the underlying infrastructure doesn't matter to our customers.
We can switch infrastructure whenever we want to.
Johan: So it's not coupled with Digital Ocean, even though I'm a big fan of Digital Ocean, but our customers are mainly front-end engineers who just want to focus on their front end up and have some kind of UI and a management with a database and users and these kinds of stuff.
Brian: Yeah. And I think that's really powerful too, as well.
The opinions, that's a selling point to me.
This is what I would consider Nhost for, is that I don't want to make a decision on Postgres, MySQL, this flavor, that flavor Mongo.
I just want to ship an app. And, I know how to get the react components to view components, whatever it is.
I know how to put those on the screen, I know how to do my CSS.
That's where I want to spend my time, I don't want to have to spend my time on trying to scale my infrastructure because I showed up on Hacker News.
And those are the things that I love about things like the JAMstack and things like Nhost, that you provide the opinions along with the package.
And I agree, Digital Ocean, I don't mind where the stuff is hosted, but I do mind on how much effort I have to do to maintain that stuff.
Johan: Yeah. So that's exactly our philosophy as well.
Our customers, we will give them the package and they can start using it right away.
And yes, we're opinionated about the software.
So as we mentioned earlier, the Postgres, with a relational database for GraphQL API and this kind of stuff, but we also are opinionated about the workflow.
So we have a CLI, so you can do local development, we have a GitHub integration so you can just push your database migrations and GraphQL metadata to your repository and we will ultimately deploy it.
We're trying to take a lot of inspiration from great services such as Netlify and Vercel, but trying to do that for the backend.
Brian: Yeah. And I love it too, as well.
And I'm taking a look at your offerings to you on the page and things like--
You have a starter plan, which is $4 a month.
The next tier up, having database backups as part of your feature set, another thing that I've painfully had to do myself and manage, mainly because that's just how infrastructure at my current employer works is you it out yourself, or you join an engineering team, which I'm not on an engineering team today.
What I'm getting at is I love that these are sort of opted in and built in opinions, situations, that I can have managed with the project.
I'm curious though about the makeup of the team, are you working on this yourself or is this a full on startup?
Johan: So it's me and my co-founder Nuno Pato.
Nuno joined a couple of months after I started it, and we've been working on this remotely.
So I'm here in Sweden working and Nuno is from Portugal from The Azores.
So he's having a little bit better weather than me, I'm not jealous at all.
But it's just him and me for the moment, but hopefully we will have some good announcements soon that will change that.
Brian: Yeah. Excellent. Well yeah, I'm looking forward to hearing some more announcements.
I'm hooked just by the first 10 minutes of this conversation.
So I'm very intrigued about what you all are offering.
I'm curious, let's take a step back into learning more about Sweden.
You said that you're outside of Stockholm?
Brian: Were you involved in the developer community obviously prior to the pandemic?
And then curious of how you've been situated during the pandemic?
Johan: I wouldn't say this is geographically dependent.
My work-life is online, so all my resources are online and I'm always building stuff so I'm always trying to keep up with what's going on in the developer community.
I just moved to Stockholm one and a half years ago.
Brian: You were there long enough to understand that there was a scene, but then basically stay inside?
Johan: Yeah. What happened was actually we moved here and then a couple of months later I joined this startup accelerator called Antler.
This is where me and Nuno met actually. So we met early 2020 in this startup generator.
Brian: Okay, excellent.
Johan: Yeah. So that was a big boost.
When I moved to Stockholm, I got into this startup accelerator, getting into a startup context.
That was really important as well.
Brian: Okay. Was it specifically to work on Nhost or for something else?
Johan: For me, it was specifically for Nhost, but Antler in general, they bring 80 people together and then you brainstorm and mingle for a couple of weeks and try to build teams and companies.
Brian: Yeah. I love that. I love the idea of actually rubbing shoulders with other folks.
And it sounds like, I've done the same, I've got the connections online, despite the fact that being based in San Francisco, so much has been forced to be online in the last year, but we've always been online.
Even though we've had meetups, we've had accelerators, we've had connections through conferences.
So it's inspirational to hear that you're able to thrive during this past year.
So I'm curious to find out where any more about Nhost and try to figure out what types of projects would you recommend sign up for Nhost and start shipping to it?
Johan: Right. So any type of app that you want to build, mobile app web app.
So I Nhost is front end diagnostic, which means you can use any front-end framework, like React or View or whatever 10 do you want to use.
And since the offering is so general, it's a Postgres database, you decide what tables and you decide the schema and all that.
There is no limit to what you can build. There is no industry that this is specific for. If you're a developer and you want to build something, this is a great way to get up and running quickly.
Within 45 seconds, you have the backend ready and you can start the app-specific things that you really want to work on.
When you're having an idea in your head, you just want to get it out there as soon as possible.
Brian: Yeah. An I love the fact that, we talked about Hasura a bit, but they've already figured out some of the scaling things and how to manage the Postgres SQL database.
There are again, things that, when it comes to me building a new app, because I tend to, I'm a serial--
I will NPM tons of stuff, try things out and try to figure out what frameworks.
Right now, I'm actually spending a lot of time building a lot of RedwoodJS applications.
It's a newer framework, it doesn't have a lot of examples, recipes, tutorials out there.
But I love the fact that things like Nhost, I could just slide into that existing situation, because I've got the front end decided.
But actually one thing, I don't know if you mentioned it, Prisma, does it hook up in well with Prisma at all?
Johan: Well, so you don't need Prisma, so to speak, with you is you're using Nhost.
Johan: So instead Hasura's GraphQL engine automatically generates the GraphQL API for you.
Johan: And you can extend that GraphQL API if you want inside the Nhost consult.
But just a quick mention on Redwood, it's interesting that you mention it because Nuno my co-founder sent in a PR to them a couple of days ago about, so you can actually use Nhost together with Redwood with authentication.
And we also added support for subscriptions in the GraphQL API.
So now you can use real time together with Redwood.
We have a PR open and we'll see how that goes.
Brian: That's amazing. I think between RedwoodJS and Blitz, I feel like those are the two--
Everybody loves Next JS and I love Next JS, but I feel like those are the two opinionated frameworks that I don't think they're competing directly with each other, I think they're advancing developer love ecosystem, getting stuff solved real quickly.
So at this point, you just need to choose what flavor you're looking for and then you're off to the races pretty quickly.
Johan: Have you tried both of those frameworks?
Do you have an opinion about both of those?
Brian: Yeah. Good question.
So I've had both of them on the podcast I've had the founder and creator of Blitz JS, and then also had an Anthony Campolo, who's part of the Redwood team.
And I've tried them both, I built stuff with both of them.
Real quickly, again, I just build stuff, stand it up and see what it looks like.
And then I've made the decision to build a project on RedwoodJS, mainly because it's deeply coupling with Netlify and all their features, and everybody knows on this podcast that I'm a fan of Netlify.
Yeah, so I've tried both of those, I think they're solving different problems.
Where Redwood gives you the scaffolding piecemeal experience where it definitely does give you some options, with the scaffolding you can have flags for different options.
With BlitzJS, I think there are less options, but a very strong story.
Brian: So when you think about BlitzJS is very strong, it couples with Next and Vercel, it's a very strong story if those are the things that you're looking to ship and you do a lot of marketing sides or perhaps you're just doing a lot of projects--
Maybe you're at agency and you have the same structure that she's want to ship over and over again, Blitz is a good choice for that.
Johan: Interesting. Yeah.
I have some experience with RedwoodJS, but I haven't tried Blitz yet.
But they're doing full stack, that's their slogan, full stack.
Brian: Yeah. So Blitz, their opinions are stronger when it comes to the full-stack.
So you are tied into Prisma, you are tied in to Next JS.
And for the extent, you're tied into Vercel, because I think a lot of the user documentation stories are Vercel today.
But I know they're exploring other deployment use cases as well.
But I think it depends on how much tunnel vision you have when you're shipping.
If you're just trying to get something done and you already have decisions made, Blitz is probably the way to go.
If you want to experiment with the Postgres or the MySQL or Vercel or the AWS, Redwood is a good solution because you have a lot of the pulleys and levers within the framework.
So hopefully I give that justice and explanation.
Johan: It's interesting to see the innovation that is happening on the front end.
There's so much innovation in the front end. And now these full stack frameworks, I would say also there's some innovation being done here now in the backend.
So it's going to be interesting to see here, how everything goes down here in a couple of years.
Brian: Yeah. Yeah. And actually, one of the questions I wanted to ask you is about the innovation in the back end.
We're now seeing folks who want to take the Vercel experience and the Netlify experience and apply it specifically the back end, because I think Vercel does have a backend story, I think it's not as strong as a place like probably Nhost where you do have some more decisions made.
Vercel's a little more open waters, but I'm curious of how you see the competition within this opinionated back-end decisions.
Actually, I'll leave it at that. I want to hear your thoughts and then I'll add my thoughts to it.
Johan: There is some overlap between services like Netlify, Vercel, Nhost, and other services.
Netlify and Vercel, they started out with the front end and they're moving to the back-end with serverless functions.
And I think Netlify has an offering about authentication as well, whereas Vercel don't for example.
So I would say 95% of all our customers are using Nhost as the backend for either Netlify or Vercel in the front end.
These services are very complimentary, I would say.
So they will do everything that is backend with Nhost and everything that is front-end with either Netlify or Vercel.
And with Nhost, we have the persistent data store, that one is I'm very opinionated and I don't think Netlify and Vercel want to be that opinionated, I think they want to be broader in their offering, I would say.
Brian: Yeah. I think in the ecosystem, the JAMstack, so you mentioned Netlify and their authentication layer, I think that's a nice additional feature to Netlify, but it's by far not their focus.
So when you think of actual levers and pullers when you think of altercation, you don't think of Netlify as authentication built in.
I did a few widgets and stuff like that, but you might think of Auth0, you might think of some other solutions or one of the AWS offerings.
So with that, in the back end I think it's quite similar, where I don't think anybody's really as deep when it comes to things like decisions and Postgres decisions and scaling and infrastructure.
But I think Vercel and Netlify have some good options that are partners with them.
But if I had my 2 cents, I think it's these flavors, these stories, these recipes, whatever you want to call these opinions, we've been seeing opinions.
So these opinions, I think is really where it comes down to.
I don't think developers want to make those opinions.
I think with developers, what they want is to pick an opinion that has support and community, has support and documentation, has support in scaling and infrastructure.
And I think whoever has all that, those things, I think is going to basically become the leader in the space.
Because I don't think any new bootcamp grad, college graduate is going to be able to be deep on almost anything.
You just have to be able to be nimble and learn how to solve problems.
And the best way to solve problems is by having proven solutions that you bring into your project.
Johan: Yeah. I agree with everything.
I agree with everything you said there.
That's the premise we're building Nhost on as well.
It doesn't make sense for everyone to every time go through the same pain to figure out what's the best data store and how to configure authentication with a database and with API and all that back and forth.
At the end of the day, you just want to build your app and be productive and build something really cool that your users and your customers can find value of.
And I will say one more thing maybe about the different services you mentioned Autho0 and these services.
I'm not really convinced that if you're starting out building, this opinion or this thought about, "Well, you can just pick and choose, you can use Fauna DB, you can use Auth0 here and you can use Vercel over here for the front-end."
And that's good in theory, but for me, now you're leaving a lot of responsibility on the developer to figure out and configure all these different services to talk to each other.
Johan: So this is also where we want to be quite opinionated and have a very broad service stack for our users as well.
And that is why we're not just hosting Postgres or we're not just hosting storage, for example, we try to do all those things and integrate them well with each other.
Brian: On that point too as well, I love the trend of these backend solutions having opinions around authentication, because I think having your authentication coupled to your data store, I find a better ergonomic experience when I can have different roles and authors and admins directly tied to who can access the data.
As opposed to having a third party tool to be able to filter through like, "Ah, this is an admin, is this a role."
Now, as you mentioned, have to figure out how to wire these connections together.
And then that becomes more of a burden and more of a cognitive load when it comes to, again, speaking directly to front-end engineers or perhaps people who might be full-stack, but maybe lean towards the front end.
That's another thing that you have to decide on top of how to configure tailwinds.
Johan: Yeah. And just the fact that, for example, when you create a new user on your end host project, that user is in a user's table in Postgres.
So you just have it there right there, right away, instead of some other place and you need to shoveling data back and forth and sinking these data stores, for example.
That's something that I find very useful as well.
Brian: Excellent. Yeah, so I'm rounding up the conversation.
I'm curious if you have any insight, right before I moved to picks, anything that maybe we didn't cover or you want to add to the conversation?
Johan: No, I think we've covered it quite well. Hopefully.
Brian: Well, if we haven't folks could always reach out to you.
You'll have a great looking website, you've got a context section as well. Yeah.
Everybody sign up for Nhost and it give it a try. I'm looking forward to try to get myself.
Johan: Yep. Cool.
Brian: All right. So Johan, we're going to move into picks, these are things that we're jamming on, things that keep us going, especially as we're all working from home, building projects.
This could be music, food just about anything related. So without further ado, let's just jump in. I will go first.
I see you do have some picks, but I'm going to jump in and mention, I just got done listening to the latest episode of the lady bug podcast.
I'm just going to say the lady bug podcast as a pick in general, you should definitely listen to it.
I love that not only do they have great conversations, it's a three panelist podcast would have three hosts and they chat through all different topics and subjects and they just want to round the horn and talked about explaining cloud just in general.
I think something that no one takes, I learned about the cloud 10 years ago, but I never took time to actually understand what the cloud is today in current ecosystem architecture.
So they broke it down. And I thought the explanations were really well thought and were able to bring folks who maybe didn't have 10 years of experience and could catch up along for the ride.
So they do a really good job of just taking those concepts and actually explaining those, as well as they do have some great guests too as well, every now and then they'll bring a guest on to be the expert and talk about things.
So I just loved that for leveling up and catching up with stuff that I wasn't paying attention to in the last year.
And the other thing I want to mention, I had just did a finish up a series, 28 days of GitHub actions.
So every day I was sending a tweet and I was writing a blog post and I was also doing a video of a tip on GitHub actions.
And definitely check out the tweet, it's pinned on my Twitter profile, at least for now.
I do have a GitHub tips and tricks playlist on my YouTube account too, as well.
We can watch all the videos back to back.
But what I wanted to mention that for is because I was able to take a constraint, which is two minutes for any subject for GitHub actions, and then every morning I would just a code CATIA or drinking tea, making coffee, I would just write a blog post about the subject of a tip that I had.
I planned out the tips like a month in advance, so I wrote the list of what I would do.
Did a video every day, shipped the video, just like clockwork, shipped the blog post, shipped the tweet, and then moved on with the rest of the day.
And I felt like for the first time in probably a couple of years, I felt like I was in the Zen zone of just building stuff.
And I would just take projects and add a new tip.
Most of the examples I had projects already that were using actions.
So the way I planned it is I would use real life examples.
I say mostly use real life examples, some of the later videos I had to make it up because they got past where my skill level was.
So I had to create some new applications so I can build concepts of the videos without breaking my current builds because I did that a couple of times when I was testing out a feature.
But anyway, I mentioned that because I would just encourage anybody who wants to write content or create something, just have a plan and keep constraints to it, because I think that's why I shipped every day is because I had to limit it to two minutes and I had to limit it to one new feature within GitHub actions.
So with that, any thoughts?
Johan: Do you want to tease something about the GitHub action, any one particular that you want to mention that's interesting?
Brian: Yeah. I think one of the more popular ones was actually a former guest on this podcast, Ben Schwarz.
He is a founder of Caliber, which is a web metrics performance tool.
And he built a GitHub reaction to compress images at the time of build.
So one thing that I do all the time is I have a blog and I'll just upload images to my GitHub repo and then ship the blog and then move on.
But never think of, "Hey, should I make sure the image is scalable and compresses in the proper situations?"
So take away what Next does and what Gatsby does with the image compression, but instead, give them the right size image to start with.
So rather than a 10 megabyte image, give them a one megabit image so that they can scale-- because there's way too much overhead.
So when you think about import for formats, this one GitHub action enables it by default.
At the time I open up a PR, I see the comment in my GitHub repo, tells me how much compression happens and it's a great little thing.
So for whatever reason that example was one of my most popular blog posts this month.
I did have some other blog posts around automating release notes and doing Semver with GitHub Actions.
That one also did pretty well.
Johan: Nice, nice. Compressing images and stuff like this, that's an interesting problem.
We actually just released image transformation at Nhost storage.
So you can transform it just on the fly with different widths and heights and quality.
Johan: There's some really good lips there to help you do that, so that's cool.
Brian: Excellent. Do you have any picks for the listeners?
Johan: Yeah. So I love reading books, so I have two books that I want to recommend.
So the first one is Deep Work and the second one is Digital Minimalism.
I think it's the same author, but these two books are really good. If you are concerned about your focus and just the distraction that exists in a modern life.
So I really recommend these two books. Really good books.
The third book I would recommend, I think it's called, Can't Hurt Me by David Goggins.
I don't know if you've come across this.
Brian: No, I haven't heard of that.
I've heard of Deep Work and I've not heard of Digital Minimalism. So those are two new books for me.
Johan: Yeah. So the third one is not on the same topic, it's David Goggins.
I think it's called Can't Hurt Me. And David Goggins is just a very interesting person. He's really cool.
He talks about his life, his journey.
Let's say he didn't do as much when he was younger, and then he became a seal and ran these crazy ultra marathons.
Just an amazing story, really recommend.
Johan: And one other pick that I started to use or read about recently is mental models, and just general mental models about anything in life that can simplify your understanding of the world.
And I will just take one example. So for example, the map is not the terrain, for example. Yeah.
That's just one example, but you go and use that in so many ways in life to make better decisions and understand the world better.
Brian: Excellent. Yeah. I'm looking forward to checking those out.
I have recently got in the minimalism and thinking about what is needed.
Actually, I did have a followup question on that book, is it about basically deleting folders off your desktop?
Because that's what I need, I need help with that.
Johan: Yeah. I think it's more about removing distractions in forms of notifications and just unconscious stuff.
Social media, checking emails too often, these kinds of stuff.
But probably, if you all the time go to your desktop and you see this folder or directory that triggers something inside of you, maybe you should move it or delete it.
Brian: Yeah. Okay. Excellent. I think I might already be halfway there because I don't do notifications on my phone, mainly because it's just always going to be a distraction.
So I do turn off notifications on things, actually I don't have email on my phone just to make it easier for me to disconnect from the-
Johan: Sounds like you're a follower already, so sounds good.
Brian: Yeah. Oh, I got to pick up the book now.
But Johan, thank you very much for talking about Nhost, I'm super excited about the space and super excited about this evolution and these opinions.
And I hope that the listeners will give Nhost a chance and try it out and definitely report back and let you know what they think.
Brian: And listeners, keep spreading the jam.