Projects for a Beginner

So, I’ve just ended the “basics” in Elixir and I’d like to test myself, or something like that, with some basic project, so that I know that I can continue. Does anyone have any project ideas?

PS: Please nothing to do with web, it’s just not my cup of tea and not my area of “enjoyment”.

1 Like

You should choose something that you have fun doing, best thing would be that you can use it.
The project does not have to be too simple, you do not build the foundation of an empire, code that last for decades. So just make errors and stupid things.

Whats really fun and useful is something embedded:

Don’t be afraid, nerves makes that really easy.

Not sure if that’s what you’re looking for, but currently there is the Advent of Code where you have to solve small riddles daily. They are quite a fun way to test your brain and your Elixir knowledge without many “dependencies”.

(You can also work through them not daily and can also do past years.)

For the first project in a new language, I will port some of my old ones. So you don’t need to worry about domain knowledge and can focus on the implementation techniques.

3 Likes

Good advice. But beware: I did that with some python code that’s in production and has to stay there. And now I can’t stand working on the original, because the Elixir version is so much better. :grimacing:

7 Likes

Yeah. On the bright side, you may uncover some obscure bug in the original implementation by doing it in a very different language. I know I did.

1 Like

I really don’t have all those needed things in this book. It’s way too much my budget for a “simple”(because it’s not simple) project.

I’ve already tried Advent of Code, but it’s also too hard. I could only do questions 1 and 2.

What do you mean by “port”? I dunno the language and the words used here.

I mean to rewrite some programs you have written in other languages. If you don’t have any then you can discard this advice.

1 Like

I’m guessing that by port they mean, recreate a project you did in a familiar language.

A project that is fun and not that hard would be to send/print messages around in an Erlang cluster.

Also, decoding mp3 headers is very nifty (checkout joe Armstrong’s book). It sounds dorky but it’s basically applicable to any binary format.

Anything embedded is fun if you have a raspberry pi lying around with a couple of sensors (you can use the excellent book about the weather station even without the exact components they advise).

Apart from that there are quite a few great books that could inspire you such as “Elixir in action”, “real time phoenix” (a bit webby, but great), “genetic algorithms in elixir “ and many more. Erlang books (eg “designing for scalability with Erlang and otp”, and of course “Programming Erlang”) are great resources for inspiration.

Chris McCords book about macros is also filled with fun stuff.

I’d definitively stick to the components used in the book. Otherwise you need some experience with I2C. The project will be hard enough for a beginner.

If you’re taking the web out of the equation, Exercism’s elixir track is a good place to start. They’re not more complete projects in the way I think of those, like the weather station one mentioned earlier but the exercises are a good slow progression beyond the basics.

As a beginner, I found Elixir koans to be another good introduction to the language. The compiler error messages almost give you the answer sometimes but you can run through them very quickly. For me, they helped solidify the topics I covered in the docs.

1 Like

Yes AoC is not for beginners. But if you like that kind of riddles take a look at Exercism. You can get a mentor there to help you and you can always get help here.

EDIT: two people recommending Exercism at the same time. Must be good. :+1:

Ah, maybe you’re right. I felt that for someone not too familiar with nerves but familiar with the pi and/or familiar with embedded in general it would not be that difficult to adapt with similar components, but yeah, depending on one’s background it might not be right.

Yea, I don’t have much basic-friendly projects, made in other langs.

I’m bad at reading other people’s code, sorry.

Nope, too expensive for me. I don’t have the money for those.

I’m already doing it, I just wanted a bigger thing, like a project, because their exercises is just to pass time, it’s not that hard.

What’s that, there is not much info in the site and github is no better.

It is maybe time to learn what a process is, because it makes a difference.

Solving problems with the help of concurrent processes is why it’s worth learning a different paradigm.

OTP is what makes the BEAM a special place :slight_smile:

1 Like

Agree, especially if Exercism is too easy.

Here is a great project: Simulating Conway's Game of Life with 100.000 Erlang Processes. Because why not?

2 Likes

What are processes and what difference?

What are those? (OTP and BEAM)

Way too hard and it uses HTML and CSS thing, again not a fan.

Processes are simple unit of concurrency, in Elixir/Erlang.

OTP is Open Telecom Platform, although the name does not reflect it’s purpose.

https://www.erlang.org/doc/design_principles/des_princ.html

The BEAM is the Erlang VM.