Ara Howard CTO and Founder of Dojo4 in Boulder CO discusses his journey into scientific research, Ruby on Rails, regular programming vs web programming, and the evolution of technology.

Ara founded Dojo4 after his time in scientific research realizing that web programming was a fascinating problem worth pursuing.

Highlight

  • Ara’s start in computer programming 00:19
  • Research(NOAH, Supercomputer, Ruby on Rails) 1:45
  • “why would you want to be a web programmer” 5:00
  • “you can estimate the quality of a developer by the size of their bin directory” 06:03
  • “I’ve never written CSS with Pixels in my life” 11:39
  • “Only two types of developers…”15:41
  • Daily Practices 19:58

You can find more information about Ara Howard and Dojo4 by visiting their blog, and following them on Facebook and Twitter.

Video Transcript

Brent: I’m Brent Weaver and you’re watching uGurus. The must-watch web series to become a more profitable and in-demand web professional. Today, I’m in Boulder, Colorado hanging out at Dojo4 with Ara Howard, their CTO. Welcome to the program.

Ara: Glad to be here.

Brent: So Ara, how did you get started in web?

Ara: Wow. So, I went into engineering school, computer science school after a really bad bike accident left me wanting something I could do if I was crippled. And so I went to school for a second time. I was living in Boulder and I went to the engineering school here, CS department which is a really great program, had a really great time. Was able to partner with some really motivated students. And we were, things were looking great for us. It was right around the time like at the first dot com boom. And the crash happened about, oh I would say about three months before graduation. We had the friends who were juniors dropping out of school to go take the high paying job. But I was living here and I had no reason to rush so I stayed. While I was a student I ended up being a research associate at Noah. Working with weather modeling and big Geo-data. And I had thought that I was going to move on immediately to industry because the pay wasn’t as good and I wanted a different challenge. So then the bottom fell out and there were no jobs. The crash happened. Right when we graduated a lot of my friends were really scrambling for work. And so I was really fortunate to be able to go into research. I say really fortunate because for the next five to seven years I was able to work with technology that you just don’t get an opportunity to touch as a web professional. So I helped port the weather model onto… And helped build what, at the time, was the fastest supercomputer on Earth. The Jet supercomputer. Of course that only ever lasted about three weeks until somebody in Japan supersedes it. But at the time it was amazing technology to work with. So we built massive 100 node compute clusters. And then while I was there I really started to work into user facing code. There’s a whole parallel world to the consumer web in government and the sciences. And everybody talks about API’s and service layers. They were doing that 20 years ago. And there’s all these custom protocols for moving data around the world and interacting that scientists have been using for a very long time. And so I had a talent for that. And I was doing a lot of Pearl, CGI programming, C, CGI programming. And one day out of like incredible frustration at installing Lib Dub Dub Dub[sp] from CPAN and trying to get that to compile, I decided there was language I was reading about, Ruby. It was about one, four. And I was like f[explicit]k it I’ll try to do it in that language. And so I downloaded it, compiled it, HTTP was built into the language. This was kind of a new thing for a language to come with really good HTTP tools out of the box at the time. And so in a matter of days I started doing all of my programming in Ruby. It was a very simple transition for me because I had done lots of OO programming, lots of functional programming, lots of scripting languages. So I just started doing everything in it. So stayed there for a few years. But still really wasn’t touching the internet. And gradually started consulting for companies around here. Mostly in the scientific domain. So started working for the very early start-ups in Boulder. Collective Intellect and some others who had found me through Use Net. I don’t know if anyone remembers what that is.

Brent: I still use it for various downloading things, but whatever.

Ara: And so I started consulting with what we would now called a start up. They weren’t called that at the time. I don’t even know what these crazy companies were that were funded by… Who are these foundry guys? What is venture capital? I didn’t even know. But of course, they were doing… And I was initially contracted to do it like work in the heavy lifting in the back end. But of course they were working on consumer facing products and so it was touching the internet. And then Rails[sp] happened. And I remember at the time a good friend of mine that I went to school with, David Clementine jumped on the Rails bandwagon. Rails won. Another good friend of mine that I went to school with. And I remember telling them, he likes to tease me about this, I was like why would you want to be a web programmer? That is so lame compared to doing like real programming. It’s like just kiddie stuff. But I was wrong. And it turns out that of course it’s a fascinating problem, it’s super challenging. And I just ended up doing it more and more because that’s what people were doing. To this day Dojo4 still focuses on, our projects touch the internet, but they’re not just the internet. For the most part. So we do ten to like work on projects that, sure there’s an API. And there’s a website, and there’s a store. And it’s HTTP and people think it’s a website, HTTP only. Ignoring the fact that we may have built a custom video rendering farm with 2,000 EC2 nodes to power the whole thing. Those are the kinds of projects that we still like to specialize in. So, some heavy back end stuff.

Brent: Very cool. So in terms of you in your space. I mean you have to kind of be on the forefront of technology for what you guys are doing. Like what kind of projects do you take? What kind of projects do you not take? How do you keep tabs on all of the fast changing technology? And then making the decision of what Dojo4 works on, and what they don’t?

Ara: Well, even though I’m the CTO, I mean I’m a developer at the core. I write a lot of code. I still maintain over 200 open source projects. I have hundreds of gems at this point in JavaScript libraries. I write a lot of code. It’s what I do in my spare time other than ski or ride my bike. But if I’m sitting down, I’m probably writing code. So I write a lot of code. I play with a lot of code. I build a lot of tools. I actually just sent an email out, or I posted a Tweet last week… And I believe this, that you can estimate the quality of a developer by looking at the size of their bin directory. And developers that don’t write tools for themselves, they’re not developers. Like they just have a job and they happen to write programs. But they’re not developers. The creative… My first company and the company that’s a partner in Dojo4 was called Code for People. And that’s what all my open source is released under. And that name came out of that belief that I really want to write tools that people are using. I enjoy writing code, provided it’s used. And so I do a lot of that. Lots of spare time projects, lots of open source. So I guess in a way that helps you stay on top of technology. But when you’re asking that question and I was thinking to myself you don’t really have to stay on technology. Like on top of technology. Nothing’s changed. I actually find it quite humorous that for us old timers that have been around the web for a long time, like there haven’t been any changes. The fundamental paradigm… Like HTTP is still stateless. Trying to keep connections open between servers and browsers to make things more responsive and do things in JavaScript instead of on the server side. And then it flips and then it goes the other way. I mean that’s been happening since before Firefox. I mean when all of our development was on Mozilla, I don’t know if you remember was it CGI NPN, right? You could leave a connection open with CGI scripts. People think this is modern. Like web sockets, oh my God! This is a new thing! You’re like it’s 15 years old. Or even the concept of like Meteor[sp]. It’s like JavaScript on the server and the client, my God! It’s like Inra[sp], the French research institute. I forget the name of the framework, but they had that 15 years ago. Even with a database layer that interpreted JavaScript. Like one language everywhere. So things just go like this. I was talking with some of the guys from Pivotal Labs yesterday. Alex, a friend of mine. And he was saying he was doing a lot of stuff in Go lang. And we just rebuilt Dojo4 recently and it’s purely static. I’m a huge fan of static websites. And it’s generated and we have robots that listen to web hooks. And so practically speaking, it is a dynamic website. We can write blog posts in a web browser and hit publish and it gets published. But in reality, it’s a static website. And I was looking at it, the build is a little slow. I mean I would like the build to be faster. It takes about 200 seconds to build the site. And that’s fine for the benefit, which is an incredibly fast loading site. But I had wanted to make the build a little quicker. And I was looking at a variety of statics I generated out there. I was looking at Doc Pad and Hugo which is one based on Go lang. It was my first… Everything in Go is awesome and it’s fast. And everything in Node is like it’s fast. So I looked at those and put some representative data together and I was like yeah they are fast. I could get a build of say of 500 page site with reasonable complexity… I could get it down to the tens of seconds. That’s hey that’s an order of magnitude. And then I remember… And then I just had an idea… Again, us old timers that know what WGET–Mirror[sp] is, so I wrote an alternate implementation in Ruby again. Just on Rails, nothing fancy. And spun up a passenger instance with 16 threads, spun up WGET against it and pulled it down and decided to see how fast that was, and it was about a second a half. So no new tooling, slow language and I’m going two orders of magnitude faster than what I was doing. And faster than the compiled languages, which are fast. And that’s a great example of how nothing changes. When I was at Noah we used to do a lot of image processing with Ruby. People were like Ruby is slow. Well, I mean it depends on how hard you think about the problem. So I just find that the aspects… I mean the rules around programming and the web. I mean they haven’t changed. We still have touring[sp] machines. We still have context re-grammers. We still have stateless protocols between servers and clients. We still have JavaScript in server side scripting languages. From my perspective there have been no changes. The only changes that I think that has… The only real change that I think that we have seen in 20 years of web development is proliferation of devices. Although there were some of us, myself included, that thought that I’ve never written CSS with pixels in my life. That’s always seemed like a f[explicit]king crazy idea to me. Right? Like as a developer I’m like a pixel is a unit over there. And you have different sized screens. Like what a weird idea to take this print idea and try to apply it to a screen. Very strange. Like what if I want to render it as a PDF? Like I have always believed in a separation of content and presentation. So I used to make designers very angry. I would take their CSS and I’m like no it’s all M. It’s all percentage based M’s. Everything else is crazy. And this was ten years ago, and now it turns out that there are a lot of screen resolutions. The permutations of screen size, that’s been a real change. Although a relatively minor one for some of us who have been thinking like that. Thinking responsive from the get go, separating presentation from data. But the combination of the proliferation of screen sizes with rendering engines, with technologies to deliver data to that, right? Single page app, API, whatever. Server side, HTTP caching. And then one of the biggest things, I think a variable connection in speeds and/or connectivity like on offline. You add all that together, and I do feel like the web right now is far more complex and far more interesting than it ever has been before from a development perspective. Everything is hard, I feel like now. And people’s expectations are through the roof. They say web app… I remember one time when we made a presentation for a big client who was selling a company to a bigger company that starts with O and ends with -acle. And we were making the presentation in 36 hours or something. Like we have to give a presentation to Larry Ellison. And we were like okay. They wanted to mock their app. Not because their app didn’t work but because it’s not a real time app. It’s something that takes weeks to get the full experience out of. It’s data mining, analytics type thing. And so they wanted to make a canned presentation but in HTML so you could interact with it. They didn’t want Power Point animations, they really wanted to be able to play with it to be able to experience what it did.

Brent: In 36 hours?

Ara: Maybe we had… I guess it was Friday and we had to deliver on Monday morning, so it was a little longer than that. But yeah, three days. Some reason 36 hours came to mind. Anyways. Maybe 36 hours of work might have been what it was, in three days. And anyways they told us, it’s on Chrome. Because we told them we need to know the platform with this kind of time. We are not testing in any other browser. We need to know the version, the OS, everything. Like okay, definitely it’s a Mac laptop, definitely Chrome. And we hung up the phone and I looked at Steve, we worked on this together. And I was like yeah bull[explicit]. There’s no way that we can rely on that. So we just made it responsive and made it work in any web browser basically. It was funny because on Monday morning they called us in a panic. Oh my gosh, we have to give the presentation on an iPad. This terrible, the whole thing! And we’re like it’s no big deal, it’s fine. And they’re like really? Yeah. And that hasn’t changed. It actually perplexes me that people think that there’s anything new going on in the internet right now, it’s all old.

Brent: It sounds like you can get out of the weave a little a little bit and see that pattern over your tenure. And that’s probably very important to not get so caught up in like every blog post coming out every day with some new tweak or something. Making it exciting or some launch that’s like this is the best thing in the world. And then having to get perspective on that.

Ara: Yeah. Perspective, although I think the implication there is that somehow it’s related to experience or age. And I’ve noticed in my time working with other developers that there’s really only two kinds of developers. I mean there’s young guys, they come out of school. I was a young guy who came out of school, work with other guys who came out of school that studied hard. That are really computer scientists. And if you understand what a touring machine is, what limits on memory. What’s the difference between a sequential scan and seeking all over the disc while you’re doing data processing? Like what is swap? These things are… What is the cap theorem? You know, like it’s actually important if you’re an internet developer. And a lot of people were asleep in class or just fundamentally don’t understand the law of computing. And I don’t think that really has anything to do with tenure or experience. I think you either get it or you don’t. And I think about 1% of developers get it. And if you don’t, combine with the proliferation of information out there. That is also a change, right? Getub[sp] and other blogs. I mean there’s usually stack overflow, Twitter… Gah make it stop already.

Brent: You could get pretty far knowing very little.

Ara: I don’t think so. I really don’t. I mean it think it appears that way. But if you look at the… If you chart the trajectory of developers and companies and software projects. A large majority of them is probably the 80-20 rule like most things. A large majority of them they grow and grow and grow and they hit a glass ceiling and they collapse. Software does this. Developers come into companies, they build things, they build things, they build things. And in about three years, teams usually get to a spot if there’s not a lot of churn where suddenly they’re not developing new things they’re just maintaining the crap that they wrote. They start to hate it, the company starts to experience churn, it goes on the decline. I see that everywhere. I mean you see it in start ups, you see it in fortune 5,000 companies. You see it in developers in their development career. They start getting that three year itch. Like what language should I learn now? Like that’s going to change anything. Like they’re touring complete, enough already. You’re typing system. Like none of this matters. It’s a touring machine. Live with it, they all suck a lot. To solve the problems that we’re trying to do, to solve the problems that we’re trying to solve, our tooling is still totally inadequate. It’s just terrible as a field. The tools that we have to use to create the solutions we need to create. They’re pathetic. So yeah. Anyways, I don’t think that that’s true. And I think there’s going to be a backlash in the field now too. I mean I think right now in the development world… In the start up world with developers with people who are investing money in start ups, there’s a sense of inflation of ego, of value, of worth. Of the difficulty or importance of what we’re doing. And I think that creates a market where people that don’t really know what they’re doing… And they may be making six figures. The company may be generating revenue. But I don’t think, if we look at the industry as a whole, in ten years like I don’t think we’ll be able to asset that you’ll be able to learn how to program in seven weeks and build companies that provide lasting value and enduring revenue for the economy. I don’t think that’s true.

Brent: For sure. What kind of… I mean as a hardcore developer, what kind of practices have you kept over time? Whether it’s something you do daily or weekly or monthly that’s really made an impact on your profession?

Ara: Yeah. Lots. I think about this a lot. I’m not a productivity nerd. I mean I think a lot of… There’s sort of two categories of practices that I think about. And the biggest set of practices are mental, I think. Or emotional. Or they’re internal. They’re internal practices. So things like I just actually sent a letter to my group this morning, I was doing a code review. And like understanding the problem. It’s a huge thing that somehow… And if you get two engineers in a room and you say Vim and Emax or Node and Rails or whatever. And like everybody will be frothing at the mouth talking about the minutia. About the tooling they’re using and about a bunch of shit that doesn’t matter. But if you start asking meaningful questions about the domain you’re in, the problem that you’re solving, nobody has anything to say. Very few people do. There are a few people, and they’re the engineers that go build their own start ups. And they understood that there was a problem, and they built a solution to it. And they have billions of users. I mean that’s why that happens. But it’s rare that somebody actually takes the time to understand problems. And I, again, this is something that… It depends on your engineering school. You certainly don’t have to go to engineering school to learn this, but it’s something that people innately have when they come into programming. Or learning anything new. Like if they’re problem solvers, which is what we are, then the very first thing you need to do to solve a problem is to understand it completely. And that’s just overlooked. I mean ten times a day by every developer and every shop I’ve ever been in. Is this the actual problem that I’m trying to solve? So that’s one. Not taking things too seriously. I mean I have a great disdain for people arguing around whiteboards. I’m just categorically uninterested in doing that ever again in my life. Like I like to avoid those kinds of people, I like to avoid those kinds of clients. So just keeping perspective on what we’re doing. It’s like sometimes you’re working with software where it’s real time software, controls a satellite. It’s like it costs $250,000 for a little processor that they seal in plastic in there, like this is serious business. But most of the stuff we do is totally not serious. It’s not worth getting upset about. It’s just not that important. And so trying to keep a light heart, understanding what we’re doing, trying to keep a light heart, I think that’s a big one. In terms of like mechanical processes, I guess overall I have a minimalist philosophy. So like my phone is, I’m right where a mobile shop. And these are the apps that I use.

Brent: You have a very un-cluttered app screen.

Ara: I have a calender. And they’re all work. I guess as one practice, I never do entertainment on computers. I don’t read on them, I don’t… Occasionally I’ll watch a movie. It’s very rare. I certainly don’t play games. I don’t install lots of apps and mess with them. I try to make things, I try to spend my energy there. So that’s… I think that can be draining when you’re on a screen all day and then you go home and you’re looking at screens, it’s not good for your creativity. So I try to be minimalist with my tooling, and that goes across the boards. So my IDE is and has been for as long as I’ve been using a computer, almost 20 years now, it’s VIM. I use VIM in a terminal. My development environment on the Mac is identical to the one on Linux is identical to the one on Windows. It’s identical if I’m SSH’ed in or on my desktop it’s like the black screen, it’s VIM. It works with every language known to Man, it’s very fast. So those are the biggest things, I think. It’s trying to be very minimalist about my tooling and sort of open minded and relaxed just about the actual work that I’m doing. And then I guess the last sort of major practice that I have is that I hate doing things… Okay twice I can handle it. Three times, I can’t handle it. And it shocks me that developers themselves, they will do something. Like I’ve done this five times. And it’s like there’s only one thing that computers are good at. And it’s automating things in a precise way. Predictable things. That’s all they can do, right? They can’t think. They can follow instructions. And it shocks me to see developers who will be writing a solution that’s similar to one that they did three months ago. And it’s like why didn’t… And there’s two reasons why people do that. The biggest one is probably laziness. But the second one I believe comes back to not understanding the problem. Because if you can understand a problem and describe it, it’s usually not that hard to make it an abstraction that you can re use if you understand it. The solution is sort of obvious. It’s like I just need 100 lines of JavaScript in a library and I won’t have to do this again. So that’s one thing is I make lots of abstractions. I probably have… I mean I have thousands of scripts that I rely on every day. I have robots that are running out of the clouds that do thing for me. And then libraries and then golden image applications that I can clone. Automating things and abstracting things is the only way that you can sort of build value as your inherent value. Because you can only type so fast. But when you can come to the table with solutions to problems that you’ve seen before, abstractions, you become more valuable over time. And you can get more things done. And you can, more importantly, solve increasing complex problems with the same ease that you were able to ten years ago. Because you have a war chest.

Brent: Very cool. Well Ara, this has been incredibly fascinating. Definitely hope you can join us again some time in the future. Give us maybe an update or maybe we’ll have you on a panel. I think you’ve got some good strong opinions which we appreciate.

Ara: Great. Yeah I really enjoyed it.

Brent: Very cool. Well stay tuned for more great content from uGurus.com.