» Javaless Guardian

Guardian.co.uk is switching from Java to Scala. I’m surprised it took so long and that other Java shops are not following en masse — it could be because of how different and esoteric Scala can be, especially to Java programmers. The linked infoQ article contains an interesting discussion with the Guardian folks.

Programming enterprise web applications (or anything, for that matter) in Java is painful for anyone mature enough to have experienced the wealth and breadth of tools out there, given how primitive, verbose and unproductive it is, and how much it caters for the lowest common denominator of a programmer. That’s not to say that Scala is the best choice for everyone, let alone those not starting from scratch, but given the Guardian’s existing infrastructure and systems, I guess that it’s the best choice they could’ve made.



My Ten Years With Mac OS X.

Mac OS X 10.0 (Cheetah)Ten years ago, on March 24th, 2001, Mac OS X came out. A first, publicly available, one point oh unpolished version of Apple’s ‘next’ (pun intended) operating system. An operating system that Apple had been trying, in one way or another, to create for more than ten years. Remember Pink? Taligent? Copland? Gershwin? Mythical codenames to those that heard of them in the 1990s of either projects that promised amazing experiences compared to Mac OS Classic and that were never finished or released as planned, or spun-off products that died after a few short years. Mac OS X, what finally became a cornerstone of Apple’s platform well beyond the Mac and a catalyst of its success in the 2000s was a reincarnation of NeXTSTEP in Apple’s colours. Fusing NeXTSTEP’s core and frameworks with the Mac OS of old as one product that didn’t exactly know itself. A new skin, the same — amazingly advanced for their time — underpinnings.

In this short article I will describe, in summary, some experiences with Mac OS X from the point of view of a software engineer as opposed to a user, over the past ten years: The initial chaos of integration, Apple’s flirtation and dilemma with Java, the modernisation of Objective-C, the eventual coherence of the APIs and the extension of the system to support Touch in a way that was never achieved before.

NeXTSTEP frameworks used Objective-C. It was a language unknown to 99% of programmers out there in 2001. I had only heard of it while fiddling with GNUStep a few years earlier. In the early 2000s you could still find C++/Corba programmers in major service companies (as opposed to large software houses or systems development divisions) and Java was only starting, slowly but increasingly, to become the preferred platform for enterprise software. I remember meeting amazing and suitably eccentric software engineers — not merely the subpar ‘developers’ that are increasingly common nowadays in service/enterprise environments — that proudly proclaimed ‘Java is for girls!’ and other elitist, sexist jokes like that. Anything less than Alexandrescu and Sutter-class C++ was unacceptable to them. Knowledge of x86 assembly was standard among their friends. How could a person like that appreciate Objective-C? I felt comfortable hanging out with those people because I had gone through the rings of fire of learning, liking and using assembly, ‘high-level’ [insert CPU here] programming (irony!) and C/C++, but I also enjoyed the elegance and simplicity of Objective-C and Cocoa for rapid application development.


» What about {Angle,Diamond} gradients?

In this draft CSS3 spec, preliminary support for gradients is defined. Where are diamond and angle gradients? They may not be used as much as the others, but I find it weird that they are not added to a newly spec’d standard, given that it’s not that hard to implement them.


» The Dream Machine

An online adventure, graphics made from clay and cardboard. Two guys, two years in the making. Amazing æsthetics, seemingly a great story. Play the first chapter for free, and buy the game for around €14. It’s worth it.



The spirit of the community (AOSP 2.3 source is out!)

Android 2.3 was announced a few days ago. The previous day, CyanogenMod 6.1, the most popular community mod was released, based on Froyo (2.2). And today, just a short two weeks after the announcement, the source code for the latest version of Android is being released!

The release marks the end of the 2.x era, with Google, most definitely, working hard on the 3.x series aimed for release in the first quarter of 2011 and — hopefully — taking the fight with iOS up a notch. Just an hour ago cyanogen posted this on twitter:

If you need me, I’ll be locked in my room for the next 3 days. #gingerbread

I feel that right now that’s precisely what makes Android sell, and by extension the popularity and characteristics of such projects give many clues on the demographics of those buying Android devices.

In other words, the ‘magic’ of the platform is its rapid evolution and by extension its community (a community that is largely technology oriented), something not to be found in HTC’s or Samsung’s wanna-be iPhone devices (or their mediocre software), Sony Ericsson’s lifestyle apps or Motorola’s ‘macho’ Droid phone and its seriously bad Motoblur. These are commercial parts of a nascent platform that — until now — enthuse few outside the technology community.

Stuff like CyanogenMod are exciting because they evolve extremely fast and at the same time let your imagination run wild with features that half-baked commercial Android ‘flavours’ couldn’t never have. A combination — and even the ‘controlled’, sterile in a way, yet amazingly polished environments like iOS lacks.

And this is, sadly, something that most major Android device manufacturers don’t get, judging by the effort they put in locking their products down, the amount of crapware they bundle with them and the restrictions they place to their customers.

By the way, if you’re using a supported device, like e.g. the HTC Desire, I recommend you get rid of Sense right now, get CyanogenMod, or another mod if so you prefer, and turn the damn thing into a usable gadget. You won’t regret it*.

*If you do, I won’t be held responsible for any damage you may cause to your device.



Chrome OS and Cr-48

Still watching the Google Chrome Team Livestream. Google is on a massive release streak that clarifies their strategic outlook for the next two years. In two days we’ve had: Android 2.3 and a short Android 3.0 sneak-peek, the eBook store, (V8) Crankshaft, Chrome Webstore and Chrome OS.

The Store.

Chrome Web store

With the Chrome Web store, Google is attempting to replicate the AppStore model on the Web. From the point of view of a Web user, I find it useless, or in other words a glorified bookmarking system, coupled with a payment processing system and proprietary functionality that ties everything to Google; most of the things that the Chrome Web store offers are already here, although they are not offered by a single company. Payments, for example, take place all the time through trusted third-party payment processors, including Google. Discovery of new sites/apps happens daily through social bookmarking sites like Digg and Reddit, a number of trusted publications, word of mouth etc. There’s no doubt that a web site/application directory, or a fancier way to ‘bookmark’ web apps might be useful, but that would be a much more noble proposition to what Google talked about today and it would need to be done in a cross-browser way that would be inclusive to other browser developers and the community as a whole.

The apps. The Web. Openness and Google.

The NY Times Chrome application is just a modern website I visited while the presentation was taking place. Amazon’s WindowShop is a Flash client for their store. A flash game could reside behind a third-party game portal. None of those things have anything to do with the ‘Store’.

The Chrome ‘Webstore’ makes things ‘easier’ and more streamlined for Chrome users and developers, but flies in the face of the openness and independence of the Web. It introduces a new dependency, Google Chrome for its proprietary functionality and Google, for its payment processing services and at the same time raises barriers to entry to other browsers that might very well be standards compliant, but lacking the ‘Web store’ functionality. It ties web applications, their users and developers to Google, even if that’s in the form of the additional work that developers will have to do to provide versions of their applications for the Chrome Web store, the ‘Web’ or even other ‘Stores’, if and when they appear.

There’s no need for any new ‘dependencies’, no need for web apps making use of ‘proprietary’ functionality found in any one browser; we’ve had that nightmare with IE for many years late in the 20th century and for several years the web was the domain of IE.

Google’s intention with the Web store, however, is not at all limited to the Web. It might be that the reasons for the Webstore’s existence fail to convince, but the company’s desire clearly goes far beyond that: Google aims to provide a single place for Applications that fits their upcoming Chrome OS strategy, which, by extension, aims to centralise everything in their own data centres.


» An enthusiast product for early adopters

This is what Andy Rubin stated in his ‘D: Dive into Mobile’ interview, yesterday. And that’s probably the best descrption of Android I’ve read. Like desktop linux was (and arguably still is in some respects), like Mac OS X was in its first three years and like Windows was for a very long period until — arguably — Windows 95 came out in August 1995. It’s hard for ‘normal’ people to get excited about Android, because there’s little that appeals to normal people. Even from a development standpoint it’s clearly work in progress, with volatile APIs, significant bugs and vastly inferior performance (incl. power management) compared to iOS. As I’ve written before, Android development is moving fast and I reckon it’ll take a couple of years at most for it to reach maturity.



Why can’t MySQL Workbench be like Sequel Pro?

There is a saddening shortage of proper MySQL administration/query browser tools on linux-based systems. MySQL Workbench is a free tool that consolidates what used to be MySQL Query Browser and the MySQL Administrator and introduces a data modelling editor that promises round-trip design and generation of DBs.

It’s great news that Workbench is being implemented and made available to the public for free, yet I can’t avoid comparing it to some of the existing solutions for other platforms.

While it’s easy to justify why Query Browser of old sucked — it was an old application that was being marginally maintained in the last several years — it’s hard to do so for a new piece of software like Workbench. Its query browser sucks, not just because of its implementation (slow, occasionally crashing, often providing inconsistent/misleading data), but also because it betrays bad design at every corner; design of the sort that disregards usability and tries to shoehorn user interaction to a flawed model chosen because it suited some developer during implementation.

The Workbench developers seem open to suggestions, and in this light I can only provide a concise piece of advice for their query browser development effort: find a Mac, download Sequel Pro, use it and then copy the damn thing: It works, it’s many times faster, more usable, covers more use-cases and is much more painless, plus it’s free and open source. Sadly, it’s not available on linux, for if it did, I wouldn’t touch Workbench with a three point oh-five metre pole.


Linode. Affordable, Fast, SSD VPS