Tuesday, October 28, 2008

My favorite hammers

Judging by the last week, my instincts are:
  1. Continuations
  2. Lifting
  3. Dynamic, statistical analysis
  4. Change-impact analysis
  5. Concolic execution
  6. Collaborative analysis
I added number 5 last year and 6 this year. Hopefully I'll hit 10 by the time I'm out of here.

Back to writing..

Sunday, October 26, 2008

Higher-Order Applications

Going to attempt another crowd-sourcing :D

I'm trying to compile a list of popular or interesting meta applications. Essentially, they should take existing applications (preferably web ones!) and create new ones. The one caveat is that they should manipulate the structure of the applications, not static parts. For example, I want examples like Dapper, which exposes changing data embedded in application as an RSS feed, or Pipes and Mashmaker, which allow feeds to be combined. However, something like a Greasemonkey spellchecker does not -- it operates over a static page. Arguably, Greasemonkey itself counts :)

To start the list:

-- Application launchers and shortcuts (Quicksilver, Spotlight, Sapiens, ...)
-- Alternative command line interfaces (Inky, Ubiquity)
-- Macro learners and composers (Mashmaker, Pipes, iMacros, ...)
-- Content extractors (Dapper, iMacros, ...)
-- Search engines
-- Program extractors

addendum: debugging tools (profilers, etc.), GUI simplifiers (Opera Mini)

Any other categories?

Saturday, October 25, 2008

Paper Writing

Every time I try to write a real paper, I always go back to the how-to by Simon Peyton Jones. I should probably go there before giving talks, too :)

I haven't seen anything about position papers, and while I've heard about another on benchmarking techniques, I haven't read it yet.

I'll get a handle on this stuff eventually...

Thursday, October 23, 2008

Tuesday, October 21, 2008

Recent thoughts

  1. Some browser grouching: The idea of a BOM, or browser-object-model, is one of the coolest things about modern client-side web programming. Further focus on this would be awesome. More importantly, updating DOM (and BOM) APIs for more introspective, reactive, and/or cross-frame/tab interfaces is increasingly important. Finally, I'd like a prospector-like tool for it all. For example, it took me a couple of hours to figure out "window.frames[i].frameElement == someFrame, someFrame.ownerDocument.defaultView.frames[i].frameElement == someFrame," and many more to correlate clicks between tabs and frames.
  2. 2 submitted... 2-3 to go! hurrah!
  3. Concurrency != parallelism is drilled into us early on, but what does that mean about intent when developing programs and building systems (or languages) to support them? For example, I'd say most efforts in virtualization actually only target the former: parallelism is a stronger concern than concurrency, adding machine or performance model constraints. More concretely, a parallel web app running on a VM that shares a machine with another similar web app would likely benefit from a policy on how to deal with this situation.
  4. Ben and I had an interesting short discussion with one of the Fortress designers yesterday. Lightly paraphrasing:
  • Leo: What's the story on correctness?
  • Anon: We added contracts.
  • Leo: But Fortress is parallel...
  • Anon: Ah.
  • [Discussion about pre/post contracts providing an invariant on entry a developer may assume and then another he/she must satisfy on exist going to hell in parallel languages that allow arbitrary code to yield or be preempted]
  • Anon: We added atomic sections.
  • [Discussion on how the two fit together]

Friday, October 10, 2008

Oh Berkeley

WWW, PLDI, HotPar, and wiener schnitzel. You decide.