views:

856

answers:

8

I recently discovered Erlang and am now working my way through a couple of tutorials. By now I'm looking forward to actually implement something as a hobby project. I'm not really interested in yet another chat server. I would like to code something more interesting (yes I'm aware that this is a rather fuzzy term) which is also manageable, so I can finish it in my spare time.

Any suggestions?

Edit: The project should preferably highlight Erlang's strenghts (concurrency, distributed).

+2  A: 

This doesn't exactly answer your question, but if you are looking for an interesting free, open-source project that is written in Erlang, you should definitely check out CouchDB. From the website:

Apache CouchDB is a distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API. Among other features, it provides robust, incremental replication with bi-directional conflict detection and resolution, and is queryable and indexable using a table-oriented view engine with JavaScript acting as the default view definition language.

CouchDB is written in Erlang, but can be easily accessed from any environment that provides means to make HTTP requests. There are a multitude of third-party client libraries that make this even easier for a variety of programming languages and environments.

The CouchDB website has more details. Happy coding!

William Brendel
Thanks, I'll have a look at it.
Stefan Schmidt
+8  A: 

Project Euler, for sure.

David Grant
Good idead. I stumbled over it a while back and wanted to solve some of those problems, but later forgot about it. So, thanks for reminding me :)
Stefan Schmidt
Sure, they're good problems, but you can solve them in any language, and most will be better suited than Erlang. For Erlang, what you want are problems that require/take advantage of a distributed solution, because that's where Erlang's strength lies. AFAIK, Project Euler isn't [necessarily] that.
Ellery Newcomer
True. It was still nice to have the reminder that the project is around and i should get some brain jogging going. :)
Stefan Schmidt
Well, implementing a distributed version of Eratosthenes Sieve should be fun.
JesperE
@JasperE: Describe how to distribute Eratosthenes Sieve in worth manner?
Hynek -Pichi- Vychodil
+4  A: 

Some things from my copious ToDo list that would both be good learning exercises and helpful to the erlang community at large:

  • Profile all the available Key/Value stores:

    • Write a library for testing insert, lookup, delete, search times for a variety of K/V stores
    • Create a benchmark suite people can run
    • Make it work with ets, dets, proplists, gb_trees, dict, orddict, redblack trees, bdb, tokyocabinet, ...
    • Produce pretty graphs
    • Make it easy to update, contribute to and run on anyone's machine
  • write a new io_lib:format routine that uses named parameters:

    • io_lib:nformat("Hi there ~{name}s~n.", [{name, "Bob"}]).
    • This is useful for internationalisation if the position of parameters changes when the language of the format string changes.
  • Extend erl -make (make.erl)

    • Allow adding code paths (so that you don't need to do erl -pa LibraryPath -make)
    • Compile/load behaviour modules before modules that implement those behaviours
    • Handle hierarchal modules correctly (output path in particular)
archaelus
A: 

I'm also fairly new to erlang. I am looking at projects from Github right now, although I agree with William, CouchDB is probably one of the most popular Erlang projects.

Sushant
+5  A: 

For something for yourself, consider writing a simple server; something that, for example, services date/time requests or -- a little fancier -- an HTTP daemon that serves only static content.

The best part of Erlang is the way it handles concurrency; exercize that.

Charlie Martin
That's the kind of project I am looking for. Something that highlights Erlang's strength (concurrency, distributed).
Stefan Schmidt
+1  A: 

Just make sure you build something real, else you will build toys all your life, In the real world. We build real things.

Flinkman
+1  A: 

File indexing/search system. This was going to by intro project but I've switched over to something else.

Once you've got it working you could move the indexes to mnesia, and then spread the thing out other nodes to a have a whole network index.

+1  A: 

find something erlang doesn't have that you understand and like. I did that with etap https://github.com/ngerakines/etap/ Now nick has taken over management and it's used internally at EA games. It was fun to make and like a previous poster it was something real so I learned to serve real world problems working on it.

Jeremy Wall