Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
aphyr
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
9 ms
·
91.
▲
by
aphyr
3y ago
Aw shucks, thanks :-)
92.
▲
by
aphyr
3y ago
That depends! As the article discusses, snapshot allows anomalies--like write skew--which might violate application invariants. Depends on your workload.
93.
▲
by
aphyr
3y ago
Yup! See https://jepsen.io/analyses/mysql-8.0.34#list-append , which also has a link to the code: https://github.com/jepsen-io/mysql/blob/4c239cb5c66a7f1a55fa... This isn't CONCAT-sp
94.
▲
Jepsen: MySQL 8.0.34
(jepsen.io)
364 points
by
aphyr
3y ago
|
140 comments
95.
▲
by
aphyr
3y ago
Necessary depends on your use case! I spend a lot of time waiting on analyses, and the more operations I can test, the more bugs I can find. I probably invest more time in performance optimization than most people. Regarding your specific e
96.
▲
by
aphyr
3y ago
I maintain dependencies for a lot of people--nowhere near operating systems or stdlibs, but my OSS gets fairly broad use--and I try very hard not to change their APIs too much! It's a real concern.
97.
▲
by
aphyr
3y ago
Nope! For a few reasons Jepsen sticks very closely to Traditional JVM Threads. Part of that is because Jepsen isn't hyper-concurrent. Most concurrency errors manifest in just a handful of client threads, and the JVM will run ~10K threa
98.
▲
by
aphyr
3y ago
Tbh I think they've actually gotten worse in recent years. This thing where the compiler spits out a stacktrace to /tmp and makes you go and cat it? Absolutely awful. And the move to spec, ugh, UGH. I have wasted so much of my l
99.
▲
by
aphyr
3y ago
Speaking very loosely, primitives on the JVM are values which are represented directly in memory, instead of as pointers to objects on the heap. Clojure (again, very loosely) generally treats everything as a pointer to a heap object. There
100.
▲
by
aphyr
3y ago
There's a happy medium, I think, and I also imagine that depends on scope of change and the kind of applications involved. Speaking personally, I'm OK rewriting code, say, every decade. In the Ruby world, things moved so fast that
101.
▲
by
aphyr
3y ago
Clojure's Java interop story is generally really good. Method calls are predictable and uniform. The collection types generally work both ways, rather than being a completely independent type hierarchy (as a former Scala programmer, wh
102.
▲
by
aphyr
3y ago
Clojure has a gradual type system--core.typed--that I've used extensively. It's... it's very cool, but for my uses it seems to be more trouble than it's worth. I keep coming back to it every few years, though.
103.
▲
by
aphyr
3y ago
DB vendors generally don't write Haskell clients, which put a serious damper on my "test lots of databases for a living" project. Love Haskell as a language, but it's just not a popular target, and I wasn't brave en
104.
▲
by
aphyr
3y ago
I've been a Java programmer for ~18 years! A nontrivial portion of Jepsen is written in Java too. :-) Many of the points I touched on in the post are direct critiques of Java, but maybe I should be explicit. An obvious factor is size--
105.
▲
by
aphyr
3y ago
Aphyr.com is built with Luminus. :-)
106.
▲
by
aphyr
3y ago
Maelstrom is a frontend to Jepsen, a Clojure library for testing concurrent systems--mostly databases. Jepsen is also written in Clojure and Java--both run on the JVM. Because it tests concurrent systems, the language itself needs good supp
107.
▲
by
aphyr
4y ago
I agree--rystsov has covered this well here and in other parts of the thread. I just want to add that some of the Kafka documentation did claim writes were isolated (where other Kafka documentation contradicts that claim!) so it's po
108.
▲
by
aphyr
4y ago
> Offsets are committed in the next poll() invocation. I'm a little surprised by this--not that you're necessarily wrong, but our tests consumed messages synchronously, and IIRC (pardon, it's been 3 months since I was work
109.
▲
by
aphyr
4y ago
> When choosing a distributed database you are in a way already by definition giving up a chunk of of the C, Consistency. Er, I don't think that's right. Distributed systems (even those running in asynchronous networks) can and
110.
▲
by
aphyr
4y ago
There's been a lot of interest in this, and I keep meaning to put together an open-to-the-public class when I'm less swamped! Might get a chance to do this shortly--I'll post on https://groups.google.com/a
111.
▲
Jepsen: Redpanda 21.10.1
(jepsen.io)
193 points
by
aphyr
4y ago
|
59 comments
112.
▲
by
aphyr
5y ago
If you find out, let me know! Folks are always asking me "What database is best?" and I'm just shuffling my feet and going "Uhhhh, well, systems are really hard to build correctly, there's lots of tradeoffs, you pro
113.
▲
by
aphyr
5y ago
You understand incorrectly.
114.
▲
by
aphyr
5y ago
The core ledger system lost committed transactions by choosing not to write them to disk before acknowledgement.
115.
▲
Jepsen: Radix DLT 1.0-Beta.35.1
(jepsen.io)
159 points
by
aphyr
5y ago
|
74 comments
116.
▲
by
aphyr
5y ago
For cishet folks on HN: this writing isn't about or for you. I've seen a lot of this community's homophobia, misogyny, transphobia, and generally reactionary political drift over the last 12 years--including replies to my tec
117.
▲
by
aphyr
6y ago
As a gay person who periodically wades past the dialectical peat bog that is Hacker News, I am begging you to stop digging. I cannot tell you how disheartening it is to find comments like this at the top of a thread, let alone anywhere .
118.
▲
by
aphyr
6y ago
So clojure's type specialized function manages to be 300 times slower than the generic version in freaking python . In fairness "count" is better if still terrible (4x slower than python). Er, to be clear, Clojure's `
119.
▲
by
aphyr
6y ago
In short: it's slow because there isn't just one kind of Java array, and if you don't say which one you mean, Clojure has to do reflection to figure it out. Inside the JVM, there are several different types of arrays: bytes,
120.
▲
by
aphyr
6y ago
Criterium (the benchmarking library used here) uses multiple runs to obtain tighter bounds on amortized performance, as well as techniques to account for the effects of garbage collection and JIT compilation. See https://github.c
More ›