So yes, companies absolutely can get cheap(er) labour and have the same, or at least similar, quality.
199 karma · joined May 5, 2015
So yes, companies absolutely can get cheap(er) labour and have the same, or at least similar, quality.
You may want to take a look at the partisan[0] library written in Erlang. It is basically that, a reimagination of distributed Erlang, except that it can be multiplexed over multiple connections.
It was a cat and mouse game for a while, but ultimately, if you want to detect if someone is using adblock, you need to do it in JS. And then the ad blockers will just add that piece of JS to their block lists.
In this project I do not believe the IDs were always encrypted when being sent to the user. So we sometimes had to guess whether we received an encrypted ID vs a regular integer ID because it is possible for the encryption algo that was used to return a sequence of numbers.
I personally use Emacs and magit which has great support for worktrees. I do not know if the VSCode git integration supports it.
This may just be the simplicity of the example they have, but they also have an `update_changeset`, which I think is an anti-pattern. You should be creating a different changeset for each operation that can be applied to a given schema. In the case of a user, you may be able to change a password, or an email address separately from being able to change a screen name or something. You should be creating separate changeset functions for each of those operations.
The author also puts a foot note at the end stating that they would usually create a `base_changeset` function that can be reused for common parts of a changeset. Please don't do this. Just create multiple reusable functions for each check. For example, you may create private functions in the schema for `validate_email`, `validate_password`, etc. These are the reusable pieces that you most likely want to have and can be used from within any changeset. Then you will be able to mix and match them as needed instead of trying to come up with a truly base changeset that applies to everything and still have a lot of validation rules duplicated between various changesets.
I'm not saying this is the entire answer, but Drew has some issues with Zig https://news.ycombinator.com/item?id=15494222.
This doesn't always help either though. I have only ever sent PDFs to recruiters for this reason. Yet I have still had a recruiter completely rewrite my resume and add false information.
I generally keep a resume on me when I go to an interview just in case an interviewer had not seen it. I'm glad I do that.
[0] https://doc.rust-lang.org/std/sync/struct.RwLock.html [1] https://crates.io/crates/lazy_static
It is also hard on people that are used to working in the office to be told that they now have to work from home suddenly. I'm sure a non-trivial amount of people did not have a space for themselves to be able to work and they are trying to figure things out as they go. Not to mention figuring out how to communicate properly while everyone is remote.
There is also not a one size fits all solution. People will be more productive being where they are more comfortable. That may be at home, in a coffee shop, at a library, in the office or any other number of places. People are expected to work from home right now, so a lot of those other options are out of the question.
TL;DR, don't judge work from home when everyone has to do it during a pandemic.
My last "problem" is less of a problem with LV and more of a contraint of my system. I cannot guarantee that everyone using this application will have network access 100% of the time. So for a certain subset of my users, LV would not be ideal.
For what it's worth, I very much appreciate the work you and everyone involved has done for LV (and more generally, Phoenix).
My biggest complaint is that if your server restarts for any reason (say, a rolling restart), you currently lose all state that was on the server[0]. There appears to be some kind of workaround for forms currently, but for anything more complex, I would need to write JS in order to attempt to not have my page get reset to the default view. So if I need to write JS already, I may as well just write JS (or something that transpiles or JS/WASM) to have fewer moving parts.
[0] https://elixirforum.com/t/liveview-and-rolling-restarts/2397...
Basically, at the top level of your application, you will have a supervisor that will look after all of the processes that are important to your application. Each of these processes could have any kind of functionality (e.g., database connection, HTTP server, etc), or be another supervisor. When you start these applications, they too may start a supervision tree of processes that are important to them (e.g., the database connection may actually start a pool of processes).
In "fail fast" or "let it crash", only the process that actually threw the exception will die. The supervisor that is looking after that process will be notified of it being killed and, depending on how you have the supervisor configured, it may or may not start a new process to replace the one that died.
Another thing to note, depending on how the supervisor is configured, it may actually crash if a particular process it is monitoring crashes too many times. This will make the supervisor crash and it should bubble up to it's supervisor. Unfortunately, it is possible to take down your entire application this way.
TLDR: There is no master process that does all of this. Though, each supervisor is sort of a master process for each of its supervisors and workers and the processes a supervisor watches may or may not be restarted upon failure.