Wednesday, May 17, 2006

On Simplicity and Execution

I have recently started to use delicious, the social bookmarking system.  Today I also found out about delicious networks: you can subscribe to the delicious feeds of a number of users and then see them as a single unified feed. 

You can also subscribe to individual RSS feeds and be notified when someone you know and trust comes up with a new interesting link.

Why am I talking about this?  I started thinking about these delicious features because back in 2000/2001 I was thinking about something quite similar from a philosophical point of view.  I wanted to have a way to communicate to a network of trusted people the evolution of my interests and how I was structuring the nformation that I was getting from the internet.  I was thinking about a complex trust system, modelled using graph theory.  I had pieces of news moving across the graph, gaining strength as they received a thumb-up by more and more users.

I was theorizing about the rise of implicit communities, ephemeral islands in the net auto-defined by links of mutual trust and common interests.

Too much theorizing.  There were overwhelming theoretical problems there.  How to avoid dangerous trust-feedbacks of information within a network? How should trust be modelled?  What are the dimensions of trust?

That's all academic bullshit. 

Useful for after-the-fact analysis. 
Useless to get started doing things.

Everybody can have a good idea.  Ideas have become dead cheap.

Good executon means getting the simplest idea and get it implemented and used by people. 
The rest will follow, if it still makes sense.

I need people to shake me every now and again and tell me: "Yes, it's nice, cool, fantastic! but.. what can we implement and ship right now?"

Tuesday, May 16, 2006

Article for Ruby Code & Style

I am planning to write an article for Ruby Code & Style, so I ask you, my good readers, what kind of article would you like to see?

You can answer in the comments or on kiaroskuro AT gmail DOT com.

Saturday, May 13, 2006

Grady Booch

Grady Booch announced on his blog that he has health problems and he is going to undergo surgery in the very near future.  Grady Booch has been one of my early software heroes and I remember seeing him at OOPSLA back in '97.  I wish him all the best.

Thursday, May 11, 2006

Burnt Out

In the course of the past week or so I haven't been very good at answering to people I am in touch with. I apologize to you all. I continuously feel very tired and I needed a bit of a break.

I have been in touch with so many people recently.. being busy talking, planning and organizing that my body could barely catch up with my activities.

I now start feeling a bit better and I will slowly go back to my coding, networking, book writing, socializing, plotting and planning. My girlfriend might appreciate some of my time too :-)

I am afraid that if I want to keep up with this rythm I'll have to take on doing some exercising. Andrea, a friend of mine, told me that there is a group doing yoga-like practice in the evening in a park just behind the Colosseum. It sounds good and I might go with him to check it out one of these days. I have practiced meditation for a while in the past at a Buddhist School in England and I know the value of cultivating a fresh unencumbered centered mind.

20th of May Padua Presentation

It's official.  I am going to give a talk about ruby to a great bunch of java coders in Padua on the 20th of May.
I feel slightly nervous since it has been a long time since I gave a talk, but I think it's a great opportunity to get back into shape.

I am only afraid that 45 minutes might not be enough to do justice to the language...

Wednesday, May 10, 2006

Cyc Space

A Map of the Cyc universe, from

OpenCyc Technology - Formalizing Knowledge

I have been wanting to blog this for a while now.  I should really try to post some of the goodies that I have found on programmable language-resources on the web.  I would also like to elicit you guys to point out more sites and libraries, especially if they happen to support a Ruby API :-)
OpenCyc is an OSS system that can be used to formalize common sense reasoning within an inference engine.  The best thing is the wealth of data that comes with it.  Here is the documentation, and a brief summary of its capabilities.



Saturday, May 06, 2006

Chiaroscuro Radio

I was sure I would have never done it.  I would have never posted pictures of my cat, or inflicted my poor taste on my readers.

Still, it happened.  On the sidebar you can now find a link to Chiaroscuro Radio!

My musical taste has been defined at different times as:
Chiaroscuro Radio has been realized using Pandora, a software that can learn your musical taste.  It took a few days, but now it almost always picks songs that I like.

Little Boxes in the Spreadsheet

Tonight I should make the first release of Littleboxes, a micro-language (API? DSL? Lingo? dunno!) that allows you to use excel as a debugging writeboard from ruby.

You will be able to stream out Objects, Structs, Arrays, Strings, Hashes, etc.. to the spreadsheet so that you can better visualize the data you are working on.

Is there any feature that might turn out useful to you?  I have still got the evening to work on it before releasing the alpha version to the italian ruby community.  If you are not on the ruby-it mailing list drop me an email (kiaroskuro AT gmail DOT com) or a comment and I'll send it to you too.

In the meantime I'll leave you with some words from Littleboxes, a classic by Malvina Reynolds..

"Little boxes on the hillside,
Little boxes made of ticky tacky
Little  boxes on the hillside,
Little boxes all the same,
There's a green one and  a pink one
And a blue one and a yellow one
And they're all made out of  ticky tacky
And they all look just the same."

and no, Malvina is not talking about Excel cells ;-)

Refactoring Emphasis in Language

Language is one of the most ancient forms of knowledge encoding and transmission, yet we have so little conscious knowledge of how we can use it to achieve the communication that we want.

Words are programs, psychoglyphs running into other people's head. Shaping words means shaping active executable knowledge.

While reading " sleight of mouth" by Robert Dilts, I found a couple of very interesting concepts.

Look at the following sentences and feel the difference, although they have the same informational contant at face value:

I call "But", "and" and "even if" Emphatic Tags and they can be used to move the emphasis between:

You can do a little word magick by restating sentences, while refactoring it for an emphatic change, and throwing them back with a more empowered meaning, even if you have never tried before.

The other emphasis trick is the enabler/toll stance.

Read the following and feel the different emotional effect in front of apparently identical information:

The sentence order makes a world of difference. The first part of the sentence sets the context, while the second part clarifies the meaning of the first one.

The if-opening sentence is a Toll Sentence. It's asking you for something, for a precondition, before giving you what you want. It's even hinting at the fact that you are not doing what is necessary. It feels like you are trying to convince someone of something.

The you-can-opening sentence is an Enabler Sentence. It offers you a wide range of options: anything you want, and it then points to the path to go and grab those options.

Thursday, May 04, 2006

Executable Knowledge

Gabriele is quoting from an interview to Luca Rosati (in italian):

I realized that too many time we 'reinvent the wheel'.  More mature disciplines - such as biblioteconomy, but also psycholinguistics and neurosciences - have found a way to deal with this problem several decades ago...

I have to say that I haven't read the interview yet, but I am still going to comment on this quote.

It's common to hear people complaining about how Computer Science is immature compared to other disciplines, but I don't sympathise with this point of view.  Other disciplines organise knowledge within a specific domain, whereas the domain of software development is the very act of organising knowledge!  Executable knowledge, make no mistake, but still knowledge.

If you see things from this point of view, software development is a reflective meta-discipline.  It's part of the very core of software development to change itself, its own tools, the way it models itself and the rest of the world.  The discipline keeps changing because it's an highly introspective discipline, more similar to literature in this respect than to engineering.  It is a discipline that talks about the world, but that mainly likes to talk about itself to reflect, evolve and change.

Software development changes as the world changes, because the way we see the world and organise our knowledge does change.  I would find it worrying if it didn't.

Wednesday, May 03, 2006

Good Hungarian

We are used to think of hungarian notation as being a bad thing.  However, not many people know that what we know as hungarian notation is a perverted version of the original pure and good hungarian notation.  Joel Spolsky talks about that too.

-hungarian is when you prefix a variable name with type information


  fWidth = fSize

the 'f' simply means float. 

You can see you have type compatibilty on both sides, but it doesn't say anything about semantic compatibility. fWidth could be used as a measure expressed in metres, whereas fSize is expressed in feet!

Good-hungarian is when you prefix a variable name with semantic information

   mtrWidth = ftSize


   metric_width = feet_size

you can see immediately that there is a problem there. 

Both variables are of the same type (Float), yet they have a different meaning.  The prefix difference make the error stand out clearly.

This is very useful in general, but I would argue that in ruby - with the dynamism offered by duck typing - good hungarian is very useful and we already use, without even thinking about it.

Tuesday, May 02, 2006

Metaprogramming your Breakfast

Following on from the metaprogramming breakfast, I think someone is meta-challenging me here :-)

This page is powered by Blogger. Isn't yours?