Yesterday I was reminded of a common failing in machine learning algorithms that again suggests they aren’t really thinking or understanding. Possibly it points to the lack of a world model. Here’s a nice little photo I caught of a bird in its environment:

Do you see the bird? Do you know what it is? (If you’re not a birder, I’ll give you a hint. It’s an American Kestrel.) This isn’t an especially tough or complicated ID once you spot the bird sitting on the pipe. I could have cropped it in closer, but I sort of liked the environment in this one.
And here’s what the rather good iNaturalist machine learning model suggested:
Read the rest of this entry »
This entry was posted
on Monday, June 1st, 2026 at 8:04 am and is filed under AI.
You can follow any responses to this entry through the Atom feed.
You can skip to the end and make a comment. Pinging is currently not allowed.
AI limitations I’ve noticed lately:
* Gemini can’t render the math for a Taylor series on an iPad
* Github Copilot, with any of the models it supports, can’t run my tests because VSCode can’t handle JUnit 3
* Gemini doesn’t know if it’s running in AI Studio or on an iPhone so it gives me instructions that only work in the Gemini web app.
These are all solved problems. What’s going on here? Are the LLMs not actually intelligent? Are they intelligent but not effective? Are they blind? Is this just a temporary glitch, or is there some more fundamental limitation here?
Read the rest of this entry »
This entry was posted
on Sunday, May 31st, 2026 at 7:41 am and is filed under AI.
You can follow any responses to this entry through the Atom feed.
You can skip to the end and make a comment. Pinging is currently not allowed.
Lately I’ve heard developers claim that it’s now OK to avoid specifying the character set when creating an InputStreamReader or String, or otherwise converting bytes into characters because Java now (JDK 18 and later) uses UTF-8 as its default character encoding regardless of platform.
Except we do still need to do it, for two independent reasons:
Read the rest of this entry »
This entry was posted
on Thursday, April 30th, 2026 at 8:45 am and is filed under Java.
You can follow any responses to this entry through the Atom feed.
You can skip to the end and make a comment. Pinging is currently not allowed.
I’ve released version 1.4.0 of XOM, my open source library for processing XML with Java. It’s available from the usual places including Maven Central (xom:xom:1.4.0) and https://xom.nu/. This is the first release coded with LLM assistance.
Read the rest of this entry »
This entry was posted
on Monday, April 6th, 2026 at 6:35 am and is filed under AI, Java, XML.
You can follow any responses to this entry through the Atom feed.
You can skip to the end and make a comment. Pinging is currently not allowed.
Often in a code review I’ll point out that public signatures are being changed, and we can’t do that in a minor release. Then the author will reply that it’s OK because it’s an internal only API, or an impl API, or both so it’s OK. No one is depending on it. And then this happens:
Error: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.14.0:compile (default-compile) on project mvnd-daemon: Compilation failure
Error: /Users/runner/work/maven-mvnd/maven-mvnd/daemon/src/main/java/org/mvndaemon/mvnd/syncontext/DaemonNamedLockFactoryAdapterFactoryImpl.java:[48,9] no suitable constructor found for NamedLockFactoryAdapterFactoryImpl(java.util.Map,java.lang.String,java.util.Map,java.lang.String,org.eclipse.aether.impl.RepositorySystemLifecycle)
Error: constructor org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapterFactoryImpl.NamedLockFactoryAdapterFactoryImpl(java.util.Map,java.util.Map,java.util.Map,org.eclipse.aether.impl.RepositorySystemLifecycle) is not applicable
Error: (actual and formal argument lists differ in length)
Error: constructor org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapterFactoryImpl.NamedLockFactoryAdapterFactoryImpl(java.util.Map,java.lang.String,java.util.Map,java.lang.String,java.util.Map,org.eclipse.aether.impl.RepositorySystemLifecycle) is not applicable
Error: (actual and formal argument lists differ in length)
Error: -> [Help 1]
Hyrum’s Law applies. From JLBP-3:
Read the rest of this entry »
This entry was posted
on Friday, March 13th, 2026 at 9:46 am and is filed under Java.
You can follow any responses to this entry through the Atom feed.
You can skip to the end and make a comment. Pinging is currently not allowed.