Judge to Oracle: A High Schooler Could Write rangeCheck
mikejuk writes with an update on the Oracle vs Google Trial. From the article: "One month into the Oracle v Google trial, Judge William Alsup has revealed that he has, and still does, write code. Will this affect the outcome? I think so! After trying to establish that the nine lines in rangeCheck that were copied saved Google time in getting Android to market the lawyer making the case is interrupted by the judge which indicates he at least does understand how straightforward it would be to program rangeCheck from scratch: 'rangeCheck! All it does is make sure the numbers you're inputting are within a range, and gives them some sort of exceptional treatment. That witness, when he said a high school student could do it — ' And the lawyer reveals he doesn't: 'I'm not an expert on Java — this is my second case on Java, but I'm not an expert, and I probably couldn't program that in six months.' Perhaps every judge should be a coding judge — it must make the law seem a lot simpler..."
From yesterday; the Oracle lawyer was attempting to argue that Google profited by stealing rangeCheck since it allowed them to get to market faster than they would have had they wrote it from scratch. Groklaw, continuing its detailed coverage as always, has the motions filed today.
I was programming when I was 7 years old. How stupid are Americans?
From yesterday; the Oracle lawyer was attempting to argue that Google profited by stealing rangeCheck since it allowed them to get to market faster than they would have had they wrote it from scratch.
Because 5 seconds make all the difference.
Obviously this competent, experienced jurist should have recused himself because of this conflict of interest.
Give me Classic Slashdot or give me death!
I think I'm beginning to understand why Oracle has chosen to sue, rather than innovate, they're idiots and lazy to boot! :)
How much slower would it really have been, one day? Even less? rangeCheck from the sounds of it is a quick sit down, sip coffee, program it up and walk away method. I'm not sure that the act of copying it saved any amount of time that in the true sense of a marketing would matter. If they had copied a method which computed the inverse matrix of an image that then could be used to unlock a phone I would see the point.
Calling rangeCheck into question is like bringing a student to court for using compair() in C, anyone could write it but it's so simple no one does.
If all judges, lawyers, and legislators knew how to write maintainable code, the law would be much simpler.
The refactoring sessions would be amazing.
The people rejoiced!
Reading that summary made me feel like I was taking crazy pills. So many mixed tenses. Could someone clean that shit up for readability?
A lawyer will likely handle similar cases over their career. In doing so, they will very likely reuse some of all of documents over and over. The initial version of these documents were created for a specific client. Is the lawyer stealing from his previous clients?
The same thing could be said about a technical writer. If they write for multiple clients in the same domain, it is likely the intentionally or not, their work will share some sentences, paragraphs or more.
I know that you don't sign a "work for hire" contract with your lawyer so they (as always) have the upper hand. But it does seem that in professions where writing in some form is part of the work output, it is very likely that remnants of previous work will show up in future work. Whether intentionally or not.
In for loops, and anyone who uses it has to pay me lots of money. I'll let them use it and as soon as they start making money I'll show up at their door to collect their soul.
This is good news: Because obviously Oracle hired mentally challenged lawyers.
Not only is what their lawyer said obvious hyperbole, but it is totally irrelevant. I don't care how much time it would take for a non-programmer to do it: how long does it take a real programmer to do it.
The answer to that is of course on the order of seconds, since validating input is something every programmer has done thousands of times.
I did not even have access to a computer until I was 11; it is not always a question of stupidity. That being said, I am pretty sure that some time shortly after I started programming, I wrote a function like rangeCheck (although in C, so using return values instead of exceptions). This is not an issue of age; someone with two weeks of programming experience could have written that function.
Palm trees and 8
What does it matter how easy the code was to write? And if it was so easy why did google need to copy it?
I tried to submit this over the weekend but it wasn't selected. http://www.wired.com/wiredenterprise/2012/05/google-oracle-decompile/
As someone who really likes Java and Google I don't like this lawsuit one bit.
Sun created Java and mostly gave it away for free except for the mobile part which they were licensing to create revenue. Sun and Google couldn't come to terms regarding licensing and Google decided to just make it themselves.
Sun didn't seem to care, or didn't have the money/will to fight it. Then comes Oracle.
Please resolve this amicably soon. I don't like it when mommy and daddy fight.
What a colossal waste of money !
Oracle and Google waste money on lawyers on such silly functions instead of spending the money on building more useful technology.
We as users are the only losers in this non-sensical fight.
The great thing about having an Android smart phone is I can follow these events from the comfort of the company throne thus killing two birds with one stone! Thanks Google and HTC.
rangeCheck checks if a number is within a range. ok. like if 2 is between 1 and 3. but what of 4? you did mention 4? or 5, 6, 7, or 8 for that matter. and what of 2.5? or 3.5?
how about negative numbers? how about irrational numbers? i will tell you what is irrational: that rangeCheck can be trusted to understand these complex issues and give us an answer we can trust
and 0! magic 0. you are telling me that rangeCheck understand 0 and can tell us if is between two numbers? arbitrarily chosen numbers to boot? the audacity! you mean i am going to just say "cehck if 0 is between 1 and 7" and then i'm going to cpompletely mess things up and turn around and say "oh, and check if 0 is between -2 and 3", and you are going to trust rangeCheck to do this? really? really?!
do you not see the danger here folks? do not see the threat to responsiblity, accountability, that trust that blindly putting our faith in this rangeCheck results in?
think about this serious issue very carefully folks, this is a truly tricky and grave conundrum. here be dragons
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
I mean if it is so easy to write then why copy it?
Ok, let's have a contest. Gather a bunch of high schoolers who have some idea how to program in Java, give them the spec for rangeCheck, and see how long it takes them to write it. The winner takes the prize equal to the damages Oracle is asking for. Bonus points if completed in less than 15 minutes.
Title says implies that the judge made the statement about the code being trivial. The judge makes no such claim -- instead, he says that a previous Google witness made that claim. This is a world of difference!
Google did not copy it. Their contractor reverse engineered Sun/Oracle's code - despite being told by Google explicitly not to do so!
Google used Noser to provide additional resources and accelerate the completion(?) of Android.
On March 28, 2007, Google hired Noser to deliver a package of Java libraries. /See/ TX 30 (Statement of Work between Google and Noser, dated March 28, 2007)
On April 19, 2007, Andy Rubin wrote to Alan Eustace regarding the "Noser agreement": "This is our final java solution — consultants to take our java libraries as a starting place, and bring our java classes up to J2SE spec, in a clean room environment. They have signed up to a pretty aggressive schedule for quite a bit of work. This deal replaces the $18M approved acquisition that we decided to pass on. Barring any unforeseen surprises, I think this is our last big deal ($4M)." (TX 438.)
There is zero inventive value in that function. It is a completely standard approach that everybody writing containers has used hundreds of times.
This Judge seems to get it.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
A truly exceptional lawyer.
'I'm not an expert on Java — this is my second case on Java, but I'm a complete retard, and I probably couldn't program that in six months.'
Because this is the only way that statement is true, even I could figure this out in quicker than 6 months.
Glad to see the judge called this guy on his BS.
What do I know, I'm just an idiot, right?
For those of you who don't want to read all the transcript, this is what the judge said:
Oracle: I think the law with respect to infringer's profits, rather than damages, only requires us to show that there was a product that contained infringing material and that the product produced revenue, and then the burden shifts to the other side. If I'm wrong about that, I still think it's possible to demonstrate a nexus by showing that speed was very important to Google in getting Android out, and by copying they accelerated that.
Judge: We heard the testimony of Mr. Bloch. I couldn't have told you the first thing about Java before this problem. I have done, and still do, a significant amount of programming in other languages. I've written blocks of code like rangeCheck a hundred times before. I could do it, you could do it. The idea that someone would copy that when they could do it themselves just as fast, it was an accident. There's no way you could say that was speeding them along to the marketplace. You're one of the best lawyers in America, how could you even make that kind of argument?
Oracle: I want to come back to rangeCheck.
Judge: rangeCheck! All it does is make sure the numbers you're inputting are within a range, and gives them some sort of exceptional treatment. That witness, when he said a high school student could do it--
Cosplayers.net - The Cosplayers Network
Because it goes directly to the claims that it infringing it was the source of a substantial quantity of Google's profits.
The decompiled files are a different issue than rangeCheck. Google didn't decompile them, Noser -- a contractor for Google -- did, against the express prohibition in the Google-Noser contract, which required all original work or open-source code, and expressly prohibited copying or decompiling proprietary code.
I tried to submit this over the weekend but it wasn't selected. http://www.wired.com/wiredenterprise/2012/05/google-oracle-decompile/
"Judge William Alsup ruled that evidence presented during the trial had shown that Google infringed on Oracleâ(TM)s copyrights by decompiling eight Java files and copying them in their entirety for use with Android."
That "Oracle lawyer" is none other than David Boies.
Set your phasers on "funky"!
Not a syntax checker, an error checker, but instead, a code judge, which parses your language before use or compilation, and tells you what an idiot you are.
All this shows is that the judge has no regard for patents and should be removed from the case.
I've been following the Oracle vs Google trial on other websites. Not sure why /. hasn't been covering it routinely. It's a pretty big deal not just to Google , but there are some issues being judged which may affect the programming community in general, down the road.
Alsup seemed to be a little perturbed with some of Oracle's ploys to captialize on the assumed "programming ignorance" of the jury. I haven't seen the RangeCheck code, but from Alsups statement it sounds like Oracle is trying to make a case from egregiously far-reaching evidence. One which basically means Oracle doesn't, and never had, much of a case to begin with.
Join the Slashcott! Feb 10 thru Feb 17!
Yup, I wrote that exact same function 15 years ago in my intro to C class. The whole point of the exercise was to demonstrate "garbage in, garbage out" with regards to math functions. The prof assigned a program that would return sine() of some input value. If that input fit within type int, the output was useful. If it didn't you got garbage. Unfortunately, he had been beating into us from the very first day "Make sure the input is valid!!!" So the very first thing I did after getting the input was feed it into a range check... if the input angle was outside +360 to -360, modulo 360 and return the result to the sine() function. Defeated the whole point, I suppose, but he did (reluctantly) give me full credit for having paid attention to his screeds about stupid users.
This looks more like Oracle using the courts to drive competitors from the market than to redress any kind of injury to itself. I think it's time for consumers to start suing corporations for anti-competitive behavior that customers end up paying for.
high school then why does goolge want PHD's for tech jobs?
It's well within the grasp of most middle schoolers, and it wouldn't take long to find an elementary school child who could write it ;-)
I wanna know whether David Bowie could programs those nine lines faster than David Boies.
My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
That is all that should be said about this case. The guy cannot seem to help finding himself on the wrong side of a technological argument. Why do they keep hiring him ?
Religion is what happens when nature strikes and groupthink goes wrong.
Actually, its not the "the same guy wrote it for Oracle and later, Google". It wasn't written twice.
Its that the Google employee who wrote it on his own time both included it in the Android source tree and contributed to to the OpenJDK (including the required copyright assignment.)
Actually, Oracle's pretty much given up on that, too. In a joint stipulation filed today, Oracle has agreed to waive both jury trial and its claim for actual damages and infringers profits on the copyright claims for which liability has already been found if the API SSO issue isn't resolved in its favor, and accept statutory damages for rangeCheck and the decompiled files.
There are plenty of other ways it could have been written, some of them would have been better.
Google could have used a ternary operator instead of two if checks.
Or, which would have been a durn sight more helpful for debugging, when they threw the exception for a mismatch between the fromIndex and arrayLen values they could have included those problem values in the exception data. Instead the only value thrown with the ArrayIndexOutOfBoundsException was the only one that wasn't a problem. That's the kind of programming mistake that strongly supports a conclusion that the Google programmer was blindly copying from the Oracle code instead of thinking about the task.
Much like an example I heard yesterday from a teacher: "you would think when someone looks up several words in the English/Spanish dicionary and all of them were 'sustantivo' or 'proposicion' that they'd realize that was the part of the speech and not the translation of the word".
His parents named him "Haskell". It was inevitable.
Dewey, what part of this looks like authorities should be involved?
I know absolutely jack shit about programming, but I am fairly certain that if I went to school for six months to learn how to program that it would be trivial for me to write that function.
The concept is just so simple that even I get it.
Don't know something? Look it up. Still don't know? Then ask.
Are you sure about that?
Josh Bloch, who wrote rangeCheck, testified that “[a]ny competent high school programmer could write” that method. RT 815:13-16 (Bloch). Even Oracle’s expert Dr. Mitchell conceded that “a good high school programmer” could write rangeCheck with guidance. RT 1316:24-25 (Mitchell).
http://www.groklaw.net/article.php?story=20120516083919975&query=rangecheck
To quote Google's lawyer in court today:
[PJ: Let me remind everyone that the testimony was that a contractor, Noser, did it, and it did it contrary to specific instructions from Google.]
Let me come back to rangeCheck. Every time I talk about this, I feel like I'm either saying it's important or it's not important. That's a false dichotomy. No one can say it's a big thing. But it was something that was copied, and it was important to TimSort, which had a significant performance advantage.
http://www.groklaw.net/article.php?story=20120515120106322&query=rangecheck
P.S. I admit that I could be wrong, I'm not following the case that closely, but this does seem clear cut?
Yes, it seems you are correct, The Verge has a better summary.
Bloch testified that he wrote the original rangeCheck code, present in a file called Arrays.java, back in 1997. In court documents, Sun claims a copyright date of 2004 in connection with the rangeCheck code. Block began working for Google in 2004.
The exact same nine lines are also present in an Android file named Timsort.java, which Bloch testified he wrote in 2007.
When asked if he had copied the copyrighted Sun code directly for Timsort.java, Bloch initially responded "I don't recall." In a playback of his 2011 deposition, however, Bloch states that "the same order and same name is a strong indicator that it is likely that I did."
However, he noted that it was a good engineering practice to use the same method, and that he not only contributed the code to Android, but to the Java Development Kit as well (Timsort.java is now part of Java SE 7).
The Mythical Man Month suggests it won't get much faster no matter how many David Boies you throw at a problem, and at a certain point you'd actually be slowing the process down.
Thanks, that made me smile. If I had mod points I'd give you a +1 funny.
"Space Exploration is not endless circles in low earth orbit." -Buzz Aldrin
out of the HOW MANY total? sounds pretty inconsequential to me for something likely found in multiple forum/news postings and libraries that is freely usable by anyone.
If only oracle, google would fight until they are complete death!!
To-Hell JAVA !!
I've ALWAYS HATED java language! It is NOT a language! It is a coffee brand!!! POINT!
"I'm not an expert on Java -- this is my second case on Java, but I'm not an expert, and I probably couldn't program that in six months."
I'm not an expert on math -- this is my second case on math, but I'm not an expert, and I probably couldn't add 2 plus 2 in six months.
I'm not an expert on physics -- this is my second case on physics, but I'm not an expert, and I probably couldn't throw a ball in six months.
I'm not an expert on astronomy -- this is my second case on astronomy, but I'm not an expert, and I probably couldn't find the moon in six months.
I'm not an expert on language arts -- this is my second case on language arts, but I'm not an expert, and I probably couldn't speak my own name in six months.
I'm not an expert on medicine -- this is my second case on medicine, but I'm not an expert, and I probably couldn't produce a bowel movement in six months.
I'm not an expert on aerospace engineering -- this is my second case on aerospace engineering, but I'm not an expert, and I probably couldn't make a paper airplane in six months.
Frankly, I'm a little concerned that this is his SECOND case on Java. I hope it's his last.
The problem is not how to check of a range is between bounds. Rather the problem is knowing you need to range check at that point. After all a higher subroutine might have already range checked it. Unnecessary range checks on every subroutine entrance would be inefficient. Thus this is a global design issue and takes a comprehensive knowledge to know. It's that knwoeledge that google stole by copying the pattern from oracle. Other design issues are, how do you pass in or obtain the bounds? Those are data structure issues. What exception to call? how do you make sure it does not break legacy code depending on some behaviour?
The problem here is the Lawyers are too simple minded to understand it's not the code itself but how the code affects the design that matters. And the judge knows just enough to understand that code itself is trivial but not enough to look beyond what the lawyers say is important.
since car analogies are obligate: It's like the guy that goes to the mechanic with a mysterious clunking noise. The mechanic listens for 5 seconds then pulls out a ball peen hammer and whacks the side of the alternator one time. The noise goes away. The guy gets his bill and it says $100. He says it only took the mechanic 5 seconds to do the job. The mechanic takes the bill and itemizes it.
tapping the alternator: 1$
knowing where to tap: 99$.
Some drink at the fountain of knowledge. Others just gargle.
Bzzt. Wrong.
No, not at all. Josh Bloch worked for Google as Chief Java Architect (not for Noser) when he wrote rangeCheck (and still works for Google in the same role.) You seem to be confusing rangeCheck with the 8 decompiled files, which were done by Noser Engineering AG. Those are the two independent issues on which copyright infringement has been found in Oracle v. Google.
Can you imagine the bill if you used lawyers to write code. No wonder they estimated a billion dollars of infringement.
ummm...I wouldn't submit this for peer review just yet.
- Ok, so we have this two myths about rangeCheck to bust: first is that high schooler can write it and second is that lawer can't write it in six month.
And of course we should try it ourselves too!
Patent lawsuit is DOA, copyright lawsuit is also not going very well, at least in damages.
Oracle's only "hope" now is that API's are declared copyrightable and ask for injuction against Android, then shamelessly blackmail Google for billions.
What Google should do: port OpenJDK to Android and rewrite Dalvik as a variant of JVM. Since Sun is licensed as GPLv2 + classpath extension, this makes it perfectly suitable to be used in the same way as the java reimplementation in Android is now (except for calling it "Java").
Then they should settle for some moderate amount just to prevent harm that can come out of this ruling. Here Oracle is also in danger from shooting themselves in the foot (i.e. get sued by SCO kind of companies because of Unix API's in Solaris, not to mention the damage to Linux, on which many of their customers run DB's).
But maybe Larry is going to sacrifice this just to win and cause irrepairable harm.
Although I doubt that this crap is going to go beyond the appeal.
yes, it did a rangecheck of the input characters and... oh wait, Slashdot is using it! Lawyers, come to me!
Google is leasing two evils?
I would have thought that Google has enough money to buy as many evils as they want. Is there some tax benefit to leasing evil as opposed to buying?
OH MY GOD ! A JUDGE WHO CAN WRITE CODE ! LOL AWESOME !
This is the funniest lawsuit ever ! I am very glad this judge can write code... at least he is not being fooled.
And I totally agree with it... those 9 lines of code are a joke and way too simple ! and highly likelyhood of somebody writing the exact same thing ! ;) :)
fromIndex > ArrayLen is not checked.
Assuming a zero-based array the code is also flawed; since toIndex could equal arrayLen and not trigger an exception, while it would still be out of bounds.
So both programmers sucked balls hahahahahahaha.
I know absolutely jack shit about programming, but I am fairly certain that if I went to school for six months to learn how to program that it would be trivial for me to write that function.
The concept is just so simple that even I get it.
I'm sure you'll get there in a few days, no need for month. That is, if you have an IQ over 80 of course.
Write boring code, not shiny code!
The Mythical Man Month suggests it won't get much faster no matter how many David Boies you throw at a problem, and at a certain point you'd actually be slowing the process down.
I think that point would be where you added the first David Boies seeing as it would take him 6 months to write a simple bounds-check routine.
"If I have seen further it is by standing on the shoulders of giants." -- Isaac Newton
Casteism
And the lawyer reveals he doesn't: 'I'm not an expert on Java — this is my second case on Java, but I'm not an expert, and I probably couldn't program that in six months.' Just handling 2 cases on Java does not make you a Java programmer nor you are making a living as a programmer. I would say: "Iam not a expert on Law - this is my second book on such a law and I probably couldn't write such a similar law in six months"..yeah make that 5 years.