I wanted to take up a challenge Mike Migurski inadvertently laid down in comments the other day, in his response to my piece on the ongoing democratization of development for interactive systems.
I get where he’s coming from, especially his point about the moving-goalpost definition of “ease of use.” But I’m not convinced that there isn’t a whole lot further we could take tools like App Inventor toward making them painless for ordinary people to use, and I think — if you’ll forgive me, Mike — he’s mistaking my point about alternatives to the app paradigm. (It’s a little inside-baseball, but in brief: I acknowledge that the contemporary thrust of development is about things that happen in the browser, and that many “apps” are essentially specialized browsers. I just happen to believe that, despite the relative accessibility of tools like Apple’s iOS SDK, this whole model is still unnecessarily intimidating, and based on paradigms most users simply won’t get.)
So I thought I’d try a little thought experiment, to see if I couldn’t do a better job of getting my point across. I thought I’d start with a real, non-technically-inclined person, my mom, and a real challenge she used to confront on a several-times-a-month basis. And then I tried to imagine a toolkit which would allow her — as she is, and with little or no additional training — to build a custom module of functionality that would help her address this challenge, that she could use on an ad-hoc or near-realtime basis, and that would effectively lower the net frustration she experienced.
I have to say, right up front, that what I came up with is heavily, heavily dependent on circumstances which might never come to be. It posits a world in which there are widely-shared specifications for the description of networked objects we might encounter, whether those objects are people, places, things, or other kinds of system resources. And, of course, the open, shared, widely-adopted interoperability frameworks and standards that would allow us to bind these resources together and animate their interaction in useful ways. This, to put it mildly, is not the world we live in today. But it’s a world I’d like to see come to life, and if the best way to predict the future is to invent it, well: here’s my shot.
This is the use case. My mom lives in the Princeton, NJ area, a reasonably typical sweep of American suburbia that’s almost entirely predicated on automobility. Somewhere between two and five times a month, though, on a not-always-predictable basis, she has to drive to the nearest New Jersey Transit station, Princeton Junction, and there catch the train into New York City. Between the routine congestion of the area, the vagaries of the NJT timetable, and the hassle of finding parking at the station, she’s generally hugely stressed out by having to predict from among the available options the routing that will get her to the station in time, let her find a place to park, buy a ticket, and catch a given train. Our meetings in New York are generally subject to a back-and-forth flurry of last-minute phone calls: which train is she aiming for? What’s the traffic situation on Route 206? How about Route 1? Which train did she actually make? It’s not much fun, on either end, and yet something like this is how a great many people go about suturing their lives together, even in an age when information about most of the particulars here (time, location, traffic, timetable) exists, and is readily accessible from the device she has in her pocket.
Now my mom is not, in the slightest, a stupid woman. She just doesn’t like “technology.” And although she’s comfortable with (even delighted by) the iPhone UI, like a great many people she’s not the kind of person who’s going to switch back and forth between a Google Maps app and a New Jersey Transit app and whatever else she needs to come up with a relevant answer. So not only do I want to give her a single tool that offers her just the information she needs, and nothing else, but I want to give her the power to build that tool herself, so it speaks to her in something approaching her own voice.
What you see in this PDF, therefore, is a schematic representation of a constellation of plug-and-play objects she’d be choosing from and fusing together to make her ad-hoc service. Each of these objects is represented by a graphic icon and each is characterized under the surface by an arbitrary number of attributes and (inherent, dynamic and relational) attribute values. By selecting high-level, self-describing objects relevant to what she wants to do, and then using an enhanced text editor to compose what is effectively a rebus providing operators for these arguments, someone like my mom — with no technical background, or interest in or inclination toward acquiring one — can make herself a highly useful module of functionality, suited to her immediate and particular needs. She could even bundle it into a wrapper and upload it back to the network, either for someone else in nearly-identical circumstances to use as-is, or for others to deconstruct and rebuild according to their own requirements, given objects more relevant to their own local conditions.
Is it “an app”? No, not really. It’s something more, and less. It’s “just” a natural-language, textual interface layer to some reasonably complicated multivariate calculations running in the background. And in this telling of things, anyway, she built this layer herself, from available modular components fused together in an exceedingly lightweight, “intuitive” development environment. (You, Mike and the baby Jesus will have to forgive me: I’ve represented these components as something resembling Legos.)
Now I’m always a little concerned, when pushing something like this out, that I’m making myself look like that grizzled guy we’ve all encountered, wedged into a booth at All-Nite Donuts, guzzling serial cups of black coffee and scrawling his incoherent Grand Unified Theory of Everything across a stack of sweat-wrinkled legal pads. Nobody is more aware than me that there are holes in this schema you could drive a Northeast Corridor commuter train through. But I think it does a better job than I’ve yet been able to manage on two counts:
- It makes a better case than I was able to previously, regarding how easy the composition of complex functionality can and ought to be;
- And it lays out in black and white just what geomorphic feats of heavy lifting need to be taken care of in the background before any such vision could come to pass.
The things which I’ve painted as trivial here are admittedly anything but. But they are, I sincerely believe, how we’re going to handle — have to handle — the human interface to this so-called Internet of Things we keep talking about. Each of the networked resources in the world, whether location or service or object or human being, is going to have to be characterized in a consistent, natural, interoperable way, and we’re going to have to offer folks equally high-level environments for process composition using these resources. We’re going to have to devise architectures and frameworks that let ordinary people everywhere interact with all the networked power that is everywhere around them, and do so in a way that doesn’t add to their existing burden of hassle and care.
Momcomp, in other words. It’s an idea whose time I believe has come.
***
I hope you enjoy the PDF I ginned up to illustrate my above contentions. You’re free to take and use and rework it in any way you want and for what purpose you will, just so long as the use is noncommercial and you identify me as the source author. You can find the full terms of the Creative Commons license under which it’s provided to you here.
I’m shutting down threaded comments, by the way; regrettably, this otherwise-lovely theme doesn’t handle them particularly well. This has the particularly irritating consequence of rendering existing threaded discussions all but incoherent, for which I apologize. I’ve written to the theme author to see if there may be a solution. In the meantime, please try to make do. Thanks.
A completely off-the-cuff comment, but couldn’t you accomplish quite a bit of this in Pipes, like, today?
Sadly, no. Pipes, as far as I’ve always understood it, is solely for wrangling RSS feeds; something like this Pipe displaying transit stations in the greater Toronto area is as close as you can get.
And that’s not very close at all, right? In fact, it’s not at all clear to me why this person chose not to compile and present this information as a Google Map.
From so many sides of life’s disciplines and studies, I’m seeing some really smart people ask for what you put here as the type of innovation that needs to be happening around us. I think personally, that my own dissension with media and what passes as new/innovative is the opposite of what you seek to address here.
Reading your PDF, and smiling as there are just too few companies and developers who see things as point-and-do, I too wonder when we’ll get to a point of “programming” being less a matter of code and tools, and more a matter of “give me the data and I’ll make out of it what suits my needs best.”
You may be interested in Mark Newman and Ame Elliott’s work on “end user composition”: http://trevor.typepad.com/files/pervasive08-newman-oscar-authver.pdf
(fair disclosure: I engineered their research prototypes but the tech part is forgettable so it’s not entirely shameless self-promotion)
I’m not sure if you’ve ever looked much at the Python programming language, but one of its top-line features is “batteries included”, shorthand for the idea that the standard library should address pretty much any data format or common external technology you’re likely to encounter. If you want to work with XML or encrypt stuff, Python’s developers have got you covered.
What’s stands out in your MomComp proposal is that the utilities you describe aren’t really code problems at all, but data problems. They require a third party to be present: road networks, traffic conditions, train schedules, and parking availability are needed in just the minimal example you’ve put together. It’s an interesting political twist, taking the tired, old question of whether code is open to all or just an elite priesthood to enlightened developers, and flipping it around to make data availability the core question. How could those lego blocks possibly work, if NJ Transit wasn’t interested in making the schedules available?.
To me, code is no longer the relevant frontier of openness and availability: open source basically won this fight about ten years ago, and I can think of no professional interest group more motivated to make their skills and tools widely available and useful than programmers. The current frontier is data, most precisely the universe of privacy and safety concerns around information from governments and public authorities. It’s been a few years since Sean Gorman had his thesis classified and transit providers at the very least are warming to the idea that making schedules available in a useful format isn’t a terrorist threat, but the idea that data is the public good is only slowly gaining acceptance over today’s dominant application-centric mentality.
The critical path for MomComp is not a lack of programming tools, it’s availability of relevant data and some higher-level sense of how they fit together.
As I understand it, Yahoo! Pipes is still just RSS.
I can’t think of anything like what Adam’s described here: a visual programming environment built around aggregating information from XML and APIs for personal use.
There are some similar things being done for other purposes, for example things being created for business users. JackBe’s Preso Wires and Enterprise Apps stuff is a good example. http://www.jackbe.com/products/wires.php http://www.jackbe.com/products/apps.php
Here’s what Wires looks like:
http://www.jackbe.com/images/presto_20/wires_lg.jpg
I haven’t used any of this stuff myself, so I don’t know how easy it is, but it looks like a step in the right direction at the very least.
As Michal mentioned in the comments for the other post, there’s stuff like MAX/MSP and Apple’s Quartz Composer for multimedia.
There’s a list of visual programming languages here: http://en.wikipedia.org/wiki/Visual_programming
I like that Adam doesn’t use the wire metaphor. In the electronic sound manipulation world, connecting up different gadgets with virtual cables was fun at first, but it gets tedious. Ableton Live’s effects chains can be a lot more coherent.
Well, Apple’s Automator isn’t so different from what Adam’s proposed here, down to the rebus-style filling in of the details in some cases. If Automator exposed a couple more things (get the user’s current location, for example), you could string a few of these steps together there. (Automator’s continued to get better every OS update, btw, some really cool things in there now, like being able to make Printer plugins).
Someone to check out who’s done quite a bit of data mashup stuff like this–using relatively easy stuff like Google Docs spreadsheets–is Tony Hirst. For example, Google Spreadsheets as a database, or Data scraping wikipedia with Google Spreadsheets.
Adam, I was excited to see your mockup, though I was disappointed that we didn’t get to see a concrete picture of your rebus text editor.
As someone who once built a boxes-and-lines visual programming environment, in the end I’m not sure how easily the average “mom” could be led to think with the rigorous logic of a programmer, no matter how much the task is dressed up using English-like statements, appealing bricks, or lovingly simulated patch cable physics. Specifically, the layperson needs to climb up a steep learning curve to even have a clear understanding of what they could reasonably ask of such a system.
Is that why systems like Automator, Pipes, Popfly, and the mothballed Google Mashup Editor never seem to have caught on? Maybe they were still too abstract for a layperson, and yet didn’t provide enough flexibility for developers.
Perhaps LittleBigPlanet was more successful at getting people to play around with simple logic in a less threatening environment, and yet the existence of a few savants building dizzyingly complex mechanical calculators still doesn’t make it a success at democratizing programming.
If it were that easy, would we still have a whole industry of people who charge thousands to make your home entertainment center do what you want it to in a few button presses?
This all sounds more negative than I’d like, because I genuinely would like to believe, like you, in a future with less of a need for the technical priesthood. And yet in the decades that we’ve been talking about visual programming, I’ve been disappointed in the lack of substantial progress towards something that laypeople would enjoy using regularly.
To address the “backend” part of your mockup, I agree with Michal that this is largely a data availability problem, which is to say, a cultural/organizational problem. Given what we’ve accomplished in public transport over the past few years, I’m more optimistic about this part.
Coincidentally I’ve been mocking up a few personalized widgets like your momcomp use case recently, and I’ve run into the galling lack of APIs that could give you predigested functionality for actions like “compute the estimated drive time with traffic delay between A and B”, “generate the list of next times at which I can take this specific combination of transit routes between A and B”, and “buy me a ticket for X”.
This makes me wonder: what do we need to build to induce these pieces of the puzzle into existence?
I don’t know, Joe, but I have a sneaking suspicion I’m going to be spending the next few years of my career finding out. : . )
I love the discussion and I know you acknowledge there are still big holes to be filled, but… isn’t the red part in your pdf the hard part? I hate to be the one to switch metaphors from lego to food but to put it another way the PDF is the equivalent of a list of ingredients and a picture of a finished dish. Where’s the recipe?
Maybe you’re saying we need to make the ingredients so simple (pizza base, jar of sauce, grated cheese, sliced pepperoni) that assembling the finished result is trivial?
As Joe points out (and he would know) right now the predigested* functionality is rarely if ever available. Massaging the data for general purposes – to the point where anyone can recombine it into a useful tool – is the only thing harder than writing the specific code yourself in the red box.
It’d probably be worth looking at what the specific (not generalized) code looks like for this kind of problem. Paul Hammond’s minimuni offers one view into this http://minimuni.paulhammond.org/about/ – since he made it, the data became available so the bulk of the scraping code is redundant. We are moving in the right direction!
* predigested functionality = MommaBirdComp?
[I]sn’t the red part in your pdf the hard part?
Honestly, Tom, I think they’re all hard parts. But I don’t think what happens inside the black (or in this case, red) box need be as mysterioso as all that if the objects themselves are characterized usefully.
To me, that is the real paving-the-world-in-soft-soft-leather aspect of this scenario. If anything’s implausible, it’s getting to scale with agreed-upon interoperability standards for object description (and object-descriptor editors, etc.). I’ve watched with interest how initiatives like Microformats have struggled uphill, for even relatively circumscribed and simple cases like calendar events, so don’t think I haven’t reckoned with the complexity of usefully describing fire hydrants and parking lots and apartment buildings.
But like you and Joe both point out, things are moving in the right direction, and doing so swiftly. In a mere eighteen months or so, I’ve seen the conversation evolve from simply calling for open data to helping institutions be savvier about what that implies, even toward a recognition that (in Usman Haque’s words) “it’s not about making the data public, it’s about the public making the data.”
So while I’d never make the mistake of thinking any of this will ever be easy, neither do I think it’s by any stretch of the imagination impossible. To me, ever since I started giving the domain any thought, in 2003 or so, it’s seemed inevitable that something like a Universal Object Descriptor format is going to have to come into existence, with however many classes are necessary to account for the range of object types we encounter in everyday life. And that any such format would have to be designed so its specified attributes have the appropriate semantic hooks, so other systems can grab onto the data encoded in each. (I guess you could think of this as providing for ad-hoc APIs, if that’s not crunked-out babble from a well-meaning amateur.)
I’d rather these descriptor specifications be written by a community that has user experience and something resembling the Momcomp use case very much in mind, so whatever “UOD” comes into existence is as covered with hooks as burdock. Then things in the world recombine, densify, “can’t help but make infrastructure.”
That’d be my hope, anyway, and perversely enough it’s something I think is worth working for. I get how much I have to learn here, how naive a lot of this sounds. But sometimes — sometimes — naivete means not having to take as givens the things which hold the good back.
[...] Adam Greenfield是物联网领域的领先的思考者。我在今年早些的时候曾因他的新书《Everywhere》而采访过他。Greenfield最近写了一篇文章,来描述在不久的将来,一个不懂任何技术的普通人如何去使用网络。在这篇文章中他假想了一个这样的场景:她的妈妈使用”ad-hoc service“来制定一个坐火车去见她的孩子的行程,ad-hoc service使用了实时的互联网数据。 [...]
[...] Adam Greenfield是物联网领域的领先的思考者。我在今年早些的时候曾因他的新书《Everywhere》而采访过他。Greenfield最近写了一篇文章,来描述在不久的将来,一个不懂任何技术的普通人如何去使用网络。在这篇文章中他假想了一个这样的场景:她的妈妈使用”ad-hoc service“来制定一个坐火车去见她的孩子的行程,ad-hoc service使用了实时的互联网数据。 [...]
[...] Adam Greenfield是物联网领域的领先的思考者。我在今年早些的时候曾因他的新书《Everywhere》 而采访过他。Greenfield最近写了一篇文章,来描述在不久的将来,一个不懂任何技术的普通人如何去使用网络。在这篇文章中他假想了一个这样的场景:她 的妈妈使用”ad-hoc service“来制定一个坐火车去见她的孩子的行程,ad-hoc service使用了实时的互联网数据。 [...]
[...] 切换搜索引擎 首页 > IT资讯 > 迈过社会化网络:互联网的新时代迈过社会化网络:互联网的新时代 2010年7月22日 评论 发表评论 document.write(VK.Share.button( { url: 'http://keynesfeed.com/it%e8%b5%84%e8%ae%af/%e8%bf%88%e8%bf%87%e7%a4%be%e4%bc%9a%e5%8c%96%e7%bd%91%e7%bb%9c%ef%bc%9a%e4%ba%92%e8%81%94%e7%bd%91%e7%9a%84%e6%96%b0%e6%97%b6%e4%bb%a3.html', title: '迈过社会化网络:互联网的新时代', description: '先来看一篇文章,关于过去的网络,2003年的时候,我开始尝试着去定义一个新的网络模型:在这种新型网络上人们可以很容易的创建内容,就像他们阅读内容那样。这种潮流慢慢发展壮大,最后被称为Web 2.0,或者叫社会化网络。随着诸如博客和社交网站的兴起,这…', , noparse: true }, { type: 'round', text: 'Save' })); 先来看一篇文章,关于过去的网络,2003年的时候,我开始尝试着去定义一个新的网络模型:在这种新型网络上人们可以很容易的创建内容,就像他们阅读内容那样。这种潮流慢慢发展壮大,最后被称为Web 2.0,或者叫社会化网络。随着诸如博客和社交网站的兴起,这个概念变得十分流行。现在,社会化元素仍然在现在的网络世界里扮演着重要的角色,那些当前最重要的互联网网站,让你表达你的想法(Facebook),交流正在发生的事情(Twitter),或者记录你正在什么地方(Foursquare),都是社会化网络的一部分。但更重要的是,所有这些网站产生的数据和内容正越来越多的被用来为你提供个人化服务。数据信息越多,个人化服务就会越贴切。在这些源内容中,其中一些来自于我们所熟悉的社交网站,比如Facebook和Twitter,但更多的则来自于物联网( Internet of Things)和政府组织提供的数据。简而言之,现在的网络(read/write Web )已经不仅仅是社会化网络那么简单。如何迈过社会化网络那么,如何迈过现在的以社会化网络为主的阶段,进入到个人化服务的新时代?在Web2.0最繁荣的时候,我们开始渐渐的被越来越多的数据信息所包围。我们认为我们已经使用了足够多的数据信息了。我们在YouTube上看视频,在MySpace和Facebook上聊天,阅读博客,通过Twitter关注一些人。在2008年底,我们已经被如此之多的内容所淹没。我们该怎么做?到了2010年,我们依然在和越来越多扑面而来的数据信息奋斗着。但是实际上,从2009年起,事情有了一些改变。我们开始认识到,我们拥有的数据信息的数量多少并不重要,重要的是如何处理这些信息。社会化依然很重要,但对数据信息的处理正慢慢的变得更重要,因为这些数据信息,正变得可以被分析、过滤、综合和个人化。结构化数据和物联网两种新的潮流正在促使这种改变发生。首先,政府组织和个人正把越来越多的数据信息放到网络上。这其中的绝大部分数据都使用了诸如RDFa和microformats这样的语义网络(Semantic Web)技术进行了处理。换句话说,这些数据被特殊加工成了机器也可以读懂的内容。这样的例子有很多,比如最近的美国和英国的政府公开数据计划,Best Buy的店铺信息和Facebook的Open Graph同样使用了这种技术。另外,现在我们还有物联网。一个可以把现实生活中的东西和互联网通过诸如传感元件和RFID标签等连接在一起的新技术。所有你能想到的东西,车里的,家里的,路上的,都可以和互联网进行连接。随着越来越多的现实中的东西通过物联网技术和互联网连接,可以想象,我们所熟悉的互联网,即将迎来一次数据信息的大爆炸。我们如何使用这些数据信息社会化网络的信息,政府和企业公开的信息,以及所有通过传感器和RFID连接到互联网的现实生活中的事物的信息,所有这些加在一起,数量惊人。这其中的大部分数据并不应该直接拿来进行阅读或使用。如何过滤并重新组织这些数据信息使之最终变成个人化的信息,将是这些海量数据存在的价值所在。而现在,提供这样服务的网站并不多。Adam Greenfield是物联网领域的领先的思考者。我在今年早些的时候曾因他的新书《Everywhere》而采访过他。Greenfield最近写了一篇文章,来描述在不久的将来,一个不懂任何技术的普通人如何去使用网络。在这篇文章中他假想了一个这样的场景:她的妈妈使用”ad-hoc service“来制定一个坐火车去见她的孩子的行程,ad-hoc service使用了实时的互联网数据。而实际上,在现在,2010年,他的妈妈不得不通过几个不同的网站程序来查找和制定她的行程,其中好多她需要的信息甚至没法在网上找到。Greenfield设想在不久的将来,他的妈妈只要在她的手机上写下她的要求,然后手机的应用程序就可以显示出足够的实用的个人化信息。(译者注,现在有个应用叫http://siri.com/就提供类似的服务,这个网站刚刚被苹果收购)忘掉社会化吧,多想想如何使用现在的数据信息在Web 2.0时代,成功的网站大多具有社会化的元素在里面:YouTube,,MySpace 和 Flickr仅仅是一些早期的例子。而现在,从2009年初开始,关注的焦点已经从社会化转移到了数据驱动(data-driven )上面。成功的网站应该能够过滤、组织和个人化这些海量数据。如果我是一个公司老板或开发人员,我不会再去考虑社会化的东西了,我会去想如何利用现在的这么多的数据信息,然后在这之上构建新的东西。现在,有多到不可思议的机会正在等待着你。 现在,这个网络的新时代还没有被命名,这是一个好事情。可以肯定的是,现在的网络还是我们所熟悉的那个网络,只是现在你所接触的内容信息更多的来自于社会化网站之外了。现实生活中的事物,政府组织和商业机构的数据,虚拟的事物……无论是什么,你将慢慢的和越来越多的来自他们的内容信息纠缠在一起。来源:notus Shen Peng IT资讯 评论 (0) Trackbacks (0) 发表评论 Trackback 目前还没有任何评论. 目前还没有任何 trackbacks 和 pingbacks. [...]
[...] Adam Greenfield是物联网领域的领先的思考者。我在今年早些的时候曾因他的新书《Everywhere》而采访过他。Greenfield最近写了一篇文章,来描述在不久的将来,一个不懂任何技术的普通人如何去使用网络。在这篇文章中他假想了一个这样的场景:她的妈妈使用”ad-hoc service“来制定一个坐火车去见她的孩子的行程,ad-hoc service使用了实时的互联网数据。 [...]
[...] Adam Greenfield是物联网领域的领先的思考者。我在今年早些的时候曾因他的新书《Everywhere》而采访过他。Greenfield最近写了一篇文章,来描述在不久的将来,一个不懂任何技术的普通人如何去使用网络。在这篇文章中他假想了一个这样的场景:她的妈妈使用”ad-hoc service“来制定一个坐火车去见她的孩子的行程,ad-hoc service使用了实时的互联网数据。 [...]
[...] Every user a developer, part II, or: Momcomp « Adam Greenfield's Speedbird (tags: ux programming tool future ui design) [...]
[...] went on to propose the “Momcomp” as an example of what could be done with such a [...]
[...] is still around – it’s a web application framework closer to Ruby on Rails than Momcomp or JackBe. But I have to hand it to him, he was ahead of the times. Remember that Jobs’ [...]
I’m a bit late to the conversation, but I thought I’d share two things.
First off, Alan Kay (the inventor of Smalltalk and object-oriented programming) originally sought to create a programming environment for children. His experience teaching children object-oriented programming is quite informative.
Second, we might be able to side-step some of the technical complexities underpinning a system like this by involving people instead of relying entirely on machine learning. What if we built a game on top of it?