Log in

No account? Create an account

Tue, Oct. 9th, 2007, 01:54 pm
Somewhere deep inside there's a neon sign

I've been hankering to learn a new language recently. The only problem is which one to learn.

To learn a new language you need to have problem to solve in it otherwise you're just spinning your wheels and there's no motivation. This sort of rules out Lisp and SmallTalk for me.

I really don't have that much use for Ruby since I don't do web stuff, I've already done at least one large project in Python (and I didn't really find it to my taste although I realise that's a personal thing. Part of it, however, might have been that it wasn't sufficiently better/different from Perl to make it worth giving up all those years of knowledge and CPAN).

I embraced the strange beauty of Miranda and Haskell over a decade ago and the even stranger beauty of Prolog about a year later.

I've been aching to have a go at D for a while but haven't had a project to do in it - although I've been pondering either redoing my SWF dissertation and Gravel stuff or, alternatively, writing a compositor, possibly with Shake plugin compatability (this would especially useful since the fucking Apple fucks decided to End Of Line it because no-one used it on their hardware despite them dropping the price to $499 for OSX and keeping it at ~$5000 a seat on Linux. Assholes).

However one of those is retreading old ground and the other's kind of an overly ambitious project.

I thought about C# as well - maybe implementing this stuff that I wrote about 2 and a bit years ago but, well, it's not really that different from Java is it?

A few people have been talking about CouchDB - a transactional, non relational DB type affair written in Erlang.

Erlang is pretty cool - a concurrent, distributed, functional programming language based around message passing with a bunch of nifty features designed to be fast, fault tolerant and with high availability in minds (code can be replaced without restarting the system) and which, because its functional, can be reasoned about.

I've also been using ActiveMQ a fair bit recently. I hate it. It sucks (for me at least, maybe I'm just unlucky) and seems to introduce new regressions at every point.

Thinking about it most of the features you want from a PubSub system - HA, guaranteed delivery, distributed, concurrent - you get for free in Erlang. Throw in CouchDB for the transactional stuff and half the hard work is done for you.

It's not an unprecedented idea either - ejabberd, the XMPP server used to run jabber.org is written in Erlang.

Feature set wise I'm thinking fairly basic - multiple master-master brokers with fail over, queues (i.e only one subscribed consumer out of many will get a message), topics (multiple subscribers all get a copy of the message), optional guaranteed delivery and then maybe later point-to-point communication.

Something akin to Rendezvous's globbed subjects or JMS's Message Selectors would be cool too.

The only issue is how other languages would use the system - a simple network protocol or HTTP would work but it would be nice if it could emulate JMS or STOMP as well.

Tue, Oct. 9th, 2007 10:42 pm (UTC)

What about Spanish or Catalan? :-)

Tue, Oct. 9th, 2007 10:51 pm (UTC)

I suck at real languages. I try, i really do but my French sounds like I'm parodying Inspector Clouseau, my German is so bad that worried passers by have thrust me to the ground to check to see if I'm having a fit or if I've accidentally swallowed a pint of marbles and my Japanese inexplicably brings out the otherwise dormant Northerner in me. Imagine "Hajime Mashite" as pronounced by Geoffrey Boycott.

Wed, Oct. 10th, 2007 08:37 pm (UTC)

Esta bien. I ordered at the tapas bar on Saturday, and did well enough that the wait staff spoke to me in Spanish, but that's about all I can manage. Despite more than a semester of French, all I can say is "I would like to travel by hovercraft" Fun, but not so useful.

How's San Fran? We miss you!!!!

Tue, Oct. 9th, 2007 10:53 pm (UTC)

I keep meaning to have a bash at C#, mainly for XNA.

(one of my New Year's Resolutions was to get into indie game development. Haven't written a single line of code outside work so far...)

Tue, Oct. 9th, 2007 10:59 pm (UTC)

Yeah, XNA is a draw for C# - I went to the games day at Imperial (go, go Introversion software) this year and there was some stuff about it.

My main problem is that I haven't had an original games thought in a while - the closest I've come is a sort of into the screen shmup that has you flying down valleys generated from the wave forms of MP3s - sort of a cross between Tempest2K, Rez and 1942.

It's a pity that there isn't some way to allow people to play essentially unvetted XNA games on their 360s.

Tue, Oct. 9th, 2007 11:21 pm (UTC)

The games day looks interesting, might see if I can make it to the next one.

I have plenty of vague ideas, though no truly solid designs.

You might want to check out this:

Presumably it's possible to at least package XNA stuff for redist on PC.

Wed, Oct. 10th, 2007 07:24 am (UTC)
cudddly: Erlang

So I had a look at Erlang a few months ago. It's really not a beautiful language and it's really slow at doing things that other languages do very quickly, like data munging. However, it does have some wonderfully overcomplicated libraries which do appear to do the right distributed thing. Meh. It's just another language.

Wed, Oct. 10th, 2007 06:15 pm (UTC)
deflatermouse: Re: Erlang

Hmm, interesting.

I've only done relatively trivial examples so far but it's looked quite nice. I'd be intrigued to hear your thoughts. Beer/lunch/both when I back then?

Fri, Oct. 12th, 2007 03:08 pm (UTC)

i was going to say erlang right after the 3rd paragraph. but i think you're mistaken about lisp.

btw, get beautiful code, if you haven't yet.