Archive for July, 2009

Bet your money on the businesses who expand during recessions

Friday, July 31st, 2009

Recessions are great times to invest for the future, if you know what you are doing:

Not every startup CEO is cutting back. Apple spent their time innovating during the last downturn and look where it got them. I’m thrilled to have just passed out big, healthy profit-sharing bonuses to all of our employees this week for the 5th consecutive year. We think and hope they’ll be even bigger next year.

SmugMug was founded in the middle of the last “nuclear winter” in Silicon Valley. Everyone told us we were crazy, and we knew there was no chance at raising venture capital at a decent valuation, even with our impressive backgrounds. So we did what any good entrepreneur would do: We did it anyway, with both eyes firmly on our business model.

So if you’re running a startup, or thinking of creating one, take heart – downturns are a fabulous time to build and grow businesses. Focus on your revenues and your margins, not your growth rate or # of unique visitors. Find some stable income streams and a customer need. Listen to your customers and give them what they want – and what they’re willing to pay for. And take care of your employees – they’re your most valuable asset.

Very cool technology in OpenSolaris

Friday, July 31st, 2009

I’ve always been happy with Linux on the server, and I’ve never felt any need to experiment with OpenSolaris, until I read this bit about ZFS:

ZFS is the most amazing filesystem I’ve ever come across. Integrated volume management. Copy-on-write. Transactional. End-to-end data integrity. On-the-fly corruption detection and repair. Robust checksums. No RAID-5 write hole. Snapshots. Clones (writable snapshots). Dynamic striping. Open source software. It’s not available on Linux. Ugh. Ok, that sucks. (GPL is a double-edged sword, and this is a perfect example). Since it’s open-source, it’s available on other OSes, like FreeBSD and Mac OS X, but Linux is a no go. *sigh* I have a feeling Sun is working towards GPL’ing ZFS, but these things take time and I’m sick of waiting.

The OpenSolaris project is working towards making Solaris resemble the Linux (GNU) userland plus the Solaris kernel. They’re not there yet, but the goal is commendable and the package management system has taken a few good steps in the right direction. It’s still frustrating, but massively less so. Despite all the rough edges, though, ZFS is just so compelling I basically have no choice. I need end-to-end data integrity. The rest of the stuff is just icing on an already delicious cake.

The problem with out-sourcing

Friday, July 31st, 2009

I’m currently managing a team in India. I’d say there is some truth to this criticism of out-sourcing:

It is a myth that outsourcing is a cheaper way of building quality software. Software can always be built elsewhere, but the basic premise that the early blueprints are 100% dead-on are a fantasy. Once an effort begins, almost invariably, a rat race ensues and the cumbersome task of project managing across geographically dispersed teams kicks in. The result is a frustrating, oftentimes painful endeavor. We’ve seen firsthand how an out-of-synch outsourcing effort can spin out of control and destroy morale. It’s a painful thing to witness.

WimpyPoint versus SlideRocket – a note about Phillip Greenspun’s vision

Thursday, July 30th, 2009

Someone I’m working with asked me to look at SlideRocket, to see if we should be using it. SlideRocket describes themselves like this:

SlideRocket is online presentation software that provides for every part of the presentation lifecycle. SlideRocket integrates flexible authoring, intelligent asset management, secure delivery and analytics tools in a single on demand application. SlideRocket allows you to quickly create stunning presentations, store, organize, tag and search your assets, collaborate with your colleagues, securely share your presentations in person or online and measure the results, all in one integrated environment.

If you listen to their video, they talk about how great it is to have all of your assets on the web (or the “cloud”, as they prefer to say), so you’ll never run the risk of forgetting it at home.

One thing that occurs to me is how similar this is to what Phillip Greenspun was describing in 1999:

Interesting things can happen when you do something as simple as move an application from the desktop to a server. For example, at a small company once we had the idea of building a server-based replacement for PowerPoint. We wanted something simpler that we could edit from any Web browser. Once the slides were in the database, however, we realized that this could be used for collaboration. User A could authorize User B to edit a presentation and the two of them could authorize User C to give that presentation at a remote site.

Only after talking to people from PowerPoint-oriented organizations did we realize how revolutionary the system, which we called “WimpyPoint”, could be. Suppose Jane Executive went on vacation for three weeks. Upon her return she wouldn’t have to start calling colleagues to find out what had been going on; she could look at the WimpyPoint server and ask to see all presentations created within the last three weeks. When all the work of an organization is presented within PowerPoint it is a terrible waste to have that work locked up in monolithic files.

Once again, I am impressed with how clearly Phillip Greenspun understood the Internet, earlier than most other people did. He foresaw the declining importance of desktop apps:

What people need and, with the ubiquitous Internet, can finally get, are collaborative Web-based applications. Web-based apps let people use computers without becoming mired in system administration. Web-based apps help people collaborate. Web-based apps can weave an individual’s contribution into a larger work produced by many people over the decades.

The future is WimpyPoint, not PowerPoint.

If Web-based apps are so great, why aren’t we all using them now? Desktop apps serve one user at a time and tend to be copies of systems from the ’60s and ’70s. Web-based apps serve thousands of users simultaneously and oftentimes are based on completely new service ideas. Thus Web-based apps require programmers with great skill, imagination, and taste.

If Greenspun’s thinking has a fatal flaw, it is the relentless way he discounts the importance of visual information. He is one of those people who has a strong preference for text. There is nothing wrong with that, of course, but he consistently mistakes his personal preference for some kind of universal truth about communicating information:

You’re building a database. You’re modelling data from the real world. You’re going to have to write computer programs in a formal language. You have to design a user interface for that computer program. If you had an MBA then your natural first step would be . . . hire a graphic designer. After all, this computer stuff is confusing. Databases frighten you. What you really need is something that will look good at your next meeting. Graphic designers make pages that look good. You can always hire a programmer later to actually make the forms work.

…If you despair of learning how to do anything productive, what you might have learned from this chapter is that you should work with the programmer and user interface designer to build the site that fits your publishing model before bringing in a graphic designer to make it pretty.

This particular joke (that all graphic designers are stupid) pervades Greenspun’s work. I find it about as funny as I find “All women are dumb” or “All blacks are lazy” type of jokes. The history of innovation reveals this as a reliable pattern: those who understand the importance of a new technology often have some blindspot that keeps them from being the one who fulfills the potential of the new invention.

What Greenspun offered is an example of extreme minimalist design. It is functional, but confusing. He seems to have thought that if a page was minimalist enough then its purpose would automatically be clear. Any talented designer can explain the problems with that kind of reasoning.

SlideRocket offers some things that were less practical back in the 90s. The spread of broadband Internet connections allows people nowadays to expect video and other rich media. This could be described as the Web 2.0 version of WimpyPoint, but I assume Greenspun would disagree with the comparison. SlideRocket is built using Flash/Flex/Air. Greenspun was extremely critical of Flash. I assume he has been surprised (as I was) to see Flash evolve into Flex, which is, after all, a reasonably solid programming environment.

Still, SlideRocket strikes me as the modern version of what Greenspun had begun to see 10 years ago: the movement of presentation software to the web. I think it is curious how certain ideas (forums, email, chat) keep getting re-invented, over and over again, every few years, and yet, these re-inventions keep offering some real (if incremental) innovation, something that updates the basic idea and brings it into conformance with all that is now known, all the best practices that our growing experience with this new medium allows us to understand.

The most misguided defense of the newspapers ever

Wednesday, July 29th, 2009

David Simon writes the single most ludicrous, misguided, uninformed post about the future of the newspapers that I’ve yet seen:

The true audience for this essay narrows necessarily to a pair of notables who have it in their power to save high-end journalism—two newspaper executives who can rescue an imploding industry and thereby achieve an essential civic good for the nation. It’s down to them. The rest of the print journalism world is in slash-and-burn mode, cutting product and then wondering why the product won’t sell, rushing to give away what remains online and wondering further why that content is held by advertisers to be valueless. The mode is full-bore panic. And yet these two individuals, representing as they do the two fundamental institutions that sit astride the profession, still have a card to play, and here’s a shard of good news: it’s the only card that ever really mattered. Arthur Sulzberger Jr. and Katharine Weymouth, publishers of The New York Times and The Washington Post, are at the helms of two organizations trying to find some separate peace with the digital revolution…

Melodramatic. Two brave souls have the power to save the noblest industry on Earth, the 4th estate, they can perform “an essential civic good for the nation”, but only if they act bravely and wisely. It is a good setup for a movie. How is it that Simon got so far out of touch with reality that he doesn’t understand how sentimental and over-heated this is?

Simon is so desperate to save the newspapers, that he wishes they could break the law:

Most of all, I know that here you are being individually asked to consider taking a bold, risk-laden stand for content—that antitrust considerations prohibit the Times and The Post, not to mention Rupert Murdoch or the other owners, from talking this through and acting in concert. Would that every U.S. newspaper publisher could meet in a bathroom somewhere and talk bluntly for fifteen minutes, this would be a hell of a lot easier.

This by itself says a lot about how doomed the newspapers are – that their supporters think the only way to save them is by breaking the law. Having written this paragraph, Simon should then draw the obvious conclusion – that there is no legal way to save the newspapers. But he is deep in denial. He has a strong emotional attachment to the newspapers, so contemplating their demise causes him too much pain – so he escapes into fantasy:

You must act. Together. On a specific date in the near future—let’s say September 1 for the sheer immediacy of it—both news organizations must inform readers that their Web sites will be free to subscribers only, and that while subscription fees can be a fraction of the price of having wood pulp flung on doorsteps, it is nonetheless a requirement for acquiring the contents of the news organizations that spend millions to properly acquire, edit, and present that work.

No half-measures, either. No TimesSelect program that charges for a handful of items and offers the rest for free, no limited availability of certain teaser articles, no bartering with aggregators for a few more crumbs of revenue through microbilling or pennies-on-the-dollar fees.

I’m familiar with “a miracle might happen” reasoning. I went through a lot of this when my father died: “The doctor says there is no hope, but a miracle might happen.” Of course, now, looking back, I can clearly see I was deluding myself. Simon is at an earlier stage. He has not yet started mourning because he believes the thing he loves can still be saved.

He then indulges a fantasy in which he is someday regarded as a hero (I assume he will someday be embarrassed that he wrote this):

And when the Justice Department lawyers arrive, briefcases in hand, to ask why America’s two national newspapers did these things in concert—resulting in a sea change within newspapering as one regional newspaper after another followed suit in pursuit of fresh, lifesaving revenue—you can answer directly: We never talked. Not a word. We read some rant in the Columbia Journalism Review that made the paywall argument. Blame the messenger.

Especially stupid is his dismissal of the idea that online ad revenue will someday be greater than what it is now:

Clearly, the product still moves. But to what purpose, when more and more readers rightly identify the immediate digitized version as superior, yet pay nothing for that version, and online advertising simply doesn’t deliver enough revenue?

He then makes a ludicrous comparison:

For the first thirty years of its existence as America’s primary entertainment medium, television was—after the initial purchase of the set itself—provided at no cost to viewers, instead subsidized by lucrative ad revenues. The notion of Americans in 1975 being asked to pay a monthly bill for their television consumption would have seemed farcical. Yet in the ensuing thirty years, we have become a nation that shells out $60, $70, or $120 in monthly cable fees; indeed, whole vistas of programming exist free of advertising revenue, subsidized entirely by subscriptions.

So, somehow the fact that Americans are willing to pay money to get more content proves that they are willing to pay money to get less content.

Maybe the most funny thing in his whole essay is where he compares the brave, visionary geniuses who run the television industry with the stupid, crass, profit-obessessed buffoons who run the newspaper industry:

But unlike television, in which industry leaders were constantly reinvesting profits in research and development, where a new technology like cable reception would be contemplated for all its potential and opportunity, the newspapering world was content to send its treasure to Wall Street, appeasing analysts and big-ticket shareholders. There was no reinvestment in programming, no intelligent contemplation of new and transformational circulation models, no thought beyond maximized short-term profit.

Oh, those damn newspaper publishers! Always obsessed with short-term profit! Why can’t they be more like the noble, far-seeing statesmen who run the television industry?

But here is the saddest paragraph of all, the one that truly shows how much Simon is gripped by the past, rather than what is to come:

In the newspaper industry, however, the fledgling efforts of new media to replicate the scope, competence, and consistency of a healthy daily paper have so far yielded little in the way of genuine competition. A blog here, a citizen journalist there, a news Web site getting under way in places where the newspaper is diminished—some of it is quite good, but none of it so far begins to achieve consistently what a vibrant newspaper, staffed with competent, paid beat reporters and editors, once offered. New-media entities are not yet able to truly cover—day after day—the society, culture, and politics of cities, states, and nations. And until new models emerge that are capable of paying reporters and editors to do such work—in effect becoming online newspapers with all the gravitas this implies—they are not going to get us anywhere close to professional journalism’s potential.

David Simon will only respect New Media once New Media is able to replicate what Old Media gives us everyday. And here, possibly, is the one and only thing that Simon and I agree on: New Media will never replicate what Old Media gave us.

This is reality: the newspapers will largely die, and nothing is going to take their place. There will be other forms of media in the future, but they won’t look or act like what the newspapers did.

Here is the only passage in the essay where he correctly notes that the newspapers have been dying for a long time, and the Internet is only speeding a long-term, secular trend:

Last, and perhaps most disastrous, the rot began at the bottom and it didn’t reach the highest rungs of the profession until far too much damage had been done. As early as the mid-1980s, the civic indifference and contempt of product inherent in chain ownership was apparent in many smaller American markets. While this was discussed in some circles, usually as a matter of mild rumination, little was done by the industry to address a dynamic by which men in Los Angeles or Chicago or New York, at the behest of Wall Street, determined what sort of journalism would be practiced in Baltimore, Denver, Hartford, or Dallas. If you happened to labor at a newspaper that was ceding its editorial ambition to the price-per-share, it may have been agony, but if you were at the Times, the Post, The Wall Street Journal, or the Los Angeles Times, you were insulated.

I’ve rarely read an essay where the author’s fear of change was so near the surface, so present in every sentence.

There are at least 2 ways to attack Simon’s ideas. One is offered by Brad Delong, who makes the case that the newspapers are often full of lies and misrepresentation, and so he generally finds his favorite blogs more interesting:

I am 6.5 times as likely to be happy that I have spent my time reading one of the top stories in my RSS reader as I am to be happy that I have spent my time reading one of the top stories printed by the New York Times and the Washington Post.

To some degree this is the “Daily Me” phenomenon: my RSS reader is now tuned to bring me things written by people I learn from, while the editors of the Washington Post and the New York Times select stories on the basis of… bizarre and incomprehensible algorithms. To some degree this is because this is because the WP and the NYT are pitched at a level far below the one I want to read at, in part because they think their audience is less clued-in than I am (Peter Baker and Helene Cooper; Dan Balz) and in part because their reporters are out of their depth (i.e., Tobin Harshaw). In part this is because they are unprofessional (i.e., Mark Mazzetti and David Johnston not situating their article in its proper context in the journalistic enterprise begun by The One-Percent Doctrine). To some degree this is because their reporters know nothing about how representative their anecdotes are and so have absolutely nothing interesting to say (Michael Wilson and Solomon Moore; Michael Rosenwald)….

But there is a bigger problem: the army of small start-ups that want a piece of the New York Times’s market. Last year I spent $30,000 to start a new political web site. That is, I spent a small sum, and attracted a small audience. But there are thousands of entrepreneurs like me. Collectively, we spend millions each year, trying to establish sites that can take market share from existing newspapers. And every dollar we spend is a torpedo aimed at the old institutions of media.

In the old days, it took millions of dollars to set up a new newspaper. USA Today took 15 years just to break even. The large scale of the needed capital acted as a barrier to entry, and protected the newspapers from competition. Now a new web site can get going for just $100,000 (I’ve previously written about the costs of websites). Nothing can bring back the old days, when the newspapers could generate high margins, safe behind the barriers that kept competition limited. But David Simon doesn’t see this. Consider the static, unchanging nature of the world in which he thinks he’s living in:

Antitrust considerations prohibit the Times and The Post, not to mention Rupert Murdoch or the other owners, from talking this through and acting in concert

See, in Simon’s world, all of the owners of all of the media companies are known, and could be called together to meet, if only it weren’t for antitrust considerations. What Simon doesn’t see is the vast army of entrepreneurs who are just off-stage, waiting for the right conditions, ready to strike.

My world is very different from Simon’s world. Here’s the world that I live in:

1.) Consumers do not want to pay for online content, so if the newspapers put up pay walls, then entrepreneurs like myself will jump up and down with pure joy, and call in all our favors, to put together the funding for new companies to replace the old newspapers.

2.) However, if a miracle happens, and suddenly consumers are willing to pay for online content, then entrepreneurs like myself will jump up and down with pure joy, and call in all our favors, to put together the funding for new companies to replace the old newspapers.

Either way, more funding will continue to be invested in online media ventures, and the endlessly growing supply will drive down everyone’s margins. More so, we are in for a prolonged period of over-supply, which will drive down everyone’s margins very low, so those businesses that were built around the assumption of healthy margins (and that would include the major newspapers) are going to go bankrupt. A prolonged period of very low margins will mean that only those ventures that are built to survive very low margins will, in fact, survive. And, obviously, the web-based ventures, free of the costs of printing plants and distribution networks, sometimes even free of having an office, can get by on some extremely narrow margins.

There are no scenarios in which the newspapers survive.

Managers versus Makers

Wednesday, July 29th, 2009

This is my current schedule:

When we were working on our own startup, back in the 90s, I evolved another trick for partitioning the day. I used to program from dinner till about 3 am every day, because at night no one could interrupt me. Then I’d sleep till about 11 am, and come in and work until dinner on what I called “business stuff.” I never thought of it in these terms, but in effect I had two workdays each day, one on the manager’s schedule and one on the maker’s.

This sums up the problem rather well:

Most powerful people are on the manager’s schedule. It’s the schedule of command. But there’s another way of using time that’s common among people who make things, like programmers and writers. They generally prefer to use time in units of half a day at least. You can’t write or program well in units of an hour. That’s barely enough time to get started.

…I find one meeting can sometimes affect a whole day. A meeting commonly blows at least half a day, by breaking up a morning or afternoon. But in addition there’s sometimes a cascading effect. If I know the afternoon is going to be broken up, I’m slightly less likely to start something ambitious in the morning. I know this may sound oversensitive, but if you’re a maker, think of your own case. Don’t your spirits rise at the thought of having an entire day free to work, with no appointments at all? Well, that means your spirits are correspondingly depressed when you don’t. And ambitious projects are by definition close to the limits of your capacity. A small decrease in morale is enough to kill them off.

Each type of schedule works fine by itself. Problems arise when they meet. Since most powerful people operate on the manager’s schedule, they’re in a position to make everyone resonate at their frequency if they want to. But the smarter ones restrain themselves, if they know that some of the people working for them need long chunks of time to work in.

Software project failures

Tuesday, July 28th, 2009

Coding Horror has a nice set of quotes and links related to catastrophic software project failures. Of interest to anyone who does project management on software projects:

If Las Vegas sounds too tame for you, software might just be the right gamble. Software projects include a glut of risks that would give Vegas oddsmakers nightmares. The odds of a large project finishing on time are close to zero. The odds of a large project being canceled are an even-money bet (Jones 1991).

In 1998, Peat Marwick found that about 35 percent of 600 firms surveyed had at least one runaway software project (Rothfeder 1988). The damage done by runaway software projects makes the Las Vegas prize fights look as tame as having high tea with the queen. Allstate set out in 1982 to automate all of its office operations. They set a 5-year timetable and an $8 million budget. Six years and $15 million later, Allstate set a new deadline and readjusted its sights on a new budget of $100 million. In 1988, Westpac Banking Corporation decided to redefine its information systems. It set out on a 5-year, $85 million project. Three years later, after spending $150 million with little to show for it, Westpac cut its losses, canceled the project, and eliminated 500 development jobs (Glass 1992). Even Vegas prize fights don’t get this bloody.

It’s not that people loved Ruby, its that they hated Java

Tuesday, July 28th, 2009

It is now clear that the intensity of the praise focused on Ruby On Rails in 2005 was partly a revolt against Java. “The Java hyper-enthusiasts have left the building” signaled the end of an era, and the end of a particular type of Java framework – heavy, overly complex, overly strict.

The Java hyper-enthusiasts have left the building, leaving a significant contingent of Java programmers behind, blinking in the bright lights without the constant drumbeat of boosterism. But the majority of programmers, who have been relatively quiet all this time, always knew that Java is a combination of strengths and weaknesses. These folks are not left with any feelings of surprise, but instead they welcome the silence, because it’s easier to think and work. Where did the hyper-enthusiasts go? To Ruby, apparently. This is chronicled in Bruce Tate’s book “Beyond Java,” which should probably be titled “Why Ruby is Better than Java.”

That was December of 2005. At that time it seemed like Java was slowly going to fade away, replaced by lighter languages that encouraged agile practices.

But that is not what happened. Instead, the Java platform evolved:

The idea of “Enterprise Ruby” has become less repellant since Dave Thomas’s infamous keynote at RalsConf 2006. There are a lot of large, lumbering organizations out there that have yet to adopt any of the newer agile language/framework combinations, and Rails has most definitely led the way. I personally believe that in order for Ruby to become more than just a nice language with a great community, it needs to gain adoption in those organizations, and it needs to do it damn quickly. JRuby is by far the best way for that to happen.

There’s another aspect to adoption I think has escaped a lot of Rubyists. In 2006 and 2007, Ruby gained a lot of Java developers who were running away from bloated, over-complicated frameworks and the verbosity and inelegance of Java. When I asked at Ruby conferences in 2005, 2006, and 2007 how many people had done Java development in a former life, almost everyone in the room raised their hands. When I’ve asked the same question in 2008 and 2009, it’s down to less than half the room. Where did they go?

The truth is that the Java platform now has reasonably good answers to Ruby in Groovy, Scala, and Clojure, and reasonably good answers to Rails in Grails and Lift.

Java and Groovy compared

Tuesday, July 28th, 2009

Java and Groovy compared:

Groovy provides an excellent playground for trying out features that may be coming to future versions of the Java programming language. Its close relationship to Java makes it even more attractive for this than other less Java-like languages with the same features. In this blog posting, I have attempted to demonstrate Groovy features that may end up in a future version of Java. These proposed new Java features include property support, BigDecimal operators, switch on String, multiline Strings, and the Elvis operator. Other than the brief mention of BigDecimal operator overloading, I did not focus on Groovy’s operator overloading here for the same reason I did not mention Groovy’s closure support here: they both deserve blog posts of their own. I instead focused on smaller new features here that might someday be added to traditional Java.

The explosion of Java frameworks

Tuesday, July 28th, 2009

Having read a little about Apache Wicket, I wanted to learn more, so I went to the website. I was surprised by their list of Java frameworks:

Echo
Cocoon
Millstone
OXF
Struts
SOFIA
Tapestry
WebWork
RIFE
Spring MVC
Canyamo
Maverick
JPublish
JATO
Folium
Jucas
Verge
Niggle
Bishop
Barracuda
Action Framework
Shocks
TeaServlet
wingS
Expresso
Bento
jStatemachine
jZonic
OpenEmcee
Turbine
Scope
Warfare
JWAA
Jaffa
Jacquard
Macaw
Smile
MyFaces
Chiba
JBanana
Jeenius
JWarp
Genie
Melati
Dovetail
Cameleon
JFormular
Xoplon
Japple
Helma
Dinamica
WebOnSwing
Nacho
Cassandra
Baritus
Stripes
Click
GWT

Damn. How can anyone keep up? And that’s just plain Java frameworks. They are, apparently, not counting web frameworks like Grails, written in Groovy, which runs on the JVM.

There are so many languages, so many frameworks, so much new stuff. It has become impossible to make any pretense of choosing the “best” technology for a job. Rather, we are all subject to circumstance now, the accidents of our lives that bring us into contact with a particular technology at a particular time. This has always been true, but it beomces more obvious to me when I see a list like this.

This part of what Wicket says about itself has some appeal to me:

Most existing frameworks require special HTML code.

JSP is by far the worst offender, allowing the embedding of Java code directly in web pages, but to some degree almost all of the frameworks from the list (except Tapestry) above introduce some kind of special syntax to your HTML code.

Special syntax is highly undesirable because it changes the nature of HTML from the kind of pure-and-simple HTML markup that web designers are familiar with, to some kind of special HTML. This special HTML can be more difficult to preview, edit and understand.

Wicket does not introduce any special syntax to HTML. Instead, it extends HTML in a standards-compliant way via a Wicket namespace that is fully compliant with the XHTML standard. This means that you can use Macromedia Dreamweaver, Microsoft Front Page, Word, Adobe Go Live, or any other existing HTML editor to work on your web pages and Wicket components. To accomplish this, Wicket consistently uses a single id attribute in the Wicket namespace (”wicket:id”) to mark HTML tags that should receive special treatment by the toolkit. If you prefer not to render Wicket namespaced tags and attributes to your end-users, Wicket has a simple setting to strip them all out, resulting in ordinary, standards-compliant HTML.

No “special sauce” in your HTML means designers can mock up pages that you can use directly in development. Adding Java components to the HTML is as simple as setting the component name attribute. And you can then give the HTML back to your web designers knowing that they can change it with confidence.

Wicket, more than any other framework gives you a separation of concerns. Web designers can work on the HTML with very little knowledge of the application code (they cannot remove the component name tags and they cannot arbitrarily change the nesting of components, but anything else goes). Likewise, coders can work on the Java components that attach to the HTML without concerning themselves with what a given page looks like. By not stepping on each other’s toes, everyone can get more work done.
Existing frameworks are not easy.

Most of the existing toolkits have poorly defined or non-existent object models. In some cases, the model is defined using special XML syntaxes. The syntaxes may be so cumbersome that special tools are required to manipulate all the configuration information. Since these toolkits are not simple Java libraries you may or may not be able to use your favorite IDE tools such as editors, debuggers and compilers.

Wicket is all about simplicity. There are no configuration files to learn in Wicket. Wicket is a simple class library with a consistent approach to component structure. In Wicket, your web applications will more closely resemble a Swing application than a JSP application. If you know Java (and especially if you know Swing), you already know a lot about Wicket.

I am looking for the “Die, you heretic” joke

Monday, July 27th, 2009

I went looking for tech related “Die, you heretic” joke, but I couldn’t find it. I did find this, which is almost identical, except that it uses religious references:

I was walking across a bridge one day, and I saw a man standing on the
edge, about to jump off. I immediately ran over and said “Stop! Don’t do
it!”

“Why shouldn’t I?” he said.

I said, “Well, there’s so much to live for!”

“Like what?”

“Well … are you religious or atheist?”

“Religious.”

“Me too! Are you Christian or Jewish?”

“Christian.”

“Me too! Are you Catholic or Protestant?”

“Protestant.”

“Me too! Are you Episcopalian or Baptist?”

“Baptist.”

“Wow! Me too! Are you Baptist Church of God or Baptist Church of the
Lord?”

“Baptist Church of God.”

“Me too! Are you Original Baptist Church of God, or are you Reformed
Baptist Church of God?”

“Reformed Baptist Church of God.”

“Me too! Are you Reformed Baptist Church of God, reformation of 1879, or
Reformed Baptist Church of God, reformation of 1915?”

“Reformed Baptist Church of God, reformation of 1915!”

To which I said, “Die, you heretic scumbag!” and pushed him off.

Someone did a tech version of this that references, as I recall, a data serialization format, instead of a religion. Does anyone know where I can find it?

Life in a Chinese factory

Monday, July 27th, 2009

Life in a Chinese factory:

The training begins immediately on the second day upon our arrival. At first I thought we would be informed of some professional operative skills and knowledge, but instead, we were taught the factory’s regulations, culture, and acknowledgment of Foxconn’s business concept. By now, I think it is safe to say that the training is a part of Foxconn’s brain washing process. A supervisor told us that working at Foxconn requires total obedience; you do not need to be intelligent or highly skilled. After a week of training, we concluded that at Foxconn, we shouldn’t treat ourselves as human beings, we are just machines. During the week, we also had a health examination, a very simple blood test, a blood pressure test and a vision test. We did not receive any results afterwards.

After the one week of in-class training, we begin our on-site training, which is a modest way of telling us that we have to work as long as regular workers, with minimal compensation. Since we are still under training, Foxconn did not give us a contract to sign.

I consider myself lucky because one week after the on-site training I was selected by a CCPBG recruiter, which means I am officially a regular worker. When the selection takes place, it seems like a slave market where slave owners get to pick suitable slaves. There were about a couple hundred of us going through on-site training, and when the recruiters from other companies on Foxconn campus come, all of us have to stand straight in lines, putting our hands behind our backs, and wait for these recruiters to pick. After the selection ends, those who did not get picked go back to their work post. They cannot become regular workers until being picked so I was very lucky to be selected the first week. Many of my classmates are still doing on-site training waiting to be picked.

Twenty people including myself were selected and brought to the workshop where I will finally begin as a regular worker. First, the supervisor and assistant manager explain to us the rules of the workshop: no talking at work, no leaving work post at will, and etc. Then, the section supervisor gave us a lecture, emphasizing that we are no longer in school and that we have to work hard. Afterwards, I was assigned to my post, and few days later, I was offered a contract to sign. Since I was very inexperienced at that time, I did not even look at the contract details, and I still have yet to take a look at what exactly is on my contract.

My work post at that time was connecting computer wires. Later, I was assigned to another production line that produces CD-ROMs. I believe the whole workshop is producing for Sony.

Everyday I wake up at 7 AM, head to the workshop at 7:30 AM, place all personal items that contain metal, such as mobile phones, keys, pens and etc., into the shoe shelf, change into my uniform, and begin working at 8 AM. Although CCPBG states that work begins at 8 AM, it actually requires workers to be present at the workshop by 7:30 AM, and those 30 minutes are unpaid.

Although the industrial sector in China has seen significant liberalization over the last 31 years, the government still plays a large role in managing agriculture and labor relations (all the way to coercive laws limiting how many children families can have). As such, the poor treatment of the workers is a political issue, and will probably only have a political solution. This would be an area where labor unions could probably do some good – the political pressure they might bring would be exactly what is needed.

How does diversity help a project?

Monday, July 27th, 2009

Whether we are talking about the evolution of finches  in the Galápagos Islands  or the evolution of the software projects that we work on, my sense is that diversity offers its greatest benefit during  a crisis. The worst thing about monoculture is the powerful reward it offers to pathogens. Or, as Wikipedia says:

The dependence on monoculture crops can lead to large scale failures when the single genetic variant or cultivar becomes susceptible to a pathogen or when a change in weather patterns occur.

Extending that as a metaphor for business, groupthink (a monoculture of thought) can lead to catastrophic failure when some foundational assumption of the group is proven wrong. A monoculture of thought offers a powerful reward to pathogenic behavior. Consider the meltdown at Enron, where top executives all agreed on the profitability of reckless energy trades, and they continued to agree with each other almost till the very moment company declared bankruptcy. Likewise, the top executives at AIG were certain that they had distributed risk in a such a way that the downside of that risk would never catch up with them. – people with dissident viewpoints were squeezed out of their jobs. Or consider the 40 year decline of the United States auto industry, an industry that has suffered more than most from groupthink and inaccurate assumptions. The executives of the 1970s and 1980s felt, despite the gathering evidence, that price was more important to Americans than quality, and that quality automatically meant expensive, and so they lost a generation of car buyers.

A corporate culture that values homogeneity is at grave risk of punishing non-conformists. A good manager is always on guard against the kinds of social bullying, however subtle, that can cause people to censor their opinions. This is a basic task of risk management: reduce risk by challenging core assumptions. Make sure divergent view points are heard.

I should add, if you are working at a new start-up, struggling to find its place in the world, you should treat every day as a crisis.

Genetic diversity allows a population multiple avenues to move forward when a radical change in the external environment dooms the existing species, in their current forms. Genetic diversity helps facilitate the transformation of sub-sections of those populations to evolve into new forms. Likewise, when a corporation faces a crisis, having a diverse range of opinions is healthy, and the more those differences of opinions reach down to core assumptions, the healthier. In boom times, such diversity of opinion could potentially be viewed as annoyingly disruptive of the good times, but in a crisis, what’s needed is the maximum of diversity: in viewpoint, in history, in current circumstances, in goals, in future expectations, etc.

In theory, a genius of a manager could possibly assemble a team made up solely of white males, which still had enough diversity of opinion to perform well in a crisis, but as a practical matter, the most reliable way to put together a diverse team is to recruit people from different backgrounds, different genders, different races and, where possible, different countries.

I regard the cultivation of diversity on a project as a fundamental survival technique, so I devote a lot of time to recruiting newcomers to the field of programming. And so, I read with interest Kirrily Robert’s discussion of recruiting women to work on an open source project (what follows is from Robert’s blog post):

———————————————–

I surveyed women on the Dreamwidth and AO3 projects and asked them about their experiences. You can read a fuller report of their responses on my earlier blog post, Dispatches from the revolution.

One of the first things I asked them was whether they had previously been involved in open source projects. They gave answers like:

I’d never contributed to an open source project before, or even considered that I could.

I didn’t feel like I was wanted.

I never got the impression that outsiders were welcome.

I considered getting involved in Debian, but the barriers to entry seemed high.

Those who got a little further along still found it hard to become productive on those projects:

It’s kind of like being handed a box full of random bicycle parts: it doesn’t help when you don’t know how they go together and just want to learn how to ride a bike.

People without a ton of experience get shunted off to side areas like docs and support, and those areas end up as the ladies’ auxiliary.

But on Dreamwidth and AO3…

What I like most is that there isn’t any attitude of “stand aside and leave the code to the grown-ups”. If there’s something that I’m able to contribute, however small, then the contribution is welcome.

And this one, which is my favourite:

Deep down, I had always assumed coding required this kind of special aptitude, something that I just didn’t have and never would. It lost its forbidding mystique when I learned that people I had assumed to be super-coders (surely born with keyboard attached!) had only started training a year ago. People without any prior experience! Women! Like me! Jesus! It’s like a barrier broke down in my mind.

So, what can we learn from this? Well, one thing I’ve learnt is that if anyone says, “Women just aren’t interested in technology” or “Women aren’t interested in open source,” it’s just not true. Women are interested, willing, able, and competent. They’re just not contributing to existing, dare I say “mainstream”, open source projects.

And this is great news! It’s great news for new projects. If you are starting up a new open source project, you have the opportunity to recruit these women.

Not every thought can be expressed in 140 characters

Sunday, July 26th, 2009

Paul Carr defends long articles on the web:

Sometimes I write long. I really don’t care if the Internet is supposed to be limited to 140 badly punctuated characters of nothingness or one-note blog posts designed to leave a tsetse fly with ADD wanting more. For every comment I see complaining about the length of this column, I will add an extra 100 words to the following week’s installment. Believe me when I say this is a battle that I will win.

Jakob Nielsen used to argue that people only wanted to read short articles on the web. And yet, his description of how people read web pages exactly matches the way I read the print version of the New York Times:

A key finding is that most website users don’t read all your words. Instead, they scan the text and pick out headlines, highlighted words, bulleted lists, and links. Scanning is even more prevalent for readers of email newsletters.

Too many of the articles in the New York Times offer boring opinions and occasionally interesting facts, which is why I end up scanning it, instead of reading it. But my attitude is different when it comes to my favorite weblogs. I’ve read many fascinating essays on weblogs. And some of them are long. Complex thoughts can not be expressed in 140 characters. I appreciate Paul Carr’s slam against Twitter.

Women in tech

Sunday, July 26th, 2009

Women in tech. Or rather, not really.

Anger in public

Sunday, July 26th, 2009

Robert Hoekman is writing about the death of “Tyler”, a pit bull dog. I find it unusual, and uncomfortable, to see this much anger in a public forum:

We were all so confident that Rachel, his would-be new owner, was the right person for him. We couldn’t have been more wrong.

Less than nine hours after leaving him in her care, she did the exact thing we explicitly told her not to do, the one thing that most blatantly defies common sense: she let him off of his leash. In less than nine hours, she took away everything we did, everything we hoped for, and every chance Tyler would ever have at living the life he deserved.

Tyler was depending on Rachel. We were depending on her. She failed at her commitment to love and support this wonderful, sweet, and loyal dog so miserably and so quickly that it has absolutely stunned each and every one of the amazing people that have volunteered their time and energy to bring Tyler home safely. Even worse, Rachel opted out of continuing to aid in the search, citing her outrageously absurd belief that Tyler would simply go back to doing what nature designed him to do best: be one with the Earth through his nomadic and migratory instincts.

People who never met Tyler, my wife, nor myself came to the area night after night, morning after morning. They hiked through the preserve. They walked neighborhoods. They posted flyers. They talked to everyone they came across. Every last one of them did so much more than Rachel could be bothered to do. Every one of them cared so much more than she ever could.

I wish more than words can say that last Saturday had never happened — that we had decided to keep Tyler ourselves and not brought him to his new owner’s apartment and said goodbye. I wish we had been able to see her naivete and arrogance before it was too late. I wish so many things were just slightly different than they were.

I will never forgive Rachel for her foolish and fatal decision. Tyler will never have the chance.

Even if “Rachel” is a fictional name, I assume that if I made an effort, I could find out this woman’s real name.

I’m curious if it is ever wise to express this much anger in a public setting? I’d be angry as hell if someone’s lack of responsibility lead to the death of an animal that I cared about, and I might even vent about the incident in public, but I don’t think I’d give enough details that other’s could figure out who I am talking about.

danah boyd on the generation gap regarding the perception of technology in a meeting

Sunday, July 26th, 2009

danah boyd on classroms, meeting, back channels and the generation gap:

My frustration at the anti-computer attitude goes beyond the generational gap of an academic conference. I’ve found that this same attitude tends to be present in many workplace environments. Blackberries and laptops are often frowned upon as distraction devices. As a result, few of my colleagues are in the habit of creating backchannels in business meetings. This drives me absolutely bonkers, especially when we’re talking about conference calls. I desperately, desperately want my colleagues to be on IM or IRC or some channel of real-time conversation during meetings. While I will fully admit that there are times when the only thing I have to contribute to such dialogue is snark, there are many more times when I really want clarifications, a quick question answered, or the ability to ask someone in the room to put the mic closer to the speaker without interrupting the speaker in the process.

I have become a “bad student.” I can no longer wander an art museum without asking a bazillion questions that the docent doesn’t know or won’t answer or desperately wanting access to information that goes beyond what’s on the brochure (like did you know that Rafael died from having too much sex!?!?!). I can’t pay attention in a lecture without looking up relevant content. And, in my world, every meeting and talk is enhanced through a backchannel of communication.

This isn’t simply a generational issue. In some ways, it’s a matter of approach. Every Wednesday, MSR New England has a guest speaker (if you wanna be notified of the talks, drop me an email). None of my colleagues brings a laptop. I do. And occasionally my interns do (although they often feel like they’re misbehaving when they do so they often don’t… I’m more stubborn than they are). My colleagues interrupt the talk with questions. (One admits that he asks questions because he’s more interested in talking to the speaker than listening… he also asks questions to stay awake.) I find the interruptions to the speaker to be weirdly inappropriate. I much much prefer to ask questions to Twitter, Wikipedia, and IRC/IM. Let the speaker do her/his thing… let me talk with the audience who is present and those who are not but might have thoughtful feedback. When I’m inspired, I ask questions. When I’m not, I zone out, computer or not.

My colleagues aren’t that much older than me but they come from a different set of traditions. They aren’t used to speaking to a room full of blue-glow faces. And they think it’s utterly fascinating that I poll my twitterverse about constructs of fairness while hearing a speaker talk about game theory. Am I learning what the speaker wants me to learn? Perhaps not. But I am learning and thinking and engaging.

I’m 31 years old. I’ve been online since I was a teen. I’ve grown up with this medium and I embrace each new device that brings me closer to being a cyborg. I want information at my fingertips now and always.

Left JOINs with Propel in Symfony

Sunday, July 26th, 2009

Here is the stupid, clumsy way that I tried to do a LEFT JOIN in Symfony:

$query = ”
SELECT bailiwick_question.*, count(bailiwick_answer.id) AS howManyAnswers
FROM bailiwick_question LEFT JOIN bailiwick_answer
ON bailiwick_question.id = bailiwick_answer.question_id
WHERE bailiwick_question.end_at > ‘” . date(’Y-m-d h-i-s’) . “‘
GROUP BY bailiwick_question.id
ORDER BY howManyAnswers desc
“;

$connection = Propel::getConnection();
$this->questionStatement = $connection->prepare($query);

$this->pager = new statementPager(null, 10);
$this->pager->setStatement($this->questionStatement);
$this->pager->setPage($request->getParameter(’page’, 1));
$this->pager->init();

Here is the way someone much smarter than I re-wrote the code:

$c = new Criteria();
$c->addJoin(BailiwickQuestionPeer::ID,BailiwickAnswerPeer::QUESTION_ID, Criteria::LEFT_JOIN);
$c->add(BailiwickQuestionPeer::END_AT, date(”Y-m-d h-i-s”), CRITERIA::GREATER_THAN);
$c->addSelectColumn(’bailiwick_question.*’);
$c->addGroupByColumn(BailiwickQuestionPeer::ID);
$c->addDescendingOrderByColumn(’COUNT(bailiwick_answer.id)’);
$questions = BailiwickQuestionPeer::doSelectStmt($c);

Stress can be good

Wednesday, July 15th, 2009

Jason Calacanis on stress:

Stress is a real issue. You can love what you do and have a problem managing the stress. I’ve watched friends work themselves into such anxiety and stress recently that it’s scary. You really need to be a centered person to not internalize the stress that comes from building a startup company. It’s not for everyone, and if you’re going to play in the startup world you have to learn to look at what we do as one giant game.

Some amount of stress is good, because it alerts you to things to focus on. When you’re ridding down the road and a deer jumps in front of your car you feel stress. Hopefully that stress makes you take action. The key is to be able to calm yourself down after the near miss and keep driving down the road.

Now, when I was a younger entrepreneur I would sweat it, but now that I’m older I really don’t get stressed out. It’s not that I don’t care about the things that cause stress, I do. I just don’t let that stress internalize. If a deer jumps out in front of me I respond quickly, but my heart doesn’t jump out of chest for two hours like it used to.

The people who don’t feel stress are the ones who look at things with perspective: Our lives in technology industry are really easy. We’re blessed to play in such a dynamic space that is, at the end of the day, one big fun research project. It’s a big, fun game we’re all in here–nothing more. Don’t take it so serious… play hard and enjoy it!

We get to build huge products that can become big businesses. If they don’t, you can just move on and do it again. Let’s face it, very few people have it as good as us in the technology industry.

Amazon’s EC2 vs Mosso

Monday, July 13th, 2009

We are about to launch a new project on Amazon’s EC2, so I’m looking for information about it. Jay Kuri has posted an in-depth review of the two, much worth reading:

One place where Amazon’s offering shines is in additional storage. Amazon offers EBS (Elastic Block Service) which lets you create large blocks of filesystem-level storage which can be mounted onto any instance. When configured this way, you pay per Gigabyte allocated. This is very important to those sites which require a significant amount of storage. Mosso does not offer mountable additional storage.

…Both Amazon’s EC2 and Mosso’s cloud-servers require you to pay for the bandwidth you use. In both cases, their costs are reasonable. Amazon is a bit cheaper here at $0.17 per gigabyte, compared to Mosso’s $0.22. Amazon’s prices drop as your bandwidth usage increases, but with the first drop at 10 Terabytes, not a lot of people are likely to notice that difference.

Interestingly, for inbound traffic, Mosso beats out Amazon with a rate of $0.08 per gigabyte to Amazon’s $0.10. This can make a difference if your service takes a lot of uploads or you do a lot of content aggregation. Generally speaking, however, unless your application has a somewhat inverted traffic pattern to most sites, this won’t make a huge difference for you.

…There is one difference between cloud servers and EC2 that can be extremely important. That is that Amazon enforces a strict 5-public-ip rule. This means that your company can only have 5 dedicated public IPs, regardless of how many servers you have. Note that I did not say application, this is a per-EC2-account rule. This can be a problem if your company hosts multiple sites, or if you have other public-IP requirements (such as SSL certificates for multiple sites for example.) Mosso does not have such a restriction. At Mosso, you have one public IP for every instance you have.

Mosso also provides reverse-DNS to your own domain, which can be very important for things such as email delivery. EC2 does not provide any method to edit reverse DNS. Among other things, this makes EC2 not feasible for anything requiring outbound email delivery. You can get around this by having a non-EC2 relay host for outbound email, but in many ways requiring an external host defeats the purpose of working within the cloud in the first place.

…On the whole Amazon EC2 and Mosso are very close competitors. Amazon loses out on CPU power per dollar spent, but Mosso costs a bit more per gigabyte of RAM. Mosso loses out on ‘extra storage’ but wins on general IO speed. Mosso has the advantage on individual server upgrades with it’s instant-upgrade features, but Amazon wins on large-scale deployment because of it’s API and solid auto-scaling options.

So which do you choose? If your application is particularly memory bound, requires a huge amount of disk space, or if you are at the higher end in terms of clustering requirements, Amazon’s EC2 is a good solution.

If that is not the case, however, EC2 just doesn’t hold up, cent for cent, against Mosso’s offerings. In my opinion, the combination of lower cost, better base CPU/RAM options and a smoother upgrade path make Mosso’s cloud-servers the clear winner.

Nostalgia for the lost relevance of print

Monday, July 13th, 2009

Jory Des Jardins writes with nostalgia about what print media used to be like:

I’m sure if I had stuck it out a bit more and not taken a new media job five years in I might have made more of a go of it. But things discouraged me about traditional media. It had an established power structure that made it nearly impossible to get noticed. I wrote things I was proud of on the side, while editing more established writers in the waking hours and writing uninspired copy as a freelancer. But I hadn’t really established a voice that was worthy of cashing in favors from editor friends of mine.

…I’d only hoped I would be able to pursue this growing interest in a model counter intuitive to the people I used to work for. A model that democratized media, to a large extent, and made possible a notion terrifying to most people like me who hinged their self-worth on “making it” in traditional media: that there’s a whole helluva lot of talent out there and it ain’t all on the Hearst, Conde Nast, or Time Warner payrolls. Traditional media just took in whom they could fit, who matched the pedigree, or who had an uncle who could introduce you to the editor, or who had this random bit of luck and was seen for what she could produce, and sometimes bonafide talent. But so may others could not even make it to the filter, let alone make a living at it.

Back in my print days, there was something so alluring about being one of a few selected, whose name would be committed to print. And there’s a whole community of folks, I’m sure, who still hold print sacred. I’m one of them, even as someone whose name has only made it via her work in new media. I fretted so long about being a part of it that even while it’s suffering I promise to someday return — if it will have me. Many bloggers who are doing just fine building platforms online still look at the book deal as the summit of success. I’ll know I’m fully evolved when I couldn’t care less about hardcover, softcover, or any cover.

Traditional media was hierarchical and often unfair. One’s actual talent was often overlooked due to the personal politics inside each organization. It is hard for me to feel nostalgia for the old model, though possibly I feel a slight nostalgia for the great era of photojournalism, when people like Henri Cartier-Bresson were at work, an era which was funded by the mass circulation magazines.

But all business models die, eventually. In the modern era, we’ve achieved the freedom to constantly re-invent ourselves. While this is occasionally stressful, it is a freedom that people have spent centuries fighting to establish. And this freedom is one of the most exciting aspects of being alive during this era. Karl Marx has a reputation for being critical of market based economies, but few people described our era as perfectly as he did:

Constant revolutionizing of production, uninterrupted disturbance of all social conditions, everlasting uncertainty and agitation distinguish the bourgeois epoch from all earlier ones. All fixed, fast frozen relations, with their train of ancient and venerable prejudices and opinions, are swept away, all new-formed ones become antiquated before they can ossify. All that is solid melts into the air, all that is holy is profaned, and man is at last compelled to face with sober senses his real condition of life and his relations with his kind.

The failures of crowd-sourcing

Sunday, July 12th, 2009

A very interesting conversation about the failures of crowd-sourcing (they are discussing the way images from the Library Of Congress (LOC) were tagged by users of Flickr):

This blog post caught my eye (hattip to george!):
“Lick This”: LOC, Flickr, and the Limits of Crowd Sourcing

The author argues that finding good content in the user-generated comments, tags, and notes is like finding a needle in a haystack. Using an LOC photo, the author explains,

There are 20-30 notes on the photograph and not one contains useful historical information to give context or help us understand the photograph. Most are throw-away jokes or comments, “I love this fabric!” and “Lick this” (referring to the woman’s forehead!). Most of the rest of the notes refer to the woman’s appearance or the composition of the picture. Almost useful is a little nested debate about the authenticity of the photograph–how staged was it?–but the discussion is hard to floow, involving hovering the mouse over each box to see the comment.

The author, Larry Cebula. a Public Historian at Eastern Washington University and Assistant Digital Archivist at the Washington State Digital Archives, argues,

The notes are mostly smart-ass remarks, the comments are empty, the tags are idiosyncratic. The frustrating thing is that there really is some crowdsourced gold withing the flood of junk, such as the transcriptions of hand-lettered signs in the windows of the Brockton Enterprise newspaper office in this photo.

There follows a good discussion in the comments, so go check it out if this subject interests you.

I looked on the comments on some of the images, and I agree that there is a lot of waste. Some photos have 20 or more people who simply posted (on the photo itself) “Cool pix!”

For my part, I am a big believer in the potential of crowd sourcing, but I don’t see many sites capturing that potential. I think crowd sourcing works best when the crowd can be offered some kind of incentive, perhaps with a raffle, or a prize, or something free, or an outright offer of money. Some kind of incentive would, I think, raise the average quality of the responses.

The difference between Windows programmers and Unix programmers

Sunday, July 12th, 2009

I stumbled upon this old post by Joel Spolsky:

What’s left is cultural differences. Yes, we all eat food, but over there, they eat raw fish with rice using wood sticks, while over here, we eat slabs of ground cow on bread with our hands. A cultural difference doesn’t mean that American stomachs can’t digest sushi or that Japanese stomachs can’t digest Big Macs, and it doesn’t mean that there aren’t lots of Americans who eat sushi or Japanese who eat burgers, but it does mean that Americans getting off the plane for the first time in Tokyo are confronted with an overwhelming feeling that this place is strange, dammit, and no amount of philosophizing about how underneath we’re all the same, we all love and work and sing and die will overcome the fact that Americans and Japanese can never really get comfortable with each others’ toilet arrangements.

…What are the cultural differences between Unix and Windows programmers? There are many details and subtleties, but for the most part it comes down to one thing: Unix culture values code which is useful to other programmers, while Windows culture values code which is useful to non-programmers.

…The cultural schism is so sharp that Unix has never really made any inroads on the desktop. Aunt Marge can’t really use Unix, and repeated efforts to make a pretty front end for Unix that Aunt Marge can use have failed, entirely because these efforts were done by programmers who were steeped in the Unix culture. For example, Unix has a value of separating policy from mechanism which, historically, came from the designers of X. This directly led to a schism in user interfaces; nobody has ever quite been able to agree on all the details of how the desktop UI should work, and they think this is OK, because their culture values this diversity, but for Aunt Marge it is very much not OK to have to use a different UI to cut and paste in one program than she uses in another. So here we are, 20 years after Unix developers started trying to paint a good user interface on their systems, and we’re still at the point where the CEO of the biggest Linux vendor is telling people that home users should just use Windows. I have heard economists claim that Silicon Valley could never be recreated in, say, France, because the French culture puts such a high penalty on failure that entrepreneurs are not willing to risk it. Maybe the same thing is true of Linux: it may never be a desktop operating system because the culture values things which prevent it. OS X is the proof: Apple finally created Unix for Aunt Marge, but only because the engineers and managers at Apple were firmly of the end-user culture (which I’ve been imperialistically calling “the Windows Culture” even though historically it originated at Apple).

…There are too many monocultural programmers who, like the typical American kid who never left St. Paul, Minnesota, can’t quite tell the difference between a cultural value and a core human value. I’ve encountered too many Unix programmers who sneer at Windows programming, thinking that Windows is heathen and stupid. Raymond all too frequently falls into the trap of disparaging the values of other cultures without considering where they came from. It’s rather rare to find such bigotry among Windows programmers, who are, on the whole, solution-oriented and non-ideological. At the very least, Windows programmers will concede the faults of their culture and say pragmatically, “Look, if you want to sell a word processor to a lot of people, it has to run on their computers, and if that means we use the Evil Registry instead of elegant ~/.rc files to store our settings, so be it.” The very fact that the Unix world is so full of self-righteous cultural superiority, “advocacy,” and slashdot-karma-whoring sectarianism while the Windows world is more practical (”yeah, whatever, I just need to make a living here”) stems from a culture that feels itself under siege, unable to break out of the server closet and hobbyist market and onto the mainstream desktop.

I disagree with his defense of Windows. While there are many fantastic Windows programmers, brilliance is not what this culture is about. Spolsky puts the best face on it when he says “…Windows programmers, who are, on the whole, solution-oriented and non-ideological.” One has to be careful when generalizing about so many people, but I think the average Windows programmer doesn’t really care about programming. To say they are “non-ideological” is to put a positive spin on apathy.

Spolsky is exactly right when he sums up Windows programmers as having this attitude: “yeah, whatever, I just need to make a living here”. That is the attitude that I see everywhere when looking at Windows programmers. In general, people who go into Windows programming tend to simply be in it for the money. People who are, instead, attracted to Unix or Linux tend to be people who really care about the art of programming. Because of this, software built using .NET often sucks, whereas code written on Unix/Linux platforms is often very good.

Look at the best known web sites built various technologies: MySpace was built with .NET and it is a permanent disaster, always full of bugs. Meanwhile, Facebook was written in PHP on a Unix stack, and its architecture is so beautiful that they write about it in books called Beautiful Architecture.

Again, I’ll repeat, there are a lot of great Windows programmers, and you can write great software using .NET. However, overall, I think the Windows platform attracts people who simply want a job, and their lack of concern about quality is reflected in the code they churn out. By comparison, the Unix/Linux platform tends to attract people who care passionately about the quality of the code they write, so the software on this platform tends to be of a better quality.