Archive for April, 2010

The age of complex simplicity

Wednesday, April 28th, 2010

ACM‘s technology newsletter (you are likely to receive it, if you are a member of ACM) recently featured an article titled Why the iPhone could be bad news for computer science, in which the assistant director of research at University of Cambridge’ Computer Laboratory makes the following shocking statement: “People can use their iPhone… but they don’t want to delve into it, they don’t want to understand the depths behind it. And I have a sneaking suspicion this is partly because we’ve got to the stage now with computing, computer science, IT, whatever you like, that it’s now such a black box, such a complex thing that you can’t really fiddle in the same way as people used to.”

I couldn’t believe my eyes – is he really serious about this? I think making such a claim to justify the lack of applicants for computer science education is surprising, to say the least. Following this line of thinking, the car industry, the plane industry and many other industries would be on the death row for lack of engineers, as owners of airplanes and cars (at least of modern cars) have long since stopped hacking their devices. Would you dare to fix the airbag control system on your car? I bet not. If you are the lucky owner of a private jet, when was the last time you personally checked the engine? Yeap, I guessed so.

There are however two underlying truths that one cannot overlook. First, our industry, after a decade or so of liberalism, seems to be turning the corner back to proprietary, vertically integrated solutions. Examples are plentiful (Apple, Nokia and Oracle, cloud providers such as Amazon – to name a few) and I already blogged about this before. I don’t think this is necessarily bad, as long as it won’t lead to hard-to-break monopolies.

The second issue I want to raise here however is the quality of freshly minted graduates. In my opinion – and many other people working  in the industry will agree – the vast majority of the universities are hopelessly stuck in either too much theoretical or too much hype-oriented teaching; there are very few universities where large scale, distributed software development is addressed; testing methodologies and theory are largely overlooked; preparing the students for understanding the complex issues around full software life-cycle management is simply not happening because many teachers don’t really understand what the whole concept really means (my apologies to those handful who do). This was glaringly clear in more than one case when we co-operated with universities on projects that led to productized results.

Don’t get me wrong, there are very many brilliant researchers out there for whom I have the out-most respect. They do cool things that we can re-use; but when it comes to preparing students for the real world out there – well, there’s plenty left to do.

Finally, here’s my 1 cent bet: could it just be that being taught many useless things is one reason the number of students considering computer science is dwindling?

P.S. I urge everyone to read the Strategic Research Agenda prepared by Swedsoft, the consortium of Swedish companies developing software intensive systems (I had the privilege of contributing to and reviewing it). While obviously it focuses on Sweden, it spells out some harsh truths worth considering. D.S.

Üni, a gomba

Wednesday, April 28th, 2010

Álarcosbál (illetve álarcos nap) van ma az óvodában és Gryllus Vilmos Maszkabál címü albumának a videójából inspirálodva Üninek gombajelmezt készítettek a szülei (többnyire Andi, de én is besegítettem 😉 ).

Íme az eredmény:

Pöttyös kalapban gyönyörü az élet...

Pöttyös kalapban gyönyörü az élet...

Hátulról is :-)

Hátulról is 🙂

Of clouds and parallelism, or the concept of CaaB

Wednesday, April 21st, 2010

Volcanic cloud permitting, I will be speaking at the Cloud Computing in Telecom workshop organized by the SCOPE Alliance (alliance of telecom companies committed to accelerating the deployment of carrier grade base platforms for service provider applications). It’s definitely a new experience for me but also a great opportunity for networking with others.

Cloud computing is obviously one of the most hyped about new technologies around (except for the iPad, perhaps 😉 ). I won’t even attempt to define it, as there are so many definitions around that picking any might anger the others; but here’s the one that captures best the mood: “To many people, cloud computing is like modern art. I can’t describe it, but I know it when I see it“. For many people, it’s the answer to every possible problem; for others, it’s just the re-packaging of old ideas.

I got myself interested in cloud computing – and consequently, started working in a large research effort in the area – exactly because it represents the ultimate parallel computation platform a nerd can hope for. You want thousands of processors? Please, help yourself. You want to simulate faults? Sure, which processor shall I kill off? Want to simulate computational or memory starvation? Please click here. It’s really an attractive paradigm for experimentation with parallel software.

What I find however most exciting is the parallel to many-core processors when it comes to limitations. In both cases, you are likely to get computation power for free – however, the real pain point in both cases is the speed of access to data and the communication infrastructure. Compared to the cost of communication, computation power is really for free, but optimizing sharing of data, getting large chunks of information from one processing element to the other is really hurting both paradigms. I would coin a new term, beside all the XaaS (whatever as a Service) that the hype community has defined: CaaB, or Communication as a Bottleneck. It’s the real problem and the real show-stopper.

I will elaborate on this in my presentation at the workshop, but I believe there’s interesting research to be done around CaaB-mitigating programming paradigms. How do you reduce the cost of transferring data? How do you optimize for locality? I think the ‘follow the data’ pattern I talked about in one of the previous posts will become a center-piece.

I’ll get back with reflections after the workshop – so stay tuned.

Üni és Einstein

Sunday, April 11th, 2010

Azt hiszem nincs szükség kommentárra 😉 .

Einstein után szabadon

Einstein után szabadon

Workshop on Parallel Programming Patterns

Sunday, April 11th, 2010

I recently attended ParaPLOP, co-located with ChilliPLOP, in Carefree (near Phoenix), a workshop that aims at gathering parallel programming patterns and creating a universal pattern language for parallel programming. While I have my doubts whether they (meaning: Intel, Berkeley, IBM Research, UIUC and others) will really succeed, but hey, it’s about the journey, not the destination 😉

The format of the workshop itself is how conferences and workshop should really be, in my opinion. Each paper (pattern) is allocated 1.5 hours, divided into three sections: first, the author summarizes, in 5-10 minutes, the pattern, followed by an hour plus debate among the participants, while the author must keep silent (he can comment and ask for clarification in the final – third – phase of about 10 minutes). The debates are really-really interesting, providing a lot of learning opportunities, interesting interactions and insights that are turning this workshop into one of the most enjoyable and useful to date for me. Myself, I presented the Follow the data pattern, essentially implementing shared memory semantics without physically shared memory.

Back to the pattern language: you can download the current draft from here. Essentially, it provides the building blocks to reason about the architecture of software in the context of parallel execution platforms, through patterns that have proven to be useful. Right now, it structures the patterns into the following layers: structural and computational patterns (e.g. pipe and filter, event based, backtracking, dynamic programming etc) parallel algorithm patterns (task parallelism, divide and conquer and the like), implementation strategy patterns (e.g. fork-join, shared data etc) and parallel execution patterns (MIMD/SIMD, transactions & co). It’s still very much a work in progress, with many patterns undefined or unfinished – the ones that are can be found on Berkeley’s page.

All in all it was a good experience with a lot of learnings and insight into a community that I only followed from the distance. Anyone is invited to contribute – just go to the Berkeley wikipage and drop a mail to the wiki owner.