Thursday, December 17, 2009

Delusions of Adequacy

As I sit here sipping my Bruegger's coffee, young adults laughing it up and jostling the chairs behind me, I'm thinking of a small patch job I am nearly finished with on the MindsetProject.org site. More precisely, how frustrating it was to do the patch.

The kids move on. Things are quieter now. I'm listening to the Imogen Heap channel on Pandora. In another post I referred to the "light rust" on my technical skills. That's just a metaphor. The deeper feeling is that I've always been outside looking in, regardless of my skills. Since technical leadership was never the fundamental cause of that issue, I don't consider it the solution either. In my very first paying job, I didn't even know the programming languages or have any genuine experience working with databases... but I spent a lot of time understanding the requirements and putting in place scripted procedures to ensure that assumptions were verified and the rationales for decisions were documented... and I learned to use source control on everything, including the database schemata. These are things I still see programmers failing to do, even in what they consider "best practice".

Regina Spektor screeches out a tune about blue lips on Pandora. She's the weird one with the cool tune on the Apple commercial. The process we follow has a deep effect on what we can accomplish. Like a lever, a good process can extend the span over which useful work can be performed, and a bad process will naturally act to reduce your effective span. As a 4GL developer, I had a very effective process for producing solid applications that not only did not crash, but addressed the concerns of many different stakeholders. I don't feel like I've had that sense of effectiveness in development using the Joomla code base. I am managing the problems of patching code bases, but not crunching out large chunks of solid code like before.

It isn't a good feeling, like trying to program while wearing mittens. Imogen Heap asks now "Where are we? What the hell is going on?" on Pandora. It is a good question. My code works, but does it fit into a larger scheme of things? Where is the migration path? The latter problem is as much or more a broader problem with modern business model of Web development, fractured as it is by cut-rate competition and the tendency of the business community to respect corruption more than honest assessments. There will be no maturing of the discipline when the discipline itself is just a subterfuge. I suppose that's why I'm ambivalent about the Agile rhetoric: on the one hand, it appeals to my objectivist tendencies; on the other hand, as with any practice it is no better than the practitioners, many of whom seem to be just as rationalizing as the best of the Big Methodology gurus of previous generations.

Maybe it is my scruples again. Even if you get something built effectively, how ethical is it to construct a building that a customer cannot afford to maintain? How ethical is it to build the building without bringing up the real and potential support costs? Many of the software systems built today are like Bucky Fuller's 1960's tensegrity domes: really spiffy to look at, but making additions later on is always a engineering feat with bespoke parts rather than a construction project using commodity materials. Does that small business realize that, should they ever want to extend that nifty Web app you built at the customer's expense, you will hold your own possession of the code and your in-house hosting of the running system as a bargaining chip? Does it make any sense at all for a customer to pay to put the on-going hosting of mission-critical enterprise applications in the hands of a software development company, without which the company itself could fail? To me, that's like an otherwise healthy human putting themselves on life-support machinery.

What is practical? Well, what I'm hearing from all sides is that Ruby On Rails and Mac OSX just work. eXtreme Programming is a working software team practice. Scrum seems to kind-of-sort-of help people in big institutions hedge against some of the pathologies intrinsic to that environment. Providing stateless ("REST") Web Service programming interfaces is a good thing. Yet architecturally, the World Wide Web is such a rats nest of ad-hoc-ery -- even at the so-called "Standards" level -- that people really need to go the extra mile to separate their actual business concerns from the misconceptions and false-premises of the medium.

Don't be deluded; few investments into Web technologies are ever truly adequate. Most of the Web has been engineered for obsolescence.

Sunday, December 13, 2009

Idea for SplotchUp!

I've been searching for a reason to begin working on the Splotch Up site. Many of the people at the Web Design Meetup suggested concepts and thoughts on usability or touched on the means to the end -- mainly in the model of socially edited networks -- but I lacked the compelling reason why anyone would choose to put the effort out or visit the site. A recent Infonomics piece suggests a reason: as a legal defense.

As it happens, a company which cannot demonstrate that it knows its own resources also cannot provide an effective defense against claims of neglect, malfeasance, legally inadmissible documentation, etc.

To quote Hugh Laurie as fictional character Dr. House, "Everybody lies." Knowing your own process is in general a good thing, but it is dreadfully difficult to define business processes with precision and extremely resource intensive to do so with any reasonable accuracy over time. I learned this lesson acutely through my years developing enterprise quality systems, particularly change management tools to support ISO9001 implementations. What I found was the broader business analog to what Dr. David Parnas (an early advocate of the concept of encapsulation in modular programming) wrote about in his snarkily titled paper, "A Rational Design Process: How and Why To Fake It". Our institutions are us, and to the extent that we have a tendency to make stuff up, so do our institutions.

Legally, documentation is used as a form of forensic evidence. Just as DNA can degrade over time so do other forms of forensic evidence. That includes documentation. Like many engineers of his time, Parnas was a strong advocate of precise documentation; the problem is that the more you invest in documentation which does not participate fully in the enacted process, the less you have to enact the process, and the greater the real depreciation will be in the documentation asset. When was the last time your accounting rolls listed the value of your documentation or the amount they depreciated over the past year? Probably never. So right there you have an obvious contradiction between ideological business doctrine and its practice.

Weinberg described the ethical conditions, particularly incongruities between the values of employees and the values reflected by the institutional practices. The lack of congruence led to what he termed cognitive dissonance. The static picture offered by ISO9000 motivated approaches to documentation are bad to the extent that it cannot effectively document what is necessarily a set of dynamically interleaving, fluid processes. The typical solution is to reduce the precision, introduce weasel-wording and hedging language, and basically make process documentation read like a tome of Nostradamus: easily interpreted to mean anything the reader wishes to infer. That is also known as plausible deniability.

Your garden-variety Big Corporation process documentation is just a means of covering up one's legal backside, and is only secondarily a business or engineering artifact. That's the chief fallacy of standards like ISO9000 and CMM. They are meant to provide a framework for cover for ethical incongruences -- that is, they are lie management platforms. That may be why such companies come up against such high levels of dissonance when attempting to incorporate XP or other Agile methods.

Your garden-variety Small Company on the other hand, cannot afford big up front documentation, but lack of some form of resource identification is an absolute roadblock to scaling up and dealing with situations rationally. Whether you're small or big, it is generally your people acting heroically to save your skin when things go wrong. When properly utilized however, documentation is an intrinsic part of the enacted system, not a waste product produced as a side-effect of the process. Or rather, it is both a side-effect of the process as well as a product that re-enters the food chain in the next cycle. Enabling that is what Splotch Up is about.

Tuesday, December 8, 2009

Another pain point

Another thing that I find really, truly, persistently, and totally pissing me off is all the problems with performance and stability on my Windows XP laptop. I've gotten to the point that I never want to use anything labeled with the Lenovo or Microsoft brands ever again. Every time the system takes forever and a day to respond to a mouse click, or stops responding after "recommended updates" were applied, I have to fight the urge to toss the laptop keyboard over screen off the desk.

I have to admit that I personally stress the system a bit more than most, but probably not half as much as do many other developers. I don't know why but Windows is still unstable after all these years, and I trust Microsoft implicitly to get it wrong again with Windows 7. Check your Google and compare "OSX Crashing" vs "Windows 7 Crashing". Yeah, even OSX crashes, but not as routinely. My experience with UNIX style systems says that the crashes won't increase exponentially over time as they seem to have done on every new Windows system I've ever owned.

Why should anyone have to put up with defective software? Whether I'm working or recreating, my patience is too valuable a thing to waste on Windows.

A possible solution: a laptop OS that runs exclusively as a virtual machine, the way VMWare or XEN work. Nothing ever really gets installed on the base OS, but instead is inserted into its own virtualization compartment. Compartments could be federated under this method, so that I could chose how devices and apps are bundled to make a runnable session, and if one compartment causes a session to crash that compartment could be isolated.

Doing Something Worthy of Doing

I'm constantly pulled back to this train of thought: of the options that are sometimes placed before me, and the few that I had enough understanding of to consider pursuing, are they worthy of my attention?

What, seriously, has come up in the past several months, and why am I not on track pursuing one of them? Instead I continue to waiver, unsure of myself, not unwilling to commit to the right cause but never less sure of the right causes to which to commit.

Scientific coding. I had a small job to port an algorithm from Maple to C++. However, it was in the spring and I was not able to complete the task while taking care of finals and graduation. Mostly I had roadblocking questions about the Maple code and lost touch with the professor for too long. I let the prof. down and now consider it a missed opportunity.

Web business. Some friends have talked about this from time to time. Various ideas from a system to order printed materials; course survey system for small colleges; dog kennel club store; a "heartbeat" notification site that triggers actions when someone stops visiting; a Web 2.0 design tool using Inkscape; SplotchUp, whatever social networking that was supposed to be; virtual flyerwalls... a lot of curious thoughts without a reasonable idea for return. People say you need to take risks but that implies you have some means of judging risk to begin with, and I could never manage to put a confident story together that would say "go ahead with it".

One thing I know, is that altruism is destroying me. I feel unable to withhold, yet also unable to leverage the kinds of benefits I see others gaining from their efforts. Even with the open source projects like Atramentum, the real benefit is building connections to people -- users and collaborators -- and *pfft* the few bites I got there evaporated. And in business, where the "hook" is everything, I find myself unable to present myself with strings attached or to be assertive enough to compete effectively for business.

Even still, people distrust me and go with those obviously intent on doing them wrong. I'm the "nice guy" at whom everyone smiles, yet who is shunned in every circle. It has been this way since I can remember, the sense of isolation ever clouding my thoughts. Sometimes that sense of marginalization becomes acutely painful, the mental equivalent of when I was told to work in a freezing pool of water, my muscles shaking so violently I barely had the coordination to crawl out. I still don't know where I fit in this world.

When almost nobody is interested in what you have to say or can do, where is the sense in doing anything at all? Intimacy is among the most basic of human needs, and when it remains unfulfilled we starve just as surely as if we were going without food.

In the end it all sums up to nothing, just so much shouting into the wind.

Sunday, December 6, 2009

Pain points

They say that when you're an entrepreneur, you look for a pain point and do something to reduce the pain. That gives you a narrative, a reason for being, The Story for why people should care. So I ask myself what are my pain points?

Based on my previous post, that might be obvious. I'm not giving up all forms of social networking, but I'm also not going to keep dumping effort into fighting a battle I cannot win. I'm an INTJ; my strength is in systemic thinking, and I gravitate toward understanding the nature of things -- these are not characteristics of business networkers driven by hope of monetary gain. My pain point here is that I see a huge amount of effort put into manipulating people, and very little into the advancement of the human condition.

Now, I'm not writing that there isn't pure research going on in the academic world, or that entrepreneurs aught to be doing research or aught not to be seeking profit. Really, a lot of what is out there on the 'net is just entertainment which does nothing to establish the conditions necessary for sustained healthy growth, lowering of real costs of energy, or any deepening of knowledge. One good thing I see is that some knowledge -- with a lot of noise -- is more broadly disseminated due to the Web.

That general pattern, Web as Cross-Polinator, has been with us from before the inception of the Web, by way of the DARPA internet. It would be an overstatement to claim it is THE fundamental pattern of Web solutions from which all others derive, but not by much. So perhaps my "pain point" can be restated in a way that fits with this pattern. We are destroying our very futures by putting effort and money into lifestyles that don't lead to lasting benefit for future generations. People playing on Second Life, Facebook Games, and other superficial social networking; building software as services to solve trivial tactical issues while entangling companies in intractably expensive integration scenarios; and individuals pissing away their personal assets on consumer goods that raise more problems than they solve. There is always an aspect of utility to each of these areas, just as NASA's long history of failures inevitably spawns important data (by design) and interesting technologies (by side-effect). But the ratios of cost:benefit and of pleasurable-short-term-benefit:intangible-lasting-benefit are completely lopsided.

We also allow "long term" to be misanthropically applied by power-hungry radicals with anachronistic political agendas. I've been guilty of using that speech pattern myself in software. I initially adopted that language from studying the make-believe Quality programs of the '90s, which were based on cold-war politics and Big Methodology mentality. Long term or systemic thinking neither implies nor requires greater centralization. And proper evaluation of the relative worth of a technology or practice is made all that much more difficult when a few institutions dominate many people. Better to spread the value judgments around and use randomness to cancel out the effects of corruption and poor integrity, than to concentrate them in one place with strong personal and institutional biases dominating the process.

R.B.Fuller posited that we should be seeking systematic solutions to problems through apolitical design. Yet even his legacy appears on the face to be corrupted by people who use monetary awards to marginalize those who do not share a left-of-center political agenda. Reward mechanisms are inevitably driven by ideologies. How do we make rational, objective valuation judgments without allowing personal agendas to overtake and game the economic system or even just a social Web system set up to fund truly beneficial projects? How is "truly beneficial" defined in practice? This is our national pain point, and one which I realize has deeply affected my own job search in recent years.

Thursday, December 3, 2009

Is Social Networking a Fraud?

I never was particularly good at navigating human social networks, so what makes all you social networking lemmings think that someone like me is going to do any better just because I'm on Facebook or LinkedIn? To paraphrase R.B.Fuller, the most important thing about me is that I'm an average, ordinary human being. So even to my friends, I'm virtually invisible.

There is a vanishingly small probability that any one of you social types will ever see my posts, let alone bother to read through them, let alone be able to make out the words with more than two syllables. I can't help it that the working memories of social networkers are limited to fewer than 60 characters... most of us ordinary humans still think in terms of narratives, like the "sentences" and "paragraphs" we learned when pencils were still made from trees.

As an experiment, try placing a "salt" text somewhere on your Facebook profile. I used "A TREE FALLS IN THE FOREST", and added an instruction to anyone who saw it to post it to my wall. In the whole year, one person took the bait. So for all intents and purposes, the time I put into filling in information on Facebook is wasted. Ditto for this blog. I'm invisible. Virtually no one will read it. On the other hand, Facebook gets real monetary value from me filling out all that demographic information for them, and I get nothing out of it myself.

So here's my thesis: social networking tools are not additive but multiplicative. If you're already skilled at the art of making friends and holding together social relationships, social networking will multiply your reach. If, like me, you can be absent from an event and have everyone swear you were there; you speak loudly yet people right in front of you consistently fail to register your voice; or you remember most acquaintances with clarity but they haven't the foggiest idea of who you are; then your multiplier is somewhere between 0 and 1 exclusive. The fact that everyone knows your profile sits out there, comfortably ignorable, renders us even more invisible.

As a corollary to this hypothesis, I conjecture that were I not even using a social networking tool, I would have at least stuck out by virtue of my absence. This is based on my long experience having my speech ignored: I learned that lowering my volume was much more effective at gaining the attention of those around me, than was raising it. I remember family telling me that my problem was I spoke too softly; in fact it was just such a feint which gave them this impression.

The real bottom line is this: after a couple of years of use, I'm not feeling, seeing, or obtaining any material benefit from using social networking services. I see no particular reason why I should expect anything different by continuing to do the same thing. So the natural conclusion is that I should stop, and divert my attention elsewhere.

The Fallacy of Social Media

The fallacy of social media is that it can turn a non-social personality into a well-connected socialite. Take a close look at the people who are able to leverage Twitter, LinkedIn, Facebook, etc and those who use these tools a LOT but never quite make the cut. I think what you'll find is that the social networking tools can have a multiplying effect for those with strong external networking skills, but are just a time sucking device for those who are not otherwise socially inclined.

Over the years that I've been on Facebook and Blogger, many have seen and ignored my Facebook posts and few have bothered to read my Blogger entries even when posted to Facebook. Why should they? For one thing, my interests are arcane and obscure. For another, other than occasional blowups they mostly are not excited tirades. To quote RB Fuller, the most special thing about me is that I'm an average, ordinary human being. I'm just not worth knowing. The sad truth is, the people we do pay attention to aren't really any more worth knowing either, it's just because of cosmetic factors or conceptions of affiliation which are largely unfounded.

But who really benefits from us socially inept types? As an experiment, I posted the salt phrase "A TREE FALLS IN THE FOREST" to my personal Facebook profile, and asked anyone who saw it to post the phrase to my wall. Over the following months, no one noticed. Over a year, one old friend noticed and took the bait. After that, no one else. So my profile is essentially unnoticed by 99% of my own network. Why bother filling it out? The only real beneficiary is Facebook itself, which is now valued in the billions. I'm certainly not against a company making money, but it was my time, my effort, and my demographic data that they are using to do it, and I'm not getting a material benefit from it.

My advice? Blog if you will. I do it for self therapy, not because I expect a following. I fully understand that I have been and probably always will be the proverbial tree falling in the forest. Don't invest your time and demographics in Facebook unless you can reasonably expect to get measurable, material results in exchange for your disclosures. Got someone to talk to already? Then go ahead and tweet, post, and text them. But don't make the mistake that these tools will substantially change the number of genuine friends you make. If people don't already naturally gravitate toward you in real life, real people won't gravitate to you on Facebook or Twitter either. You can chose to pretend (in which case you're selling your soul for a false sense of intimacy) or become embittered (in which case you're just ruining the experience for everyone else), but perhaps the best thing to do is to allow the kids to enjoy their promiscuous social networking and focus on more rewarding things in life.

OS/2 Presentation Manager: A Superior Desktop?

I'm increasingly frustrated by the erratic performance of my Windows machines. The software is so extremely kludged, so inconsistent in implementation, and so ridiculously bloated with unnecessary features. As a patched together DOS-based ripoff of the Macintosh GUI, Windows took the market because (a) it ran on PC clones (b) it did not require the level of administration that UNIX (ne Linux) workstations imposed and (c) the WIMPy interface meant that untrained, unskilled, and illiterate people could think of themselves as computer experts and could do some practical stuff while they otherwise were wasting their time. How the tables have turned.

Now, the desktop most widely recognized as superior by both Liberal Arts majors and techies alike is a UNIX-based system: Mac OSX. As an acquaintance in the Ruby community told me bluntly, he regarded a potential employer as completely unsuitable after they informed him of their requirement that developers only use Windows machines. Apparently they "had a contract with the vendor". I don't know him well, but his reputation is of an objective, rational thinker prone to taking measurements of his own productivity. It isn't just an artsy thing: Mac OSX does seem to let people get more done.

OpenStep is the Solaris cousin to the NeXTSTEP desktop now sported by OSX. My memory is that OpenStep developed in conjunction with the Corba Object Request Broker technology, and later forked from it. Another desktop with this property was OS/2's Presentation Manager, or more particularly the Workplace Shell.

Now, here's where the title comes in: any of IBM's languages with Corba (SOM) bindings could extend any of the desktop primitives. REXX had such a binding, and I found it trivial to inherit new folder types that automatically created sub-folder structures with standarized instances of files, and implemented type-specific menu methods. While you can monkey around with Windows desktop hooks to fudge up the menus, it really is not the same thing. On OS/2's workplace shell you could glue together entire applications by inheriting and extending the desktop objects. When you did it, it worked like you expected it. And you could do it all just by writing a bit of built-in scripting. Very nice indeed.

My experience at the time was that from a productivity standpoint the OS/2 solution was far superior to the Windows NT user interface. But where OS/2 was the overweight alternative at the time, now that title clearly belongs to Windows 7. That's an irony, because the UNIX/OpenStep workstation represented by Mac OSX is a kind of an intellectual successor to the OS/2 workplace shell (if not strictly a successor in terms of code).