Erlang's typing system: less is more?
Erlang has a very rudimentary typing system, there are some primitive types (atoms, binaries, integers and floats), functions (it's a functional language), aggregate types (lists and tuples) and a bunch of Erlangisms (pid, port, and reference – a kind of UUID). The record type is really a tuple in disguise, since a record is a tuple whose first term is the record name, followed by the record fields in their declaration order.
And that's all. There are no means to define complex types as we are used to in traditional OO languages, nor is it possible to to associate behavior to a data structure by means of a class (or a prototype in JavaScript). This is surprising for a long-time OO developer that spends a lot of time to carefully craft class diagrams. But I think this is actually part of Erlang's strength.
Continue reading »
Dynamo: Amazon's key/value store
Amazon has published yesterday what is going to be a seminal article, just like Google's papers on MapReduce and BigTable.
The article presents Dynamo, their scalable key/value store. The very interesting thing is that it assembles a lot of concerns that are usually addressed individually in the litterature with the production constraints in mind. Data partitioning and replication, disconnected writes with resynchronisation, load balancing, etc.
An additional example that many applications can be implemented with simple key/value pair stores and that relational databases are more an out-of-the-box comfort we've been used to over the years, but that don't work at a huge scale.
Continue reading »
Micro concurrency for Big throughput
I started learning Erlang on my spare time (which essentially means a few hours during week-ends lately). Surprisingly, it has brought back to my memory many things I did years ago. The Prolog-ish syntax with pattern matching (a simple form of unification) and the message passing between process which isn't that far from Ada's rendez-vous (except that Ada is synchronous).
One of the great things in Erlang, that justifies the current hype around it, is that concurrency is cheap both in terms of code an in terms of memory/cpu footprint, and that message-passing makes it way easier to develop concurrent programs than threads with shared data.
Continue reading »
A pig in the incubator
The people at Yahoo have proposed their Pig project to enter the Apache Incubator. Pig is a high-level data processing language built on top of the low-level mapreduce primitives provided by Hadoop.
We've seen at Joost that mapreduce allows sophisticated data analysis to be performed, but having to write a Java program for every single analysis not only increases the development time compared to a traditional database but is also not compatible with the regular need for ad-hoc queries. SQL is still king for that, but the amount of data we have to process prevents its use.
Continue reading »
My first horse-riding lesson
My wife has been riding horses since she was a child, and has been looking for a while at tours in some countries where horses are part of people's culture and life such as Mongolia, Patagonia and western US. That looks like a very nice way to discover a country in a manner that a road trip in a car can't allow, but of course we can't go there if I don't have minimal horse-riding skills! That how she convinced me to learn :-)
So yesterday evening was my first lesson. I already have seen quite often my wife and kid perparing their horses, so I wasn't completely dumb in front of this big animal. And I generally have a very natural contact with animals, so had no fear. Now sitting on a horse's back is different from standing besides him! But it went quite well, and I'm eagerly waiting for next week's lesson!
Looking for Eclipse/RCP training?
If you need Eclipse/RCP training from real practitioners involved in the community, check out the course schedule!
Scaling MySQL
Useful tips and tricks to scale MySQL on large web applications. A must read!
Holidays!
I've been on vacation for one week already, in the family house in the Alps. Nice weather, and it really feels good doing almost nothing but hiking in the mountains!
We're now starting the second phase of our vacation, a road trip through Alsace (Strasbourg) and south Germany (Rothenburg, München and Bavaria) ending in Switzerland at Bertrand's before coming back.
Joost company meeting
Last
week was quite intense with the Joost
2nd company meeting, gathering something like 150 people! Lots of new
faces, and also lots of face to face discussions with people working in
other countries that I've had not met for a long time. Even with all
modern communication tools, physical presence from time to time is
invaluable. Formal meetings during the day, and social events and bars
in the evening!Continue reading »
