What Elixir related stuff are you doing?

  • Reading through Programming Elixir courtesy of this website.
  • Perusing r/elixir-lang r/phoenixframework

All part of my grand plan to become a developer.

3 Likes

I’m reading Elixir in Action and trying to get some practical experience making small projects:

  • Started working on a general-purpose authentication service with role-base access control about a month ago. Made some good progress, but it’s on hold for now. That’s been my only experience so far tinkering with Phoenix, and I liked it a lot.
  • Reimplemented META II (see here) and the ALGOL-inspired VALGOL I language to test it. Later I may go back and implement the VALGOL II compiler as a more in-depth test, although I’m not eager to deal with transcription errors from the original paper (see last few pages).
  • Recently published my first package: a backtracking behaviour called Backtrex. See the Sudoku solver example here. Now I’m looking for ways to improve the package and considering what demo applications to work on next.

Aside from following tutorials I haven’t done much on my own with processes, OTP, GenStage, etc. Excited there’s more to sink my teeth into. :smile:

3 Likes

In November, I just wanted to take a short look on elixir. After that, I can not stop learning.

So far I have

  • read ‘Learning Elixir’ by Kenny Ballou
  • checked in to this forum
  • checked in to exercism.io
  • read ‘Programming Elixir 1.3’ by Dave Thomas
  • coded some experiments and exercises

Next steps

  • read ‘Programming Phoenix’
  • read ‘The Little Elixir & OTP Guidebook’
1 Like

I would read Programming Phoenix. The book is really good.

1 Like

Currently been working on Blex which is a developer focused blogging platform.

Currently:

  • Implementing the settings cache
  • Adding admin authentication and roles
  • Tossing up between caching the post content to reduce phoenix render time vs having posts be pre-rendered at creation and just serving the static file.

Would love some feedback on that last point if I could! (Basically, typical SSR with post caching or after someone creates a post, generate the html file and serve that instead (requires regeneration of files tho on things like settings changes etc.)

5 Likes

A post was split to a new topic: Sleeperbot Elixir and React-native app

Might as well Update what I am doing.

  1. Converting software written in c++ and qt gui libraries to Elixir. This is what I have been using since 1999 to manage my own and my team when I have had that to deal with.

  2. Building ElixirGuide been spending and hour sometimes two to build a general guide for doing stuff. Hoping this will be a like a Wiki of sorts for all kinds of Elixir madness.

  3. Figuring out how to best use c++ and c libraries with elixir at performance critical levels (sub 1ms execution and NIFS are out of the question as)

2 Likes

Dirty schedulers or C nodes.

C node passing messages

Now back onto the payment gateway project (cashier) working towards a complete and solid elixir payment library.

Any help welcome :slight_smile:

2 Likes

Just learning and thinking how to apply.

2 Likes

@hlx & @swelham You guys mind sharing links if your works are open source?

2 Likes

I don’t have a lot of (any) extra time right now, so I’ve just been going slowly through some of the online resources for the language on elixir-lang.org.

2 Likes

Yeah sure the payment library is called cashier

3 Likes

Currently rewriting one project from Laravel PHP to Phoenix Elixir <3

4 Likes

Still very much in learning mode but started using Elixir for text mining. At some point I want to get very familiar with Nerves Project to use on my stash of SBC’s (RPi’s, BBB, ChiP and probably a few I have forgotten about) so I can bring extra nodes on-line for additional processing power as required.

3 Likes

Some updates on my crawling system in Elixir now that I’m at the 90 day mark of production. (see What Elixir related stuff are you doing? for context)

  • The “clocking” mechanism I put in place has had no issues so far. It has actually helped a lot in troubleshooting the live system since I can adjust the clock rate at runtime. This allows me to really watch state changes without stopping the system entirely as well as being able to pause the system in its tracks and inspect a specific process - I think it turned out real well with the way I am handling the processes this way, at least for my use-case where I have a lot of post-processing after scraping and around 40 or so state changes per job.
  • I now have 12 distributed nodes running in production and will likely scale out to about 20 by April or May.
  • My current numbers as of right now are 20,554,562 crawls with 23,754 data errors - “data errors” represent something that went wrong during the entire crawl/post-processing cycle but does not represent data loss or anything like that. These 23k items still sent a response - just one that was less than ideal. At the end of the day its well under our SLA.
  • I don’t have hard numbers here, but I think I’ve only had two legitimate “crashes”. One was due to some poor logging I put in a portion of code that caused my message queue to get too large. I paused my system but got impatient and just killed it rather than wait for the logging message queue to burn down. The other time I added some new state transitions, managed to misspell them, and forgot to add a default fall through handle_info for a scenario without a match. Both of these situations were human error on my part and they happened in the middle of the day when I was working on the system - that is better than 4am on a Sunday.

I’ll never really be done with this system as it will continue to grow, but I’m at the point where I sleep at night not worrying about this portion of my tech stack at all. I think that is a plus. I still deal with issues on our old crawlers, but as I migrate them each over to Elixir, life is getting easier for sure.

At the end of the day, my goal was to get to the point where I had stability and resiliency in a world that is tough to achieve this (crawling/scraping). I think I’m moving in the right direction.

Financially, the Elixir system has cut costs for this particular type of crawl job compared to our legacy system in regards to the amount hardware used and throughput achieved. Aside from this the data quality has improved quite a bit. Elixir isn’t the real hero on the data quality, but it allowed me to write a lot more code around data validation in many less lines than another language due to things like pattern matching. (I was lazy and writing crappy code before :slight_smile:)

Hopefully this inspires someone to give it a go if you find yourself maintaining a legacy system with a lot of moving parts like myself. Not saying Elixir will be a life saver for you, but in my case its been a positive one.

Start small and experiment is my advice.

10 Likes

Right now I’m thinking about small-but-real-world projects to play around with.

I (still) don’t have a lot of time, so getting my hands dirty seems like the best use of the time I do have…

2 Likes

This week I have been

  • Watching videos from Elixir Conf 2016
  • Bought the Programming Phoenix
  • Trying to promote Elixir/Phoenix to friends (unsuccessful so far)
  • Starting to write a new app using Phoenix while learning it
4 Likes

Just released version 0.2.5 of Drab - the Phoenix extension to access the browser directly from Elixir and eliminate JS/Ajax.

Since I wrote to the forum the last time (v 0.1.0) many exctiting changes has been made:

  • modularity: based on popular React fans request (@vic) now you can choose which Drab modules you want to use, so you are not fixed to jquery anymore
  • new Query functions, like cycling (update(:text, set: ["One", "Two", "Three"], on: "#thebutton")) - @Eiji
  • more callbacks, like onconnect or ondisconnect
  • own Store (similar to Plug Session, key/value store available in your functions)
  • access to Plug Session values (read-only, we don’t want to mess with Phoenix core)
7 Likes