Live data from Hacker News

Why we used Pony to write Wallaroo

blog.wallaroolabs.com

81–87 of 87 posts

Re: Why we used Pony to write Wallaroo

#81
post #66

From Pony documentation: Simplicity Simplicity can be sacrificed for performance. It is more important for the interface to be simple than the implementation. The faster the programmer can get stuff done, the better. It’s ok to make things a bit harder on the programmer to improve performance, but it’s more important to make things easier on the programmer than it is to make things easier on the language/runtime. Thi…

Simplicity should be sacrificed for performance. It doesn’t always have to be that way though. Several important classes of optimization lend themselves to simplifying code. For example, code that effectively makes the same decision three times is both slow and obscures the intent of the code. And there are ways to compartmentalize optimizations so that people working in the general vicinity don’t have to bother with…

I don't see how it relates.

The idea is if I have to choose between simplicity and performance, I shall choose performance.

Your example does not make sense because you are not choosing simplicity over performance because the code was already performing slow.

Compartmentalizing the code to hide the complexity behind a black box does not apply either because you are not making a complex code simpler, the one that has to maintain your black box is still exposed to the "clever" code.

Re: Why we used Pony to write Wallaroo

#82
post #66

Earlier quoted context omitted.

Simplicity should be sacrificed for performance. It doesn’t always have to be that way though. Several important classes of optimization lend themselves to simplifying code. For example, code that effectively makes the same decision three times is both slow and obscures the intent of the code. And there are ways to compartmentalize optimizations so that people working in the general vicinity don’t have to bother with…

I don't see how it relates. The idea is if I have to choose between simplicity and performance, I shall choose performance. Your example does not make sense because you are not choosing simplicity over performance because the code was already performing slow. Compartmentalizing the code to hide the complexity behind a black box does not apply either because you are not making a complex code simpler, the one that has…

By compartmentalizing I mean in the realm of Single Responsibility at the level of a function.

A block that scans a table for a match can be moved up and out and then replaced at your leisure with a version that is more sophisticated and faster and the people using it only have to look at it if there’s a bug. They don’t have to look at it then they don’t have to grumble about how it took 10 lines of comments to document four lines of code because you used some uncommonly known property of Logic or Set Theory to eliminate a bunch of duplicate work.

And worst case they can revert the changes until they sort it out because it’s just one function with the same interface. (Also, they won’t fight you as much about the initial change because it’s easy to revert and self contained)

Re: Why we used Pony to write Wallaroo

#83

Earlier quoted context omitted.

The purpose of a program is to satisfy the users, not the developers or the managers, and if the next developer needs to study a thing or two before understanding the code that is OK. Simplicity should be sacrificed for performance. This is self contradictory. Programmer resources need to be allocated to pleasing the users. To please users, you need a certain amount of performance. Performance is not simply and end i…

I was keeping it PG-13

HR is happy to know!

Re: Why we used Pony to write Wallaroo

#84
post #60

Earlier quoted context omitted.

May I ask what turned you off about Scala?

Its the JVMs C++. Because it is both OO and functional, it has too many concepts and some have a poorly thought out mental load/usefulness balance. Implicits is just the most notorious offender. For me it was a huge productivity killer, because proficiency takes a long time and the tools are poor (IDE support, compile times & build tools). I like my languages opinionated, in as "there should be one way to do it". Pyt…

> Because it is both OO and functional

Hmm, I actually see that as a strength. Need a strong type system, pure FP, and immutable state throughout? Easy. Need to build an OOP library that will be mostly used by Java devs? Easy as well.

Implicits are handled pretty well by Intellij IDEA afaik.

Of course, I haven't had experience using Scala in a large codebase, so I may be on the wrong track!

Re: Why we used Pony to write Wallaroo

#85
post #64

Earlier quoted context omitted.

Depends on the sizing I believe. One problem I see in Java-based DB like Cassandra and Elasticsearch is JVM busy doing garbage collection. The major collection kicks in all the time. Probably because of bad config and bad data usage pattern, but it is still a common problem for me. I am all ears for advice.

How much free space is there after a collection? The garbage collector benefits a lot from having enough extra free space to keep things with medium lifetimes in the first generation.

The issue I observed was the both gen filled out very quickly so there was no chance for the minor to complete and just skip to major. But because the gens are consistently filled up, the JVM became "locked" doing full GC.

Re: Why we used Pony to write Wallaroo

#86
post #84

Earlier quoted context omitted.

Its the JVMs C++. Because it is both OO and functional, it has too many concepts and some have a poorly thought out mental load/usefulness balance. Implicits is just the most notorious offender. For me it was a huge productivity killer, because proficiency takes a long time and the tools are poor (IDE support, compile times & build tools). I like my languages opinionated, in as "there should be one way to do it". Pyt…

> Because it is both OO and functional Hmm, I actually see that as a strength. Need a strong type system, pure FP, and immutable state throughout? Easy. Need to build an OOP library that will be mostly used by Java devs? Easy as well. Implicits are handled pretty well by Intellij IDEA afaik. Of course, I haven't had experience using Scala in a large codebase, so I may be on the wrong track!

If it works for you, great! You have a very powerful tool at your disposal. There are many good reasons to like Scala, it is entirely possible that my experience would have been different in another team setup.

Re: Why we used Pony to write Wallaroo

#87
post #22

JVM GC is an interesting topic since recently there was a proposal for the ZGC project in the OpenJDK mailing list. http://mail.openjdk.java.net/pipermail/announce/2017-October... " ZGC has been designed with the following goals in mind: - Handle multi-terabyte heaps - GC pause times not exceeding 10ms - No more than 15% application throughput reduction compared to using G1 "

My understanding (which might be out of date now) is that G1 still doesn't perform as well as CMS, so i'd be more interested in a throughput comparison to that!
Post reply on HN