Programmers with the ‘downtrodden air of refugees’

How many times have you read or heard something and thought, ‘ah, that is what is bugging me!’. Today I had such a moment, while reading an essay of Paul Graham titled “You weren’t meant to have a boss”.

It starts with Paul observing a bunch of programmers on some “team-building” exercise and a hunch that something was not quite right about them. Pursuing that unease he arrives at a set of insights on what distinguishes programmers as founders and programmers as serfs! This is a must read.

I have worked in a variety of organizations, from dot-coms to large multi-nationals. The happiest I have been has been in dot-coms and consulting type organizations. And seldom has a large company surprised me in how it functions.

Just to whet your appetite, I bring a morsel from my scavenging, Bon appetite!

Working for a small company doesn’t ensure freedom. The tree structure of large organizations sets an upper bound on freedom, not a lower bound. The head of a small company may still choose to be a tyrant. The point is that a large organization is compelled by its structure to be one.

Twitter and Frameworks for Serendipity

“Allow users to define your app” goes the refrain from Josh Catone on ReadWriteWeb in this post.

Definitely an interesting notion. I too have been following Twitter and its Bartimaeus-que ability to shift shapes. Right from being able to add an expense thru to Xpensr, or being able to add a reminder to Sandy..Twitter seems a ubiquitous endpoint, much like a telephone, acting only as a conduit to carry commands to a given destination.

But this openness is not something that can be built consciously. It is difficult to predict which application would be more amenable to adaptation by users in brand new contexts, short of actually rolling out a product and seeing what sticks!

But a simple rule of thumb could be used-
i) Start from simple systems
ii) Change minimally when confronted with new need
iii) Yet retaining backward compatibility
iv) Serve
v) Repeat as required

Numerous examples come to mind to illustrate this but HTTP, TCP/IP standout as familiar examples. Anything that aspires to universality, it seems, ought to heed to the principles of evolution.

Bottom line, no amount of upfront planning is going to tell you with any certainity if users are going to ‘play’ with your application. Starting simple, listening to customers and a willingness to drop pre-conceived notions can inform whether the product you have is a framework for serendipity!

del.icio.us Tags: , ,
Reblog this post [with Zemanta]

Twitter, Hashtags and the 1 Letter Taxonomy

Jeff Jarvis started it, by wanting to use Twitter to post reviews of movies, books etc. Stowe Boys, rightly, pointed out that Hastags could be used to add metadata to individual messages, which Jeff acknowledged in an update to the original post.

Stowe seemed to have liked my comment about extending his original suggestion of using #* to mark all reviews.

My proposal was to have a one letter taxonomy under Hashtags, just like #* – one letter because we have already consumed 2 chars(3 if you include a space seperator), leaving only 137chars for content. And these would be the top level tags that one could apply. Further hashtags could, I suppose, be added as the author sees fit. My initial list follows-

Hashtag

Description

#* All reviews
#$ Finance related content
#? A question
#! Alerts
#+ Reminds of redcross, hence any humanitarian stuff
#^ Any geographic stuff(or fashion?)
#& Relationships
#, Continued from previous twitter message
#= Adult!
#’ Weather

Obviously, this is just a draft list. Would love to hear your thoughts, just drop comments or mail me at cr dot mahesh at gmail dot com.

As next steps we can create Yahoo Pipe based feeds to filter based on the type of hashtag one chooses to listen to. Or even PopFly. Could be a good time to play with both of these toolkits.

And what do you think of nanoformats? Microformats for Twitter! And the benefits listed for this would be applicable to our one letter taxonomy too.

For those getting to the party a little late- Twitter is a short message service, with a maximum length of 140 characters, that has a variety of means to push content to the web cloud. You would not be alone in thinking the content length restriction is a crippling limitation. But the uptake within the blogosphere indicates something big, albeit 140 chars at a time, could be brewing here. Be it covering disasters, conferences, reviews or just gossip its all done here. For instance I covered a training program on coaching skills on my twitter yesterday. There is a little more info about Twitter here in my earlier post.

I liken Twitter to a Haiku – the short form individual communication, as compared to the long form of blogs. And like Haiku, brevity of length does not always imply inability to bear meaning or beauty.

[update: Added hashtag for weather messages]

XAML Revolution

Found this via TimS blog, a brand new whitepaper that distills the experience of early forays into the WPF/XAML way of building rich user experiences.

The whitepaper is a much needed guide around how workflows between designers and developers may be organized. Its a quick read at under 17 pages but is filled with little nuggets of high level information. Not the syntax or API variety but around how to approach any project that aims to utilize this technology.

There are tons of material on the web around WPF but most of them only deal with it at the low level. There needs to be more such papers that give a more detailed picture around the lay of the land. Best practices around the life cycle of building and maintaining a WPF app needs to be brought out.

The highlight of the paper, for me though, has to be the following passage – Technically, XAML is not a language itself but a .NET serialization and initialization language. Therefore, XAML can represent more than the features in the WPF platform; it can represent any custom controls, new animations, etc., as well as any .NET object graph. In a way, one might conceive of XAML as code represented as XML.

Okay, now re-read that passage and think for a while. I think a significant portion WPF’s genius has to be in that single idea. Because if you think about it the notion of representing UI with markup is not new(HTML, XUL etc as the paper points out), nor is the notion of having code attached to specific events(VB, most RAD apps work this way).

But to have markup represent an arbitrary object graph is something unique, with implications far beyond WPF. In fact in the product I work on we have plans to investigate this option further. We have already evolved a markup based DSL to capture the behaviour of our system. The ease of having such a representation to encode behaviour cant be underestimated and we have countless instances where this has been a life saver.

Now, to return to the whitepaper. I wish more layers would be taken up for assessment in this series. Specifically I would love to see the following topics i) Security implications ii) Best practices for graphically intensive apps iii) Interop options(with Winforms etc) and pitfalls.

del.icio.us Tags: , , , , , ,

ODF, Metadata & what am I missing?

Today I discovered the weblog of Rob Weir called “An Antic Disposition“. Rob is a member of the OASIS ODF TC amongst others. The blog has been a delight so far – be it the technical content, the perspectives that are revealed or even just the list of books from his library, all indicate an individual with a richness of thought and perception that goes beyond the minutiae of technology and its implementation.

The specific post that caught my eye was the ODF gaining support for XML/RDF driven metadata framework. A metadata framework would allow application developers to provide the means to gather contextual information that allows interpretation of content within a document.

For example if you come across the term “711.25” within a document, how would you interpret it? Is it the price of something? Is it distance between two locations? Honestly, it could be anything. In this case it is the last trade price of Google as on 02 Nov 2007. Note what helps us disambiguate this number is multiple pieces of information i) Traded stock is Google ii) The number is the last trade price and iii) As on 02 Nov 2007. And that is just the start of what would be required to clearly interpret a number as one we just saw.

This is an admirable step for an open source effort but what I don’t get is this – Microsoft Office has had extensible metadata support since Office 2003. Especially on Word, using the Smart Document feature, one could attach a custom schema to the document and have it annotate content. The metadata lives interspersed with the content, allowing you to mark every fragment of text with XML tags and attributes that make disambiguation possible. We have used this feature for over 3 years and in spite of the niggles have realized that this feature adds the “Smart” to “SmartDocuments”!

Now, neither in the post or in any of the linking articles did I find a reference to the fact that this feature exists already elsewhere. Nothing wrong with it in principle but guess one can learn from prior art. Note that I restrict myself to metadata addition frameworks for office productivity applications, which I believe is the scope of ODF 1.2.

Am I missing something here? Would like to understand this better, Rob?

del.icio.us Tags: , , ,

Extreme Markup Languages..Oh dear!

When a conference is named as Extreme Markup Languages, you know the going could get a little rough! πŸ™‚

Just discovered this today and I found such a treasure house of ideas on the edge of advancements in XML and related areas.

Head there right away and at least read through the titles..

Some of ones that interested me..

Easy RDF for real-life system modeling

From Metadata to Personal Semantic Webs

Have fun!!

del.icio.us Tags: ,

Data Visualization

Software engineers are not the artistic type. For every algorithm and data structure they learn and practice, there are a hundred soft issues that do not think about. By soft issues I mean usability, aesthetics and all the general goo that makes us like something as humans.

Bloody hard to define and have one consistent answer, since each human is unique in how they view and receive something. To design beautiful software requires both engineering and aesthetic skills.

One reason why, I think,  engineers find it difficult to deal with aesthetics is because we are tied to a language and world that is rational, logic-bound and where ‘to measure’ means to understand something. The part of us, to most, that feels and perceives has languished without use. But it is my belief that aesthetics can be learnt, may be we won’t turn up into Rembrandts and Michelangelos overnight but hey we could at least decide what is a decent software UI.

On of the ways to achieve this is by seeing and thinking about good UIs, not necessarily of software, to begin with. This is the same technique that budding painters follow, to mimic a masterwork, so that the nuances of light and shade and the experience of yielding such a work come through.

I found such a site today via here. Just to whet your appetite, here is a familiar one based on mind map..

 Or a interesting twist on the old geographical map

  

Or something that makes me go ‘bloody hell’!

 

I understand this is not like learning the alphabets of visualization or designing good interfaces. But I have believed that learning a new language does not mean we stick to the simple stuff, a little toe dipping into masterworks only stretches our conception of what is possible.

So, dream on!

del.icio.us Tags: , , ,

Java plays catchup?

Sun Microsystems plans to have a version on Java, termed Java Kernel, to be hosted in browsers, have the ability to download various pieces as needed etc. Basically, I guess, to have a small footprint, be host-able in a more efficient manner. Found here, via a link on CodeProject.

There is more detail at link here, from one of the devs trying to get this work. The primary point to note is that this is not a version of the Java runtime that is different from what is possible already for applets. It is more a slimming effort to reduce the baggage Java has been made to carry.

I don’t mean to belittle the contributions of the Java platform, but I think they are playing catch up to the MS platform, at least on the rich client-side experience side of things, which I would acknowledge they brought first via applets. And they just talk about the small size being the primary factor here. No talk of a dedicated initiative like the DLR for supporting scripting languages.

Of course there is a profusion of languages supported via the Scripting APIs on the Java platform, but I really don’t get a sense of how much traction these have in the real world. Perhaps the tyranny of choice is at work here?

All said, I think Microsoft has an edge in gaining developer mindshare with its latest offerings.

What do you think? Does Java have something to counter Silverlight, DLR, LINQ etc? Do these have tool support? Is it blessed by Sun?

del.icio.us Tags: , , ,

How hard do you think about trimming process fat?

Here is a great example of the kind of thinking that is critical for keeping your application’s service footprint lean. Larry Osterman poses a series of questions asking why your service process should be running, always?, is it necessary for all users?, in absence of any required hardware? and so on.

Perhaps we can extend this sort of thinking beyond just long running service processes. What about the way software is built? Do you really need all of a heavy weight process like CMM or whatever latest version it has, what about your business process, what redundant steps are you incurring which in turn impacts customer experience?

Go read the article, worth your time.

del.icio.us Tags: ,