HN user

andrewbinstock

2,623 karma

Lead developer on Jacobin (JVM written in go--jacobin.org) Headed up Java Magazine (at Oracle). Earlier, editor in chief of Dr. Dobb's Journal, the original programming 'zine, and several earlier publications.

@platypusguy.

All comments intended to be helpful. If they're not, let me know.

Posts17
Comments192
View on HN
www.facebook.com 8y ago

Kent Beck's Product Development Triathlon

andrewbinstock
1pts0
thehill.com 8y ago

FCC chair pushes for complete repeal of net neutrality

andrewbinstock
1pts0
spectrum.ieee.org 8y ago

TI's Biggest Blunder: The TMS9900 Microprocessor (2017)

andrewbinstock
5pts0
www.siliconrepublic.com 8y ago

200 times more COBOL transactions today than Google searches

andrewbinstock
8pts0
www.msnbc.com 9y ago

Supreme Court rules cell phone searches require a warrant (2014)

andrewbinstock
15pts2
www.nytimes.com 9y ago

Jean Sammet, co-creator of COBOL, has died

andrewbinstock
429pts105
www.reuters.com 9y ago

Yahoo says at least 500M accounts hacked in 2014

andrewbinstock
106pts1
www.netstructuresolutions.com 10y ago

Developers are calling it quits on polyglot programming

andrewbinstock
4pts0
www.nytimes.com 10y ago

Gene Amdahl has died

andrewbinstock
740pts111
www.nytimes.com 11y ago

When birds squawk, other species seem to listen

andrewbinstock
3pts0
en.wikipedia.org 11y ago

The German Tank Problem

andrewbinstock
2pts0
www.drdobbs.com 11y ago

Farewell, Dr. Dobb's

andrewbinstock
1029pts320
www.drdobbs.com 11y ago

Function Purity and Immutability in D

andrewbinstock
55pts23
www.infoworld.com 11y ago

Puppet server drops Ruby for Clojure

andrewbinstock
4pts0
googlecloudplatform.blogspot.com 11y ago

Google to offer $100K in cloud credits to startups

andrewbinstock
3pts0
www.buildwindows.com 13y ago

Microsoft Build 2013 Conference to be June 26-28 in SF

andrewbinstock
5pts1
cs.unc.edu 13y ago

Researchers identify phrases in encrypted VOIP calls without decryption [pdf]

andrewbinstock
3pts0

A JVM written in go. [0] We're committed to a high-quality implementation that works reliably--so our test code is > 2.x the size of our production code. We can already run lots of classes, but the finished product won't be ready for alpha testing until, we hope!, end of this year.

[0] jacobin.org

Thanks for your note. The package notes on Jacobin say that we strongly discourage folks from running it in its present form. There are enough features still to be implemented, that for anything but trivial classes, you won't have a good experience. TBH, we're about a year out (we think) from having a version we can solicit users to test.

Nonetheless, if you'd be kind enough to post the above error and the class you used into the GitHub Issues tracker [0], we'll definitely include it in our test suite and make sure whatever the problem is, it'll be corrected.

[0] https://github.com/platypusguy/jacobin/issues

Author here. Zero-length arrays are used in the narrow domain you mention. but they are rare in bread-and-butter Java programming. Given some of the other comments on this page, you can see that this aspect is new to multiple readers. And in my experience speaking to Java devs, the reaction of surprise is far more common than "of course, I use them."

Author here. Thanks for your comment. It's sometimes a little difficult to know how deeply to go into the innards of the JVM before readers' eyes glaze over and they can't follow. I'll bear in mind for future articles in this series that I can/should go deeper than the present level.

Author here. Your "correction" is wrong. All dimensions after the zero dimension are ignored by the JVM. This is explicitly stated in the JVM spec[0].The typecheck you're leaning on is a purely syntactical construct. Inside the JVM, the arrays function and are sized just as I described.

Object having no size() method and arrays having therefore a length field is also confused. Arrays have distinct types (and classes, in the sense of getClass()), and therefore could very well have a size() method. It’s merely a stylistic choice of Java that they opted for the simpler .length syntax.

What's the "confused" part? Again, my description is accurate and you're simply saying that Java could have chosen a different way to do the same thing, but decided not to.

[0] https://docs.oracle.com/javase/specs/jvms/se16/html/jvms-6.h...

Lead dev here. Yup, that's right. There are a few classes that we will be forced to implement in Go. We're fixated on keeping this number as low as possible, but Thread is one that is inescapable. Class is another inescapable one--if we're to support reflection, etc.

Thanks for asking. I've always thought of the JVM as magical technlogy--I'm certainly not alone in that view. But in trying to learn more about it, I was greatly frustrated by the difficulty of reading the code base.

As you likely know, the Hotspot JVM is open source. But reading the code is very difficult, in part because it grew organically and in part because of its unusual design, in which many actions are buried deep at the end of a long series of function calls involving unexpected classes and unusual methods, etc.

This led me to thinking there would be value in a JVM written as a single cohesive codebase. And given that there is a 300+ page JVM specification and a reference implementation, I thought to myself, how long could this take? Two years later, and with help from two major contributors, we're still finding out! ;-)

Eventually, we hope, it will be a fun/interesting experience for users to pop open their Go IDE and watch a Java program execute--which is why we're intent on making sure it's written in 100% go.

In a larger context, Jacobin might eventually be useful as an embeddable JVM.

Lead dev here. We've run a couple of benchmarks internally just for kicks. To create a fair comparison, you have to run the Hotspot JVM with the -Xint flag, which says interpret only. Right now our performance is anywhere from 15-25% of the speed of Hotspot with -Xint on small benchmarks. We figure that the use of go alone creates some important portion of that overhead when compared with the C++ of the Hotspot JVM. We're guessing that a well-optimized Jacobin interpreter will eventually get to 50-60% of the Hotspot's -Xint speed.

But we first want to get feature parity, before pivoting to performance. When we have feature parity, we'll run the Computer Language Benchmarks and post the results. That'll be fun to see!

Author here: Long ago, when I got the domain, the project was going to be JAva COmpiler to BINary = Jacobin. And as the Jacobins were revolutionaries, it sort of fit the intended project. I don't recall whether Jacobin Magazine was in publication then or not TBH.

Author here: Right now we're entirely focused on getting parity of functionality so that anything that runs on the Hotspot JVM runs similarly on Jacobin. There's still a lot of work to do to get there. However, once we do get there, we'll start working on performance.

Completely agree. But I find that it happens not just on HN, but on other high-quality boards as well. (It would be improper of me to make the remark without confessing that I've done this a few times myself.)

I used Notion for about six months, including paying for the service. I could never get the hang of it. I wrote to the company and said: "Give me an overview explanation of how it all fits together so that I can distinguish pages from templates, etc."

But instead all they could point me to was endless reference pages on one feature or another. So, I was never able to get the hang of it, which as you say, is necessary to put it to best use. After several months, I cancelled my subscription and told them they need better docs: an overview/getting started guide, rather than a series of man pages.

They don't have the master key for my mailbox or entry hall Why would you expect someone to have your keys? That’s not a reasonable expectation.

Totally common in the US. It's not the keys to your house but to the common areas of your building, such as the lobby and hallways where packages can be left.

We have not yet added instrumentation to the Enterprise edition versions, and we will not do so until we have a way for self-hosted customers to opt out... (Scott Williamson, Gitlab VP of product, responding to the OP)

That's not the right way to do it. Customers should need to opt in, rather than having to opt out.

Agreed. And so did the authors of Tcl. They moved away from string representations years ago, but old articles on the previous releases keep being recycled.

Every piece of market news that says "market change X, because incident Y" is pure speculation since there is no way to establish Y as the cause.

This is not correct. There are many market news items that can be directly attributed to another event. Boeing's numbers this week are directly attributable to the Max fiasco. The company and analysts agree on this. Why would you assert that it's "pure speculation."

Bazel Release 1.0 7 years ago

But, unlike Bazel, it doesn't run on Windows, which is a big limitation in enterprises.