Ryan Brainard, Principal Member of Technical Staff at Heroku, joins me on The Salesforce Developer podcast to talk about the curious history of Workbench.  While never an officially supported aspect of Salesforce (it’s technically an open source reference application) it has still found a place as something of a Swiss Army knife of debugging utilities for working with Salesforce and it’s related API’s.  Follow us along for an origin story of this toolset and it’s evolution over the years. Towards the end we’ll get a little teaser into what Ryan’s working on over at Heroku.

Show Highlights:

  • The early days of Workbench, running Workbench open source from his laptop computer, and its evolution from his laptop to the cloud
  • How Workbench has helped developers debug, investigate, and work with Salesforce features and APIs
  • Workbench as a demonstration of the open source project
  • When he realized Workbench was becoming more than just a “pet project” and gaining momentum
  • Ryan’s favorite Workbench feature, the Matrix Cycle View


Episode Transcript


RYAN: Yeah, throughout college everyone always thought I was a CS major, even though I wasn’t because I was always tinkering with computers and doing computer related things.


JOSH: That is Ryan Brainard, a Principal Member of Technical Staff over at Herokue. I’m Joshua Birk, a Developer Evangelist at Salesforce. And on the Salesforce Developer Podcast, you will hear stories and insights from developers, for developers. Today, we have something of a special episode for you, as we’re not here to discuss Ryan’s current role at Heroku. Instead, we’re going to talk a little bit about Salesforce history in the form of Workbench. While never an officially supported product – technically, Workbench is an open source reference demonstration. It has seen a lot of uses something of a Swiss Army knife for working in debugging on the Salesforce platform, as new features have come up or both the platform and also added to workbench. For this episode, I offer Ryan’s interview nearly in its entirety. Let’s back up a little bit and hear what Ryan actually majored in college.


RYAN: I actually studied advertising. That’s what my final major was.


JOSH: Was, was that your plan to go into advertising?


RYAN: It was not. I went in actually in biological engineering. And then just realized, my heart wasn’t in it as far as I think it was more with some of the classes and I started to get into art and other stuff and other stuff in college, as they’re doing photography and painting of the things and yeah, so I wanted something that I could kind of express myself creative creatively, but then also have, you know, some scientific backing and I kind of landed on advertising, which is kind of a weird blend between the two.

You know, there’s some psychology, there’s art and kind of everything. By the time I was done with that, I realized I really didn’t want to do advertising either. But yeah, throughout college, everyone always thought I was a CS major, even though it wasn’t. Because I was always tinkering with computers and doing computer related things. But yeah, I never I didn’t actually study them. Oh, well, I mean, for high school, I was, you know, going over to people’s houses and fixing their computers or going with local businesses and setting up local networks. Doing websites like helping people around the dorm and college of fixing whatever computer issues they had. So I was kind of like the, you know, the local tech guy for a lot of people. So they just kind of assumed that I was studying computers as well.


JOSH: Gotcha. How did you come to work at Salesforce?


RYAN: So I moved to San Francisco in You know, back in 2007 2006, and then yeah, having not had a official tech background, I had actually been teaching in Korea for two or four a year prior to that, and wanting to kind of get back into tech or, you know, officially gonna jump into it. And my roommate happened to have a friend that was working at a little company called Salesforce, you know, met him at a dinner party and then ended up applying and, and, and joining and I joined as part of the support team at Salesforce.


JOSH: And how little of a company was it back then, how long? How long have you been at the company?


RYAN: That was 2007. It wasn’t that small, but it was smaller. It was I think around 2000 people total.


JOSH: That was when they were still trying to say that they felt like a small company like a startup.


RYAN: Yeah. I think they’re still saying that but


JOSH: So what was your early role? Like in support?


JOSH: Yeah, I was in tier two basic support. So I basically dealt with all kinds of issues across the the core product that were escalated. So we had tier one that dealt with things like password resets, and, you know, simple things that could be resolved right away. But then if anything needed to be escalated to HQ, my team dealt with that. So it was kind of all over the place, you know, from, you know, workflows not working or some cases and isn’t operating or can’t find a contact or, you know, roles and permissions aren’t correct. So, and then, you know, if we didn’t know something, then we would escalate it up to two, tier three and then into to R&D.


JOSH: How did you go from being on support to building Workbench?


RYAN: Sure. So I was at work one day, and I just noticed that there was PHP book on my desk. At that point, I’d never done any programming that I’d done HTML and very, very light JavaScript or, you know, kind of the beginnings of that. But I had never done any programming. didn’t know anything about PHP. And anyway, I brought the book home and started reading it and thought, wow, this is really interesting. And got kind of like halfway through the book to kind of understand the basics and then wanted to start trying it out. I knew Salesforce had some API’s. I didn’t know what those were at that point. But they seem like they might work with this PHP thing. So I gave it a whirl. And like, just started from there. I started, I think building out the describe functionality. And then I started making a little query builder that’s still there today.


And, yeah, it just started off from there and I started kind of using it for My job like, you know, a case would come in. And maybe someone didn’t have access to a contact or something. And I’d say, Okay, well, what does this look like if I look through the API, or maybe I need to be able to describe some object or something like that. And I was it was really helpful in my job. So a lot of the functionality came from using a day to day and then I would go home, and then I build out new functionality into workbench and then kind of rinse and repeat and start to use that. And then from there, it just started to spread. Like I started using it, I showed it around to some of my co workers. And then as cases would kind of get escalated throughout the company, someone would have a link Oh, I use this tool Workbench. You can use this here and just more and more people started to learn about it. From there…


JOSH: and I want to clarify, you still don’t know who left the PHP book, right.


RYAN: I don’t


JOSH: I mean, it’s just it’s kind of that, you know, extremely interesting set of kismet right there that that that would start to push that forward. Did you did you use like were there libraries at the time or anything else in PHP that you were kind of relying it on or is the the early days of Workbench is really creating everything from scratch?


RYAN: Um, there was the PHP toolkit, which it was Nick Tran made that I think he was the head of developer marketing at that point. So that is what a lot of the original stuff was based on. So yeah, that was definitely gave a huge head start on interacting with the API’s that allowed me to kind of abstracted away all the wisdom and soap stuff. At least in the early days, a lot of that’s been it’s it’s still in there actually. But as it’s grown out to support different API’s, like the rest and meditate data and other API’s a lot of that kind of infrastructure layer has been either replaced or wrapped. But that definitely gave a really big head start.


JOSH: In the beginning, what was the the evolution because it started as it was just running like on your, your laptop, right? And now it’s like, you know, hosted in the cloud. Like, what, like, where people like asking like what your IP address was?

RYAN: Oh, yeah, I mean, basically, I think I was just handing out my IP address to anyone. And if I like, close my laptop for lunch, then people didn’t have access to workbench. I mean, those were, that was early days.  Yeah, and then it just kind of progressed, we moved it to a VM like running in the department that anyone could access across the company. And then I think then we finally said, okay, we probably should put a domain an internal one. And I should have mentioned to like, from the beginning it was all open source. So it was always out there and the official installation path for anybody out in the public who wanted to use it was, you know, install it on your own server. There was no hosted service at the beginning. And it wasn’t until Database.com came out, which, if you remember was a product, I don’t think exists anymore. But it was basically Salesforce without a UI. It was the API only, right. And it’s really hard to market a product that doesn’t have a UI. So Dreamforce rolled around, and they needed some, some way to demonstrate database calm and have customers interact with it without having to write their own API clients. And Workbench was, you know, kind of fit the bill there because it was a UI without a an API without a back end and then it just complimented database.com really well. So at that point I was approached to make it into a kind of semi official service at that point. So we kind of launched the workbench dot developer force calm as a demonstration official demonstration of this open source project. And that’s when it started to kind of make its way into some of the documentation and some of the, the demonstrations at Dreamforce and such. That’s kind of when it really became official and more known to the broader world. And at that point, it was running on easy to directly in Amazon. And then so I’m working I mentioned before, I’m working at Heroku now and it was around that same, I guess it was a little bit after that that I moved over to the Heoku and One of the first things I did was port Workbench over to Heroku.

JOSH: And so the public one is running on Heroku now

RYAN: Yeah, and it’s actually been pretty interesting. The, like Workbench itself has evolved kind of over my career at Salesforce like right at the beginning it was like, you know, fresh programmer and then as I started to to you know, using workbench I started to learn more about Apex and development in general I started diving really deep into Java and so you kind of see that it goes from like, somebody who doesn’t know at all what they’re doing, then, you know, starting to look a little bit Java like I start having like all these like factories and, and whatnot inside. And then when I move over to Heroku, you start to see I’m introducing a lot of distributed system patterns. So it’s kind of interesting. If you look, look through the code, it’s there’s some really horrible parts at the beginning. And then it gets kind of enterprise. And then it gets kind of like distributed system me. Depending on kind of at what point I wrote, write the code.


JOSH: Because most developers don’t have a singular repo, where the commits are kind of a history of their evolution as a programmer.



RYAN: What do you why doesn’t everybody keep something in source control?

JOSH: Well, I think in my part, I don’t have that the attention span to pay attention to anything for so many years. So a couple of follow up questions on that. First of all, like day one, it being open source, where were you already kind of involved in the OSS community? What was the what was kind of the inspiration for doing that?


RYAN: Um, I think I mean, at the beginning, it was a personal project. I was doing it on my own time. And I saw no reason not to just put it out there. Yeah, so it was more I didn’t want to host code myself. So I think at that point it was living on Google Code, or something or other.


I can’t remember it was.


I think that was when Google Code was running SVN perhaps. And then it moved over to GitHub, at some point. Yeah, I mean, I think it’s just that’s just my default. If I start a new project, if I don’t have a good reason, I’m going to make it open source from day one.


JOSH: Do you do you remember, it was like their singular tipping point where you realized that this was no longer going to just be your personal pet project? It was It sounds like it’s a very slow expansion. But did you have like an aha like, Oh gosh, this is like Like, the company’s gonna start really looking at that. Was that just Database.com? Or was it or was there an earlier about Database.com was the thing, that being kind of inflection point.


RYAN: Before that it was somewhat more gradual. And I would kind of keep an eye on like some of the logs of like, Oh, look, it’s, you know, being used by these people in these people and more and more orgs and more and more users. And also, I remember, like, just keeping, keeping track of like, the downloads. That was back when it was on Google Code, and you could actually view that really nicely. But, um, yeah, it was pretty gradual up till that point, but I did, I think it was maybe probably went went from support to the rest of the company. Like once I, I remember feeling confident enough to like, include it in some email, like, hey, there’s this little tool I made. Maybe you could look at it there and it might make more sense or perhaps, but it was it is pretty gradual?


JOSH: Do you have a favorite feature on workbench favorite feature,


RYAN: um, one like, and it’s not very well known feature. And I think it’s not enabled in the public version. And maybe even I can’t remember is the matrix cycle view. And if you’re not familiar with that, what it lets you do is when you run a SOQL query, you can also choose rows and columns that you want to display that on. And so you basically get like an X Y axis, and then it plots the records on the X Y axis, which is a really interesting way of visualizing your data. And that actually came out of the way Google Code used to display their bugs and issues. So you’d be used to be able to say like, maybe you put like the priority on the x axis, and the Maybe like the like component on the y axis. And then you can plot those you can plot your issues you can start to see like density graphs, kind of a scatterplot type thing of your of your issues. Maybe you see Oh, I have lots of you know, p one issues in the database or something like that. And I wanted to have something similar you could do with Salesforce records. So that’s where that came out of. So I think it’s something that people probably don’t use very much or know how to use. But that’s one of my one of my favorites.


The streaming stuff was was pretty fun to work on.


And maybe some of the rest explorer stuff was was kind of fun to work with as well.


JOSH: Yeah, I mean, I have to tell you, I owe you a huge thanks. So I’m both of those two last things because the lack of in platform based UI for the streaming events made it very difficult to show audiences that like that, like aha moment, you know, that’s like, here’s this simple demo just like, I did this. And then in real time, it just pops up over here. And, and Workbench really filled that role. And the other thing I have to think here is, when I was building out the early days of the Trailhead challenge check system. One of the one of the questions we kept trying to ask ourselves was like, well, we want to make sure that somebody crafted this page layout correctly. Is it actually possible in the REST API? Because we’re only using rest at the time? You know, can we check that button? Can we check that button in that section in that layout? And I was constantly getting gas that, you know, that kind of question to me will be like, Well, can we check x, y for z? And I’m like, I don’t know. I’m going to go pull up workbench. Like I will just keep hitting, hitting the API’s until I can give you an answer. And also now that I’ve, you know, hitting the API’s that’s the challenge checks worked, right. So it’s like I can just basically copy and paste right out of workbench like that’s the format that we need to do in order to make this API check. So seriously, personally, huge, thank you. Because it was, it was a tool that I don’t know how I would have done specific things, my job without it.


RYAN:  Awesome. Glad to hear that. Yeah, there’s actually on both of those features, they’re used pretty heavily by internal Salesforce R & D. As especially more and more as Salesforce becomes, like Salesforce, the product becomes more and more API first, people who are building out the wise are building out features that depend on the API’s, they’re using, workbench to build that or even building out the API’s themselves. So it’s definitely used a ton internally, a lot of people run workbench on their local boxes, like internal developers, and then they’re hitting Salesforce running on their local machines. And then they’re, you know, they can, they’re creating that REST API and then hit the API, then they can view it in the browser. I’ve heard similar things from other people. So that’s great to hear. Excellent.


JOSH: Now, you’re not as involved in the product these days, right? you’ve, you’ve gone on  to Heroku. And there are some internal teams that are helping support it. But once again, it’s not an it’s not an official Salesforce product that achieve that has official Salesforce support. Correct?


RYAN: Correct. Yeah. So I, I’m now as I said at  Heroku, once I moved, I backed away from the project a lot. And I will mention we actually did when we were building out Heroku private spaces, which is the the team that I was on. We actually use workbench a lot is our target app when we used it because it was a really great test app because it was simple enough, but then complex enough that it had, you know, there was a worker and a web and there’s a Redis back end but no, you know, there’s nothing like too crazy. It was kind of the, the the perfect size. It’s very demonstrable it was easy to like show people knew about it internally. So it’s kind of been interesting again, like where it kind of came up in my career at Salesforce, but yeah, I’ve backed away from it. The Dev Tools team is kind of maintaining and shepherding it now, it is kind of a strange like, its status I mentioned before, it’s officially a it is as they say – it’s an official demonstration for open source project. You know, if you want to use it, then for your own purposes, you’re supposed to install it yourself on your own on your own hardware, or your own Heroku instance. It’s very easy you can I guess that’s another time when I kind of dusted it off was working with when the Heroku Button was launched, so I worked on the back end of the Heroku Button. If you’re not familiar with that, it basically lets you like one click, create a Heroku app from a template. So if you go to the workbench repo, you can click on deploy to Heroku. And then it should just launched on Heroku, assuming you have an account

JOSH: And so you created a launch a Workbench application button.


RYAN: Yeah, I mean, basically like so my team worked on the back end of what actually happens but then for, you know, if you have any app that you want to run on Heroku or you want especially you want other people to run on Heroku easily, you can create a what’s called a Heroku Button. And all it is is you just have an app dot JSON file that has some configuration in it that says Like, what are the configuration variables and what kind of dynos. Do you want and, and then anybody going to your repo can just, you know, mash that button and They get their own copy of the app, which could be really great for just like demonstration purposes or templating apps. And workbench just did a that was just kind of a demonstration of that.


JOSH: It does sound like workbench keeps coming back into your life though.


RYAN: It does Yeah, I mean even came back I’m working a lot of Kubernetes now and a lot of the, you know, when I was kind of getting my feet wet, I find the best way to like learn technology is just dive in and try it and workbench was there like, again, it was like simple enough. But complex enough to be great to, to try out on Kubernetes that was one of the first things I ran when I was kind of testing the waters there, I’m sure.


Josh So before we start talking about current projects, how is it that you came to go from Salesforce over to Heroku?


RYAN: I was working on the VMware for VM, what was it called? Oh, Java I Yes, I was. So yes, I had just joined what was the Java Cloud team, which was a cooperation between VMware and Salesforce. And around that same time, we acquired Heroku and basically, there was kind of competing projects there. And they kind of had the same goals, Heroku was running Java, are just starting to start running Java at that time. We were working on getting Java in the cloud with VMware. And so we decided this doesn’t make sense. Let’s just join forces with Heroku. And so I joined as part of the of enterprise Java team.


JOSH: So I remember that dream for us fairly clearly. And I’m just now having to have this thought that it must have been a weird couple of events that year for you because we we announced Database.com at the same Dreamforce that we announced we were acquiring her Heroku. So and those two things were completely separate. Right? So that’s two huge events for you, occurring almost at the exact same time.


RYAN: I think it was actually separated by a year, because I think we announced the Heroku acquisition. I don’t remember they were the same year, but they probably work. That makes sense. And then it wasn’t until we kind of joined forces about a year after the acquisition.  It wasn’t like an immediate, you know, acquire and take over. And they don’t remember that dream force, what we announced from database com versus what was actually going to, you know, what was what was real for Database, you know, what was actually working for Database.com.

JOSH: I know, there was a lot of demo work that I got to learn and about a half hour. My first demo shift at that Dreamforce for somebody like here, all the things that we can tell you, I’m like, This will be fun.

So what are you working with her okay now?


RYAN: So currently I’m working on our next generation runtime that’s going to have much closer interaction with with Salesforce between Salesforce and Heroku.


So that we can consume events coming in from Salesforce. So maybe like a contact is created or an account is created or whatever kind of platform event happens and then that could then trigger code to run on the broker side.


JOSH: Very cool. All right. I only have one final question for you. What is your favorite non technical hobby?


RYAN: My favorite non technical hobby … probably … learning Korean. I’ve recently started learning the piano kind of obsessed with that right now.


JOSH: Learning a new instrument is an interesting challenge What brought you to do that?


RYAN: It’s my first instrument, actually. So yeah, I don’t know I had always. I always felt like I should learn music in some way. I’ve never been particularly musical, but I always just kind of felt like programming and music and math and science, like they all kind of somehow go together in a strange way.


So yeah, I’m enjoying it.


JOSH: My huge thanks to Ryan for the conversation and of course, all of the hard work that has gone into Workbench over the years. I honestly can’t even imagine how many hours it has saved people when it comes to debugging and investigating and working with features and API’s on Salesforce. Now, you might have heard a little bit of a teaser there in the form of Ryan’s current work at Heroku. That was announced at Dreamforce 2019 in the form of Salesforce Evergreen, we will almost certainly be covering more of that and a future episode. If you want to hear more about this podcast, go to developer.salesforce.com/podcast, where you can catch up on old episodes and find links to your favorite podcast services. Thank you very much for listening and I will talk to you next week.

Get notified of new episodes with the new Salesforce Developers Slack app.