ericmj

Joined 15 years ago

Karma
69
Submissions
15
Member since
Mar 12
Elixir core contributor and creator of the Hex package manager

[ my public key: https://keybase.io/ericmj; my proof: https://keybase.io/ericmj/sigs/8XDVhXU20uUdMCdnYZj49F7Q08Z3a6Qd1rJMUQQY954 ]

View on Hacker News

Recent submissions

Comment · 5 years ago
Comment · 5 years ago
What made your test runner faster? We would be very interested in porting those optimizations to ex_unit.
Comment · 6 years ago
> And I remember seeing a lot of forum posts around the dangers of using GenServers (unless you know what you're doing).

The danger is using a single process of the GenServer instead of multiple, so you can get single process bottleneck that won’t use multiple cores. You don’t have to know any intricacies of BEAM or OTP to know and design around using multiple process instances of the GenServer.

> I know you can do distributed state in Elixir too, but it doesn't seem as easy as it is in other languages.

You can use Redis in Elixir as well. Saying that Elixir is worse at distribution than Python/Ruby because ETS isn’t distributed is a bit like saying Python is bad at distribution because objects are not distributed. It’s especially strange since Elixir ships with a distribution system (so you can access ETS from other machines) while your other example languages do not.

Comment · 6 years ago
Comment · 6 years ago
Comment · 7 years ago
Gun starts a process for each connection. The main idea for Mint was to not do this so that users can choose their own process structure.
Comment · 9 years ago
Search on hex.pm is not great and can definitely be improved, but we are currently at the limit of postgres full text search afaik, unless there are some magic things to tweak. This means we need to switch to other technologies to improve the search which is a bigger task.

But regardless of how good search is it wouldn't find ryal_core when searching for "commerce" if that word or any similar is nowhere in the metadata. The description for the package ryal_core is "The core of Ryal." which doesn't do the search any favours.

Comment · 10 years ago
There seems to be confusion here about the language semantics. There is no mutability in the expressions you have shown. buffer.copy() would not make sense since the language is immutable, why would you want an explicit copy mechanism when every update is essentially being performed on a copy.
Comment · 10 years ago
It still runs on a single 7$ hobby dyno. Package and registry downloads goes directly to our CDN so the dyno only gets traffic for the HTTP API and website.
Comment · 11 years ago
Pattern matching and function overloading based on types are different but can be used for the same purposes.

For function overloading the decision for which implementation to use usually happens at compile time along with the type checking. Pattern matching happens at runtime but is more powerful since you can pattern match based on you guessed it: patterns, instead of just types.

Another small difference is that with overloading multiple functions with different signatures are created (they just share name) but with pattern matching there is a single function with multiple "function clauses".

Comment · 13 years ago
What is wrong with the random routing they are doing now? Random routing works if your dynos can handle concurrent requests.
Comment · 13 years ago
Yes, memory bandwidth is one of the biggest slow downs of ray tracing. Rasterization access memory very linearly which makes it very easy to cache and easy to optimize in hardware on the GPUs. But ray tracing access memory very randomly, two rays originating from pixels next to each other easily diverges and so hits objects far from each other in the scene. This means that ray tracing will spend most of its time waiting for memory.
Comment · 13 years ago
Comment · 13 years ago
Purity has nothing to do with green threads. Many languages that doesn't have the concept of purity have green threads, like Erlang or Go. In fact, green threads are not a part of Haskell, but a part of the runtime. Purity is just a nice thing to have when working with threading or concurrent programs.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton