books chapter sixteen
We’re out of coders, but wait, there’s one more! Seibel interviewed Hal Abelson for his magazine. Hal is the coauthor of Structure and Interpretation of Computer Programs and developed the MIT course 6.001. Hal started off programming what may have been an IBM 709. It had paper tape. He went to MIT for a PhD in math, and two weeks after he arrived he went to the president’s office, occupied by the Students for a Democratic Society, and asked one of the people on the floor where to get a job. They recommended the Artificial Intelligence Laboratory.
Seibel and Hal talk a lot about learning to program. Hal used Scheme because it’s so minimal, and he wants his students to think about ideas like procedures and developing a language, without wasting any time learning the mechanics of if and do. Eventually 6.001 with Scheme was replaced with 6.01 with Python and everybody on the internet lost their minds, but Hal explains they aren’t really the same course, so you shouldn’t compare them like that.
It’s difficult to teach programming these days because more people have previous experience, but it’s never the kind of abstract exposure to concepts. I have mixed thoughts on this. On one hand, teaching higher order functions from the beginning seems like a useful lesson in the power of abstraction, etc. But even a basic imperative program shows that computers aren’t magic. They do what you tell them to. He touches on this later.
People have been arguing about how much math you need to know for many years.
Seibel: It’s functional, but these days, to a lot of people, functional includes the notions of static typing and monads and all this category theory stuff. Abelson: Well, I don’t call that functional. I call that statically typed.
Seibel posits that novelists read other novels, but programmers don’t read other programs. Hal agrees, to an extent, because there’s too much crud in the program, which is contrary to the SICP advice that programs are meant to be read. But then reality. Although maybe there’s still a part of a program, the interesting part, that you can read.
What is computer science? What’s it about? Traditionally, it comes from either the math department or the EE department, but Hal likes what happened at Cornell, where the computer science department is part of the information/library science departments. We’ve banged out the fundamentals of how it works, so now it’s time to focus on what software is good for, which is organizing and communicating information.
Over at Wellesley, they taught a class called CS0, which is a very simple introduction to programming, for nonprogrammers. One of the class projects was to make a poll. “Vote for your favorite singer.” They did that, and then they showed the class the results. And then they showed the class who voted for who. It could have been anonymous, but they didn’t make it so. The class was pretty surprised by this, which I think was the point. There’s nothing magic though, and after you build and see a system for yourself, you understand how similar systems might act in the outside world.
Previously, Knuth claimed that only two percent of the population is wired the right way to be programmers. Hal disputes this. “That same logic would lead you to say that one percent of the US’s population is wired to understand Mandarin. The reasoning there is equivalent.” I’m not sure if the reasoning is equivalent. Human languages are one thing, but logic is perhaps different. If I can learn French, anybody can learn French seems reasonable. But if I can learn group theory, anybody can learn group theory sounds kind of different. So funny enough, the very next paragraph is about French and learning math, and if we taught everyone math everyone would know math.
I’m really hung up on this convergence of computing and information science. I think you really need people who understand what kinds of programs are worthwhile making. Cornell has this nice phrase where they talk about programming inside the box and programming outside the box. And inside the box is where you focus on how compilers work and everything—how the stuff is put together—the classical stuff. And programming outside the box is, how do you make this stuff, and what’s its impact on the people using it, and what’s its impact on the world. My own hope for computer science is that we pay attention to what’s going on outside the box. I think that’s what needs to be really part of the education of people doing just any kind of computing.
Bob Davis founded Lycos. Actually, Michael Mauldin, aka Fuzzy, had a research project at CMU, and the university partnered with a VC firm, CMGI, to create a company, and Bob had a friend there, so they hired him to be CEO. Mostly he talks about how fast they had to move, and how hard everything was, and they never had enough money or staff. Apparently Lycos was the most popular destination on the web in 1999. Honestly, I’ve never used Lycos or considered them anything but an also ran. But otherwise, not a very exciting interview.
Ron Gruner founded Alliant Computer Systems and then Shareholder.com. He started working at Data General. He rose to become the manager of the eventually failed Fountainhead project, which lost to the Eagle Team. The story is told in the book, The Soul of a New Machine. Ron left Data General to found a company that was going to make parallel processing machines for customers who had outgrown half million dollar VAX machines.
They spent three years building it. The first model worked, though, and they quickly started making money selling them. For a while, then things slowed down. He makes an interesting point that contradicts conventional wisdom. You’d guess that if somebody spent a ton of money on a machine, they’d be locked in and have to buy the next model. But in the high performance field they were targeting, the only thing that mattered was megaflops per dollar. Their customers were willing to rewrite or port software (or I guess just use the vendor provided linear algebra library, etc.), so if a competitor came along with better benchmark numbers, they’d lose business. And then workstations came along that were fast enough for basic engineering work and the mainframe/mini market disappeared. Alliant quickly became, as the VCs say, the living dead. Making money, but unlikely to become a fabulous return on investment, and still soaking up ever important time from the VC firm.
For his next company, Ron had some rules. Revenue had to be recurring, so he didn’t have customers calling up on the last day of the quarter and grinding the price down because they knew you needed to hit a particular sales forecast. He wanted to be the boss, with only a small amount of capital to avoid dealing with investors. So this led to his actual idea. Lots of companies were spending crazy amounts of money mailing flyers to every shareholder, even though the quarterly report would arrive a month after results had already been reported in the newspaper. Only a very few institutional investors were allowed on to the conference call for live results. Enter shareholder.com who’d set up an 800 number for everyone to call and hear recorded results, whenever they like. (Apparently the .com was part of the name early on; they might be the first company with an internet name?) They got some lucky breaks from the SEC, who started more strictly regulating uniform disclosures. So companies were basically required to use theirs or a similar service.
One company printed the wrong 800 number in their mailout. It was the company’s fault, not Ron’s, but it was going to cause a mess. So he called AT&T to find the owner. It was a paging company, but they wouldn’t reveal the individual. So Ron hires a private investigator, who calls back a few hours later with the guy’s regular number. Ron calls him, and buys his pager number for two years worth of free pager service.
Because Shareholder.com didn’t take much investment, they were short on cash in the beginning. A consultant advised buying a whole bunch of servers for a quarter million dollars. That was too much, so Ron bought some Gateways and installed Access for $4000.
The epilogue. “We have seen in turn the computer revolution, the electronic computer revolution, the minicomputer revolution, and the microcomputer revolution, each bringing orders-of-magnitude more computers. ... Not only is the end not in sight, the pace is not slackening. We have many future joys.”
28. Temporal coupling is when one thing must happen before another. Usually this is not necessary, but the common way of writing program introduces it by accident. Think about concurrency from the beginning. Don’t use strtok.
29. MVC is a powerful abstraction. Actually, they start with just Publish/Subscribe and... CORBA. I’ve always found such programming models extremely tedious, but I think sometimes you don’t have much choice.
30. Building up from MVC is the blackboard model, where you just throw objects on the wall and then somebody else finds them. Apparently JavaSpaces are a thing. I thought the modern equivalent of what they might be talking about is redis or mongo, but not quite. I don’t think I’m ready to write programs that use tuple spaces.
We have arrived at the graphical revolution. One can begin by reading “As We May Think” by Van Bush from the July 1945 Atlantic which introduces the memex. How do we organize and share information?
Computers used to be text based. UNIX, adorable rapscallion, maintains its teletypewriter interface even in the modern era. Fortunately, the ASCII designers planned ahead and added an Escape code, so that we can insert byte sequences that move the cursor around. Then came VisiCalc, which is a program that couldn’t work on a mainframe because updating the terminal would be too slow, but writing directly to video memory let it run quickly even on an Apple II. I think this is not insurmountable, but it’s an interesting point in favor of smart clients.
Color displays require a lot of memory. You need some bytes for every pixel and every color. A full color VGA display requires a megabyte of memory.
Douglas Engelbart, who did not work at PARC, worked on a bunch of new computer interfaces. Augmenting Human Intellect. More work was done at PARC, who developed the Alto, which had a paper sized portrait oriented screen. It was bitmapped, and you could draw shapes and move windows. They also invented Smalltalk to support object oriented programming.
The original Mac didn’t even have a hard drive, but modern window systems require megabytes of storage. Vector graphics are lines and shapes. Raster graphics are pixels. A bitmap probably has a lot of duplicate pixels, so we should compress it. That’s what GIF ”(pronounced jif like the peanut butter)” does. JPEG is better for photos because it’s lossy. OCR software is not 100 percent accurate.
There was once a time when a computer would be described as multimedia, which is kind of funny. I can remember going to the store and some computers would be multimedia and some would not be. I wonder when the last not multimedia computer was sold.
If we connect some computers together, we get a BBS. If we connect a big bunch of computers together, we get an Internet. Web pages are written with HTML, which you can read by viewing source. Har har.
Kind of a weird chapter. Just a bunch of paragraphs mostly tossed together with very little narrative holding it together. I’m not sure I could have done better, though. Facts are facts.
More people than ever have more computers than ever, with access to more information than ever. How do we organize this information? Van Bush and Douglas Engelbart and Hal Abelson have ideas.