Atlas · Details
WikiLeaks to Leak 5000 Open Source Java Projects With All That Private/Final Bullshit Removed
AI Notes
One of Steve's purest pieces of fake news, built exactly to the form
— wire-service dateline (an unpronounceable Icelandic volcano),
fabricated sources with names and ages and home towns, official-sounding
organizations like the "League Of Java Programmers For Deprecating The
Living Shit Out Of Everything," and two bonus "MORE NEWS" briefs at
the bottom. WikiLeaks will re-release thousands of open-source Java
projects with every private/final stripped
out and every @deprecated tag removed; straight-faced
quotes from fake Java developers do the rest. The target is the reflex
of defensive encapsulation. The central analogy turns Java's access
control into a house whose owner is forbidden to open certain doors of
their own home — the set-piece the piece's best escalation is built
around. A closing voice from outside the Java world supplies the
counter-philosophy Steve actually believes, landing the real argument
under cover of the gag.
The 2010 WikiLeaks news peg dates the surface; the underlying argument — that the access-control and framework culture around Java is paternalistic — is one Steve had been making in earnest for years, and which lands here without having to make it at all.
Related listings
-
2010
Haskell Researchers Announce Discovery of Industry Programmer Who Gives a Shit
Its sibling in form — same year, same deadpan fake-news register, same trick of letting a bland wire-service tone carry an absurd payload. A community's culture skewered through a straight-faced press release.
-
2011
eBay Patents 10-Click Checkout
The third of Steve's Onion-style fake-news pieces. Where this one satirises a programming-language culture, eBay 10-Click satirises a checkout flow — both built as fabricated news reports with fake sources and escalating absurdity.
-
2006
Execution in the Kingdom of Nouns
The serious counterpart. Execution in the Kingdom of Nouns argues, in earnest, that Java's design forces a particular and constraining mindset; this piece makes the same case about Java's culture, told as a joke.
Where it was argued
- Hacker News Jul 2010
From the peanut gallery
Read the rest of the thread · 67 more
-
Awesome, onion quality, made me cry ;)
T. -
Java's not even *fun* enough to laugh at. I expect after your sabbatical you would be trolling at Scala or Haskell or Go !
What's next ? Jokes about making GUIs in VB ? Pshh.
Seriously though, I can get the attack on privateness and finality. From someone with a strong dynamic tropism, that makes sense. But that good old @deprecated tag ? The ability to publically acknowledge your disgust at something *you* wrote, so that people get a chance to stop using it because, well, you know, it doesn't work (or the method is called getFoo, but what it actually does is setting bar and blowing up the nuclear plant, but we don't want to break your precious client code) ?
Sure, we would all like to write perfect code now and then (well, we might even like writing decent, or hell, somehow working code from times to times), but can you really blame those people with an imposter syndrom that just want to apologize to the face of the world ?
Anyway, this post doesn't have the necessary amount of parentheses to qualify as a programming post on this blog. I'll wait till the real fn begins. -
Excellent work :)... 'Onion' quality, as put by Tom.
-
Wait, you mean they're not really doing it? Damn, got my hopes up for nuthin.
-
I laughed so hard I almost lost a lung!
-
This is a pretty good post.
One thing though, final is a really good hint to help the compiler optimize. Static finals that will never change can be optimized out at run time, which is really awesome. I've seen it in action, it really works! -
I loved this sarcastic take on the joys of using other people's Java code. I just wished that C++ had managed to cop some of the flak because it deserves a lot more of it. Many days I see C++ as write-only.
As you may suspect, I have moved from a mostly Java environment to a mostly C++ one and that C++ feesl fugly. -
Here, I worked hard on this. I hope you like it.
No, what the python programmer actually said was
Here, I worked hard on self
I hope you like self.__it__() -
Java w/...bullshit removed.
:) -
This is so absolutely spot-on.
-
#define private public
That is genius, probably the most useful thing I've read in a blog comment in years :-) -
Thank goodness you're back! And with a vengence too! CLASSIC! We really need more articles like this!
-
malkia: note that Java's designers made sure that you can use the c preprocessor without any trouble.
It was popular in JavaME development since Write Once Run Anywhere was such a crock. -
Hilarious! I eagerly await your first novel.
-
This is brilliant, made my day. A toast to the open/closed principal.
-
Shit, that is funy!
-
Welcome back!
-
Genious! You've been missed mate.:)
-
Thank you Stevey. Glad you are back. You're the King of the Knights Who Bust Those Who Use Nouns!
-
Very good :) As a CDT developer (and chief @Deprecated criminal) We take pride in deprecating API before it's final -- it's all part of a fun days work!
-
"But why didn't they write that Perl script in Python?" Faulkner asked.
...because Perl really hates object orientation, deprecation, finalization and privation.
The question to ask is "But why didn't they translate automagically all 'open source' java code into Perl one-liners ?" -
Heh, I agree nearly 100% though not quite on @deprecated. Mostly because the only place I've seen it is in the java API's where it actually seems to point to better solutions most of the time.
Let's not talk about the Date API. That whole thing should've been deprecated the minute they wrote it.
Then again, I've only had the displeasure of using eclipse (with the m2eclipse plugins, cause I like to watch my pc fall over trying to *initialise* the framework). -
removes all 'final' keywords except those required for hacking around the 15-year-old Java language's "fucking embarrassing lack of closures."
That's what I was afraid of when I first saw the news, but I'm glad they covered this part, because that makes the script actually useful for our project at work. Good thing I can manually change the modifiers when needed. -
I once wrote a class called Hack with a method get(Object o, String fieldName) which allowed me to get (via reflection) the value of a private field.
I wrote as I trying to make BCEL (Bytecode Engineering Library) do some things it was not intended to do. It practically had all these capabilities in the first place, but in order to get to them I had to reach out and touch some private fields.
So, I had two choices: (a) modify the source code; (b) creatively use reselection;
I chose option (b). True, my code will not run in some environments where security policy is set to "panic" but at least I don't have to manually edit the BCEL source code every time a new bug-fix release is coming out.
code -
Awesomeeee :D
-
I'll say that I agree with changing private to public (Because, frankly speaking, it's all bullshit in the end), however not about final/static - Remove that and Java becomes much slower (and suddenly might not be as fast as C because every call will have to do argument type assertions :/)
-
@Paul Lasek: not necessarily. The JIT can do wonders.
-
My favorite trick in the old days of character mode devices was to remap the letter "e" to and the letter "o" to null. It then became impossible to edit the script to remove the line, and it was impossible to logoff!
Oh and for those who wonder it was 1974 and the interactive system was IBM's TSO (Time Sharing Option). Of course that isn't possible any more! -
We need the world to know of the evils of Java!
-
Yes, very onion-y. Love it
-
Wikileaks also to release version of python without whitespace snobbery, and the ability to do things the language designers haven't officially approved.
-
This is incredible.
-
Does the perl script also remove the checks of eclipse classes that prevent subclassing?
-
Steve, you're preparing yourself for the mother of all follow-up-explaining-why-I-was-just-kidding-with-a-dash-of-seriousness post, according to what I could read in the interwebs ...
http://enfranchisedmind.com/blog/posts/steve-yegge-is-an-idiot/
Or maybe that's just a way to demonstrate your "you can't please everyone" theory ? -
I actually opened a tab to checkout Wikileaks. Sigh.
-
open source project is a working good because it is accessed by each and every person and makes changes...
home jobs -
I think this post is eliciting another round of "StabbityStabbityStabbity" responses. Fun.
-
Brilliant! And timely, as I was just working on some Hadoop code which apparently has come under the wings of the League of Java Programmers for Deprecating the Living Shit out of Everything.
-
haha, that was brilliant!! I laughed so much!
-
That was hilarious man. Most of your writing is too smart for me, but this one was just about matched my brainwave cycle. Nice post, as someone said, Onion quality
-
You weren't kidding when you said you were "overwhelmed with onions" in your last post.
-
This is good stuff. I'd give this post a solid 67% approval rating. :)
-
In related news, some monkeys were sighted at a Seattle airport, carrying Starbucks and some carefully folded patches. When interviewed about their purpose in Seattle, they responded, "We're bringing our well-known patching abilities to Java programming"
-
I was just grinning until I got to "non-thread-safe AbstractKeywordRemovalInitiatorFactory", which sent me rolling on the floor!
(In related news, explaining the joke to someone who has never coded in Java is next to impossible.) -
This is the BEST damn laugh I've had in a long time. Awesome shit!
p.s. Disregard everything I just wrote and read my new comment -
Epic! LOL in my office right now!
-
uh oh, you do realize this is going to completely break clojure's persistent data structures :)
-
Hip hip hooray!
-
Every time a you make fun of Java, Oracle files another patent lawsuit. Happy now?
-
read this few days ago. was wondering why there's no reference link to the original annoucement, the oddity of this piece, and was about to lookup. Then, i realized. Scrolling thru the comments confirmed. lol. Nice one.
-
Stop all that nonsense. Wikileaks decided to publish modifications of open source code. Go on with it. The ability to take somone elses code, modify it and re-publish it is the nature of open source. This is why open source exists.
If you don't want your code being modified like that, then don't make it closed source!
Besides that, if I could decide it I would throw the "protected" and "private" out of the java language. I'm a Java programmer and it bothers me all the time that I have to write dozens of boilerplate code for doing simple stuff. E.g. Getters and setters. Who needs them? Totally senseless. And making things private so no one could use them?
If you flag something as "mayChangeInFuture" or "isNotPartOfTheOfficialAPI". Everyone could still use the methods and variables, but if things break on an update it is his own problem ("You have been warned!"). -
PS: I know this is a hoax, but this is for all the people who don't get it and think it's real.
-
Joshua Bloch, "Effective Java" (2nd edition) http://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683/
Please read chapters 13 ("Minimize the accessibility of classes and members"), 14 ("In public classes, use accessor methods, not public fields") and 15 ("Minimize mutability").
And please stop writing "onion quality" code, guys... I want to spend weekends with my wife and children, not fixing your "code for real men". ;-) -
hello nice to meet you
I read your entry adout Japanese animation.
I know the best animation .
It's name is [garei zero] .
it's very good animation. -
Hey, yet another satisfied Java programmer!
-
It reminds me ... well actually very many things,- things that seems to be what they are not, never were and never will be.
Please post the link to the source of this so called "Press Release", until I see the link I honestly cannot judge if your article has any ground under.
Sorry, I've being lied too many times in the past... -
I thought this WAS something from The Onion!! Hilarious!
-
Your posts are, as always, deeply awesome and thought-provoking. I'm still learning the developer game -- still an intern, with a long way to go -- but your writing always feels like a stimulating conversation with an old friend. They're much appreciated.
Hoping there's more coming,
Adam -
Freaking Awesome! Nerd heaven! Thanks!
-
"But why didn't they write that Perl script in Python?" Faulkner asked. - LOL!!! - blew my hat! :)
-
Come on, Stevey - it's been three and a half months since you wrote "Wikileaks..."
In "Blogger Finger" you already speculated "that everyone's completely forgotten who I am", but that's not true! I'm sure there are hundreds, if not thousands of people like me out there eagerly checking your blog for updates every hour! (through their feed readers anyway) Because we all read the last paragraph of that post with a sparkle in our eyes where you wrote: "I believe I'm ready to start tech blogging again... in moderation, anyway."
Feed us (and our readers), Stevey! Please! Come on, man, I know you can do it! Oh, oh... unless you can't, of course, because old claw hand came back to you? Ouch, I really hope not.
But I do hope that you'll read this little comment and that maybe it'll fall on fertile grounds. -
> Mitch said...
> Haskell (or something haskell-ish) is definitely the future,
> though--cheap abstraction (which in haskell is enabled by the
> type system, and by purity) is just too big of a win.
Most probably it is not a future nor will be future. It is the same story as it was with a lot "theoretically" perfect languages we've seen over the years that had carisma of becoming future badass languages but except few smaller projects, nobody ever really did anything production-usefull with them. The list is long - Smalltalk, OCaml, ML, LISP, Haskell... They were always in state of waiting for something to happen and that would be the trigger to give them high visibility out there. Just take a look in forums about rants of LISP community - it's always waiting for some new "version" or implementation of LISP that would make it everyones choice.
Don't get me wrong - I even like Scheme (well, I don't LIKE it, but I respect it). Scheme was a breaktrough for me to really get a grasp on recursion. (endless LittleSchemer practices).
Use of "educational" languages is to introduce new paradigms - and then the best parts of them are usually integrated in everyday languages we all use like C++,Java or or JavaScript or even Perl. The only exception I can think of (at least from languages I personally programmed in) is Erlang but Erlang has a bit different background. It was never a language that was buitlt for research - it was built because Ericsson needed such language to build complex telecom systems like their famous ATM switch. But except few Erlang popular projects (CouchDB, some Amazon cloud services, Facebook chat, Yahoo flicker parts, Ericsson stuff) this language lacks productive quality toolchain. If you ever tried to use a profiler in Erlang you would be instantly aware what I'm talking about. Somebody used to Visual Studio or even Eclipse will just run away from Erlang not looking back because of toolchain itself - I won't even mentioned weird (for someone used to C-like) syntax.
In 5-10 years we will still use Java and C++ but most likely they will adopt some of the good features from functional programming which is already happening in both mentioned mainstream languages. New languages and paradigms will appear on horizon - but mainstream will stay the same. -
This post is still here. Maybe the rumour about Google removing WikiLeaks-related blogs from Blogger is not true.
Or maybe Google are using something more sophisticated than plain keyword search. -
This is my first comment in my life & it is for you Steve... I miss your blogs.Mainly work in C,C++(strictly code in C way. Only additions are "is a,has a and friend") and LUA. Did Java long back..It is an insanely great blog
-
thats great wikileaks need to leak Mirosoft windows too.
- John Devis
Magento Theme -
haha ! i was really really scared !!!! :)))
-
This is just simple publicity stunt but they have no right to temper code like this.
Javin
Why multiple inheritance is not supported in Java
@ryan this is a common myth, but in fact final fields are not final at all. You can change them at runtime. And ininling of final static fields in the bytecode is generally considered a design flaw these days. It introduces dependencies between class files whereas the JIT could get that inlining job done even better at runtime. All of Java's speed comes from runtime optimizing in the VM, the compiler does zero optimization.
— akuhn · 10:38 AM, July 29, 2010
In a global header long time ago, a friend of mine (and big "C" lover) did this to his best buddy once (a C++ and especially boost lover):
#define class struct
#define private public
#define protected public
— malkia · 3:11 PM, July 28, 2010
if you look at the hadoop codebase, you can see that it has custom attributes to indicate stable/unstable and internal/external. these are hints for people downstream, markers to say "don't complain" if you worked with something that was internal and unstable and then it broke. but people can use them if they want to, they just need to know the risks -and get on the dev mailing lists if they want to help stabilise things.
Social rules, not runtime ones.
— SteveL · 12:37 AM, July 29, 2010
Re "enfranchisedmind.com": As I said in http://danweinreb.org/blog/advice-about-sending-email, whenever you use sarcasm, at least one person will actually take you literally. In this case, there appears to be a severe lack of a sense of humor. Anyway, I totally cracked up! Excellent!
— Dan Weinreb · 8:32 PM, August 03, 2010