Ep. #92, SEO at Scale with Nick Reese of Elder Guide
about the episode
about the guests
Brian Douglas: Welcome to another installment of JAMstack Radio.
On the line, we've got Nick Reese. Nick, how are you doing?
Nick Reese: Good. Thanks for having me.
Brian: Yeah. I'm excited to talk about what you built, which is Elder.js.
So do you want to give us an intro of you, how you got started and then sort of how have you navigated into Elder.js?
Brian: Can I ask, performance marketing, I'm a little naive.
What does it mean when you say performance marketing?
Nick: Yeah, essentially it's also known as affiliate marketing, but affiliate marketing gets a pretty bad rap.
Essentially what the performance means is a company offers you their customer acquisition cost or something less than that.
So let's say it's with Verizon and they cost them $400 to generate a customer.
They would pay me $200 and if I could generate a customer under $200, it's obviously profitable for them and I can basically run a business there.
And so that's been my business since I've really had bills to pay, so to speak.
So I've been doing this for more than, it's just about 15 years right now. And I started out with WordPress as my standard way of doing things.
So my last company was broadbandnow.com and we helped about 30,000 people a day find internet service providers in their area.
And after selling that company, I decided that it was time to start another project.
And that project was Elder Guide. And it's essentially a tool that helps you find all the nursing homes and helps you compare them, basically using government data.
Basically my business model is, is we go take a huge amount of government data, make sense of it and build a website to help consumers make informed decisions. But in the process of doing that, I found that many of the JAMstack tools essentially don't allow you to build SEO-friendly websites at scale.
And what I mean by that is anything over about 10,000 pages, most of the tools start to choke, or you have build times that last a day or other problems.
And so essentially, I started building Elder Guide using SvelteKit or the version before SvelteKit, Sapper.
And if you're not familiar with Svelte or Sapper, essentially, it's a... Hopefully you've heard of Next.js.
It's essentially a framework for Svelte that allows you to build static sites or interactive applications.
And what I found in using Sapper is that essentially it didn't fit my needs perfectly, but I was very convinced on Svelte, that Svelte was essentially the answer.
I often joke that Svelte gives you super powers.
So in that process, I decided that I could probably build my own static site generator.
It should only take like an afternoon, right? Those classic, "an afternoon." And air quotes.
And I hacked on it, got something workable in an afternoon, but very quickly it evolved and it grew.
And I ultimately, I shipped Elder Guide and the Svelte community was impressed and asked how I did it and asked if I would open source it.
And so I thought long and hard about it and decided, hey, I might as well give back to the open source community that I've essentially built all my businesses on.
And yeah, Elder.js was born and I'm here today talking about it.
Brian: Yeah. That's amazing.
For listeners that had been listening for a bit, episode 51, we had Shawn Wang talk about Svelte specifically.
Then we had Scott Tolinski talk about Sapper.
So the previous version of SvelteKit, on episode 62.
So if you listen to all the episodes, you probably have heard of those terms.
If you haven't definitely go back and listen to those for the listener's sake, but that's actually really intriguing.
And I just want to take a step back too, because I realized the reason you're on is because we were, I don't know if it's a mutual friend, but the founder of OneGraph reached out to of me and was like, "Hey."
We chat a lot and he's like, "You should have Nick on to talk about Elder.js and what the project that he built out of that or from that."
Because I was in Florida for four months this year and it was because I was actually taking care of my elderly grandma and getting her back into a home.
We didn't end up using Elder Guide, but I wish I actually used that because it would've been so much easier talking with me and my brothers and trying to figure out what next steps were.
So thank you very much for that service, but also thanks for open sourcing some of this SEO goodness too, as well.
Nick: Yeah, my pleasure. I'd never ever built an open source tool or maintained it.
It's quite a bit more work than it looks like, but it's... It's a lot of fun.
And for me, being self-taught everything essentially, I learn much faster when I teach myself, I was really scared of releasing my code and essentially getting that criticism of your peers and whatnot.
But the reception has been really good and Elder.js kind of exceeds the expectations for what you would expect from a static site generator in a lot of ways.
It offers a lot of the great things that WordPress has, such as short codes and a hook system where you can plug into any part of the build process or the page generation process.
But it also, the main reason I built it was, there was no real framework for doing partial hydration.
If these are industry buzzwords, I'm happy to take a step back and explain them.
And that's what it does today. And so you're able to partially hydrate different parts of the page that need reactivity.
If it doesn't need reactivity, it just gives you static HTML.
Brian: Yeah, and this all makes sense too, as well, especially for the nature of the broadbandnow.com and as well, Elder Guides.
You're serving a lot of data and you're serving specific data for the user's needs.
So if I'm in New York and I'm looking for, or even Florida probably is a better use case, retirement homes or retirement villages in the Tampa Bay area, I'm getting a lot of data. Because there's going to be a lot to sort of sift through and I might not want 150 retirement homes within this zip code.
I might just want paginated stuff and then maybe, so am I on the right page of, like, maybe I don't want the first 25 and just give me that partially hydrated.
And then when I go ahead and refresh, I get the next batch.
Nick: Yeah. Essentially that's what Elder Guide is doing, is it populates the page with the service providers that are available in that area.
So let's say Tampa Bay.
But you also have the map ability so you can expand the map and then it becomes dynamic.
So Svelte takes over. And then we have a full, it's a fatter client than most of the sites I build, but it's really what needed to be decided on.
Because often people, when they're deciding on nursing homes or elder care facilities, they essentially are looking generally either on price or distance from where they live.
And since those are the two main deciding factors, I thought a map is really the right way to make these decisions.
Brian: Okay, cool.
And I want to take a step back too, as well, because you mentioned that you're self-taught and you built this project and it sounds like you had to learn a lot of stuff on the fly too, as well.
And I know for a fact that folks that listen to this, not everybody that listens to this podcast actually writes code.
Maybe they're aspiring to write code or maybe they just sort of just been tangential, maybe a product manager or maybe just doing sales and marketing.
Just wanted to be up to speed and I'm thinking of specific people that are listening.
So if you're listening and you know who I'm talking about, just definitely, send me a text and say, thanks for thinking of me.
But I'm curious of your sort of ramp up into learning about all this stuff.
Because I imagine with the marketing, you get the SEO stuff, but knowing how to approach that, how did you sort of overcome that and why did the JAMstack become the solution for you?
Nick: Well, this is kind of like a two part question, because essentially it was 2018 timeframe.
My business partner and I had built broadbandnow.com.
We had a pretty decent team that the company was self-sufficient and we were bored.
We were like straight up board. We built a successful startup and we were ready to do something else.
We both got pretty hardcore into crypto and I jokingly said, "Hey, I'll build a cryptocurrency bot. You write the statistical logic of where we should trade and I'll write everything else."
And I sat down and I started writing out how I would approach it.
And two months later we had a fully functioning bot that was moving tens of millions of dollars on Binance a day.
Brian: Wow, that's amazing.
Nick: I built it all myself using my own money and learned a lot and lost a lot of money.
And then finally broke even at the end of it, because the market tanked.
And so you can, I got to learn Node kind of inside out doing that and you can ask my wife, I didn't really sleep.
I just focused on that. When I get into something, I kind of throw myself all in.
My wife likes to joke and say that either I'll die from this or I'll become immortal, that's how I kind of approach things.
She says, you know, like you go all in and you don't joke about it.
And when it came to building the site extension generator, it was just kind of the next logical step, because I had used Gatsby to build a couple sites.
I had migrated some sites off of WordPress and when we sold our last company, I had a consulting contract and part of my consulting contract is I need to acquire a site, turn it around and essentially make it more profitable.
So we acquired the site for about a half a million dollars and I rebuilt it in Gatsby and it was doing great on launch.
It was on track to make 1.4 million a year and then Gatsby pushed some different SEO issues that broke canonicals.
And we had nonstop SEO issues in mid 2018 timeframe.
And I just swore that I would never build on another framework where I didn't understand all the SEO implications.
And so that was really part of why I wanted to build my own.
And yeah, I'm sure Gatsby is much better today than it was years ago, because that's how software works.
But that was the motivating factor, is I knew that the JAMstack was something I liked because of the power that Gatsby gave me.
And the way that essentially WordPress was my training wheels and Gatsby showed me the power of the JAMstack.
And yeah, I think that's, as far as my learning curve, it's kind of a non-traditional one, but that's the way it goes.
Brian: By far. Like blockchain learning in 2018 using Node.js.
I think what I really took away from that too as well, is that you had an end goal.
You had a project and I think the best way to learn is actually having something to learn for or have a reason to learn it.
Because I think a lot of folks who do boot camps or maybe learn on the side, is that they're kind of learning for the sake of learning, but not actually applying it anywhere.
So you mentioned you learned Node.js in and out. You had to, because there was money at stake.
And if you didn't know what you were doing right or you had some sort of broken loop that you pushed a production, that would cost either a lot of money or you'd miss out on a lot of opportunity, because the way crypto, especially in 2018 was going.
It moves very fast. So you could miss a lot of opportunity.
Nick: You learn a lot about the event loop. I learned a ton about the event loop at that time.
It was just crazy to think about it, because I built this paper trading bot that was looking like it was going to do great.
And then as I started running it on my own machine, I realized that the event loop was delayed like a second and a half or something.
And got to learn about the event loop hands on and restructured the entire code base to run across 32 or 36 cores.
Whatever Amazon's largest server was in the Tokyo data center. I 100% agree.
It's like whether you're learning a programming language or a spoken language, you need a reason to learn it.
And if you don't have some sort of end goal in mind, it's a lot harder to learn that.
And so I'm curious about the SEO thing as well, because the value of that I get when basically you're bundling stuff and you have static assets.
That's going to be a little more performant, but what are other, some tips and tricks that maybe you could share with the listeners in regards to SEO and maybe even some of the power features that you get from Elder.js.
Nick: Yeah, for sure. I generally say that SEO is "do cool stuff and tell people about it."
And so there shouldn't be a service worker there that they can make it hard to debug.
I don't think you need a fat client that takes over and does all the client side routing.
Because that's just another thing to debug.
So essentially if, from an SEO perspective, what should you be thinking about?
You should be thinking about shipping static assets and things that make Googlebot's life easier to understand what your page is about.
And so that means generally HTML that doesn't need to be you rendered in order to understand what it is.
And so there's several services that do that, but Elder.js gives you that right out of the gate, because you're just shipping static HTML.
The other thing to be thinking about is Google has essentially two versions of Googlebot.
One is just looks at the plain HTML and another one renders the page to make sure that any active elements are understood as well.
And so if you have something that is hydrating, essentially the entire dom, you're going to have indexation issues where Googlebot will generally realize that the dom is going to be destroyed and then rebuilt.
And we've experienced that with different services, especially Gatsby, we had some issues with that.
And so Elder.js uses request either call back and intersection observer to really not adjust the page at all, unless it should be interactive.
And so what we've seen is that not only have our web vital scores really improved dramatically, but our indexation issues have gone away as well.
Brian: Okay. Excellent. Yeah.
I mean it's all stuff that I take for a granted, because I remember back in, so prior to 2018, I learned Node.js in 2015-ish, 2014.
And I like seeing Gatsby now and also Next.js do this.
Everybody calls it different things, but the incremental static site generation, as well as, I think, Netlify has a feature where I continue to butcher and forget what it's called, but in the same vein, only build the pages that are needed and update those.
Everything else is just going to be ready and search crawlable by default.
So it's interesting that you had to go through all this sort of, the path and patterns to sort of figure out how to do it right.
Or even get it close to good and right and perform it.
Because now everybody can benefit from all your knowledge and you kind of going outside the box, building blockchain bots or crypto bots.
Nick: Yeah. It's interesting.
I think incremental static generation is a sexy engineering problem, but it isn't really a problem that should be solved necessarily by the framework, unless you're a business running.
Unless you're Verycell or you're Netlify or you have a business model or your Gatsby, whatever their paid service is called, it doesn't really quite make sense.
Because you have to track all the data dependencies.
And so Elder.js actually takes a different approach to routing and building.
Essentially what Elder.js does is allow you to predefine all of the pages that you want built, but you can still have dynamic pages on top of those.
And what that allows us to do is build every single page in parallel, because we're not waiting on having to crawl your site or essentially determine what your URLs are.
And that allows us to not track the data dependencies, which that's a really sexy engineering problem, but it's not a problem that really drives business value when you can buy a bare metal server for your build server for a hundred bucks a month.
And essentially what we found with Elder.js is I wanted builds that scaled with computing resources and that's what we've got.
And so we were able to build an 18,000 page website in under a minute and a half.
And most of that time is built on waiting on the database because there's just so much data that we're pulling in on Elder Guide.
But some users of Elder.js have even said that on particularly large builds it's faster than some of the Go site generators.
Brian: Yeah, that is awesome. And I look forward to checking it out.
I'm curious, so you've got a couple successful startups under your belt.
Are you working on anything next?
Are you sort of just focused and taking a break at the moment?
Nick: So right now my two main projects are Elder Guide and Find Energy.
What we found is that generally when you move to a new place, you don't know what your energy providers are.
Just like you didn't know what your telephone providers were or your cable providers or internet providers.
Since my non-compete doesn't let me play in those spaces anymore, I decided to go away to an industry that actually needs more attention.
And so essentially I would say my career up until I sold was about making money and now it's more about impact.
And so when you look at Find Energy, our goal is to highlight which energy providers are actually doing good.
I mean, energy generation in itself is always going to be polluting.
Anytime you turn on a light switch in your house, essentially what's happening is a fire is burning a long ways off from your house.
Whether that's the sun or it's coal in a power plant, there's a fire a long ways off that is generating energy and we're capturing that.
And so inherently, that's always going to have some sort of CO2 emissions.
But we want to highlight the energy companies that are efficient with their energy generation.
And additionally, we want to make it easier to find what is the efficiency of a solar in my area?
Where could I find a solar installer?
And right now, as far as our business model, we don't really know what that business model is going to look like, but we know that a better tool needs to exist in that space.
And so that's the reason we're building it.
So I would say, essentially, the business incentives in the senior care space are not productive to building a great startup.
Essentially there's two major companies and both of them scalp the nursing homes, which is unfortunate.
I'm not going to talk into too much detail on those companies.
Brian: Fair enough.
Nick: But essentially, Elder Guide is going to be sitting there and cooking for a few years and Find Energy is becoming my main focus.
Along with obviously Elder.js, because that powers both those sites and all my other assets.
Brian: Yeah. Yeah.
And it sounds like once you sort of figured out the shovel and how to sort of, or even the tools that you have, you sort of built that framework library, Elder.js to now you can rinse and repeat into a new industry.
So I'm excited to learn more about this Find Energy project you're working on.
I was actually just in Home Depot and they always have those guys who ask about, have you converted the solar yet?
And in my mind, it's like, yeah, you're here because you're going to charge me 50K to install solar panels in my house.
And I wonder if there's a better way to take advantage of solar that doesn't involve me signing a big check.
Anyway, we could talk about this off air, but yeah, I'm curious to see what that sort of disruption looks like.
Also, same thing with in the Bay area, PG&E's got some issues starting fires and poor practices as well.
So, apologies anybody who works at PG&E listening, but there's opportunity to do better and get better as well.
Nick: The good news on that front is in our lifetime I think that we'll see energy as a service, essentially.
I think in the next 20 years that might be a reality where you pay a flat rate for your energy bill.
And it's kind of like your internet bill. And so yeah, you have some sort of cap on it.
But if solar and all these renewable energy things become more efficient, I see that coming in the future.
And so do a lot of industry parties. So that's exciting.
Brian: Cool. And I wanted to circle back to as well before we sort of wind up this conversation, because I remembered you had mentioned in passing about short codes.
And I excitedly nodded along as I knew what you were talking about, can you explain the value of short codes and why that matters in SEO?
Nick: Yeah. So Elder.js was inspired by WordPress and WordPress was inspired by Tools before it, but essentially short code is a string that wraps around other content or it can be used as a placeholder.
And so the power of short codes that I think is often overlooked in the job description community, the reason they're so powerful is often you have a content team that's responsible for content.
And then you as the developer or the project manager responsible for presenting that content. And it's generally two different teams. And what I find is that short codes make it incredibly easy to essentially put a placeholder in the content.
So, hey, I want a graph here. I have a graph short code.
It's like bracket, bracket, graph, and then you give it a name and that allows the developer to pick it up and essentially insert a graph there.
But where the true power of short codes comes in is future proofing your content.
And so as the web becomes more driven by headless CMSs, giving your content production team short codes and, or a specific string that wraps their content as placeholders makes it very easy to future proof should you change designs or change front end on it.
A good example of this is a YouTube video. If you have a thousand posts and you go and you have a thousand YouTube videos and you come grab the embed code on all of those, well, should the embed code change, you now have a problem.
Then you have to change a thousand of them where instead, if you just came up with a YouTube short code and you passed in a YouTube ID, you could change all of them at once.
And this is a very friendly way of building large sites and working with not so technical content teams.
I feel like WordPress short codes, if you've been in the WordPress community, you understand the power of it.
And so that was really built into Elder.js at its core, because let's say you want to display your latest tweet.
You need to make an API call. You need to do these different things, but that often lives within content.
And so it's a really efficient way of future proofing your content.
Brian: Okay, excellent. Yeah.
In the context that I understand this too, as well, I've used WordPress years ago, like 10, 15 years ago, I felt old saying that, but I was pretty young when I was using it, though, so bear that with a grain of salt, listener.
But what I'm getting at is that dev.to or Forum, they use short codes in their content, and I never made that correlation that perhaps they sort of barred that from WordPress or other SEO plays back in the, well, the current web 2.0. phase of the internet.
So, yeah. Excellent. Thanks for sort of breaking that down for me.
And also thanks for sharing the story of Elder.js and Elder Guides and all the work you've been doing.
I definitely wish you the best of luck to your future endeavors and would love to stay in touch and we're not actually ending the podcast now.
I want to actually transition us to picks.
So these are JAM picks. Things that we're jamming on.
Could be music, food, could be travel related as well, intent.
But if you don't mind, I'll go first. Because I've got two quick picks.
One is on my YouTube channel, youtube.com/bdougie.
Just a reminder, I changed the short code on that, which is my profile, it's bdougie now.
And I actually just released a blockchain series. So I spent some time.
I've always had issues with just blockchain development in general, because everybody sort of touts Ethereum as being the place for developers, but it's always been really dense.
Content and developer experience has not been super easy to sort of pick up and run with to build anything.
And I've tried multiple different blockchain, crypto currencies and stuff like that to build products on it.
And I finally found one that works and it's The Graph.
So The Graph actually, it provides the GraphQL endpoints for you to build JAMstack-esque applications with GraphQL.
And I walked through using The Graph and using Oracle as my client consumer and then Next.js as my front end client as well.
So I get to sort of do, leverage the blockchain without building my own blockchain servers.
That will be in the future. I will build out some other courses and videos around that, but I wanted to focus on stuff that I do first.
So that way I have context on how to learn this as opposed to deep diving into all this Web 3.0 technology stuff, which just kind of makes my brain boil or my eyes roll back.
So I feel like it's a good intro if anybody's interested, definitely check it out.
And then the second thing is we have DACs on my open sauce project, opensauce.pizza.
So we have DACs on opensauce.pizza. This was actually a community contribution.
They actually contributed DAC/Source. So I was already creating DACs on my own behalf.
Just to explain how the project works, how to contribute, how to leverage it, how to use dark mode.
And someone's like, hey, and I was hoping someone would do this, to be quite honest.
So I created inside a project it's a good practice to have a DACs folder and then a bunch of markdown files.
And DAC or Source will just take that folder and then render it into a statically deployed application.
So if anybody's interested in finding your next open source contribution, just checkout firstname.lastname@example.org, and you'll be on your way.
Nick: That's awesome.
For my picks, I've got one that's a country and one that's an open source package.
I'll start with the open source package, because I think it deserves credit because, essentially, often I say Svelte is the cheat code and the other cheat code I have is PostGraphile.
Essentially, if you have a Postgres database, you point PostGraphile at it and you get a full cred graph going. It's pretty amazing.
I don't know how I built things before it.
The thought of manually building my own APIs today is, that makes my eyes roll back in my head.
So I totally agree with you there on that. As far as my second pick, is Andorra. Is a country.
My wife is from Spain, the Barcelona area.
And Spain is a great place, but they like to tax incredibly heavy and having had several prior successes, I'm not willing to live in Spain due to tax reasons, but Andorra has always been on our radar.
It's been a place we've gone to ski several times, but it's a little country that's between Spain and France.
And so my wife and I are, we went on a little vacation to Spain and made a trip to Andorra and we started talking to attorneys and we found out that we could actually live there without a crazy tax bill.
We'll still have to pay all of our US taxes as usual. But if everything goes well, it'll be our new home base.
And so we'll be in Europe and right now, I think you and I are nine hours apart.
But I often say that the central European time zone is by far the best time zone.
Because you get to have a whole day's work ahead of when people wake up on the east coast and on the west coast it's even better.
So I'm a huge fan of Andorra.
It's a little country of about 60,000 people, but has about 10 million tourists visit a year to go shopping and skiing and yeah, hopefully we'll be calling that home.
Brian: Yeah, that is amazing.
And we were chatting about this offline too as well. I had not heard of Andora as a country.
I thought I knew a lot of the countries.
I might have just missed one of my college courses, but yeah, I'm actually looking forward to doing some Wikipedia and Google image searching of Andorra after this call.
So thanks for sharing that pick.
And listeners, hopefully you're going to be doing some Google searching as well and checking out Elder.js for your next SEO place and keep spreading the JAM.
Subscribe to Heavybit Updates
Subscribe for regular updates about our developer-first content and events, job openings, and advisory opportunities.
Content from the Library
Jamstack Radio Ep. #118, Headless CMS at Speed with Jake Lumetta of ButterCMS
In episode 118 of Jamstack Radio, Brian speaks with Jake Lumetta of ButterCMS. This conversation explores the latest insights...
Jamstack Radio Ep. #125, Life After Cold Starts with Matt Butcher of Fermyon
In episode 125 of Jamstack Radio, Brian speaks with Matt Butcher of Fermyon. Together they explore cloud computing, the evolution...
Jamstack Radio Ep. #122, Living on the Edge with Anthony Campolo of Edgio
In episode 122 of Jamstack Radio, Brian catches up with Anthony Campolo of Edgio. In this conversation they recap Anthony's...