Episode 100: Trailhead Engineering with Jeff Douglas | Salesforce Developers Podcast

Jeff Douglas is a Principal Member of the Technical Staff for Trailhead. I’ve had our interview in my back pocket for a while now because I wanted to save it for today’s special occasion: our 100th episode. Jeff and I go back a long way and Trailhead has a special place in my heart.

In this episode, you will learn all about Jeff’s experience with Trailhead from its earliest days until now. We also discuss some of the new things coming out with Trailhead including Trail Boss and Trail Tracker.  Listen to this special episode to hear more about the secrets to Trailhead’s success and how the engineering team keep it running and keep improving it.

Show Highlights:

  • Jeff’s experiences at Dreamforce.
  • How Trailhead challenges work now compared to how they worked in their early days.
  • What Trail Boss is.
  • The design goals of Trail Boss.
  • The tooling that goes into Trail Boss and how much of it is built on the Salesforce platform.
  • The features of Trail Tracker.
  • How Trail Tracker acts as an upgrade to leaderboards.
  • The huge impact Trailhead makes in the world.

Links:

Episode Transcript

Jeff:
Well, it was kind of a weird thing, because I’d been at a period of time when I was like the Salesforce evangelist. So I was always running with you guys anyways. I was always hanging out with you guys and doing stuff together and getting previews for stuff. So I was like an evangelist, but outside of Salesforce.

Josh:
That is Jeff Douglas, a principle member of technical staff at Trailhead. I’m Josh Birk, your host for the Salesforce Developer Podcast, and here at the podcast you’ll hear stories and insights from developers, for developers. Now I want to take a quick pause because I don’t know if you noticed this when you pulled up the episode, but this is episode 100. It’s a huge landmark for us. I’m very proud that we got here. I want to thank everybody who has helped us and supported us along the way. Of course, that includes you, our faithful listeners.

Josh:
Thank you for listening, and look forward to a lot more. If I’m being honest, I’ve actually had this interview with Jeff in my back pocket for a while, and I’ve kept it for this special occasion. Jeff and I go back a long way and of course, Trailhead is something special to my heart. So let’s go to the interview, where we start with just early days with computers.

Jeff:
With the computer. Oh, my earliest memory, I was in high school, probably in 10th grade. Like I said, I was the helper, the assistant in the computer class. We were right in the UCSD Pascal. I remember writing a phone book application. You could enter someone’s name and their phone number and their address like that. I remember doing that and getting so excited and showing my dad. He’s like, “No one’s ever going to use that book. You can use a phone book.” I’m like, “Oh, dad, thanks, man.”

Josh:
Oh, my gosh. Wow. Wow. Your dad was like the anti-Bill Gates. Bill Gates was the one who was like, the internet will come to life when it’s the thing you go to instead of … I think he might’ve actually used yellow pages as an example.

Jeff:
Yeah. That’s my earliest memory. Yeah.

Josh:
Nice. Nice. Okay. So how’d you get introduced to Salesforce?

Jeff:
Oh, this is a great story actually. So I was working in an SAP field, doing a lot of SAP implementations back in ’99. When Java came out, we did a whole big integrated aspect with SAP and Java, everything like that. So we had a consulting company that did that. So 2001 or 2002, when everything crashed, the dot.com crashed. I was looking for jobs. I was working at home for nonprofit doing stuff, but so I’m looking for a job. There was a company in my town that offered SAP consultant. Or they should a SAP shop.

Josh:
Okay.

Jeff:
So I’m like, “Oh, I’m going to get a job there.” So I applied there and they had no jobs available. This was probably 2007. They had no jobs available for SAP. But they said, “Oh, but we do have some Salesforce openings.” I’m like, “What’s this Salesforce thing? Let me check this out.” So they said, “Do you know Salesforce?”

Jeff:
I was like, “Yeah, I know Salesforce. I’m awesome at Salesforce.” So I had an interview in two weeks. So I crammed for Salesforce-

Josh:
Really? Oh, wow.

Jeff:
It was like, this was back before Apex. This is when everything was still JavaScript.

Josh:
Oh, no.

Jeff:
It was a huge company. It’s called Informa. Back then, we had 18 companies inside of one org. I got the job doing that. I did development for them. Then we’d have, every Friday, we’d have a two hour meeting. Honestly it was called “the picklist meeting” because all we’d do-

Josh:
No.

Jeff:
… is discuss we’ll picklists and who had X’d the certain picklists. So that was the extent of that job basically. So I did that about a year and a half, and that was when Apex came out, and I was working with our support rep on trying to figure how Apex worked. I started blogging and I was just blogging what I was having problems with. I didn’t want to get this huge blogging career ever. But I was like, “Okay, here’s my problem. Here’s what I’m doing. Here’s how I solved it.”

Jeff:
In the back of mind, I was like, “I’ll just document this for myself when I searched for it two years from now and can’t find my own solution. That’s the reason I’m doing this.” So, and then it got really popular. Then I left. I left Informa. I went to work for Appirio and then just blew up from there.

Josh:
Nice. Nice. You’ve had multiple roles with the word evangelist in your title. I just got to say that I think that’s like, it’s either a precursor or a requirement. But that role, you will eventually Google yourself, not you, but you will Google your own solution for the problem that you were having that day. It’s a very weird feeling.

Jeff:
All the time. All the time, yeah. I’m like, “I did this 10 years ago. Why did I know how to do this?”

Josh:
Right.

Jeff:
But the best part was, we were, back in 2012, I think, right before Dreamforce, they brought in … Salesforce brought in 10 Appirio consultants and 10 product managers from Salesforce. Adam Torman, Mary Scotton. There was a guy from … He’s Sebastian. Do you know Sebastian? He’s an Italian guy from the UK.

Jeff:
So anyways, me and Torman are sitting there. Adam Torman, if no one knows, who’s a product manager. One of the best product managers of all time in Salesforce, next to [inaudible 00:04:48]. We’re sitting there, programming this room with customers, and Sebastian’s Googling stuff. He’s got my blog up and I was like-

Josh:
No way.

Jeff:
I walk behind. I was like, “Oh, that guy’s got a great blog.” He goes, “Yeah. Do you know him?”

Josh:
Nice, nice.

Jeff:
It felt really good.

Josh:
I love it. I love it. Now, you’ve also done a lot of interesting experiments with Salesforce. The platform in general, Apex, Alexa, at one point. You were also tinkering around the time of the origins of Trailhead. You yourself were tinkering around with how to self check against the platform. Now, I’m guilty of doing that because I wanted to make our workshops better. But what was leading you down that path? Why was that code of interest to you?

Jeff:
I thought it was pretty cool. I’ve always been into learning. If I hadn’t gone into technology, I would have been a history teacher, but it didn’t pay very well. So that was the main thing. But I’ve always been interested in learning new things and teaching. So we had this thing at Appirio, where we wanted to give … Actually, it was Appirio Topcoder at the time. So we wanted to give-

Josh:
Okay.

Jeff:
… people free tickets into Dreamforce if they could solve these coding challenge with Apex. So we wrote this app online. So we’d say, “Okay, here is the class we want you to build. It has these inputs and we have these outputs.” So you would do it all in the browser. You would hit submit. It would take your code, use a tool in API. It would deploy it to an org. It would deploy the unit tests I’d already written. It would run everything and then bring it back and tell you if it passed.

Josh:
Gotcha.

Jeff:
That was a cool thing I wanted to do. So it was funny. That was probably the year that we, as in you, as when I was back at Appirio, released Trailhead, and I remember going to Dreamforce that year and it had this big thing. I was walking in and Sandeep was like … Sandeep Bhanot, who runs Trailhead, came up to me. He goes, “Hey.” He put his arm on me. “Hey, I wanted to let you know we got something that we’re going to release. I didn’t want it to hurt your feelings. It’s very similar to what you did, but it’s a little we’ve got called … ”

Jeff:
I think it was called [inaudible 00:06:48] Timeout. Don’t think it was Trailhead yet. “But I didn’t want to irritate you about that.” I was like, “Oh, cool.” But I was like, “Oh, you guys just totally crushed my dreams. It’s a Trailhead thing.” So that was how that happened. So we had nixed that, but it’s still a great thing. You just take your code, use a tool in API, and run stuff and get the results back. That’s kind of, as you know, being the father of Trailhead, that’s how the Trailhead stuff works.

Josh:
It’s one of the things that I learned, even as an evangelist at the time, like when we just started coding challenges against the rest of API. I think Trailhead wouldn’t exist, at least on its current format, if … I want to say it was about two years before Salesforce had this API-first philosophy. It was like, if you can see it on a page or if an Apex class can touch it, it should be on the rest of API somewhere.

Josh:
So, because people would be like, “Can we write a challenge about putting a button on a layout in the right place?” I’m like, “Of course we can’t do that. How the hell am I going to ask the platform that?” Then three days later, I’m like, “Oh, it works.” It just works.

Jeff:
Insane. No, I remember when we had the released a REST-based metadata API. Do you remember that? It was out for a couple of years.

Josh:
Yeah.

Jeff:
I was speaking at Dreamforce. I think it was the year that I had, I think at spoke at 10 sessions that year. One of them, I was like-

Josh:
Oh, God.

Jeff:
“Oh, yeah, this is the new metadata API. It’s all REST-based.” I was like, “And my thinking is that Salesforce is going to make this the preferred API over the SOAP-based metadata API.” Man, the next day I caught hell from the product manager for that API. I had to retract everything. Oh, man, it was just great.

Josh:
Oh, gosh.

Jeff:
But the whole API-first thing is fantastic. Just look at the amount of transactions we have now. It’s like, what is it? Up to billions a day? It’s just-

Josh:
It’s crazy.

Jeff:
Nuts, yeah.

Josh:
Yeah. So first of all, I want to give you a shout out because I remember that Dreamforce, and I also want to make it clear. You’re not exaggerating. You had, I think the number was 10 sessions that year.

Jeff:
Yeah, I think it was 10.

Josh:
Yeah. That Dreamforce was what took evangelism down the path of, we have to double check who’s actually utilizing our speakers because I’m like, “Jeff was speaking 10 times. We can’t keep doing this to people.”

Jeff:
Yeah. Literally, it burns you out. You know. You’ve been on the firm, too. Dave Carroll was great, which you and I both probably owe our careers to Dave Carroll. Don’t get me wrong.

Josh:
Yeah, yeah.

Jeff:
But he ran that thing really well. But it’s a lot of work. It is a ton of work to speak at those things.

Josh:
It’s a-

Jeff:
I remember actually, I got that award for what was it? It was a Developer Hero Award one year. I think it was that same year. I couldn’t accept the Developer Hero Award because I was speaking in a topic. So they had, it was Adam Gross had to give it to one of our CEOs, another CEO because I wasn’t available.

Josh:
Oh, gosh. Yes. Well-

Jeff:
That’s how [crosstalk 00:09:45] to that.

Josh:
Well, I thank you for your service, but, yes, we learn not to burn out our speakers. Also, it’s hard to enjoy Dreamforce when you’re on stage that much.

Jeff:
It’s tough. It’s tough. Then if you’re not a Salesforce employee, like we were a consulting company. We had to speak and then go out and entertain customers that night, too.

Josh:
Right.

Jeff:
So it’s a lot of work.

Josh:
You’ve got a job.

Jeff:
Yeah, you’ve got a job.

Josh:
[crosstalk 00:10:06]. Right.

Jeff:
Right.

Josh:
Well, okay. So then let’s transition from that job to your current one, slash … How did you join Salesforce itself? What was that transition like?

Jeff:
I’d been doing some Topcoder, and I never asked anybody at Salesforce for a job. I remember one year, in 2014, Dave Carroll, “You know what’s funny? you guys from Appirio never get jobs at Salesforce.” So we just never did. So one day I just reached out to him and one of the guys at Heroku, I think it was. Anyways, I can’t remember who it was, and I was like, “Hey, I’m just checking in. Would you guys have anything that’s available?”

Jeff:
I had just finished this really cool tutorial that I saw you do first. It was the one with Amazon Alexa, where I think you did it from a shoe closet, when Alexa first came out. But [crosstalk 00:10:55] because you’re like, “Oh, I got my Alexa today. Let’s see what I can do.” You’re like me, just hacking around and [nonsense 00:11:02] like I do.

Jeff:
I did it where you could, you could ask Alexa for your counter for today, you could create a new contact or lead or something lik that and all kinds of things. It’s cool. Apparently Marc Benioff saw that. I didn’t know that. So during the time when I’m talking to Adam Seligman, I emailed Adam and said, “Hey, I’m looking for anything you got available.” He goes, “Ah, let’s see. Okay, look, we need to get you in the evangelism team. Let me talk to Dave and see what we have available.”

Jeff:
The next day, he replies back and says, “Oh, Sandeep’s got a position I think you might be interested in. Can you come in next week?” So I flew in and met with Adam Seligman. It was funny because he interviewed me while I was sitting in a beanbag chair. It was really surreal. He’s got my resume and he’s sitting in the bean chair. He goes, “This is the weirdest interview I’ve ever done because I already know you, and everybody here knows you. So this is strange.”

Josh:
Right.

Jeff:
He gives me this piece of paper. He goes, “Hey, this is an email I got today from my boss where Marc Benioff sent an email to the chain of command to me saying that I should hire you based on this Alexa video.” So it was really surreal. Really psyched.

Josh:
Nice.

Jeff:
I met with Sandeep and that was the early, early days of Trailhead when it was all shared services because people who may not know that, Trailhead started out as a shared service with marketing. It was a lot of people on the team, but they were all halftime, quarter time. so I was the first person with Chris Duarte. So Chris ran the admin side of content development, and I ran the developer side of all that stuff. I was going to development and then write some of our content and help proof stuff. So it was just us. As you know, Trailhead was shoestring projects.

Josh:
Right.

Jeff:
We were like, “Okay, how do we make this into a product?” It was just the three of us. So we were like, “Let’s get some content out and get going.” We’re like, “We released four badges this month. That’s fantastic.” We would sit around a conference table and release new code and new content.

Josh:
Right.

Jeff:
But it was a great experience. Just everybody at Salesforce is the nicest people in the world. Everybody’s all about helping people get in this community and get better jobs and make Salesforce the better environment. But it was awesome.

Josh:
Nice. There’s a weird trend on the podcast where ask somebody to describe their current job. They simply say, “They love it.” I’m like, “No, I need details. I need more details.”

Jeff:
It is. I always tell people I work for, I was like, “You’re going to have to fire me to get me out of this company.”

Josh:
Oh, nice. Nice. Now, when you first signed on the code-checking challenge was still this Ruby on rails version of the No Duchess prototype that I’d written so very, very long ago. It was basically a configurable rest call-out that would stop if it ever saw a problem. Compare that to how your challenge checking is working now.

Jeff:
Yes. So you’re exactly right. So basically, the old version, we call it version one. Some stuff still run on that. You essentially send your code that you’ve got in your org. We check against some Ruby code and make sure that everything we’re looking for is correct. There was some issues with that. The big ones are, it’s not localizable. We can’t give back localized air messages, which of course that’s hugely important.

Jeff:
We also, for security, we wanted to do some different stuff to make it more sandboxable and we wanted to give back different air messages all the time, because some people would notice that when you run a hands-on challenge and you get an issue back, it’s just a generic message. “Hey, that didn’t work. Please try something else.” So we wanted to make something that was better and more skilled for for the future.

Jeff:
So it’s no surprise or no secret that Salesforce is into microservices.

Josh:
Right.

Jeff:
So we were the first microserver on Trailhead. We developed this microservice. It’s all now configurable. So you take your code that you’ve got in your org. We run it against Salesforce, bring the results back and we can actually display different messages based on what we find in there. So the nice thing about it is that we also support different APIs, not just the rest API, but we do tooling. We can do Heroku. We can do different APIs. That was one of the things also. We wanted to be able to create content on different platforms, so we’re not just a Salesforce learning platform. We’re making learning easy on different platforms. So that was really huge.

Jeff:
So it’s much better now. We’re still trying to convert a lot of the old, not old, a lot of the previous hands-on challenges to use this.

Josh:
Gotcha.

Jeff:
So, but there’s always updates to it. We’ve got a whole team that maintains that. I’m part of that team. It’s called Team Sriracha because we’re the secret sauce of Trailhead.

Josh:
I love that. I love that, and I just want to throw this out because to me it’s interesting trivia because in the early days … You’re a node guy, I’m a node guy, [inaudible 00:15:46] was a node guy. Then we had to convert a bunch of stuff over to Ruby because that’s what we had official support for. But now with your structure, you can write challenges in JavaScript. Correct?

Jeff:
Correct. Yep.

Josh:
Nice.

Jeff:
In JavaScript, which is huge. Yeah.

Josh:
I love it. I love it. Now, one of the things that you built out fairly early was something called Trailboss. Obviously we’ll talk about it. It’s some internal tooling, but I think people will be interested to know this is … because clearly we’re doing more than four badges a week now. Right?

Jeff:
Yes, we are.

Josh:
The volume is so big. So let’s talk about how some of that’s getting supported. So what is Trailboss? What were your design goals there?

Jeff:
So when you first wrote this app, it got converted into Ruby, essentially the code that evaluates, if you configure your hands and challenges correctly for your org, was in a Json file. So it’s one giant line of code about 7,000 characters long. I was really sick of trying to read hundreds of lines of Ruby code as one line of Json. So I was like, “There’s got to be a better way.” So as the want, and you’re the same way I know, I was bored over … I think I read a lot of apps over Christmas break. I get really bored. I wrote this, and I did it out of necessity.

Jeff:
I think a lot of stuff on Salesforce is out of necessity. So I wrote this app. You could log in, you could have multiple, you could see all your badges there. You could add units to it. You could add your hands-on challenges and then you could run them right there. So it was a web-based interface for actually creating stuff. Now, over the years, Trailboss has got integration with all kinds of internal services and it’s crazy, but it’s got security through different types of authentication.

Jeff:
But it’s the tool that we use, that all of our hands-on challenge developers use to write code. So they all write it in the browser and they can check the code against a solution org to make sure it runs correctly. Then when they’re done with that, they push it to GitHub, our private GitHub repos, where all our code stored at, and then it gets put into the production pipeline.

Josh:
Got it.

Jeff:
It’s going real well. It’s going real well. It’s mainly used internal now, but as you know with my Trailhead, there’s talk about doing things externally for customers. So there are some people who want to actually write their own hands on challenges for their own employees. So we’ll see what happens on that. Not quite sure right now. So, but that was the first thing I wrote out of necessity with that.

Josh:
Gotcha. Gotcha. We keep going back to this, but Trailhead year one, the content release cycle was something we could probably fit easily into a single spreadsheet. What does that look like now? What tooling is in place to maintain all of these different trails and units and modules?

Jeff:
Right. You’re exactly correct. Originally that was a spreadsheet, but then you figure out, if you start looking at what goes into a trailer, modular project, it’s all the content, it’s all the tags, it’s all the levels. It’s the the background color, it’s the image, all the stuff like that. So that was all kept in a spreadsheet. It’s a Google doc of course, a Google spreadsheet, but everybody’s updating it. It’s out of date.

Jeff:
After about a year, I was like, “Why are we using spreadsheets? We can use Salesforce for free.” So I finally convinced Sandeep to let me start working on this. So at Salesforce we have multiple orgs. One of the orgs that we use in engineering is called the Gus org. So I started working on an app that would work in the Gus org and it was called the release app, drug release app.

Jeff:
So now we manage all of the release process out of this app. So when we have issues with certain content, we’ll log our own bugs for it. The writers will fix it. Those get pushed up in the production content pipeline. They get deployed to the site. So it was the way we should be doing it. Now we have three developers worked full-time on this app that they’re just used to. It’s because the process, of course has over time, as you know, as all processes get more complex.

Josh:
Right.

Jeff:
So there’s more, and there’s more integration points and yada, yada, yada. So, but it’s a great app. It runs inside Gus. It looks like a Gus app. It’s all those same features you get from any Salesforce app. So it was the way to go and I’m glad Sandeep let me do it without me asking. I just did it and said, “Here we go.” That’s the way things work.

Josh:
First of all, I love there’s so many times in evangelism/advocacy, that the question is simply, “Should that really be a spreadsheet?” especially if we’re Salesforce. Really ask, “Does it need to be a spreadsheet or should it be a spreadsheet?” I even did that to myself one time. Dave told me to start tracking all the blogs that were getting published and the metrics behind them and all this kind of stuff.

Josh:
So I pull up a spreadsheet and I start entering it in manually whenever I remember to, and it was terrible. Nobody used because it’s always out of date and it tells you what you knew two weeks ago kind of thing. I had that moment, too. I’m like, “Why am I doing this in a spreadsheet when I’ve got a developer org sitting right here?”

Jeff:
Yeah, and it’s great with that because once you start putting in a spreadsheet, you’re like, “Can I get a report out of this?”

Josh:
Right.

Jeff:
I don’t want this person to see this column.

Josh:
Right.

Jeff:
So how do we do that, too?

Josh:
Right.

Jeff:
Oh, my God.

Josh:
God, if somebody would just build an app and put it in the cloud, it’d be so much easier.

Jeff:
I know. I know. Yeah, so I had the same problem.

Josh:
How much of the overall tooling that you’re working with Trailhead is actually built on the Salesforce platform?

Jeff:
You know, more and more. It’s no surprise that we’re trying to get more things integrated with the platform. So more and more stuff is. We do a lot of things like in a lot of our apps, we make calls into Gus to make sure. Let’s say we don’t have multiple API names for the same module. So we have a module that hasn’t been named. It’s kind of a unique thing. So we make sure that’s not an issue.

Jeff:
Because early on in Trailhead, if we released two modules in the same API, it would break everything and it caused havoc. I’m sure you remember that.

Josh:
Yes.

Jeff:
It just caused havoc on the entire site. So we had to call these checks in to make sure there’s uniqueness. Now we have namespaces and all kinds of things, but we’re getting more and more integrated into Salesforce core with that stuff. So, and [inaudible 00:21:55] runs that way, too. Security is running more of that. Permission sets, we’re running those out of Salesforce also. We wanted to try to get more and more or deeply embedded more with Salesforce core and that’s coming.

Josh:
Nice. Nice. Now another project of, I think yours, or at least you’re central to it. It’s off to the side of Trailhead tooling, but there’s there’s Trail Tracker out there on app exchange. What features does Trail Tracker give somebody?

Jeff:
Trail Tracker? I think it’s maybe the most installed app ever.

Josh:
Oh, wow.

Jeff:
We’ve got so many uses on that. So many orgs are installed in that. It was actually Adam Torman. I don’t know why we started this app, to tell you the truth. I can’t remember. You know how when you start something, you’re like, “What was the reason for this? What did we do this for?” But we’re like, “You know what would be great? If we could report on our company’s users and their Trailhead progress.” That’d be great because we can’t really write a report and stick that in Trailhead because the company couldn’t see it. There’s no personalization inside Trailhead for a company.

Jeff:
Here’s how everything starts off. “You know what would be great? If we can see our own users and what they’re doing in Trailhead, that’d be great.” So, Adam, once again, Adam Torman and I, who everybody loves, we start building this and we started building it and then we thought, “Let’s make this a managed package and put it out there on app exchange.”

Jeff:
Man, we have huge amount of users on there, huge amounts. So we wrote this and we’re making changes to it and everything. It’s actually a really good product. We have really good reviews on it. Some of the setups are interesting because there’s a whole Salesforce integration piece and it runs as a single user for all your use in your org. It calls the Trailhead API on a daily basis and grabs all your data for all your users on Trailhead. It actually just upsearches into your org. So you can run reports off it. You can run workflows off it, whatever you want to do with just data at that point.

Jeff:
So it’s really popular app exchange app. It’s going to be updated some more. We’re going to make more progress to it because people love it.

Josh:
Gotcha.

Jeff:
We want to make more personalization like that. But we have a team who’s just doing. I’m like you where I’m at. I’m really good at doing 80% of the work. I let someone do the documentation and the cleanups like that, so more of a hacker thing. So it came in the same thing with work.com. When work.com came in, we had some trail tracker aspects of that also. So I wrote some stuff for work.com. So that way, companies could see what badges their users had completed or Trailmix had completed. So there’s some lightning web components inside work.com that hit Trail Tracker as well.

Josh:
Gotcha. This integrates with my Trailhead, too. So they’ve got custom-

Jeff:
Yes. Yep, exactly, exactly.

Josh:
Got it.

Jeff:
That’s kind of how it gets little more confusing is regular Salesforce versus my Trailhead. It’s like there’s all these permissions that go around. So that’s always interesting to do that work.

Josh:
So for instance, when corporate emails me, because they wanted me to do a Trailhead certification three weeks ago, but I failed to do it, is Trail Tracker the one ratting me out?

Jeff:
You get that same email, don’t you? I get those all the time as well.

Josh:
Don’t we get a pass? It feels like we should get a pass.

Jeff:
I wish we would. Speaking of feeling to get a pass, it’s funny because people are like, “Oh, Salesforce. Sure, you can do all these great things.” As you and I both know, we’re using the exact same APIs as Salesforce employees that customers use for their people. We don’t have any kind of black box into it. We’re the same API, same constraints, same limits, everything like that.

Jeff:
So we don’t get any special treatment, unfortunately. But I think in that case, that Astro’s Trail Tracker or Astro’s Course Tracker, it’s a custom integration that we have for Trailhead. Yeah. I don’t think that’s mine.

Josh:
Well, now, to put an asterisk on that, because you mentioned the trail at API, but we don’t have, and don’t plan to have a Trailhead public API. Right?

Jeff:
I don’t believe so, but that’s above my pay raise.

Josh:
Gotcha. That’s an added question. Okay.

Jeff:
[crosstalk 00:25:43].

Josh:
We’ll take that up with Sandeep in a future episode.

Jeff:
Okay. Yeah. I would love to because everything in Salesforce, it’s API first.

Josh:
Right.

Jeff:
So we’re extracting a lot of this stuff now. We only build APIs now, and Trailhead web integrates with these APIs. So that’s how a lot of supports are offering integration and contents like that. They’re all API-based.

Josh:
So one of the things I love about Trail Tracker is that my … So metals, the first prototype, which was just bootstrap and no dot JS, running on Canvas.

Jeff:
It was fantastic. It was awesome.

Josh:
It was the simplest design. I created a search bar and then creative design was … I do have this tendency to create things either so simple or so ugly that other people feel like they have to completely redo it. I’m fine with that. But that version, one of the things I threw in there to show how we could have the community interact with this was a leaderboard. The leaderboard was, if anybody goes back and sees the old videos of metals, the leaderboard is the most fake thing in prototype.

Josh:
It’s literally just an HTML table put up somewhere. I think it was the first thing that Sandeep and I were like, “We’re not doing this. It makes no sense to do a leaderboard in year one when we only have so many badges. We have no idea how many people are going to use this thing.” So thank you because it’s like Trail Tracker is kind of like that. We finally got that, plus a whole bunch of other stuff, which is really, really cool.

Jeff:
There’s a couple of people in the community. They made their own leaderboards. Remember that? They would scrape Trailhead web to find out who was doing what, and it was funny because could watch them in a log, just scraping our site all the time.

Josh:
Yeah. And then they shake their fist at you when you change the CSS.

Jeff:
Yeah, exactly. I did that, too. I did something like that, too. I scraped some internal tools like that. But on the aspect of a leaderboard, I did that. I was actually coming home from, I was flying home from Dreamforce one year when I was on Trailhead. Probably the second year of Dreamforce and I really wanted to leaderboard also.

Jeff:
That’s when the streaming API was really big. So I made this app that it had a map of the world. When you would complete a badge, it would stream that out to the topic, and it would pick it up on the map and it would zoom into your part of the map and say, “This person completed this badge right now.”

Josh:
Nice.

Jeff:
The next person would do it, and it would zoom over to their part and then you could replay everything. That was super cool.

Josh:
That is so cool.

Jeff:
But the problem is that it means you’d have to have everything in Salesforce and we didn’t have it right then, but it was really neat. I’m into leaderboards also in the visualization of data. So that was pretty cool.

Josh:
Got it. Nice. Nice. Now I want to put a pin on Trail Tracker and to make it clear that it’s a lab’s app and it’s totally free, right?

Jeff:
Yes, it is totally free. Correct.

Josh:
Okay, perfect.

Jeff:
Correct.

Josh:
Perfect. So any new apps or tools that are currently on your horizon? Is there that one thing that you’re like, “You know what would be cool if”?

Jeff:
Not me and not for Trailhead because now Trailhead … Well, you know when you’re small, it’s easy to make something and make a big impact. Now we’re a huge team. So we’re all working at little small little bits of stuff.

Josh:
Gotcha.

Jeff:
So we’re all about microservices. We’ve got a lot of internal things working. We’re so … I don’t want to say overworked, but there’s so much stuff to do throughout engineering right now, because there’s a lot of great things we want to roll out to users because we want to do that. So there’s a lot of great stuff, but probably stuff I can’t talk about right now. But there’s a lot of great stuff coming. Don’t get me wrong.

Josh:
Got it.

Jeff:
We’re doing all kinds of fun stuff.

Josh:
Nice, nice. Always good to have a good safe harbor.

Jeff:
Yeah, exactly.

Josh:
But I do understand Trailhead is something of a family affair for you. Is that correct?

Jeff:
Yeah. Actually my son-in-law, he was, when the pandemic yet, he quit his job. He was doing lawn care in Florida in the summer heat. He’s like, “I want to do this Trailhead thing. I want to get a job at Salesforce.” So he did Trailhead for about, I don’t know, six months and I helped him out. We went over a lot of stuff, and he actually got a job at Traction on Demand last Thanksgiving as a pre-sales engineer. So it worked out real great for him and he did it all on Salesforce. I mean, all on Trailhead. Learned Salesforce by himself. Can totally be done. He got a great job. He almost tripled his salary that he was making before.

Josh:
Wow.

Jeff:
So he was happy. Now his wife, my daughter, is doing the exact same thing. She’s a veteran-

Josh:
Nice.

Jeff:
… and a firefighter. She’s like, “I don’t want to do this firefighter thing in Florida anymore.” So she’s really young and she’s like, “I’m going to start doing it, too.” So now she’s a Ranger and she’s got a couple of Superbadges under her belt, and she’s in the process of interviewing as well.

Josh:
Nice.

Jeff:
Then I have another son and he’s up to be a Ranger right now as well. So I don’t know. But the bad thing about it if we ever go under, which I’m not sure if that’s going to happen, but the whole family will be out of business. We’ll be out of luck. So, yeah, the whole house.

Josh:
I think you’ll probably figure it out and also, I’m crossing my fingers, and I still continue to make the joke to Sandeep that I don’t think this Trailhead thing’s a fad anymore.

Jeff:
Yeah. Oh, no.

Josh:
I think it’s got legs. I think it’s got legs.

Jeff:
Yeah, it might work out.

Josh:
It might just actually work out.

Jeff:
Well. The best part about it is, and you know, the best part is you’re literally changing people’s lives. Literally changing their lives. There’s so many stories of people who were doing something else. They hated it. What was the one lady? She worked … her family had a cotton business and she was in the field picking cotton in South Texas, and now she’s CIO or something like that. Some crazy people.

Jeff:
Always veterans are falling into this after they get out of the military. It’s just, it makes you almost cry sometimes about how life-changing it is on some of these people. We’re so humbled about what we’re doing. We feel it’s a privilege for us to help people do this kind of stuff and change their lives. We start off all our internal team meetings with slides from the community, people tweeting things about how it changed their lives. We always recognize people who have had their life changed by Trailhead. So it’s a fantastic job. Don’t get me wrong.

Josh:
Yeah. One of my quotes is always, “Trailhead was created for the Trailblazers.” That first, those early years in my mind, it was always like, how are we going to get adoption internally and get teams to work with this thing and move docs to it and stuff like that. It turned out not so much of a problem because the Trailblazers were so enthusiastic about it that everybody wanted to be in on it, so that they could help these people do these things that they’re now very, very excited about. So I’ll say it 100 times. There’s no way Trailhead would be where it is right now if it wasn’t for the Trailblazers themselves.

Jeff:
Yeah. You look at people like … I’ll give you Chris Duarte. You see how excited she is at all the conferences that talk about Trailhead and to present stuff. She’s honestly like that 110% of the time.

Josh:
She is. She is.

Jeff:
She is exactly the way you see her.

Josh:
Can confirm, can confirm.

Jeff:
Everybody who works in Trailhead is all about training and empowering people to make a better life. Everybody.

Josh:
That’s our show. Now, before we go, it did ask after Jeff’s favorite non-technical hobby. I will just warn you ahead of time, there will be llamas. Oh, yeah.

Jeff:
So we have a small ranch here. So I have alpacas and llamas like that, but it’s kind of around that. But woodworking. I started doing a lot of woodworking, right?

Josh:
Really?

Jeff:
So my family used to own a brewery. We had a brewery from-

Josh:
Right.

Jeff:
… 2016 to ’19, we had a brewery. My wife ran most of it. My son was the brewer, all kinds like that. So we sold that and I was like, “Oh, well we have one job now. What do I do now?” So this is during, before the pandemic started a couple months before it started, I started woodworking and now I’m really, really into it. So we bought a new house and luckily it’s a farmhouse style house. So I’m making a lot of furniture for it.

Jeff:
I put a spreadsheet together a couple of weeks ago, about how much money I’ve spent so far. I’m not going to tell you how much it is, but it took me a week or two before I showed it to my wife, how much I’d actually spent upon tools. But just to let you know that if you want to build your own furniture, it’s actually cheaper to buy the furniture than it is to buy the tools that make the furniture.

Jeff:
But it’s great. It keeps me sane because you know-

Josh:
Nice.

Jeff:
You’ve got to have something to balance this computer stuff all the time.

Josh:
Right, right.

Jeff:
You’ve got to be able to get away and do whatever. If it’s hikes in the woods, if it’s going and volunteering, if it’s taking care of cats or dogs, whatever, you’ve got to have something to balance it out. People are like, “Well, don’t you want to use CNC?” I’m like, “I don’t want to use a CNC to cut wood. Last thing I want to do is sit down at the computer. I want to use my hands and do stuff.”

Josh:
Right, right, right.

Jeff:
That’s probably my hobby right now. So yeah.

Josh:
Nice. Tell me about your llamas.

Jeff:
Oh, we have three alpacas. Their names are Chewpaca, Al Pacacino, and then Professor Potato Hats. Professor Potato Salad, and we’re Fancy Alpaca Ranch on Instagram. So we have that there. Then we have a llama. We bought a llama. Went to Kentucky, got a llama. I live in South Florida. So it’s a little warm for them. So we keep them sheared.

Josh:
Gotcha.

Jeff:
So we bought a llama named Newton. We’ve had him six months or so. So our life revolves around our llamas and alpacas.

Josh:
Nice.

Jeff:
Now we’ve got eight chickens. We had 10, but we had a snake and I had to kill a snake. Anyway, so but it’s an interesting life now to be an alpaca rancher.

Josh:
I want to thank Jeff for the great conversation and information. As always, I want to thank you for listening. Thank you for getting us to episode 100. Now, if you want to learn more about this show, head on over to developer.salesforce.com/podcast, where you can hear old episodes, see the show notes, and have links to your favorite podcast service. Thanks again, everybody. I’ll talk to you next week.