Archives for the month of: November, 2007

Healthy living requires staying fit. And staying fit requires regular exercising. So I’ve decided it was time to learn a new programming language and have chosen Haskell. Why Haskell? The bottom line is that I think it has a few challenges for me along the way and I’m therefore most likely to learn a lot. The long answer goes like:

  • It’s an academic language (meaning that it’s been designed mostly by academics, not that it’s restricted to academic usage). I’ve been mostly exposed to industry-driven languages so far, seeing the differences in design (if there are) is probably going to be interesting.
  • It’s a purely functional language. Whereas I’m familiar with the functional theory (heck, I work on a Pi-Calculus engine) and have done some functional coding in Ruby or Javascript, I’ve never used a purely functional language since university.
  • I’m a clear proponent of dynamic languages and typing. Which doesn’t mean that I think static typing is always bad, just that, for me, dynamic typing is usually better. Haskell is based on a type system that sounds to me very much like static typing done right: type classes with powerful inference.
  • Haskell is lazy. Which means that it only executes what it feels like executing. Fortunately, it seems to be pretty smart at knowing what is necessary to be executed and what isn’t. This has interesting side effects (pun intended) like being able to support infinite lists. Not sure yet how useful that is but I intend to find out.
  • Haskell is monadic. Meaning that it found a nice way out in a functional world that’s not supposed to accept side effects (I/Os being one big source of side effects that are hard to avoid).

There are a few other reasons for me to be interested in Haskell but these are the main ones. So I’ll go through some tutorials and see where these lead me. I have a small pet project that I’d like to implement in Haskell so the goal for me is really to write code and not only to read a few documents. I’ll let you know along the way what I find interesting, exciting or irritating and pass along a few tips.

I always have ideas about some stuff that, I believe, could lead to a very successful business or at least to something truly interesting. Or not. I usually forget very quickly about the ones that seem too lousy to me so there’s a minimum quality there, but nothing guaranteed. The problem with those ideas is, until you really try, you don’t know. And I have far too many ideas to try them all.

To those who could be thinking “why don’t you try just the one you like best”, well, I did. An open source BPEL engine was one of those ideas. A ruby/rake based build system was another. For the rest it’s either a lack of time or that I don’t believe enough in them (I try them with people I know too, to see if they’re enthusiastic or just blah) or they’re too ambitious and would require far more than what I’m ready to give at the moment. Sometimes I get started though, just to see how far this could lead me.

But anyway most of these ideas are just wasted, so I decided to put them in the wild for somebody to pick up. Maybe they’re just not really good and nobody cares, but there could be a good enough concept behind some of those and it could give you another, better idea. So I think there’s some interest there. Plus someone, somewhere, might just hit that Google search that will lead her to a post I wrote and decide to give it a real try. And if you are that person, please let me know.

So for this first installment of Idea Dump, I decided to give away one of my best ideas. It’s probably not the most ambitious or sexy one, but I strongly believe it would make a successful business. For me, the rub is that it involves a fair amount of electronics and industrial production, which I’m not really into. It’s one of my very few non-software related ideas.

I usually enjoy doing idea pitches so bear with me for a few minutes (if you’re interested in swimming you might like it too).


I’m a swimmer, I’m getting lazy these days but I used to swim a lot (at least 2 times a week, usually 3). When you go to the pool very frequently you tend to always see the same people, other frequent swimmers. And frequent swimmers tend to have the same kind of schedule that don’t really match the one of occasional swimmers. Just because when you’re swimming 3 times a week (or even everyday for some), you have to find where you can squeeze this in your normal schedule.

Now let me tell you that, as weird as it sounds, there are quite a few frequent swimmers. You know, those few nuts that seem to never stop even for a second when you go there and swim at least 3 times faster than you. So there’s a market there. Not a huge market but definitely a sizable one, especially if you think worldwide (the idea could be implanted anywhere).

Swimming is a fairly cheap sport compared to others. You just have to change your swimming suit and your swimming glasses once a while (btw a quick advice: dont buy cheap ones, expensive ones last 3 to 4 times longer). Fins and a pull buoy are also a must have but nowadays a lot of swimming pools have some already for you to use. The biggest part of your budget is going to be the entrance to the pool itself which isn’t expensive as well, somewhere between $40 to $60 a month. When you compare to other sports and think of the budget (tennis, baseball, golf, kite surf, …) swimming is really cheap (just start with the fact that you don’t need good shoes). Which leads me to my second observation: the frequent swimmers have money to spend on their passion.

So what a decent swimmer does all this time? He or she goes back and forth, changing the type of strokes to work the 4 of them and also doing all sort of clinics to either work out a given muscle group, a technique or gain in stamina, power or speed. This involves a lot of back and forth. And this usually follows a program. Here is an example of a workout that emphasizes on freestyle sprint:

Set Category Set Description Set Intervals
Warm-up 200 pull w/buoy
200 pull w/buoy using paddles
200 pull w/buoy with closed fists
200 pull w/buoy
15 seconds rest b/t 200’s
these are long and easy
Pre-Set 8 x 50
come off the turn using your
non-dominate arm to stroke first
on 1:00
Main Set 12 x 50
alternating pull with buoy and
full swim by 50’s. Make the
swim 50s at least 5 sec. faster
than the pull 50s – all the speed
coming from kick!
on :55
Kick Set 6 x 50
25 back kick/25 brst kick
on 1:15
Warm-Down 300 easy
alternating 25 back/25 free

Those workouts are usually given by a trainer, you can also find a lot of them on line, on books and with a little bit of habit you can compose one yourself. The important thing to realize is that there are 2400 yards here. Plus a long workout to follow.

When you’re swimming, your mind usually wanders, because that’s a one hour deal (sometimes a bit less or a bit more) . And then you forget your count and everything’s messed up. So the pain here is that you have to find workouts and that, in the water, you have to follow them. And that’s the pain my idea tries to relieve.

What’s needed here is a simple device that has a predefined set of workouts depending on your level (something like this) and that counts down everything you do automatically as you progress. This has been around for years at gyms so it’s far simpler than say, an iPhone, to design. Think of a big watch (for easy reading) that you could either buy or rent (money for you and for the swimming pools). For the automatic countdown some little detector would be needed inside the swimming pool, so that the watch could know when you reach an extremity of the pool but that’s not rocket science, similar systems exist already. And that can help you develop partnerships with swimming pools.

The way it would work is pretty simple. I come in, set my level and what I want to work out, the thing selects a program for me (this could be time based as well, usually programs are constructed on a yearly basis) and I start swimming. I just follow what it tells me, stop and rest when it tells me to, swimming at the recommended stroke and pace. Believe me, swimmers would be ready to pay for this. And given the price of an electronic watch these days, I’m guessing the whole thing wouldn’t cost much. You would need to do some number crunching but I’m betting this would certainly be profitable.

So what do you think? A keeper?

A little gem that I found today and surely the next big thing after Java: Brainfuck. A little hello world for your enjoyment:

Hello World program

Brain fucked primes anyone?

It’s the season for ApacheCon US again and this year it will be in Atlanta. I don’t want to break the heart of my eventual Georgian reader but somehow, I’d have preferred Cancun. Or maybe somewhere nice in Baja California Sur. But anyway, Atlanta it is, so if you’re there next week and would like to talk about ODE, buildr or something else or if you have some good tips to share about good bars or restaurants, let me know in the comments.

Eternality is probably a big word, all software deprecate with time and open source software is no difference. But open source deprecates very slowly because it’s not designed for a single purpose. When you start putting code out there, you never know in advance who is going to use it and which problem it will solve for her. Of course you know what you’ve made your program for but nobody can predict all usage scenarios and how good your thing can fit in situations you don’t even imagine.

You can’t imaging for how long after transitioning Twister to Apache I still received e-mails from the old Sourceforge project. The thing has been downloaded more than 30 times in October and is still in the top for Google if you search for “ws-bpel open source“.

I was pretty surprised today when I saw a developerWorks article about Raven. I haven’t touched the code for maybe 6 months. But I guess what’s out there is pretty functional and Raven’s simple design can satisfy many needs.

So scratch your itch, code it, publish it somewhere and advertise it a bit. Trust me, you’ll get much more than you think out of it. And please, please, please, for my own sanity, think seriously about which license you’ll use.


Get every new post delivered to your Inbox.