Just a few years ago, the running geek joke was that Larry Ellingson was second rate, knew it, loathed it and suffered under the whithering scorn of Microsoft who was at that stage "outcompeting" Oracle on every front. Heck MS-SQL was even outselling Oracle Database as impossible as that may sound today.

Well the joke is over that’s for sure. Larry spent the last few years on a drive of targetted acquisitions that usually ended up buying companies for their products and putting most of the employees who created those products out of a job (that btw. of ye who worship the "invisible hand of the market" does NOT count as economic growth. Bigger companies with FEWER employees is bad for everybody – including customers) culminating now in the acquisition of SUN.

Unlike most such acquisitions Oracle did not need to fire most of SUN’s top engineers – they almost all walked out on the first day in protest. These were people who worked for what was once perhaps the closest thing to noble any corporation could be, a company that was once rated the best I.T. company in the world to work for – founded by engineers. Oracle’s culture is almost a polar opposite – it has always and forever been for them about one thing only: how much money can we make.

Oracle’s purchase of SUN gave them control over a number of major technologies – the sun hardware business being practically speaking the least of them. SUN may not in recent years have been very good at monetizing their assets but the software technologies they owned were nonetheless disruptive, innovative and major forces in the market – and now Oracle owns them all.

They own MySQL – a database that was rapidly chewing away at their market share. Most analysts never realized just how huge a threat to their primary bottom line MySQL really was. A few more years, MySQL may have supplanted Oracle as the market leader in databases and the number two spot would have belonged to PostGreSQL. If you thought Oracles competition was Ingress and IBM’s DB2 they looked untouchable – but while this fooled analysts (and oracle was happy to keep them fooled) it wasn’t a true picture. Oracle knew very well that MySQL and PostgreSQL had the capacity to take over the database market from them and the inevitability of that success which is practically built into any successfull FOSS business model.

So Oracle bought SUN to get MySQL. The other major technology they wanted was Java. That most beloved of academic languages that somehow never took off on desktops or the web it was supposedly created for. It didn’t take off on desktops because frankly the story of Java the web-language was a bit of marketing. James Gossling and his team had designed oak: a language created for mobile and embedded systems, to capitalize on a coming revolution. SUN wasn’t wrong in predicting said revolution – they were just 15 years too early, so in the meantime they reinvented Oak into Java, called it a web-language and got it out there, getting a stable of developers ready.

Java expanded it became a darling of back-end services and application-service systems (tomcat is a lovely example). It became a cornerstone language in the market for many tasks (developing user-facing desktop applications was never it’s strong suit but there’s a lot more to the programming world than those) – and when the embedded revolution did come, Java was it’s darling.

It still is, J2ME is the most widely usable phone development platform there is. Android apps are written in a slight variant of desktop Java (but Android can also run J2ME apps through a compatibility layer). Even Windows7 phones support Java apps. The only exception is Android’s biggest rival: The Iphone.

People talk about Steve Jobs’s refusal to allow flash on the iphone but much more important is his continued prevention of java as a language. Both are prevented for one reason only: it makes iphone into a walled garden, whose apps run on nothing else, and which cannot run apps developed for anything else. Such deliberately blocking of interoperability is bad for the consumers and gets worse in the long run – in fact, it’s a classic Microsoft business technique (less so nowadays because Microsoft is frankly not as powerful as it once was and cannot get away with it so easilly).

Android is the great thorn in Apple’s side – a platform that gives comparable features while being open and interoperable breaks down the value of their walled garden approach. Apple however never had the gutts to sue Google – instead they sued HTC and other handsent manufactuers – their hope being to scare the handsets away from googles stack with the very real threat of patent litigation.

So far, nobody has backed down so I think Apple’s plan isn’t working very well for them. Larry Ellingson however, did not sue HTC. Larry went after google itself. It doesn’t have much choice really – their claim is that google’s adapted desktop JVM on a phone (rather than a desktop computer) violates the Java licensing (those parts that aren’t GPL’d at least) and patents. Patents which recent posts by people like James Gossling reveal to have been filed for absolutely no other reason than to build SUN a defensive position when other companies sued the once patentless company over trivial patents and won. Patents created through a "lets see who can get the stupidest patent granted" competition among the staff !

Now those patents belong to one of the most unscrupulous businessmen in I.T. today. The suit against google is about one thing – firmly cementing Oracle as the dictator over Java. They who shall decide which java features are available on which platforms. Google perhaps has some room for a defense based on stretching the defintions of desktop computer. Android is pretty close to a desktop OS as it is, and tablets will bring it even closer (much as it did for Apple). As the line between "phone" and "pc" has gotten blurrier – perhaps the legal seperation of the concepts aren’t so clear anymore either. I’m no lawyer so I won’t debate the viability of this but it’s worth considering that when J2ME was created with it’s smaller feature-set (a feature-set not good enough for Androids capabilities) phones (and the apps they could run) were far less powerful than they are now. My HTC Desire has more processing power than any of my first 5 computers. It just happens to fit in my pocket.

Oracle wants control over Java at that level. Sun already gave us the core java technologies under the GPL which makes oracle weak in what they can do with it, but here they are showing the power of patents. The Harmony class-libraries from apache were based on the GPL’d java source code, Android’s JVM is based on Harmony – yet Oracle is asserting a power that the GPL specifically removes: to control where and how the code may be run. Harmony remains an uncertified Java set – because to get certified requires one to comply with an additional license that removes almost all the GPL freedoms.

Oracle didn’t go after Harmony, at least – not yet, they went after Google and they have one goal in mind here: to take back control over Java. Ironic because it’s exactly the fact that SUN has been evermore relaxed about controlling it over the years that allowed it’s continued growth. It remains one of the few parts of SUN’s software business that was actually profitable right to the end.

But control Java, and you control a huge section of the software market, particularly that part where Oracle is the strongest. If you destroy it in the process ? So what. Oracle DB will only get stronger if that happens – they would much rather lose the Java revenue to protect their database market at all costs.

So does this mean the end of Java ? This lawsuit already has companies clamoring to start processes to move their code from Java to other platforms which has a largely negative knock-on effect on everybody (and ultimately the worst on consumers) so it’s already done terrible harm. It is likely to get worse. If Google prevails, or comes out with a good settlement – then mobile Java may yet survive – it’s too huge a market to die easily. If they fail – even that is dead.

But Java as we know it died the day Larry Ellingson filed that lawsuit. It will spend quite a few years on involuntary muscle spasms as the case drags on – but it’s dead. In the interest of consumers and corporates and everybody else outside Oracle it is now truly vital to viably replace all of Java with a truly free alternative. The good news is that the core Java technologies ARE GPL’d. Java may be dead – but it is now time to ressurect it, in a new form without corporate control. Use th GPL’d code that SUN gave us before it’s demise and rebuild the rest from the ground up. We weren’t far from it even before -nothing should stop us now.

I propose this as the new number one entry on the FSF’s important-projects list. We need a free J2ME, a free JVM, a free servlet engine. I write as somebody who learned Java at University and never voluntarily used it since. I despise the language, I find it clunky and hard to read and harder to build with and I much prefer leaner and cleaner languages like python myself, but I recognize the value Java and it’s position has brought to computing, I recognize the harm it can do to once more revert this power into a single corporate entity’s hands. In fact it will be far worse now. Java is much more powerful, and it’s not Oracle’s primary product for them it is nothing BUT a means of control – so they will fight to control it entirely, and with it a thousand companies and a million developers and a hundred million users.

I may not like Java – but I know we cannot let that happen.

Lawyers have successfully managed to argue that computer programs are not mathematics and thus should not be covered by the exclusion of mathematics from patentable material. This comes from a deep misunderstanding of how computers really work – particularly as implementations of a universal turing machine. Some great papers on this have been written – including this one at groklaw. That explains in detail how computers really work and why all computer programs are simply mathematical functions – and even why all mathematical functions are really just numbers.

A great quote from it is this one: “Programming a computer is, essentially, just discovering a number that suits the programmers wishes”.

The thing is – for somebody whose only understanding of computation theory is even that paper- this will seem like a bit of a leap. After all the process of writing code is creative, involves design and innovative thinking – surely this wonderful process cannot just be “discovering a number” – after all – you can do that just by counting – this is WHY it’s unpatentable…

What I want to do with this post is to – very simply – explain why that really is true. I’m going to give you a very simple computer program. I’ll write it in pseudocode so non-programmers can read it, but it can be implemented easily in any programming language and run – and in most of them will take less than about 10 lines of code to do:


Make the vairable X equal to 0;
Start a loop here:
Write the binary representation of X into a new file.
increase X by 1
continue the above loop until the program is interrupted by deliberately killing it (an infinite loop);

With this simple program – I can create an exact copy of every single program ever written and – this is important – every single program that CAN ever be written.
This is because any compiled program becomes a file filled with zeros and ones – to a computer, that’s just a big number (the whole computation theory and lambda calculus etc. that explains how a number can BE an algorithm is needed to know how this happens – but the important thing is – it’s a number). This program will store every number that can exist into a file – by just counting.

The process is very ineffective for a few reasons: firstly almost every program it produces won’t run, the vast majority of numbers do not correspond to useful programs – in fact only an incredibly small subset of them do – but they are still numbers you can count to, and they are still numbers my program WILL produce. Secondly there is no real way to determine the useful programs from the ones that aren’t- you have to manually try to run all of them – and see for yourself what happens. More-over for every program in there, you’ll produce thousands of copies – some that will only run on other computers than yours. But somewhere in there will be a full version of Microsoft OutLook that can run on your computer… if you run it long enough at least.
Another inefficiency is that it creates every program as one self-sustained entity – as it ends up in memory, but programs aren’t sold like that. Programs have many parts that are identical between them (just like the number 105 and the number 316 both contain the number 1 – just one a much bigger scale) – it’s smart to store these in separate files so multiple programs can use them – it saves disk space, but it doesn’t change the number that actually goes into memory when it is run, it merely stores it more efficiently by avoiding replication.

The process is fully doable however, it would take a massive amount of time to discover just the subset of numbers that correspond to a runnable program – let alone the ones inside that do anything useful – and of course since you’ll also be generating every virus program ever – the process is likely to be rather harmful to your computer.

So indeed, you CAN discover every computer program ever written, and every computer program that WILL ever be written just by counting – just like you can do any multiplication sum by adding up numbers repeatedly. But it’s a very crude an ineffective way of doing it, learning multiplication saves a lot of time and effort for the same result, but even though it’s a faster process- ultimately it is STILL just adding up repeatedly.
Programming in the end is a technique whereby we can very efficiently narrow down onto the numbers that are truly useful, we use principles of engineering and mathematics to skip the addition and multiply directly as it were – going straight to the number we are looking for. In fact it’s not a perfect process – that’s why all programs have bugs – we don’t get to exactly the perfect number for the program we want – we get to a number that’s so close however as to make no difference. Somewhere in there is the number that will be the perfect bug-free version of the program. The counting way could find it (but will be hardpressed proving it did) but the programming methods won’t – the closer you get the harder it gets to narrow down, the very same things that make programming a much more efficient way than counting to find useful software, also makes it’s results slightly less perfect. It’s sort of like calculating the value of Pi, the longer you go on – the more accurate your answer becomes but you never quite get there and the cost of one more digit of accuracy must eventually be higher than the value of having it.

So there you have it – not only is every program a number – they are all simple integer numbers that can be counted, and all the great skill and artifice of the programmer is really just a much more efficient way of finding the number we want – rather than counting through them all and checking if it is the one we want (which could take centuries to be honest).

You cannot ask for a more simple piece of proof that a program is in fact a number – that software is discovered rather than invented. The fact that we have very effective methods of discovering them does not change this and doesn’t change that you should not be able to patent numbers.

I still highly recommend reading the article I linked – especially if you are a lawyer or activist involved in the software patent field as it explains the underlying theories very clearly. Effectively it tells you how it came to BE that these numbers are useful, and how we derive their particular useful meaning from them. That process of derivation is what computer hardware does, and a better tool to do that with is patentable (which is why you should indeed be able to get patents on computer hardware), but go in with this basic understanding. That every computer program really is just a number, that those numbers can be reached by simple counting – I’ve proven this to you here, and all of computer programming – as wonderful and delicious and artistic a field of endeavor as it is – is really in the end – just a faster way to count to a number that we like.
This does not reduce from programming any of it’s artifice, if anything it adds to the merit of the field because the processes by which we count are complex and fantastic and beautiful and we are always looking at ways to count even more effectively so we invent new programming languages and ideas like agile programming to help us do it even better – but in the end, the results is just a number that anybody could have counted to – and that is NOT an invention you can patent.

UPDATE: Something I didn’t make clear above but which is important – is that you will generate not only every program that can exist but every FILE that can exist. This includes for example if you read them all as .jpg – every digital photograph – photoshop’d or not that can be taken. A digital camera is just a very efficient way to get to the number that represents a picture – it’s still art. Photoshop is a way to manipulate that same number with small algebraic changes to get to one very near it, but slightly different – it’s still art. This is why I say that this reality doesn’t reduce programming’s artistic and creative status. If you read them all – every text file that can exist is in there too, from the bible to Shakespeare’s Macbeth. But it also includes about a million numbers right NEXT to the one with Shakespeare’s Macbeth which differ only in that an A on line 6000 has been replaced by a Z for example. Again – authors seem to be real artists for finding the “magic number” without counting and checking every possible variation – indeed for doing so long before we had the mathematical knowhow to turn something like MacBeth into a number and back again. The PDF versions are in there too. Every music file, the mp3 compressed ones and otherwise. Every news report and every youtube video will get generated.
It will also be damn near impossible to find anything in there by looking manually – you’d have to study each number just to figure out if you should run it, try to boot it or open it in a video player ! What’s worse there’s real CPU specific stuff in this approach – the 64-bit version of outlook will be a very different (literally – an order of magnitude different) number from the 32-bit version of the same program.
The nice thing is that if you find the right source* file number, you can generate all the possible binary file numbers from it. You’d need to wade through a few thousand ones just like with MacBeth that are almost but not quite right – except for one altered or missing character somewhere.
So programmers focus on finding the the magic number for the file with the source code – because find that one, and you can jump straight to any of the executables magic numbers with a single calculation which we call “compiling” . See what I mean by “a much more efficient way to count to a useful number” ?

*Text files, executable, source code, pdf’s all files in fact are saved as just one gigantic number on a computer. The computer just follows a set of rules to make sense of them. The exact rules differ between architectures – on an 8-bit computer if you tell it that the file is “text” it will read every 8 digits, take that as a number by itself and find a corresponding letter from a chart (known as the ascii set), on 32-bit and higher computers it reads more – and can refer to longer and more complete charts like unicode – but ultimately – what gets saved on the disk is still just one big number. Here-in lies the secret to what lets the “universal Turing machine” actually work – software is data.

It hit my mailbox today – the decision to put the entire letter in a jpg file probably got it past gmail’s spam filters… but sheez, this is absolutely terrible… terribly perfect as a rip-off that is…

Get this:
1) Firstly the spelling and grammar is actually almost acceptably good !
2) It puts a whole new spin on the usual “God bless you for your help” and other religious crud in the “help me collect my dead husbands fortunes” 419s by pretending to be from a Christian in Saudi who had converted (along with the dead hubby) from Islam
3) It then goes on to state that the purpose of the money for her is to use it for charity ! To build things like cancer research centers !
4) The “I have cancer” bit is a nice (if rather fucked up) twist…

Sheez… I can just see a million fundamentalists falling for this one… Here is the letter as I receive it.
Please if you get this – IT IS NOT REAL. These scammers have in the past committed fraud, theft, kidnapping and even more violent crimes than that against people who respond. Do not fall for it.

Oh, and whichever scammer came up with this one… you know, “Sister Mary Jones” is really not a very believable name for a lady who was born to a Muslim family in Saudi Arabia !

419 Scam

419 Scam