Qcon day two and REST vs WS-*

The second day here at Qcon London was more compelling than the first, from my point of view. There were several themes (I am just talking about what I personally attended).

The first was Java’s mid-life crisis and the reform of the JCP, which I will make the subject of a separate post.

The second was how the BBC runs its web site and its coming “tech refresh”, which was covered in a late “birds of a feather” session (which turned into a drink at the bar). I’ll come back to this later, after I’ve attended the BBC’s further session today.

The third was REST. Stefan Tilkov led a track on SOA, REST and the Web. Now, the general theme of this (following on from the Fowler/Webber session the day before on the shortcomings of the Enterprise Bus) is that SOAP and WSDL and WS-* have failed to deliver and that REST is fundamentally a better approach to designing distributed inter-application systems. What’s wrong with WS-*, SOAP and WSDL? Too many standards; too complex; too brittle; too incompatible; too few free and open source implementations; leaky abstractions; hijacked by middleware vendors who have an interest in keeping technology arcane and expensive.

By contrast REST is being embraced for all sorts of reasons, ranging from purist arguments about the value of resource-based computing where everything has an URI, to pragmatic arguments along the lines of “it works, I can use it, I understand it.” However, if you poke at some of the solutions which are described as REST, it turns out that some are more RESTful than others – using HTTP as a transport for POX (plain old XML) is not necessarily REST.

I’m still learning about this stuff; but I have no doubt of the value of REST. It fits particularly well with certain types of application. It is ideal for Internet mash-ups, for example. It is a natural fit with the Web. It builds on an infrastructure which is mature, proven and scalable.

Still, I have some scepticism about the rush to REST. I recall the early days of SOAP, when it was still meant to be the “Simple Object Access Protocol”, and at the time some of the claims being made for SOAP were not dissimilar to those now being made for REST (and yes, I know you can use SOAP and REST together). Specifically, it was intended to be a simple, loosely-coupled alternative to the brittle, highly complex, tightly-coupled, arcane, vendor-hijacked technologies such as CORBA and DCOM.

Someone yesterday – I think it was Jim Webber – remarked that middleware vendors are eyeing up REST; we can expect them to introduce products that will supposedly bring resilience, security, manageability, governance, scalability, and other good things; but which will also bring baggage that may sully the REST dream.

We may be having this conversation again in ten years as we discuss what-comes-after-REST.

Even if this is the case, I expect that Agile themes like YAGNI (You aren’t going to need it); appropriate planning and appropriate flexibility; communication and team dynamics; breaking hard problems into smaller, easier parts; testability; accountability – these will endure.

Technorati tags: , , , ,

The psychic powers of the man from Mozilla

I spoke to Dean Hachamovitch, General Manager of the Internet Explorer team at Microsoft, and used some of his comments in a piece for Guardian Technology. I’m pondering putting the whole transcript online.

One of the topics was whether Internet Explorer will ever support ECMAScript 4.0 (aka JavaScript 2), which has been a contentious subject. For the sake of balance I also spoke to Mike Schroepfer, VP of engineering at Mozilla, who was also at Mix08. I told Schroepfer that I’d spoken to Hachamovitch and that he had said he could not commit to ES 4.0 when it was not yet finalized. Schroepfer then said:

…but what he didn’t say was, we’re actively working on it, we’re excited about it, we hope when it’s finished we will implement something in the future. He didn’t even go anywhere near that. He gave you a correct and politically astute answer.

Schroepfer was spot-on and I was impressed by his psychic powers, since he had not been present when I spoke to Hachamovitch. Microsoft has lots of experience in implementing languages with features similar to ES 4.0 and it seems to me that its reluctance to embrace it must be for strategic rather than technical reasons.

Technorati tags: , , , ,

Beck on Agile: it’s all about the team

Kent Beck is really a relationship consultant, or should that be counsellor? This is not a bad thing. Beck gave a keynote this morning here at Qcon and talked a bit about techie topics like frequent deployment (he claims that Flickr deploys every half an hour) and creating more tests more often, but the main focus of his talk is relationships within the development team and between the team and the business people (if they regard themselves as separate).

Beck says that the ubiquity of computing is changing the typical characteristics of a programmer. When only geeks had computers, programmers were inevitably geeky – and for whatever reason, that often meant something of a social misfit. Today everyone grows up with computers, which he says makes programming more accessible to non-geeks, who have better social skills.

Reflecting on this, I’m not quite convinced. Yes, everyone grows up with computers, but few have any inclination to understand how they work. A nation of car-drivers does not make a nation of engineers.

Still, that doesn’t affect his main point, which is that characteristics like trustworthiness, transparency, honesty, accountability, and the ability to get on well with others, are critical to successful development:

I focus on what developers can do to have better social skills and be better business partners.

In an aside on accountability, Beck makes a point about Windows and the “beginning of the end of the Microsoft monopoly.” He says that people are realising that they don’t have to put up with computers that are unreliable or require frequent restarts:

How many hours are spent worldwide waiting for Windows to restart, do the maths. Software needs to be effective and needs to work; increasingly there are alternatives.

Windows can work pretty well in the right circumstances; but it’s a fair point nonetheless. I recall the effort it took to set up a laptop recently. Microsoft’s fault, or third-party problems? Both; but the user doesn’t care whose fault it is, but only wants a better experience.

Incidentally, the team theme came up again when Peter Goodliffe spoke on good and bad application design. He observed that bad design is damaging to teams; uncertainty about what the code does or where new code should go stresses relationships, and working with a bad design damages morale. My reflection was that the team is primary, not the design. A bad team will never come up with a good design. A good team could still find itself working with a bad design though, so focus on design is never wasted.

Does my bus look big in this? Martin Fowler and Jim Webber debunk middleware

Entertaining session to close a slightly disappointing first day at Qcon in London. Martin Fowler and Jim Webber from ThoughtWorks discussed the history of application integration: how to get diverse applications on diverse platforms talking to each other and sharing data.

TIBCO, BizTalk, webMethods, you name it, “they’re a pain in the neck to use”, said Webber.

Enterprise Service Bus? Should be called the “Erroneous Spaghetti Box”. SOA? “A dog’s breakfast.”

According to Fowler and Webber, the Web is the answer. “The dumbness of the internet is a real win…it allows you to do things that you did not think of.” The Web is ubiquitous middleware, incremental and low risk.

Squid is your Enterprise Bus … We’re not going to need all this crazy middleware that middleware vendors try to sell us. We don’t like ESBs … The big up-front middleware approach just isn’t very sensible.

Right or wrong? To me, the question to ask of these complex middleware products (and I don’t want to pre-judge the answer) is this: what can I do with this, that I can’t do without it, or do equally well with a simpler solution?

Mono on the iPhone

Unlocked iPhone, of course. Miguel de Icaza has the details and some video links.

Flash, Silverlight, Mono, Java: surely Jobs won’t keep all these runtimes officially forbidden for ever? It strikes me that Flash has the best chance of getting there, simply because without it the Web is a little bit broken for iPhone users. It’s an influential device and its runtime support (or lack thereof) will be a factor in web development trends.

Technorati tags: , , , , ,

Imagine this: A REST microkernel

Here at QCon, I realised that the Googly “cloud as middleware” track was probably not going to deliver what I want to discover, which is where Google thinks it is going with all its diverse offerings, being mostly about third-party services such as Yahoo Pipes and Amazon Web Services with which I am already familiar. I therefore went instead to what proved to be a fascinating session on programming REST (REpresentational State Transfer). Peter Rodgers of 1060 Research spoke about his NetKernel, which is a kind of REST runtime. “I’m typing byte code”, he explained, as he put together URI strings that performed various operations. He observed that much computing can be reduced to doing something to some resource with another resource, and that this can be expressed as a URI. Here’s an example:


In effect this is functional programming via URIs.

Unfortunately I had to leave a little before the end of the session; but one of the points I notice from the 1060 research site is that URI-based programming is tailor-made for caching results, with potentially improved performance.

A thought-provoking session; my quick reaction is that he may be onto something.

The session was packed; I’m not sure if this is because folk were interested specifically in NetKernel, or whether like me they just went along because REST is a focus of activity right now.

Technorati tags: , ,

Erich Gamma on Eclipse and Jazz

Erich Gamma spoke at Qcon London on the subject of “How Eclipse changed my views on software development.” Or did he? This was a somewhat schizophrenic talk; in part an articulation of general development principles, and in part a description of how Eclipse is developed. Gamma spelt out the Eclipse philosophy, the starting point being that everything is a a plug-in; that APIs matter a lot and its better to get a small API right rather than get it wrong and have to support it for ever.

He then talked about iteration, a key tenet of agile development. He showed a great slide which charted the progress of some projects, from “all the time in the world” at the beginning, to “say goodbye to your loved ones” at the end, followed by total exhaustion after the thing is shipped. Iterative development with continuous builds and sign-offs every 6 weeks is less stressful and more productive.

It’s a great point, but does this work in every instance? What if you have a game to ship for the Christmas market?

He also talked about the benefits of open source development: transparency between developers and customers, critical mass of community activity, frequent feedback, and so on. Nothing new here; but perhaps this simply demonstrates the extent to which the merits of the open source model have become accepted.

Gamma then focused more sharply on Eclipse. He says there is a major new release every year, and they don’t want to ship in the summer or near Christmas, so they ship in June.

He described how the Eclipse project manages its large international team. It comes down to components: developers are divided into teams on specific sites, and each team manages one or more components, and has its own process for planning, building and testing. A weekly integration build prevents incompatibilities between components from getting out of control.

Towards the end of his session, Gamma gives us a tour of Jazz, IBM’s open source but commercial project for collaborative software development. Interesting, but I’m not sure that this product pitch belonged in a talk that was billed as something more general.

Overall: good insight into how Eclipse comes together, but not too exciting. I don’t envy these guys who face heightened expectations because of significant contributions they have delivered in the past. Nobody can change the world daily.

Technorati tags: , , , ,

QCon London

Today I’m at QCon in London. I enjoyed this conference last year, when among other things I got the scoop on Microsoft’s Volta (then LINQ 2). First up this year is Erich Gamma of Design Patterns and JUnit fame, who will be talking about how Eclipse has influenced his view of software development (others would talk about how Gamma has influenced Eclipse). I’m also intrigued by what Google’s Gregor Hohpe is going to say about “The Cloud as the new middleware platform.” It’s going to be an interesting contrast to Microsoft’s Mix08 conference last week. Be sure I’ll be reporting back here; or if you’re here too, by all means get in touch.

Technorati tags: , , ,

Mix08 is all online

Microsoft has put the sessions from Mix08 online. You can stream them with Silverlight, or hit the download button to save them in WMV or MP4 (“for iPod”). The quality of the sessions I’ve attended or watched was uniformly high, so I recommend these if you have any interest in Microsoft’s web development plans. In particular, the sessions on IE8 and Silverlight deliver lots of new information.

Technorati tags: ,

Help! My app only works maximized

A built-in feature of Windows Forms applications is that the main window remembers its size and position. Normally this is an OK feature. If you had your app sized small and in the bottom left of the screen last time you used it, it opens at the same place next time.

Unfortunately, perhaps because of a bug somewhere in Windows or somewhere in Windows Forms, this can go wrong. What happens is that somehow your app saves negative position coordinates and in effect disappears. The application icon appears on the taskbar, but if you click on it the app still doesn’t appear. The workaround is to right-click the taskbar icon and choose Maximize. Then the app appears full-screen. However, you can’t resize a maximized app, and when you hit “Restore down”, your app disappears again.

One possibility is to figure out where the app writes its old position. Somewhere in the registry, or in an XML config file somewhere? You tell me. So here’s another workaround. Display the app normally, so you can’t see it but it isn’t actually minimized. At this point, the focus is on the app. Hit Alt+Spacebar to display the window menu. Because of some quirk in Windows, this seems to appear on the visible screen, even if the rest of the app does not. Now press M for “Move”, hold the left mouse button down, and drag the app to where you can see it. Sounds strange? Sure, but it worked for me. Thank goodness for keyboard shortcuts.