By learning only the most important rules, and then enable the compilers undefined behaviour sanitizer(1) during development, making mistakes, and fixing them.
You can remote debug webviews (from Safari on a Mac), but only web views in apps signed with a development provisioning profile (1). So to debug web content in iOS Chrome you would have to build and install Chromium for iOS yourself, rather than use the Chrome App Store version.
> You're just sending messages, so you can send a message over the wire and it would be as simple to the developer as sending it locally
If you are expecting a reply, or some side-effect in another system, as a result of the message you sent (and usually you would expect that, otherwise you wouldn't send the message in the first place) then it's not that simple.
If the actor is in the same OS process on the same machine, then message delivery is reliable, and you know you'll either get a reply OR a signal that the other actor died. If, on the other hand, the actor is on another machine across the network then the semantics are different. You cannot always differentiate between the remote actor dying and an intermittent network connection error. So you need to take that into account in your protocol design - for example by making operations idempotent.
I've many times seen Erlang code where the developers didn't make this distinction - because the message passing operation looks the same, remote or not - and as a result the system is not resilient to network failures.
That's an important point, and didn't mean to make the problem of distributed actors appear trivial. In my mind, all the more reason to consider the distributed case when baking in actors into your language. For example, what distributed primitives would the language support vs leave modular for libraries?
>I've many times seen Erlang code where the developers didn't make this distinction - because the message passing operation looks the same, remote or not - and as a result the system is not resilient to network failures.
It's not about the message passing operation looking the same. The developers erroneously assumed that message delivery was guaranteed. The core issue here is not unique to actor systems.
Erlang/Elixir and Akka do not guarantee message delivery (even for a local case) from what I understand; guaranteed message delivery may mean different things in different contexts (like message queued in mailbox vs message is received from mailbox). In my opinion, developers should always program defensively when writing networked applications using something like the circuit-break pattern or making operations idempotent as you mentioned. When using actor systems, developers should not assume guaranteed message delivery unless the tool allows them to.
I'm not familiar with other actor systems so I can't speak on their guarantees, but Erlang has outlined the reasoning why messages shouldn't be considered to be guaranteed here [1].
That link is talking specifically about the bare send (!) when in a distributed setting. Erlang guarantees locally (in the same VM) and guarantees ordering as well locally (ordering when done in a synchronous block, if you have a single process do send msg1 followed by send ms2, locally it's guaranteed that msg1 will be "received" first, if the receiver is alive). Outside the same VM even if in the same host it can fail (someone closed the socket the other VM is on for e.g).
Erlang also bakes OTP, that is a library for messaging semantics and process behaviours (that processes have to implement to be OTP) and introduces the concept of a "call", where a unique reference is created for the message being sent and only when the receiver processes the message and "replies" (with the answer and the reference) is the "call" considered complete and allows to be sure the message was processed to the point of sending that reply. This is the solution the "ack" mentioned in the linked doc refers to. It's not inherent in send because send is async and the only way to have it know that, is to wait for an ack.
(you can implement the call semantics with plain processes, but it's such a normal thing that in OTP it's baked at a lower level for the process behaviours included in OTP, mostly all the gen_* behaviours)
All of this breaks down in distributed settings because it's physically impossible to guarantee. Your message may be received but the answer back may not because the network glitched or the hardware blew before the response was sent. These are problems of distributed systems though. You can be sure that if you get a reply from a call that the message was received. You still need to take (or not) care of some of the failure modes accordingly to your requirements (be it having idempotency, retry logic, nodes behaving as queue processors, etc). Some failure modes encode the reason as well, for instance a failed call to a non-existent pid in a functioning node that is reachable is different than a failed call to a non-reachable node, but a failure in a node that went down or a node that is alive but not reachable is impossible to discern without additional things.
“might cause”, yes. But at least with Postgres that only happens if you add a default value to the new column. You can add the default value in your application instead, just like you would with your average NoSQL DB.
Then, when you have low load on your system, you can migrate the rows in batches to have a default value, and eventually remove the application default.
Second that, what's wrong with NTT? 250mbit fiber for a fraction of what it would cost in the US. IPv6 ready. Basically no down time in 5 years. Very polite service staff.
Sure, if you look at how they design their websites, signup process and router UX, it's... a bit special (from a "western" perspective) ... But it works.
What about building a service, perhaps a web browser plugin, that overlays a trust-worthiness score + contextual information, over text (bonus for images) on the web?
If a user posts "I recommend product X", the overlay would say "Caution: This user also recommended the product Y,Z in the last 48 hours. 34/34 of the users post in the last month are product recommendations. Sentiment score for users posts: 100% positive. The following internet accounts are likely controlled by the same individual or organization: ..."
Somewhat feasible. You really need distributed fact checking to scale up especially since you don’t have source ips. If you can do that you might have something if you can keep participation up.
and never forget: the black hats will never stop trying to game any system you try to come up with. At this point in time, I think it's pretty clear they have a strong upper-hand.
Even if that would be true (that US supported that coup), would the democratically elected Mohamed Morsi have promoted science education in Egypt? The Muslim Brotherhood's history of science education doesn't seem so rosy.
Will take my time reading this. But will tell you my opinion.
No, I don't think the MBH would accept ALL the results of science. But I do think they would have made what they could to make the education system better.
But again this is not the point, What about after the MBH? Maybe someone else would came to establish a better system. But now it is all gone. No real elections, and no peaceful transfer of power.
Abdus Salam belonged to a school/sect of Islam that encourages open debate and promotes a scientific interpretation of the Quran.
"Salam was an Ahmadi Muslim, who saw his religion as a fundamental part of his scientific work.
...
In 1974, the Pakistan parliament made the Second Amendment to the Constitution of Pakistan that declared Ahmadi to be non-Muslim. In protest, Salam left Pakistan for London." [0]
Thanks for that extra info. I'm wondering if Weinberg's comment may in fact have been in support of Salam and his (possibly frustrated) experiences in Pakistan, rather than in contradiction of it. I think it would have been a fruitful avenue for the article to pursue.
"My late friend, the distinguished Pakistani physicist Abdus Salam, tried to convince the rulers of the oil-rich states of the Persian Gulf to invest in scientific education and research, but he found that though they were enthusiastic about technology, they felt that pure science presented too great a challenge to faith. In 1981, the Muslim Brotherhood of Egypt called for an end to scientific education. In the areas of science I know best, though there are talented scientists of Muslim origin working productively in the West, for forty years I have not seen a single paper by a physicist or astronomer working in a Muslim country that was worth reading"