Wednesday, November 18, 2009

Random notes from Kynetx 2009

Phil Windley

Here are other projects in this same space as Kynetx:
  • Gist - Web content for your inbox via an Outlook plugin
  • Switch Book - Search Context
  • Adaptive Blue - Media Toolbars
  • Kynetx - Context Automation Framework
  • Google - SideWiki

"Content is less important than context."
  • Clay Shirky did an experiment: only 6% of his local newspaper was local content. And we wonder why newspapers are dying.
  • If content is so important, why does a Stephen King book cost the same as one by a first-time-author (pointed out by Paul Graham)?
Sam Currens

Where can Kynetx help with security, since it's all client-side and has the power to do very malicious things?
  • Kynetx can turn off malicious scripts.
  • Kynetx can create reputation and certification processes/systems for applications/organizations.
Dave McNamee

Endpoints

Who are the trust providers in the information card space? None needed: the stuff is encrypted.
Azigo Lite vs Azigo

Datasets
intrinsic, Ambient context vs active context
pick to parse out data

Sweetter - bookmarklet for recent tweets about a website
ClearPlay - to show if a movie from Netflix, IMDB, etc. is available on ClearPlay
SkullCandy - show on certain sites

Public apps (with source) are here: http://appdirectory.kynetx.com/

Doc Searls' talk about "The Intention Economy" at Kynetx 2009

He recommends the online comic "Gaping Point."

We're trapped into thinking that a "free market" means "your choice of captivity (vendor)".

Even with social media, each site is a silo. So how do we get to personal, and "prove that a free customer is more valuable than a captive one?"

VRM (vendor relationship management) is one approach for us consumers, the reciprocal of and complimentary to CRM.
  • manage our own health care data, eg. PHR (personal health records)
  • "personal RFP" for my personal needs
  • assert our own terms of service
  • "Have governance of and by - and not just for - the people"
(Take a look at public radio player, where the VRM "CD" logo gives their VRM compliance level.)

See projectvrm.org

"4th-party": someone who helps the buyer relate to the sellers (and their 3rd-parties).

(QOTD: "We're all climbing up the volcano of Google and allowing their free software to wash over us.")

(BTW, Doc never answered the question: "How do we prove that a free customer is more valuable than a captive one?")

Monday, November 16, 2009

Why does XML not allow nested comments?

I hate the fact that XML doesn't allow nested comments! Since I have comments in almost every source file I write, and since I frequently want to disable portions of my code, I hit this problem a lot

I finally found out why they don't allow nested comments, or any "--" inside: the original SGML has some complicated rules about double-dashes and how they change the parsing inside a comment, and the XML spec mandates that XML docs are valid SGML, so it is more restrictive and says that XML cannot contain any double-dashes.

So, basically, I want to throttle whoever came up with this complication in SGML. Maybe the person to blame actually introduced this in a previous spec... but anyone who puts this kind of trickiness into a standard should be blacklisted from IT work permanently. Argh!

Thursday, October 15, 2009

Java Tutorial for Absolute Beginners

(I want to give programming newbies an introduction to Java, but in a way that they can do it independently such that the tools won't get in the way (eg. 'javac' to compile, 'java' to run, avoiding classpath issues, and so on). I think the best fit is to have them use Eclipse (or another Java IDE), which will allow them to get to the code quickly; hopefully the IDE won't distract them. Unfortunately, I cannot find any existing tutorials that fit the bill, so here's a set of instructions that I hope will work better.)

  1. Complete steps 1-4 of the Eclipse Java IDE tutorial. I assume you will be able to find and install Java and Eclipse (which are installed separately); when you choose a Java or Eclipse download, just choose a "Java" version... there's no need for anything fancy like "Java EE".
  2. Jump into "Part 2: The Syntax" of Brewing Java: A Tutorial, but stop when you get to "Command Line Arguments".
  3. In Eclipse, try to run the "Command Line Arguments" example, but realize that you'll get an error.

    In order to supply run-time data to your program, you'll have to add an argument to run it: right-click on your program and select "Run As...", but then instead of "Java Application" choose "Run...", then click on the "Arguments" tab and fill in something (like your name) and click "Apply".

    Now "Run" your program and you should get some good output.
  4. Now you can continue with Brewing Java: A Tutorial. If you get this far, you should be able to do the rest of any other tutorial out there.
Good luck!

Sunday, October 4, 2009

Rubik's Cube Cheat Sheet

I finally sat down and followed instructions to solve a Rubik's Cube. I used Dan Brown's videos, and here is my summary of the instructions... useful for reference until I have them memorized.

(F=turn front side clockwise / U=up side / D=down side / L=left / R=right, with cc=counter-clockwise)


1) Goal: Top Cross
Move one into correct spot. If flipped, put in front then:
Fcc U Lcc Ucc

2) Top Corners
Get one in or under spot, then:
Rcc Dcc R D

Now put the solved side on the bottom.

3 & 4) Middle Edges
Find one not matching now-top color, move by matching side color, then..
... if going left:
Ucc Lcc U L U F Ucc Fcc
... if going right:
U R Ucc Rcc Ucc Fcc U F

5) Cross
If "L" then put back-left, if line then put horizontally, then:
F R U Rcc Ucc Fcc

6) Match Edge Sides
Put one that matches side colors in back and the other to right or front, then:
R U Rcc U R U U Rcc

7) All Upper Edges in Correct Spots, Possibly Turned
If any in correct spot, put in front-right, then:
U R Ucc Lcc U Rcc Ucc L

8) Corners
Put any unsolved in front-right, then:
Rcc Dcc R D ... and maybe repeat until just that one is correct (even if the rest of the cube is messed up)
... and then Ucc and repeat for each unsolved upper corner

Wednesday, September 16, 2009

"That's Not My Name" lyrics

I finally found the full set of lyrics for "That's Not My Name" by The Ting Tings; I have been especially searching for the words from the guy (Jules) who sings lower underneath at the end, and here they are:

This song was in my head, now it's in my mind,
Call it, reach it, get some words and get some timing,
Though I realize, I cannot emphasize,
I'll stick around, but just a promise, nothing binding,
However can't you see, that you're so desperately,
A standing joker like a vocal one-liner,
Instead of sing-along, this song is monotone,
Gotta get some soul, gotta get some feeling....


I found them all on this YouTube video page, which Jessi S says is the "official video".

Wednesday, July 1, 2009

Consolidating Spreadsheet Lists

I sometimes have to get a list of unique items either by removing duplicates or by pulling the items from two lists (by finding the elements missing from one of them). These are easy to figure when you have the data in a SQL database, but it's a little tougher using only spreadsheet functions. Below are two example approaches.

Update: I just learned about the COUNTIF function that might help; check it out first. Another possibility may be to "Paste Special..." and "Skip empty cells", but that doesn't always work. Another possibility would be to make a database out of the data and search for non-empty cells, but this has proven tricky (and it's many steps, anyway).

Find the Unique Items

This is like the SQL "SELECT DISTINCT word FROM words" (Update: this may not work when 2 cells are skipped!)
  1. Put the list in column A starting in row 1.
  2. In column B next to each value, paste a function which detects whether the item is a desired one; in this case, it's the last item in each run:

    =NOT(EXACT(A1;A2))
  3. In Column C, put a counter down to each desired element:

    =IF(B1; 0; C2+1)
  4. In column D and row 1, paste this function to tell where the first element lies:

    =C1 + 1
  5. In column D in the other rows, paste this function to tell where the next element lies:

    =D1 + 1 + INDIRECT(ADDRESS(D1+1; 2))
  6. In column E in each row, paste this function to tell each unique item in succession:

    =INDIRECT(ADDRESS(D1; 1))

Find the Elements Missing (when compared to another list)

This is like the SQL "SELECT * FROM words WHERE word NOT IN ('forbidden', ...)"
  1. Paste the main list into column B and the sublist into column A.
  2. In column C, put the function to find the desired one (like step 2 above); in this case, VLOOKUP function to detect if the item from B exists in A:

    =ISERROR(VLOOKUP(B1; A$1:A$999; 1; 0))
  3. The rest of the steps are the same as steps 3-6 above. In column D, we count down to the desired element:

    =IF(C1;0;D2+1)
  4. In column E row 1, we put the row of the desired element:

    =D1 + 1
  5. In the rest of column E, we find each element:

    =E1 + 1+ INDIRECT(ADDRESS(E1+1;4))
  6. In column F, we find the value:

    =INDIRECT(ADDRESS(E1;2))