Live data from Hacker News

Thank You, Guido

blog.dropbox.com

371–380 of 388 posts

Re: Thank You, Guido

#371

Earlier quoted context omitted.

Not really. The newer open versions still don't match Oracle JDK 8. Wanna bundle a JVM with your app so your users don't have to worry about the Java runtime? Well, you can't do that anymore. Wanna use JavaFX? You have to jump to Java 11 and hope your dependencies don't fail with module packaging errors. Do you use Scala? GLHF. Standing still in the Java ecosystem is fine. Keeping on with the advances is painful and…

That's a lot of FUD spewing.

It's my own personal and professional experience. Yours may differ, but please don't call it FUD.

Re: Thank You, Guido

#372
post #266

Earlier quoted context omitted.

Not really. The newer open versions still don't match Oracle JDK 8. Wanna bundle a JVM with your app so your users don't have to worry about the Java runtime? Well, you can't do that anymore. Wanna use JavaFX? You have to jump to Java 11 and hope your dependencies don't fail with module packaging errors. Do you use Scala? GLHF. Standing still in the Java ecosystem is fine. Keeping on with the advances is painful and…

> Wanna bundle a JVM with your app so your users don't have to worry about the Java runtime? Why would that be the case? > Wanna use JavaFX? You have to jump to Java 11 and hope your dependencies don't fail with module packaging errors. Dependencies which still fail with module errors are basically abandoned and should probably be replaced. But even for those there's an escape hatch if you really want to continue usi…

> Why would that be the case?

I have a desktop Java app with platform-specific installers (.msi, .deb, .dmg). The Windows and Mac installers include a Java runtime, so the user doesn't have to worry about installing an external runtime. I'm forced to use Oracle JVM, because it's the only Java distribution that includes the tools needed. There's ongoing development on a tool that should bring these and more related features to the open JVMs, but it's not done yet.

> Dependencies which still fail with module errors are basically abandoned and should probably be replaced. But even for those there's an escape hatch if you really want to continue using them, so that seems to be a non-issue?

The issue is that the upgrade path isn't smooth. I have to upgrade everything at the same time, because what works on Java 11 doesn't work in Java 8, and viceversa. It makes everything way harder than it should be, if there was a clear migration path.

> I've worked either directly or indirectly with so many companies of all sizes using Java without any dedicated JVM specialists I'm pretty sure you're doing something very, very wrong with all the problems you seem to have.

What I do falls into a niche. It's not "very wrong" but it's uncommon. The main issue is that Java was a non-issue, a stable platform to build upon. But the recent Oracle license change forced us to move to fully open versions of Java that do not have the same features, do not bundle the same libraries, and do not have documentation detailing all these differences.

I'm not asking for a community to finish whatever feature I need, or for a company to make what I need free to use. I'm just trying to explain my own problems caused by Oracle forcing us to move to open distributions of the Java platform.

Re: Thank You, Guido

#373

Earlier quoted context omitted.

Not really. The newer open versions still don't match Oracle JDK 8. Wanna bundle a JVM with your app so your users don't have to worry about the Java runtime? Well, you can't do that anymore. Wanna use JavaFX? You have to jump to Java 11 and hope your dependencies don't fail with module packaging errors. Do you use Scala? GLHF. Standing still in the Java ecosystem is fine. Keeping on with the advances is painful and…

> The newer open versions still don't match Oracle JDK 8 I'm currently working on a web service that was written under Java 8. For giggles, I just ran the end-to-end tests suite under Java 8, 11, and 13. The only error I got was an incompatibility with Google's Error Prone linter, which I was able to fix with one line change. This represents a few hundred thousand lines of production code that works just fine under e…

The problem isn't usually with the runtime itself, but with all the ecosystem and tools around it. This becomes very apparent when venturing beyond web services and you start depending on those tools.

Re: Thank You, Guido

#374

Earlier quoted context omitted.

If your timeframe goes back to PHP4, this most certainly isn't true. Just one glance of https://www.php.net/manual/en/reserved.keywords.php should prove this - every new keyword is a backwards incompatible change. And I mention this because I used to support software that used, as a variable name, something which became a reserved word...

as a variable name, wouldn't it have been prefixed with $ ? the XML parsing was probably the biggest BC change I hit between 4 and 5.

I think I'm misremembering and they were method names. I believe it was clone, in fact.

Re: Thank You, Guido

#375
post #330

Earlier quoted context omitted.

Python and Ruby although in the same category have still different mindset. It is understandable the way you think fits Ruby more. I tried to learn ruby and was put off by all the magic, last value calculated is magically returned, the useful but cryptic method calls. It is shorter and more implicit, I like the explicit approach more. to give you my perspective on the points you made: - self: more explicit, I would p…

>spaces vs. braces: I don't hate braces, but spaces makes it more readable Really?? This is my least favorite thing about Python. D: It can't possibly be more readable when you're talking about large code blocks. It just happens that we're never supposed to be talking about large code blocks in Python. "If you want to write a lot of code, you use another language," they say -- probably one with braces, which syntax h…

If large indentations bother you, good. Braces or not, large indentations and large code blocks should make you start wondering how to refactor them.

And if Python's design seems to discourage over-indentation and oversized code blocks, brilliant.

Re: Thank You, Guido

#376

Earlier quoted context omitted.

Not really. The newer open versions still don't match Oracle JDK 8. Wanna bundle a JVM with your app so your users don't have to worry about the Java runtime? Well, you can't do that anymore. Wanna use JavaFX? You have to jump to Java 11 and hope your dependencies don't fail with module packaging errors. Do you use Scala? GLHF. Standing still in the Java ecosystem is fine. Keeping on with the advances is painful and…

> The newer open versions still don't match Oracle JDK 8. Oracle JDK 8 contained some small parts that were proprietary. And they mostly had the proper package name. You took the risk. > Wanna bundle a JVM with your app so your users don't have to worry about the Java runtime? Well, you can't do that anymore. You mean, bundling a JVM exactly like all JetBrains IDEs currently do? > Wanna use JavaFX? You have to jump t…

> Oracle JDK 8 contained some small parts that were proprietary. And they mostly had the proper package name. You took the risk.

I did not. Some libraries I depend on did.

> You mean, bundling a JVM exactly like all JetBrains IDEs currently do?

Yes. I'm researching how they do it. Previously it could be done with one command. Jetbrains use their own patched JVM and have JVM experts on their payroll. What they do goes way beyond my current skills.

> That's a problem with the Scala compiler AFAIK, not with Java.

From a JVM point of view, Scala is just one more library. The problem with Scala right now is that it doesn't support the module system. This means yet another dive at a lower level to try to fix any issue that appears.

Re: Thank You, Guido

#377
post #199

Someone who worked at Dropbox shared an anecdote. Guido received an email from some recruiter along the line "You seem to have great experience in Python. How many years of experience you have with Python?" To which he replied "All of it!". I am not sure if it is true story.

I heard a story about when he used to work at Google, he would get pulled into interviews where the candidate was brave enough to write “Python expert” on their resumé. There’s definitely no one better to grill someone on their Python skills than the guy who invented it!

Re: Thank You, Guido

#378
post #349

Earlier quoted context omitted.

I assume you are >35, you grew up at a time that people were think about the performance more than the readability, that was the bottleneck back then. From the old fart: conflating performance conscious code with the lack of readability is plain wrong.

When you see performance factors beyond 1000 on some algorithms between python/ruby and C/C++ and you see python being deployed everywhere, no wonder where all the earth's energy is going. At least these are promoted by silicon vendors. Edit: I cannot blame too much though, its generating comfortable revenue for me as a consultant. Still, having to deploy nginx/haproxy to load balance python servers for only 200 requ…

I do some consulting as well. Same thing, total python on back-end servers. All young programmers, some calling themselves pythonistas. Many actively support green movement to the point of wearing "green" labeled clothes. I loved their reaction when I showed them a table outlining energy consumption of python vs C (75 times difference).

Re: Thank You, Guido

#379
post #368

Earlier quoted context omitted.

Clojure has had only a single backward breaking change since its creation in 2008, it took 10 full years before being introduced, and it was a pretty minor one at that. Java and the JVM themselves value backward compatibility, and I'd say Clojure takes it a notch above that.

I guess I have missed that. What was the change?

When they added clojure.spec. It started validating macros at compile time. If you were previously using an illegal syntax, but that somehow didn't cause any issues, those would now throw a compile time error.

Overall it was for the best, since prior to that it was just weird code that had a bit of a undefined behavior since it wasn't using the macro in the proper way. But it still meant we had to go and fix a few of them so they compiled again. Though in the process we realized that we were misusing the macros to begin with.

Re: Thank You, Guido

#380
post #330

Earlier quoted context omitted.

Python and Ruby although in the same category have still different mindset. It is understandable the way you think fits Ruby more. I tried to learn ruby and was put off by all the magic, last value calculated is magically returned, the useful but cryptic method calls. It is shorter and more implicit, I like the explicit approach more. to give you my perspective on the points you made: - self: more explicit, I would p…

This is really interesting to me because Ruby and Python are really close to each other, yet have completely different paradigms. The syntax, dynamic nature (lack of privates, etc) are so similar yet one is a lot more flexible (Ruby) and another is a lot more explicit (Python). Ruby is incredibly expressive, the language puts the full power into the authors hands and let them go wild. There always good arguments on b…

Developer fashion is moving towards more restrictive, explicit, static languages that reduce bugs. The traditional drawbacks and ceremony of that approach are being mitigated through inference and better tooling.

This is likely one reason Ruby is falling out of favor while Python is hanging on and still gaining.

Post reply on HN