« March 2009 | Main | May 2009 »

April 30, 2009

Posting on code.kynetx.com

Kynetx Logo

As we get ready to launch a limited beta program for developers to use the Kynetx platform, one of the things I wanted to get going was a place to talk about Kynetx code. So we stood up code.kynetx.com.

When it's all done, there will be documentation, forums, and examples. I've been making some posts on it even though the template isn't done. So far I've posted:

I've been enjoying writing these because it gives me a chance to write about changes and features in one place.

8:52 PM | Comments () | Recommend This | Print This

Phantom Editor Commands

GNU Emacs logo. See its history at The Design ...

Image via Wikipedia

The other day Dave had a document up on the projector and was editing a document that we were all commenting on. He typed something new and had a bunch of text between the cursor and the end of the line that he needed to get rid of. My mind started to scream "Control K, control K, control K" over and over. My fingers would have even moved like they were on a keyboard had I not exercised much self control.

Now, admittedly I'm a bit of a control freak, but I think this is pretty common. It's why we have wars about our favorite editting environments. Once we've got the keystrokes wired into our brains, its there for good. I have to admit that part of my like for Apple products like Pages, Keynote, and Mail.app is that they understand Emacs command keys.

11:44 AM | Comments () | Recommend This | Print This

April 25, 2009

Amano Chocolate: This is Good

Amano Chocolate Bar

Image by QuintanaRoo via Flickr

I ran into an old friend at the GOP convention this morning, Art Pollard. Art's taken up chocolate making. He did it as a hobby at first, but now he does 2000 lb batches and sells it, so it hardly qualifies as a hobby any more. He gave me some samples and I have to say it's possibly the best chocolate I've ever had. But don't take my word for it; just look at the impressive list of awards he's won at the bottom of his homepage: Amano Chocolate.

1:36 PM | Comments () | Recommend This | Print This

April 22, 2009

Data Leads to Better Parking Decisions

Underground parking garage at the University o...

Image via Wikipedia

The short term lot at Salt Lake City Airport has electronic display boards that tell you how many parking spots are available on each deck. That wasn't always the case. Monday when I was parking to go to RSA, I realized that in the old days my default behavior was to head straight to the top deck because there were always more spots there. The small overhead of driving up to the third deck was far better than driving around the aisle looking for a place to park.

Now, with more info, my alrgorithm has changed. If there's a small number of spots on one of the decks, I skip it, but if the number is large (>100), then I stop at that deck and park.

Of course, the idea that data leads to better decisions isn't a great revealation. People have known that for centuries. But its interesting to see it affect simple activities in my own life.

Our goal with Kynetx is this exact kind of information empowerment. We call the process "context automation." You can get some ideas about how this works by reading our latest white paper: Creating Contextualized Web Experiences (PDF).

9:55 AM | Comments () | Recommend This | Print This

April 14, 2009

State of Utah Launches iPhone Applications

The State of Utah has released two iPhone applications. The first is a general Utah.gov application. The second is for reviewing professional licenses in the State.

The Utah.gov app allows agency and service lookup. I preformed what was the most obvious search for me: look up the DMV. I was disappointed that searching services didn't let me see the RenewalExpress application and search on agencies just took me to the Tax Commission contact info. If I've got my phone in my hand and I search on DMV, I'm probably looking for the nearest office.

Nice to see that Utah's still experimenting will all this and trying new things, but to make this a killer iPhone app, it needs to be designed within the unique context of being on a phone.

1:47 PM | Comments () | Recommend This | Print This

Cydni Tetro on Using Scrum

This weeks's Technometria podcast features Cydni Tetro. Cyd is with NextPage and recently took over responsibility for managing development in addition to her product management duties. We talked for a great deal of the interview about the use of Scrum and what works and what doesn't. Of course we also got in some discussion of Twitter.

9:46 AM | Comments () | Recommend This | Print This

CTO Breakfast: Venue Change and Fiber Trucks

This month's CTO Breakfast will be held on Friday, April 24. Our usual venue (Novell's cafeteria) is unavailable that day. Barry Bryson of UEN has generously made their conference room available to us and has offered to supply a continental breakfast.

As an additional incentive to make the trek to the eastern foothills and visit the Eccles Broadcast Center, Infinera will have a demo truck at the U that day and Barry has invited CTO Breakfast attendees to visit the truck and even attend the UEN presentation if you wish.

Infinera is a fairly new fiber optic equipment manufacturer that has been winning some notable networks these days (competitors to Cisco, Ciena, Fujitsu, Nortel etc.) . Level-3 and Internet2 amongst others are customers of theirs.

You can visit the truck after the breakfast. If you'd like to stay for the presentation and lunch, Barry would like to know ahead of time so he can make sure there are enough slots. Contact Barry directly or contact me and I'll forward along the information.

We'll be meeting at the Eccles Broadcast Center (directions, address, and maps here) at 8am. As always, you don't have to be a CTO to attend--just interested in technology. I hope to see you there.

Be sure to check the calendar for future events.

9:38 AM | Comments () | Recommend This | Print This

April 8, 2009

Designing the Kynetx Rule Language

The graphic used to indicate Information Card ...

Image via Wikipedia

KRL, the Kynetx Rule Language, is a domain specific language that operates on the Kynetx Network Service (KNS). When I first started building KNS the first priority was getting a rude dog demo working that we could use to start having customer and investor conversations. Consequently, I was less than pure in some of the implementation details.

For example, the conditionals in if statements were just single predicates and the declarations in the rule prolog were all one-offs. Later I went back and wrote a complete, generalized expression language that could be used in the conditionals and in the actions, but I'd never gone back to redo how declarations were done in the prolog.

A need to query user-defined data sources and then do something with the results, led me to determine that using generalized pattern-based selectors were the most general and powerful means of interacting with the data (think XPath, CSS selectors in jQuery, and JSONPath).

Unfortunately, when I dug into the code, I remembered I'd incurred a little programming debt and needed to clean up the declarations in the prolog rather than add yet another piece of one-off code to that part of the interpreter. Not only did this mean I only needed to deal with the selector expressions once, but it also greatly simplified the declaration code while making declarations in the language much more powerful.

To see this in action, imagine the following scenario. You've got a queriable data source at a URL:

http://www.example.com/bookdata?isbn=xxx

that returns JSON data telling you if a book is available at your local library. The JSON might look like this:

{"responseHeader":{"status":0,
                   "QTime":1,
                   "params":{"q":"0316160202","wt":"json"}},
 "response":{
     "numFound":1,
     "start":0,
     "docs":[
          {"isbn":"0316160202",
           "title":"Eclipse",
           "url":"http://library.com/search/?isbn=0316160202"
           } ] } }

You could create a KRL ruleset that queries that data set and puts a Growl-like notification at Amazon informing you of that fact for any book page you visit like so:


ruleset library {

    global {
	datasource library_search 
                  <- "http://www.example.com/bookdata/?wt=json";
    }

    rule book_notfication is active {
        select using "www.amazon.com/gp/product/(\d+)/" 
                 setting(isbn)
        pre {
      	  book_data = datasource:library_search("q="+isbn);
  	  url = book_data.pick("$..docs[0].url");
 	  title = book_data.pick("$..docs[0].title");

	  msg = <<
This book's available at your local library. 
Click here to see: <a href="#{url}">#{title}</a>
>>;
	}
	if(book_data.pick("$..numFound") > 0) then {
		notify("top-right", "#222", "#FFF", 
		       "Local Library", true, msg);
	}
    }
}

If you're interested in the details of how this works, there's some KRl documentation available online and more to come soon. The pick operation is applying a JSONPath pattern to select specific parts of the JSON data. I'm happy to explain any of it in more detail, so just ask.

As I describe here, you'd enable this functionality by installing a small Information Card (we call them KIX) in your card selector. The rule lives and executes in the cloud.

I love when there's something new someone wants to do that we can't quite do yet. I get a chance to build more on the language. There is a grand design, but I can only afford to build out the pieces we need right now and even at that, I can't really keep up. The key, I've found, is making sure I take time to refactor as I go. Otherwise, you get to the point where every task is too hard to do.

7:13 PM | Comments () | Recommend This | Print This

Timothy Fitz on Continuous Deployment

This week's Technometria Podcast is an interview with Timothy Fitz on continuous deployment. I wrote about continuous deployment and Timothy's ideas in some detail a few weeks ago. Timothy's philosophy is that you should release code often. By that he means 50 times a day, if necessary. We had a good conversation and even though it was Timothy's first podcast, he comes across as an old pro.

1:24 PM | Comments () | Recommend This | Print This

April 2, 2009

I'll Send You a Card: Information Cards in the Wild

Kynetx Logo

I've been hearing about information cards for the last four years or so. For that entire time, they have been largely theoretical or, at best, used for logging into a blog or something else. I'm out to change that.

A few days ago Steve Fulling was on the phone with Paul Trevethick of Parity describing a pilot project we're doing for the Locals Care organization of New Mexico. Steve said "I'll just send you the card; put it in your selector and you'll see the results in Google."

That's a pretty interesting statement: "I'll just send you a card." The reason I love it is because that's a key part of the Kynetx vision: viral web experiences. Of course, if this were a managed card, with claims, you wouldn't just send them around, but when the card has no claims, this works.

If you'd like to try it yourself, you need two things: first you need the Azigo selector. This works on Mac or Windows with IE or Firefox. One warning: it will mask your CardSpace selector but it's still there--just go to the Azigo selector switch in the Control Panel to get it back. Of course, if you haven't done anything with your CardSpace selector yet, you won't care.

Second, just import this card into the Azigo selector. Now, restart your browser and search for something local to Santa Fe, like santa fe coffee or santa fe pizza.

Locals Care screenshot

If everything worked, you should see a box with a yellow border and the Locals Care logo at the top of the Google search results with local results. These have been percolated up through the first ten pages of results to the top. Note that this only happens for people who have opted-in to the experience by taking the Locals Care card.

We view this result as being the triangulation of three different things:

  1. The page the user's looking at (e.g. Google search results)
  2. The dataset delineating relationships (e.g. the Locals Care database)
  3. The information card itself (giving the ruleset ID and, possibly, claims)

The triangulation of these three dimensions is performed by the ruleset and the Kynetx Network Service (KNS). Change the page, the dataset, or the card (and it's associated ruleset) and the results will be different. This makes it vastly more powerful and flexible than a special purpose add-on like SurfCanyon or even a Greasemonkey script. Just try getting your mom to install a Greasemonkey script. She'll have an easier time with the card, trust me.

If you're interested in the details of how all this works, I invite you to read our white paper (PDF), leave a comment, or contact me.

If you're interested in playing around a bit more, here are two more cards you can install.

  • Better Craig's List - install this card and when you search on the Provo Craig's List, you'll get pictures on the results page so you don't have to click into every link.
  • TwitterSpy - this card augments the Twitter search page to actually show you new results rather than just telling you when there are new ones. To see it in action, search on something that's trending up.

These two cards are missing the dataset dimension and thus "two dimensional," but it's still fun to just install a small card and get better functionality out of your browser.

Note that this process is particularly easy when you already have the selector. The selector and associate browser extension become a "universal" add-on that does it's work through the cloud. Just add a card and you've got a new, better experience. I'm biased, but I think that's pretty darn cool.

9:33 AM | Comments () | Recommend This | Print This

April 1, 2009

Is God a Mathematician? Catching Up with TechNation

We've had some problem getting TechNation shows for IT Conversations since Christmas due to a variety of problems. We finally got a big batch in and now we're playing catchup. There will be a few more TechNation shows that usual over the next month or so as we get through the backlog.

First up was Moira's interview with Mario Livio about his latest book Is God a Mathematician? This is classic TechNation and just a delight to listen to. Moira is a great interviewer and Mario was a great guest. And their names are anagrams. What more could you ask for?

8:31 AM | Comments () | Recommend This | Print This