illustration for Data Viz using D3 with Ben Clinkinbeard

episode 8

Data Viz using D3 with Ben Clinkinbeard

John Lindquist interviews Ben Clinkinbeard, a veteran developer and egghead instructor. He currently works as a consultant, focusing on data visualization. Ben discusses his career path, the benefits of having a mentor, and the importance of Data Driven Documents.

Ben talks about how he worked on a multi-year project for the Colorado Department of Education where he was visualizing aggregate standardized testing data. He discusses his experience there and how it left a long lasting enjoyment of the craft. He also talks about why he chose D3 for his data visualization work, and how he feels that it's the best option in the JS space.

A lot of companies have D3 as a "nice to have" but not many devs have that skill. There is a lot of demand but not enough supply. Seeing this, Ben created a screencast for egghead as our very first instructor! His interest in info-products sparked and he talks about his experience and the challenges he faced building his email course and then a full-fledged D3 and SVG book.


Resources

Ben Clinkinbeard

John Lindquist:

Transcript

John Lindquist: All right, Ben, why don't you go ahead and introduce yourself?

Ben Clinkinbeard: Sure. My name is Ben Clinkinbeard, and I've been working as a developer for about 15 years now. I do a lot of consulting and some teaching and some training. And my focus for the last six or seven years has been largely around data visualization.

John Lindquist: What sort of data-vis stuff have you done? Anything public that people could check out?

Ben Clinkinbeard: You could, but you probably haven't. The thing that really sort of got me into it was a multi-year project back when I was still doing Adobe flex development. I did a major project for the Colorado Department of Education, which was then sort of adopted by other state departments of education. I think it ended up in five or six states. And we were essentially visualizing aggregate standardized test data for students in the various states, and so we were working with statisticians and policy people to sort of help them comb through their data and say, "Are girls doing as well as boys in this district over here and are certain grades in certain districts doing better than others?" Sort of trying to enable smart decisions by nontechnical people and I was in that for a few years and it's just sort of stuck and evolved into other data visualated stuff. So, I've always enjoyed it.

John Lindquist: Cool. So with the data-vis stuff you've done, is there a super huge data set you've ever had to tackle that you thought was just super fun to deal with or have you found the data to always have been messed up and unorganized?

Ben Clinkinbeard: The data is usually pretty decent by the time it gets to the application or at least to the front end of the application, which is where I've spent most of my time. Data cleaning and prep and formatting and things like that has definitely been a major task that's sort of behind the scenes and you don't always think about, but that's definitely a major major source of the time that gets put into projects like that. It's just making sure that the data is right and usable and suits your needs.

John Lindquist: That's the kind of stuff I've had to deal with so my mind always goes there when thinking about data is cleaning it up. Clean it up, clean it up.

Ben Clinkinbeard: Somebodies gotta do it, I'm just glad it's not usually me. So.

John Lindquist: Right on. So let's talk about what you're working on now. You wanna kinda introduce it a bit, the D3 and 5 days and all the related bits?

Ben Clinkinbeard: Sure. So about three years ago, I went out on my own to be an independent consultant and part of that has been in effort to create my own info products and things like that. The bulk of my work is direct consulting with clients, but I've started to build up sort of some content and not surprisingly, I've chosen to focus on the data visualization space and in particular D3.js, which I always refer to it as the defacto standard data-vis library.

John Lindquist: I can't think of any others.

Ben Clinkinbeard: There are plenty of things out there if you want charts out of the box. If you want to be able to say, "Give me a new bar chart," and that be the end of it. There's plenty of options, but if you really want that low level control to build your own visualizations and sort of go beyond the basic chart types, you're right. There's not really another choice that comes to mind besides D3.

John Lindquist: Can you give a bit, if people haven't heard of D3 before, is there a ten second intro to it of what it is?

Ben Clinkinbeard: Sure. So the name D3 comes from data driven documents and it really sort of lives up to that name behind the scenes because the way D3 tends to work is it has you write declarative code sort of about what you want to do to morph your data into a document of markup, which usually takes the form of SVG. And so you essentially tell D3, more or less, "Here's this place on the page that I want to build something, here's the data that I want to build into it, and then here's a set of steps that I want you to take to..." Well, I shouldn't even say that. You don't tell it the steps to take, you just tell it how you want your data to map into those visual properties.

John Lindquist: Well, cool. So the D3 in 5 Days in the info stuff you're working on, what kind of gave you that idea? What sparked the interest in actually going out and doing that? Cause I think a lot of people have that similar desire of "I know this thing, I should share this thing, I should capitalize on this thing."

Ben Clinkinbeard: It was really Egghead that sort of, I feel like, gave me a taste of info products and sources of revenue that aren't, "I spent and hour today, so you're gonna pay me x dollars for those sixty minutes I spent." So actually, I was thinking about this before we started talking. I think, I'm not positive, but I think I was the first Egghead instructor that wasn't you or Joel.

John Lindquist: I believe so. I think if you go to Egghead.io/instructors and put in either /0 or /1, I think it's you.

Ben Clinkinbeard: Okay, that was at least four years ago now, maybe a little bit more than four years ago. And I think either you or Joel had specifically asked me to do a D3 video just because I guess I had somewhat of a reputation then as having known it and D3 is sort of interesting in that it seems to pop up all the time on lists of like, when you're looking at a job posting it's like, "It would be nice if you had this." It's in the sort-of-the-nice-to-haves. But not a lot of people seem to know it because it sort of has a reputation for being hard to learn, which it can be. Anyway, that was sort of how I got into the idea of creating content, was I created a short, probably terrible if I went back and looked at it now, set of screen casts about D3 and they were pretty well received and I think I eventually expanded that into a course that I wasn't totally embarrassed by and then I did other topics. But I always sort of came back to it as again, this skill that seems to be pretty popular in terms of being sought out in the market, but not a ton of people have it. The way that I've tackled that over the last seven to eight months is I started out by creating a free five day email course called D3andfiveDays.com where you just go there, you sign up, and then I'll send you one lesson a day for five days and my intent is to take a different approach to teaching the topic than people have traditionally taken and struggled with. And so I try and really break it down by concept. Cause there's two or three main concepts in D3 that once you understand those and get your head around those, it makes everything else a whole lot easier. But those few concepts are unique enough in the front end space that if you haven't seen them before, they can be sort of hard to grasp.

John Lindquist: Right, right. So after you had the idea, what sort of research or what do you think you found that has worked the best? Did you take some sort of boot-strap class? Is there something that's helped you along the way?

Ben Clinkinbeard: Yeah. So when I got that taste from my early Egghead stuff and was like, "Man, you know, I wanna do this on my own," I started reading everything I could in that boot-strapping space. There's Amy Hoy and Brennan Dunn, Nick Disabato, and Jonathan Stark, and all these people that sort of operate in that space and share their knowledge about how to build those things and I read everything I could get my hands on and spent a lot of time thinking and planning and thinking and planning and reading. Then I looked up and it had been like three years and I basically hadn't accomplished anything, but I read a lot of stuff. I knew how I was gonna scale my traffic and my marketing once I had all these customers, but the thing that was missing was actually content.

John Lindquist: Content and an audience. Those two things are not easy.

Ben Clinkinbeard: Those things are surprisingly important pieces of supporting yourself with content.

John Lindquist: Why don't random people show up and give me money? I don't understand.

Ben Clinkinbeard: It's a mystery. It's a mystery. And so about halfway through 2017, somewhere around June, I was basically like, "You know what? It's been long enough. If I don't do something now or in the next six months or so, I need to just shelf it." Because basically, I'm just wasting my time and brain cycles thinking about all this stuff. And so I hired a private mentoring coach from that group of experts that I was talking about.

John Lindquist: Oh yeah, that's right. I remember that.

Ben Clinkinbeard: Yeah, I hired Jonathan Stark and did his private mentoring program and the last six to seven months have been the most productive in years for me, obviously. And that's sort of why I'm here now. I had gotten to the point where the problem for me was no longer a lack of information or knowing what the options were, or how you could do these things, it was picking one. I was just totally paralyzed with do I create a book, or an email course, or a video course, or a cheat sheet, or a this? You go through all these options and then it's like "Whoa." You just gotta pick one and do it. And so basically the first thing, once Jonathan sort of helped me choose D3 as "Yes, I definitely want to go that way," he helped me inaudible 00:10:26 that space and make sure that would make a good niche to focus on. Then he was basically like, "Okay, step one is do an email course." I paid a lot of money for him to just tell me to do the email course, but just having someone there to say, "Do this, and after that we're gonna do this. And then you'll do this, this, and this. And hopefully that'll lead to this." Just having that there was super.

John Lindquist: That's so amazing that mentor, someone, just make these decisions for me. I'll do it. Just stuff for me to do.

Ben Clinkinbeard: Yeah.

John Lindquist: Do you recommend that?

Ben Clinkinbeard: Yeah, I mean it you can afford it and you can put the time into it. I was sort of lucky that I had a nice alignment of I had enough funds to afford it and I had a work schedule coming up that was going to allow me to devote some time to my own stuff. That's, of course, always an option for everybody. When do you find the time? But I had been lucky enough to have at least a few months lined up where I knew I wasn't going to be working five days a week for clients. I think some weeks were like three days and some were four. So I was like, "Alright, I have the time to do it, I have the money, let's just take this last stab and if it doesn't work out, then I'll give up on the whole info product idea." So I did what I was told and created a five day email course. Then once people complete that initial course, they move on to my regular email list and I send out a weekly tip once a week. It's usually five hundred to a thousand words, so it's not long, but it's a little tip that just basically tries to answer a question of "How do I do x in ten minutes?" or whatever. So I send out those weekly tips and then sort of through some research and talking to my coach a little more and trying to observe some of the questions and things that you see in the wider learning community around D3, we sort of identified SVG knowledge as one of the pieces that was lacking as well. Because a lot of front end developers, I think, don't really come across SVG a whole lot outside of you might have used an SVG icon system or SVG fonts.

John Lindquist: Copy and paste crosstalk 00:12:47

Ben Clinkinbeard: Yeah, exactly. There's a lot of copy and pasting goes on in the SVG space. And so we identified that as sort of skill that is key to being productive with D3, but that a lot of people might not necessarily have. So the next identified product to create was a book that covered D3 as well as an introduction to SVG. What I ended up with was a book that I basically just referred to as "D3 with SVG" and it's starts out the first, I think, four chapters are just an introduction to SVG and how it works, how it's different than regular markup and all those things. And then after that first half of the book is over, then we move into actually using D3 to create SVG programmatically rather than having to do it all by hand and then how you use those APIs to create common charts, like column charts, and line charts, and area charts, and scatter plots.

John Lindquist: Nothing like a scatter plot. That's a great word. Scatter plot.

Ben Clinkinbeard: Bubble chart, if you're not into the technical term.

John Lindquist: So just to confirm, you still own a hundred percent of what you produce, right? As a hiring a mentor or a coach, you're just kind of paying them a monthly fee to help push you along so it's not like you took on a business partner or anything.

Ben Clinkinbeard: Yeah. No, exactly. It's just, I think he works exclusively on like six month chunks. So I did a six month mentoring program and during that time we met every two weeks and then, you know, we would trade emails and Slack messages and everything whenever. And then the biweekly call, but I definitely own everything I create. He's just sort of there to provide advice and direction.

John Lindquist: No, that's awesome. It blows my mind that I think so many people share that same story of "I've been sitting on this idea for years and years and I know I can do it because I am an expert. But I can't make those decisions." And it just seems like you did just the perfect thing to get past that point.

Ben Clinkinbeard: Yeah. I mean, everybody's different. I think I often felt like, "What sort of personal deficiency do I have that I know all this information, but I can't put any of it into action?" Whatever it takes, man. If you really wanted to try something or get it out there, find whatever sort of cheat you have to to get it done.

John Lindquist: Right. For sure. So how did, in that same vein, how in the world did you actually finish a book? Because I know I've tried starting books before, I know lots of people who've taken advances on books and they had to give advances back because they could never get it finished or they had to hand it off to someone else. How did you write a book, Ben? What's the secret?

Ben Clinkinbeard: That's a nightmare scenario. I've heard enough horror stories from traditionally published books that that's not surprising to me, but I cringe every time. So, I have also almost written a book before. Probably a year and a half or so before I did this one. I wrote, I don't know, eighty percent of a book or I thought it was eighty percent of a book, but then when I sort of stepped back and looked at it, I was like, "Nobodies gonna read that. Nobody cares." I may not have been right about that. Maybe I should have just stuck the rest of it in there and hit publish and seen what happened, but I didn't. So this time, obviously having a coach there to say, "Now it's time to write a book," help me decide what topic to do it on, that kind of thing, and I think I sort of wavered for a little while. Or not wavered, but I was making progress very slowly. And I think we got to a certain point and he basically said, "When are you gonna launch your book?" Whatever my answer was, he was like, "No, like what day? Because we need to pick a day and say that that's launch day and that's what we're targeting." So we did that. I think I ended up writing the last half of the book or the last sixty percent of the book probably in the final three weeks. And it was just another one of those things where I sort of had a good opportunity for it, because I think my client work had even gone down to two days a week at that point. So I had a lot of time available and I basically just shut out the world during the day and said, "I'm gonna crank on this book." Actually, I did a lot of the writing at night, sort of after everybody else goes to bed I'm usually the last one up. And so I did a lot of writing at night and then I would do things like editing and all the sort of support tasks around a book during the day. That was one of the things that sort of blew my mind was leading up to the launch and when I launched the book, that's the first time I've actually ever sold a product on my own.

John Lindquist: How did that first sale feel?

Ben Clinkinbeard: It was amazing. It was like ten minutes after I opened it. I had sort of recruited a small list of people who wanted early access or were interested in the book from my existing list. And I launched to them, I think two weeks before the general public launch. But, ten minutes after I sent out an email to, I don't know whatever it was, twenty three people or forty two people that have expressed interest. Ten minutes later I had a sale. And I'm like, "Whoa, what is going on?" Now, the public launch was not quite as exciting. I launched it and there was basically crickets until sort of some marketing activities caught up and things like that.

John Lindquist: Still, the simple act of making something and then having someone else buy that thing you made. We don't really experience that much in the development world where you're on a contract, or consulting, or whatever you go in and you go help build something with large teams and all that sort of stuff. And you're being told what to do versus the "Ben went out there, Ben decided to write a book on D3, Ben wrote a book on D3, he put it out there and someone bought it." From idea to execution, that was all you and someone decided that was value.

Ben Clinkinbeard: Yeah, I mean, it's a pretty cool feeling. That's a cool feeling, that's also an even better feeling when you get somebody that did that, you know, they sort of put the trust in you and were like, "Alright, I'm gonna give you my money for something." And then they actually send you an email later and like, "Hey, this thing's great," or "I love it," or "this really helps," or, you know, whatever. It's like, that's a cool feeling. And it's also a cool feeling to wake up and see an email that says, "Hey, you just made a little bit of money." It's like, but I was just sleeping. I made money? I was asleep. That's great. So yeah, it's a lot of fun and there's a lot of thrills to it. There's also a ton of prep and support work that I didn't, I shouldn't say support, supporting work that goes in around it. I was just sort of amazed when I launched it, like how many little tasks there were to do, right? You gotta pick what site are you gonna sell it through, and what site are you gonna use for your email list, and how are you gonna follow up with buyers, and how are you gonna deliver the files, and how are you gonna send updates? There's just like a hundred and fifty tiny decisions to make and none of them are hard, but it's a totally different kind of work flow and work day crosstalk 00:20:57 couple of weeks.

John Lindquist: Did you still have your mentor at that time to help make those choices?

Ben Clinkinbeard: I did, yeah. Most of them were sort of, you know, I shouldn't even call them choices. They were just tasks. There was a couple of those choices like what are you gonna use to sell it? He recommended SendOwl, cause that's what he used. That's what I picked and it's been good, but then a lot of it's just like, "Oh yeah, I need that too, and I need that, and I gotta set that up, and connect these things to these." And so it's just a really different work flow when I was in that two or so week period where it was really all book stuff, all day. It just, it felt like a totally different experience than spending the day writing code. Because instead of one or two sort of really deep tasks in a day, which was sort of always my best. You know, if I got two really big things solved in a day of programming, that's a pretty good day. Whereas this was "I didn't get any big things done, but I literally got thirty five small things done." I sort of ended up connecting it to, part of the appeal for a lot of people in programming is all those little small winds, that they add up throughout the day. You're like, "Oh, I got that to work, I got that to work." And this is sort of the same thing. It's like, "I've got that piece working and now I've got that in place. And now I can do this with that." There's a lot more to it than I sort of realized in the beginning.

John Lindquist: Right. And I'm sure, we were joking about automation before we started the podcast, but you were able to take some of your programing skills, and at least the way you think about things, to automate some of those things?

Ben Clinkinbeard: Yeah, that's been a good way to sort of scratch the programming itch while doing this more content focused stuff, is like building little things for myself. Which I've heard a lot of other people that started doing this kind of work say the same thing. But yeah, so I've sort of spent a little bit of time getting my content production process in place because I felt like a lot of times when I set out to do things before, I would be sort of nervous that I was gonna - when you're writing content as opposed to developing code. For some reason I just feel less secure and like, what's being produced. Especially if you end up sending it somewhere. Say you write an email to a subset of your list and then you want to use that content somewhere else. It's like, where does the single source of truth end up being? So I just had sort of a lot stress about how was I gonna set up this work flow so that it felt as solid to me as working on code does? So I basically just used a couple of off the shelf things and a little bit of home grown stuff to whip up something where, essentially everything I do is all markdown source files and then I've got this hodgepodge build process that essentially can spit a single markdown file out into one html document that will get sent through my email marketing software and sent to the list, and then it'll get turned into another page on my website that's got some different formatting and different layout and things like that. And so, being able to scratch those kinds of itches has been a good way to not get totally rusty on the code while I'm neck deep in content stuff.

John Lindquist: Yeah, for sure. So, let's go ahead and wrap up here. Would you like to pitch anything? Any links you wanna shout out?

Ben Clinkinbeard: Yeah, so if you have wanted to add data visualization in general or D3 specifically to your skillset, D3and5Days.com is a great place to start, in my totally unbiased opinion. Both of the numbers there are actual numbers, so it's D3 and 5 Days, and yeah, you'll get one free email a day for five days, and then after that you'll get a weekly tip for free. And I will only, very occasionally, bother you about things that you can actually buy from me.

John Lindquist: Go buy Ben's stuff, it's awesome.

Ben Clinkinbeard: Thanks, John. It was fun.

More Podcasts