From bit to a heart beat

insane innovations from a sane insanity

Tue Mar 17

Between Erlang/Reia/LFE with Joe Armstrong - Erlang’s creator (or Building the Biggest Cloud ever!)

I love Erlang but for a couple of months I was wondering whether using LFE or Reia could speed up development (so other developers could jump in easily on an OpenSource project I am working on - read on for more about the project). Even though that Erlang is very powerful, it’s syntax is a deal-breaker for a lot of people. So, I thought that bringing developers from the world of lisp and Ruby/Python and showing them a similar (in syntax at least!) language could trick them make them give Erlang a shot. Boy, I was wrong…

Trying to write Erlang using the philosophy of other languages is like writing Lisp using a php mentality. Or better trying to eat spaggeti with a spoon. It just doesn’t feel right. You have to try Erlang, feel it’s core power and then try adding a layer on top of it. Writing software that communicates with it’s parts and expands easily, feels natural in Erlang. And a familiar syntax won’t save you from having to think in functional programming ways. Bottom line: Learn Erlang/Haskell and then try Reia/LFE to put some syntactic sugar. Sure that would bring many developers to the project…

But then, what’s the point of trying to move more languages to BEAM (Erlang’s VM)? I emailed Joe Armstrong (the creator of Erlang) about whether investing time and building your whole framework around a language wrapper is a sane thing to do. And here is his answer about LFE:

It depends on what you want to do - LFE is Roberts hobby project,Erlang has a entire Ericsson group supporting it. Erlang is battle tested in many industrial projects - If it’s a hobby project, then choose whichever you like if you want long-term support - go for Erlang.

And about Reia:

Same. Erlang OTP here to stay and supported by dozens of people and companies the others are hobby projects. (( I’m not being derogatory here - hobby projects are fine - but they have an uncertain future))
/Joe

That’s the result I came about, enhanced by the recent syntactic changes in Reia. These languages do a GREAT job in trying to bring more people to Erlang but I don’t think that you can use them without knowing Erlang (and I know that’s not their purpose but many feel that if you learn Reia there is no need to learn Erlang).

Of course, both Reia and LFE are very cool projects but I really wonder if they can survive the test of time and offer a nice alternative to Erlang (so they can pave the way for more languages in BEAM).

UPDATE: For those still reading:

How all this started?

We are planning (me and Jim ) to build the biggest cloud computing project man has ever seen and use it for scientific reasons (something like seti@home but BIGGER), that will fully utilize Erlang’s power and let it run on Clouds (Amazon / Mosso /…) and we are even thinking about trying to squeeze Erlang inside GPU and try a GPU cloud. It will be OpenSource, it’s called RainUp and  we already made a small presentation at mediacamp2 here in Greece. We’ll upload more info in a couple of days and some demos. So, as you can understand, choosing the correct language is crucial for our project. If you are an Erlang hacker or Cloud expert or just wanna help, send an email at: contact[at]rainup.org.

Thanks for reading and I’d love to hear your opinions here or at twitter.

Comments (View)
Only wimps use backup: _real_ men just upload their important stuff on git, and let the rest of the world clone it paraphrasing Linus Torvalds
Comments (View)
Tue Mar 3

MetroFinder for your mobile!

Due to my new house location near at a Metro Station, I am using the public transportation a lot more than I used to. And because I am (as always) a little bit into my (own very special) world, I tend to miss bus stops, metro stops etc. And of course due to my very short memory that refuses to hold any non-critical information, I don’t remember (or at least I don’t make any effort) where should I change lines, how long it takes to get there and all these little (non-critical :P) stuff.

So, as I always do, I found a reason for a new little program!

Behold, the MetroFinder (clap clap clap)!

Metrofinder is a J2ME little program that I took extra special care to make it possible to run on EVERY possible phone (ranging from very old phones to new ones). It’s very simple (and very crude) but for my purposes it’s fine (and it’s opensource so you can modify it to your needs). I plan to port it to Lisp (just ‘cause it’s cool :P) but for the time being it covers all my needs (at least my transportational needs!). The big thing that is missing is time estimation based on time and date but it works perfectly and without it (and don’t forget I’ve made it this in less than 8 hours… - you can check the plan file / check previous post).

Check some screens here (running from the emulator), check it on git and download it on your mobile.

Enjoy

PS : It’s in Greek and only for Greece but is trivial to make a translation.

Start

Comments (View)
Sun Mar 1

Time your pet projects!

The most interesting part in programming is creating stuff that to you seem like the most awesome stuff but to others seem like “yeah, cool” or “why did you spent your time building this useless thing?”. That might be the reason why many of our pet projects don’t get published/released (all creators denounce their creations). Our maybe that’s not the reason. Whatever.

On little tip I am using (that’s generally a good tip regardless of whether you release your new-born software to the public or not) is timing my projects. It sounds a little bit boring (it’s like when you were told to create a skeleton of your essay before you started writing it) but it has two main advantages :

  1. Prevents feature-creepism
  2. Gives you satisfaction

Of course there are many more reasons to time your projects (check joel’s article here) ranging from “knowing your programming skills” to “know how much you can charge when you are freelancing” but from the perspective of programming junkies (“oh, I have a great idea! Let’s do it!”), they don’t have a great influence.

I time my pet projects just to be sure I stay on track (and not implementing a 3d engine when I’ve started creating a lisp module - believe me I’ve done it…) and because it gives me a nice approximation of whether this thing is really 30 minutes of work or 3 months. When you’ve done it some times, you become better and you have second thoughs about adding the twitter-clone in your text editor that would be VERY cool and at first it seemed like 1 hour of work but after you put your estimated time-frame you see it’s actually 5 months.

But in order for this thing to work, it has to be VERY simple (so you don’t spend 5 months implementing a better system for tracking projects). What I do? Here it goes :

  1. Write on paper (or on your favorite editor) what must be done (with some time estimations). You can save your file in your directory of your project (I usually save it with the name .plan)

For example:

  • Create J2ME project (5 minutes)
  • Put the nodes (20 minutes)
  • Create prototype algorithm in Python (1 hour)
  • Port it to J2ME (1 hour)
  • Create Splash screen (30 minutes)
  • Git it (5 minutes)
  • Tell the world - twitter/facebook/blog/reddit (10 minutes)

You could say “5 minutes for creating a J2ME project?”. Ok, it could be 1 minute but if you put there the directory structure, some files and other stuff it could go up to 3. And these are rough estimates just so you can do your work easily and having fun and NOT trying to beat the clock! Don’t forget this is a pet project that has to be fun :D

and now for the second and final step :

2.  Time your progress step-by-step (ooooo babeeeeee) and click them away from your .plan

Yeap, it’s easy!

So give it a go and tell me what you think of! I am heading to create an emacs plugin for this :D

Comments (View)
Fri Feb 27

What is emotionull?

Emotionull is a word that combines emotion and null (that’s how we geeks say nothing or undefined - depending on the programming language you love).

You’ve heard it first time here and you can’t unhear it now!

So, what we really are?

Consider a show (hopefully not a freak show!) with many high-star guests. Now, instead of “show”, put “software” and instead of guests put intelligent and playful developers that are having fun creating software the way that it wasn’t intented to be made! Can’t get it? Stick around and you’ll see ;)

Hope we all enjoy the ride!

Comments (View)