February 2007

How would you implement a huge-but-sparse 2D matrix in Erlang?

  • First solution who came to my mind was to google for some linear algebra library … that failed!
  • The second one, implement a dict-of-dict structure.

That was quite easy, but as I was wondering on efficiency I needed to understand differences between dict, orddict etc. On my way I came up with this (ongoing) list of Erlang data structures.


I use Vim in a Gnome Terminal in a Ubuntu/Gnome desktop, with the terminal fullscreen mode option … and thus can’t see the popups of Gaim/Skype (I don’t want to use the sound alert to not disturb my colleagues)! I would love to see the small message near tray icon that I normally got in “not-terminal-fullscreen mode”. Maybe I should switch back to XFCE …

I used GReader since few months now, it works pretty well … it’s maybe too good: now I would like to read my email in GMail with the same presentation as GReader! (i.e. don’t hide the other emails when I click on one, but only expand the text of the selected email).

I know about some tools to do the opposite (send email from feeds) like the excellent RSSFwd. So after the question “what’s the difference betweens a forum and a blog?”, here comes “what’s the differences between a feed and a (thread of) emails?”. Can I say that every email is a feed (with one post), to which I can participate (the thread of emails becoming a feed with more than one post).

Some days I really have stupid blog post, and I’m happy to not have to read my blog 🙂

Have you ever row in a quadruple scull’s? in a 20 paddlers dragon boat? Efficiency is not a matter of individual strength, it’s mostly a matter of synchronization!
And for that, team have to be organized … why? to follow a common objective! that’s the definition of a team. That’s why hierarchical organization had been so successful: it obliged a single base! But it’s maybe not optimal …
Look at open source projects, really, look at that (CK, thanks for the link)!

Warning: this is a bad post!

Applauding’s time during meeting … clap clap clap … today (again) made me think to the sound of the steps of the “stupid mule” following the man who gives it the heavy duty! worst, the mule often carry the rewarding food it will got!

That’s not that I don’t ike to applaud: I do think dedicate work and recognize good work is really better than the work itself! But please, don’t ask me to applaud … I will do it by myself!

Yeah, I’m a bit sad/angry … and I like to write in this mood … and I LOVE/NEED blues music, my liberty universe!

Note: I’m sorry for those strong animals (mules), they’re good!, I just needed a metaphor to express myself.

I did it! I have try to code my first OTP applications following most of the recommendation of the documentation (and the French book Erlang programmation was a great help).

One of those applications became an opensource project: grinderl. I did blog a bit about it in this blog post, and now it has evolved from the all-in-one-module code to a small ongoing project (hosted by googlecode). To do that I used:

  • application/supervisor/server/fsm/event … all the generic modules: not complicated
  • eunit: simple enough, and tests should be compatible with the test_server application
  • dialyzer: wow! it can save a lot of time, especially because Erlang has no type system: a MUST.
  • appmon: great and easy to see your supervision tree
  • debugger: I still prefer to write message in the console … please don’t tell that to anybody!
  • edoc: I learned how to use it, but sadly it didn’t teach me to write good documentation…

I may like to have a look at cover and profiling tools, I may want to learn about Erlang port, but I guess the two main points I missed are:

  • mnesia: looks so great!
  • release handling: this is a tricky part of OTP application distribution I think!

And for the last one, I hope the sinan built system can help me (Eric Merritt promised us a high level user documentation soon).

My only regret is that I haven’t found a complete tutorial to go through all the steps of transformation of an Erlang program in an OTP application release. And that’s too sad that I don’t feel able to write one!