March 19, 2012

Gabe Levy on the early days of the web

"It was called FreeMerchant. The idea was, as many things were on the web then, it was going to be free. We built it and launched it in 1998." Gabe Levy on the dotcom bubble, voice over IP, and network protocol optimization at Riverbed


Ravi: Today is Monday March 19, 2012. I'm here today in Oakland, California, with Gabe Levy of Riverbed Technology. Hi, Gabe.

Gabe: Hi. How's it going?

Ravi: Good. Gabe and I met while I was actually interviewing for my current job, as I'm also an engineer with Riverbed. We actually used to work together, right?

Gabe: That's true.

Ravi: Gabe is actually native of the Bay area. Have you been here your entire life?

Gabe: Yes. I was born in Santa Clara. I lived there until I was about nine months old. Then moved to Albany, California, just a couple cities over. I lived there until I was three. Then I moved to North Oakland, kind of on the border with Berkeley, until I was 13. Then we moved to Berkeley, I went to Berkeley High. Stayed in Berkeley and went to the university there. And lived in San Francisco for a couple years after that. And then I came back to Oakland.

Ravi: Coming back to your college choice, Berkeley. You grew up your entire life in the Bay area. Why did you choose to go to Berkeley?

Gabe: In retrospect, I don't think it was my first choice. My parents kind of forced the issue once I was accepted. I actually wasn't planning to go to college immediately after high school. I wanted to go, do this sort of youth group program overseas. Once I got accepted, Berkeley doesn't defer, my parents denied me that option.

Looking back, I'm glad. I think it was a great choice. Berkeley was the best place I was accepted to for computer science, which is what I knew I wanted to do. And I had a wonderful experience there, a great education.

Ravi: And I guess that also brings up the question, why computer science? What motivates you to learn technology? And this must have been during the dotcom boom era, if I'm not mistaken?

Gabe: I was in university '96 through '99. So, yeah. I was graduating right when things were jumping off. I guess to answer that question, I have to go back to what got me interested in computers originally.

For my fifth birthday, which would have been 1983, my grandfather bought me a Commodore Vic 20, which was a wonderful machine at the time. I think it had about 3K of RAM. But full color, sound. You turned it on and you were immediately at a BASIC prompt and you could code. It really changed my life. It really opened my eyes. I could tell at the time, even at five years old, that it was something immensely cool.


[laughing] I wasn't sure what to do with it yet. But over the next few years I learned how to use it, starting with Logo. Of course I had a bunch of games. That was really my introduction. And then by the time I was ten, I had three computers in my bedroom. The Vic 20, an Apple 2+ that I got secondhand from an uncle, and then a TRS80 Model Three that I got from another uncle. So I think, I guess people in my family clued in that it was something that I was interested in and they would give me their old computers, which was awesome.

So I had a lot of experience, just as a kid, messing around with them. It was a different world then. There was no network that I had access to. So everything you did, you did sort of in your living room. If you were lucky enough to find a book about something, then you might actually start to understand things on a deeper level.

I had a subscription to Byte magazine which they use to send listings of programs in there, that you could type in verbatim, BASIC programs and they would do various things. But, it was a great way to sort of learn how things worked and I don't know, get your hands dirty without really knowing what you are doing yet.

Ravi: So back in the day what was the language du jour, was it Logo or...

Gabe: BASIC. BASIC was it. There was a BASIC interpreter on the ROM and as soon as you turn the computer on that's what you got. The first time I learned how to manually spin the disk drive to reload the program in there, it was a realization for me that there was hardware I was controlling with my keystrokes, that was pretty cool.

So it's really what I always knew what I wanted to do. I started coding in junior high more seriously, learned PASCAL, I borrowed a book on PASCAL from a friend of mine. This was we were recording on a Macintosh. I had a Mac Plus at that time.

We'd write little games and things like that. Use Resedit to look at the code sections and learn a little bit of assembly that way. I started cracking games for, not cracking for piracy but, for like, giving myself infinite lives, and things like that. You look through the symbols, you'd find the routine that was to deduct damage or whatever, and you'd replace it with a no-op.

That kind of clued me in that there was a much deeper level that I could go with it if I took the time to learn how to do it. Berkley High had a really good program that actually had AP computer science available there which I think is pretty unusual for public high school.

And I enrolled in that, got more serious with the PASCAL, started learning GUI programming and there was really, it was a no-brainer when I got to university.

David: Did you have a lot of people in your life that helped you with this, like parents or friends? How did you learn? Was it all self-taught?

Gabe: Yeah really, I mean besides giving me computers, which was of course helpful, none of the rest of my family was really into it. My grandfather would be the closest thing to that but, he wasn't a programmer, he was an electrical engineer in training and a salesman by trade. He worked for, I think, a company that sold technology mostly to the federal government.

So he always had cool things. He gave me, an oscilloscope, when I was seven, and you know, a laser, a big old laser that you plugged into the wall, when I was 12 or something like that. So he inspired me in a way but, couldn't really give me any real instruction.

I guess, no, I did have one friend in junior high who lent me that PASCAL book, who knew a lot. So he taught me some things but, yeah, just books and playing around.

Ravi: I am kind of curious about this, because where I come from, India, most of the machines we had back in the day in the '90's were all DOS programming machines. I learned Windows first. We'd never even heard of what an Apple was until I moved to the States, so how was it in the Bay Area? It seems like the Apple machines are the machines du jour.

Gabe: There was a sort of, hipster cachet to Macintoshes back in the day.

Ravi: Oh, even back in the day!

Gabe: I'd say so, and then there wasn't for a while, and now there is again. Since Steve Jobs took over, I think it was '97, he really turned the brand around, because they were flagging there for a while. But, in late '80's, early '90's I'd say, they really had a lot to offer over PC's. You could do a lot more of the things I was interested in doing with them anyway, the sound, the graphics capability.

It's also just what I had, I think my parents bought me a Mac Plus, got one for me somehow and that's what I learned with. I think there's always been two schools with that.

Ravi: Coming back to Berkeley days, you started Berkley in '96, right?

Gabe: Yes.

Ravi: What were some of the classes that inspired you at Berkley? Were there some of your favorite classes?

Gabe: Yeah, of course, I had a lot of great computer science classes. In terms of that I'd say data structures, I took a class in randomized algorithms that I found really interesting. There were sort of new classes of algorithms that I wasn't familiar with and they were really powerful in some ways I hadn't thought of and it kind of inspired me. I really liked my graphics class—my semester project was a ray tracer.

David: When was this?

Gabe: I would have been, I guess my junior years, so '98.

David: That's interesting. Ray tracing is still considered pretty cutting edge, I think.

Gabe: Yeah, it's been around a long time...

Ravi: It's something we picked up in our graphics classes as well and this is years later.

Gabe: Yeah, I don't follow graphics technology that much anymore but, I think that there is still only now, it's just now getting to the point where it's even really feasible to do for real time stuff and I think Intel's been working on some stuff like that. It was a really satisfying project, because you start with this text file of coordinates and shape definitions and you plug it in. I think it took about 15 hours to render the final product that we turned in with the project. You see this beautiful, perfectly reflective, detailed, anti-aliased image form and it's just really satisfying to see it.

David: Just to clarifying it, University of Illinois where Ravi and I both went, started offering both a production graphics class and also a real time graphics class, because, the techniques that are used are quite different. I have friends with a number of architects, my brother, girlfriend Caroline, some other people. It still takes 15 hours to do renderings. I often wonder whether there's a product idea hiding in there somewhere to do a distributed render farm on demand but, it's just a thought.

Gabe: Yeah, there was a distributed, I forget the name of it now, but there was Net Render or something that we had available on the labs. Of course, it didn't run my proprietary ray tracer. [laughter]

Gabe: But yes, I enjoyed that a lot. There was some math I found fascinating, discrete math, lot of probability I took, I found really interesting. I took a lot of religious studies classes. I'm interested in sort of, not religion per se but, kind of peoples' different world views, and how those mindsets change the way they perceive the world. So I think I found that really interesting for that reason.

David: Of course, Berkley's being a hot place of activism, I wonder if you took any part in that back in the day?

Gabe: Not really. For things I believe in, I vote. I never saw the need to get out there and make a bunch of noise, not that you don't have tremendous respect for it. But, to be honest I was so busy in school with school work and just managing to deal, I was also working the entire four years that I was there. I paid my own rent and all my entertainment money, so I really didn't have time for that type of stuff.

Ravi: So did you do technology internship—internships, co-ops—at Berkley?

Gabe: Because I was working the whole time, yeah I didn't really see the need. I was working about 20 hours a week for most of the four years there doing web design and some systems integration stuff, building PC's basically. There was something I got involved in high school, a local Berkley business. My friend had been working for this guy in high school and so he brought me in there. It was really the early days of the web; it was '94 when I started there, so there were not a lot of people doing that stuff.

I remember the first day he sat us in front of the computer, he said "OK, this is a web page. It's a very simple web page." And you know we dialed up to connect to it. "So this was a web page you can view the source like this, I am going to lunch. Figure it out." [laughter]

And he came back a couple hours later and we had something going. We had centered text and some formatting and so that was a good experience.

Ravi: So that was your first insight into HTML, CSS, Javascript and the web world in general?

Gabe: Yes.

David: Javascript!?

Ravi: Oh yeah, it was '94.

Gabe: We were, I think, the first Yahoo Cool Site of the week actually that day. He got a contract doing the Dole Foods Five-A-Day nutrition campaign sites for kids and we would scan photos of cartoon characters, fruits and vegetables.

David: I remember that, and I think just to put that in perspective, I think Google started around 1998.

Gabe: Right.

David: So Yahoo came before Google so you said Yahoo was around when you got started.

Gabe: Yeah.

David: So this was in the days when Yahoo and Excite were pretty popular portals, and Alta Vista too.

Gabe: Yeah.

Alta Vista was the Google of the day. That's where you went if you wanted to get search results for everything, Yahoo if you wanted targeted, sort of curated searches.

David: So the web was underway at that point in '94 but, it wasn't very well understood and certainly HTML was a lot different than the HTML we know today, right. There were a lot more inline style tags, things like that.

Gabe: Yeah, there was no Javascript, there was no DHTML.

David: What were the browsers back then? I think it was like, Netscape 2 or so?

Gabe: Netscape 0.9, beta.

David: Then Internet Explorer wasn't even on the map, then?

Gabe: I am trying to remember. We were using Netscape, that's for sure. I don't really...

Ravi: As I remember correctly, Microsoft didn't want to really explore the web back in the day. I remember Bill Gates talking a little bit about that, saying how the web was a venture that he didn't want to foray into. And it was just a fad that was going to die out, back in the day.

Shows what the best in the business know about.

Ravi: This is 16 years ago though. I guess what '94, yeah, 18 years ago.

Gabe: Yeah, when you put it like that. [laughter]

Ravi: So you graduated from Berkeley in 99, like you said, right? Tell us what you did afterward.

Gabe: So, that same guy that was running that business was called Berkeley Integration Group where I was making web pages. He had an idea, I think, around 1997 to, we were just experimenting with Foxpro Database back-end connecting to the web, and, you know, using that to build a sort of backend persistent store and then rendering web pages on the fly based on that data; pretty standard paradigm.

Ravi: Yeah, this is something we take for granted these days, right?

David: And, Gabe, just to clarify Foxpro was a database, right?

Gabe: Yes.

David: I remember that in the early offerings of what became known as Visual Studio, I think Visual C++ 6, Foxpro came in the box?

Gabe: It probably was included. Yeah, Visual FoxPro six or seven.

David: So this was a database but it was different than Access because Access had its own persistence layer.

Gabe: I never had much experience with Access. Foxpro was quite powerful though. It had a fairly full-featured programming language that went along with it that was tied into the database.

Ravi: And was it a SQL-like database?

Gabe: No, no. Or if it was I didn't know about it.

David: So how did you query it?

Gabe: It was more cursor-based. So, you would essentially create a cursor and step through the rows. You could make queries against it. You know, it's been so long since I looked at it. It was something slightly SQL-like, I believe, for the queries but it wasn't a relational database in that sense unless you did that yourself, I believe.

But, yeah maybe there were know, it's been a long time. But it was quite powerful and it allowed us to build, well, he had an idea to build an e-commerce front end with this data base on the back-end that would allow anyone to come in, sort of define the products they want to sell, what credit cards they want to take, upload a spreadsheet of their pricing, choose a color scheme and it would generate a website for you that was your store front.

So, you know there were a few other people doing that later on but I think we were one of the first at the time. It was called FreeMerchant. The idea was, as many things were on the web then, it was going to be free. We built it and launched it in 1998. We immediately got a lot of interest. I think we had several hundred thousand subscribers by the time I graduated from school. So...

David: Several hundred thousand?

Gabe: Yes.

David: Wow. In 1998?

Ravi: And these are merchants, right?

Gabe: Now, it's unclear how many of those were active storefronts that were sign-ups and people actually built something. I don't know how many of those were actually doing business. By the time I graduated, it was humming along and there was plenty of work to be done on it.

Ravi: Oh, so you were doing this work on the side while you were working towards your bachelor's?

Gabe: Yes. So when I graduated I did a couple of interviews...nothing that really panned out.

Ravi: So you wanted to stay in the area?

Gabe: My plan was to stick with that because it was going well and this was a person I known for years, and trusted, and got along well with. I found the work to be pretty cool and it was working well. So, I stayed working there when I graduated for another year and a half or so.

In April 2000 it was bought by a company in Seattle called Shop Now,, it was called. This was a much larger company than us and I think they had, 500-600 employees or something like that. So, I started working for them in April of 2000. That was a pretty bad experience; they were not a very well run company.

David: They were in Seattle, right?

Gabe: They were in Seattle.

David: So you moved?

Gabe: No, we stayed working out of Emeryville. I got to fly back and forth to Seattle a bunch, which was fun. I had a good time up there. It's a great city. The company just wasn't run very well, like a lot of Internet companies at the time. They spent money like a drunken sailor and managed their business plans like a baby shooting around with a BB gun in the dark.

Ravi: Now, was this a common theme of companies back in the day during the dotcom boom-bust between 1998-2001? I was just wondering what your viewpoint was on the area, you know, what was happening here during that time?

Gabe: Well, it was an amazing time. There was just so much going on. There was a lot of excess. A lot of things, in retrospect, are pretty...I don't know business practices that seem amateurish to me now, and business ideas that seem pointless and amateurish.

I think there were sort of two sides to it. I mean from my perspective it was great; there was tons of jobs of available, companies could get money very, very easily from VCs, the stock market was skyrocketing, and people were making money hand over fist. This company was purchased, I got a bunch of stock options and overnight I suddenly had a bunch of money, and didn't really understand what that meant. I was young kid, I was 21 when I graduated. They quickly promoted to director, which is kind of funny for a 21-year-old fresh graduate.

Ravi: It makes a nice business card.

Gabe: That's the way they ran their company. I think the other side to it is that I think a lot of people were displaced by that. The Bay Area changed. There was a lot more traffic, a lot more people with money, rents and housing costs shot up.

David: You say traffic, you mean actual cars?

Gabe: Actual cars, yes.

David: I see.

Gabe: Yeah, it was pretty crazy in 2000 and it was noticeable, so, I will get to that but, actually, I quit the company in February 2001 because I was pretty miserable there. I could tell that it was in a death spiral, and they weren't running it well. Our product was doing great but it was one of the only ones in the company. They sort of bought every company they could get their hands on.

Ravi: So the e-commerce platform, you continued to work in that when you were still acquired?

Gabe: Yes, I ended up running that business unit as director. I started to see the writing on the wall. I don't know if you've ever been in that situation, in a sort of sinking ship situation. Things get pretty messy. People start not showing up to work and just coming in to collect a paycheck occasionally. That's not where I wanted to be.

David: I heard that's how it was with HP with Palm after the acquisition. It's a little more recent so can't say too much, but there was absenteeism, no morale and people really wondering why they're still coming to work.

Gabe: Yeah.

David: It sucks.

Gabe: It does. In a way in was fun because it was like a big party, but, I'm an engineer and I like building things. I don't want to build something that's going to go nowhere and get shut down at the whim of whatever the executive dreams are. So, I quit. The stock market crashed. All the money I made [making bursting sound], I did keep some of it. Enough to fund some word travel.

I actually left the country and went traveling around the world for 10 months with a buddy of mine, sort of got back to a lot of things that were important to me besides computers, like adventure, sunshine, meeting people, swimming in the ocean.

Ravi: It's always good to have, I find, some activity to indulge in besides technology. It just opens up new viewpoints. It opens up a new way you look at the world, I guess.

Gabe: Absolutely. Absolutely. As engineers, as nerds, we tend to focus very intently on our jobs and our training but I think a well-rounded person needs to have other interests too.

Ravi: So, you went traveling and then came back to the Bay Area, right? What did you do after that?

Gabe: So, when I came back it was December 2001. There was a noticeable difference in what was going on with the industry in the area. There was already less traffic.

David: Gabe, that's interesting because most people the end of the dotcom bubble around 2001 probably, towards the end. So that's when the crash finally happened but you said it was noticeable before then, like even in 2000 you knew?

Gabe: Yeah, my particular company may have been more feeble than others and may have been one of the first to perish. As I recall, and I haven't thought about this in a while, the crash was going on, really starting in mid-2000 all the way through 2001. I guess it didn't happen fast enough for me to realize and sell all my stock in time but, yeah, there was a process.

David: Had your company IPOed at that point?

Gabe: They were public when they bought us.

Ravi: So you could have sold your stock?

Gabe: Yeah, I didn't even have a lockout period so from day one I could've sold my stock. I didn't because I believed in the product, and I believed in the company. The psychology of the stock market is kind of interesting; it's hard to sell.

Ravi: Actually that brings me to a question. You said you knew the owner of Free Merchant. I guess that brings the question, was it always the plan to get acquired by another company? Or did you guys just want to go IPO and see where it takes you from there?

Gabe: We talked about it at the time, and kind of all agreed that an acquisition would be a very attractive situation because, you know, even then it was a long road to IPO. We were still a small company. We were, I think, 10 or 12 people.

David: When you IPOed?

Gabe: No, no, no, when they acquired us. We knew it would be some time before we IPOed, if that was even possible. We also didn't have a lot of revenue. As I said, it was free. So, I don't think that would have been really possible. Who knows, in the long run? We were very popular, we won some awards, we had a lot of interesting traffic, a lot of people doing business towards the end. We had talks with some big companies about acquiring us and we settled, I guess, erroneously on this one. Yeah, you know, I try not to get bummed out about it. I learned a lot, I had a great experience, and, you know, it's only money.

Ravi: Who are the other companies dealing with the e-commerce platforms back in the day? As I think of it now, the e-commerce platforms du jour, I think of big companies, Amazon or Etsy. What were other companies back then?

Gabe: So I think this was before Amazon Marketplace was really getting rolling. eBay, obviously. Although they had a different take on it but they were in that space. Our chief competitors, there was one called "Big-something".

David: Big Commerce?

Gabe: The CEO's name was Andrew Wheeler or Wile or something, you could probably look it up. They were sort of our nemesis. I remember their CEO had a bio up on their website about how he was an avocado farmer before getting into this and that really pissed my boss off.

David: What was technically difficult back then about building an e-commerce service? I mean, I work at software as a service start-up today. It's pretty remarkable how easy it is to do a lot of things today. Accepting payments is definitely something I'm thinking about. There are services today where you can fill out a form and you can start collecting payments using simple JSON POSTs in like 35 or 40 minutes. It's pretty incredible.

Gabe: Right, right. There were things like that back then, for credit card authorization. There was a merchant service provider, a company that we partnered with, that would extend their services to our members for a fee and they would actually pay them directly, I believe. It was an API, you would make an HTTP request.

There was no JSON back then. I don't remember the exact format of the API but, it was a GET request you would make, maybe a POST as well. I think scale was, and probably still is, the biggest challenge.

David: What web server did you use? Apache?

Gabe: Apache.

David: OK, but there was no, like, EC2 or any of the cloud hosting systems, so you guys physically had machines on premise.

Gabe: We had bank of white box PCs that we built.

David: That's amazing. Did you have racks or were they just sitting on the floor?

Gabe: No, they were sitting on the floor.

David: No kidding?

Gabe: Yeah.

David: So, you had your own Internet connection, and your own PCs, and you had to buy all of them and...

Gabe: And we had a floor standing fan pointed at them.

David: OK, wow. That's awesome. So, floor standing fan. Like you said you had to buy all the equipment. What operating system was it? Was it some kind of Windows?

Gabe: It was Windows. You know, we kind of stumbled into using FoxPro for this. I don't think, I doubt anybody else was building with that to do this type of thing. It was the early days of Java so, you know, we weren't really hip to all of that yet.

David: OK. So you were using Java?

Gabe: No, we were using FoxPro and then a CGI bridge to the FoxPro database.

David: CGI, back in the day.

Gabe: It's actually a fast CGI implementation so there were persistently-running processes that would kind of bridge between Apache and the backend FoxPro instance. Otherwise it's pretty similar to what people do today with something like JSP. I mean the FoxPro generated HTML. There wasn't a nice clean separation of interface, and business logic and anything like that.

For the 3.0 version which actually, I ended up quitting before it ever saw the light of day and then the company went under, that we started re-architecting the entire thing with a Java backend, MVC design, very ambitious future-set, huge beautiful database schema with all sorts of powerful, flexible pricing matrix...

Ravi: Was this for scale? What was the need for re-architecting that?

Gabe: More features and scales. I mean by the time, I am trying to remember how many, it was definitely hundreds of thousands of stores running simultaneously by the end there and the scale was an issue. We were, even just doing DNS for everybody, it started to be challenging if I recall. We were also running mail for people which is...

David: This is 2001?

Gabe: Yeah, I think we had some open source mail program, qmail I believe, that we had to modify the source code in order to get it to scale to where we needed it to. We had a whole bank of servers just devoted to generating images for people's menus on the sides of the web pages that would be generated. There were different templates you could do but, on the side there was a little menu where you could go to, About Us, the Products, various sections of the site. And those, to make it look pretty, were JPEGs of the text, and you could choose your font and enter the text and it would generate. So we had a whole bank of servers with a little program I wrote in C++ that used FreeType to generate these images.

David: I think beyond the languages changing and the hardware changing and some of the other stuff, I think that today the process of building software is a lot better understood, than it was then as well, right?

Gabe: Right.

David: Did you have revision control that time that you used?

Gabe: Nope.

David: None, and then how did you track your open issues and all the work that you had to do? Was there any kind of system for that?

Gabe: Yes, I had a yellow legal pad. [laughter]

David: A yellow legal pad?

Gabe: Yes.

David: So you didn't really have like strong estimation or any of that stuff.

Gabe: No. Towards the end once we were working for Shop Now, what became Network Commerce, we started to use CVS, we started to use Microsoft Project to plan some of the stuff. But really, we didn't have any idea what we were doing.

David: No XP or Agile or any of the modern software development methodologies.

Gabe: No.

David: None, huh?

Gabe: It was long before that, yeah. We didn't even have a QA department.

David: So certainly no tests, automated testing any of that, huh?

Gabe: Nope. No unit tests. I mean it's amazing we got anything done when I think about it now, because I'm a huge believer in all of that stuff.

Ravi: You came back from travelling after like you said, and then you continued to work in the Bay Area. So at this point you left Network Commerce, so where did you go on from there?

Gabe: When I got back, I actually worked at a summer camp that summer. I did some consulting work. I did a little more database work with FoxPro. I did some freelance work for family and friends for about six months.

Then I got back together with the same guy that we started Free Merchant with. He and I built a site called, still around selling fiber optics equipment. He handled the business end of things, I did all of the technology infrastructure, the service, built the website. We built it using osCommerce, which is...I think it's still around, it's e-commerce.

David: Yes, it's still very popular. It's a PHP e-commerce system.

Gabe: That's right. So, you know, it was Linux, Apache, SQL, PHP, pretty standard. I did that for a few years. We were both owners of the company so I was hopeful that it would turn into something big that would be able to fund my other projects.

We did fine but, eventually there was really no more work for me to do on the programming end things, and it was answering the phone, selling fiber optics equipment. I think I probably should have checked out maybe a year sooner than I did but, I saw it through.

I had a good time and it did actually allow me to spend some time working on a side project. So I wrote a plugin for Winamp on my own. I'm always looking for ways to avoid getting off the couch, so that's a big drive for me for writing software. So I wrote a plugin for Winamp that would let you control it remotely over a LAN. AJAX was just...

Ravi: Yeah, it was just starting.

Gabe: ...and so I thought I was fascinating. So it was Ajax frontend that basically duplicates the Winamp interface in a browser and lets you control it. Looks just like the Winamp modern skin but, it has sliders and all that for the volume. And a playlist you can drag stuff around in.

Then I released that on the Winamp site. It got some nice interest. Eventually I extended it so it could link up to other instances running elsewhere in the network and you can control them remotely, or stream music from them and so forth.

That was noticed by a guy in the Valley who had a startup, actually had a couple of startups. One of his was a Voice-over-IP company. He brought me in. I guess he noticed that, he thought I was cool, invited me in for an interview and made me a great offer. He was working on Voice-over-IP server infrastructure in a soft-phone client, all in C++. It sounded much more technically challenging than what I was doing with the fiber optics stuff, so I decided to go join them; I like the startup environment, it's fast paced, there's a lot of upside and a lot of camaraderie. So I wanted to get back to that.

I did that for about a year and a half, learned a tremendous amount, worked with some really bright people there.

Ravi: So this was a Voice over IP client so that's something similar to what Google Talk is now?

Gabe: Yeah, we were aiming at the time to be like Skype but, more aimed at the enterprise, so, more manageable centrally. There was a provisioning server that would give out policies that would govern things about the soft-phone so it could be centrally managed. There was some really cool proprietary NAT traversal technology that we did in there. So there was a server end, it would bounce them back up the server to discover the network topology was behind. You may be a mobile worker in a hotel somewhere behind God knows what kind of NAT system.

David: Yeah, it is still tough even today.

Gabe: Yeah, so there's things like STUN...

David: STUN and TAP, I think?

Gabe: Yeah. What we had was a proprietary solution very similar to how STUN works. We'd attempt to discover the type of router you're behind and then traverse the NAT, even going so far, in the most restrictive cases, as to tunnel the RTP traffic, which is UDP, inside an HTTP connection, so it would look like ordinary HTTP for firewalls.

David: Are you familiar with Web Sockets at all?

Gabe: Nope.

David: Interesting. It's kind of similar actually, it's a binary protocol over HTTP.

Gabe: OK.

David: It's starting to get popular.

Gabe: Yeah, yeah. We did something like that I suppose. It was cool. I learned a whole bunch, it got me back into the networking. For that Winamp plugin I'd written my own web server which is embedded inside Winamp, that's how the interface works, so I was already interested in server programming and networking, and this allowed me to take it to the next level.

Ravi: It's interesting because back in the day you had to write to a web server to actually get anything done, but today it's something you take for granted. I had this web server, or I had this deployment, and you just push to it, you know?

Gabe: There were probably better options. I wrote this in 2005, so it wasn't that long ago, but yeah, I kind of wanted to. [laughter]

David: You have that prerogative on your own projects.

Gabe: That's right.

Ravi: That's kind of interesting that you moved from e-commerce to the networking world.

Gabe:Yeah, I was ready to get out of the web world. I love programming, and for me C++ programming is the ultimate, it's such an expressive language, it's such a powerful language, it's performant, you can write real things like servers that perform well and can be deployed in production situations, and that was sexy to me.

The web world was great, there's a lot of interesting work going on there, I got a tremendous amount of respect for stuff people are doing, especially with Web 2.0. I just wanted to get into something a little more low-level, a little closer to the machine.

David: Pointers. [laughter]

Gabe: As I always tell people, if you're writing C++ in a modern way, you really shouldn't be using pointers.

Ravi: That's what I told you as well, these days the mantra is that you use smart pointers instead of actually just raw naked pointers.

David: I don't like C++ code, I haven't for a couple years. [laughter]

Ravi: So that's why you get bored when I talk about C++? [laughter]

David: Yeah, yeah.

Gabe: In my new position at Riverbed I'm back to the kernel and C programming.

Ravi: Yeah, you worked at NuVoiz, and how'd you move up to Riverbed?

Gabe: Like a lot of start-ups, that one didn't work out. Eventually they ran out of money. You know, my boss...

David: After Fiber it was called Nuvoiz, you said?

Gabe: Nuvoiz, yes.

Gabe: I didn't come up with the name [laughter]. We had some cool products. We had this mobility solution where you could move seamlessly between WiFi and UMTS, or some GSM networks.

David: What was the business model? How were they going to make money, for Nuvoiz?

Gabe: Licensing that mobility stuff to handset providers, which as it turns out are one of the most difficult groups of people on the planet to do business with.

David: Handset providers like Nokia and those kind of guys?

Gabe: Yeah, and carriers as well. They're very protective of their business, understandably so. We found it hard to make inroads with them. The SoftPhone client, while it was cool, I think we probably rushed to try to start selling it. We worked on it for a month or two, then went to the DEMO conference down in Palm Springs, and showed it off when it was not quite done at the time.

David: DEMO is kind of interesting too. It's very expensive, from what I remember. It'd like thousands of dollars to go to DEMO, right?

Gabe: Well, we got a lot of good press, a lot of good attention from it. I think the timing was just wrong. It was early in the development cycle. We went there. I actually think we succeeded in showing off something pretty cool. We traversed their router. We made a successful call back to Mountain View. Going over that wireless network with thousands of conference-goers was not an easy task.

David: No, it's really tough actually.

Gabe: We had a successful call. Shortly after that, the funding ran out and, I guess, the executives weren't able to secure more. I stayed on for a little while. My boss was really accommodating and let me stick around while I was looking...

Ravi: And this was in Mountain View, you said, right?

Gabe: Yeah. I went traveling in Vietnam for a few weeks. Then, came back and started at Riverbed. I looked around before going away and interviewed at a few different places...

Ravi: This must have been when Riverbed was just starting out, right?

Gabe: Riverbed was already public. They were about 300 employees, at the time, which was larger than I was used to. Network Commerce was large, but other than that I had been in small situations.

David: 20 to 30 people tops? And like 10 engineers, maybe? Tops.

Gabe: Right. Tops. Riverbed was 300 people with probably 50 engineers at the time.

David: Ravi and I were talking about this on the way over here, just about the perception of size. You have the Microsofts of the world with like 100,000 people.

Ravi: I always consider Riverbed a small company because I used to work at Microsoft which is obviously 100,000 people.

David: Riverbed is post-IPO and they have hundreds of engineers. That's big.

Gabe: We're now over 1600 employees which, to me, is just a mind-bogglingly large number.

David: Me, too.

Gabe: And of course, it's not, when you compare to some of these companies out there. That's why I've resisted going to Google, not that they've extended me an offer, but, I've resisted interviewing there because it just seems too large.

David: It's huge.

Gabe: Mind numbingly large.

David: So, what does Riverbed do?

Gabe: Riverbed makes a suite of products that are aimed at increasing performance on the network; that's sort of, the theme.

David: Performance on the network like, between networks, or between the computers on the network, or what kind of performance?

Gabe: Their flagship product is something called the Steelhead Appliance. It's a WAN optimizer. It's a device, you install them in pairs, one on either end of a network connection, and it speeds up communication between the two points dramatically. It makes the WAN feel like the LAN, essentially.

David: Speeds up like it cuts the latency down, what does it do?

Gabe: There are two problems, generally speaking, on the network: bandwidth constraints, and latency. Riverbed aims to solve both of those problems in different ways. The box cuts down on the amount of traffic that going over the link for a given task, which helps with bandwidth constrains. Then, also does a bunch of things to mask the latency, more protocol-specific things.

Ravi: So Steelhead aims to solve the problem on all layers of the OSI seven-layer model.

Gabe: Yes.

Ravi: OK. So it doesn't really just focus on TCP or IP or any of those, right? Even though it tries to see if there's any application protocol-specific optimization that it can do.

Gabe: That's right. You have some protocols out there that are really chatty, we love those at Riverbed because we can get in there and mess around with the way they do things to do it more efficiently.

David: What are some of the really chatty ones? Like CIFS, maybe?

Gabe: CIFS has been a great one for us.

David: Common Internet File System, it's the file system behind Windows, right, or the protocol behind Windows.

Gabe: Yeah.

David: The file and printer sharing.

Gabe: Mm-hmm. We're able to speed that up dramatically. Actually, how I found out about Riverbed, a buddy of mine was working there in the sales department and he showed me a demo. I was at his house out in New York one time and he's like, "You've got to check this out, I work in this, Riverbed, and look what we do." And he showed me a demo where he copied a file across the network without the Steelhead device and it took five or six minutes to copy the file, and then switched over the network to the Steelheads and it was like, two seconds. And I said, I've got to get involved in that. That's amazing.

David: So these protocols, why don't they just optimize the protocols themselves? Are they tuned for a LAN situation, not really meant to work over WANs? Why aren't the protocols just faster in themselves?

Gabe: Yes, that's a good question. I think you're probably right, a lot of these were designed with the LAN in mind so, you know, the model a long time ago was, you had a server in the branch office. There's sort of been a move in a recent years to try to consolidate everything back into the data center. That's really good for companies if they can do that; they save on bandwidth costs, they save on maintenance costs. So people are trying to do that, but then everything slows down when you're going over the WAN. Riverbed saw this problem early on, they started in 2003...

Ravi:Riverbed, as I recollect, is a result of a Ph.D. thesis of our CTO, Steven McCanne. He actually came up with this idea of improving performance at multiple layers of the OSI model.

David: So are they kind of opportunistic about these optimizations, like, do they look at various user scenarios and then try to figure how to make them faster? How do you prioritize the work?

Gabe: Yes, so they did do a lot of, you know, talking to customers, figuring out what the pain points are for people and try to solve those problems. There's a lot of research that our technical marketing department does on what would be good for the product out there. I think there's a lot of bad protocols out there, is what it comes down to.

David: Bad in terms of, well, they're not well designed for a WAN?

Gabe: Yeah. They're just not efficient. And some of that is because people didn't see them being used on the WAN, some of it's probably just because people don't design things perfectly. I mean, as an engineer I'm sure you know that. It's just, sometimes you're wrong.

David: I spent a lot of time in graduate school analyzing DNS, the protocol. I think sometimes things become victims of their own success. DNS, for instance, is like a 30, 35-year-old protocol. It has a lot of the wrong trade-offs for today's network. It's very space-conscious, but it's very hard to parse, actually.

Gabe: You know, lucky for us that's the situation. Microsoft has made some improvements. SMB2 is better.

David: It supports pipelining if I remember correctly, right? SMB2?

Gabe: I don't know.

David: Or some form of that where you could batch requests together, I guess?

Gabe: That's very possible, yeah. I don't work on the CIFS team so I'm not too familiar with the protocol.

David: I see.

Ravi: So what's team you work on? What team did you start out on Riverbed?

Gabe: I joined in September...

Ravi: ...and I know you switched teams recently.

Gabe: That's right. I started in September 2007, working on the Steelhead Mobile teams. It was a version of that Steelhead appliance I mentioned, that runs on a laptop for mobile workers to get the benefit of that optimization. They can be out traveling with their laptop, and link up with the Steelhead appliance in the data center, and get those high speeds.

Ravi: So these Steelhead devices that you talked about earlier, these were Linux boxes to begin with, right, that your people deployed?

Gabe: Yes.

Ravi: And so now instead you have the Steelhead Mobile, which is just an executable, an application running on your Windows or your Mac laptop?

Gabe: That's right, yes. So there's a GUI component, a service component, and then an optimization component. That's just an executable that the traffic passes through, and then there's a driver component that does the actual interception of the network traffic.

And that was a great experience. I got to work on sort of all levels of the stack, from the driver up to the UI. There's also a management appliance that goes along with that, that's a Linux box that provisions policies to sort of, govern the optimization that those clients are doing, and gathers statistics and gives you nice reports about them and so forth.

So yeah, it was sort of a very broad range of responsibilities in that group and I enjoyed it. I learned a lot. And in the last week or so I've moved over to the QoS team, so I'll be focusing on the QoS efforts on the Steelhead appliance itself.

David: Quality of Service, right?

Gabe: That's right.

Ravi: Can you describe to us why something like QOS is so important that it requires its own team to work on? Why is it not just part of Steelhead? And I'm saying this because I've seen QoS in Cisco, and Juniper networks and in other network-oriented companies as well.

Gabe: Yeah, so it's actually a pretty deep subject. QoS, I guess, in a very general sense, is about prioritizing flows of traffic on the network so that flows that are more interactive, than require lower latency for the end user to have a good experience, that those are prioritized over flows where it doesn't really matter.

Ravi: So it's more like media traffic, or Skype, or something; lags are definitely noticeable.

Gabe: That's right. So the sort of canonical example would be something like VoIP, where, you know, latency will kill you. You won't have a good time if there's 500 milliseconds delay online...As opposed to FTP where it's a large bulk transfer, you want high bandwidth, you want to get the file over there quickly, but delay doesn't really bother you.

David: Yeah, or you're willing to trade off a little delay in that connection for the quality of an interactive session.

Gabe: That's right. So it turns out that I didn't know much about this before joining the group, but it turns out it's actually a pretty complex place to be. We are sort of unique in that we're dealing with flows of optimized traffic, and un-optimized traffic, and we're trying to do QoS on both of those at the same time.

David: I see.

Gabe: We also have a solution for inbound QoS, which as far as I know nobody else does. I may be wrong about that. As engineers at Riverbed we're not really allowed to dig deeply into competitors' products from a technical perspective.

David: Patents?

Gabe: Because we don't want to step on patents. Exactly.

Ravi: Something I've learned in my travels as well, is that on my first day at Microsoft, the lawyers told us to just not look up patents of other competing, of other companies in general just in case, you know. You don't want to pick up something, you know, that you might know already but people might think it's from another company.

Gabe: You might even do that unknowingly, right? It's just a good idea that lodges itself in your brain.

Ravi: So going back to the core, or bread and butter of what Riverbed does, which is essentially network optimization, "turning your WAN into a LAN" kind of environment.

Gabe: Mm-hmm.

Ravi: What are the other companies in general that work on this problem and how do you see Riverbed differentiating itself from them? And, now a lot of companies don't deal with data centers as much as putting all their data into the cloud, right? How does Riverbed deal with that kind of problem?

Gabe: Right. We have a fair number of competitors out there. Big ones would be Cisco, F5...

David: ByteMobile, at all?

Gabe: I'm not too familiar with them. As I said, I don't look at the competitors to closely. But yeah, I do...

David: Silverpeak, I've heard of...

Gabe: Silverpeak, Ipanema, there was a company called Expand. They're gone now and we bought all their IP. Cisco and F5, I believe, are the big ones that we run into, and Bluecoat, I'm sorry, are the big ones we run into in competitive situations. And we're doing pretty well. We're definitely number one in the space for WAN optimization, and taking on somebody like Cisco is no joke.

Ravi: They're a networking giant.

Gabe: They're a major force with a lot of resources and a lot of talent. As far as what differentiates us, again I'm not in the marketing department so I don't know that I could rattle that off too easily. But I know that we do have a really good solution; from what I've heard, talking to customers who have been in these competitive bake-off situations, you know, ours is just much easier to use, much easier to configure, scales better than a lot of the competitors, and offers a lot of bells and whistles that are sort of missing elsewhere.

And I think we do have a pretty nice solution especially with things like QoS, you know, that people have been deploying separately, you can get all the stuff in one box now. Which is what IT guys want to hear, right? They can consolidate, that's the name of the game. And the second part of your question...

Ravi: What do you do with the cloud?

Gabe: The cloud. Riverbed does have a couple of cloud solutions in the works. We have a cloud Steelhead. It's a virtual Steelhead, essentially it's a Steelhead that runs on a virtual machine in the cloud. We have a partnership with Akamai that is in the works. We're going to be optimizing specifically, things that traverse the Akamai network, with some hooks that helping us out with, to really tailor the solution to that.

David: Akamai's a pretty big deal. They're a big CDN so they help push content closer to the edge of the network. So if you're looking at web pages, videos...

Ravi: If you go to, for example, it's actually Akamai that loads up the page for you and not CNN [inaudible 00:53:27] . So Akamai's actually a big deal.

David: They're old, too, they started in the '90s, I think.

Ravi: Yes, yes.

David: A couple of guys from MIT, did a lot of math, I think.

Gabe: Mm-hmm. Yeah, great company. We're also expanding into the storage field. So we'd would like to do a lot of the same things for network communication, we'd like to do that for the storage realm as well.

Ravi: So you want to speed up access to your storage device, faster.

Gabe: Yes. We want to de-duplicate data, we want to speed up access to it, we want to allow people to consolidate their storage in the data center just like they do their other servers.

Ravi: So for the purposes of our listeners, could you explain what de-duplication is?

Gabe: It's essentially taking out all of the redundant data in a data stream. So, similar to how compression works, most data is fairly redundant, especially something like email traffic which is all ASCII, the same words over and over again, why send them all, when it's mostly repeating itself?

David:Do you do this in custom hardware, or is it just on like, x86 CPUs?

Gabe:They're 32- and 64-bit Intel machines, as far as I know. I'm not on the platforms team; I've actually never looked inside one of the boxes.

For instance, you have one of these devices on either end of the network connection, and imagine data is traveling across them. As data hits the first device it's scanning it and chopping it up into patterns of bytes. The first time it sees a particular pattern, it assigns it an ID, sends the ID across with the pattern to the other side. The other side remembers that. The next time it sees the same pattern it just sends the ID. That's sort of in a nutshell how de-duplication works.

Ravi: So instead of sending the data, it's actually sending the pointers.

Gabe: A reference to the data. Exactly. And then it's reconstructed on the other side, by the box on the other side and you give it to the client.

Ravi: Awesome. So you work currently on the QoS team, which improves the performance of the Steelhead boxes, essentially, on the network.

Gabe: That's right. It allows you to manage the aggregate flow of traffic that you have through this device, to give everybody a better experience. So it really lets you dial in how the priorities work, what flows take precedence over others, and it's a very powerful feature that customers really want.

Ravi: Where do you see Riverbed going in five, ten years from now, what new arenas?

Gabe: Well, storage, as I mentioned, is obviously a big one, and cloud. Those are the two big pushes for us right now. Beyond that, I'm not sure there's much more I'm really allowed to talk about.

Ravi: [laughter] Of course. A couple of last things. You've been an engineer in the Bay area for so many years. Do you have any tips or advice for people coming to the Bay area, or people who are coming as engineers to new companies? You're working in start-up systems, you have start-up experience as well.

Gabe: Congratulations. You're in the best field that you could possibly be in, if it's something you're passionate about. That's what I always tell people. It's not for everybody, but it's an amazing field if you really like what you're doing. I mean, we get paid to sit around and work on puzzles all day, and we get to build new things that people use, and affect people's lives.

So you've already succeeded in that sense. But you should look at your career, I think, as your own personal journey, in a sense. Riverbed is, I've never been anywhere as long as I've been at Riverbed. I've moved around and I've seen a lot of different aspects of the industry and I think that everybody should always be looking for the next thing that's going to make them happy if things start to slow down and get boring. Because it's a very fertile world out there in technology and there's tons of opportunity here. It's the center the universe for this stuff, the Bay Area.

David: Yeah, for sure.

Gabe: I think it's a good place to be.

Ravi: That's all I had for today. Did you have anything?

David: No, that's all. Thank you very much.

Ravi: Thank you very much, Gabe. Appreciate it.

Gabe: Sure.

David: Have a nice night.

Gabe: Thank you.