2,154 karma · joined February 1, 2013
which TZ?
> There are no off-peak hours.
Probably US west coast hours, but there's no public stats
2) this also means check must be run against every user's ID in their database, 10^9 more expensive
from the point of the dev - work done on the port will rot very soon, return of investment is really low. Also, the studio may not exist at all by time changes will be necessary - as fast as few days after public release nowadays :(
it could be RAM-bound, which is very much NOT cheap nowadays :)
You can but well, it's more profitable the other way around....
2) after ~8 years of using it, i find it ergonomic, light on congitive load and good for long term support
1..10
|> Task.async_stream(fn x -> x*2 end, max_concurrency: 2, timeout: 7000, on_timeout: :kill_task)
|> Enum.to_list()
Equivalent Go code would be very long and very ugly.Golang has its positives but you also lose a lot. Whole ecosystem is not comparable, like "debug live production cluster" is one-command away for Elixir vs "fuck you" for Golang
Well, depends on what you do. Ecto is closely follows SQL logic and allows to translate weird sql queries into code directly. All queries are explicit, e.g. you either do preload(...) or can't access nested records at all, no chance of N+1 by design.
Changesets are also different and are just functions you can define as needed.
defmodule MyApp.User do
...
def changeset(user, attrs) do
user
|> cast(attrs, [:email])
|> validate_required([:email])
# This matches the error from the DB uniq index to the :email field
|> unique_constraint(:email)
end