The Lost Interview: Marc Andreessen
Following a long standing tradition, the IEEE has "lost" another interview. Late night on a dark-net IRC channel, I saw this text flash by, followed by the message, "please send to Wikileaks." In good conscience, I realized I must share it with the world and posted it here.
Interviewer: Marc, your work is amazing, it needs no recognition! You built Mosaic, had several successful companies, started your own venture firm. How does world-changing feel?
Andreessen: Oh....I changed the world alright. Now I'm feeling a little guilty.
Interviewer: Guilty? You shouldn't feel that one-percenter guilt. You've done good, you helped incorporate CSS into the browser!
Andreessen: It's been weighing on me. Remember the 90s? People were dropping out of college to make six-digits knowing nothing but HTML.
Interviewer: Of course, I was an HTML 'developer.' The world wanted on the Information Super Highway.
Andreessen: It didn't last long. As soon as artists found they could do a table layout themselves, they didn't need HTML developers anymore.
Interviewer: I quit and became a journalist.
Andreessen: I took inspiration from Bjarne Stroustrup and looked for a way to complicate things. What could we add to Netscape? I found CSS.
Interviewer: I thought CSS simplified things.
Andreessen: Oh yes, in theory. In practice....practice is what matters. Why do some browsers include padding in the total width and height of a div, but other browsers not? It's designed to keep art school grads from figuring it out.
Interviewer: But weren't those problems a result of compromises made between browser vendors? It wasn't originally intended that way.
Andreessen: Wasn't it? Think of centering things. The old way?
<center>
The new way?
.center{margin-left:auto;
margin-right:auto;
width:600px;}
The recent CSS box-sizing feature is an admission after all these years that IE got the padding right. We just wanted people to do math.
Interviewer: ok, but what about separation of content from presentation? What about the Cascading in CSS?
Andreessen: Oh yes, the inheritance and principles of CSS are a thing of beauty, a real work of art. Bert Bos did incredible work, he's a great designer. Look at the linear-gradient, how flexibly all that information fits into a small space:
linear-gradient(
[ <angle> | to <side-or-corner> ,]? <color-stop> [, <color-stop>]+ )
\---------------------------------/ \----------------------------/
Definition of the gradient line List of color stops
where <side-or-corner> = [left | right] || [top | bottom]
and <color-stop> = <color> [ <percentage> | <length> ]?
That's the brilliance of the plan, if it were all ugly, no one would use it. People were deceived by the excellence of the syntax, and didn't realize it fails at its most basic task: being able to place things where you want them. Not that it mattered, when you're an HTML dev making $100,000, you don't worry about the details.
Interviewer: You integrated CSS in Netscape to make it harder, so programmers would get paid more?
Andreessen:That's right.
Interviewer: Didn't the CSS
Zen guys show the good side of CSS?
Andreessen:CSS Zen is some of the best design on the web. I go there to get ideas; but even they had troubles: try to find a good example of vertical centering. A lot of their designs look bad on mobile. When they really ran into trouble, they threw some text into an image or used inflexible pixel dimensions.
Interviewer: Doesn't the new CSS Flex model fix vertical centering?
Andreessen: It's a bandaid. It doesn't fix the real problem:
as long as putting one element inside another element has a visual meaning, it will be impossible to separate presentation from the HTML. Tim Berners Lee knew it at the time, too, but he wanted to get the SGML guys on board.
You want to truly separate content from presentation? We've known how to do it for fifty years. I'll tell you how to do it, it's simple as pie: set all your content to constant variables, in a content file, and build the layout separately in a layout file. For example:
$ARTICLE = <big piece of text>
$EXAMPLEIMAGE = <url to image>
$NAVLINKS = <dest1/name1> <dest2/name2> <dest3/name3>
$INTERVIEWQUESTION = Why are you here?
$INTERVIEWANSWER = To seek the Holy Grail.
You can easily make a dozen different layouts with that content. As a bonus, i18n and translations are easy. You want a semantic web? Build a careful collection of well-named standard variables. But of course we stayed as far away from this solution as possible.
Speaking of Flex, isn't it a hot mess? We spent all this time telling people not to use tables, and here they are, back again, more complex than ever, and the html ordering matters visually. We're such hypocrites! But not really, because our goal was always to make things as complicated as possible. And now with Angular.js and React.js we have yet another layer of complexity on top of that! Try getting a semantic web when everything is built in Javascript! It's getting so complex I'm feeling guilty.
Interviewer: I don't think I can print this interview. Why are you admitting it now?
Andreessen: The complexity of the web is getting out of hand. We need to do something to simplify, it's impossible to know the basics of every framework out there. Besides, after Netscape, I'm a one-percenter, I don't need money anymore.