Live data from Hacker News

How Netflix uses Java

infoq.com

161–170 of 205 posts

Re: How Netflix uses Java

#161
post #115

Early on (15+ years ago) I spent a few weeks there on contract and I noticed they used Java EVERYWHERE, and not always well. They had a CS app named after a key Star Wars character that was in all likelihood a breach of the Geneva Convention. A code atrocity with the performance of a sloth on its 8th bong rip with a UX from hell.

"A code atrocity with the performance of a sloth on its 8th bong rip with a UX from hell." Sounds like Apple Music.

For some reason whenever I'm on my work's VPN, Apple Music lets me play 1 album and then the next time I try to start a song it will tell me I'm not logged in and I'll have to force quit and relaunch (frequently a few times) before it will let me play another album.

Apple Music is the only app that has this problem.

Re: How Netflix uses Java

#162
post #145
post #115

Early on (15+ years ago) I spent a few weeks there on contract and I noticed they used Java EVERYWHERE, and not always well. They had a CS app named after a key Star Wars character that was in all likelihood a breach of the Geneva Convention. A code atrocity with the performance of a sloth on its 8th bong rip with a UX from hell.

What does CS stand for here? I guess it's not computer science? Also, that description made me lmao, thanks

Another reminder that acronyms are pretty terrible for communication. Every time I onboard with a new org there’s a whole new set of acronyms to learn that’s barely faster than typing out the unabbreviated version. Nice to save a couple seconds when the cost is only a bunch of people not able to follow along when people are communicating.

To be clear: not ragging on OP in particular at all but more at the widespread practice at a company level.

Re: How Netflix uses Java

#163
post #145

Earlier quoted context omitted.

What does CS stand for here? I guess it's not computer science? Also, that description made me lmao, thanks

Another reminder that acronyms are pretty terrible for communication. Every time I onboard with a new org there’s a whole new set of acronyms to learn that’s barely faster than typing out the unabbreviated version. Nice to save a couple seconds when the cost is only a bunch of people not able to follow along when people are communicating. To be clear: not ragging on OP in particular at all but more at the widespread…

> Another reminder that acronyms are pretty terrible for communication. Every time I onboard with a new org there’s a whole new set of acronyms to learn that’s barely faster than typing out the unabbreviated version

My (cynical) take on the matter is that software engineers want to prove how smart they are to other software engineers, and they think using obscure jargon and abbreviations is a good way to do it.

Re: How Netflix uses Java

#164
post #103

Earlier quoted context omitted.

I never hated Spring, I got used to working with it. I found the annotation-based approach to configuring classes really opaque though, and it was hard to understand how to configure things because those were also magic annotations, and then some things were beans and others weren't and... ugh. I don't fault Spring for it, and we were on Java 11 back then with just a little bit of new hotness. Java itself just didn't…

I was once dropped into a Spring codebase. I consider myself a decent programmer, but I couldn't navigate it at all. Other than that time I've been able to avoid magical frameworks in my career. But I do want to learn Spring. What material would you recommend?

Spring In Action. Not Spring Boot in Action - Spring. https://www.manning.com/books/spring-in-action-fifth-edition

Re: How Netflix uses Java

#165
post #46

Earlier quoted context omitted.

Spring is basically a standard in itself and it is easier to hire people in it. It also normalizes large pieces of the backend application so even though they are written by different people they are similar. Once you learn the annotation based configuration it also saves a lot of time. The performance is valid but it will only keep improving.

To be honest, over the almost 5 years we're into using it, I spent more time debugging funky stuff due to that design that it would've cost me to just do it by hand. By a big margin.

As a Spring power user, you sound like you're ranting against something you don't/didn't understand.

Re: How Netflix uses Java

#166
post #17

Spring Boot and Spring cloud for backend & graphql for the win. ;-)

I am a big fan of Spring Boot, its one of the few frameworks that just works and let me focus 100% on solving business problems. I've tried Micronaut, Quarkus, Dropwizard, but they slow me down too much compared to just using Spring Boot.

For me delivering business value is the most important metric when I am comparing frameworks. Spring Boot wins every time.

Re: How Netflix uses Java

#167

Earlier quoted context omitted.

No, just no. Performance and debugging are just plain horrible. The spring team loves to force you into their automagic shit and this bean stuff is so annoying. You almost got no compile time safety in this stack. It's the bane of my existence. I'd like to know that a compiled program will run. That seems virtually impossible with java/spring boot.

I'm not sure what "no compile time safety in this stack" even means in the context of a strongly-typed compiled language. If you are referring to the dependency injection container making use of reflection, then Spring Native graduated from experimental add-on to part of the core framework some years ago. You can now opt for Quarkus/Micronaut-style static build-time dependency injection, and even AOT compilation to G…

I like middle-ground dependency injection: do it, but only during build time.

Dagger library does that (generates all the glue code during pre-compile phase), so all the dependency-injection already happened before runtime. Also, JVM has an easier time reasoning/optimizing the code.

But I also found that writing the glue code by hand, same way as Dagger would do, is not that hard IMO.

Re: How Netflix uses Java

#168
post #161

Earlier quoted context omitted.

"A code atrocity with the performance of a sloth on its 8th bong rip with a UX from hell." Sounds like Apple Music.

For some reason whenever I'm on my work's VPN, Apple Music lets me play 1 album and then the next time I try to start a song it will tell me I'm not logged in and I'll have to force quit and relaunch (frequently a few times) before it will let me play another album. Apple Music is the only app that has this problem.

Apple uses certificate pinning for some of its domains, which doesn't play nicely with corporate firewalls.

https://support.apple.com/en-us/HT210060

Re: How Netflix uses Java

#169
post #3

Interesting the article jumps straight from REST to GraphQL and forgets Falcor[0] - Netflix's alternative vision for federated services. For a while it looked like it might be a contender to GraphQL but it never really seemed to take off despite being simpler to adopt. [0] https://netflix.github.io/falcor/

Probably because most people don't want to work with Java

Re: How Netflix uses Java

#170

It's too bad they are using Gradle and Intellij, used both before, went back to Maven and Eclipse. Personal preference I guess.

IntelliJ is far and away above any other IDE and is well worth the paid license imho. It's a professional tool written by and for professionals. VSCode and Eclipse have some inertia in very particular workflows/tools and a few different (valid) ways of operating, but nothing is as polished and cohesive as the JetBrains.

Gradle, however, is a dumpster-fire of footguns and obtuse and non-debug-able DSLs.

Post reply on HN