overwatering.org

blog

about

Thanks to the mobile explosion, for the first time in 15 years, as an industry, we’re writing rich, complex, stateful client applications. But I don’t believe we’re yet looking at this as part of a broader trend. When I sample the general vibe of the tech world, I see grudging acceptance that we need better tools to write the complex front-end apps we now write, and genuine excitement about new technologies and approaches to back-end systems.

Grudging acceptance of tools such as AngularJS and iOS. Excitement about MongoDB and data science.

With mobile apps running on sophisticated devices and complex JavaScript single-page apps, I think we’re on the verge of seeing a shift in system architecture. A possible future would have inter-connected heterogeneous apps, communicating directly around a collection of central systems-of-record.

In the last 15 years I’ve written my fair share of .NET WinForm apps, MacOS X desktop apps, command line apps and even some Win32 apps. As, I’m sure, have most of you reading. When I say ‘as an industry’, I mean where the world of software engineering is devoting its group-thinking, -writing and -problem-solving. We’ve got a pretty great shared pattern language for web and back-end systems, but we’re having to re-discover knowledge from sometime ago to build apps.

Which is, interestingly, what the Plan9 fans said about REST when it became big news.

A possibility is that this is just a temporary glitch as a result of most people currently having high-powered client devices in their pockets. Maybe as the pendulum swings back, we’ll revert to writing the sort of systems typified by most web apps.

But I don’t think it’s going to smoothly swing back to the world we were familiar with. Or it doesn’t have to. Apps can be more than just clients.

This might just be a long-winded way of saying ‘The Internet of Things could be closer than we think.’

What will these systems look like? Central RESTful systems-of-record storing data with applications consuming these services and sharing events and changes directly across peer-to-peer and event sourced ad-hoc networks, using protocols such as XMPP.

Personally, I’m quite excited about what’s possible with these new architectures.