Chad Perrin: SOB

27 June 2006

Analyzing Web 2.0 (and the 98% rule)

Filed under: Cognition,Geek,Metalog — apotheon @ 05:54

What’s all this Web 2.0 nonsense about?

I give it about another three years before the term “Web 2.0” is nearly meaningless. It’s already at the “powerful buzzword” phase, which means it’s probably just about cresting before heading screaming downhill. That’s not to say that it won’t enjoy a few more years of increasing media hype and buzzword-compliance. It’s just taking off in those regards. It won’t be long before anything worth learning from the term and the phenomenon it attempts to label is behind us, though.

It’s amusing that we’re already at this point, and people are still trying to define it. For the most part, people don’t know what it is. There are quite a few who think they know what it means, but they represent maybe 2% of the people who’ve heard the term. There are people who really know what it means, but they represent maybe 2% of the people who think they know what it means. Of them, probably 2% can articulate what they know, putting it into words that accurately reflect that knowledge.

I, of course, claim to be one of these lucky/thoughtful/informed elite. While there may be many definitions of what makes up Web 2.0 that are accurate (probably one for every person that can come up with an accurate definition — two, in some cases), that doesn’t make any of them less accurate. Part of the problem of trying to define it in words, of course, is the fact that to be accurate, it must encompass what’s valuable about the phenomenon. Most people, when they set out to define it, never really realize that fact (consciously, at least). Instead, they set out to define it by describing it in terms of epiphenomena, of symptoms, and of weird behaviors. I’ll take a whack at explaining my take on what’s valuable about the Web 2.0 phenomenon.

This whole Web 2.0 thing is built around the goal of filtering for value via organic, self-regulating processes. It’s marketing and content aggregation and presentation and interactivity that leverages fundamental economic laws of competition and (especially) cooperation to make stuff better and more appealing. The core of this is tied up in the following ideas:

  • Content is king.
  • The customer is always right (in the aggregate).
  • Doing the daily work of finding good content is, itself, content.
  • Naturally self-sustaining systems work better (naturally).
  • People respond best when they have a personal stake.
  • People trust word of mouth, not marketing.

In other words, you’ll do best if you focus on content (even if it’s not your own content), generate content about content, involve the customer base in product development, and make use of the desires of the customer base to create a system that runs itself. It’s a reapplication of the same principles that make open source software development and Wikipedia work. The best blogs and blogging communities have been using this stuff since the late ’90s. It’s free market capitalism with information as its currency and its primary commodity. You can be most successful within this paradigm of digitally connected society by facilitating what people want to do anyway, and unobtrusively reaping benefits from their activities — not by trying to coerce or trick people into giving you money to be able to do it, since they’ll just find a way to do it without you.

Linking to others is a good thing within this realm of interaction: it’s a good thing for both the linker and the linkee. You can encourage more people to link to you by supporting trackbacks and pingbacks, both of which aid you by letting you know who’s talking about you, and by directing people to related websites, thus increasing those other websites’ search engine rankings, which in turn increases yours via the links. It also helps them, because they get links back automatically. Best of all, you don’t have to spend a significant part of every day parsing webserver logs by eye to make it happen. It’s automatic, creates cooperative social effects, and helps link related materials to each other which is beneficial to the reader — your customer base (even if you’re not making any money off them).

It must seem counterintuitive to traditional, corporate businessmen, this notion that success comes from helping your competitors. It works, though. It works brilliantly.

The traditional approach is of course to monopolize the market, consolidate power under your own thumb, shut others out, and willfully hurt the competition. It assumes a set of axioms that leads one to expend all energy in “winning” by making everyone else lose. It’s based on a zero-sum game model of economics, which is in fact antithetical to a truly free market — thus supporting my long-standing and oft-repeated thesis regarding the incompatibility of corporatism and free market capitalism. Corporations only survive by shutting out the little guy because, all else being equal, the agility and innovation of the little guys will obsolesce the big lumbering corporate giants in a New York minute.

Cooperative capitalism works, though. The guy who wins is the most (effectively) cooperative. The only fly in the ointment is the incursion of corporate interests and legislation into the otherwise free market domain: while such influences haven’t much hope of affecting the evolving socioeconomic system of Web culture in the short term, they do tend to produce small-scale unexpected and paradoxical results. To the extent that corporatism and governmental interference (kind of redundant, since corporatism is a result of governmental interference) affect an otherwise free market system, that system loses benefits of the liberty of its market environment. Luckily for us, the Internet was originally designed to route around, and organically “repair”, damage to its infrastructure — and this limited physical infrastructure independence of the network has contributed to a limited sociopolitical infrastructure independence as well. It’s going to be a long, hard slog for government and Microsoft to get its hooks into the Web enough to do any real damage to it in the aggregate.

Unluckily for us, the efforts to make that sort of thing happen are increasing in focus, energy, and (analogously) murderous intent. Notice what’s going on in Congress (“net neutrality” legislation is just more government interference), in business (software patents and efforts to restrict the growth of the open source software community are the real danger to net neutrality), and in world politics (the UN wants to take charge of the Internet — the same organization that elected Libya to chairmanship of its Human Rights Commission and thinks that human rights are best served by declaring the US a “rogue nation” for its refusal to violate its own Bill of Rights on key issues). We, as the liberty-minded citizens of the World Wide Web, have the advantage, but we have powerful enemies.

The term Web 2.0 is really just a bit more buzzwordism, but it is used to label something that is, in concept, the application of all the principles of both effective cooperation and liberty to digital network media. Understand it and use it to your own (long-term) benefit, with integrity, honesty, and an eye toward going with its flow rather than attempting to manipulate it to your own ends: that will serve you best, if you’re at all competent, and will likely prove the best weapon against destroying any value the Web has by catering to governmental and corporate interests.

Ironically, there’s nothing to ping for trackbacks or pingbacks in this SOB entry. Go fig.

As Old as What You Do

Filed under: Geek,Liberty,Metalog — apotheon @ 05:17

Last night, I was elected to the Larimer County Libertarian Party Board of Directors. Being on a board of directors isn’t a requirement for being old, but I think being old is a requirement for being on a board of directors. I’m now officially old.

Apparently, the board meetings now take place in a shopping center diagonally across an intersection from the neighborhood in which I live. I showed up to a meeting and, next thing I knew, I was on the board.

Later this week, I’ll help the Chairman figure out why he seems to be the only person that can’t send emails to the mailing list. In the process of trying to sort that problem out last night, we discovered that Barnes & Noble now has a deal with AT&T Wireless so that you have to pay real money to use their network. Darn them. I’ll be getting my non-home wireless access somewhere else from now on — which means I won’t be buying their food while connecting to the Internet away from home.

24 June 2006

throw two away: programming practice and incompatible APIs

Filed under: Geek,Metalog — apotheon @ 06:29

programming practice

In an entry at Chip’s Quips, Sterling discusses the various approaches to software development planning (or not) that have occupied him recently. From his presentation of others’ (un)common practices, I get this as a good way to handle things, complete with euphemistic jargon that could cover your arse (aka leverage a common contextual linguistic paradigm to enhance communicative synergy — “communicative” like a disease, that is):

  1. Prototyping! This is also known as the plan to throw one away[1] approach to programming — mostly depending on what audience you address. Call it “plan to throw one away” when talking to hackers, and “prototyping” when talking to bosses and clients.
  2. Requirements Phase! At this point, you spec out your project and expend some real effort in properly designing the software you’re going to write. That done, you write the application according to your plan. This takes advantage of the lessons learned from the head-first approach to programming taken in the prototyping phase.
  3. Refactoring! If you do it cleverly, you can basically rewrite the parts of the application that suffered from overdesign in the second phase, and everyone waiting on the final product will believe this is a necessary part of the process. Between the second and third phases, you’d do something you might call “beta testing”. This third phase should really be a rearchitecting of key parts of the system in most cases.

So: how do you get your boss(es) and/or client(s) to let you write the application three times — to use a throw two away development technique? Surely, they’ll throw a fit!

  • Do the prototyping in a “prototyping language”. This should consist of whatever language allows you to get the job done most quickly without worrying about maintainability by legions of mediocre code monkeys who will follow in your footsteps, and without worrying about whether anyone will ever approve your language for production code under current work circumstances, even if it’s a far better fit for the project than what they ultimately make you use in phases two and three. I can pretty much guarantee that if you do the prototyping phase in Common Lisp or Haskell nobody will ever try to tell you that you have to finish the project with the current prototype as your codebase, and you’ll be able to continue the project properly. Use a language that makes you happy and would scare the people you have to satisfy if they thought you intended to write the end-result production code in that language. Depending on how badly mired your “responsible parties” are, you may even get to use something as pedestrian as Ruby, Python, or Perl for prototyping. On the other hand, if they’re a little too savvy for that (but not savvy enough to let you just do it right without having to jump through all these hoops), you may have to go so far as to use Logo as your prototyping language. When they hear you used “that turtle language”, I’m sure they’ll demand a second development phase post-haste.
  • Pick out a couple of things that absolutely cannot be missing from the final product to satisfy the guys with the red pens, but that aren’t actually critical to a good, solid, working application. Work on them last. Beta test before those parts are tacked on. Tell them you’ll have to defer finalization of those features until the refactoring phase to ensure an integrated whole for the application. If you plan properly, everything you say will be true. Yay, you win.

Alternatively, if you have the sort of boss or client that likes to think (s)he is cutting-edge and hip to the New Thing, all avant-garde an’ stuff, you can just throw around phrases like “agile programming” and do the “iterative organic project evolution” thing. It’s a little like prototyping and refactoring beta testing and doing proper project design to varying degrees from day one to delivery. In fact, I think all this Agile Manifesto stuff is mostly a scam used to fool bosses and clients into letting programmers do their jobs properly for a change, rather than satisfying line-counting productivity monitors and using Hungarian Notation and Waterfall development methodologies. Free at last, free at last, thank Alan Turing almighty, we are free at last! (I guess that would make Ada Lovelace the Holy Mother figure in some warped variation on the Catholic model.)

Next step: getting the Ancient Unix Dork Neckbeard approved for corporate work environments (again). Don’t we all want to be the crazy, grizzled old mountain men of the computing world some day? I think we all look forward to the day we can say to our own personal version of Dilbert, in a patronizing tone, “Here’s a nickel, kid. Buy yourself a real computer.”

[1]: The full quote is, in fact, “Plan to throw one away; you will anyhow.” The source is a seminal work of software development madd ninja skillz, called The Mythical Man-Month. Go follow the link in the main body of the above text. If you’d done that in the first place, you wouldn’t have to read this rambling footnote at all.

incompatible APIs

I decided to finally get a tag cloud going on SOB. I don’t really think a tag cloud increases the usability of this site at all, but I’m sure it’ll help with search engine ranking. Because good ol’ Sterling has forged ahead in the world of site tagging, and even gone the extra mile by writing his own tag cloud widget for WordPress, I found that procrastination has again paid off in spades: the hard stuff has already been done for me.

I thought so, anyhow. I was wrong. There were some problems, which I’ll address in reverse order[2]:

  1. Like an idiot, I didn’t realize at first that Sterling’s widget needed to go in the widgets directory.
  2. Of course, at first I didn’t have a widgets directory.
  3. You see, the Sidebar Widgets plugin is actually incompatible with the theme I’m using, so I had to hack both the theme and the plugin to get them to fit each other.
  4. That, of course, was only once I realized that I needed the Sidebar Widgets plugin, since Sterling neglected to mention that in the readme.txt file that explains how installation of his (excellent) tag cloud sidebar widget works. Hint hint. If I had you in my IM contact list, I’m sure I would have mentioned this privately, Sterling. Hint hint.

Seriously, once I got everything shoehorned into place, I was suitably impressed. I like. One lesson that I had reinforced for me in the process, however, is that even with such simple software as WordPress sidebar widgets it is of critical importance to standardize, and stick to, a good API. As much as I like the appearance and general behavior characteristics of the theme I’m using (which I’ve hacked up quite a bit, but not enough to alter the API that allows it to interact with everything else — or, in some cases, prevents it from interacting, as with the Sidebar Widgets plugin), the nonstandard format of sidebar markup proved a notable annoyance in this case. It was worth the effort, though, in the long run.

[2]: I could have sworn there was a CSS property that allowed one to have ordered lists count backwards without having to resort to using number images as the list style type, or something absurd like that. If there isn’t, there darned well should be, and if there is, I’m going to feel pretty stupid for trying to do this when I haven’t slept for about twenty-four hours and later realize I missed something obvious. So what else is new?

and the tag cloud widget

Sterling — you rule, by the way. That widget really is pretty slick. Thanks.

By the way . . . did you intend for it to never linebreak in the middle of tag links in that cloud, or is that a carry-over from the way the Jerome’s Keywords plugin works? I’m considering changing that behavior, since I’m starting to have fun with long tag names, and don’t particularly intend the tag cloud as a useful navigation feature for anyone but search engine indexing spiders anyway.

« Newer PostsOlder Posts »

All original content Copyright Chad Perrin: Distributed under the terms of the Open Works License