Archive for the ‘Ruminations’ Category

On Patterns…

Thursday, November 20th, 2008

I’ve recently stumbled across this post (which, by the way, I highly recommend its reading), which has someway enticed me to add some comments. Now, this doesn’t mean I don’t agree with the author concerning a few arguments; I just want to raise the awareness over some points I find particularly important. 

Linda Rising, in the last PLoP conference, said something along these lines: “A pattern shouldn’t be an Ahah! or Eureka! but something more like an Hmmmm!”. 

The thing is, a pattern is something recurrently seen in the wild, that try to give an answer to a problem by balancing the forces in some particular way. Not an intelligently crafted solution in the author’s basement. A good pattern is one where a domain expert is able to easily recognize the pattern as: “I’ve seen this!”.

Now, if the GOF’s Design Patterns should have been more or less abstract than they are is ultimately irrelevant; the authors observed those patterns in a particular context, and while they may hold outside that context, that can’t be neither guaranteed nor intended by the authors. That’s why patterns typically have a target audience. In the context they wrote the book, putting additional effort into implementation details have probably lead far more people to grasp it, than it would have been otherwise.

Furthermore, as an example, Ralph Johnson, during the last PLoP workshop, suggested that the patterns I wrote could be generalized far beyond Adaptive Object-Models and into a broader OO perspective. However, that would need a completely different context-problem-forces triplet. Now, someone reading my paper could say: you focus too much on AOMs; you should have generalized. Well, it’s true. But the proposed pattern is intertwined in a specific pattern language, which has it’s own context and forces. For that purpose, I may actually have given too little detail, since several comments I received asked for more in that direction!

Alexander’s work is a great example of what I’m trying to say. The Notes on the Synthesis of Form could, and are easily abstracted into several realms far beyond Architecture. Should we state that Alexander coupled himself into unnecessary detail?

I believe the problem may not be in the patterns per-se (nor even in the GoF book, which should be regarded as a germinal work), but in the people using them. Personally, I think too few people know the GoF book, or for that matter, patterns in general. Those who know and apply them blindly, have completely missed the fact that a pattern is NOT a building block! Maybe that’s why GoF entitled their book as Elements of Reusable Object-Oriented Software, and not Design Rules of Good Object Oriented Software.

Richard Feynman once said: “Know how to solve every problem that has been solved.” I believe the study of patterns endure this ideal. They are not engraved laws of the tissue of software. They are a systematization of intrinsic, almost empirical, observed knowledge.

Just a shrimp…

Sunday, November 16th, 2008

It has been a while since I’ve posted anything aqua-related. The thing is: I have no time. 4 aquariums and all of them are either full of algae, disabled or otherwise with lights off. Things are about to change since I want to sell most of my material, reducing to a single aquarium, with low-requirements and some gadgets to automatize most of the things. Anyway, I leave you with a photo of a shrimp hapily eating some algae:

Creative Commons License

Another Quote of the Day

Saturday, November 15th, 2008

The reason that iron filings placed in a magnetic field exhibit a pattern - have form - is that the field they are in is not homogeneous…

- Christopher Alexander, Notes on the Synthesis of Form

Quote of the Day

Saturday, November 15th, 2008

(…) there are two ways of constructing a software design. One way is to make it so simple there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.

 – Tony Hoare [Turing Award Lecture, 1980]

Innovation stiffs old practices…

Sunday, October 12th, 2008

While reading a post about the new language Microsoft is supposed to release in their next development platform, I’ve found an alarming message in the author’s blog:

“But if all newbie programmers learn these new languages, who will manage the billions of lines of C and C++ we currently use in the future, unless it is implied to be completely be rewritten?”

I’ve heard this line of rationale before… Who will manage the billions of lines of assembly now that people use C and C++? Who will program hardware, now that Universities’ degrees only focus on high-level software?

Careful: this kind of thought is presumptuous at best. Don’t get me wrong, this is not a direct critic to the author, but to the concept. Practices and tools *need* to evolve, so we can achieve higher degrees of abstraction. Attempting otherwise only hold back evolution (and may turn us into old-school dinosaurs, who keep mumbling “back in those days, we used two big drums to program; one was called 1, the other 0″).

After all, there will always be people wanting to beat those drums… :)

Proof of God

Tuesday, September 30th, 2008

I’m getting sick and tired of people discussing religion and invoking the need to prove, or disprove, the existence of God. This is the kind of argument that makes me stop the conversation, for ever. Actually, I’ve started to take a simple approach before incurring in a largely, perhaps irrelevant, rumination about religion:

a. I am willing to change my opinion. Do you?
b. Do you agree to discuss using some kind of human logic? Or will you invoke the inability of humankind to understand the arguments you’ll point out?
c. Do you understand the difference between proof and evidence?

Three out of four people will fail the first right away. My fingers are enough to count those who passed the triage, potentially leading to a nice, though inconclusive, conversation.

N.B. Also please take into consideration that things like “God loves us all, even Atheists” are as racist as “God loves us all, even black people”. I would go nuts when I hear the later, so I definitely go nuts whenever I hear the former. There.. Now flame me…

Internet may become sentient?

Tuesday, September 16th, 2008

Another option is the idea of the net itself becoming sentient, a vast self-modifying array of connections and information storage with limited connections to the outside world (kind of like that glob of grey goo you carry around in your skull).  If that happens then Gibson help us all - remember that the net is made of about 90% spam, 9% porn, and quite a lot of whining blogs.  If that mixture ever becomes self-aware we’re not quite sure what it’ll do, but the odds are against it being anything good.

Simply Hilarious! You can find the full article here.

Cocoa Programming

Monday, August 25th, 2008

I’m currently reading Cocoa Programming for Mac OS X. I’m becoming astonished by the underlying technology in Cocoa. There are some drawbacks, it’s true: for instance, Objective-C is much less intuitive than Java or C#, the whole .h files seem pretty much deprecated nowadays, and there’s definitely a learning curve there. But having a book like this can help a lot in the process.

I’ve just finished chapter 11 from 35 in total. I must say that by now, CoreData amazed me by allowing to create an application to display, manage and persist (with an Undo/Redo mechanism and all) a simple Information System to catalog Books (along-side with an Image, rating, etc…) without a single line of code. What amazes me most, is that there’s barely code-generation going under the hood: it’s the whole pervasive MVC architecture in Cocoa that allows you to bind hotspots everywhere.

I strongly advise every programmer who can to read this book and do the exercises up to the eleventh chapter. If after this point you aren’t convinced, you can flame me at will :)

My whole dilemma now is: I’m a developer for Windows (it sucks, but that’s what the company I work for do). I can see the potential in this framework, business-wise, but I can’t seem to find a way to bring this into the Windows world. Any ideas out there?

Permitam-me exprimir sobre a situação precária de trabalho em Portugal

Monday, July 21st, 2008

Hoje deparei-me com uma situação impar. Vou tentar contar a história da forma mais exacta possível, precavendo o anonimato de ambas as partes:

Muitos de nós sabemos sob que condições o trabalho em Arquitectura se desenrola em Portugal. Qualquer licenciado acumula estágios sobre estágios, grande parte das vezes não remunerados. E, quando finalmente consegue remuneração, é quase sempre à base de recibos verdes com vencimentos que raramente ultrapassam o ordenado mínimo líquido. Conheço muita gente nesta situação, mas tenho uma pessoa particularmente próxima de mim que acabou de passar por isto.

A situação é complicada especialmente porque uma parte significativa (e a julgar pela minha experiência, talvez representante da maior parte) dos ateliers de arquitectura tem perfeita noção disto. Mas vão mais longe: além de “oferecerem” estágios (porque isto de trabalhar é uma regalia que todos deviam-se sujeitar sem receber qualquer contrapartida financeira) consecutivos, renovando de 8 em 8 meses o seu staff, existem não registados como empresas, mas sim como entidades individuais. Já podemos adivinhar o resultado: dezenas de trabalhadores a recibos verdes, sem possibilidade de partilharem qualquer hipótese de carreira ou sucesso, sem o seu nome nos projectos que realizam, e no risco constante de não serem pagos.

E é exactamente esta última parte que me revolta ao ponto de vir aqui, na expectativa que alguns leitores tomem consciência desta realidade, partilhar a minha frustração. Essa pessoa, hoje, ao dia 21 do mês de Julho, depois de ter trabalhado 15 dos 22 dia úteis, quando confronta o seu empregador com a possibilidade de abandonar o seu trabalho (por motivos perfeitamente válidos), é-lhe recusado o pagamento das 8 horas diárias que efectuou até à presente data.

Mas obviamente que isto não fica por aqui. O parecer do Tribunal de Trabalho, também hoje consultado, resume-se ao “Temos imensa pena, mas como a actividade liberal não pressupõe a celebração de um contrato laboral, a entidade empregadora pode (na prática) recusar-se a qualquer pagamento visto não existirem provas escritas desse mesmo trabalho”.

E mais palavras para quê?… O que se faz a uma pessoa destas?…

P.S.: Se alguém conhecer um atelier de arquitectura no Porto, que esteja interessado em empregar alguém com experiêncial profissional de 3 anos e licenciada na FAUP, que avise.

Writing Papers…

Wednesday, May 14th, 2008

As I finish my paper for submission tomorrow (PLoP’08), the following strips start to give me that sense of deja-vu:

I guess one day I will laugh out loud about this… but not today :-)