Episode 12 • John Lindquist

Jack Doyle, creator of Greensock

John Lindquist speaks with Jack Doyle, the creator of Greensock. They discuss many things including the motivation behind the creation of Greensock, managing GSAP forums, and how he transitioned from Flash to Javascript.

Jack didn’t initially create Greensock to be a monetized business, but rather a helpful tool for other developers. He was working at an ad firm doing animation work, and it was there that he found the inspiration to create Greensock.

The Robert Penner easing equations were like magic for Jack. Such simple equations that could create such cool effects were terrific. He talks about how he doesn't consider himself a math wiz in the slightest. The visual feedback that animation gives with the equations however really help him solidify the concepts.

Jack's success turning his side project into a successful business is genuinely impressive. It was a stressful time for him; he was working for the agency still at the time. People don't feel safe with a product that might lose support any day, so he goes into the security behind a financially backed product and the factors that lead to him monetizing his business.

Finally, there is a lengthy discussion on the challenges of having to maintain such a universal library that works on nearly every platform. There are a *lot- of edge cases. Jack also makes an effort to keep the API stable, so that questions that you find online from ten years ago can still apply to you today.


"Jack Doyle, creator of Greensock" Transcript


Jack Doyle

John Lindquist


John Lindquist: Alright, Jack. Why don't you go ahead and introduce yourself.

Jack Doyle: Alright, I am Jack Doyle. I created GreenSock. Back in the day, yeah, it was a Flash ActionScript tool that just kinda helps move stuff around the screen and do crazy animations.

Jack Doyle: And now, I've ported it over to JavaScript and the open web. And so, it is alive and breathing out there. And I think, it's on, I don't know, something like four million sites at this point that we're aware of.

John Lindquist: Wow.

Jack Doyle: So, it's gotten quite popular. And it's very humbling and feels like a big responsibility. But we, at the end of the day, just love helping people to solve animation challenges.

John Lindquist: Yeah. So, you're like the Spiderman of great power and great responsibility out there, then.

Jack Doyle: I don't know. Don't make me feel even more responsibility, please.

John Lindquist: So, I have to ask. Back in the Flash days, when we were all using all onEnterFrame and all these animation techniques, what was the original motivation for GreenSock and TweenMax, TweenLite and all the things that kind of stemmed out of the platform?

Jack Doyle: Good question. Well, I was working at a big advertising firm that they obviously do a lot of animation work. And a fair amount of that was banner ad work, as well. And so, there was some really strict file size requirements and also, performance was kind of a big deal.

Jack Doyle: And now, we have ... We're spoiled with all of these fancy computers with crazy processors. But back then, it wasn't quite that great. So, you really had to be careful about how you wrote your code and how things worked.

Jack Doyle: And so, there was basically a problem. And I saw it and just kinda tried to solve it for myself and create this little engine that I could throw instructions at and it would do stuff for me and make things a lot easier and more concise.

Jack Doyle: So, it was basically, at the end of the day, about trying to solve a problem. So, it was just for myself, really, and the agency I was working for. And then, I don't know, I can't even remember back that far.

Jack Doyle: But I think I put it out on a really lame blog that looked horrible and I'm completely embarrassed of now. But it was just like, "Here. If somebody else can benefit from this, here you go. Give it a shot." And then, it started taking off.

John Lindquist: Do you remember what version one was, like what the features were? Was it just function around x+=1. And you could change the one or something?

Jack Doyle: Yeah, it was very basic. I can't even remember back that far. You know, I'm getting old now, so my memory is going. And pretty soon [crosstalk 00:03:02].

John Lindquist: I forgot what a banner ad was until you brought it up there.

Jack Doyle: They still exist out there. I've seen a few of them on the web.

John Lindquist: Yeah, my ad-blocker's pretty good.

Jack Doyle: Yeah, but it was pretty basic, I'm sure. And over the years, it just kind of ... More people asked for more features. And it just kind of made sense, so I just ... It grew and grew and got more and more advanced.

John Lindquist: Do you remember the first time you used the easing equations? Like Robert Penner stuff?

Jack Doyle: Oh, Robert Penner, yeah. That was like magic. It was so cool.

John Lindquist: It still is to me that-

Jack Doyle: It really is. Yeah, that guy, that was great. The idea that math, simple, well, relatively simple math, could create those kind of effects was this magical idea for me that I had not really been introduced to before.

Jack Doyle: And these little easing equations, they're so small. You look at them and it's just like, oh, there's a little math going on. And what is this math.sine and cosine? And what does that have to do with easing and having something speed up over time, or slow down over time or, I don't know.

Jack Doyle: That was a really neat kind of thing that unlocked a lot of ideas for me.

John Lindquist: Yeah, it's like the, "Didn't I learn about that in high school?" And it's 10 years later and, "Oh yeah, this is."

John Lindquist: I wonder if they taught easing frameworks in trig class, if people would pay more attention?

Jack Doyle: It's funny because I have two sons. And one's in eighth grade and the other's a sophomore in high school. And so, they're learning some of this stuff about trigonometry and geometry, and sine and cosine.

Jack Doyle: And they're always like, "Well, I'm never gonna use this stuff." And I'm like, "What?" Guess what? That's not true. I use it almost every day. So, you better listen up.

John Lindquist: Sine paid for your Xbox, son. You better pay attention.

Jack Doyle: That's true. It's totally true. Yeah. So, pay attention in math class, kids.

John Lindquist: So, are you a math master now? I see you're doing ... You've had those CustomEase tools around for a while. Have you figured that all out?

Jack Doyle: You know, I do not consider myself a math wiz at all. I do like math or something's strangely interesting to me about it, but there are so many people that are way smarter than me in that.

Jack Doyle: But over the years, it's almost like a riddle for me where I get introduced to the Robert Penner stuff. And then, it's like, "Wait a minute, how does that work?" And then, you start picking it apart.

Jack Doyle: And then, take it another step further and try to customize stuff. And then, get into the Beziers and how does a Bezier work? It took me so long to and I had to see it. I'm more of a visual learner.

John Lindquist: How do you pronounce Bezier?

Jack Doyle: Yeah, exactly. I always said Bezz-ee-air. But I mean, I heard somebody else say it and I was like, "Oh, okay. Wrong, as usual."

Jack Doyle: But, when I see it visualized, I go to some articles online and Wikipedia, or whatever. And they visualize how these things works and the dots move over time to the curve. And it's like, "Oh, okay. I think I kind of see that."

Jack Doyle: And then, I can start working out the math in my head. So with enough sheer time and a sledgehammer trying to get into my brain and enough fumbling over in the browser and trying to make things work, eventually something clicks in my brain.

Jack Doyle: And then, I can get it.

John Lindquist: Yeah. I think like you. If math can be made visual and I can tweak things, where the things that I changed have a visual response to it. Then, if I do that like a hundred times and I eventually kind of put the my changes make this happen. My changes make that happen.

Jack Doyle: Yes.

John Lindquist: Then, I understand math. There's no other way for me, unless it's a ... That repetition of this change makes that. This changes make that.

Jack Doyle: Yeah. If I go to a Wikipedia page and I see all the formulas, it's like my eyes glaze over. And I have no idea how to drink all that in and understand it. Then, if I scroll down enough and they have some visual representation, then it starts to click.

John Lindquist: Yeah. So, what was the point ... I mean, this was back in the Flash days when you were able to turn this into a business. What was the point where you thought I could turn a tweenian library into something that could make money for my family?

John Lindquist: You're such a unique story to me be someone who actually made money off of a project they're doing on the side. And then, turning it into a full business. I'm still flabbergasted by your success. It's amazing.

Jack Doyle: I kind of am too. I don't take a lot of ownership for it, but it's really ... I remember it was a stressful time, actually, because I was working for the agency and doing all this side work.

Jack Doyle: And I had my own business too, just doing design work. I did video work for awhile. But then, when I put this thing out there and people kept asking for tweaks and features. And then, eventually, some people who were using it would email and say, "Can we please pay you something for this?"

Jack Doyle: And I would say, "No, that's fine. I don't need any money for that. Just go ahead and use it." And then, some of them were getting really persistent. And they would get annoyed with me. They were mad.

Jack Doyle: They were like, "Why won't you take our money? We don't feel right about this, because we are making money off of your thing. And we're not paying you for it." And I think, at the end of the day too, they understood this concept of if there's no money going to support something, then the author's dedication to it can easily wane.

Jack Doyle: Because after all, they have to earn a living for their family. And so, they're going to do what they need to do for their full-time job. And then, if this is just a side thing that, "Hey, I'll get to it when I get to it, if I get to it.", then it leaves them in a precarious position with their clients.

Jack Doyle: They're relying on this tool that you created and they feel weird about that. It's like they would rather have ... They would rather support it financially and have it supported for them.

Jack Doyle: And so, that was a decision I had to make at some point where there was enough people using it and features being requested that it was like, it was taking a fair amount of my time. And I remember this one evening down in my basement right in front of my computer, my wife came down.

Jack Doyle: We were chatting a bit. And I don't even remember whose idea it was. But one of us said, "Well, what if you just created a club to give people, maybe somebody who donates or who signs up for this club, can get some extra plugins that are not really essential. But they're just some nice extras."

Jack Doyle: And it's a way of giving back to those people who are supporting it. And I said, "Well, let's give it a shot. Let's try it." So, Club GreenSock was born at that point and just put it up online.

Jack Doyle: And it was not massively successful, early on at all. A few people gave. I had put up a donate button. And people would pitch in five bucks and they would feel really good about that.

Jack Doyle: And it generally was fund five bucks here and there. But yeah, once I created this club, it was like something was official. It went from this, "Hey, toss in a donation if you want." Into this, "Hey, it's an established business thing."

Jack Doyle: And I think, it gave it some credibility. And I think, ultimately, it resinated with at least some of the market to where people started signing up. And I think it gave them more confidence that this thing could be relied upon, because somebody's backing it.

Jack Doyle: There's money going in. And I was showing some level of dedication to it. So, I think, ultimately, it was then. But it did not happen ... The success did not happen overnight. It was years where that kind of ramped up to where I could step away from my full-time job.

John Lindquist: Yeah. So, Egghead started with just me and a donate button, as well, right? I just had some videos up on YouTube. And people could click donate and send me money through PayPal, or whatever.

John Lindquist: And then, I had to bring on Joel at any sense who brought in the actual business acumen in sense of how to turn it into something that people would give us real money for and bring in more people and build it into what it is now and what it will be in the future.

John Lindquist: I've talked to some other people about how they've hired mentors to help publish books and to launch their products. And they've taken courses, bootcamp courses, on how to start up a business.

John Lindquist: Is there anything that you did, as far as after Club GreenSock got going? Did you hire business people to help you out with it, or did you just do it your own way and you're still figuring it out?

John Lindquist: Or, how's-

Jack Doyle: That's a good question. I think, most of it was just me fumbling and bumbling as I kind of do with code, as well, learning as I go. But then, I have had a business coach for the last several years.

Jack Doyle: But that was very late in the beginning. But before I started Club GreenSock, I always had this little entrepreneurial side of me, even in ... From a kid, I was cutting grass for the neighbors.

Jack Doyle: And then, I was in college. It was the time when nobody really had a color printer. This is how old I am, alright? But a really high quality color printer. And I was in graphic design school.

Jack Doyle: And so, we would have to go. We'd drive for ... I can't remember how long, half-hour, 45 minutes to this place that had a fancy color printer. And we would pay a crazy price to get print-outs for our projects and then, turn it in.

Jack Doyle: So, I went out and there was some new fancy color printer that was, I don't know, 350 bucks. And I bought it. And then, I started selling prints. I'd put posters up around the campus to start advertising my services.

Jack Doyle: And so, I started making money off of doing prints for people. And when I worked for an agency, I did the same kind of thing where I undercut where they were going to get their printouts elsewhere, and I kind of made a ... Create a lower price and invested in a $2,500 printer and just-

John Lindquist: That's awesome.

Jack Doyle: Did that overnight, just about every night for them. So, I've just always had that side of me that was interested. I am definitely not a crazy smart business guy. I don't want you to get that impression.

Jack Doyle: But I've always had that interest. And I've always tinkered with that kind of thing.

John Lindquist: Right. So, is that a ... You just want to work for yourself on your own ideas and do your own thing, because working for other ... I've always had that thing where I just don't like reporting to other people.

John Lindquist: And I don't like working on other people's projects that I'm just not inspired by or motivated by. Do you feel the same way?

Jack Doyle: No, it's just because I'm antisocial. I don't like people. No. I totally resinate with that. It's something different when you're ... It's your idea. It's your initiative. And that there's just more higher in the belly, or something like that.

Jack Doyle: I don't mind doing work for other people, but you're right. It's just a little different when it's your own initiative.

John Lindquist: Yeah. That's actually something we've read a lot about, as far as running Egghead itself and our employees is giving them so much ownership over their own tasks where they feel like they are the ones in charge of it.

John Lindquist: And they are ... That it is their work and their goals. They're essentially hiring people that are motivated to do what's good for the company, rather than hiring people and telling them exactly what to do and when to finish it by and all those sorts of things. It's-

Jack Doyle: Micromanaging, yeah. And it sounds like that's worked out very well for you.

John Lindquist: Yeah, yeah. So far, it's ... Yeah, the whole dynamic of running a business and deciding what to pay people and defining when and how to work, and all these things. I mean, we're all still remote.

John Lindquist: There's no specified vacation or anything. It's like work. Here's a set of tasks, or here's your area of responsibility. And there are expectations that you do work in your area of responsibility.

John Lindquist: But other than that, just get it done and take pride in your work.

Jack Doyle: Yeah, I think that's the best way to do it. And I don't think that running a business is for everybody. I think there's a type of person that fits well into that and there's a type of person that it's just terrible for them.

Jack Doyle: I've known some people that they give it a shot and it's just they are built in such a way. And there's nothing bad about this at all. In fact, it's really important to have people like this in the world.

Jack Doyle: Where they just need to be around people. They want to ... If you say, "Go off in the corner and here's a set of objectives, and just work." They dry up and it's just like they can't. It's not how they're built.

Jack Doyle: So, I've always been reluctant to give off this impression that it's fine to work for somebody when you're younger. But then, you should really transition at some point and own your own business.

Jack Doyle: Because I totally don't think that's how it works or how it should work.

John Lindquist: Yeah. It's funny. My wife and I took a personality quiz the other day that asks some of those questions of how do you respond to certain situations. And one of them was, "Do you like to improvise or organize?"

John Lindquist: And strongly agree/disagree and I was all the way on the improvise side. I don't like planning. I like to jump into situations and just make do with what I have and have fun with it.

John Lindquist: My wife's on the completely opposite end of the spectrum where she loves to have a plan and execute the plan. And if she does that well, then that's considered success for her. And just that reminder that we're so ... People are built so very differently with the way they approach things is one of those.

John Lindquist: My eyes were reopened to, wow, we're ... Even in our relationship, we're so very different with our approach to things and how we need to talk about going on a trip. I would just want to go on a trip and walk around.

John Lindquist: And she's like, "Well, we have to have this planned and that planned and that planned." And I need to respect her way. And hopefully, she can respect my way. And I think that's the same for any sort of employment, or management, relationship is people are just super different.

John Lindquist: Where everybody ends up is a totally personal thing.

Jack Doyle: Yeah. I hope to invest in a marriage counselor. No, you just described my relationship and my wife's relationship, as well. She's definitely the, we're going on vacation. We need to have what we're going to do each day.

Jack Doyle: Let's find out. We have all these activities. I'm like, "I want to go just sit on the beach."

John Lindquist: Right. And walk around town.

Jack Doyle: Jump in the waves, yeah. Yeah, see what happens.

John Lindquist: Right. So, I have to ask. You mentioned support and how people paying you would encourage you to support them and answer the questions, and that sort of stuff. I looked at your forum.

John Lindquist: And you have a nice, rounded number of 45,000 posts right now on your GSAP forum. Congratulations on that. But how in the world do you support 45,000 questions? How does that work?

John Lindquist: And I also cried a little bit when I saw that the Flash one was an archive. But the 45,000 questions.

Jack Doyle: You're really the only person who would go in there and look around.

John Lindquist: I probably have a question in there somewhere.

Jack Doyle: You probably do, yeah. And it's close to 80,000 in total posts.

John Lindquist: Man.

Jack Doyle: And forums.

John Lindquist: That's amazing.

Jack Doyle: And yeah, we're at 50,000 members. Yeah. But that's over years and years. That's not just this last year. So, they built up over time. And really, it's not just me. I mean, my goodness.

Jack Doyle: If it was only me doing this, I'd be pulling my hair out. I really don't have any hair left. So, I have-

John Lindquist: I'll join that club.

Jack Doyle: So, Carl's been a huge help in that, Carl Schoof. And then, there's also a bunch of just extremely sharp kindhearted moderators that have stepped up and answered a crazy amount of questions every day.

Jack Doyle: And they just do it out of the kindness of their hearts. And we're so honored to have them involved there. So, yeah, it's a big blessing.

John Lindquist: Have there been questions in there that have caused you to GreenSock and what it can provide? Has that sort of feedback from the community, or questions from the community, driven the project at all?

Jack Doyle: I don't know that the forums ... I'm sure GreenSock would not be where it is today if it weren't for the forums. Because it definitely allows us to hear what people are saying, what they want, the things they're struggling with.

Jack Doyle: And so, if we see 20 people asking questions about the same thing, that's kind of like, "Hm, maybe we should address that a little bit better." So, it's been tremendously valuable.

Jack Doyle: And it's also really valuable to have forums where people can search, because that's one of the reasons that I started the forums to begin with was that ... Imagine life without forums and people are going to have these questions.

Jack Doyle: And then, they email you. And it's like the 20th time you get the same question, you're like, "Okay, maybe I should make sure this is out there somewhere for people to find, so I don't have to keep on answering the same thing over and over again."

Jack Doyle: So, they've been instrumental in that as a resource for the community and a great resource for us developing the product, definitely. Feature ideas and there's just some really smart people out there that have pitched ideas for doing various things.

Jack Doyle: And it's like, "Yeah, why didn't I think of that? Let's do that."

John Lindquist: So, along those lines, what's the craziest idea, or even craziest use of GreenSock you've seen? Either from the forums or if there's something we can see online, or anything.

Jack Doyle: You know what? You put me on the spot.

John Lindquist: Sorry.

Jack Doyle: No, that's alright. I don't know how to answer that, to be honest. We have a showcase section on the site of examples and it's amazing. I can't keep up with ... Just the other day, I went to some awards site and it was probably 80% of the award-winning sites were using GreenSock.

Jack Doyle: And I click into them and it's like the creativity of the people out there building these sites is just nuts. It's off the charts. And so, I wouldn't even think of using GreenSock in various ways, but they do it.

Jack Doyle: At the end of the day, it's really an engine that changes values over time. So, you don't have to think of just as fading opacity. You can use it to do ... Wire it up to control a thousand different particles.

Jack Doyle: And as you derive something, it's tweaking values. And it's a whole group. It's crazy what people can do. There's nothing that ... There's not a single site where I think, "Oh, you have to go check this site out."

Jack Doyle: Because it's far and away, the craziest use of GreenSock. There's a ton of them. Just go to our examples section on the website and you'll see a lot of really neat stuff.

John Lindquist: Sweet. Is there a you never expected GreenSock to be used in this way or that way sort of example, as far as well, I built the tweenian library. I didn't expect it to use it to, I don't know, pilot a spacecraft to the moon.

Jack Doyle: You know, yeah.

John Lindquist: It sort of seems to me like you built a hammer. And then, you walk down the street and you'd see all these houses. You're like, "Whoa. I made the thing that helped them make that?"

Jack Doyle: Yeah. No, you say that, yeah. I know it's been used in a lot of video games, which, I guess, isn't terribly surprising. But I figure it would just be on the web. But, no, there's companies using it to do console level stuff.

Jack Doyle: There's people that ... There's a company who uses it for their printers, the UI on their printers. So, you walk up to an inkjet printer and you have this screen where you interact with it.

Jack Doyle: And there's little animations that happen on that screen UI and that's driven by GreenSock stuff. So, I just never thought that somebody would use it like that.

John Lindquist: Well, that's awesome. That's like walking into Costco into the printer section and being like, "Hey, I made that."

Jack Doyle: Yeah, a little. Yeah, yeah. I was going to mention something about another company, but I always have to be careful. Because some companies would rather not necessarily be publicized.

Jack Doyle: But there was a particular company. I won't divulge who they are. But I was always waiting for them. They're just a big name. There's a lot of other big names that I knew were using our stuff.

Jack Doyle: But there's just this one company and they finally started using it. And I was like, "Yes, so happy."

John Lindquist: Alright. Congratulations on that.

Jack Doyle: Thank you. Thank you. Thank you.

John Lindquist: So, do you remember the transition from Flash to JavaScript and the challenges that came with that? Is that a good memory, a bad memory? I mean, did that-

Jack Doyle: It's a traumatic thing I've tried to forget for years. Thanks for bringing that up.

John Lindquist: Oh, sorry.

Jack Doyle: No. It was ... Yeah, it was weird. In Flash, you know this, it's like you hit control, enter and then, it like publishes this thing. You look at it in the Flash player and it works, or doesn't work. And that's it.

Jack Doyle: But then, in this world of the open web and the browser, it doesn't work like that. There are all these different browsers. And they work so differently. And there's varying support for all these different features.

Jack Doyle: And that's such a different world to deal with. And it's like, "Oh, it works totally different on Windows than it does on Mac, so I have to figure out ... I've got to set up a Windows computer. And I have to set up ... Oh, and there's devices that have touch enabled. And I have to have an iPad and an Windows OS phone and I have to have Android. And I have ...", all these different things.

Jack Doyle: And, oh, the Microsoft things use pointer events and Apple uses touch events. And Android is a little different and the order in which the fire events is totally different. I won't go into all the details, but it's overwhelming to have to deal with all that stuff and to make one tool that you can just plug values into and it works consistently across all of those browsers.

John Lindquist: I-

Jack Doyle: Was quite-

John Lindquist: I imagine that of all the people who have suffered through the inconsistencies of JavaScript between browsers and devices that you are possibly the person who has suffered the most.

John Lindquist: Because the feature sets around animations and like you were saying, all of the different events, those were the most inconsistent of everything that was out there. Yeah, thank you for sticking, just to it.

Jack Doyle: Well, there's that. And there's SVG and it's handled totally different in various browsers. And Microsoft doesn't recognize any kind of CSS transforms. You have to do it in the transform attributes. And on and on and on, it goes.

John Lindquist: Tell me how you really feel.

Jack Doyle: It's just nuts. And I had to support, well, I chose to support IE8, if you can believe that, back in the day. And IE8 was like, "Transforms? What the heck are you talking about, trans ...". It didn't recognize those.

Jack Doyle: But Microsoft had some crazy, proprietary filter that I had to figure out how to tap into that to mimic transforms in IE8. So, it was just crazy. So, that was the most painful point of moving from ActionScript to JavaScript.

Jack Doyle: Because really, JavaScript, the language itself isn't terribly different than ActionScript. You know this. But yeah, the browser differences were quite far the most painful thing. I miss the days of Flash where you just hit one button and it works, or doesn't work.

John Lindquist: It seems to be getting better though, so that's ... Is there any feature in JavaScript land, or in CSS land, that you're really looking forward to, or something that's finally stabilized? A success story, if you will.

Jack Doyle: To be honest, not really. I mean, requestAnimationFrame is definitely something that, I guess, that has really stabilized in all the browsers. So that's definitely a huge help. There are a lot of other things that are kind of like mostly there, or halfway there.

Jack Doyle: And it's like, I don't know. Is it ever really going to get fully there? I know some people want to talk about the Web Animations API and how-

John Lindquist: Hell yeah, yeah.

Jack Doyle: And how maybe GreenSock tap into that under the hood to have these other benefits and maybe require less code under the hood. But it's like CSS animations where I, in the early days, I thought, "Oh, I'll just tap into that, because it's hyper-accelerated and blah, blah, blah."

Jack Doyle: There's all these articles that say it's the fastest thing out there. And then, I dig in and it's like, "No, no, no, no. That's not going to work for a bunch of reasons." I won't bore you with all the reasons.

Jack Doyle: But there are definitely a slew of reasons as to why that just can't happen. They don't give you the hooks that you need. And the Web Animations API is definitely a step in the right direction.

Jack Doyle: So, I don't want to make it sound bad, or terrible. But it just cannot do what we would need it to do. We build out all these features in GreenSock. And so, if we were to lean on Web Animations API, and it's not even supported in all the browsers right now.

Jack Doyle: But even if, magically tomorrow, it was completely supported across all of them, build on that for a lot of the features that we have. So, it's frustrating. So, you ask about if there are any technologies that have come of age and it's a success story.

Jack Doyle: There's not a lot of them that come to mind, because there's still ... Even transforms have this weird quirks in between various browsers. We end seeing all the Edge cases, right? A lot of developers, they just toss it out there.

Jack Doyle: They're doing translateX or something, whatever. It's finding in most browsers, but we get all the Edge cases. So, if you have this type of element and it's at this type of scenario and like Firefox, if the SVG is not visible, if there is display none, then it chokes in this scenario.

Jack Doyle: And it won't do [inaudible 00:32:19] and whatever. Where everybody's at, but that's somebody we have to deal with all the time. So, I'd say the majority of my day is just-

John Lindquist: Edge cases.

Jack Doyle: Maybe. Well, maybe not the majority of my day, but a lot of my days are dealing with Edge cases, making sure that our tools just work across the board. In a lot of native technologies, they're fine for a lot of cases but they fall short in terms of browsers.

Jack Doyle: So, we have to try to figure out patches around that. So, that's fun stuff. That's what I do.

John Lindquist: Has the code base around GreenSock ... Have any of the Edge cases completely just disrupted the entire architecture of it and require any rewrites over the years? Or, has the code base been able to kind of stay flexible enough as-

Jack Doyle: I don't know about complete rewrites, but it's definitely required. Some heavy lifting, let's say, some heavy modifications of little chunks and pieces. So, I can't remember there being a, "Hey, we had to change 80% of the code and engine, because of this one thing."

Jack Doyle: It's more like, maybe, there's a ... 80% of the code base had to be tweaked somehow to get around this particular thing. And that will be on a really large one. I can't imagine building 10% of the code base.

Jack Doyle: But if you compare the GSAP of today versus two years ago, then yeah, there's probably a whole bunch of stuff that's changed over that time. It's just in little pieces and releases. And you know how that goes.

John Lindquist: Yeah. I mean, your API has been familiar for 10 years. It seems it can still TweenMax.2 and the thing, the time and options. And that's been the way it is. I don't know. It's like the constant in the universe, the one thing that doesn't change.

Jack Doyle: Yeah. And that's been really, very intentional. There's some things that, knowing what I know today, if I could go back and change it, there are a few things that I would about the API.

Jack Doyle: But it's not to the level where it's worth disrupting everybody who's learned it to date, so we really try so hard to not mess with people. Because you know how that is when you learn a tool and you're finally like, "Oh, I understand this."

Jack Doyle: And then, they change it from underneath you. And you're like, "Oh, shoot. All of my old code broke. I have to go back and figure out what syntax changed and whatever." It's no fun.

John Lindquist: Well, I think a lot of libraries can learn from that where the questions you answered 10 years ago when someone asked how to do something are still largely applicable to the way you would do it today.

John Lindquist: So, I think, the confidence in GreenSock itself stems a lot from, you know what, this answer that I found on Stack Overflow from a long time ago is still the correct one. Whereas, everything I see out there these days is this constant overhauls of API's.

Jack Doyle: Yeah, I know. That's totally true. Over 10 years of doing this, we've dealt with a lot of questions and a lot of challenges. And it's kind of like I see new tools go out today and I'm not putting them down.

Jack Doyle: There's some really smart offers out there that put out some great tools. But I find myself looking at the API and going, "Oh, no. That might seem fine for now but then, there's going to be these 20 different Edge cases that are ... That's going to fall down."

Jack Doyle: And you're locking yourself into something that's going to make it slower. And animation is so sensitive to performance. I mean, the human eye picks up on the smallest little glitch. And so, we've made that decision to write the code in a way that, technically, it is bigger.

Jack Doyle: Our library, TweenMax, some consider it somewhat heavy compared to some other options out there. But some of that is very strategic in that you can write code that is really fast at runtime, but it takes more code because you're inlining various things.

Jack Doyle: And so, just my opinion and you others can disagree with me, but I care more about the runtime performance. I would rather take 250 milliseconds more to load the page initially one time. And it's a one-time proxy load library, so all the other pages don't have that extra load.

Jack Doyle: But I would rather give that up on that very first load and have everything run 20% faster, or 50% faster, whatever it is, than have the smaller library. But some people get really myopically focused on that file size thing.

Jack Doyle: So, anyway, sorry. That's probably-

John Lindquist: I was always in the ... Just include all of TweenMax on all of my projects. TweenLite's not a thing to me. I TweenMax all the things.

Jack Doyle: And I think that's smart. Honestly, we've been asked to ... If we were going to create a TweenNano, just even smaller than TweenLite. I don't know if you remember-

John Lindquist: I do.

Jack Doyle: We had one in ActionScript.

John Lindquist: Yeah, I do remember that. I thought you already made that.

Jack Doyle: Yeah. It was like two kilobytes or something. We've been asked for it, but decided not to. Because I just don't think it's a wise decision at this point, because, well, the first ... I don't want to get into all the reasons, but if guys like you who load TweenMax and you get everything.

Jack Doyle: And it's a one-time load anyway, so it's ... If you had to reload it on every single page, okay, then maybe you need to think about something different. But on all the trade-offs with going with something super, super small just for the sake of being super, super small.

Jack Doyle: And you look at the average internet connections these days and how much time are you really giving up by loading that extra few kilobytes versus all of the headaches of trying to be like, "Oh, wait, I can't do that, because I'm only using TweenNano. Oh, and I can't do that, because I'm only using TweenNano."

Jack Doyle: Okay, well, I'm going to have to load TweenMax. Okay, now you just loaded two different things. At the end of the day, you just cost your user more, because of that. They don't have flexibility.

John Lindquist: Yeah. And I think, if you have animation in mind, you're usually using images or SVG files or things that are going to be bigger than the animation library anyway.

Jack Doyle: Yes. Yeah, right on.

John Lindquist: So, I see that, and you mentioned this before we started the call, that you're working on the dev tools. So, now, you're building tools for your tools. So, I'm anxiously awaiting the tools that'll support dev tools that supports tools, but we'll work on that later.

Jack Doyle: We're working on that, but it's super secret. You're not supposed to say that.

John Lindquist: So, the dev tools, tell me about them and what they do and what the development experience was like for you. Was that fun to build? Looking at it seems like-

Jack Doyle: Kind of yes, kind of no. There's some complexities there that were uncommon. But yeah, so for those who aren't aware, GS dev tools is basically ... Here's the problem that it solves. You create some kind of animation for your page.

Jack Doyle: And in my mind, there's two different kinds of animation, broadly speaking. There's the little UI kind of sparkles, the little nuances. You roll over the button and it wiggles, or whatever it is.

Jack Doyle: Those are just little interactions. But then, there are those that are doing storytelling. So, this thing happens. And then, it explodes. And then, this new text comes in. And then, that ... An image comes in over that and then, it explodes and whatever.

Jack Doyle: Those types of animations are particularly difficult to orchestrate. You're choreographing all of these nuanced motions. And one after the other the other and you want some things to overlap and some things not to overlap.

Jack Doyle: And timing wise, I mean. And so, the difference between a .5 second duration and a .3 duration. It might sound silly, but there's a big difference.

John Lindquist: Yeah, for sure.

Jack Doyle: And I, the animator, whenever you're animating, you're experimenting. Do I want to use this ease or that ease? Oh, that thing came in a little too fast. Let me tweak it. I want it to be elastic, or I want it to be backed. I've got to ease up.

Jack Doyle: And so, the life of the average animator, they're going back and forth of refreshing the screen and saying, "Oh, you know what? 2.5 is too long. Let's try .4. Refresh. Nope, that's no time. Refresh."

John Lindquist: .45.

Jack Doyle: .45, yes. So, that back and forth, we're trying to solve some problems with that. And sometimes, you load the page and it's like your animation is really fast. And you look at it and you're like, "Oh, wait. I didn't quite see that nuanced moments. Did those two things line up exactly the way I was hoping?"

John Lindquist: Oh yeah, totally.

Jack Doyle: I didn't see it. So then, I've got to refresh the page again and see if that worked. And so, it just gets a little cumbersome. And we also saw a fair number of people who wanted to wire up little progress bars with where you can have your animation playing.

Jack Doyle: And then, you can scrub back and forth so that it rewinds and fast forwards and that type of thing. And then, we're all doing that manually. And it's just like everybody is recreating the wheel to do that.

Jack Doyle: And you have to make something draggable, or you have to hook it up to the progress of the animation. There's all this boiler plate code that you have to put in there and that just seemed wasteful.

Jack Doyle: So, GS dev tools, you load it. You just say, "GS devtools.create" and, boom. You get this scrubber that shows up at the bottom of your browser window that you can scrub back and forth. You can alter the time scale of things, so you can make it go in slow motion to see exactly how those things are lining up as you're choreographing the motion.

Jack Doyle: Setting in and out points, because it's really annoying when you're building out a 30-second long animation and you're already done with the first 27 seconds. And you're just working on the last three seconds-

John Lindquist: You have to-

Jack Doyle: Every time you hit refresh, you're watching that stupid 27 seconds you're already done with. And you're like, "Okay, can you just get to the end already? You're wasting so much time."

Jack Doyle: So, this allows you to get around all of that. You can just say, "End point 27 seconds." And it just starts from there, but you can still scrub around if you want to go back and all that.

Jack Doyle: So, it's just some advanced tools for-

John Lindquist: It's amazing.

Jack Doyle: Making your work flow go much smoother. So, there's a bunch of conveniences in there. I don't want to go through all the features. But anybody who's doing a lot of animation, especially with ... Well, only with GreenSock stuff is going to love having GS dev tools in their pocket to just plop on a page.

Jack Doyle: And it's really just for development. You take it out when you publish your site, or you do your animation in the wild. Although, it's fine. If you want to have a scrubber, you can use GS dev tools as much as you want.

Jack Doyle: So, that's the broad idea of GS dev tools.

John Lindquist: Sorry, I didn't pay attention to any of that, because I have the page open. And I'm playing with this loop between 2.52 seconds and 2.63 seconds. I'm having it loop continually and tweaking things.

John Lindquist: I'm so blown away by that.

Jack Doyle: It's fun, huh?

John Lindquist: And you can slow that down. That .1 speed, I can play with between ... Wow, this is ... That's intense.

Jack Doyle: Yeah, it's fun. Once you play around with it, if you've been doing animation for awhile, why didn't I have this sooner?

John Lindquist: Yeah, why didn't you make this sooner?

Jack Doyle: This would have saved me so much time.

John Lindquist: Come on, Jack.

Jack Doyle: My bad, sorry.

John Lindquist: This is incredible.

Jack Doyle: Yeah, and that was the other thing. I don't know if you noticed. There's the other kind of neat feature that is pretty unique is you can name your animations. So, you can have an animation that has 100 different timelines and Tweens that are nested inside of each other like crazy.

Jack Doyle: And you can just slap an ID onto one of those.

John Lindquist: And it's in the dropdown.

Jack Doyle: Or any of them that's in the dropdown. And then, you can just say, "Skip right to that one timeline that I'm finessing right now." And then, it zooms in on that within the amount of times.

John Lindquist: You know, I'm hard to impress, but I am floored right now. This is incredible. Kudos. All the kudos to you. If I find any more kudos, I'll give them to you too.

Jack Doyle: I don't know if you noticed, it's responsive too. So, if you drag your window open small, then it kind of automatically gets rid of some of the live stuff.

John Lindquist: So, if I want to tweak it on my phone sort of thing?

Jack Doyle: Yeah.

John Lindquist: Wow. I think, the rest of the podcast will just be five minutes of me saying, "Wow." That's alright.

Jack Doyle: Listen to your listeners going, "Wow."

John Lindquist: Well, sweet. I think that's a great spot to end, because I am completely blown away by this. Is there anything else you want to say?

Jack Doyle: No, I think that's ... I really appreciate you having me on. And yeah, it's an honor.

John Lindquist: Thank you so much, Jack. You've been a wonderful guest. Have a good one.

Jack Doyle: Thank you.