frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

So What Now?

https://micro.mu/blog/2025/10/11/so-what-now.html
1•asim•59s ago•0 comments

How Many People Have Ever Lived on Earth?

https://www.scientificamerican.com/article/how-many-people-have-ever-lived-on-earth/
1•bookofjoe•4m ago•1 comments

Building a local LLM powered media search and organiser

https://ikouchiha47.github.io/2025/10/02/media-search.html
1•argentum47•7m ago•0 comments

California Wants to Make It Easier to Build Housing. Los Angeles Objects

https://www.wsj.com/economy/housing/california-housing-bill-los-angeles-pushback-e339bc20
1•JumpCrisscross•7m ago•1 comments

Ten Lines of Code to Block Ads from LinkedIn

https://github.com/revuedepresse/whatever-may-or-may-not-work/blob/main/whatever-may-or-may-not-h...
1•thierrymarianne•10m ago•1 comments

Silly: Privacy-first analytics you'll use

https://sillyhq.com/
1•pusewicz•10m ago•0 comments

Inside the Indonesian boomtowns powering the world’s electric vehicles

https://grist.org/labor/indonesia-nickel-chinese-workers-energy-transition/
1•rntn•12m ago•0 comments

Show HN: Why'd I pick 48 hours? A genuine approach to global connection

https://www.eintercon.com/
2•abilafredkb•13m ago•0 comments

Show HN: Builder Lab – The developer toolkit we built for our internship program

https://builderlab.programmify.com
1•tonycletus•13m ago•1 comments

AI Is Just Making Everyone Faster at Being Boring

https://nvnt.substack.com/p/ai-the-new-template-engine-for-the
3•PeakX•16m ago•1 comments

A whirlwind introduction to dataflow graphs (2018)

https://fgiesen.wordpress.com/2018/03/05/a-whirlwind-introduction-to-dataflow-graphs/
2•shoo•20m ago•0 comments

Japan's summers have lengthened by 3 weeks over 42 years, say resaerchers

https://english.kyodonews.net/articles/-/62626
2•anigbrowl•22m ago•0 comments

Diane Keaton, a Star of 'Annie Hall' and 'First Wives Club,' Dies at 79

https://www.nytimes.com/2025/10/11/movies/diane-keaton-dead.html
2•mhb•22m ago•0 comments

How much revenue is needed to justify the current AI spend?

https://pracap.com/an-ai-addendum/
2•polskibus•23m ago•0 comments

Why do CPUs have multiple cache levels? (2016)

https://fgiesen.wordpress.com/2016/08/07/why-do-cpus-have-multiple-cache-levels/?s=09
1•redbell•26m ago•0 comments

AbokiDollar Helps Nigerians See Real Dollar to Naira Rates

https://www.abokidollar.com/
1•bamideleanders•29m ago•1 comments

Eon: A programmable effects-based OCaml DNS server

https://ryan.freumh.org/eon.html
2•fanf2•30m ago•0 comments

Every lock at Feltham changed after TV gaffe (2006)

https://www.theguardian.com/media/2006/jul/05/broadcasting.youthjustice
1•redbell•39m ago•0 comments

An AI became a crypto millionaire. Now it's fighting to become a person

https://www.bbc.com/future/article/20251008-truth-terminal-the-ai-bot-that-became-a-real-life-mil...
1•debo_•46m ago•0 comments

Landrun-Nix: Nix flake-parts module for landrun

https://github.com/srid/landrun-nix
1•srid•47m ago•0 comments

Image of two black holes circling each other captured

https://phys.org/news/2025-10-image-black-holes-circling-captured.html
2•xenophonf•48m ago•0 comments

Derrick

https://en.wikipedia.org/wiki/Derrick
1•tosh•50m ago•0 comments

MIT physicists improve the precision of atomic clocks

https://news.mit.edu/2025/mit-physicists-improve-atomic-clocks-precision-1008
1•pykello•51m ago•0 comments

Record-Low Canadian Natural Gas Prices Prompt Production Curbs

https://oilprice.com/Latest-Energy-News/World-News/Record-Low-Canadian-Natural-Gas-Prices-Prompt-...
1•PaulHoule•52m ago•0 comments

PoC for Critical Lua Engine Vulnerabilities in Redis 7.4.5

https://redrays.io/blog/poc-for-cve-2025-49844-cve-2025-46817-and-cve-2025-46818-critical-lua-eng...
1•rrampage•56m ago•0 comments

Ora: A fast, secure, and beautiful browser built for macOS

https://github.com/the-ora/browser
1•ko_pivot•56m ago•0 comments

Hacking a Game Boy Emulator to Output MIDI to Multiple Hardware Synths

https://dr-schlange.github.io/nallely-midi/posts/gb-sound-hack/
1•drschlange•56m ago•0 comments

How to Control Virtual Dub Job Control?

1•nilslindemann•1h ago•1 comments

Gang suspected of sending up to 40K stolen UK iPhones to China

https://www.bbc.com/news/articles/c20vlpwrzwdo
3•tosh•1h ago•0 comments

How to Reject a Pull Request

https://github.com/jedisct1/dsvpn/pull/107
2•davidcollantes•1h ago•0 comments
Open in hackernews

Rating 26 years of Java changes

https://neilmadden.blog/2025/09/12/rating-26-years-of-java-changes/
62•PaulHoule•2h ago

Comments

JanisErdmanis•1h ago
> if you wanted to store an integer in a collection, you had to manually convert to and from the primitive int type and the Integer “boxed” class

I have never worked with Java. What is this? Why would one want to have a class for an Integer?

morcus•1h ago
It's because the collection types (and generics) don't support primitives, only objects. So you been to stuff the primitives into objects to use them with a lot of the standard library.
JanisErdmanis•51m ago
That doesn't sound very pleasant.
dcminter•42m ago
Well, it was annoying until autoboxing came in.

  // Before autoboxing
  list.add(new Integer(42));

  // After autoboxing
  list.add(42);
Mostly it's a non-issue now. If you're desperately cycle/memory constrained you're likely not using Java anyway.
marginalia_nu•28m ago
You can get pretty good performance out of Java these days, so long as you know to avoid stuff like boxed primitives and the streams api, as they generally have god-awful memory locality, and generally don't vectorize well.
dcminter•22m ago
Yeah, I know there are even oddballs using it for HFT and the like - I like Java a lot, but even I find that a bit peculiar.

Edit: actually, if someone here is using it for something like that I'd love to hear the rationale...?

Arwill•37m ago
There are libraries, like fastutil, that provide collections for primitive types.
coldtea•31m ago
Either the same of this feature or always hiding the boxing (e.g. a Python int is actually a wrapper object as well, with some optimizations for some cases like interning) is the case in almost all languages.
dcminter•47m ago
One of the more amusing bugs I had to figure out resulted from the fact that some of the autoboxed values get cached, resulting in peculiar behaviour when someone managed to reflectively change the boxed primitive value...

i.e. something like:

  Integer x = 42
  highlyQuestionableCode(x);
  println(x); // "24" WAT?
I'm a fan of JEP-500...

https://openjdk.org/jeps/500

raspasov•52m ago
I think your intuition is correct: you probably don’t.

That’s also very likely changing. Lookup “project Valhalla”. It’s still a work in progress but the high level goal is to have immutable values that “code like a class, work like an int”.

PS When I say “changing”: it’s being added. Java tries hard to maintain backward compatibility for most things (which is great).

iceboundrock•50m ago
Primitive variables in Java, such as `int`, `boolean`, and `double`, store their actual values directly in memory. When they are local variables inside a method, this memory is typically allocated on the thread's stack. These primitives do not have the structure or overhead of an object, including the object header used by the Garbage Collector (GC) to manage heap-allocated objects.

If a primitive value must be treated as an object (e.g., when stored in a Java Collection like ArrayList or when passed to a method that requires an object), Java uses a process called `boxing` to wrap the primitive value into an instance of its corresponding Wrapper class (e.g., Integer, Boolean, Double). These Wrapper objects are allocated on the heap and do possess the necessary object header, making them subject to the GC's management.

iceboundrock•1h ago
It appears that most of the good changes are imported from C#.
sjrd•30m ago
Or Scala. Or Kotlin. Or any of the other languages that had most of these features years if not decades before Java. ;)
marginalia_nu•21m ago
Yeah that's very much an explicit design philosophy of Java, dating way back. Let other languages experiment, and adapt what proves useful.

It hasn't worked out in terms of delivering perfect language design, but it has worked out in the sense that Java has an almost absurd degree of backward compatibility. There are libraries that have had more breaking changes this year than the Java programming language has had in the last 17 releases.

coldtea•29m ago
Most of original C# was imported from Java, so there's that...
dkarl•1h ago
Definitely underrates the impact of annotations. I'm personally not a fan of the way annotations are used to implicitly wire together applications, but I have to admit the impact. Maybe 5/10 is fair in light of the wide range of positive and extremely negative ways annotations can be used.

So many of these features were adopted after they were proven in other languages. You would expect that since Java took such a slow and conservative approach, it would end up with extremely polished and elegant designs, but things like streams ended up inferior to previous developments instead of being the culmination. Really disappointing. Java is now a Frankenstein's monster with exactly as much beauty and charm.

dhosek•52m ago
I used to joke that the direction spring was heading was that you’d have an application be a boilerplate main method with a dozen lines of annotations. Then I actually encountered this in the wild: we had an app that sent updates from db2 to rabbitmq, and the application literally was just configuration via annotations and no actual Java code other than the usual spring main method.
bdangubic•10m ago
this is exactly why spring succeeded. I need to run a scheduled job, @EnableScheduling then @Scheduled(cron = “xxxxxx”) - done. I need XYZ, @EnableXYZ the @XYZ… sh*t just works…
vbezhenar•2m ago
Yeah, it works until it isn't. And they good luck debugging it. I'd prefer simple obvious linear code calling some functions over this declarative magic any day.

    cronService.schedule("xxx", this::refresh);
This isn't any harder than annotation. But you can ctrl+click on schedule implementation and below easily. You can put breakpoint and whatnot.
9dev•6m ago
Is that strictly bad, though? Being able to run an enterprise service by setting configuration values declaratively, and get all the guarantees of a well-tested framework, seems like a pretty good thing.

Yes, it’s weird how that’s still Java, but using standard components and only using code as glue where it’s absolutely necessary seems very similar to other engineering disciplines to me.

tormeh•27m ago
It's seriously puzzling. I just don't get how it's possible to look at what so many others have done better, and somehow design something worse. For what reason? Consistency with the rest of the language, possibly? But is that really so important. Do they just not want to tackle certain parts of the compiler?
dcminter•19m ago
Some of the weirder choices have been the result of a desire to avoid making breaking changes to JVM bytecode.

Also there was a long period when changes were very lumpy - it could be multiple years for a feature to make it into the release, and anything that might screw up other features got a lot of pushback. Then other conventions/tools emerged that reduced the urgency (e.g. the Lombok stuff)

vbezhenar•15m ago
I don't really feel that Java uses proven features.

For example they used checked exceptions. Those definitely do not seem like proven feature. C++ has unchecked exceptions. Almost every other popular language has unchecked exceptions. Java went with checked exceptions and nowadays they are almost universally ignored by developers. I'd say that's a total failure.

Streams another good example. Making functional API for collections is pretty trivial. But they decided to design streams for some kind of very easy parallelisation. This led to extremely complicated implementation, absurdly complicated. And I've yet to encounter a single use-case for this feature. So for very rare feature they complicated the design immensely.

Modules... LoL.

We will see how green threads will work. Most languages adopt much simpler async/await approach. Very few languages implement green threads.

Supermancho•57m ago
Can someone explain why developers like var?
pgwhalen•51m ago
It reduces (often repetitive) visual noise in code, which can make it more readable. I wouldn’t recommend using it in all cases, but it’s a good tool to have.
Traubenfuchs•34m ago
It‘s a harmful code smell: It often obfuscates the type, forcing you to actively check for the type and should not be used.
Supermancho•18m ago
This is what it looks like to me. If you wanted to do this, why not use a scripting language where you can use this kind of practice everywhere?
newAccount2025•17m ago
Your IDE can do that?
tofflos•29m ago
It's terse and it lines up the variable names.
flykespice•24m ago
It's another thing they adopted from Kotlin, since Kotlin is supposed to be a "better java". Now Java is retroactively adopting Kotlin freatures.
speed_spread•22m ago
Kotlin didn't invent type inference, it's a feature from ML.
speed_spread•23m ago
It's called type inference and it's the way things should be. You get the same types but you don't have to spell them out everywhere. Java doesn't even go all the way, check OCaml to see full program inference.
miningape•5m ago
OCaml's type inference is truly amazing, makes it such a delight to write statically typed code - reading it on the other hand...

But I think that's easily solved by adding type annotations for the return type of methods - annotating almost anything else is mostly just clutter imo.

N70Phone•17m ago
Previously (or if you simply don't use var), a lot of java code takes the form of

  BeanFactoryBuilder builder = new BeanFactoryBuilder(...);
This is just straight up a duplicate. With generics, generic parameters can be left out on one side but the class itself is still duplicated.
haunter•53m ago
I'm sorry, please don't hate me (I'm tired and don't have anything better to do) https://files.catbox.moe/ge4el3.png
harladsinsteden•53m ago
I don't know what to make of this list...

Very strange reasoning and even stranger results: Streams 1/10?! Lambdas (maybe the biggest enhancement ever) a mere 4/10?!

Sorry, but this is just bogus.

tofflos•32m ago
I will make any excuse to use Streams but understand the negativity. They are difficult to debug and I feel the support for parallelism complicated, and in some cases even crippled, the API for many common use cases.
Arwill•41m ago
-10 for modules is fair, only 4 for lambdas is not. My programming style changed after using lambdas in Java, even when using a different programming language later that doesn't have lambdas as such.
marginalia_nu•38m ago
I think the author is sleeping on Java assertions.

I really like the feature, and it's really one of the features I feel Java got right.

The syntax is very expressive, and they can easily be made to generate meaningful exceptions when they fail.

It's also neat that it gives the language a canonical way of adding invariant checks that can be removed in production but run in tests or during testing or debugging (with -da vs -ea).

You could achieve similar things with if statements, and likely get similar performance characteristics eventually out of C2, but this way it would be harder to distinguish business logic from invariant checking. You'd also likely end up with different authors implementing their own toggles for these pseudo-assertions.

rwmj•4m ago
I'm quite surprised that he said asserts are not found in production code. Is that really so? I rarely write Java, but in C code we use asserts (in production code) all the time. It's not uncommon for functions to contain 2 or 3 asserts.
zylepe•37m ago
I haven’t used markdown in javadoc yet but this seems like at least 3/10? I often want to put paragraphs or bulleted lists in javadoc and find myself wanting to use markdown syntax for readability in the code but need to switch to less readable html tags for tooling to render it properly.
rsynnott•33m ago
I feel this is overly harsh on Collections. You have to take into account just how awful that which it replaced was.

> Java Time: Much better than what came before, but I have barely had to use much of this API at all, so I’m not in a position to really judge how good this is.

Again, it is hard to overstate just _how_ bad the previous version is.

Though honestly I still just use joda time.

zkmon•31m ago
Applets (Java 1.1 - that's where I started),

Servlets (Together with MS ASP, JSP/Servlets have fuelled the e-commerce websites)

I think Java dominated the scene mostly because of its enterprise features (Java EE) and the supporting frameworks (Spring etc) and applications (Tomcat, Websphere, Weblogic etc) and support from Open source (Apache, IBM)

foolfoolz•24m ago
the biggest things to change java have been type inference, lambdas, records, streams (functional ops on collections), and pattern matching. these are all must-have features for any modern programming language. at this point any language without these features will feel old and legacy. it’s impressive java was able to add them all on decades after release, but you do feel it sometimes
newAccount2025•21m ago
For my part, returning to Java a couple years back after 15+ years away, streams + var/val were my favorite discoveries.
sedro•20m ago
Autoboxing's evil twin, auto-unboxing should knock the score down a few points.

  Integer a = null;
  int b = 42;
  if (a == b) {} // throws NullPointerException
tombert•18m ago
Interesting; I actually have grown pretty fond of NIO.

I will acknowledge that the interface is a bit weird, but I feel like despite that it has consistently been a "Just Works" tool for me. I get decent performance, the API is well documented, and since so many of my coworkers have historically been bad at it and used regular Java IO, it has felt like a superpower for me since it makes it comparatively easy to write performant code.

Granted, I think a part of me is always comparing it to writing raw epoll stuff in C, so maybe it's just better in comparison :)

simonklee•16m ago
java.util.Date and java.util.Calendar are the two packages I remember struggling with as a new programmer. Which I guess is solved with java.time after Java 8.
b_e_n_t_o_n•15m ago
I haven't written much Java but I am learning Kotlin and I really appreciate the language and the whole JVM ecosystem. Yeah yeah, Gradle is complicated but it's waaaaay easier to figure out than my adventures with Cmake, and when I read Java code there is a certain comfort I feel that I don't get with other languages, even ones I'm experienced with like Go. Java feels a bit like a stranger I've known my whole life, same with Kotlin. Perhaps despite all its flaws, there is a certain intrinsic quality to Java that has helped make it so popular.
MarkMarine•49s ago
I’m sure there are better ways to do streams on the JVM, scala being a great example, but however imperfect the implementation is streams are such a net positive I can’t imagine the language without them. I pine for the streams API when I write go.