Esteban’s Mars Project is alive

At last year’s ESUG conference, Esteban Lorenzano showed his progress on Mars, a framwork to implement native Cocoa interfaces in Pharo Smalltalk. His goal was and is to provide a way to build native Cocoa Apps without the need to build parts in Interface Builder and load NIBs etc. And I was very impressed by what he showed.

After ESUG, you couldn’t read or hear much about Mars and Deimos (a sub-project for iOS GUIs based on MARS). In his latest Blog post Esteban explains a bit of why that is: He faced a few technical problems that were hard nuts to crack, but it seems he’s back on Track and Mars is going to get real. And what’s even better: he found people to help on the project.

Cheers and Good luck to the team! We hope to code native Mac Apps in Pharo soon!

Objective-C 2, Xcode 4, LLVM, what’s next?

Objective-C and Cocoa are a nice environment to work in. The nicety of Cocoa comes from the fact that it is an object runtime system rather than a bunch of objects compiled into a running program. A Nib file (or xib file as they are called now) is nothing else than a saved snapshot of instantiated and configured GUI objects. So loading a nib is like loading a Smalltalk image: living objects are woken up and continue running at just the place they were when they were saved.

So Objective-C and Cocoa are very similar to a Smalltalk system. But still lightyears away from the real thing. Apple is doing their best to make it better and better and make it feel like a live object system. The just-released Xcode 4 IDE is a big step forward into this direction. (Side note: The eclipse community is also constantly moving into the object system direction by building something very similar to a Smalltalk image).

The next logical step after the achievements with using LLVM as an intermediate layer below Objective-C would be to get rid of the C heritage of Objective-C. Not only is the fact that you have to put Objective-C expressions into square brackets annoying, but also the fact that you need to convert from base types and structs into Objective-C objects and back a lot more often than a programmer would like.

Rumors of Apple working on a new fully dynamic programming language that runs on top of LLVM and reuses the Cocoa object model aren’t really new, but I think they make sense. And having used both Objective-C and Smalltalk, I sometimes think that Objective-C is quite good, if only their creators had gone one or two steps further and made it not only a poor man’s Smalltalk, but rather a real alternative to it. But back in the 90ies when CPU cycles were expensive, NeXT probably had not many alternatives to preprocess down to C and compile classic C code. Today, the C fundament is the weakest spot of the language, not only in my opinion.

So I hope there’s some truth behind the speculations about a new language. Apple has owned a Smalltalk implementation in the past (it’s now open-sourced and called Squeak), so the new language is probably not going to be Smalltalk, but I am sure it will be very much like it (because Cocoa and Objective-C are very similar to Smalltalk and have proven to be powerful): dynamically typed, a live object system (maybe even image based) and with a pure and easy syntax. Swimming on Apple’s wave of success, this could get very popular, and it will surely feel a lot like Smalltalk.

With LLVM and far over a decade of experience with NeXT Step, Cocoa and Xcode, Apple has all that’s needed to build a great programming language, IDE and object runtime system that’s far superior to what most people out there are using today.

Apple releases Xcode 4

Today Apple released XCode 4, their latest development environment for MacOS and iOS.

Having worked with XCode for a while and skimming through the list of improvements and new features in Xcode 4 it seems like this new version is another big step forward and makes development an even much nicer experience than before. I wish some of the Smalltalk IDEs around would gather some inspiration from Xcode.

The nice thing about Xcode and Objective-C is that it feels very familiar to Smalltalk developers and ships with a lot of nicely crafted tools. Apple’s Interface Builder is one of my favorite GUI Builders together with VA Smalltalk‘s Composition Editor and Google’s WindowBuilder for Eclipse/Java. This combination doesn’t come by accident, all three tools share a common heritage, just like Xcode has adopted many things that Smalltalk IDEs offered 15 or 20 years ago and help boost programmer productivity.

It’s a funny thing to see how new generations of IDEs adopt more and more of the feel of Smalltalk environments. Some people call this the “feels like dynamic” trend, and Xcode 4 together with the latest additions to Objective-C (I am talking of Garbage Collection and Blocks) is a clear step towards feeling like Smalltalk.

There are now two ways of getting Xcode: registered Apple developers can download it for free, if you’re not registered, you can purchase XCode in the Mac App Store for 4.99 USD or 3.99 EUR.

Will Thunderbolt be Apple’s answer to Docking?

A while ago I wrote about how much I miss a good docking solution for Mac laptops. With their presentation of the new MacBook Pro models, they might have presented the answer. The new Thunderbolt interface could be the one interface to rule them all.

Just imagine Apple’s Cinema Display featuring a Thunderbolt cable instead of a MiniDisplayPort and a USB cable, with a newly added Ethernet port and a USB hub with at least 4 USB ports (I like my keyboard and mouse wired) and the solution is almost perfect. We’d only have to plug in two cables (Power and Thunderbolt) and everything is connected properly from Network to USB and Display.

[Update: it’s even nicer to imagine third party products that allow for connecting all that stuff like 1 or 2 displays, Ethernet, a resonable number of USB ports (>= 4) and such per one single Thunderbolt cable. I am not sure if beautiful messages like “you can connect everything simply by using an adapter” will really stand the test of reality. My guess is that there is a certain role for drivers in the game, which will make the game much more complicated that Intel and Apple wants us to believe now]

Here they go, good bye MeeGo!

For quite a while I’ve been fascinated by the idea of owning a Linux based smartphone, which I can log into using SSH and install software on it and such. And Maemo seemed to be the thing. Later the baby was joined with MobLin and renamed to MeeGo, and the fact that it was a joint effort of Intel and Nokia made it sound like a promising idea.

Today it is clear that Nokia is not going to invest in Meego any further. Nokia announced their strategic partnership with Microsoft, hammering the final nail into Meego’s coffin. The official version of my speculation, of course sounds better:

Under the new strategy, MeeGo becomes an open-source, mobile operating system project. MeeGo will place increased emphasis on longer-term market exploration of next-generation devices, platforms and user experiences. Nokia still plans to ship a MeeGo-related product later this year.

Which I translate to: “MeeGo is a playground for experiments and we will probably not completely stop working on this one first product in the pipeline that is almost done, but don’t expect much more.”

I (barely dare to) hope I am wrong.

So the smartphone market will be dominated by three dark forces: Apple, Google and Microsoft.

Not that the announcement is a surprise, it’s just a pity that there will be no open alternative, and I was hoping for one.

The German Mac Keyboard is not developer friendly

I know that the vast majority of Mac users will probably not care about what I have to say today, but this is something I’ve hated about my Mac for a while now.

Back in 2006 when I switched to a Mac, the biggest problem apart from the poor Finder GUI is the fact that the German Keayboard completely lacks printed characters that you frequently need as a programmer.

If you sit in front of your Mac’s German keyboard and want to write a program in C, Smalltalk, Objective-C or most other programming languages, you won’t find any of these characters printed on your keyboard: “[{|}]~\” and probably a few more.

Don’t get me started about the key combination to enter a Tilde!
But that put aside, given the fact that in Objective-C, Apple’s favored programming language, is stuffed with square brackets for message sends and curly braces for all blocks of code, it is somewhat a crime to programmers to not print these characters onto the keyboard.

Since I guess many developers constantly move between Mac and PC, it is surely not only me who starts searching for them on the keyboard every time they sit in front of the Mac. My primary development environment is VA Smalltalk on Windows, XCode is more of a secondary environment for me, so the fact that all of the above-mentioned characters sit on different keys on a PC and a Mac make it harder (if not impossible) to transfer the knowledge on which key to press into the muscular brain.

Apple has a design principle of less is more, and most of the times, it works out really well. But in this case, it is a complete failure in my opinion.

I like my aluminium keyboard. It is nice to type on, I can go very fast on it without too much mistyping (except for special characters), so a third-party keyboard that could replace it is probably hard to find. The ones I’ve seen so far also have no special characters printed on them in the German layout. I am quite sure I couldn’t handle a US Keyboard layout, so I have to live with it (I know because I had to type on french, swiss and czech keayboards before and I really felt lost). Grrrrr!

Java on the Mac: no need to worry

A few days ago, Apple revealed their plan to give up providing Java Runtime versions for Mac OS X. There was quite some speculation if this means Apple plans to diss Java similarly to Flash.

But obviuosly, they really just said: we’re not investing anything any more, but we welcome Oracle to do that for our platform.

Which is what will happen: Apple just announced that they will support Java 6 on Snow Leopard and Lion, and Java 7 will be provided by Oracle. This is true for many platforms, so the Mac will be like all the others.

So we’ll have Java and Eclipse on our Macs for quite some years to come.

Hat Tip to MacRumors

How closed will the Mac universe be in, say, 5 years?

I love using my Mac. I like my iPhone. The new Air is really an interesting piece of hardware.

Part of the reason I like my Apple products is that they run quite stable and offer a pleasant overall experience with installing/uninstalling applications. I also like the fact that I can use my Linux/Unix shell commands on it.

But there are times when I wonder how long I’ll like to use Apple products.

The newly announced MacApp Store will probably make finding and installing (and, of course buying) applications easier than ever.  But there is a back side to the coin. Apple wants the experience to be as good as possible and so tries to keep everything out of the App Store that may disturb this. By explicitly disallowing all programming languages other than C/Objective-C and runtime environments, they try to make sure that you cannot install anything from the App Store that’s not perfect. But what’s perfect is defined by Apple.

As long as it is still possible to install software on a Mac that is not purchased in the App Store, I still have a choice, and if I want a Java/Ruby/Smalltalk/Clojure/Scala-written program on my Mac I still can do so. But what if Apple decides to lock Mac OS 11 completely and only allow Apps from their App store on it?

Will we have to jailbreak our Macs to run Eclipse or Pharo in a few years?

And what if Apple is succesful with this policy? How long will we be able to install software of choice on any other commercially available OS?

Let’s hope I am just dreaming a nightmare and reality is different…

Is Apple hinting at Java’s exit from Mac OS X?

Back in 2006 when I made the move to a Mac, Apple had put a lot of effort into making Java/Swing Applications feel like native on Mac OS. Adopting Java and integrating it well with MacOS was key to attract new users to the Mac.

But Apple today is self-confident enough to declare mainstream technologies a legacy on their machines. It seems Adobe’s Flash (which is not shipped pre-installed on the new MacBook Air and is not available on any iOS device) now has a prominent friend.

Apple today announces that they won’t maintain a JRE for Mac any more:

As of the release of Java for Mac OS X 10.6 Update 3, the version of Java that is ported by Apple, and that ships with Mac OS X, is deprecated.

This means that the Apple-produced runtime will [..] may be removed from future versions of Mac OS X.

This does not mean that Java will go away from the Mac any time soon, but there will (very likely) be no Java Runtime from Apple any more. So now it is up to Oracle (or any other third party) to provide a Java Runtime for the Mac, because it seems Java 7 (if that ever becomes real) apps will not run on Macs any more. But it also means that betting on languages that run on the JVM for development on the Mac is not a good idea (I am especially thinking of Clojure and Scala here).

Some may think that’s no big deal, since Java is a server-technology and the overall market share of Macs is quite small.

But this also makes life harder for providers of software packages that are portable, like IBM (Lotus Notes, Symphony, DB2 tools etc), the Eclipse project, Oracle (admin tools) and many others. What will happen if they cannot install on Macs any more?

Will this hurt the Mac platform or the software vendors? Will the possible inability to run a Scala-App on Macs influence the developers’ decisions, or will it make the Mac an unattractive platform for users due to missing applications?

Is this just Apple moving away from the mainstream or is the mainstream becoming irrelevant for some corners of the IT industry?

Hat tip to macrumors

MacBooks and Docking

Over at The Apple Blog, Jon Buys brings up a question that I’ve asked myself quite a few times before: why is there no docking station for Apple’s laptops?

It really is a shame, as beautiful as the new 27 inch LED Cinema Display combination with a brand new MacBook or MacBook Pro may be, that you still have to connect at least 3 cables to your laptop before you can go. And still you need a solution for where to put your MacBook, either for use in clamshell mode or as a second screen.

I am a big fan of the wired keyboard and wired Apple Mouse (which was once called the Mighty Mouse)  and have a docking station for a backup drive and the digicam, so I  love the idea of having all that stuff connected immediately when the MacBook comes home. Having the charger in the display is also a good idea, but you could also have it in a Docking Station which doesn’t require me to plug in any cable at all. I just put my laptop onto or into it and am ready to go.

A Docking Station from Apple could also make machines like the MacBook Air more appealing to people who want more than one USB port and stuff. You could have a small machine like the Air on the road and a battery of connections at home. Not really a new idea, but one that would fit perfectly into the Applesphere.

The new Cinema Display also has a real flaw: it only has one input and only plays with Macs, because it’s Mini Display Port. I’m not sure what kind of adventorous battery of adapters you’d need to connect another PC. So buying an LED Cinema Display means giving up a lot of alternatives.

Come on, Apple, Docking stations are not really a fresh idea, I’ve had one with my work laptop back in the mid-nineties, and they weren’t actually a brand new idea back then.