Friday, June 11, 2010

Another report from the Bureau of Meaningless Statistics

"80% of all statistics are meaningless. 73% of all statistics are made up." -- Anonymous

The F2P area really abounds in meaningless statistics. This months choice example comes from the president and cheif flogger for Live Gamer via The Edge online:

""We're seeing average revenue per paying user top $28 per month across the 145 titles that Live Gamer powers around the world."

Sounds impressive doesn't it? But what exactly does "average revenue per paying user" mean? The answer is, by itself, absolutely nothing. A game with 10 million users where only one spent anything, and he spent $100, would have an "average revenue per paying user" of $100!!

Is that a game to invest in?

I often quote Mark Twain at moments like these:
"There are 3 kinds of lies. Lies, damn lies, and statistics."


The iWeasel

Well, Apple continues to insert more and more weasel wording into their iPhone developer's agreement. Their latest loop hole to allow them to selectively enforce their rules was added at WWDC to section 3.3.2, the prohibition against interpreted code:

"Notwithstanding the foregoing, with Apple’s prior written consent, an Application may use embedded interpreted code in a limited way if such use is solely for providing minor features or functionality that are consistent with the intended and advertised purpose of the Application."


IMHO this latest change was specifically to allow Unity based games, without which they would lose most of their best game content.

The agreement is passing from insulting to outright laughable as Apple squirms and twists to do what they want to without violating their own rules and creating potential legal issues for themselves.

I think the time has come for Apple to issue a "plain language" agreement. I offer the below as my suggestion:


Apple iPhone Developer Agreement Mark 2:

Section 1.1: Restrictions

No application or development tool is allowed that, in our opinion, in anyway competes with our economic interests. These interests include but are not limited to direct sales, ad revenue and total control over any hardware or software running on or attached to our product.



See? I just saved Apple hours of legal fees ;)

Thursday, June 10, 2010

Apple trying to force Google out of the iPhone ad business

Here's an interesting development in the on going saga of Apple's overly restrictive developer policies...


To my mind Apple is flirting dangerously with "restraint of trade" with all these new, very targeted developer restrictions. And Google has the bucks to give Apple a real good fight in court. Especially if, as I suspect is coming, the government gets involved on a federal level.

Edit: My suspicion seems confirmed...

Everyone remember this ad?


Who knew that the big face on the screen was, in fact, Steve Jobs?

Thursday, June 3, 2010

Dear Steve, (an open letter to Apples CEO)


I love my iPad. Its a wonderful bit of kit. The hardware is top notch and the software smooth and elegant.

I've been a software developer for more then 30 years. I already have an Android app on the market. I will not, however, be developing anything for my iPad. And the reason is your latest restrictive developer rules.

Its is unfathomable to me that you, as the platform maker, feel you have the right to restrict what tools I can use to develop my application. No platform maker has ever demanded such of their developers.

This is like your Chinese assembly plant dictating to you what trucks you could use to carry the resulting product or how you could sell them. Manufacturing is their business, sales is yours.

And software development is *ours.*

Even Microsoft, when they decided they wanted to own the PC compiler market, did it by devious competition and not through direct arm-twisting of their developers. They understood how much they needed their developers. Do you?

This is a dangerous time to be playing such games. Android use is on the rapid rise in cell phones, far out-pacing current iPhone sales and Android pads are about to break into the market. All it will take is one that feels as comfortable to me as my iPad and you will have lost not just a developer but a customer.

Regardless of whether I keep my ipad as a consumer or not however, one thing is certain. Until you retract your ill-considered language and tool mandate, the only way I will be personally developing iPad software is if the iPad version happens to come free as a by product of a tool I am using to reach another market.

And given the fact that your position is now to reject applications created by such tools, this isn't very likely.

Tuesday, June 1, 2010

Objects Considered Harmful

Alright,

Its time for a programming vent.

As many of you know, I wrote the "Early Access" version of what would become the Project Darkstar server. When that project transferred to its eventual team in labs, the team there spent well over a year debating and re-creating what I had already created. As I watched this I comforted myself with the belief that this team of specialists would produce a better result each in their own area then I had the time or ability to do, doing it all.

Well, I am now deep in the client/server transport and protocol sections of the code right now... and I have never seen a more overly complex, totally obfuscated mess in my life.

The thing about protocol stacks is, they map beautifully to a simple, proper, structured coding approach. What we used to call top-down design/bottom up implementation. Each layer of the protocol is a layer of structured code with a well defined interface, calling the level below it. PDS (now RedDwarf) has two layers of fundamental abstraction-- a transport that moves packets around and a protocol that interprets them. To be fair and give credit where credit was due, that idea was implicit in my original implementation and the author of the re-write did pull that out as an explicit organization principle and observe that there should be a plug-in interface for each.

That, however, is where my praise of this code ends.. It is an unholy mess of calls and callbacks on passed objects running up and down the stack in higgeldy-piggeldy fashion to the point where so much of the logic is spread out in so many places the total execution is virtually untraceable.

This is not the first time I've seen this in code in recent years. I think the culprits are primarily University professors and CS programs who are so in love with concepts of "Object Oriented" programming that they are failing to teach the basics, which still come down to data structures, interfaces and layers of code. Those of us who WERE taught such concepts recognize an "object" as just a convenient packaging of data structure + interface and continue to write clean, clear encapsulated code.

But it seems the kids these days don't have those clear organizing principles in their heads. As a result they write their code as a whirling cloud of disorganized interacting objects. This chaotic swirl is virtually impossible to statically trace on paper as we had to, instead they count on debuggers to show them run-time behavior and praying that what they saw in this limited sample really represents most if not all possible interactions.

I think its time for a harsh remedy. I am calling for teachers of coding everywhere to rip those
Java and C++ books out of your students hands. Give them C, or if your nice, Pascal, to learn their basics on. Teach them what data structures are and how to do top-down design/bottom up implementation. Take away their debuggers and make them debug with trace calls.

When they can do that with aplomb, they are ready for the objects. But when you put power tools in the hands of someone who has never used a saw or screw-driver, you get messy accidents. And thats what were getting in code today.


Or to paraphrase a common witticism I never agreed with anyway as a statement I CAN agree with...
"There is no problem in Computer science that cannot be totally obfuscated by the addition of too many levels of abstraction."

Thursday, April 29, 2010

The soundbyte generation

I have noticed in the past few years that I am getting more and more flooded by people sending me web-links. Sometimes its just because they find something interesting, often though it seems as if they think I should take it seriously as intellectual discourse.

So its time for my soapbox again:

Forwarding a web link is to intelligent discourse what "Mama, look I found a bug under that rock!" is to biology.

If you are going to cite references and be taken seriously by anyone with any sort of intellectual training, you need to do at least 4 things that are generally never done when people send links around:
  1. Validate the veracity of your source. The most heinous offenders of these are people who send me either press releases or marketing speeches. We used to have a saying at Sun while I was there: the only difference between sales and marketing is that sales *knows* its lying. A source that has something to gain from convincing you what it is saying is true is never, ever a reliable one.
  2. Read the damn article yourself first. I have a friend who just loves to link quote, and more then half the time if you read the article he's quoted fully, it defeats his own argument.
  3. Differentiate statements of fact from statements of opinion. Lots of people believed the world was flat. That didn't make it any more true then if only one person did. Common wisdom is seldom wise and almost always suspect.
  4. Differentiate serious arguments from propaganda. Propaganda is inherently a manipulative form of communication. It is *built* to persuade and not to enlighten. There are standard social and linguistic techniques employed in propaganda, none of which standard up to a serious test of logical correctness.

    In a moment of deliberate irony,l I'm going to give you a URL link to the most complete list of the standard fallacies of propaganda I've come across.
Link-wars are, I suppose, the inevitable result of a sound-byte culture. Its argument by sound-byte. And it has just as much depth of thought.

Sunday, April 18, 2010

Winners and Losers in Oracle's Sun Picks

Now that the dust has settled in the Snorcle merger, we can see some of what Oracle has kept and not kept in the Sun portfolio. This is my own set of calls on what were good and bad choices, time will tell if I am right or wrong...

Good Call: Keeping Glassfish 3
There seems to have been little impact on the Glassfish project. It is still open and going strong, Although there have been project management issues in the past (Glassfish2 was buggy and never fixed) in general this is a central enterprise technology in major use. There was some concern that they might suffer from being in competition with Oracle's own database-integrated app server but so far that hasn't seemed to have happened.

Bad Call: Keeping Java FX
Larry, what are you thinking??
The final and ultimate shot in Sun's pointless and already lost battle with Action Script. This is a whole lot like Japan deciding to invest half its GNP in a war effort *after* the bomb fell on Hiroshima. A huge expensive boondoggle that no one but Sun cares about. Even if Sun *could* win this war (which they can't), the entire future of the segment is now under *serious* threat from Apple and Google with HTML5, which basically makes both AS3 AND JavaFX unnecessary.

Good Call: Keeping Sun Labs
Sun Labs is where most of Sun's strength has emanated from. A highly efficient group, they get more done with less man-power then most of Sun.

Bad Call: Screwing with Sun Labs Portfolio
Look at it this way, Larry. Suppose some hairy engineer today had an idea for a brand new, never seen before, language on top of a brand new, never seen before operating environment that he wanted to write for a tiny-device market that didn't exist yet.

What would you say in portfolio review?

That, my friend, was Oak, which later became Java, which you paid HOW much to own???

Think about it.

Bad Call: Screwing with the Sun Culture
I have my ear to the Sun grapevine. You are leaking top talent right now like a rowboat made out of pumice. Why? Because if Sun people wanted to work in an Oracle environment they would've joined Oracle to begin with, not Sun. In case you haven't read yesterdays WSJ, the tech sector is in major hiring mode again. They have lots of options and they are taking them. I suspect you will find them very hard to replace.

Surprise Good Call: Keeping Netbeans
Honestly, I'm on the fence on this one. Two years ago I would've said Eclipse had it beaten dead rights and you should just port whats of value from Netebans to Eclispe plugins and kill it. But Eclipse seems to be running out of steam, weighed down by its own success and a panoply if increasingly incompatible plugins. Meanwhile, Neteabs 6.8 has managed to leapfrog Eclipse to be the better dev environment. It has better support for the most modern language trends and is easier to keep functioning.

Kudos to the Netbeans guys, in any event, for a surprising last-lap come-back.

Good Last Minute Decision Reversal: Keeping Kenai
In a clear last minute reversal of policy, Oracle reversed its position on Sun's competing open source environments, saying they would keep the java.net name but migrate to the Kenai backend.

Good call. OReily's software that Java.net runs on has always been a weak player in the field and Java.net's greatest weakness. Kenai is a modern hosting site well-integrated with Netbeans. mering the Java.net brand and exisiting project base with Kenai's technology is a best-of-both-worlds solution.

Worst Call of All: Buying Sun
I blame this more on the Sun board then on Larry Ellison, honestly. Sun is just not a good culture fit for Oracle and Oracle hasn't learned the IBM lesson that, when you buy a company you are also buying the culture so don't mess with it any more then absolutely necessary.
IBM was a far better culture fit. In the end, the Sun board had a chance with IBM to save all that was good about Sun and threw it away or the sake of 50 cents more a share.

Prediction:
When the dust settles in a few years, oracle will find all they bought was a few by then aging technologies and an aging brand. What was truly valuable about Sun, the holders of future-vision, will have all drifted off to other opportunities.