| A Blog About... |
REST,
Publish / Subscribe,
Atom,
Microformats,
Semantic Web,
Event-Driven Architectures,
P2P,
Web 2.0,
Mobile 2.0,
Ajax,
JSON,
YAML,
Identity,
Copyright,
Multimedia,
Cyberspace.
|
...taking programming beyond: Threads, Message Queues, Client-Server, CORBA, Web Services, SOAs, Agents, Synchronous Architectures, Imperative Programming - and even Applications, Desktops and Documents |
| Duncan Cragg... |
| ...works for ThoughtWorks UK; originally from April 2002 to July 2007 and now recently re-joined. Previously worked as a Web Architect for the Financial Times. |
| ...went to both UCL and Imperial College of the University of London (in the Eighties); specialising in Logic during his MSc. |
| ...wonders when his LinkedIn Account will be useful |
...has a phone-cam, and used it on himself once, just before his weekly shave:
 |
| ...can be contacted by
|
|
| |
| |
January 26, 2010 13:46
Right, I'm pleased to say that I've now implemented enough of the
Fjord language
on Node.js to be able to run the
Instrument example
that I introduced it with. As yet, this runs in memory only - i.e., no disk, no
network.
Here's the code on GitHub with tests
that show how it works. The language has changed a little so I'll show the example here
again, copied over from the test code, in order to explain the differences.
...
January 6, 2010 17:03
Well, I've put together the first few lines of Fjord, implemented on Node.js.
Here's the description on GitHub: Fjord is a language for expressing domain logic as match-rewrite functions over mashable JSON Web objects.
I'm developing Fjord very openly, in the hope someone out there will be interested in getting involved in helping guide its design and implementation. I suppose code speaks louder than blog posts.
...
December 11, 2009 08:22
Following on from my recent article where I
derived FOREST,
this article offers the beginnings of a JSON unification and rewriting language that
can be used in a FOREST architecture.
Why JSON, not XHTML, now? Well, I recently discovered that
JSON is overtaking XHTML
in interest, and I was further inspired by Kris Zyp's recent announcement of his
JSON Schema
Internet-Draft.
Fjord is a language for describing how the state of a JSON resource at any time depends
on both its current state and on the state of other JSON resources that it links to via
hyperlinks.
Fjord is a Norwegian word, probably pronounced 'fiyourd', and might stand for some
combination of the words: 'Functional JSON Object/Observer Resource/Rule/Rewrite
Dependencies/Declarations'. Or maybe it's just because they're
truly awesome, an' I wanna go.
Fjord also gives me an opportunity to show some examples of the "end-user" view of a FOREST
interaction; starting with a simple finance example.
...
November 25, 2009 21:29
Say we want to integrate multiple applications which handle order processing. OK, that's
got to be one of the dullest starts to a blog post. Never mind, bear with me...
So, we have applications on separate servers for handling and driving data such as
orders, product descriptions and catalogues, stock lists, price lists, tracking, packing
notes and delivery notes, invoices, payments, etc.
We may choose an SOA approach, of course. But let's say our sponsors have heard of this
cheaper alternative: REST! Which to them means 'using Web technology to save money'.
Now .. suppose we push the time slider right back to before Mark Baker and the SOA -vs-
REST Wars - or the 'SOAP -vs- REST Wars' as people naively called it. To when REST was
simply (!) a description of the Web's architectural style...
What if we revisit the applicability of the Web, and its abstraction into REST, to the
architecture of machine-to-machine distributed systems - to something like our order
processing integration?
I think we'd quickly arrive at something that looks more like
FOREST
than, say, AtomPub...
...
October 9, 2009 17:14
Updated: October 11, 2009 11:46
Since the day in 2006 that our
dialogue
took place with an imaginary eBay Architect, he has been promoted to imaginary
Enterprise Architect in an investment bank! Convinced by the merits of REST, he took
his enthusiasm for it into his new job and embarked on architecting a trading system
using REST or ROA as an alternative to SOA.
Now, he hit upon a snag: he had a REST "bank server" generating bids on an instrument
and POSTing them into that instrument's REST "market server". But then he had two
copies of his bid! One held by the bank server on one URI, and the other in a "bid
collection" held by the market server's instrument - on another URI.
He asked himself: "Which URI is the real one? Which host 'owns' the bid? Is the market's
copy just a cache? If so, why does it have a new URI? Why doesn't the market host know
the URI of the bank's original bid? Why can't servers become clients and just GET the
data that their own data depends upon?" The server seemed to be dominating the
conversation, not letting its 'client' server have a say in things.
Our worried Enterprise Architect noticed that such Service-Orientation permeated REST
practice: there were "REST APIs" to Web sites, or "Web services" with a small 's'. Even
AtomPub had a "service document"! Some patterns, like AtomPub, offered just simple
read/write data services through the full HTTP method set. Some simply used such a
read/write interface as a wrapper around more complex service functions.
He wondered: "Where's the Web in REST integration? The Web works great without PUT and
DELETE: isn't using GET on its own RESTful enough?"
So, remembering something I said about "Symmetric REST", he contacted me again...
...
October 6, 2009 10:28
- Functional Observer REST = Hyperdata Interdependency requiring Symmetric REST
- Hyperdata Interdependency = a resource's state is a Function of its linked resource context
- Symmetric REST = servers become clients in order to Observe the dependencies of their resources
...
August 13, 2009 11:43
In an exclusive nine-part dialogue with an imaginary eBay
Architect, we present an accessible discussion of the
REST vs. SOA issue.
Although eBay have what they call a 'REST' interface, it is, in
fact, a
STREST
interface, and only works for a few of the many function calls
that they make available via SOAP.
In this dialogue series,
I argue the case for eBay to adopt a truly REST approach to
their integration API.
Part 9: Web Objects Ask, They Never Tell
...
July 16, 2009 16:16
In an exclusive nine-part dialogue with an imaginary eBay
Architect, we present an accessible discussion of the
REST vs. SOA issue.
Although eBay have what they call a 'REST' interface, it is, in
fact, a
STREST
interface, and only works for a few of the many function calls
that they make available via SOAP.
In this dialogue series,
I argue the case for eBay to adopt a truly REST approach to
their integration API.
Part 8: WS-Are-You-Sure (Security, Reliable Messaging and Transactions)
...
April 6, 2009 17:40
The mobile world has been thrown into turmoil by the iPhone, and everyone is scrambling to
get onto the touch-and-app-store bandwagon and to innovate their way ahead.
These are interesting times. For example, thanks to a remarkable move by Nokia,
Symbian is now going to be made Open Source over the next
year or so, joining Linux as one of the big two Open Source mobile operating systems.
There has recently been some
discussion at CTIA
about what should be the focus of the newly-formed
Symbian Foundation - steward of this complex operating system
and its S60 wrappers. Should it jump on the iPhone bandwagon?
I believe that the Symbian Foundation should in fact use Linux, not the iPhone, as its
reference standard when setting priorities...
...
February 11, 2009 16:20
Mobile Monday London
met last night to discuss the Mobile Web and Widgets. It was an engaging and
thought-provoking evening.
Your intrepid reporter was there and, in spite of the crashing of his sad, clunky old
Windows Mobile Xperia X1, losing all his notes, he brings you this hot report from
right out of his memory (somewhat steamed up by subsequent socialising, but reclarified by
Google).
After that, I give an explanation of why I believe that Widgets are not the solution
to what Mobile 2.0 needs...
...
December 19, 2008 17:05
Mobiles are unique - if you want to miss out on the opportunity they represent, you
could choose to see them as just slow computers with tiny interfaces and dodgy Internet
connections. Then try to squeeze in your traditional applications; try squeezing the
office desktop metaphor with its sedentary documents into a device the size of a mouse!
Alternatively, see them as the most personal, social and dynamic of devices that are
becoming connected to the Internet. Now a multi-billion-scale global opportunity opens
up to you. That's customers and dollars! In trying to grasp this, some are calling
it 'Mobile 2.0', by analogy with its sibling, Web 2.0.
In that light, the Killer App for Mobile 2.0 is the sharer, masher and updater of
People, Things, Times and Places... The key to getting Mobile 2.0 right is for it to
merge seamlessly into our lives. That means the handling of dynamic and shared data
becomes the top priority, even above the handling of applications.
This article describes a Mobile 2.0 platform that makes people and their stuff first
class - not applications.
...
December 11, 2008 11:45
In an exclusive nine-part dialogue with an imaginary eBay
Architect, we present an accessible discussion of the
REST vs. SOA issue.
Although eBay have what they call a 'REST' interface, it is, in
fact, a
STREST
interface, and only works for a few of the many function calls
that they make available via SOAP.
In this dialogue series,
I argue the case for eBay to adopt a truly REST approach to
their integration API.
Part 7: Business Conversations
...
July 18, 2008 19:49
Since the
announcement
by
IBM
and
Linden Lab
that
OpenSim
can talk to
Second Life,
I've been thinking again about RESTful Virtual Reality.
I'm not the first, of course. Others have been motivated by the same
goal: To bring the Web's scalability, linkability and interoperability
into Virtual World platforms.
Ultimately, how to use the same techniques as the Web to link
Virtual Worlds together into a single, massive 'Virtual Universe'.
Here's how I would architect the Universe Web...
...
February 16, 2008 23:44
In an exclusive nine-part dialogue with an imaginary eBay
Architect, we present an accessible discussion of the
REST vs. SOA issue.
Although eBay have what they call a 'REST' interface, it is, in
fact, a
STREST
interface, and only works for a few of the many function calls
that they make available via SOAP (GetSearchResults, GetItem,
GetCategoryListings, etc).
In this dialogue series,
I argue the case for eBay to adopt a truly REST approach to
their integration API.
Part 6: Content-Types and URIs
...
October 5, 2007 11:22
Last night's
Google London Open Source Jam
(also here)
was on the subject of the 'Web' (didn't they invent that? Oh no,
that was Microsoft).
This event has been getting better and better each time I've
attended. There were some very interesting lightning talks held
together with a tight structure and plenty of chance to chat,
drink cold Leffe and eat cold pizza. And nick [transatlantic
translation: 'steal'] the
Green & Black's chocolate.
An ideal Micro Conference...
...
June 26, 2007 15:17
Web 2.0's definition
includes seeing the Web as an application platform. Which means it
is in competition with Java and .Net, and with SOA, for both local
and widely distributed applications.
If the Web is going to be a platform, the skills you need to learn
to program it are the core Web 2.0 technologies such as Ajax, JSON,
Atom, Microformats and OpenID.
And Ruby. This language, that's capturing the hearts of many Web 2.0
programmers, is ideal for easing the transition from the Java
and .Net platforms to the Web platform, as I will show.
Even if you're part of a big company that is generally immune to the
latest trends, the marriage of Ruby and the Web-as-platform may be
something to prepare for. It could even displace your SOA agenda...
...
June 20, 2007 22:42
In an exclusive nine-part dialogue with an imaginary eBay
Architect, we present an accessible discussion of the
REST vs. SOA issue.
Although eBay have what they call a 'REST' interface, it is, in
fact, a
STREST
interface, and only works for a few of the many function calls
that they make available via SOAP (GetSearchResults, GetItem,
GetCategoryListings, etc).
In this dialogue series,
I argue the case for eBay to adopt a truly REST approach to
their integration API.
Part 5: The Distributed Observer Pattern
...
April 8, 2007 13:38
In an exclusive nine-part dialogue with an imaginary eBay
Architect, we present an accessible discussion of the
REST vs. SOA issue.
Although eBay have what they call a 'REST' interface, it is, in
fact, a
STREST
interface, and only works for a few of the many function calls
that they make available via SOAP (GetSearchResults, GetItem,
GetCategoryListings, etc).
In this dialogue series,
I argue the case for eBay to adopt a truly REST approach to
their integration API.
Part 4: Inter-Enterprise REST Integration
...
January 18, 2007 11:12
What do all the MAJOR Web 2.0 technologies of 2007 have in
common?
Let me list them first:
M.icroformats (including tags)
A.jax (including Comet)
J.SON (plus YAML)
O.penID (plus SXIP, LID, Yadis)
R.EST (including Atom, APP)
What these technologies have in common is that they're
all lighter than their competitors:
Microformats | Lighter than the Semantic Web |
Ajax | Lighter than Fat Client (!) |
JSON | Lighter than XML |
OpenID | Lighter than SAML/Liberty Alliance |
REST | Lighter than SOA |
...
January 10, 2007 14:21
In an exclusive nine-part dialogue with an imaginary eBay
Architect, we present an accessible discussion of the
REST vs. SOA issue.
Although eBay have what they call a 'REST' interface, it is, in
fact, a
STREST
interface, and only works for a few of the many function calls
that they make available via SOAP (GetSearchResults, GetItem,
GetCategoryListings, etc).
In this dialogue series,
I argue the case for eBay to adopt a truly REST approach to
their integration API.
Part 3: Business Functions
...
December 14, 2006 14:15
There were two things I knew about eBay's Architecture - that
they use J2EE and that they seem to like SOA. Both are
approaches I give, ahem, special mention to on all my pages at
the bottom of the left-hand column.
So it was with some apprehension that I opened up
this
(PDF) slide pack from
Dan Pritchett
and Randy Shoup of eBay, presented at
SD Forum 2006 recently.
I was expecting my prejudices around the issues and techniques of scaling web sites
to be challenged, at least.
...
November 15, 2006 23:37
In an exclusive nine-part dialogue with an imaginary eBay
Architect, we present an accessible discussion of the
REST vs. SOA issue.
Although eBay have what they call a 'REST' interface, it is, in
fact, a
STREST
interface, and only works for one of the many function calls
that they make available via SOAP (GetSearchResults).
In this dialogue series,
I argue the case for eBay to adopt a truly REST approach to
their integration API.
Part 2: Setting Data
...
November 14, 2006 00:05
In an exclusive nine-part dialogue with an imaginary eBay
Architect, we present an accessible discussion of the
REST vs. SOA issue.
Although eBay have what they call a 'REST' interface, it is, in
fact, a
STREST
interface, and only works for one of the many function calls
that they make available via SOAP (GetSearchResults).
In this dialogue series,
I argue the case for eBay to adopt a truly REST approach to
their integration API.
Part 1: Getting Data
...
July 13, 2006 14:33
Don't write your interactive Web application in custom
Javascript! The Web's Declarative nature needn't be
broken just because you want two-way dynamic data instead of
one-way documents on your site.
Instead, write Declaratively to generic Javascripts, plugins
and browser features such as
Hijax,
hInclude,
XForms,
SVG, XBL, etc.
...
June 23, 2006 17:58
Open Data ..
has ..
recently ..
been..
all ..
over ..
the ..
blog ..
o ..
sphere!
Openness is a classic Us-and-Them issue. Big, nasty
Apple/MySpace/Flickr is trying to control what little
me/SingleStatus/Zoomr can do with my/our own stuff.
Open Data vs. Closed; Open Source vs. Proprietary; P2P vs. DRM;
privacy vs. surveillance. The battles between the freedom of
the pioneer, the individual and the minority against the rules
and stability of the establishment and the majority form the
endless shape of human history.
Us beating Them is Hollywood's favourite subject on-screen -
and ironically Them fighting Us Hollywood's favourite battle
off-screen.
As an Us-and-Them issue, with Us less powerful than Them, it's
also tempting to give up and to follow the crowd - to do what
we're told, to not ask for or sieze the privacy and open data
we feel entitled to.
However, at XTech 2006 recently, there was a set of talks on
the subject with a more positive approach.
...
June 15, 2006 00:30
It gives me great pleasure to announce the 2006 'What Now How'
Awards for REST Protocols (or 'APIs') in the Read/Write
Category.
All this year's awardees share the distinction of being truly
worthy of the 'REST' label; these Read/Write Protocols are
acknowledged here for their uncompromising adherence to the
simple principles of the World Wide Web.
...
June 7, 2006 19:10
Microformats are subversive:
they not only challenge the approach of full-blown Semantic Web
approaches, but even question fundamental Web 2.0 building
blocks such as Web Feeds and Web APIs.
I recently attended
XTech 2006,
where there were a few talks related to Microformats.
After summarising these talks, I'll finish with my shocking
revelations about the subversive nature of Microformats!
...
May 25, 2006 19:05
The vast majority of supposedly 'REST' Web APIs are simply
abusing HTTP to carry function calls. I call
these APIs 'Service-Trampled REST', or STREST.
STREST APIs come with specific costs which could stifle
the two-way data Web (Web2.0) if allowed to propagate
unchecked. Although 'mashability' is a supposed benefit of the
current proliferation of APIs, true interoperability and
scalability can only be guaranteed by true REST interaction.
This is not an academic, purist or aesthetic stance, but one
based on practical consequences, as I will explain.
...
May 17, 2006 00:27
Distributing an application over a network isn't just a case
of splitting it down a natural line and putting a network
in-between. What works in-process simply doesn't work so
well across the wire.
And just calling such an Internet version of application and
process interfaces 'Web' Services doesn't mean it has anything
at all to do with the Web, or that it in any way shares the
Web's scalability, flexibility and robustness.
Indeed, I claim that you cannot distribute without also
'inverting'; you have to face what I call the
'Imperative-to-Declarative Inversion', if you really want a
successful, scalable, distributed application.
Declarative Architectures such as REST (i.e. the Web, and now
'Web 2.0') dominate the broader Internet.
...
May 11, 2006 21:36
There is something about the Internet that nurtures open data,
and something about computers that nurtures closed. It is
often necessary, but often painful, to make the jump from local,
closed data to global, open data.
...
March 22, 2006 17:00
Declarative Architectures focus on the What, not the How, of programming. The How has dominated the field - perhaps 80% of programming is done in the traditional Imperative style, where we tell the computer How to do a task in explicit steps.
I'd like to show in this blog how Declarative Architectures and technologies are not just an interesting sideshow to the main Imperative attraction, but a complete and powerful programming alternative in their own right - indeed, one which has already dominated certain fields.
Imagine being able to simply express What we want the computer to do - to give it constraints and rules - then let it work out for itself How to achieve our goals.
I believe that saying What, not How, will become the dominant paradigm in programming.
...
|
| |
|
|