jducoeur: (Default)
jducoeur ([personal profile] jducoeur) wrote2012-10-18 02:23 pm
Entry tags:

A Few Minutes of Querki

There's a lot of grand vision to this project, and almost too many ideas and features to absorb. So rather than drowning folks in all of those details, let me describe a few minutes of what Querki is supposed to be like in practice. Keep in mind, nothing at all has been written yet, and it'll probably take a year for us to get all of the main pieces in place. But it's important to know where we're going. So here's a scenario showing what this system is supposed to feel like once it's all up and running.

A Few Minutes: My Cookbook

Last night's dinner was good -- I made soft tacos, and experimentally decided to make my own Pico de Gallo. It was tasty enough that it's worth writing down.

I open up Querki, which presents me with all of my Spaces: the Comic Book database, my Contact List, my Blog, and my Cookbook. I choose the latter, and it opens up. I didn't build the format of the Cookbook myself -- one of my friends did it a couple of months ago, and shared it as an App. I picked that up for myself, getting my own Cookbook, and have been moving all my recipes into it ever since.

I select "new Recipe", and get presented with a form. I fill in the fields that the Recipe model knows about: the name, how many it serves, and so on. It asks me for ingredients, one at a time, with the quantity of each. I give it a narrative of how to make the Pico, and hit "Save"; it shows me the newly-created Recipe, all neatly formatted. (My friend who built the Cookbook app did a good job with the formatting, so that the ingredients show up as two columns; I like that touch.)

Since Recipes have a Rating property, I can say how much I like this one. I give it four stars out of five: solid, but could use some tweaking yet.

I realize, though, that the Cookbook app is actually missing something I care about. I'm all about attribution and documentation (comes with being a Laurel), so I really want to track where I got this recipe from. No problem, though: I just tell Querki to add a Sources property to my Cookbook, and to add that property to Recipes. I edit my Pico recipe again, which now shows the Sources property -- I add a few links to the web pages I used, and save it again. I tweak the Recipe format to show Sources down at the bottom, and *voila*: a list of links, which I can refer back to or query later. I go over to the Cookbook app itself, click on the Ideas and Suggestions page, and suggest that my changes get lifted into the common app so that everybody else can use it.

I've set up my Cookbook to automatically publish new entries, so a post shows up a few minutes later on my Facebook Timeline, with a pointer to the entry. It also shows up as an RSS feed in LiveJournal -- I mixed in the What's New app, so new entries basically get turned into blog posts automatically.

My friend Ailish likes the sound of it, but being Canadian she prefers things in metric units. No problem: she right-clicks on one of the ingredients, chooses "Convert to...", picks Metric, and it all shows the way she wants. (Personally, I don't use that much, except with the medieval recipes I've been working with -- I enter those with the ancient Arabic units, and then convert them to US for actual cooking.)

While I'm in my Cookbook, I remember that my friend Anna has asked me for an index of my medieval recipes. Easy enough: I pull up Querki Explorer, and build a quick filter. I tell it to list my Recipes, then filter for just the ones that are tagged "medieval", group those by the TimePeriod property that I added in, and for each one list the name of the recipe. The results look right, so I tell Querki Explorer to save that as a new "Period Recipes" page, and I send the URL over to Anna. That'll now automatically update whenever I add new Recipes, so she can get an up-to-date view any time.

What's Going on Here

The Cookbook isn't the point above, but is kind of needed to illustrate the point. Querki is a *platform*. In and of itself, it doesn't do anything. Instead, it is designed to make it easy to build apps that are useful and personalized.

Keep in mind, none of the above is rocket science. If you're a professional programmer, it's not hard to build the sort of Cookbook application I describe above. If you know all the APIs and are good with Rails, it would probably only take a couple of days to slap together.

But seriously -- why would I want to spend a couple of days on this? All we're doing here is keeping track of a little data, saying how to display that data, and tweaking it as we go. This should be *easy*, not just for the computer pros but for anybody. The Cookbook app is built by end users, not by high-priced programmers, and tweaked by others.

So that's where Querki comes in. It builds in all the boilerplate, everything from working with the social networks to managing the database to doing the fiddly page rendering. It gives me powerful tools for exploring and collating my data, with wizards to make that easy. All I do, as an end user, is say what I want to keep track of, what it consists of, and how to display it. That's not trivial, but it should be a matter of minutes or hours, not days. Moreover, the system should cope with me changing as I go, letting me add new concepts and ideas as I learn more, so that building this stuff becomes quick, fun and low-risk.

[identity profile] goldsquare.livejournal.com 2012-10-18 06:44 pm (UTC)(link)
I'd noticed this online yesterday on GitHub.

Did you want to include unusual phrasing like "I'm a Laurel" and that sort of thing?
dsrtao: (glasseschange)

[personal profile] dsrtao 2012-10-18 07:24 pm (UTC)(link)
So Querki is going to be HyperCard, but building on all the experiences of the last 25 years? If so, that sounds spectacularly good.
dsrtao: (glasseschange)

[personal profile] dsrtao 2012-10-18 09:15 pm (UTC)(link)
HyperCard had an extremely shallow initial learning curve. You could walk a non-programmer through building a recipe stack in an hour or so. After you defined a recipe card by dragging fields on to a blank card, then adding some static text labels, you would have a working system. Then you could improve it by adding buttons and writing scripts for each button. The scripting language was very clunky and kind of slow, but it all ran on a machine with about the same specs as a PalmPilot Pro.

Huh. Wikipedia says that Ward Cunningham was thinking about a HyperCard system when he built the first wiki.

[identity profile] metageek.livejournal.com 2012-10-19 11:51 am (UTC)(link)
There were scripts attached to the stack, to backgrounds (the classes of cards), to cards, and to elements on cards or backgrounds. Scripts could include event handlers and functions—rather like JavaScript.

The language was clunky, yes, but it was very approachable; it was one of those languages that try to look like English, so non-programmers don't get scared off. Google for HyperTalk; you won't want to imitate too much of it, but you can get some ideas.

Come to think of it, I've still got an old Mac that's got Hypercard on it; if you want to experiment, I could see if it still runs. It's been boxed up since 1998 or so, so the odds aren't great...
laurion: (Default)

[personal profile] laurion 2012-10-20 01:20 am (UTC)(link)
There are going to be times when users want to engage a little bit at a lower level. You should definitely check out what hypercard did with making the syntax as facile as possible. Also the other things they did, like making it easy for every object to have properties that were innate or definable, and all addressable and mostly manipulatable.
laurion: (Default)

[personal profile] laurion 2012-10-22 02:30 pm (UTC)(link)
Tricky. Being an effectively dead system (although there are live descendants), there aren't a lot of live resources. You might get a feel and some information from http://www.digplanet.com/wiki/HyperTalk or http://edvista.com/claire/hypercard/index.html . I think the important paradigms (many of which you're already familiar with and use regularly) are the object oriented, dynamically typed nature of it, the subject/object/verb 'natural' syntax, scoping of variables, and event handling. http://www.amazon.com/dp/0966551427/ was the 'bible'. And http://www.youtube.com/watch?v=H5-T_S50Sr4 is a fun demonstration.
laurion: (Default)

[personal profile] laurion 2012-10-22 02:31 pm (UTC)(link)
Oh, and of course, Myst is an even more fun demonstration of how far HyperCard was taken in the day. Definitely not a useful example for Querki, but a fun one.

[identity profile] metageek.livejournal.com 2012-10-22 02:35 pm (UTC)(link)
I had a book on Hypercard and HyperTalk, which I don't think I ever got rid of; I probably know what shelf it's on. I can check sometime if you want.

(The failure mode would be if it never got unpacked after we moved to MA...)

[identity profile] metageek.livejournal.com 2012-10-22 03:40 pm (UTC)(link)
I don't intend to. :-) There are two small bookcases with programming books; if it's not on either of them, I'll give up.
laurion: (Default)

[personal profile] laurion 2012-10-20 01:18 am (UTC)(link)
Yes and no. I did a -lot- of hypercard back in the day. As far as rapid structure building, linking, data manipulating, yeah. But Hypercard did so much more, especially in regards to multimedia, but so far predated the web, especially the social web, that it looks more like a case of parallel philosophies.
cellio: (Default)

[personal profile] cellio 2012-10-21 10:45 pm (UTC)(link)
So far this use case describes creating, editing, and formatting data, with a little computation (units conversion). That's all great. The further question that immediately came to my mind was the extent to which an app could interact with already-existing data. Specifically, the use case that came to mind with this example was:

I start typing in my recipe. This isn't the first time I've played around with pico de gallo, so when I type the name the system pops up a list of the others that match. I take a quick look, conclude that no I'm not about to duplicate work I've already done, take note of my prior 1-star effort that involved canned tomatoes instead of fresh, and proceed. Later, when I give it my 4-star rating, the system helpfully offers that when I used these ingredients in another recipe, I added a splash of habenero and rated that 5 stars.

The next time I want to make tacos I come back to my app, and in addition to asking it what I've done before (search my recipes), I have it search the recipes from people I've subscribed to (using the handy "subscribe" link from some previous query, or because when you published one of your entries to LJ I subscribed that way). Still seeking inspiration, I ask to see all public five-star pico-de-gallo recipes that include cilantro, and one of the results is from someone I know but didn't know was on Querki. So I add him to my subscription list.

That's pretty rough, especially the stuff about subscriptions, but it's where my brain went so I thought I'd share. The "helpfully tell me stuff from my own data before I know to ask for it" part would be pretty helpful. (Think of it like the list of existing questions you get on Stack Exchange when you start to type a title.)



[identity profile] metageek.livejournal.com 2012-10-21 11:37 pm (UTC)(link)
the extent to which an app could interact with already-existing data

Where my brain went when you said that was pulling in data from non-Querki sources, like an API for BoardGameGeek (I don't know that one exists, but I think so, since there are multiple Android apps).

cellio: (Default)

[personal profile] cellio 2012-10-22 03:38 am (UTC)(link)
It's certainly possible to create an interface for bringing in external data and mapping it into your system's data model. But somebody has to write those transformation rules, the logic that, e.g., takes the XML returned from the BGG web service and turns it into something meaningful. Technical folks can do that, but enabling an end user to do that seems, to me, Very Challenging.

(I'm totally speculating about BGG having a web service. It's just an example.)

[identity profile] metageek.livejournal.com 2012-10-22 02:03 pm (UTC)(link)
Consider the wine list scenario. If there's some Web service with a categorization of wines, you could use that to provide suggestions, or maybe autocompletion, and not have to type as much—always a nice feature on a phone.
Edited 2012-10-22 14:04 (UTC)

[identity profile] metageek.livejournal.com 2012-10-22 02:32 pm (UTC)(link)
There you are: someone might want to use Querki to provide their own annotation schema on LibraryThing—e.g., someone like the authors of Law and the Multiverse might want to provide commentary on how accurately each book represents the law.

Or an oenophile who's cloned your wine list might want to augment it with pointers to books that mention particular wines.
cellio: (Default)

[personal profile] cellio 2012-10-22 03:31 am (UTC)(link)
I aim to challenge. :-)

Seriously, I know some of that is really pie-in-the-sky, some is doable but probably not a priority, and some maybe is helpful. You have a way better handle on which fits into what category than I do. You are certainly welcome to turn anything I comment about on these posts into use cases if that helps you!