skip to content
Podcast cover art for Discussing Sailsconf 2023
Podcast

Discussing Sailsconf 2023

Kelvin and Anthony discuss Sails.js, Sailsconf 2023, and the broader JS ecosystem, including CLI tools, hosting, open source, and community building

Open .md

Episode Description

Kelvin Omereshone joins JavaScript Jam to discuss the Sails.js framework, the upcoming SailsConf, and building full-stack JavaScript applications.

Episode Summary

Anthony Campolo hosts Kelvin Omereshone on JavaScript Jam Weekly to discuss SailsConf, the annual online conference dedicated to the Sails.js framework and the broader JavaScript ecosystem. Kelvin shares his journey discovering Sails five years ago and organizing the conference since 2020 as a solo effort from Nigeria, highlighting the global nature of the web development community. The conversation covers Sails.js itself — a full-stack MVC framework for Node.js inspired by Ruby on Rails, featuring an ORM called Waterline and built-in WebSocket support. Kelvin explains how he built an Inertia.js adapter to unify Vue front ends with Sails backends, leading to what he calls the "Boring JavaScript Stack" (Vue, Inertia, Tailwind, and Sails), his upcoming conference talk topic. Donald (Loki), a speaker at SailsConf, joins to discuss his talk on building cross-platform CLI applications using his own Formidable.js framework. The group explores hosting options for Node apps, comparing Render, Railway, Fly, and Edgio, and touches on topics like GraphQL versus REST, FormKit for Vue forms, and Kelvin's work at Treblle, an API observability company. The episode closes with details on how to attend SailsConf and join the SailsCast Discord community.

Chapters

00:00:00 - Introductions and the Story Behind SailsConf

Anthony Campolo opens the show and introduces the topic of SailsConf before welcoming Kelvin Omereshone, a full-stack JavaScript engineer based in Nigeria who works at Treblle. Kelvin shares how he discovered the Sails framework around five years ago and organized the very first SailsConf in 2020 with roughly 12 to 13 speakers — an impressive feat as a solo organizer during the pandemic.

The conversation touches on the global nature of the web development community, with Anthony noting that over 50% of his show's listeners are outside the United States. Kelvin reflects on how the internet and open source transcend borders, and the two discuss the rise of Twitter Spaces as a platform for technical conversations, with Kelvin describing his recurring Tuesday sessions covering common web development misconceptions.

00:07:18 - What Is Sails.js and the Full-Stack JavaScript Story

Kelvin explains Sails.js for newcomers, describing it as a full-stack MVC framework for Node.js heavily influenced by Ruby on Rails. It ships with batteries included — an ORM called Waterline for database interactions and built-in WebSocket support for real-time features. He contrasts it with Express, where developers must create their own folder structures and conventions every time, positioning Sails as the JavaScript equivalent of Laravel or Rails.

Kelvin then describes how he built an Inertia.js adapter for Sails to unify Vue front ends and Sails backends into a single codebase, eliminating the need for a separate Nuxt project. He migrated everything in just two to three days, coining the "VITS stack" (Vue, Inertia, Tailwind, Sails). Donald (Loki) also joins the conversation, introducing himself as a software engineer who will be speaking at SailsConf about building cross-platform CLI applications using his own framework, Formidable.js.

00:14:45 - CLI Tools, Conference Talks, and the JavaScript Ecosystem

Donald elaborates on his upcoming SailsConf talk, explaining how packaging CLI commands as a portable project rather than bash scripts allows developers to move them easily between machines. Kelvin emphasizes that SailsConf intentionally welcomes non-Sails JavaScript talks to represent the broader ecosystem, and he highlights Donald's Formidable framework as a noteworthy open source project.

The group previews other exciting conference talks, including Mike McNeil's keynote, Matteo Collina speaking on building APIs with Platformatic and Fastify, Natalia Stock on JavaScript and WebAssembly, and a session on FormKit — a Vue form framework praised for its built-in internationalization support. Anthony draws parallels to React Hook Form and agrees that good form libraries save enormous amounts of development time.

00:21:34 - SailsConf Logistics and the Boring JavaScript Stack

Kelvin shares conference details: SailsConf runs for three days, all online via YouTube premieres and Discord discussions, with hopes for an in-person event the following year. The conversation shifts to his own talk on the "Boring JavaScript Stack," a rebranding of his earlier VITS stack concept built on Vue, Inertia, Tailwind, and Sails, designed to give developers a stable foundation without the overwhelm of JavaScript fatigue.

Kelvin explains that by using Inertia's server-driven approach, he has eliminated the need for client-side state management libraries for nearly two years, a philosophy he was pleased to see validated by Remix's similar approach. Anthony asks about end-to-end type safety and GraphQL integration, leading to a candid discussion where Kelvin defends REST as sufficient for most applications, while Anthony passionately advocates for GraphQL despite acknowledging its reputation as a complex "lifestyle" commitment.

00:30:37 - Hosting Node Apps and Deployment Options

The conversation shifts to practical deployment concerns for Sails applications. Kelvin shares his experience migrating off Heroku after its free tier was discontinued and currently using Render, though he's dissatisfied with its billing policies. Anthony enthusiastically recommends Railway for its simplicity with Postgres and Redis, and also pitches Edgio as a containerless edge platform.

The two compare several hosting options including Fly (described as requiring a "Docker lifestyle"), Railway, Render, and Edgio, with Kelvin expressing a strong preference for platforms that abstract away Docker configuration. Anthony offers to connect Kelvin with devrel contacts and proposes a future collaborative demo deploying a Sails app, highlighting how the Node.js hosting landscape has expanded significantly with many viable options for full-stack JavaScript developers.

00:38:41 - Open Source Community, Treblle, and Wrap-Up

Kelvin discusses the SailsCast community's broader mission beyond just Sails, including weekly JavaScript workshops on foundational topics like closures to help developers fill knowledge gaps. He reflects on how contributing to open source — whether through code, articles, conferences, or community building — has shaped his career and growth as a developer, expressing optimism about Sails reaching version 2.0 and beyond.

The conversation covers Kelvin's work at Treblle, an API observability and security platform he compares to Google Analytics but for server-side APIs, using lightweight SDK middleware rather than an API gateway approach. He describes his combined devrel and engineering role maintaining their open source JavaScript SDKs. The episode wraps with information on where to find the SailsCast community on Discord and YouTube, including Kelvin's weekly "Source Diving" Thursday streams, and plans for a future collaborative episode.

Transcript

00:00:00 - Anthony Campolo

Hello, hello everyone. My name is Anthony Campolo. Welcome to JavaScript Jam Weekly. Thank you all for showing up so promptly. We got a lot of hype for this one. We're talking SailsConf with my buddy Kelvin, and I'm very excited to talk about it. It's a more backend-heavy JavaScript framework that has been around for quite a while, and we got the man of the hour right here.

00:00:34 - Donald

What's up, bro?

00:00:35 - Anthony Campolo

Nifty. We got Brad too. What's up, man? And Matt. Hey, let me know. Oh, it looks like we gotcha. Hey, hey.

00:00:50 - Kelvin Omereshone

Hey. How you doing?

00:00:52 - Anthony Campolo

Doing great, man. How are you?

00:00:55 - Kelvin Omereshone

I'm awesome. Thank you for having me here, really.

00:00:58 - Anthony Campolo

Yeah, yeah, super excited too. I really wanted to be involved somehow with SailsConf, so this is about the best way I could do it. First, why don't you introduce yourself, say who you are and how you're involved in all this.

00:01:15 - Kelvin Omereshone

Yeah. Thank you. So my name is Kelvin. I'm a full-stack JavaScript engineer. I currently work at Treblle. I discovered the Sails framework somewhat five years ago, and I've been in love with the framework for that long. So in 2020 we did the very first SailsConf, which is my one-man take on what it would be like organizing a global tech conference for a framework.

00:01:48 - Anthony Campolo

How many speakers were there for the first one? How many speakers did you have?

00:01:53 - Kelvin Omereshone

I think there were about 12 or 13. I don't know exactly.

00:01:57 - Anthony Campolo

That's legit for a one-man thing, putting that together. That's no joke.

00:02:03 - Kelvin Omereshone

Yeah, it's always been amazing every year how I'm able to pull it off. You know, it's really, really intriguing. And I'm also excited for this year because, not to spill anything, the maker of Sails, Mike McNeil himself, has some exciting announcement he's gonna make, which I'm also excited about hearing. So yeah, that's it.

00:02:26 - Anthony Campolo

Sails got bought by Vercel.

00:02:29 - Kelvin Omereshone

What?

00:02:30 - Anthony Campolo

Sails got bought by Vercel.

00:02:34 - Kelvin Omereshone

That would be good, but I don't think so.

00:02:37 - Anthony Campolo

That'd be a good troll announcement. But so when you did it in 2020, that probably would have been during the pandemic, right?

00:02:45 - Kelvin Omereshone

Yeah.

00:02:47 - Anthony Campolo

Yeah. I find that really interesting. How many people have a story like that? I got into Redwood the same year and was doing all these online meetups. And for you, where are you located in the world?

00:03:03 - Kelvin Omereshone

Okay, I'm in Nigeria, Africa.

00:03:06 - Anthony Campolo

Yeah, and that's what I thought. So what time is it for you right now? It's 8 p.m.? Okay, that's not too bad. So thank you for making it in the evening. I know Nigeria does have a tech scene of its own, but I bet you probably got a lot of value from being able to connect when everyone went online in the same year.

00:03:31 - Kelvin Omereshone

Yeah, that has been it, really, because I've always seen the internet and the web development space as a space where you could easily transcend where you're based. Because we all have the internet. Borders, exactly. So it's cross-border. There are no limits. There are no walls, really. And that's the beauty of open source, right? It just gets you to so many people from different worlds, different cultures, and it's just amazing.

00:04:03 - Anthony Campolo

Yeah, this is actually a statistic I'm really proud of. More than 50% of all FSJam listeners are not in the US, so we have 43% listeners in the US, and then we have a whole spread across like a hundred other countries. And that's one of the things I really also enjoy about the web space, how global it is and how easy it is to connect with people through these real-time tools. And you do spaces all the time. So when did you start hosting Twitter Spaces?

00:04:35 - Kelvin Omereshone

Okay, so my very first Twitter Space, probably late last year. I don't know, maybe not too late though.

00:04:45 - Anthony Campolo

I actually have a question: did you ever do Clubhouse?

00:04:48 - Kelvin Omereshone

Oh yeah, I was in Clubhouse, but I got tired or fatigued from the platform, so I just left.

00:04:57 - Anthony Campolo

Well also it went away, so no one uses it anymore.

00:05:00 - Kelvin Omereshone

Yeah. Yes, I just really left. So my very first Twitter Space was impromptu. It was from a question I had on Discord. I just needed to have a space about it, and it had a good amount of turnout. I was like, okay, probably we could do this some more. But I like very short spaces. I can't do long spaces. I don't have the appetite for it. So I always keep my spaces really, really short so that I don't burn myself out, because I don't like talking a lot as well.

00:05:32 - Anthony Campolo

Yeah, I find there are multiple spaces. I like going to the ones we always do, especially ones like this. There's a guest, there's questions, it usually fits into a natural hour-long time. But then there are some spaces where people show up just to hang out communally, even week to week, and then it's just people having a conversation that they would have at work when they're just shooting the crap with people. And those are cool because you can kind of come in and out, and they can go for hours and hours and hours. But it's not like a structured conversation. I find that spaces in general, you can make them whatever you want because it's just a bunch of people showing up and talking about stuff, you know? So you can make it like a podcast. You can make it like a hangout.

00:06:18 - Kelvin Omereshone

Yeah, definitely. I have a series which I call the special guest Twitter Spaces where I invite someone to just talk about a topic. And recently I've been doing these recurring Tuesday Spaces where I talk about something technical, like a misconception I see among web developers. I just talk about it. It's highly technical. It's just an hour long, and I find that that works. And I see Loki is here. He's part of the SailsCast community, but he's working on a very amazing framework called Formidable. He's also giving a talk at SailsConf.

00:07:00 - Anthony Campolo

So, hi, send an invite to him. Let me know if there's anyone else in the crowd I should send invites to.

00:07:05 - Kelvin Omereshone

Yeah, Barbara is in the crowd. She's a lead in the SailsCast community. So hi Barbara, if you want to come talk about Sails or SailsConf.

00:07:17 - Anthony Campolo

Good.

00:07:18 - Kelvin Omereshone

She's a Mike fan most of the time.

00:07:20 - Anthony Campolo

So yeah, first off, I would love to be a guest and talk about full-stack as a term, but I'd be curious to hear more about Sails, the framework, and how you would frame it for people who've never heard of it.

00:07:33 - Kelvin Omereshone

Yeah, for sure. So Sails is highly influenced by Ruby on Rails. If you know Rails, Sails was influenced by it. Even the name is exactly right, it's just the S and the R. So it's a full-stack MVC framework for JavaScript, which is for Node.js, right? Because now we have to say Node or Deno or whatever runtime. So it comes with batteries included. It gives you an ORM, which lets you do all your database magic in a unified API, which is called Waterline, and it has WebSockets included for real-time things, which is one of the reasons why I loved it, because there were a lot of innovations on the Sails side that made WebSocket things really, really easy. So I love that about it. And the conventions are pretty simple because Sails sticks to vanilla JavaScript most of the time. So the routes are objects, just key-value pairs, and there are a lot of conventions that let you quickly build APIs. And that was what made me fall in love with it, because I tried a lot of frameworks back then when I found Sails in 2018, 2019, because I came from more of a Laravel background. I needed something like that.

00:08:57 - Anthony Campolo

Yeah. Redwood wasn't around yet, exactly.

00:08:59 - Kelvin Omereshone

Right. So I was using Express, but I found out that I had to come up with my own folder structures, my own conventions, every time.

00:09:07 - Anthony Campolo

That's like using Sinatra. Exactly, exactly.

00:09:10 - Kelvin Omereshone

So if you want to move quick, if you're already into things like Laravel and you want something like that for JavaScript, that's the kind of role that Sails plays.

00:09:20 - Anthony Campolo

Yeah, yeah, yeah, I find that. Sorry, go ahead.

00:09:25 - Kelvin Omereshone

Yeah, sure. You go ahead.

00:09:27 - Anthony Campolo

Oh yes. So I have a lot of thoughts about Sails. I think it's cool because people always used to say, why isn't there a full-stack JavaScript framework? And I think this one and Adonis probably had the most claim to actually building something like that. And then Redwood kind of came in and it was a full-stack framework, but because it used GraphQL and React, it was a whole different ball game. And it kind of stands alone in that respect. But what's the story in terms of how you would get... I know you use Vue, I think. So how easy is that? Because when I look at the Sails docs, it doesn't really tell you how to do that.

00:10:08 - Kelvin Omereshone

Yeah, definitely. So that was one thing that bugged me for a little while because after I started using Sails, I needed to build SailsCast.com, right? And because I knew Vue, I decided, okay, why don't I just build a Sails backend for the backend things and a Nuxt frontend, right? But the promise of SPAs after a while wasn't doing it for me anymore. And I decided to think through what would be the story of having everything in a unified codebase and still author my pages in Vue. And at the time, I think Jonathan Reinink built Inertia, which is what allowed the Laravel backend and the Vue or React frontend to coexist in a single repo. I was like, whoa, we need this in JavaScript. We're supposed to be able to do this. If they could do this cross-language, then we should be able to do this. So I invested a lot of time building the Inertia adapter, because the way Inertia works is by leveraging web fundamentals, just a lot of HTTP headers and stuff. So I was able to build an adapter for Sails and then make everything work together.

00:11:23 - Kelvin Omereshone

So I migrated everything from the Nuxt and Sails separate codebases into a unified codebase in, I think, two or three days. It was that easy to make that change, and nothing broke. And I was like, whoa, okay, what are we going to call this? And I just came up with a very random acronym, like the VITS stack. And if it's React, the RITS stack, but it was not really giving at the time.

00:11:51 - Anthony Campolo

So what stack did you call it?

00:11:54 - Kelvin Omereshone

VITS stack. So, yeah.

00:11:57 - Anthony Campolo

VITS stack. So built on VITS.

00:12:00 - Kelvin Omereshone

Vue, Inertia, Tailwind, and Sails. That was the stack.

00:12:05 - Anthony Campolo

Okay, I'm seeing you have a 2019 Medium article, "How I Successfully Upload a File Using Vue in Sails." I'm just looking for, if someone wanted to also do this, are there docs for this? Do you have blog posts you've written? I know you create a lot of content around this stuff.

00:12:22 - Kelvin Omereshone

Oh yes, I do. I have talks about it. I have documentation about it. And to get started is as simple as running a CLI, which is npx create-sails, then the project name. That's all. Then you pick a framework and it builds everything for you, whether you're using React, Vue, or Svelte.

00:12:42 - Anthony Campolo

Interesting. Very interesting. Okay, cool. Loki, do you want to introduce yourself?

00:12:52 - Donald

Hey, everyone, I'm Donald. Yeah, I'll be speaking at the Sails conference this year. Very keen. And yeah, hopefully people tune in.

00:13:04 - Anthony Campolo

Cool. You want to talk a little bit about either your background, where you work, or just your talk itself?

00:13:11 - Donald

Yeah, 100%. So I'm a software engineer, full-stack software engineer. I work for a company called Childrensalon. I'm a research and development engineer. And about my talk, I'll mainly be talking about creating CLI applications. We'll take a look at how you can build cross-platform CLI applications using Node. We'll take a look at how you can streamline the process of automating tasks and how you can enhance your productivity pretty much around building CLI applications.

00:13:50 - Anthony Campolo

That sounds tight. That sounds incredibly useful.

00:13:56 - Donald

I usually have a CLI thingy that I use just for my daily work, and I think a lot of people could find it useful.

00:14:06 - Anthony Campolo

Yeah, I have a massive gist of commands in different categories to do things that I constantly reference. But I never really build my own CLIs or write shell scripts. I've never really gotten to that level. But this is something I'd be curious about because I see lots of project starters, like these CLIs like Create T3 App, and also Astro has a CLI where you generate a project, and this sounds like what the create-sails thing was. And you go through a step-by-step thing of selecting different configurations. Is that one of the types of things you'd be able to do and what you're going to be demoing?

00:14:45 - Donald

Yeah, pretty much.

00:14:48 - Anthony Campolo

Cool. Awesome.

00:14:51 - Donald

Then we'll also take a look at how, if you move around, let's say you get a new PC or a new laptop, and now you have to worry about how do you move your commands. If you had them in Bash scripts, you don't have to worry about that if you have it as a project. You just move it to a different machine and it still works. We'll take a look at how you can also do that.

00:15:15 - Anthony Campolo

That's also the reason I like having a gist. That's just the URL I can take with me wherever I need it.

00:15:20 - Donald

Yeah.

00:15:23 - Anthony Campolo

Awesome. What got you into the framework in the first place?

00:15:28 - Donald

Actually, I don't use Sails. I'm just a JavaScript person. I use JavaScript all the time. I actually have my own framework, but I thought it would be better for...

00:15:40 - Anthony Campolo

What's your own framework?

00:15:42 - Donald

Formidable.js. In the talk I'll be demoing how to build a CLI using a component of the framework. And I mean, if you're using Sails, you could actually use it in Sails or any other framework. So it's cross-platform. It works everywhere.

00:16:04 - Anthony Campolo

What's Imba?

00:16:07 - Donald

Imba is a full-stack programming language. I actually don't know why it hasn't caught on because it's quite amazing. But it's a full-stack programming language.

00:16:17 - Anthony Campolo

Sorry.

00:16:18 - Donald

And it was created by the same people who created Scrimba, the online learning platform.

00:16:26 - Anthony Campolo

Interesting. Do you know about Wasp?

00:16:29 - Donald

Sorry, come again?

00:16:30 - Anthony Campolo

Do you know about Wasp? It's another language for full-stack apps. Kelvin's got his hand up though.

00:16:42 - Donald

Yeah, Kelvin, go ahead.

00:16:44 - Kelvin Omereshone

Yeah, sure. So I just want to quickly interject one thing I wanted for SailsConf. Even if it's a Sails conference, I want to capture as much in the JavaScript ecosystem as possible. So I encourage a lot of non-Sails talks because I believe at the end of the day we are all JavaScript. So Loki, the Formidable framework, is actually really, really dope. I like it, and I think he's been on GitHub Open Source Friday, right?

00:17:23 - Donald

Yeah, yeah, yeah.

00:17:28 - Kelvin Omereshone

It's a really dope framework. You should check it out.

00:17:34 - Anthony Campolo

Yeah, it looks sweet. Awesome.

00:17:40 - Kelvin Omereshone

Yeah.

00:17:41 - Anthony Campolo

And this makes sense as something that goes along with Sails. It's still full-stack, still got a lot to do with the server, and it's JavaScript. So I like that. That's why we, you know, JavaScript Jam, lean very heavily into the JavaScript branding here because it's the biggest tent that you can fit as many projects and people into as possible. Even TypeScript. What are some other talks or things about the conference that you're excited for, either of you two?

00:18:20 - Kelvin Omereshone

Yeah, for me, of course, Mike's keynote is on top of the list for me. Also Matteo is going to give a talk about building APIs with Platformatic, which is like Fastify. Matteo, yes, Fastify Matteo. He said he might be here if he has the time. He still might drop in for a little while. And also Natalia Stock, she's a senior architect at Microsoft. She's going to be talking about JavaScript and WASM and how they make for a fast combo or something. So I'm really looking forward to her talk, and also, of course, Donald's talk, making CLI applications. I really love CLI apps and I want to see how he's going to build that. There's one other framework I've been looking into, but I haven't had the time to practice, which is Clack from the Astro team. Do you know it?

00:19:20 - Anthony Campolo

Clack?

00:19:20 - Kelvin Omereshone

Yeah, I think C-L-A-C-K should be the CLI tool. The domain is clack.cc if I'm not mistaken. Yeah, yeah.

00:19:35 - Anthony Campolo

Interesting. I haven't heard of this.

00:19:37 - Kelvin Omereshone

It's really, really amazing stuff. So I'm actually thinking the 2.0 of the CLI I'm working on should be on Clack, or any other thing that's going to make it easy. Then FormKit by Justin. Have you heard of FormKit in the Vue ecosystem?

00:19:59 - Anthony Campolo

No, I don't know. Actually, I think I've heard of it, but I don't know a lot of the more Vue libraries. It's really amazing, I'm assuming. It's for forms.

00:20:10 - Kelvin Omereshone

Yeah, it's literally the only time I've seen something called itself a form framework and really fit the bill. They've really thought about a bunch of stuff that makes forms easy. So I did a TKYT session with him and I was blown away by how they are solving this problem of forms. So yeah, you could go check it out. We have some exciting talks in there.

00:20:37 - Anthony Campolo

Yeah, this looks great. With Redwood we use React Hook Form, so I'm very bought into the idea that we should have good form component libraries because it's something that is done terribly a lot of the time, but if it's done right it just saves you so much time and helps you manage edge cases better and just have cleaner code. There's just so many reasons.

00:21:02 - Kelvin Omereshone

Yeah. And one cool thing in FormKit that I really love is how they manage internationalization, like i18n. It's baked into the form framework because most times we don't really think about it. Not that we don't think about it, we just... it's too much work. We don't even want to do it, right? But of course you're going to have users from all over the world, right? So all these little details are really baked into FormKit, so it's really cool.

00:21:34 - Anthony Campolo

Yeah, that's huge. Internationalization is something that if you want it, you got to build in from the start. Pin some links to the Jumbotron as well. Feel free to share any others. Cool. So the dates are going to be the 14th to the 16th, right?

00:21:59 - Kelvin Omereshone

Yes, it is. It's three days long.

00:22:04 - Anthony Campolo

And then I'm assuming people will mostly be watching it online. Is there an in-person component to it as well, or not at all?

00:22:11 - Kelvin Omereshone

No, for this one there will be none at all. So it's all going to be on Discord and on YouTube. For the talks, and for the discussion it's going to be on Discord. I'm looking and hoping we could do one in person next year, but let's just see how that goes.

00:22:28 - Anthony Campolo

Cool. Awesome. So where do people go to see it?

00:22:34 - Kelvin Omereshone

Yeah, sure. So all talks will be premiered on YouTube. So if you go to sailsconf.com right now, you just click on the set a reminder button, which should be the keynote, but it's not there yet. But it takes you to YouTube, where you can just set a notification, or subscribe or whatever. So when I upload the keynote, it's going to take you to the premiere page for it so you can set a reminder. And also you should hang around on the Discord for announcements and stuff. Also on the same page you'd see "join the discussion." So it's all there, two buttons.

00:23:23 - Anthony Campolo

These speaker photos are really great, or drawings I should say.

00:23:29 - Kelvin Omereshone

Yeah, the designer, she's just amazing, really. She's been doing this for us for like three years now.

00:23:39 - Anthony Campolo

Yeah, hats off to them. These are really, really good.

00:23:41 - Kelvin Omereshone

Yeah, it's just dope. So we are all going pirate-themed this year, so I love them too.

00:23:48 - Anthony Campolo

Super funny. Good old pirates. So some of the other talks, we got production-ready lambdas with Node.js, the FormKit one, the WASM one, CLI application, building APIs, and Platformatic. Okay, so let's talk about the boring JavaScript stack. What's the boring JavaScript stack?

00:24:09 - Kelvin Omereshone

Oh yeah, that's my talk. So it's the rebranding of the VITS stack and whatever, and it's just going to be... So the foundation of this all is a UI framework. Of course for me it's Vue, with Inertia, then Tailwind and Sails. And we're just going to give you all the building blocks. Like, if you start a new Laravel project, you have a lot of things that's done for you from the get-go. Sails does a lot of that already, but there's still more. So I've always said that the full-stack story in JavaScript is not complete yet, but for me I just want to build stuff, and I want to give people a solution for them to quickly have a very strong, quick foundation for them to build their ideas on. So that's what the boring JavaScript stack is all about. JavaScript is too exciting. There are too many moving parts, too much to learn. If you want a solid foundation, just a boring foundation to base your idea on, that's what the boring JavaScript stack is going to be all about.

00:25:20 - Anthony Campolo

I love that because I feel like JavaScript fatigue was a term that I know was kind of coined maybe eight or nine years ago, and I feel like it kind of waned for a while, and now I feel like it's back with a vengeance. And everyone, as you say, is super overwhelmed by all the frameworks. But there's a pushback to that, which is just use vanilla JS and web components, and it's just like no, that's not the solution at all actually. And so what you're presenting is something you actually build a real project with.

00:25:55 - Kelvin Omereshone

Yeah. So that's just my own take because especially for me, right, I just love Vue. I'm going to use Vue for everything. But even for the folks doing React, right now I feel React is sort of... I don't know if I'm going to say doing a lot. And one thing I love about the framework, or the library, whatever you want to call it, is the UI part of it, right? Not the ecosystem of state management, the React router, and all that kind of stuff. So if you want your pages to still be built in React and be a SPA, you can achieve that with the boring JavaScript stack. And the cool thing is, just like Remix, you don't need a state management library because the state is managed by your database, which is where it should be. That's my own thought. So I was really pleased when I saw that it was the same way Remix was handling things, because that just made sense. Because I've not touched a state management library for almost two years now because of this stack. There has been no need for it. And at the time I thought I was doing something wrong because they'd be like, you always need Vuex or something, but there was no need for it anymore.

00:27:14 - Kelvin Omereshone

So I was really pleased to know that I wasn't going crazy when I saw Remix teaching the same thing, that you don't need a state management library. So yeah, that's it.

00:27:25 - Anthony Campolo

I'd be curious what the story is for end-to-end type safety and if people have tried either hacking GraphQL or tRPC with Sails.

00:27:38 - Kelvin Omereshone

Yeah, I don't know about tRPC or GraphQL. For me, REST would do it. We'll probably do a GraphQL thing if we're interested, but to me, the boring stack, we just want tried and trusted frameworks, libraries, and architectures. REST is good for most of the things we want to do, and that has always worked for me. Of course, type safety is also a thing that people like these days. Not that I'm a very good TypeScript person, but we'll see.

00:28:10 - Anthony Campolo

Yeah, actually I look forward to the day GraphQL can be considered boring, because I love GraphQL. I think it gets a bad rap a lot of the time and people have a sense of it being very complex due to reasons of the ecosystem being kind of inherently complex and the paradigm of GraphQL. What GraphQL queries actually are is so simple when it gets down to it in a way that, as a beginner who was learning to code and kind of learned GraphQL around the same time, it was mind-blowing to me. So I wish we could have frameworks that made it easier to just write your queries and just kind of get the data back, and then your GraphQL server does all the things. We do, luckily, have that framework. It's called Redwood. But I can't seem to successfully make this pitch to people. But I think with Sails, it's got this long history of it already being built with REST. You have all these examples with REST, all the additional middleware and things, you're done with REST. So it just makes sense to keep doing the thing that you already know works because the benefit you have from GraphQL, having a different mental model, doesn't necessarily do anything different.

00:29:24 - Kelvin Omereshone

Yeah, I don't have a strong reason not to use GraphQL other than I just... I don't know. I've used it. It's cool. I like the idea. Even for Platformatic launch week, I wrote an article because I had to test the platform and I wrote some GraphQL, and it was really, really cool. But at the end of the day, I think for most apps I'm building, REST always works for me. I don't really see a strong need for it, but of course we could look that way. So yeah, that's it.

00:30:03 - Anthony Campolo

Yeah. The problem is GraphQL is a lifestyle. And I know this because I live that lifestyle. I worked at a GraphQL company for like a year. So when you're in it, you're just writing GraphQL stuff all the time. It's great because you can shove it into anything you want very easily once you figure it out. But anyone who doesn't have all that GraphQL context will be super confused by everything that you're doing. So you meet other GraphQL people, and then you have these long GraphQL conversations around GraphQL libraries. That's why I say it's like a lifestyle.

00:30:34 - Donald

So,

00:30:37 - Kelvin Omereshone

Yeah, I definitely get that because I think the folks from Wondergraph and also Platformatic, they're also trying to make GraphQL a little bit easier to work with. So yeah, it's fine if you want to do it, really.

00:30:54 - Anthony Campolo

Yeah, for sure. Great. Do you have other companies you're working with or things? I think there is a SailsCast company. You want to talk about that?

00:31:08 - Kelvin Omereshone

Yeah. So the SailsCast company is the registered company that is sort of like the umbrella for our open source and also for the SailsCast platform and GoPi. So if you don't know GoPi, it's a JavaScript playground I built, which is like a desktop app for 1.0, which I'm actually trying to sunset for 2.0. So everything I do that is both commercial and open source... not everything, though. There are some things that are my thing, right? So if you go to docs.sailscast.com, you see all the open source projects that are under the SailsCast company. So the idea is to be able to build tools for full-stack JavaScript developers, also make courses, and anything that's going to empower anyone to build their ideas on JavaScript. That's what the SailsCast company is all about.

00:32:03 - Anthony Campolo

Yeah, I think there are a few companies that did this, and there was Laracasts, like Railscasts. So is that kind of the model you're going for?

00:32:12 - Kelvin Omereshone

Yeah, because SailsCast was definitely a spin-off from Laracasts and GoRails because I found it was lacking in the Sails ecosystem. And at the time I wanted it to be primarily Sails, but I think we don't have as much backend full-stack JavaScript content as there is frontend. So I want to be able to give real-world courses on backend JavaScript, full-stack JavaScript. So that's just the thing. Yeah. So it's like Laracasts or GoRails, but for the broader spectrum of full-stack JavaScript.

00:32:55 - Anthony Campolo

Love that. Yeah, I totally agree. I've always wanted there to be more backend JavaScript stuff. That's one of the reasons why I branded my first podcast Full Stack Jamstack Podcast. That was the whole idea, that the Jamstack was already very client-heavy and everyone was using React and Vue and whatever and deploying these things to Netlify or Vercel. But there was no backend. There's literally no database there. Now there is, years later, so it's a whole different paradigm. And then I realized that some people were kind of in this old world where they keep using these full-stack frameworks that already existed that don't have these client-side libraries, or they take the client-side library and they just, through sheer force of will, figure out how to attach it to some sort of backend. And then now we're getting more frameworks that are trying to do that and make it nice. The one thing that we haven't talked about yet is where do people host their Sails apps? I'm assuming it's Node, so you can host it anywhere you host a Node server. But do people tend to gravitate toward certain places?

00:34:00 - Kelvin Omereshone

Yeah, for me, before now I hosted on Heroku, which is like even the...

00:34:07 - Anthony Campolo

Sails docs, rest in peace.

00:34:09 - Kelvin Omereshone

Yeah, right. So I had to painfully migrate off Heroku because of the thing that happened, and now I'm at Render. So anyway, anywhere that can let you run a Node.js server, then you can host your...

00:34:30 - Anthony Campolo

Have you tried Railway?

00:34:32 - Kelvin Omereshone

I've been hearing a lot of good stuff about Railway. I'm actually in the market shopping for a new home for all my services and website because Render is just... I don't know, their billing policy. So I should check out Railway too.

00:34:48 - Anthony Campolo

Well, let me first say it'd be malpractice for me not to at least sell you on Edgio for a quick second because Edgio can run Node servers for free and that's pretty sweet. So that's another one to look at. I would love to build out a Sails example with it. The way I would describe it, it's like a Jamstack platform if a Jamstack platform was server-rendered first instead of static first. So you automatically have a server, but it's kind of like a global edge-type server thing. You get to split the difference between not having to worry about a certain server in a certain area, but you can still write your Node code. There's some weird Edgio-specific configuration things, but we can work all that out.

00:35:34 - Kelvin Omereshone

So one quick question: can it host static sites? Because most of...

00:35:40 - Anthony Campolo

Yeah, definitely. Cool.

00:35:42 - Kelvin Omereshone

I'll definitely check it out. It's going to be a pain moving off Render because I really liked it at the time. But business does what business wants to do. So I'll definitely check out Edgio.

00:35:55 - Anthony Campolo

Yeah. And the question is going to be kind of like, are you hosting just a server, or do you have a database as well? Are you going to be migrating that from Render?

00:36:05 - Kelvin Omereshone

Yeah. So right now SailsCast.com runs on a single Postgres database and also Redis for session things. So that's the only...

00:36:15 - Anthony Campolo

Okay. You absolutely want to use Railway. It is going to be so freaking simple to do that. It's going to blow your mind. Yeah, I'm a big proponent of Railway. I tried Fly. Fly is pretty good. I've tried Qovery. Honestly, I wouldn't recommend it. I've tried Flightcontrol. Flightcontrol is really good. That's going to have you running on AWS at the end of the day. There's so many sweet ways to run Node apps right now.

00:36:43 - Kelvin Omereshone

Yeah, so I have Edgio on my list. Fly, I checked it out. So Edgio, Fly, Railway. I'm gonna see who's gonna win because I want...

00:36:54 - Anthony Campolo

Yeah. Fly, if you are... So I say GraphQL is a lifestyle. Docker is like a lifestyle as well. Using Fly is living the Docker lifestyle. So if you really like writing Dockerfiles, then you want to use Fly.

00:37:06 - Kelvin Omereshone

No, no Docker please.

00:37:09 - Anthony Campolo

Yeah, don't go near Fly then. Fly's good. They're great. If you want to work with Dockerfiles, Railway, you'll work with Dockerfiles, but they'll make it so easy it won't feel like you're using Docker.

00:37:21 - Kelvin Omereshone

Oh my. Okay, I'll definitely take a look. Thank you.

00:37:28 - Anthony Campolo

Yeah, happy to chat more about that. I can put you in touch with their devrel people too. Actually, Chris Burns, my podcast co-host, was just asking me like a day or two ago if I like Railway or something. I'm like, dude, I've been talking about Railway for like two years nonstop. People make jokes about how much I talk about Railway.

00:37:51 - Kelvin Omereshone

Yeah, I'm really going to miss Render, really, because I didn't have to worry about Dockerfiles. It's just like GitHub, push to git, and all the things they do. I know they are using Docker behind the scenes, but I don't want to care because I'm not a very big fan of Docker or any of the orchestration things.

00:38:13 - Anthony Campolo

Then Edgio is going to be a good thing for you to look at because there's no containers going on whatsoever. We're more like Cloudflare, where it's like an edge network that has just a whole bunch of servers running everywhere.

00:38:31 - Kelvin Omereshone

Oh, cool stuff. Yeah, I'm definitely going to look at it, really. I have to try that one.

00:38:41 - Anthony Campolo

Yeah, just general, anyone out there who wants to come up and ask questions, I just want to make sure everyone feels free to do that. Are there other things about the conference, the community, what you do, non-Sails-related things you want to talk about? Just open floor.

00:39:00 - Kelvin Omereshone

Yeah, honestly I just want the conference to get to the week of the conference and be done with it because there are a ton of other stuff we have planned, especially open source work I have to do. And so for the community, it was strictly Sails for a while until I saw an opportunity to have these young people or, I don't know, whatever stage you're in, if you want to solidify your JavaScript skills, I welcome everyone learning JavaScript. So that's what the community is. Every Wednesday, like today, we have a workshop. We had a workshop for about an hour where we talked about JavaScript closures. So I feel there are a lot of people that might have gaps in their JavaScript, so the workshops help us fill those gaps with JavaScript, no frameworks, just JavaScript itself. And you find a lot of cool things about JavaScript for just having that hour or 30 minutes. So yeah, if you're doing JavaScript things, if you're not already there, you should go check out the community. And Loki, do you have anything you want to share?

00:40:21 - Donald

I'm good. I just think, yeah, there's a lot of value that will be provided through the Sails conference. I think a lot of people should come in, tune in. Yeah, awesome.

00:40:36 - Anthony Campolo

Yeah, no, I'm looking forward to checking it out, definitely. I think there's going to be a lot of really great content, and it's just cool to see an open source community and framework doing something like this that's not trying to be like Apple and getting millions of dollars of VC funding and having all that stuff associated with it. That's all good. Ultimately I'm a fan of open source getting money in general, but this is very much a grassroots community event. It's very clear. And so I think these are very cool. And this is where, if you want to build long-term relationships in open source, it sounds like you've been involved in the framework for a really long time, which is super cool because it shows, one, you enjoyed it enough to keep doing it, and two, that there are people who kind of stick around and continue to work on it and iterate on it. And if you want to get into any framework, that's all you really need. If you know there's at least a handful of people you can reach out to, like, hey, this thing's broken.

00:41:43 - Anthony Campolo

What do I do? And they'll help you with it. That's all you need.

00:41:50 - Kelvin Omereshone

Yeah, that's just it really. I really like open source, and it's really shaped my journey in web development. The skills I've gotten from just seeing a gap in an open source project or something, and I want to fix it, that's the whole reason why I'm doing all the Sails things for so long. So you see a pain and you want to fix it. You could fix it not just by code, right? You could write articles about it, you could run conferences or run a community. So any way you find yourself able to contribute to open source, it just really makes you a better person, a better developer, or anything you want to be better at.

00:42:41 - Anthony Campolo

If you could wave a magic wand and make Sails the most popular JS framework, period, would you do it, or would you not want to deal with those issues?

00:42:51 - Kelvin Omereshone

Yes, and I'm very optimistic about the future of Sails because I feel we have a great room for growth. And just check this out: we are still at 1.0, right? And we are almost at feature parity with most of the full-stack frameworks. Whatever you could do, really, we can do it. So even with Laravel or with Rails, we can really get it to work with Sails. So I feel, what will happen if we get to 2.0, to 3.0, and all that stuff? So I'm really excited about the future of Sails. I feel we can really grow.

00:43:37 - Anthony Campolo

Can I ask your docs questions through a language model yet, though?

00:43:42 - Kelvin Omereshone

What?

00:43:44 - Anthony Campolo

This is like Astro and other projects. They'll do this now.

00:43:50 - Kelvin Omereshone

I saw Astro hosting that. Right, that's it.

00:43:56 - Anthony Campolo

Nice.

00:43:57 - Kelvin Omereshone

Yeah.

00:43:59 - Anthony Campolo

Cool. Awesome. Are there any other events or conferences that you're going to this year?

00:44:06 - Kelvin Omereshone

Yes. So this is the cool thing, right? I will be simultaneously attending two conferences next week. So SailsConf online, and Open Source Community Africa is also happening in person next week. I'm not speaking at the event. I'm just attending to network and also give out some Treblle merch and also just listen to some talks. So yeah, I'm looking forward to the conference. And also Angie Jones, if you know her, she's also coming. I think she's speaking, definitely. So it's going to be cool seeing her in person for the first time.

00:44:45 - Anthony Campolo

I'm glad you reminded me. Talk about Treblle. What is Treblle?

00:44:48 - Kelvin Omereshone

Oh yeah, Treblle. So you know what Google Analytics is for web pages? For REST-based APIs, right? The way I've always seen it is, if you want a very easy solution to monitor your APIs, if you're providing APIs, because APIs account for 80% of all internet traffic, right? So that's a lot of requests. So if you want to monitor them, you want to observe them, and as of late we also provide you security, so that's what Treblle does.

00:45:27 - Anthony Campolo

Yeah, simple, right? It just monitors your APIs and gives you security. Yeah, no big deal.

00:45:33 - Kelvin Omereshone

Yep, yeah. So we try to make it no big deal for you, but for us it's a lot of deal because a lot of thought has to go into making that simple. Because some other solutions that do this use something like an API gateway. We do not want that.

00:45:50 - Anthony Campolo

And what are comparable things? Because I don't really know this API space that well. I'd be curious.

00:45:56 - Kelvin Omereshone

So in that space there's New Relic and Datadog.

00:46:01 - Anthony Campolo

Sure, yeah. Okay. I know both of them. So you call yourself like an observability company, but you don't really use that word, it looks like.

00:46:09 - Kelvin Omereshone

Yeah, we do that and some. So it's like the entire API lifecycle. So we let you...

00:46:18 - Anthony Campolo

Because you're also running the API? You're actually running the API. You're deploying it.

00:46:22 - Kelvin Omereshone

Oh no.

00:46:23 - Anthony Campolo

Or are you not?

00:46:24 - Kelvin Omereshone

No, no, no.

00:46:24 - Anthony Campolo

Okay. You're not.

00:46:25 - Kelvin Omereshone

Yeah.

00:46:25 - Anthony Campolo

So interesting. Yeah.

00:46:26 - Kelvin Omereshone

Okay, so how we work is that...

00:46:28 - Anthony Campolo

We...

00:46:29 - Kelvin Omereshone

So let's say you take Fastify, for example. You have a Fastify API. We'll give you a Treblle SDK for Fastify, which is essentially a middleware that you add to your app...

00:46:44 - Anthony Campolo

Okay, I see why you compare it to Google Analytics. It's like you're putting a script tag in, but you're putting a script tag into your server.

00:46:50 - Kelvin Omereshone

Exactly. That's just it.

00:46:51 - Anthony Campolo

Ah, that's clever. Okay, sweet. How long you been working there for?

00:47:02 - Kelvin Omereshone

I think as of today, seven months. Yeah, seven months.

00:47:10 - Anthony Campolo

Very cool. And do you do engineering for them or devrel?

00:47:15 - Kelvin Omereshone

Yeah, so I do devrel and also maintain the JavaScript... I maintain the JavaScript SDKs because all our SDKs are open source. So I write them and I maintain them. So both the devrel part, all the devrel things, but also coding stuff. And I also contribute to the products we build as well.

00:47:42 - Anthony Campolo

Yeah, this looks pretty sweet. I never heard of this product before, but it looks nice. You got good-looking docs.

00:47:50 - Kelvin Omereshone

Yeah, docs built with Astro.

00:47:53 - Anthony Campolo

Yeah, I thought I recognized this template. Cool, great. Well, if you don't have anything else you kind of want to talk about, we can start winding it down here. What are places people should go, aside from your Twitter, to get in touch with you or the community?

00:48:15 - Kelvin Omereshone

Yeah. So that will be Discord, which is sailscasts.com/community. We hang out on Discord. We do open source projects together. We also do workshops, which I've spoken about. You could also come hang out on YouTube because I do Thursday streams. Like tomorrow I'll be doing a stream, so it's called Source Diving with Kelvin. Every Thursday I do, like, an hour, just stream stuff. So you can come hang out on YouTube as well, and also check out the YouTube channel. There's a lot of TKYT sessions in there that you could definitely find one or two valuable for you.

00:48:54 - Anthony Campolo

So yeah, that was on the YouTube.

00:48:58 - Kelvin Omereshone

Yes, that's on YouTube. So I could put the link below.

00:49:02 - Anthony Campolo

Yeah, I'm posting some stuff here. I got the SailsCast Discord, and if you want to post the YouTube, I can pin that up as well. All righty. Cool.

00:49:22 - Donald

Cool.

00:49:23 - Anthony Campolo

Yeah, if you ever wanted to get anyone on the show to talk about Treblle or talk about Sails more, always happy to do that. We can also do an actual podcast with video episode where we build out a demo. I can show you how to deploy it to Edgio. So that would be fun. Set that up afterwards.

00:49:41 - Kelvin Omereshone

Yeah, cool. I'm definitely down for that, really. Either Treblle or Sails, I'm up for it.

00:49:50 - Anthony Campolo

Yeah, I like how you seem to be in a similar groove to a lot of devrel people I know. It's where you've got a couple different content streams. You're kind of always working on some kind of video, some kind of written, some kind of code, some kind of spoken. And you've got a little bit of everything going on. It's fun. I greatly enjoy it.

00:50:12 - Kelvin Omereshone

Yeah. Really, it's fun, but it can sometimes get overwhelming. But of course that's what work is.

00:50:21 - Anthony Campolo

Yeah. And that's when you, at least for me, that's when I do less open-source stuff because something's got to give at a certain point.

00:50:31 - Kelvin Omereshone

Yeah, that is true.

00:50:35 - Anthony Campolo

Awesome, man. Well, thank you so much, and thank you Loki for joining as well. This will conclude it for JavaScript Jam. Give us a follow, check out the newsletter, and we'll catch you next Wednesday, same time. Thanks everybody.

00:50:52 - Kelvin Omereshone

Yeah, thank you. Thank you for having me here.

00:50:55 - Anthony Campolo

Yeah, it's a pleasure.

On this pageJump to section