Thursday, March 27, 2008

[Tech] Two Cultures: iPhone and Android

Finally, the iPhone SDK is out and the development community showes mixed emotions. Apple seems to have difficulties in providing the SDK (that costs about 100$ per year) to all developers who show interest, and particularly non-USA developers seem to be disregarded. Then there are questions whether third-party developers can use the full functionality of the iPhone, e.g. the "iPod" functionality seems to be locked; then what about development of "services" that run permanently in the background (like chat applications) and so on. Additionally Apple provides a very specific way of distribution of applications: iTunes. This is good and bad news, depending on the viewpoint: On the one hand it takes away a lot of infrastructure problems for developers as they do not need to deal with sales infrastructure (servers, payment, distribution, installation...), on the other hand, Apple decides in the end which applications will be listed and how (plus of course takes a share from the sale).

Now, I have to say, that I share great sympathy for Apple's design in general; specifically I love the iPhone platform (I do not need a mobile phone, so I "just" have an iPhone touch, which practically the same platform): it is a great system, excellent user interface and applications.

Having said that, I have mixed emotions about the platform lock-in. And here comes Google Android, and we really see two sides of a coin:
  • The iPhone started as a completly closed-up system under the hardware and software "control" of Apple and is apparently very well "tuned". The API is just released step-by-step to "third party" developers (and not to all of them as yet).
  • Google Android starts with an elegant top-to-bottom open (source) API and development tools based on Java (which has a huge development community), but without hardware
  • The iPhone is rather tightly coupled to the Mac platform (OS, API), Android is based on OS operating system (Linux)
  • From all applications are equal (Adroid) to some applications are more equal than others (iPhone)
  • One hardware/handset producer (iPhone) versus anyone can produce handsets (Android)
  • Long and successful experience in mobile products (iPods); but neither Google nor Apple have a history in mobile phones (which could be seen even as an advantage, when we look into the mobile phone market...)
  • Software distribution "laissez-faire" in Android versus clear conditions and company driven distribution channel (Apple)
I think, we see here a clear clash of cultures; Apple has a very proven platform based on years of iPod experience and even longer experience with operating systems, yet drives the iPhone project in a very traditional "top-down", one might even say paternalistic manner. I am sure there are good arguments on Apples side. E.g. a the demand for a consistent user experience.

On the other hand we have a bottom-up, as I already said "laissez-fair" approach that Google suggests. I personally (who would have thought otherwise) prefer the Google approach, despite the fact, that I believe that the iPod/iPhone platform is very well designed. Having said that, Android has still a long way to go to come to be comparable to the iPhone. I really hope that the mobile-phone dinosaurs are finally blown away by proper technology and platforms that allow solid software engineering. The past has proven that the open source model can attract a huge number of developers and great products, but it also showed (but this is a topic for a different posting), that the open source model also had a problem in providing a consistent and user friendly UI experience (particularly for non-experts); this is where Apple is "at home".

And the winner is...? Yet to be seen.

Wednesday, March 26, 2008

[Misc] Dave Rosenberg on Open source's business opportunities

I've found an interview with Dave Rosenberg, CEO and co-founder of Mulesource the company behind Mule ESB. There is much noise around Mule and SOA and why Open Source technologies can be used to set up a lightweight SOA. In this interview Dave Rosenberg discuss the opportunities of Open Source in business and what the future brings. I've summarized some interesting statements:
  • Open Source challenge continues to be innovative while delivering high-quality products
  • Open source distribution puts software closer to customers
  • Wide-scale adoption of open source in mission-critical applications as open source products continue to mature
  • Open source is no longer a matter of "if" but instead, a matter of "when"
  • Enterprises have accepted open source as part of the core infrastructure
  • The biggest business misstep is probably the obsessive focus on licensing, which, while important, distracted people for way too long
  • Future of software is a combination of open source and SaaS
I think Open Source technologies are still growing in importance and many companies build on open source technologies. In my opinion the most interesting thing about Open Source development is the possiblity to meet, discuss, analyse and develop with great developers, architects from all over the world.

[Arch] Architecture Patterns

Markus sent me an interesting link to a paper from Markus Völter (who is well known through the Open Architectureware project) that I would really like to share with the Blog audience: In his paper "Architecture Patterns", Markus Völter suggests a pattern language and a methodology to define a Software architecture that is not "based" or depending on specific technology. In the abstract he writes:
"The craft of defining an architecture – independent of buzzwords – has gone out of fashion. Designing architectures on a conceptual level is not something people learn, or read books about (there aren't many books on this topic!). The view for the essential aspects of an architecture is obstructed by all the technology crap."
Strong words indeed, not only in the abstract, yet I believe this article provides good material for discussion!

Thursday, March 20, 2008

[Arch] Developing in a SOA world- Developer Perspective

Gregor Hohpe, author of Enterprise Integration Patterns talks (May 2007) about developing in service oriented world, while focusing on developers perspective, and what does it mean for developers work on SOA. The first part of the talk gives an introduction to Service Oriented Architecture, where does it come from, including there main drivers, such as:
  • Distributed component architecture
  • Transparency to developer (marshall, unmarshall, and all the low level things)
  • Loose Coupling of components
He also points that SOA is not a technology. SOA is an architectural style with some main characteristics, like:
  • Simplicity of interaction
  • No notion of object oriented issues
  • No lifecycle control
  • Self contained documents (XML)
  • Asynchronous interaction
As a consequence of these characteristics developers will be forced to rethink in software design, because the programming model in SOA is somethink like:
  • Event Based and Asynchronous Programming
  • Declarative Programming
  • Object/Document Mapping (like O/R mapping)
  • Process Modeling (long running instances, complex transaction models, correlations between running processes)
To summarize the talk I would say, that he see some aspects in SOA critical from developer perspective and points to the complexity that comes with the new architecture style. But the presentation gives a very compact overview about SOA and what does it mean for developers to work on SOA projects.

Wednesday, March 19, 2008

[Arch] Spring Integration - Another Integration Plattform

At present there is a lot of noise about integration issues on the open source market and many projects, such as Mule, Service Mix, Apache Camel and similar candiates are well designed technologies using in integration projects. Today watching the new Spring Source site and check their products I've found Spring Integration, an extension to the Spring framework to support Enterprise Integration Patterns. The Integration is build in a Spring like way, by using XML and Annotations.

I can't follow this step, because matured projects like Mule are build on Spring core and the configuration is Spring like. Camel e.g. provides a full implementation of a rich set of EIP and Mule does it also. Reading the Spring Source Blog I found the statement:
"[...] we were looking into Servicemix or Mule, but decided against them because of the complexity associated with a more complete ESB, when we really just want a lightweight message router. [...]"
Especially Mule, is in my opinion a good choice when developer search for a lightweigt integration plattform. JBI implementation is not an issue:
"We are not building the framework upon JBI, because our "component model" is Spring. I should add that there is a lot of hype around the future role of OSGi in this space, and given that we are co-evolving with the Spring Dynamic Modules project, we are particularly well-suited to build upon that. SCA on the other hand is consistent with the concepts of dependency injection, and SpringSource is involved in that initiative, so you can probably expect to see SCA integration at some point."
Look at Spring Integration sample and post your opinion about the project.

Saturday, March 08, 2008

[Misc] How green is YOUR Website?

In a recent post I discussed efficiency in IT ("The power of Ten"). I think we Software Engineers have still a long, long way to go. We focused on models, fancy user interfaces, layered architecture, abstraction from hardware, and often left an terrible efficiency mess behind us (no problem, we just add some more iron...). And the curious thing is, this is in my opinion not necessarily because of the higher abstraction level but rather due to developers that do not fully understand contemporary complex architectures and frameworks and/or do not use proper development techniques.

Ok, if a company who has an intrinsic interest in selling hardware drives an inefficiency strategy, but most of us have no interest in higher hardware sells and more bandwith use, so lets start thinking about our practices.

I read a very interesting series of articles today I highly recommend: First comes from O'Reilly Radar from Steve Sounders asking: "How green is your webpage?". In that article he discusses some "simple" optimization techniques like putting proper expiry dates for images and analyses, that just this optimization could save six fully loaded web-servers for Wikipedia. O.k., not everyone is operating Wikipedia size, but there is a series of other optimisation efforts that can add to that bill. Yahoo Developer networks describes 14 best-practices for web-developers to get better performance for web-applications. Startin with "make fewer http requests" over "Expiry headers", proper usage of CSS and Javascript/Ajax.

The last resource I like to recommend (again? don't know, have a bad memory, sorry), is a talk from Rasmus Lerdorf on PHP, performance and profiling on conversations network. Btw. I think we should do more on profiling on this blog...

Friday, March 07, 2008

[Pub] Enterprise Service Bus Concepts

In the current issue of the Javamagazin I've published a German article discussing the basic concepts of an Enterprise Service Bus.

At present there are many talks, discussions and investments around Enterprise Service Bus technologies. This shows that integration in software systems are still a major challenge and such projects result in a huge implementation-complexity. As a new architecture paradigm for integration problems, an ESB should reduce this complexity and enable integration-developers to develop on a abstract layer. Therefore developers can concentrate on their problem domain.

The article emplaces:
  • Problems of historical integration projects and the birthday of the ESB
  • ESB and Integration Patterns. There is a strong association between ESB and Integration patterns, rather EIP are the basic of an ESB
  • Components of an ESB, including MOM, Binding Components, Transport, Transformers, Routers and Endpoints
  • ESB and JBI?
  • Which role does an ESB play in a SOA?
At this point I want to say thank you to Alexander and Werner for their feedback. In the next issue of the Javamagazin I illustrate the concepts of an ESB by using Mule OpenSource ESB from Mulesource.

Wednesday, March 05, 2008

[Conf] JSFDays in Vienna

I know, this comes on short-notice, however I myself realized this too late. Next week, to be precise from March 12 to 14 2008 the JSFDays conference will take place in Vienna. There are a set of very interesting speakers like Jürgen Höller speaking about the Springframework and the relation to JSF, there is Martin Marinschek from Irian and myFaces and many others. Keynote speaker is Edward J. Burns from Sun Microsystems.

Btw. the conference fees are very reasonable so I recommend to visit the event even on short notice. Unfortunately I am away an cannot join, but a colleague of mine will visit the conference and share some thoughts here on the blog by next week. I wish everyone a nice conference!