David Bock - Cognicast Episode 105

AUDIO

In this episode, we talk to David Bock about LoudounCodes and volunteerism.

Our Guest, David Bock

Topics

Tate Modern - London
LoudounCodes.org
Watchdog Dads
Hour of Code
Karel the Robot
TEALS
Loudoun Valley High School Stem Club
Build your own Z80 Computer
CodeVA

SUBSCRIBING TO THE COGNICAST

The show is available on iTunes! You can also subscribe to the podcast using our podcast feed.

You can send feedback about the show to podcast@cognitect.com, or leave a comment here on the blog. Thanks for listening!

CREDITS

EPISODE COVER ART

AUDIO PRODUCTION

PRODUCER

Our theme music for this episode is Thumbs Up (for Rock N' Roll) by killthenoise with Feed Me which was used under a Creative Commons License.

In this episode, we talk to David Bock about LoudounCodes and volunteerism.

TRANSCRIPT

CRAIG: Hello, and welcome to Episode 105 of The Cognicast, a podcast by Cognitect, Inc. about software and the people who create it. I'm your host, Craig Andera.

Well, announcements, as always: The first thing I want to mention is the Austin Clojure Meetup. This will be held Monday, July 11, 2016, at 7:00 p.m. at the Capital Factory. This, of course, is in Austin, Texas, and you can search for Austin Clojure Meetup to get more information about that event.

The next thing I want to mention is something that, to be honest with you, I kind of didn't think I was going to. I had somebody, David Whittington, email me and say, "Hey, I'm running a game in ClojureScript, and I've got a Kickstarter. Would you mind mentioning it?"

And my initial reaction was, "That's awesome, but I don't know. I mean lots of people have kickstarters. Why would we mention it?" Then I went and looked at his website and the kickstarter. You can find the website at Zetawar.com.

It turned out to be considerably more altruistic than I thought, meaning he's doing this thing. Clearly, he loves ClojureScript. He's going to be using it as a platform to promote ClojureScript. He's open sourcing everything so that people will be able to play this game he's creating. It's one of those old style, turn based games that I think are pretty cool.

Anyway, all around it looks like a really cool project. And so when I looked at it, I was like, "Oh, yeah, this totally looks like something we should mention and make people aware of." Again, you can find more information at Zetawar.com. I definitely encourage you to go check it out. And if you think it looks interesting, maybe stop by the kickstarter and drop him a few bucks. I'm sure he'd appreciate it.

You should do that soon. I don't have the exact date of the Kickstarter closing, so don't delay. I know it's some time within just a small number of weeks of me recording this, so check it out, Zetawar.com.

I also want to mention ClojureBridge, New York City, New York, happening July 22nd and 23rd, being hosted by our very own Stuart Sierra. ClojureBridge, as you probably know by now because we've mentioned it many times, but it bears repeating, is an organization dedicated to helping people learn to code, and specifically women learning to code. You should go to ClojureBridge.org to find out more about the New York City event happening, again July 22nd and 23rd.

I'll mention again too that you can donate at the website, ClojureBridge.org or otherwise get in contact with people if you'd like to help out. I know they're always looking for help, and so you should do that.

I also want to mention XT16. This is a conference put on by our friends at JUXT. This is going to be happening in the United Kingdom. Tickets are on sale now. They're limited. I say "our friends at JUXT" and I mean it. We've had Malcolm Sparks on the show, and they're just great people over there. Knowing them, I fully expect that it'd be great. You should check that out too. That's XT16, so go and search for that.

Speaking of conferences, I'll also mention our conference in Europe. That's EuroClojure, of course. Registration is now open. You should go and get your tickets. It's going to be in Bratislava, Slovakia this year, and it's being held October 25th and 26th. Again, this is 2016 we're talking about, in case you're listening to this far, far in the future from me recording this. EuroClojure, you know, I think we've had it enough times now where people know what to expect; a good conference; always picks an interesting location.

Really, I don't know that I'm going to be able to go, but man I'd really love to. If you're able to go, you should, and have a beer or whatever your drink of choice is for me, assuming I'm not there. If I am there, have a beer or a drink of your choice with me. In any event, you should go and go check out the EuroClojure website. That's at EuroClojure.org.

I think that's about all I have to pour into your ears today, so we will go ahead and go on to Episode 105 of The Cognicast.

[Music: "Thumbs Up (for Rock N' Roll)" by Kill the Noise and Feed Me]

CRAIG: Cool. I think that's everything on my list. Are you all square?

DAVID: I'm ready to go.

CRAIG: Awesome. All right. Well, welcome, everybody. Today is Friday, June 17, 2016, and this is The Cognicast. Today we are very happy to have with us a friend of mine, a person I've known for quite a while and a semi neighbor. We'll get into that a little bit.

He's an engineering director at LivingSocial, and the executive director of LoudounCodes, which is actually one of the things that we want to talk to him about today and may be the main thing. I'm referring, of course, to David Bock. Welcome to the show, David.

DAVID: Hi. Glad to be here.

CRAIG: Yeah. We're thrilled to have you. We've run into each other a bunch sort of socially. We're both friends of Stu Halloway. We run into each other at his place about once a year. It's too bad it's not more often, although we've seen each other at meet-ups and stuff.

DAVID: Yeah. We're both in northern Virginia. An occasional meet-up, things like that.

CRAIG: Exactly, and so you're a super interesting guy, and if anybody had said, "Should we have David on the show?" I'd be like, "Yeah, we should have him on some time."

But you've done something recently that we briefly eluded to, LoudounCodes, that we're going to get to in a minute. But before we do that, we start this show off, as we always do, with a question for you about art. A very broad question for you to interpret however you like, but we ask our guests to share some kind of artistic experience, whatever that means to them, just to talk to us about something in that space. What would you like to share?

DAVID: Yeah. This was hard for me to narrow it down. I like to decorate wedding cakes. I actually made my own wedding cake. I'm a musician, a software engineer, all kinds of just art permeates my existence, but there are two stories I want to share.

The first is about an experience at the Tate Modern Art Museum in London. I was there, I guess this was, late '90s, maybe even early 2000s. I was there on a business trip and there with my colleagues and a few friends. I'm not so much into modern art, but I love modern art that doesn't take itself too seriously. I think that it's something to poke fun at establishment, to test boundaries of what art means, and I also love to people watch. I am content just sitting at a park watching some mom come by with her kid that she's angry at because he wanted popcorn or something and just watch the mom lose it. I love to just people watch.

Well, at the Tate Modern Museum in London, when I was there they had this piece of art that was just a red dot on a floor. It was signed, and it had this little plaque beside it that said, "Red Dot on Floor." And it was positioned so people would step on it as they would come around this corner into this room.

I stood there, it must have been for ten minutes, and just watched people turn the corner into this room, look around to see what was on exhibit in the room and then realize they were standing on it and then just react to that experience like, "Oh, no. I'm standing on this thing," like they had made some mistake, and that was just so much fun to watch, time after time, as people would come around the corner and just be startled that they were standing on the piece of art for the room.

Out of all the other stories I wanted to share, I kind of wanted to share a negative space experience of art in that I was a music major in college for many years, and I ended up switching to computer science. That's another story all together, but towards the end of my music major phase when I was just burnt out on the practice room time, the politics of the music school, and everything else that would go on, I was up on the college soccer fields just laying down, looking up at sky with a girlfriend of mine, and she's pointing out shapes in the clouds.

I just all of a sudden lost it. I was like, "How stupid is it that people find shapes in clouds? That's just a cloud. It doesn't look like a dog. It's just a cloud." The art, the appreciative art had been sucked out of my soul so badly out of just all the burnout that I was no longer able to see shapes in clouds.

I spent some time like that before I was finally able to recover. It was a kind of weird experience having such a bleak existence without art in my life like that.

CRAIG: Yeah, it's funny. That's a great pair of stories and it brings something to mind. I do woodworking as a hobby, and one of the common things that you read among people that talk about their woodworking hobby is, "Oh, I wish I could do this full time." One of the responses that you see from people who have made that transition or who are in woodworking full time is, "It's not the same when it's a job."

I think there are people that do it, that make the transition, and they love it, but there are other people who are thinking of this sort of ideal version of their hobby that doesn't include things like having to write checks and whatnot. Your story reminds me of that in the sense that there's a part of programming that's the love of programming, the creative part, right? Then there's the building a software product for other people part that involves certain things like fixing bugs or writing documentation. That's a classic one that most people don't get off on.

DAVID: Mm-hmm.

CRAIG: I think there's sort of the same element and danger of burnout, right? I'm not saying it's exactly analogous to the story you shared, but I think there's that same element. You've got to take the good with the bad. Sometimes it's going to be too much bad, like in your case it was, "You know what? This is just not scratching the itch that I had."

DAVID: Right.

CRAIG: "And I had to find something else that I could do on a long-term basis."

DAVID: Yeah. I think there's also an aspect of internal versus external motivation

They always offer, "Oh, I'll pay you for that." You know if I actually converted how much time and energy I took to make a wedding cake into my hourly rate that I normally get when I work, a wedding cake would not be affordable. I never want to attach a dollar amount to something like that that I do because then I see it as a lost opportunity cost because of not making money for what I'm doing. I've purposefully gone out of the way to not attach a dollar amount to that kind of work because that would change it from an internal to an external motivation and I feel I'd lose something for that.

CRAIG: Yeah, I totally agree. I've had the same experience with software. Once in a while I'll have an idea and someone will say, "Oh, you could sell that." And I'd say, "That's the last thing I want to do. Then it won't be fun any more." Not that I don't enjoy participating in the act of creating software for money, but I don't necessarily also want to do it as a second job.

DAVID: Right. Yeah, I'm a capitalist through and through, but that doesn't mean I want to work two jobs.

CRAIG: Right, right. We were talking about code, and I think that leads us nicely into the sort of proximal cause of us having you on the show, which is that you recently launched this effort called LoudounCodes, and I'll let you explain what that is in a minutes. We said, "Oh, well, that's the sort of thing that we love to talk about and a very worthy effort," and in my neighborhood, generally. I don't live in Loudoun County where your effort is based, but I live very nearby in Fairfax County, Virginia.

And so we thought we'd give you a chance to come on and talk about what LoudounCodes is. I think it's a topic that our listeners will be very interested in. Why don't you start by just letting us know what this effort is?

DAVID: Okay. Let me start with the journey that led me to it before I talk about the actual thing itself.

CRAIG: Yeah.

DAVID: They just turned nine a couple of days ago. I have triplet boys that just turned nine. When they started kindergarten, I started volunteering at their elementary school for a program called Watch D.O.G. Dads, which is a national program to get dads volunteering in elementary schools.

I was really excited to see that my sons' elementary school had a computer lab. In fact, they have two. After spending a little bit of time there, it was kind of disappointing to see that the major activity that took place in the labs was basically learning 20th Century office worker skills, occasionally taking tests, doing some computer aided testing in education. Good stuff for the lab, but for my heart I would have loved to see my students, my kids having a chance to learn some coding.

I talked to the technology resource teacher there, and initially it was like, "No, we can't really install new software. We don't really have any curriculum," and a little bit of the resistance just because I was new and didn't really know anybody, didn't know the process or anything.

Well, the next year there was the Computer Science Education Week and the initiative from Code.org for the Hour of Code to introduce an hour of code to every elementary school student in the U.S. I told the technology resource teacher about that. She was very excited about it. I was planning to take a few days off of work to run all the fifth graders through the hour of code for Computer Science Education Week.

After we started, we changed gear halfway through and decided to run all the third, fourth, and fifth graders at my kids' school through the hour of code and it was such a tremendous experience taking the week off of work, showing all these kids what it's like to write computer software. They basically do the Karel the Robot curriculum in an hour based on characters with Angry Birds and Plants vs. Zombies and now it's Star Wars characters. Over the years they've added more stuff like Frozen characters.

The first year, it was just the Angry Birds and the Plants vs. Zombies. The kids loved it. We took a little bit more time than an hour. They took an hour to run through the curriculum, but then I also showed them some other stuff. I showed them what it's like to really program. I showed them a little Ruby program I wrote that played Connect Four and showed them how the code, while there was a lot more of it, it looked exactly like the code that they were just writing in the Hour of Code curriculum.

I explained that we're playing what feels like another person there, but there's nothing there. There's just code. This little girl, a fifth grader says, "Oh, so computers aren't smart. They're just dumb - really, really fast." That's a quote I've used time and time again. I thought it was fantastic.

After that first week of the Computer Science Education Week at the elementary school, the principal told me about this program in Loudoun at the high school level called TEALS (Technology Education and Literacy in Schools). It's a program from Microsoft that aims to pair technology professionals with math teachers to teach computer science in classrooms. I suggest that anybody out there listening, check the TEALS.org website, tealsk12.org and see if it's available in your area. If it's not, see if you have the inclination to try to start it in your area. It's a program sponsored by Microsoft with the intent of pairing professionals with math teachers several hours in the classroom every week, so there's a little bit of a commitment there.

I originally got involved because I was a little selfish, really. I wanted to just see what the school was like for where my kids were eventually going to go. I had no intention of really what kind of connection and bond I'd end up with the school.

This is my second year volunteering through them, just wrapped up working with a couple of math teachers there. Last year I was working with Mr. Rodney Snyder who was a fantastic teacher. Welcomed me into his classroom. He'd let me connect to the projector and share stories about what I was doing, relevant stuff to what the students were learning in class. I would occasionally show them some Ruby code when they were learning Java or HTML and CSS, just all kinds of different things that were connected to what they were learning.

The curriculum in school is Java because they're geared towards moving towards the AP exam, which is currently all in Java. But I've been able to show them other stuff along the way and make connections and teach relevant concepts beyond just the core curriculum. I've been doing that now for two years.

At the high school level, we started the second year I did the Computer Science Education Week work with Loudoun, we took high school volunteers that were now several months into learning the computer science curriculum and had them go back and volunteer at their elementary schools to help teach the Hour of Code. The second year that Loudoun did the Hour of Code we had it in four elementary schools.

Then this last year it expanded a little bit further. It's now in six. I was working with another teacher. I now work with two teachers at Loudoun Valley High School, Mr. Rodriguez. I'll shout out to him. He just recently won a national STEM competition with his STEM club that Samsung sponsored. He's getting a new lab for the school - some great stuff going on there as well.

Just pairing with the students has been such a wonderful opportunity with me. You learn by teaching, and it's really enriched me. I have a connection to the students where last summer, even though school wasn't in session and even though this wasn't officially through TEALS, we met once a week at the public library in Purcellville and took a Coursera course together. That helped the students prepare for some of the high school programming challenge competitions that we do at several colleges through the ACM.

One of my students said he wanted to build a computer, and I thought he meant like order parts off Newegg. He was like, "No, I actually want to design something from the chips up." I explained that I don't think you can really do that with modern hardware because of the timing intolerances. It's not an easy thing to learn, but I had done something similar in the 1980s with a book from a guy named Steve Ciarcia who wrote a book called Build Your Own Z80 Computer.

Well, I found a kit online from a guy in Maryland that makes a modern version of that kit based around Z80 and ancient 74LS chips and everything, and we built two of these computers. One of my students actually has it up and running CPM now. Just a phenomenal experience building a computer like that from chips, being able show them a prototype on a breadboard how a memory chip works and display. Program it with switches absent the processor.

To build a 2 hertz cycle clock for a Z80 computer and slow it down to be able to see the data and address bus with lights flowing, it's amazing to be able to have that kind of introspection on this little computer. This summer, we're going to program it to do the Game of Life, and I'm working with another student to actually build a 64x64 LED display for it that we can then code up with the Game of Life. And so this has been a really enriching experience doing this.

Now, the work I'm doing right now is a little above and beyond what TEALS offers in the classroom. Like I said, the main mission of TEALS is in the high school to pair math teachers to help teach the math teachers how to teach computer science.

Loudoun is in this strange space where 75% of schools have nothing in public education as far as technology. Some schools, especially like where you are in Fairfax County–that's where I went to high school–has an amazing curriculum, an amazing magnet school that has trickled down curriculum to every school in the county. Loudoun is doing really well all by itself, but companies don't come in. When they want to donate money, they want to bet on a winner, so they're over in Fairfax.

When a nonprofit comes in and wants to bootstrap a school, for instance that's a nonprofit called Code Virginia that I'm also teaming with a little bit. We've had some emails back and forth about how we can collaborate. They're concerned about bootstrapping schools that have nothing right now.

I was talking with one of my teachers, and they're like, "Well, Loudoun is right here and who is helping us? We're doing okay all on our own." That's when I was like, "You know I have several volunteers who are going above and beyond. There is an untapped market here that, because the relationship with Microsoft TEALS can't touch and that's the fact that Loudoun County is such a hub of technology." This is where Amazon U.S. East is. This is where AOL was. There's just a huge amount of technical infrastructure here, all the government contractors, private industry, and startups even.

I wanted to be able to rally that around not just high school education, but intermediate school education and elementary school education. We have 45 elementary schools in Loudoun County and a handful of them are doing the Hour of Code stuff. There's no reason why that effort of having high school students go back to elementary schools couldn't amplify across all of them. It's just a matter of having something in place.

I was talking with this teacher, and he's like, "Yeah. Loudoun needs something for that." I and several parents, my two teachers, and everything, we rallied around that and came up with this idea of the Loudoun Computer Science Initiative, which is LoudounCodes.

It's funny. I have people talk to me and they're like, "Why are you limiting it just to Loudon? Why don't you try to do that across all of Virginia?" First of all, I know I tend to bite off more than I can chew, so I'm trying not to do that this time. Second of all, there are organizations like Code Virginia that are there to do that at that space. I want to rally in Virginia and use what we do here and rally that in Loudoun and use what we do in Loudoun as a model to give back.

For instance, a few weeks ago we just concluded. The school year just ended. But after the students took the AP exam, there was not much curriculum left to do in the AP class, so I worked with Mr. Snyder and we came up with a sixth lesson, which took a little more than two weeks to do because they meet every other day in the county for that class.

For the two AP courses we did two days of parsing CSV files where they learned how to parse CSV. I showed them data.gov and some other data sources. Had them have to query across several CSV files to answer some questions. Then we showed them JSON and Web services where they had to talk to a Web service to get current weather information, then browse through a bunch of Web services and do something with the data that "just shows us something." They're on their own to just do whatever they want parsing JSON.

Then we did two days of SQL where they don't learn SQL as part of the AP exam. But now, after dealing with CSV and JSON, they're loading data into SQL, and I show them how a well-written SQL query in one line can do what a page of Java did when they had to do it by parsing CSV files. Then I showed them some other stuff, like I showed them sending an SMS message through Twilio. It was so eye opening as they see, you know, they've been coding now for two years, but it's been classroom examples. Now here they are seeing real world data that they're parsing, learning, synthesizing new facts out of available data, getting real time data from a Web service and then reaching out and touching the world with an SMS message.

It was just really enriching to see how they were touched by that and how I'm giving them tools to do impressive things. For instance, most of the students in that class were juniors. Next year at Loudoun Valley High School they have the option of, in their last month of school, doing a public service project or a career education project where they basically take a month out of the classroom, have to spend so many hours doing a public curriculum, you know, a public thing, and then doing some kind of report almost like a science fair presentation on it. They call it their Capstone Project.

I was showing the students this data and saying, "You now have the tools to be able to look at jurisdictions that issue parking tickets versus income levels and see what we can learn from that, or look at all this different data out there, whether snow removal records versus budgets for snow removal in counties." It was all this kind of stuff. There are Capstone projects in that data waiting to happen. I could just see everybody's eyes light up in terms of things they could do with that.

LoudounCodes is about trying to rally around these things that we've been doing little bits of and create an enhanced curriculum for Loudoun. What I've been saying is it's an extracurricular and an enhanced curriculum for computer science education in Loudoun County.

CRAIG: Wow! I mean that's very cool. I love the story about showing these high school students how to synthesize and extract data because I think there's a sense in which that really is the computer literacy issue of our age, right?

DAVID: Right.

CRAIG: It's being able to access information to be able to make better decisions or empower people to do things they couldn't do before. I think there are many different aspects of programming that are useful to people, but that's certainly one of them. You have this organization that's aimed at bringing the same type of experience to the rest of the K-12 curriculum throughout Loudoun. By the way, let's spell Loudoun briefly for people.

DAVID: Oh, sure.

CRAIG: It's L-o-u-d-o-u-n, which always catches me up, but anyway if people are kind of sitting there going, "Oh, I should check this out."

DAVID: LoudounCodes.org.

CRAIG: Right. LoudounCodes.org. It's a nice website, by the way. It's very well presented. I was flipping through it.

DAVID: Thanks.

CRAIG: Obviously you have done an excellent job of explaining this so far. We'll drill down some more. I'm wondering if you could talk a little bit more about how you plan to scale this thing across. I think it makes a ton of sense to teach kids to program, and it makes sense to me that you would start early, like kindergarten. But I doubt that you're going to teach kindergarteners SQL.

DAVID: This is true.

CRAIG: Probably not the approach you've chosen. I think it's a fascinating and wise choice to include SQL at some point in the curriculum, but I'm just wondering if you could talk a little bit about where you are because this organization has just been formed, right?

DAVID: Right. We're about two months old. Really what was finally the thing that made me finally get up the nerve to do it was there's something I've had to learn several times in my career, or several times in my life I should say, that there are a lot of people that will say no. But when you really want to do something, there's no one person that can say yes except you.

If I were to just sit here and try to talk to people after people, I hear a lot of, "Oh, you should make that bigger. Oh, you should focus on that. Oh, you don't want to do that. You want to work with this organization," and I talked about it for months.

Then finally what actually was the thing that made it happen was a company that asked to remain anonymous donated 100 laptop computers. Most of them are four- to five-year-old Dells, Latitudes, E5520s. But that was a tremendous opportunity. They're more than capable of running the Hour of Code, of installing Java with a lightweight editor, of doing some Ruby, of doing some Clojure on them, and doing some Python. And, more importantly, I can use them to SSH into a little Raspberry Pi, stuff like that.

All of a sudden, having 100 computers made me think, "Yeah, okay. I'm going to do something," and so there are various things I'm starting to do. First of all, I'm working on putting several different advisory councils together. One is one of parents. I have my teachers that I'm working with now. One is an advisory council of parents. That'll be on the website soon. Then I have an advisory council of my current students, which is a mix of people that are either rising AP, but have been through the computer math or post AP and doing independent study. Then I have a graduate council for 2016, which is three students that graduated from high school this year. What I really want to get back from them as they're in college next year is feedback on: Did they feel they were prepared for this, of the college career; did they not feel prepared; what could they have known? I have all that kind of net to gather information to get some resources and get some other volunteer efforts.

Then of course there's the rally around the website. There are the machines that I have. I also have several of my current high school students wanting to volunteer and do stuff. I have two students who approached me about taking those 100 machines and getting them installed all with a lightweight flavor of Linux, getting the Hour of Code stuff on there, getting Scratch on there, and then using that at the library this summer to teach groups of students.

As soon as I have some other paperwork set up, I'm going to be looking for corporate sponsors for that kind of activity. Part of my personal philosophy is that I don't want to have unpaid interns. I think part of the purpose of an internship should be making you think about what value you're providing an organization. Why is it worth it to them to be able to pay me this much?

We're going to be accepting donations soon. That's not quite in place yet. I've already had people come out of the woodwork asking me to have that in place, and so I'm going to mostly try to do a lot of this through the efforts of high school students going back and teaching elementary school, which I think is a huge missed opportunity that back in the olden days of education when we used to have integrated schools, it was a primary responsibility of older kids to teach younger kids. I see that happen a lot with older siblings teaching younger siblings, but I think we've kind of lost that notion that a great way to learn is to teach and I'd like to see that I can somehow amplify that. Again, I'm going to have parent volunteers doing the same kind of thing working with who the existing TEALS volunteers are to amplify some of them, give them the curriculum that we're putting together, give them other ideas.

One other thing that we recently did, I mentioned that my students participate in these high school programming competitions. There are about five that we participate in. University of Virginia, Virginia Tech, Virginia Commonwealth University, University of Maryland are the ones I can think of right now. They happen all over the place, and they're basically high school teams of, let's say, three students go and participate in a four-hour contest with eight questions.

A lot of these are available online, and you'd be amazed at some of the kinds of questions that high school students are answering. Require advanced knowledge of things like Dijkstra's shortest path, graph traversal algorithms, red-black trees, and all that kind of stuff. The students are self-teaching this stuff in high school if there's no curriculum now.

I mentioned last summer we had several students that were a team that practiced this material. Well, Mr. Rodriquez and I, with his computer math classes, ran a contest two Saturdays ago where nine questions that I came up with that, you know, FizzBuzz was on there, as were some little things like convert miles per gallon into kilometers per liter based on these criteria - just some difficult questions, but also some easy ones.

We had a contest that was run HSPC style, the ACM contests where students got points and they got prizes. Our goal there was to expose our computer math students to this contest format so that they would be interested in pursuing it next year when they're in AP. I would love to take that across to all the various high schools in Loudoun. At this point, that's a parent who knew something about tech volunteering for a day, taking the questions we already have, and having someone sponsor so that there are prizes. We gave away $350 in prize material to the students and gave them pizza for the Saturday. All in all, it was about $400 in to make the contest work. That's something that all 15 Loudoun high schools could do with nothing more than a little budget and a parent.

What I would love to see is a way to have some kind of Loudoun style competition that wasn't about teams of three competing against each other within the same school because even when we send three or four teams to one of these competitions, they're all competing against each other to be first place. I'd love to see a way that the school itself can act as a team more like a sports team would. Like, okay, you have three teams of three people. How about two of them have to each solve a problem and then the two data sets from their solutions feed into the problem for the third team and so on and so forth, and actually make it like you have an offensive and a defensive team to be able to solve some kind of problem. That way the whole school can participate as a team because I think, when you have a team of three, it's a certain personality type that will participate and put themselves out there like that. It's a different personality that will participate in a more communal activity, and I'd like to encourage that, you know, more personality types.

How often in the real world do we compete with each other as opposed to collaborate? I would like to see a school collaborating with each other.

CRAIG: Yeah, and how often in software do we build something–commercially with professionals–where you're the only person that does anything whatsoever?

DAVID: Right.

CRAIG: It is 100% you. That stuff exists, certainly, but most of the time you're working with 5, 10, 15, 20, 100, 1,000 other people to get something done.

DAVID: Right.

CRAIG: Yeah. Okay, so this is very interesting. I didn't know a whole lot about LoudounCodes before we spoke. I saw your announcement. I perused the website, but I'm getting a clearer picture now, and so one of the things I wonder would it be fair to say is it's really kind of an umbrella organization or really it's organized around an idea rather than around one particular curriculum or activity.

DAVID: Right.

CRAIG: Yeah, okay. I like that because that's going to give you the freedom too to iterate on the things that work best, right?

DAVID: Right, and the theme is the supplemental and extracurricular resources for computer science education in Loudoun.

CRAIG: Mm-hmm.

DAVID: Of those 100 machines that I have, some of them we're donating to other school systems. There's an organization that I've worked with before in Washington, D.C. called DC Blacks in Tech. I would love to give them a handful of the machines. We've talked to one person there about that.

There are just all kinds of ways that, through the kinds of things that we're doing already just with a little bit more formality and resources behind them, we can really grassroots amplify the efforts of the organizations that are already here. Like I said, TEALS is in place. I love them. I'm volunteering through them continually. I'm not trying to take anything away from their efforts. The Virginia Codes effort there is strong. There's actually already an org called the Loudoun Education Foundation, but they're a whole curriculum, not just computer science.

About two weeks after I created the organization, this was perfect timing. It was like I was prescient on this, but it was just a coincidence. The Virginia Codes organization or Code Virginia, had been working with a local state representative to introduce a bill in our state congress to add computer science to the Virginia Standard of Learning Exams. On May 16th that was actually signed into law by the governor, so every county is now responsible for enhancing the curriculum with K-12 material to test computer science and computational thinking on an even playing field with math and English on the Standard of Learning Exams.

The fact that I'm now here creating this curriculum, and I'm not an organization that's coming in and saying, "Here's our curriculum. Please adopt it." I'm saying I want to work with that school. I want to work with that teacher. I want to work with this. Let's have an idea and let's pilot it. Let's see what happens and see if other schools want to adopt it - just a complete grassroots effort.

CRAIG: I feel like I probably ought to have known that that law got signed, but I'm glad to hear it. Certainly, I think, as I said earlier, these are key skills for the 21st Century.

DAVID: Yeah.

CRAIG: For many, many people, and it makes total sense to me for us to be giving these skills to kids. Obviously people go off and do different things, but I think our listeners are all, I would guess, almost all programmers. They have all experienced certain benefits in the ability to think in a structured way, which I think you'd agree, although I'd love to hear your thoughts on this, that that is one of the primary benefits. It's not so much that you have this skill that you can make a Web page or whatever, but that you begin to gain the ability to think in a structured way. Would you agree that that's a primary goal?

DAVID: Yes, absolutely. I think that the ability to follow a recipe, in a way, is computational thinking. When I scale a recipe that I get out of a cookbook that's meant to make a cake for eight, when I scale that up to serve 150 at a wedding, that is a form of computational thinking because it's not just scaling the recipe up. There are modifications you have to make so the cake doesn't end up dense and collapse under its own weight.

When I'm trying to give somebody directions on how to drive someplace, that's a form of computational thinking. I'm sure this has a proper name, but thinking about computational thinking, I remember a psychology experiment where you're looking at a picture of geometric shapes, and you need to describe to somebody else how to draw it. You're saying, "Well, there's a circle, about two-inch radius, in the center of the page. And to the right of that is a triangle," and you basically describe the picture to somebody, and then you compare the picture you’re looking at to the picture they draw. The ability to describe that is a form of computational thinking because you have to go down and think how can you get somebody to recreate this puzzle or recreate this drawing.

All of these things are the kinds of engagement and interacting with your world. Just understanding how a computer works. That fifth grade girl that saw what a computer program did when it was thinking, I'm sure that changed her world when she talks to something like Siri on her phone or when she sees a videogame now. She consciously understands that somebody wrote that. I think those are all important skills. Even if my students don't go on to a career in computer science, they are going to go into some career where understanding a CSV and a JSON and how it can be parsed and turned into new data is going to be valuable to them.

CRAIG: Mm-hmm. I wanted to ask you a question about whether you have sort of sub-focuses. For instance, I have two girls. You had mentioned that you have triplet boys, which congratulations.

DAVID: Thank you.

CRAIG: On like surviving that so far.

DAVID: I was telling you their birthday was Tuesday. Tuesday was also the last day of school in Loudoun County. We had nine boys over for a sleepover party. About 9:30 my son Christopher was up on a chair dancing, and I had told him to get down, but he was up on the chair. Somebody else was wrestling and knocked into the chair, knocked him off, and he landed on his face and broke his right front top tooth. It was an adult tooth, so my wife ran him to the emergency room. He had punctured through his lip. He actually put a dent in the floor with his tooth. But like all kids, by the time he got home he was actually upset that we went to Zootopia without him more than he was injured.

CRAIG: Well, I'm glad to hear that he wasn't seriously injured, although that's a bummer about all that. I'm sure it was no fun for anybody.

DAVID: It's funny. All the boys were here and they thought it was the coolest thing ever. They're like, "Cool! Did you see all that blood?"

CRAIG: Yeah.

DAVID: As you can imagine, nine nine-year-olds were kind of thrilled.

CRAIG: You're leading me right into my question, which is, because I have girls, right?

DAVID: Okay.

CRAIG: Obviously every child is different, but in general I think it's fair to say that a typical group of girls would react differently. That's fine. Gender difference is awesome. Yay. That's all good. But we can look at our industry, and we can say, "Okay, there are some real issues right now with gender and accessibility." I'm just wondering two things, really.

First of all, as you've had your experiences working with kids, have you seen anything, when you've been working with computers, around kind of social differences or social pressures or the realities of our world today around gender differences that have given you ideas about things that you could do? Or have you said, "We're going to create a program"? Obviously it's computers, right? Girls and boys can do this. There's nothing inherent there that's different. I think it's totally fine for you to say, "I'm not going to explicitly address gender inequity in computer science. I'm going to give everybody the opportunity," and plenty of other people are working on that problem. I'm just wondering whether you've seen anything that's given you those ideas or whether that's just not a focus of yours right now?

DAVID: Let's start at the beginning with the elementary school students. With my third through fifth grade students that have done the Hour of Code, it's the entire class coming in, boys and girls. I have to say that I think, at that age, the girls have more of an aptitude for this kind of thinking.

Inevitably, we have an hour to do these, the Hour of Code, and some students finish. Some students don't. But inevitably it's the girls that seem to finish over the boys. I don't know if it's an aptitude or if the boys are distracted. That seems to have gotten better as the Hour of Code has prepared material around things like Frozen versus Angry Birds. There are things happening at that level that I think, if I could just give enough exposure to everybody, we can start to fix that problem.

I have not yet been in the junior high school yet, and that I think is where I need to be looking at this effort. I definitely went to the high school wondering what happens. I've always thought of junior high school, in the Harry Potter books, the sorting hat, I think, is a metaphor for junior high school in that I know junior high school is when everybody got labeled as the smart kid, the jock, or the dweeb, and that'd carry through to high school.

Definitely at the high school level, the ratio in the computer math is more boys than girls. Not dramatically so, but enough that it's noticeable based on what I see at the elementary school level. I need to figure out why that's happening.

But now one thing I did see that was thanks for the opportunity, but it means horrible things for the stats in our industry, last year was my first year teaching at the high school. This year I was expecting to see a lot of my students end up in AP, including our stats looked great for a higher percentage of females going into the AP exam. It turns out that there was a program that reached out to all of the girls that were getting good grades in science and math to have them join a nursing program that an affiliate school here does in Loudoun. We have a magnet school for various kinds of career opportunity stuff. Because that took place off campus, they didn't have the opportunity to continue some class work at the school, so some of my students that were going to take AP ended up not because they were pursuing this other opportunity.

It's good they have another career opportunity, but I think that that is just one of the many – I hate to call it a pipeline problem because I know that that gets kind of dismissed a lot, but it does seem to me that there is a filter that occurs year after year after year that gradually weeds females out of this as a career path. I'm hoping that by starting at the elementary school level there are several things I can do. One is get over this phase. When I first started my career, there were a lot more women in the career path, and I've watched them drop away, and I've watched the numbers of women entering the career path be much lower.

There was that article or that news story on NPR earlier this year that called it something like the older brother effect where the older brothers would play computer games, so the computers ended up in their bedrooms, and so the girls didn't have as much opportunity, as one of many causes. I'm hoping to see that starting with the computers at the home or the computers at school with everybody in the class, it's just naturally more inclined that girls want to continue it.

With some of the curriculum that's available now where it's not so boy-centric, I think that girls will want to continue. I hope that for both boys and girls. The students that I first did the Hour of Code with will be arriving at high school next year as freshman, and I would like for them to be able to look at the computer curriculum that we have and be like, "That's it? Just two years? But I'm a freshman and I have an interest in this as a career path. Where's the four years worth of material?"

I was saying Loudoun in some ways is ahead, but in other ways it's exactly the same two years that I took when I grew up in Fairfax County in the same two years I had in 1985 and 1986. It's the same curriculum, Karel the Robot stuff. It's just done in Java instead of Pascal now. I would love to see that we have more curriculum available. That's what I'm helping to develop. That's what I'm hoping the new law in Virginia helps create. And I'm hoping that by seeding it from a young age as girls have an aptitude for this too, they'll just naturally filter into it.

CRAIG: Yeah, I think that that's kind of congruent with my approach with my daughters, which is I see my objective, and we haven't been doing as much of this lately. I have done some programming with the older one especially. We've fallen out of it a little bit, but I still have taken the position that, for my kids, my main goal at their ages, and they're 8 and 11, is to basically fail to make it uninteresting, to not turn them off until they get to the point where they can decide that it's something that grabs them.

I think you alluded to this too. There's a ton of other barriers to tons of different groups of people, women certainly included. But it does have to be based on you've got a certain opportunity. If you don't have that, then ignoring all the other issues, and of course we shouldn't, but then you're not even going to get anywhere if you don't say, "Hey, look. This is a thing that you could possibly do. Here it is," right? Yeah.

DAVID: Right. It's kind of an awkward position to be in because, on one hand, I saw this problem I don't want to say first-hand, but it was more than second-hand for me. When I had my own consultancy, Code Sherpas, both of my partners in that consultancy were women and they were both great engineers, both great managers. Inevitably, we would go to a meeting, I'd go to a meeting with one of them, and someone would assume that this was my secretary or my assistant, or that I had started a company with my wife or whatever. I could just see time and time again the women in the room, my equal partner, was discounted and people were turning to me as the expert in the room. I'm sensitive to this issue and I would love to be able to be a force to help correct it.

I had a surprise my first year that I was talking to some of the female students that were taking computer math. There was one that stood out as always having her hand up, always the one that knew the answer to what the curriculum was or what the question was, even before we got to it officially in the curriculum. I mentioned to her that there's this organization called NCWIT, the National Center for Women in Information Technology, and they have an aspirations award program for girls in high school.

I had mentioned this to her and she said, "Thanks, but no thanks."
I was like, "Why not? It would be a good scholarship if this is the field you want to go into."

She was like, "Yeah, but I don't want anyone to ever question what my motivation is for being in the room. I do this because I like it, not because I want to be the girl that stands out in the room."

I was like, "Hmm." Yeah, I want to solve the issue, but by shining a light on it, am I scaring some people away?

CRAIG: Hmm.

DAVID: It's a fine line to walk. There was another instance where I had a high school student. I heard him say to somebody, "I think it's cute that a girl is learning to code." I at the next computer club that we had talked about how the original programmers at ENIAC were all women and who Ada Lovelace was and who Grace Hopper was, and kind of put this in perspective that we are standing on the shoulders of great people when we work and a lot of them are women and tried to erase that perception there.

But I'm hoping that as girls that have been on an equal footing with boys from elementary school on up, it's just a nonissue. That's what I'm hoping to see. We'll see.

CRAIG: Yeah, well, it's a complex issue, obviously, and I think the work that you're doing is fantastic, which leads me to ask a question that I'm sure you would have gotten to shortly here, which is: How can people help? People say, "Oh, David is doing some awesome work. I want to pitch in." What are the ways that they can do that?

DAVID: First of all, the best thing you can do is reach out in your own county and do something. If TEALS is in your county, volunteer. They're accepting volunteers right now for the next school year. If it's not, then talk to whomever. Connect. Make the connections between the people in your county and the people that run TEALS to be able to see if you can get a program in.

If TEALS isn't available, see if Watch D.O.G. Dads is. That was really my entry point, a great organization that is meant to put fathers in the classroom to see what's happening at the elementary school, and that's been phenomenal for me. I have a day where I'll go and I'll read a book to the second grade, and then I'll play with my kids on the playground, and then I go and help a fifth grader with his math homework. You spend the whole day volunteering at school just wherever a teacher needs you: making photocopies, distributing who is being picked up instead of going on the bus notices, and all that kind of stuff. You're really helping the school too.

That is really what gave me the in. I wasn't just some dude showing up saying, "Hey, let's teach code." I was an involved parent saying this would be good for the kids, and that really helped me get the in that started all this for me. Start in your own county, in your own school system doing this kind of thing.

If you happen to be in Loudoun or if you happen to be in a neighboring county, check out the LoudounCodes.org website. Sign up on our mailing list, and keep abreast of what we're doing. Even if you're in another county, the curriculum that I mentioned for the CSV, JSON, and SQL, that's all going to be open sourced. I'm just taking the feedback from students right now and correcting some typos and stuff like that. That's all going to be on GitHub so you can fork and do what you want with it.

Really, mailing lists is probably the best place to help. Very shortly we'll be looking for some financial help as well, and that'll be up on the website. I'm not going to be too pushy about that because so far we've done amazing things just bootstrapping with the limited effort we have. If nothing else, reach out to the math teacher at your high school who might be the one teaching code and say, "Hey, I do this professionally. Is there something I can do to help?"

Even if it's come in and walk around and help answer questions with the students who are struggling with something, that can help your teacher get extra time to grade papers so they're not grading them at home. There are a million little ways you could help out in your county. All you have to do is meet the right person and ask.

CRAIG: Yeah. My wife organized our kids'. There's a program at the school where the parents would come in and read with. Actually, the children would read to them during the day. I remember she was running it. She's like, hey, you're going to go volunteer. I'm like, okay, cool. I went in, and the kids were just so thrilled to see a dad, right?

DAVID: Right.

CRAIG: The fact was, for whatever reason, all of the other volunteers for that program had been women, had been the mothers. I think another couple dads did also volunteer as well. It wasn't just me, but I was the first one. They were like, "Oh, daddy. It's great," so the kids really love it too, and it was really interesting to get in and see the kids because these, of course, were the kids' class. To get down, sit down and have each of them read me a book was interesting on just a number of fronts, not least of which was seeing your child perform an activity and then seeing all their classmates perform the same activity.

DAVID: Right.

CRAIG: It was just fascinating on a number of dimensions, so I would echo that there are always opportunities to help. I think you'll like it, and maybe a little bit of extra nudge to the men out there to get involved with the school, though obviously anyone could heed your call and go help out.

DAVID: Right.

CRAIG: Yeah.

DAVID: Yeah, it's been great. Purcellville is a small town, and after doing the Watch D.O.G. Dads stuff and doing the Hour of Code, I see students in the grocery store with their parents and they run up to me. They're like, "Mom! Mom! It's the computer guy! It's the computer guy!" Or they're just like, "Hello, Mr. Bock. How are you?" and they start talking to me, and their parents are looking at me like, "Who are you? How does my son know you?"

Through the TEALS program, I actually have a Loudoun County Employee badge. To volunteer as often as we do in the school system, we've been through the security background, have the fingerprint checks, all that stuff, so I have a real badge that I can flash to get around the schools a little bit.

CRAIG: There you go, even more reason to do it, right? You can get a badge.

DAVID: Yeah.

CRAIG: Maybe get your kids to obey you more. No, probably not.

DAVID: Probably not, no.

CRAIG: Awesome. I think we're kind of coming to the end of our time, but I like to make sure that we always save as much time as possible at the end to talk about anything else. I don't want to cut you off. You've had so many interesting things to say. We should probably wrap it up at some point, but that point is definitely after you've had a chance to share anything else with us that you think you would like to lay on our listeners today. What do you think? Is there anything else?

DAVID: Just one thing I'd like to say is I'd like the information to flow both ways. If there is a county or a school system out there that has some great piece of curriculum that they'd like to promote and think I should know about it, please reach out via the website. Let me know about it. I'm anxious for good ideas too.

CRAIG: Awesome. Yeah, well, we'll spell it again just because it is a little bit unusual, LoudounCodes, L-o-u-d-o-u-n Codes .org. That actually will probably help our transcriptionist as well. We have website transcriptions now, so people will be able to read. Sorry, I meant podcast transcriptions so that people will be able to read that as well. Yeah, check it out. It's a nice site and it's very, very obvious how to get in touch with you via the mailing list that you mention.

Well, David. This has been super interesting. I knew a little bit about what you were up to, but not a lot. I certainly know a lot more now, and I think it's just an amazing thing that you're doing. I kind of like the fact that it's oriented around an idea rather than a fixed activity because I know you. I know you're a software practitioner using many of the same approaches that we like here at Cognitect to include Agile. I'm sure that you will iterate. You will use retrospectives. You will do these things even if it's sort of informally in your own head to kind of continue to improve your process towards the ideas that bear fruit, so I'm interested to see where you take it.

DAVID: Yeah, it's evolved just since we talked last month about it.

CRAIG: Yeah. Awesome. I was just going to say then maybe you'll come on and talk to us again, I don't know, some time next year. Maybe after you've had a chance to run through it for a year, we could check back in and you could tell us, "Well, we thought this was going to work, but it turned out to have this barrier, but we had this other idea and, oh, man, that one was great." I wonder if you'd maybe think about coming back on and checking back in with us after you've got a little more experience.

DAVID: I'd love to.

CRAIG: Cool. All right, then. Well, then we will go ahead and move to the final question. We warned you about this as well. This, of course, is one about advice. We always ask our guest to provide us, to share with us a piece of advice, whether it's advice that they like to give, live by, advice they received, any kind of advice at all. What advice do you have for us, David?

DAVID: God, do I have to choose just one?

CRAIG: No. No, you don't.

DAVID: I already mentioned one, which was there are a lot of people that can tell you no, but only you can tell yourself yes. That's something I've had to learn over and over again.

The one I was planning on mentioning is first two stories to put this in context. The first is early on in my career. 1992 was the first time I ever read the Mythical Man Month. I was just out of college. I didn't really get what the book was about. I read it, and I was like this is talking about ancient IBM operating system technology. This can't be relevant to me. I kind of shrugged it off and laughed at it.

A few years later, somebody mentioned how great that book was. I was like, "Oh, you've got to be kidding. How could that be relevant today?" He's like, "Have you read it?"
I was like, "Yeah, it was all about ancient IBM technology."
He goes, "No, it's about teamwork and people, and the more things change, the more they stay the same."

I read it now with several years of career underneath me, and it just made so much more sense. I just was not prepared to read it before, that I didn't have the context for what it was talking about. I missed everything about defect rates and the problems with communication on teams and delivering software. I missed all of that the first time reading it. I made a promise to myself that I'd reread that book every few years, and I have every six to eight years have reread that book. I'm coming due, I think, again in 2017 to pick that up and look through it again.

A similar story, last year I led a group study with a number of both seasoned and new engineers at my company, and we read the Pragmatic Programmer, which is a book I had first read in early 2001. For a long time I've quoted that book. I've lived by many of the principles. We hear people often talk about, you know, don't repeat yourself. Then, of course, some of the other ones have worked their way into our subconscious like "Keep knowledge in plain text," but for years I was living those tips.

I reread the book again with some people who, as we read it, they weren't getting everything out of it I had hoped, or they weren't seeing it as prophetic as I had remembered it. They were like, "Well, yeah, a lot of this seems obvious, common sense," you know the stuff it's saying about testing, about don't repeat yourself. It made me realize that we really have moved the ball forward on what this is as a career path.

CRAIG: Mm-hmm.

DAVID: The formality of our practice, the tools we use, the things we do. In that book, testing is suggested as a good idea. Now it's something we do regularly, and we begin to question teams that aren't. Version control, again, you might want to use version control. Now that's like how could you write the stuff we do today without it.

CRAIG: It's insanity if you don't, right?

DAVID: Right. Right, and it's just reading that book with that historical perspective. I admired that book so much at the time, and looking at what it contains now with the historical eye of how we've changed since that book was written was really valuable.

I guess my tip is revisit your sources of knowledge and look at them in the new context that you have in your career as your career evolves. You can't step into the same river twice. You read that book again and you're going to get new things out of it. You're going to realize things that were revolutionary in that book, how they've come to pass and be common standard things. I think we both know Rich Hickey from that same circle and he is phenomenal at diving into old papers and pulling out beautiful nuggets of wisdom.

CRAIG: Yeah. Yeah, I was going to say that's kind of the dual of your advice, which is not only go back and look at it and see, oh, we've moved the ball, but also, hey, here are some ideas that we actually haven't realized yet. I was thinking, as you said that, I had exactly the same experience with Structured Interpretation of Computer Programs. That was a textbook of mine in college. I actually took the class from Jerry Sussman.

At the time, I remember it being like, "Uh, it's all right." Then I went back and read it 20 years later, and I was like, "Oh, my God! This is the stuff that I've been discovering and there's still more in here that we haven't necessarily achieved yet." Out of the tar pit. Same thing.

DAVID: Right.

CRAIG: I think that's fantastic advice. Well, David, thank you so much for taking the time today to come on and talk to us about LoudounCodes. It sounds like an amazing effort. I know that you're going to be an excellent steward. I'm really looking forward to hearing from you the next time we see each other and then hopefully on the podcast again in the not too distant future about how that effort is going. As a father of kids in exactly that age range, I'm invested, but I think it's just fascinating from a standpoint of we say the show is about software and the people that create it. Well, guess what? The people that create it or that are going to be creating it are in school right now, so you're influencing them, and I think that's fantastic. Thanks a ton for coming on and talking to us today.

DAVID: Well, thanks for having me, Craig. I loved talking to you about it. You can see I have a lot of work to pare all my passion speech down to an elevator speech, so I appreciate the opportunity to talk about it.

CRAIG: Not at all. It was wonderful to hear it, and it was very well presented. We're going to wrap it up there, though. This has been The Cognicast.

[Music: "Thumbs Up (for Rock N' Roll)" by Kill the Noise and Feed Me]

CRAIG: You have been listening to The Cognicast. The Cognicast is a production of Cognitect, Inc. Cognitect are the makers of Datomic, and we provide consulting services around it, Clojure, and a host of other technologies to businesses ranging from the smallest startups to the Fortune 50. You can find us on the Web at cognitect.com and on Twitter, @Cognitect. You can subscribe to The Cognicast, listen to past episodes, and view cover art, show notes, and episode transcripts at our home on the Web, cognitect.com/cognicast. You can contact the show by tweeting @Cognicast or by emailing us at podcast@cognitect.com.

Our guest today was David Bock, on Twitter @bokmann. Episode cover art for The Cognicast is by Michael Parenteau. Audio production is by Russ Olsen and Daemian Mack. The Cognicast is produced by Kim Foster. Our theme music is Thumbs Up (for Rock N' Roll) by Kill the Noise with Feed Me. I'm your host, Craig Andera. Thanks for listening

Get In Touch