I’ve expressed my admiration for Paul Graham a number of times already in this young blog. He’s a successful entrepreneur, investor, innovator, writer, philosopher, language designer, and hacker. Most people would be happy to be as good at one thing as he is at any of those things. Today, let me add to his mystique.
I’m a regular on Paul Graham’s Hacker News site, but I had a hard time following the conversations and getting the full value of the site until I would hystry.com by Kartik Agaram. Kartik scraped all of the comments from Hacker News and displayed them with some extra formatting and features. There were some neat things like the ability to filter out conversations you were unintereested in and see all the parents any comment. But the thing I liked most was the way each comment had the article it related to next to it so it was easy to visually filter conversations.
Well, one day it just stopped loading new comments. I figured it was temporary and waited a day or two for it to come back, but when it didn’t, I emailed Kartik to see what was going on. He said his crawler’s email address was banned because it was putting too much of a load on the Hacker News server. That was certainly reasonable of pg to do, but I wanted to make sure he knew that I found hystry’s features to be valuable. I thought the best way to let Paul know would be to post a request on Hacker News, with a slightly inflammatory title (Reinstate hystry’s Hacker News) and a much more polite request in the text field.
What happened after that is pretty amazing. It’s worth reading through the entire thread, noting the time stamps for when things happened. To make a long story short, Paul made three changes to his running site in real time response to a dialog he was having on that discussion thread. Total time for feature request, notification, communication, two design iterations and a bug fix: 7 hours. Here’s a timeline of what happened: (note: I can’t say exactly how long this took because posts over an hour old don’t show minutes)
- Start – I make the request to let hystry crawl again because I like the way they displayed the content
- After 3 hours – After some other people commented on the issue, Paul explains that it was hard on his server and asks if I’d like anything changed on Hacker News itself
- After 4 hours – I make my recommendation and Paul makes a change to the live site within the hour
- After 5 hours – Someone recommends an alternative design and Paul implements that suggestion, again withing the hour
- After 6 hours – I notice a bug and point it out
- After 7 hours – Paul fixes the bug
Here’s what the new site looks like with the root link shown:
How did Paul make these changes so fast? Hacker News is written in Arc, his new language built on top of MzScheme. I don’t know whether the web server is his own or if it comes with MzScheme, but he has REPL access to the running server. So he made changes to the site’s code while it was running and changes were instant. Hacker News doesn’t have customers per se, but choice of technology and architecture let him provide an unforgettable user experience. This should certainly raise an eyebrow for anyone who has had deployment or downtime issues while making changes to their site.
If one of your users had a reasonable feature request, how long would it take you to publish it?
Comments at programming.reddit.com
First spewing-Coke-out-my-nose funny comment of the day: “Nice. Here I thought this was an article about Graham rewriting some history. I was pleasantly surprised.” -now look back at the title of the article. Thanks boredzo!
UPDATE: Several people have pointed out that this isn’t some technological miracle and you could do the same thing with X (for many values of X). I know. That’s why I spent about 5% of the article on it. I was impressed with his response to unsolicited feedback that was sent to him indirectly, and that he didn’t just slap out the change, he made two design iterations and a bug fix while communicating almost live with users. Much more of a social and business feat than technological.
Ramon Leon says
It’s not that amazing, anyone running a site on a Lisp or Smalltalk does this routinely, they’re image based and you just connect up to the live server and make a code change to the running image. It’s very cool, but Paul’s not doing anything special here, other than picking a good platform.
rico says
Well I guess if the whole thing had been coded in php with a somewhat structured approach it could also easily have been done that quick : )
It would have to be done with editing the php source and uploading the changes though and without a REPL at hand.
Bernard Devlin says
I’m kinda confused why Lispers/Schemers get so excited about this. Surely you’ve heard of that much-unloved child of Lotus/IBM called Notes/Domino? Well, a Notes database. When exposed to the web a designer can make changes to the db code/design and the changes are displayed instantly — no compiling, no need to restart any process. And Notes was a tool (at least at V3) that was meant to have applications designed in it by non-programmers. At the bottom line the most basic kind of programming in Notes is… functional programming. (A Notes db is non-relational, and code and data are stored together in the db, although there is still a distinction between the data and the presentation — and couchdb is modeled on many of the features of a Notes db) Oh yeah, and Notes has been around for more than 20 years, and was providing ‘web apps’ (multi-server distributed applications, accessed even through dialup) with off-line capabilities before Internet Explorer was a gleam in Bill Gates eye.
NotoriousBRK says
OK, I don’t get it. Why is this so amazing?
I’m not the uber-Hacker PG is, but I’ve written my fair share of code. Many years back I was developing a ticketing and provisioning system in perl for an ISP I was working with, and did pretty much the same thing almost every day.
I had the main/live site, and a development site, which was just a copy of the main script with some debugging stuff in it. All day long people would come up with features/suggestions (or find bugs) and I would fix/add stuff pretty much in-line.
I think this is easy to do when:
1) The site serves a relatively small audience and could suffer a little bit of a hiccup
2) You have 1 or 2 developers working on the code, and it’s code that they understand (or wrote) completely
3) Your product is SaaS/web-based, so users need to do little more than hit “Reload” to get the latest version of your code.
#1 and #2 are important because the need to do rigorous QA is reduced. On a much larger and more complex project with many developers, features are often added just as quickly, but the release cycle is managed such that you as the end user might not see a new feature until 2 weeks after it was completed.
vasudeva says
I’ve been reading about Arc, and it looks pretty interesting, but I’m not sure I get why this is such a remarkable concept. He modified the comments page to include a link to the relevant topic, right? I do that all the time with the site I just typed into this comment’s header. That site is PHP/MySQL. It usually takes me about 5 minutes — edit the template, save, and all future page generations are cached using the new code. Maybe longer if I need to work out some wonky SQL call.
Maybe I’m missing something?
admin says
I thought this might be under-appreciated because most of the people who would read it are programmers. Think of it from the POV of the user. The point wasn’t that he used Lisp or Arc to do it – and it’s only a little about the technical achievement. It’s a combination of manageable, flexible code, good technology decisions, paying attention to your community, and successfully incorporating feedback.
To put it in perspective, if you found a bug in your bank’s website and told them about it, how long would it take for them to fix it? Even worse, what if you suggested a way to make the site work better? Would anyone with decision making power ever even see the suggestion? Just try telling someone WHO’S NOT A GEEK this story and see what they say.
Bob says
Kudos to pg for being responsive, but that’s a commendable attitude he has to his user base not the result of a technology choice.
Also bear in mind that he’s running a discussion board not a banking website – if my bank made realtime changes to application code, relying on me to verify the change I’d probably switch my account 🙂
admin says
Good point Bob, bank was just the first impersonal, big IT producer I thought of. And yes, it’s all about his attitude – Lisp is just one of many technology choices that have been pointed out that would let someone make that same responsive change.
Mike says
In response to some comments here, I think it’s amazing because PG responded to a user request that required some work (not just a lip service email) in a manner of hours. Think of the requests, that make sense, that you see on the front page of reddit. They never seem to be acted upon, and those guys are not simultaneously running a venture fund with ~12 young, inexperienced entrepreneurs.
jack says
Hardly novel. I see this sort of “live updating” all the time on littlegreenfootballs.com which is written in Java IIRC.
NerdPower says
How is this in any way shape or form in the Agile domain? At the most this would be a good customer response example to cite.
Boy.. you must be new here..