ByteCode.News has been quiet for a month. Part of that is ordinary life, but part is something more familiar: the point where everything happening in technology starts to look the same. Here’s what happened, and what BCN is changing to get moving again.
A release to Maven Central used to cost more than the code being released. Jason Lee's JReleaser walkthrough shows what replaced that process: one Maven profile, one command.
A recent discussion on how AI was used effectively made me wonder what "effective" or "better" meant, because there's no way to test the alternative any more to compare. I still don't know how to characterize my own results, but I think it makes me better because it gives me a chance to work out who I am and what I mean to say, but not really how to say it.
Andrew Oram asked why programming languages rise and fall, and quoted the answer without noticing. Programming is a vocation, an art, and a job. Make any of those harder than they need to be, and your language survives exactly as long as it can't be replaced.
Sean Goedecke argues that domain expertise is the real prompting skill. He's describing two quantities as one: a floor, available to anyone who can describe what acceptance looks like, and a gain that multiplies whatever you bring.
Xberg 1.0 has been released. Xberg is a document extraction engine, describing itself as a "document intelligence framework." It's written in Rust, with fifteen generated language bindings, and a very descriptive data model that provides a *lot* of flexibility.
There's no standard for marking AI contribution, and there can't be, because contribution isn't a scalar. What readers actually want is attestation, and that's what a byline always was. The question was never whether a machine touched the text. It's whether anyone was behind the controls.
Baldur Bjarnason argues that development tools win by making developers replaceable. The JVM ran that experiment three times, against Visual Basic's precedent, through EJB's committee, and into Spring's reversal, and the results say his theory is exactly half of a whole.
Imran Nazar recreated a JavaScript animation demo on 1982 hardware and wrote up every decision along the way: 6510 assembler, fixed-point math with no floating point available, a CPU bug turned into a cosine lookup. When he lands at 30fps, he can tell you exactly why without running it. It's very cool.
An essay from the creator of Primate argues that the JavaScript ecosystem traded cohesion for composition and has been paying for the seams ever since. The diagnosis reaches well past JavaScript: Java's own graveyard of JSF and GWT proves the seam problem is universal, and WebAssembly is about to make the question unavoidable for everyone.
Andi Roberts wrote up Alex Pentland's research on why some teams outperform others. The research is good; the practical advice mostly assumes a watercooler you may not have. Some additions from the trenches: what Brooks actually said, two cheap levers for building the idea flow, and when you want the opposite.
Reader Hideki Idoru argues that AI is a decent information distiller and a bad tool for nearly everything else in software, because no one can cheaply verify that generated code is correct. The deeper claim is that most programming was already trivial, unabstracted busywork, and AI has only torn the mask off. It's worth reading and thinking about.
Ray Myers wrote up the Bun rewrite and the fight around it. It's emotional in places, but there's real signal in it about how agentic work is sold versus how it's done, and one review technique worth stealing.
Java stripped out the SecurityManager and offered nothing in its place. Peter Firmstone's answer: fork Apache River and OpenJDK to bring back both JINI and JVM-level authorization. Laudable, even necessary - and a very hard sell, because it runs only on his JDK. It's like a post-mortem for JINI while it's still trying to breathe.
A Reddit user on r/SaaS is looking forward to the consulting rates he'll command once the wave of projects trying to dig out from under AI slop hits. He's not wrong, but he's dated the pattern to 2010 offshoring when it's older than that, and the lesson never sticks: coding was never typing.
Christian Rackerseder argues that the real axis for testing decisions isn't integration versus end-to-end, it's control: whether a team can make a dependency predictable enough for a given test and actually act when it fails.
Roseau, a new breaking-change detector for Java libraries, compares your code against your last released baseline and fails the build when the API contract breaks. JUnit already uses it. The reflex says the compiler and tests cover this, but if that were the case, updates would be easier than they are.
Sven Reinck wants dependency diagrams that nudge you toward clean architecture by looking wrong when the code is wrong. The instinct is sound, the history is unkind, and the difference between expressing complexity and measuring it is where the whole idea lives or dies.
Bun was ported from Zig to Rust by an LLM and passed nearly all its tests - while shipping more than ten thousand unsafe blocks. Memory safety is the main reason you'd pick Rust. So what did the rewrite actually accomplish?
GraphCompose is an MIT-licensed Java DSL for generating PDFs from a semantic document model, with themed templates for CVs, invoices, proposals, and reports built in.The 1.6.4 release adds clip-path shape containers, advanced tables, and two new business templates.