Trevor Burnham

Sure, it works in practice…

Entries from December 31st, 2009

Re-​​Freshing

December 31st, 2009 Comments Off

Posterous makes blogging ridiculously simpleThe con­ven­tional wisdom says that winning a micro VC com­pe­ti­tion like Y Com­bi­na­tor or Tech­Stars takes a bold new idea, some­thing no one else is doing (or, at least, not doing well). And that’s usually the case. But if you look closely, many of the projects they’ve funded—in fact, many of the most suc­cess­ful ones—are almost iden­ti­cal in concept to well-​​established rivals with massive brand recog­ni­tion and deep pockets. The trick is that those older rivals aren’t just old; they’ve gone stale.

Pos­ter­ous is a poster child for this category. Their idea: hosted blogs. Their biggest rival: Google’s Blogger, which has been around for more than a decade now—and barely changed in that time. In a way, it can’t: Blogger is one of the most popular websites around. Mess with the formula, and they might get New Coke’d. So Pos­ter­ous comes in with their hip, clean, fresh design, seamless inte­gra­tion with Facebook and Twitter (and, yes, Blogger), and an emphasis on mobile devices, and they’re attract­ing users like crazy.

But Pos­ter­ous didn’t just succeed with the same idea as the dod­der­ing, decrepit Blogger. They were also fol­low­ing the popular Tumblr by a meager two years, and the sites are in close com­pe­ti­tion for new features. But Pos­ter­ous’ bor­der­line pre­pos­ter­ous devotion to sim­plic­ity dis­tin­guishes them from everyone else in a crowded field. Tumblr seemed fresh when it started, but guess what? It’s not 2007 anymore. If you don’t watch your back, stal­e­ness can catch up quick.

Pos­ter­ous’ pitch is three words: “Dead simple blogging.” I’d cut it down to two: Blogger, fresher.

[Update, 1/​19/​10: A pre­cisely contrary opinion may be found here. We fun­da­men­tally agree that design is extremely impor­tant, but disagree over which of the two top-​​notch sites has the better design. I believe that Tumblr’s pop­u­lar­ity is mainly due to first-​​mover advan­tage. The truth will out.]

Tags:    

Always Be Exploring

December 29th, 2009 2 Comments

Anti-syphilis poster: Get tested!This post by math/​CS prof Peter Boothe caught my eye:

What I am claiming here is not just that if you code faster, you will get your solution written faster. I am claiming if you code faster, you will get your solution done MUCH faster. The speedup is greater than linear.

I agreed with the sen­ti­ment, but I wasn’t sure about his expla­na­tion. Then I read this comment from Matt Kangas:

IMO, the key point is: teach exploratory programming.

That’s the answer! Here’s my expe­ri­ence: I took exactly one CS class as an under­grad; it was so arduous, so time-​​consuming, that I vowed to myself: Never again. But I kept being drawn to various pro­gram­ming projects, so I learned to code com­pe­tently on my own time. At some point last summer, I think I hit the 10,000 hours of practice that Malcolm Gladwell posits as a heuris­tic pre­req­ui­site for being really good at some­thing. One thing I learned around hour #7,500 was the impor­tance of testing pieces of code inde­pen­dently as much as possible when building a larger project. Begin­ners always work at the appli­ca­tion level: Change some­thing, re-​​run the appli­ca­tion, see if it works. This is some­times nec­es­sary (if, say, you’re changing the UI), but should be avoided whenever possible. Experts tend to write code in small, unit-​​testable pieces. Many are test-​​driven.

Not every test has to be a formal unit test. Just trying out a line or two of code on its own and watching what happens is often useful. This is yet another reason why Java is dead to me as a language. Java is so slanted toward BDUF that when it sprang forth Athena-​​like from the head of James Gosling, it was blessed (?) with a formal standard for doc­u­men­ta­tion, but no command line interpreter—a feature offered by just about every other language, includ­ing Java’s spritely yet statically-​​typed spawn, Scala.

For those of you building anything big enough for Hofstadter’s Law to apply, my #1 piece of advice would be this: Get your code tested, today!

Tags:  

Bridging the Web

December 27th, 2009 Comments Off

Python is a much, much better language than JavaScriptI’ve been reading a lot about pro­gram­ming lan­guages lately. Many exciting new lan­guages have come out in recent years, and the use of multiple spe­cial­ized lan­guages within a single project has become much more common, thanks largely to the polyglot JVM and .NET plat­forms. It’s an exciting time to be a programmer.

Unless, of course, you’re pro­gram­ming user inter­faces for the web. Which everyone is.

As Jeff Atwood has said, “Every­thing that can be pro­grammed in JavaScript will be.” That’s because the browser is the most popular oper­at­ing system on the planet, and JavaScript is its lingua franca. But no one likes JavaScript. Or, more pre­cisely, no one falls in love with JavaScript the way that people fall in love with Ruby or Python or (my favorite of late) Scala.

I never fully under­stood why JavaScript was so kludgy and inel­e­gant until I read the (highly rec­om­mended) inter­view col­lec­tion Coders at Work. Long story short, one guy at Netscape (Brendan Eich) threw the language together in ten days, with the stated goals of creating some­thing seman­ti­cally Scheme–like but syn­tac­ti­cally Java-​​like. Good god!

So why are we still, 14-​​odd years later, still using the same language for all of our webapps? Because even if some backwards-​​incompatible NewScript were intro­duced, stan­dard­ized and embraced by Microsoft, Mozilla, Google and Apple tomorrow, most people would take years to update to a browser suf­fi­ciently new­fan­gled to run it. Heck, most people don’t even know what a browser is. Thus, new webapps have to be written in a half-​​baked language to be run through decade-​​old interpreters.

But there is a solution. And for all I know, Sergey Brin and Larry Page are already plotting its exe­cu­tion from their orbital bat­tlesta­tion. (Where did you think those Google Earth pics come from?) What we need is a new language for web browsers (or, better yet, a virtual machine standard that could support multiple lan­guages), along with a compiler that can generate JavaScript for the benefit of old-​​timers. The project would be insanely dif­fi­cult, but it’s half-​​done already. Look at GWT, which lets you write Java that compiles to JavaScript. Now suppose that a browser (say, Chrome 5) could run GWT’s Java bytecode directly, bypass­ing JavaScript alto­gether. Chrome 5 users would enjoy a much smoother and poten­tially richer web expe­ri­ence. Mean­while, older browsers would still present a per­fectly usable webapp. And pro­gram­mers every­where would rejoice.

That, I hope, is the future of the web. So please, Google, I urge you: Don’t let my children grow up in a world that runs on JavaScript.

Tags:    

Game of the Year

December 26th, 2009 Comments Off

Machinarium screenshotI frivoled away most of my high school years on video games. For­tu­nately, I managed to overcome that par­tic­u­lar addic­tion and learn to do other things with my spare time—like read books and make websites for instance. Still, I’ve main­tained an interest in games for their remark­able ability to keep the atten­tion of even the most frazzled Gen Y-​​er. So when the oppor­tu­nity to take a graduate-​​level course entitled “Video Games and Learning” from the UMich Edu­ca­tion depart­ment came up, my first thought—after the req­ui­site bemoan­ing of the state of American edu­ca­tion today—was: How can I refuse?

I’ll talk more about that course later, but for now I want to name the best game of 2009: Machi­nar­ium. While the inno­v­a­tive mechan­ics of the indie darling plat­former Braid made it the best game of 2008, Machi­nar­ium rep­re­sents a delight­ful throw­back to the simple, story-​​driven adven­ture games of the ‘90s, combined with mind-​​bending puzzles that rise to the level of such classics as Myst. It’s kid-​​friendly, has a unique visual style, and offers a clever solution to the patience-​​trying ruts that sunk the adven­ture genre to second-​​tier status: a “walk­through book” built into the game, always avail­able in the upper-​​right corner, that requires you to complete a one-​​minute mini-​​game to open it, ensuring that you only consult it when really, truly stuck.

But what impressed me most about Machi­nar­ium, which was painstak­ingly devel­oped over the course of three years by a handful of Czech devel­op­ers, is the superb way it tells a rich, involv­ing story without words. In a world where video game stories are usually crafted by gluing clichés together into a long, tired strings, Machi­nar­ium is truly a breath of fresh air.

A close runner-​​up is Tales of Monkey Island. It not only revi­tal­izes the long-​​dormant Monkey Island fran­chise; it’s the best in the series, full of cute laughs and clever chal­lenges. Telltale Games has estab­lished itself as the Pixar of modern adven­ture games, creating one high-​​quality, whim­si­cal, family-​​oriented game after another. Tales of Monkey Island is avail­able as part of the Telltale Every­thing Pack on Steam, which is an unbe­liev­able value (in terms of $/​game-​​minute).

If there’s one thing my game addic­tion taught me, it’s that you should never waste time on having the same expe­ri­ence twice. Playing Bejew­eled yet again is point­less. Games, just like books and movies, are worth­while in pro­por­tion to the amount of sheer imag­i­na­tion that went into them. I’m glad to report that the simple, story-​​driven adven­ture game is alive and well. The best games of 2009 are triumphs of storytelling.

Tags:  

Rebooting, Rebranding, Reblogging

December 25th, 2009 2 Comments

xkcd comic depicting the Locke and Demosthenes blog from Ender’s Game with no commentsIt is a truth uni­ver­sally acknowl­edged that a blog in pos­ses­sion of no audience must be in want of a theme. The Internet is riddled with blogs that no one reads, often because of their lack of, for lack of a better word, the­mos­ity. When a blog has one or two inter­est­ing posts and no con­nec­tion between the two, its only readers will be nomadic Googlers, grazing briefly on its green pastures before wan­der­ing to the next lonely outpost of the blogosphere.

The last time I restarted my blog afresh, I was aspiring to be the next Milton Friedman. I’d scored a 1600 on the GRE and was thrilled about the prospect of becoming an expert in micro­eco­nom­ics and game theory. One of my proudest moments came earlier this year when personal hero Greg Mankiw gave me a shout-​​out of sorts for my rave review of his textbook; reading that book in high school made me decide, “Hey, I want to go into eco­nom­ics!” But that excite­ment has faded. Don’t get me wrong: Everyone should take Econ 101. Joel Spolsky even rec­om­mends it for CS students. Supply and demand, marginal analysis… this is impor­tant stuff! But after a year and a half at the Uni­ver­sity of Michigan School of Infor­ma­tion PhD program, where I get to study the inter­sec­tions of tech­nol­ogy and eco­nom­ics, I’m less excited about utility max­i­miza­tion and Nash equi­lib­ria and way more excited about the amazing new social apps folks are developing.

So, if there were a dry but apt subtitle for this blog, it would be: “Thoughts on tech­nol­ogy.” I say “thoughts” because if I want to link to some­thing new without comment, I can do that in 140 char­ac­ters or less. Also expect a lots of anec­dotes. When a good story goes head-​​to-​​head with con­tra­dic­tory facts, the facts don’t stand a chance.

Rest assured that this will be the greatest fran­chise reboot since Batman Begins. And, inci­den­tally: Merry Christmas!

Tags: