Elixir Blog Posts

I made a flow chart illustrating the LiveView life cycle :slight_smile:

If you want to get the mermaid diagram code to modify for any reason, it’s available at:

3 Likes

Wrote a blog post about how to customise the phx.new generator to include Oban (just an example and you can apply the same principles for any other changes to the generator).

4 Likes

You could add a box for patching to the current liveview.

1 Like

I wrote a blog post on how I built an MVP (using Elixir/Phoenix/LiveView) in 3 months whilst having a full time job. :slight_smile:

3 Likes

That’s a good call. I updated it to this, but I don’t know if I love the placement.

patch isn’t quite a callback, it’s the result of a callback. But it can also happen from the client with <.link> navigation, so I put it on Continuous Connection.

1 Like

In Postgres, if you search for users named ā€œJoseā€, you would expect to see our beloved JosĆ©, no?

You won’t.

You first need to ā€œunaccentā€ words with special characters for this to work.

This post explains how :point_down::point_down::point_down:

3 Likes

I’ve seen a lot of people express interest in Machine Learning in Elixir but were unsure of what the ecosystem has to offer, so I wrote a blog post to go over most of the prominent Elixir ML libraries and relate then to their Python alternatives. It includes a nice table at the bottom for quick reference. I even go into a bit of history of the ML development since I find it quite interesting how it sprung up.

1 Like

:rotating_light: New Blog Post Alarm :rotating_light:

Learn how to animate a side drawer using LiveView.JS

4 Likes

New Blog Post

An Opinionated Way of Organizing GraphQL APIs using Absinthe and Phoenix

Hope this helps!

2 Likes

My first Elixir blog in English!

3 Likes

please please don’t make it 2.0 yet! I’m still in the learning phase with the language itself! too overwhelming! :scream_cat:

1 Like

If you need i18n or i10n in an Elixir project you’ll most likely use Gettext.

The provided macros and functions have their own benefits and downsides. But there is a way to combine them and get the best of both worlds.

I was recently looking at a front-end video by FreeCodeCamp where they introduced the site https://codewars.com. I was surprised to see that they had some Elixir problems, but this post is not about one you can solve using Elixir on that site (at least not yet). Instead, it is about a JavaScript problem on that site that I had difficulty translating into Elixir code. This is because the problem (or, at the very least, the naive solution) requires in-place modification of a few variables within a loop. If you would like to see the problem, its statement, and how I came up with a naive Elixir solution using ETS tables, feel free to check it out here: https://danieljaouendevelopment.com/2023/09/09/elixir-codewars-problem/

Thanks for reading!

As a side note, I have been using GitHub Copilot for a few months now and am amazed at how well it knows how to extend my code. I was typing up the solution not using ETS a moment ago, and it knew to filter out the nils from my Enum.with_index. Amazing!

Interesting that you consider using ETS the naive solution. I would use recursion or reduce for this type of thing.

2 Likes

I think ETS is a serious overcomplication. It should be possible to solve it in a go with Enum.scan. Nice post though!

2 Likes

I tried to solve it with parsing combinators in another language and I like how simple it came out to be. Sadly I’m not accustomed with NimbleParsec’s API so if anyone could post an Elixir solution with parsing combinators it would be awesome.

1 Like

Interesting post, and thanks for sharing.

Although, I think the normal ā€œnaiveā€ way to do this in Elixir would be to use a function from Enum module, or plain recursive functions like

defmodule Challenge do
  def solution(string) do
    squeeze(string, [])
  end
  
  defp squeeze(<<>>, acc), do: Enum.reverse(acc)
  defp squeeze(<<c, rest::binary>>, [c | _] = acc), do: squeeze(rest, acc)
  defp squeeze(<<c, rest::binary>>, acc), do: squeeze(rest, [c | acc])
end
1 Like

Thanks to the mods for moving my post to this thread. :slight_smile:

NimbleOptions is a small but very powerful library that I think everyone should be aware of. It allows you to define powerful validation definitions to use with Keyword List options, and I have found it to be great!
Check out my latest blog post, where I share some advanced techniques that helped me when writing EXGBoost!

3 Likes