Personal Research Agenda

From ApocryphWiki

Jump to: navigation, search

Contents

Intro

When I read Brad Neuberg's blog entry advocating for the personal research agenda I immediately recognized his concept as a formalization of something I've done for years. I have pages and pages of OneNote files (and Word documents before that) wherein I recorded all the project ideas I had and the Hard Problems they brought to light. As the next evolution of that process, I'm moving that information into a Wiki so I can more readily access and manipulate it.

This is my research agenda not some sort of collaborative effort; the Wiki format is to make it easy for me to add and modify content, and does not indicate any intention to open this up as some sort of democratic group-think session. If you have great ideas of your own, that's awesome; record them on your own Wiki. If you want to talk to me about my ideas, please use email or Jabber.

Research Agenda

Censorship Circumvention

How can existing Internet communication protocols be used to form a system in which forms of censorship and regulation are made impossible due to the anonymity and covertness of the system?

Cognitive Prosthetics

How can computer technology be used to form cognitive prostheses; computational tools that amplify human cognitive abilities by combining the strengths of the human mind (abstract thinking, reasoning, extrapolation, association, etc) with the strengths of digital computers (lossless data storage and retrieval, computation). I'm not talking here about implants and Gibsonian cyberspace decks; I mean concrete, incremental advances in the way technology is used as a lever to augment human cognitive abilities in much the same way a prosthetic limb augments the physical abilities of amputees.

Killing the Mouse

My RSI issues are predominantly a result of use of a mouse (and especially its masochistic cousin the touchpad). I've spent alot of time trying to figure out ways to do things like software development and web browsing without the mouse and without turning into a command-line text-mode bearded UNIX curmudgeon.

Language-aware Differencing

When viewing diffs of multiple revisions of a source code file, the line-based differencing is particularly unhelpful. A diff tool that knows some basic things about the language being diff'd could make for a much more precise diff, and determine exactly what user changed what language tokens.

Portable Everything

How can existing virtualization, encryption, and communication tools be used to allow me to move about between physical and network locations, bringing my running apps and files with me securely and quickly? Why can't I freeze my web browser session, SlickEdit window, and files and thaw them on another machine?

Audio Performance Meters

Is it possible to use the on-board sound cards in all modern computers to report performance meters like CPU usage or disk I/O without driving the user or surrounding people insane? What are the best ways to represent quantitative information aurally?

Universal Character, Information Edition

Why are we still saddled with the ancient file and folder and table idioms of the dark ages of computing? Why don't are filing systems and applications allow us to model more complicated information concepts?

This is related to the Cognitive Prosthetics research item, but asking a more fundamental question: why don't we have any richer general-purpose abstractions for our information? In effect, I'm trying to devise the Universal Character for information, and I'm not arrogant enough to think I'll get any further than Leibnitz did, but I at least asked the question.

Concurrency

How can we make it easier to build software that scales to multiple cores? This is all the rage now, but I asked myself this back in February of 2005 before it was cool to do so.

Omnipresent Information

I used to use OneNote to keep notes to myself about project ideas, stuff I was working on, workarounds I found for programming gotchas, etc. It really started to piss me off how my information got put into purpose-built silos and couldn't be shared or linked or consumed.

This bleeds into the Universal Character, Information Edition and Cognitive Prosthetics research items. This one is focused on the question of how to create a system where all the information I have--structured and unstructured--is captured, stored, and made available the way I need it. Why do I have separate tools for email, contacts, scheduling, word processing, blog posting, todo lists, photo albums, movies, and music?

This isn't about creating a maximally sucky convergence program that does lots of things poorly, it's about finding the abstractions and idioms necessary to let best-of-breed tools like email clients, word processors, etc, couple loosely and integrate deeply, so I can link and copy information of multiple types on multiple systems in multiple locations without thinking about mundane shit like file systems and directories and storage devices.

Personal tools