Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
jlouis
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
22 ms
·
211.
▲
by
jlouis
9y ago
In the Go world, they also serve as a way to gradually shift code around. Large code bases tend to have parts which are on transition from an "old" way to a "new" way, and type aliases allows you to maintain a backwards
212.
▲
by
jlouis
9y ago
Having spent a lot of time in emacs, vim and plan9's acme(1) editor (which uses the mouse heavily): The speed is about the same for most work. The time spent thinking is the major task which happens, so the time it takes to edit your b
213.
▲
by
jlouis
9y ago
You are correct. The transport is a detail and if the query is the same, the response should be the same. What sometimes do create a difference is if one transport has one way of authenticating whereas the other transport-path hasn't
214.
▲
by
jlouis
10y ago
Squint your eyes a lot! A GraphQL query is just a query on some objects having some fields. You can tie any function to a field. In particular, you can have each field be a function which executes SQL code. And that code is free to JOIN as
215.
▲
by
jlouis
10y ago
We did this for the whole schema (in an Erlang port of the GraphQL server). It turns out to work extremely well for our use case, and it seems to fit better to the Erlang model of working with the code.
216.
▲
by
jlouis
10y ago
Erlang has the `ssl` application which is built on top of `crypto`. The latter uses OpenSSLs libcrypto, but ssl is written in Erlang. Historically, whenever there is an OpenSSL vulnerability, it doesn't affect the ssl application, and
217.
▲
by
jlouis
10y ago
You may wish for fewer sources of drama, but there is always the risk that your wish will not be granted. One particular problem is that drama has a certain amount of "background radiation" in the world, a noise floor you can'
218.
▲
by
jlouis
10y ago
It is lower than my usual solution which is to pipeline requests to another process over a pipe. That solution has an overhead of about 1us per call. As for not blocking, the OTP team is working on getting dirty schedulers to be a first cla
219.
▲
by
jlouis
10y ago
I had a hunch you were talking about the dialyzer, but unless you happen to know about it a priori, this part reads like false information, and it almost had me tune out of the rest of the article. I fully understand you intended to write s
220.
▲
by
jlouis
10y ago
I think this is an excellent suggestion. Another point could be to push the aside down into a footnote. Readers can then peruse that part on their own leisure, without having to stop your flow in the article.
221.
▲
by
jlouis
10y ago
Don't underestimate the cost of trivial maintenance. In any project constrained by time, you risk people skipping on these things in part of the system. Erlang/Elixir is pretty well built for robustness, so a single library is les
222.
▲
by
jlouis
10y ago
May I suggest some changes to the type parts: * Elixir doesn't infer types. The language is dynamically typed, just as Erlang is. Using the word "inference" is somewhat dangerous since it means something very specific to a ty
223.
▲
by
jlouis
10y ago
Consider a binary tree. You don't have to copy the whole tree, which is O(n) but rather only the "spine" path from the altered element to the top, which is O(lg n). In practice, there are also many cases which ends up on the
224.
▲
by
jlouis
10y ago
The Mill architecture has lots of ideas which are really good on paper. We've had the same situation before, around 2000 with Itanium. There were many parts of that CPU which looked good on paper. In hindsight, the Itanium was too comp
225.
▲
by
jlouis
10y ago
The post lacks the term "CSPRNG", which I would have thought to be there in a discussion about randomness. Especially in collaboration with the concept of security. The long story short, a Pseudorandom sequence can be more than en
226.
▲
by
jlouis
10y ago
Yes, but the Go tool doesn't do shrinking, which is troublesome once you start building big models. (disclosure: I have some pretty large Erlang QuickCheck models on Github)
227.
▲
by
jlouis
10y ago
Functional programming largely has two schools: Treat "commands" as a separate entity from expressions, and bake "commands" into expressions. The former is largely Haskell, Clean, ... and the latter is exemplified by e.g
228.
▲
by
jlouis
10y ago
If you move this into the language itself, the language will grow. It is better to define the language as having the simplest possible API which will still work. Then build something like supervisors on top of that fabric. Supervisors use t
229.
▲
by
jlouis
10y ago
There is an interesting overlap in Haskell, Standard ML and OCaml as they do type inference. Hence they read like a dynamically typed language, but forces a strict typing discipline by deriving the types from the written code by inference.
230.
▲
by
jlouis
10y ago
This is what MLton essentially does as a system. It will expand away every module use such that they have no runtime overhead, but only exist in order to organize code. This allows you to build software consisting of many small functors whi
231.
▲
by
jlouis
10y ago
Good question. Results such as these can be of a form where they currently don't provide much benefit, but yet moves the knowledge of Paxos-like consensus forward. That is, you explore where the system has flexibility in its very nat
232.
▲
by
jlouis
10y ago
The nice thing about the paper is that it is transparent. It includes a TLA+ specification for the claims that they make. In turn, you have a concrete model checked implementation you can talk about or use a basis for understanding where ei
233.
▲
by
jlouis
10y ago
When I quickchecked maps, my approach was to use the distribution feature to run the maps code itself on another VM and trying for force it into a crashing state. This avoids having to restart the VM all the time. AFL fuzz is severely limit
234.
▲
by
jlouis
10y ago
I hope we can get this to run much faster than a few executions per second. Having a way to speed this up could greatly help eliminate errors in the Erlang VM. The OTP team is usually pretty good at working with tooling for correctness arou
235.
▲
by
jlouis
10y ago
Fuzzing is different from QuickChecking: QuickCheck uses hand-crafted known properties and generators. Fuzzing don't. QuickCheck can be used to find negative tests, but this is the sole target of a fuzzer. There are some similarities i
236.
▲
by
jlouis
10y ago
To elaborate: Tensorflow is clever because it takes your flow graph and cuts it into pieces which it then executes on computational units. Any computational unit will do, really as long as you have a backend for it. This choice makes adapta
237.
▲
by
jlouis
10y ago
Pure guesswork: Java stems from Sun. Sun made Solaris. And Solaris had an ideology about transparency and discoverability of running systems. They have some outright amazing tools for introspection into a binary that is running. This probab
238.
▲
by
jlouis
10y ago
There is a subtle but important difference: In a timeout situation, you know relatively little. If the circuit tells you it is broken, you know that the backend system is deemed down and trying again right now is probably futile. Each clien
239.
▲
by
jlouis
10y ago
Another good trick is to melt the fuse if the request is merely slow. This can often back off before the timeout scenario occurs. I used this to great advantage when I crawled all duels of Quake Live years ago. If the site became slow, I wo
240.
▲
by
jlouis
10y ago
Disclaimer: I'm the author of fuse . Circuit Breakers provide three things not provided by your above scheme: First, there is a configurable policy on how many errors to tolerate before breaking. This policy is not baked into your cod
More ›