Less Technology - The Ruby and Rails Revolution

Alex Bunardzic

Jooto Inc.

A word from our sponsors

About the presenter (me)

[any material that should appear in print but not on the slide]

Artist, musician, software developer

Zen teacher

Teaching Zen to a group of dedicated Buddhist practitioners

I am clueless

I am pre-emptive

Lessons from one of the Master musicians

The discipline of letting go

"You can accomplish anything if you don't care who takes the credit for it"

Clueless means going with the flow

Pre-emptive mostly applies to assumptions

Curing the symptoms -- but the real cause is always the inflamed sense of Ego

Inflamed Ego is always caused by preconceived notions

So, reaching a clueless state ensures that preconceived notions are not flaring up

Zen practice is only concerned with eliminating the suffering

It is a human-centric discipline

Software development is also a human-centric discipline

Software is an invention that proposes to assist in eliminating human suffering

Like anything else, it is a double-edged sword

Right now, instead of living up to its promise, software is contributing to human suffering

Instead of being our servant, software is turning us into its servants

This pattern is symptomatic to technology in general

We put technology to daily use in order to minimize our suffering, and end up being enslaved by the technology

The bottom line is that today most of us are spending our lives serving the technology

This is utterly unethical

Why does it hurt more when software becomes the master?

Software products have mind-like qualities

When a mind-like entity hurts us, it pains us much more than when a dumb inanimate entity inflicts pain on us

Being mind-like, software brings tremendous promise to serving the human kind

In reality, this promise turned into a nightmare, where we must attend to the whims and caprices of horribly designed software products

This pains us and disappoints us to no end

How I feel about using software applications:

Here is how I sometimes get infuriated when using software applications:

What are the factors leading to such a disastrous situation?

Software is mystified (no one seems to know what kind of a discipline it may be)

Is it a branch of engineering?

Science?

Art?

Craft?

Gardening?

Anything else?

I have a theory:-)

Almost all of the software products I've ever seen have the quality that's similar to products made by carpenters

The science, engineering, art and craft of cabinet making

There are many outstanding software 'cabinet-makers' making top-notch software 'cabinets'

What's wrong with this picture?

To begin with, we usually don't need software 'cabinets'

What is it that we actually need?

We need software instruments

Carpenters and luthiers

Did you know that master carpenters are the worst possible luthiers?

How's that possible?

Carpenters specialize in making rock-solid products

A good carpenter will ensure that all the dove-tail joints are perfectly crafted and seamlessly glued together

A good luthier practices an entirely different discipline

If a luthier were to make a guitar or a violin by adhering to the carpenter's standards, that musical instrument would produce the most horrible sound

Working in an almost opposite direction than a carpenter would, a master luthier strives to make his instrument as loose as possible

In the words of one of the most famous luthiers today (Danny Ferrington), a guitar must be at the verge of falling apart if it is to produce the sweetest possible sound

In order to make a musical instrument truly sing, good luthier will forsake the time tested principles of solid carpentry in favor of the wabi-sabi of building an object that breathes and vibrates

A good guitar will respond to the person playing it, will adjust to that person's quirks, and would allow him to express his intentions, his personality

All that is possible only if the guitar is not 'uptight'

Most today's software products are way too uptight

They are made according to the strict code of solid carpentry

Air-tight joints, rigid structure, industrial strength construction, make sure that the product cannot 'breathe' and vibrate in harmony with its human users

What we need is software products that would breathe with us, that would vibrate in harmony with our intentions

We need software that will make us 'sing' when using it

In this way, software is similar to a musical instrument

How to make software sing?

Direct contact

So long as we keep building software indirectly, using hooks and crooks and Mickey Mouse-ish 'methodologies', the software will remain rigid and unusable

We need to dismiss those training wheels and crutches and replace them with simple, direct means of expressing our intentions

Memo to the machine

If I intend to accomplish something in real life, I usually express my intentions by writing a memo

Things usually work out that way, because I am not mystified by the writing medium

But if I try and write a memo to the machine, I end up being mystified

Do what I mean, not what I tell you

This meaning proved incredibly difficult for the machines to glean

More likely than not, machines will grossly misinterpret my intentions, as expressed in software code

Therefore, we need to focus on a language that will bridge this gap between humans and machines

Once we get to the point where to write a memo to the machine feels as natural as it is to write a memo to a local service bureau or a government office, we will reach the breakthrough

Balderdash!

What about rounding errors, bugs, testing?

I seem to be living in a dreamland. Yeah, what about all those concerns?

Let's look at how these things work in real life

When I write a memo, or an email to the client, do I have to test it?

What would be a real life equivalent of a good unit test?

Simple -- submit it to my lawyer's office

They will give it a good shakeout, and for a handsome fee will ensure that it's safe to mail the memo

How realistic is that?

When was the last time you've submitted your email to the lawyer and waited a week before they gave it a green light?

Yes, to err is human, and mistakes are bound to creep into any memo/email

But in real life, that's usually not a show stopper

Why should it all of a sudden be a showstopper in the proxy world of software?

Of course, there are particular memos, emails, press release statements that must be scrutinized before being sent out

But those are typically in minority

If we were to enforce strict scrutiny of any material that leaves our offices, businesses would come to a screeching halt

How to write a memo to the machine?

Embrace less technology

The age of industrialization and automation is behind us

No use in hanging nostalgically to the bygone days

Realize the power of Smart Servant

This movement began with the realization that 'less code' is more desirable than more code

Less is more... yadda yadda yadda

Then David Heinemeier Hansson and 37signals realized the 'less software' mantra

Finally, and inevitably, the push for radical simplicity brought us to the 'less technology'

Even Bill Gates and other big-ass vendors now admit that 'less code' is more desirable

However, they still hang on to the old dream that 'more software' and 'more technology' is very desirable

Time for a wakeup call

What are the first symptoms of the impending 'less technology' awakening?

Ruby

Ruby on Rails

Of all the software products I've ever seen, only Ruby and Ruby on Rails resemble to a certain degree products made by master luthiers

This is due to their focus on context

Context == common-sense

Or, as David likes to put it:"context beats consistency"

When a cabinet maker attempts to build a musical instrument, he tends to adhere to the high building code of carpentry

This is an exemplary case of 'foolish consistency'

Both Ruby and Ruby on Rails come with a strong built-in bias against foolish consistency

That bias is one of their strongest qualities, enabling them to focus on building a Smart Servant

What is a Smart Servant?

It is a mind-like entity that is sensitive to the context

Or, put another way, Smart Servant is a mind-like entity that has the ability to avoid foolish consistency

Being sensitive to the context and able to avoid foolish consistency is the pinnacle of sophistication

Right now, almost all software products are painful to use due to their lack of sensitivity to the context

Context tends to change faster than the weather, yet all those pricey software products are blissfully unaware of these shifts

Even products that are deemed as being head-and-shoulders above the competition sorely lack the sensitivity to the context

For example, iTunes

Almost universally hailed as bringing unprecedented levels of sophistication in end-user interaction, this product nevertheless sucks

Why is that?

My theory is that most software applications cannot help but be largely useless

What's the application's reson d'etre?

The application is the middle man between the underlying information processing system and the end consumer

Software application's job is to translate the intentions of the end-user into the language that the underlying system can understand

That means that the end-user is illiterate

Similar situation existed not that long ago in real life, when most people were mystified by the world of reading/writing

Those were the days where people had to use professional services when having to deal with any formal situation

Today, most people can cope with reading and writing and can fill out government and other forms by themselves

The need for the middle man intermediary brokerage services had almost disappeared

Same thing must eventually happen to the intermediary services of software applications

Once the barriers of talking directly to the underlying information processing system get sufficiently lowered, people will begin bypassing applications

For that to happen, we need languages that are much more expressive than Ruby is today

But, Ruby is a good, and a very beautiful start

When that happens, we'll find ourselves writing scripts (memo to the machine) much more often than writing applications

Of course, the need for writing rigid, industrial strength applications (that will govern our nuclear warheads) will never vanish

But in everyday affairs, we'll learn to ease up a bit

Alex Bunardzic, www.jooto.com, alex@jooto.com

Signing off...