Software Ideas
Techies and startup dreamers, how about another Friday distraction?
Please enlighten me if any of these exist. This is just a brain-dump of half-thoughs I’ve had over the past year.
Pluggable, Context-aware Help System (Updated again, 02/21)
Many web apps don’t have an integrated help system, or help docs at all. The system I’m imagining would make use of AJAX and JavaScript to add context-sensitive help to a web app that would otherwise not offer much assistance to its users.
Say you’ve got an online store and you’re inputting products, but you don’t know what a certain field does … if the app had context-aware help you could click a “Help” link and be shown information relevant to the page you’re on, and the field in particular. Even better if clicking “Help” showed the help content in an overlay without navigating away from the current page.
Or even better, the help system would attach little question marks to relevant areas on the screen for which it has information.
Think there’s a market or need for it? Maybe as a disqus-like service (but at a cost)?
Decentralized Social Services (not in the government sense)
Related to the disqus model … what about removing disqus as a middleman and applying that model to social-network functionality? I’m talking about the ability to track the following on our own servers:
- Following and followers
- Favoriting, or liking/disliking a piece of content
- Ratings (5 star)
- Comments, maybe
This also takes some ideas from the Google Tech talk about help RSS to be more real-time, more push-like.
You’d run a service on your server (or subscribe to one … think openid providers and that associated mess … but that’s another topic) that keeps track of the people that are following you in whatever capacity/medium (twitter, blog, new-fangled thing). When you create some new piece of content, your server alerts those that are following you. Maybe your server alerts each follower’s server which takes care of deciding whether to notify said follower.
The goal is to remove “twitter is down” as a problem, to give more control to users and content publishers (bloggers, tweeters, flickerers, etc), and to uncouple common social functionality from the individual sites and services. Because I’d love to have more control over when I’m notified about tweets and facebook comments.
There’d be a published, open API for servers and client software to adhere to. It shouldn’t be limited by the current capabilities of services (twitter, facebook) … when the next facebook comes along it should function as well.
The intent is not to remove the need to visit facebook, but rather to serve as a funnel for some common online social interactions.
Might I mention, that it would make it harder for Facebook to maintain a database of your tastes in order to serve up targeted ads. But maybe there’s room for a new revenue model, where users can get paid for their “taste information” (whatever it’s technically called).
In-browser, CSS Editing Tool
Maybe a plugin, or a service, that helps you navigate complex CSS files, and make changes. Sometimes it’s hard to know where a certain color is coming from.
But more importantly, when you want to change colors and fonts, this tool could present a short-list of CSS rules that pertain to color/font that you can easily edit. When you’re done it’d give you the complete CSS to save, upload, whatever.
Maybe some of the better pieces of WYSIWYG software (Dreamweaver?) do this sort of thing, I don’t know.
Remote Help:
vnc’s viewer can be run in listening mode where it’s client (the viewed remote computer) actually initiates the session. there’s also a java/web based interface with all of it. i’m fairly certain the java and c is open source. that would be a great platform to start with. maybe an ajax/java collaboration.
as far as the decentralized social services and notifications, i’d have to say the k.i.s.s. method would = e-mail. the only other way to have something decentralized will involved spreading usernames, passwords, e-mails, etc. across multiple servers or using a centralized authentication database (e.g. openid) to store stuff and letting remote servers access their information to notify them.
“The intent is not to remove the need to visit facebook, but rather to serve as a funnel for some common online social interactions.”
that tells me there’s a dashboard to be built that is open and will pull from all associated sites with modules or plugs or something from a specific site (e.g. facebook, flickr, etc.)
i think that would be much better. an open social dashboard with open extensions and such.
Remote Help:
Good idea!
The topics is a bit misleading. I was looking for a call center aspect to the idea. Never the less, a context-aware help would be awesome. The time it takes to generate these context-aware help solutions should be kept in mind (because time is money). I think the easiest way to provide a context-aware help would be with use-case videos. A youtube video of a common use case that got the user to the page that he/she is on. The particular area that is in question could have a small clickable object beside it (lets say a question mark beside a “Country of origin?” input box). The box would open a youtube like video (See placement below) and automatically JUMP to the question location. I believe the jump to feature is key here. It will make creating the video very easy. Simply USE the system that exists. Then afterward, times that events take place can be noted. Also, the user can easily search navigate through the video to verify past decisions or preview future questions.
Placement:
Placement and presentation of the video is trick too. You want the user to be able to follow along with the video. This rules out pop-ups and full screen overlays.
In-browser, CSS Editing Tool:
Firefox add-on
inspect element (jumps straight to the element in the HTML code) and you might be able to edit the CSS.
Chris,
You’re right, the help topic is misleading … I’ve now reworked some of it to make it clearer what I’m getting at.
And man, linking straight into videos would be awesome! I bet most users would rather be shown something through video, rather than having to decipher a vague help doc.
Another excellent suggestion about embedding the video into the app itself so the user can follow-along. That would really be a killer feature if the help system didn’t lose your place as you worked with the application.
Your feedback is making me to want to develop a working prototype … crap, now I’m going to have to find some more time, pitch to a VC, get some funding, find another programmer and a designer. Ahhhh!
About the CSS editing tool … maybe I need to explain this more. Or maybe I should bang out a prototype so I can show people what I’m talking about.
It differs from Firefox’s Web Developer tools because it would be smarter about CSS. I think it could go above and beyond “inspect element and show its CSS for editing” by presenting you all of the classes/ids that specify font or color properties. You’d be able to tell it to “show me only the classes/ids and their rules that pertain to FONTS” or “only those that pertain to COLOR”, depending upon what you need to tweak.
It could also identify classes and ids that set the same color/font property value so you could edit them all at once (you’d only have to type in a new value ONCE). It would also keep FULL REVISION HISTORY of every edit you’ve made, because sometimes you have to backtrack to a previous color combination that worked better than what you have now.
I’ve even fancied having part of the tool assist you in simplifying your CSS by removing redundancies, making more global use of inheritance, etc. But that’d just be an intellectual challenge for me. Doubt any designers would care about having condensed CSS.
Ok, that’s enough for now.
Matt,
Sorry about the confusion regarding my Remote Help topic. I’ve clarified now.
About decentralized social services … one wouldn’t need to spread usernames or passwords or emails. The system would involve an RSS/XML-like protocol for notifications. My server would notify your server if I “liked” a piece of content you wrote on X website. Similarly, if I decided to follow all of your content on X website, my server would tell yours, which would then ping mine when you publish new content.
It would definitely be open, and the beauty of it is, there could be one open social dashboard for all of this. A person doesn’t need their own web server for this to work. If I wanted to provide a proof-of-concept, I could provide this notification system as a service to anyone that wanted to sign up for it, using my server as their central hub. Of course, blogs and existing content networks and websites would need to add support for this API… but hey, pingbacks and trackbacks are widely adopted now. This isn’t much different.
Think I need to create a flowchart to make things more clear.
It’s hard for me to internalize the CSS requirements that you speak of because I am not in trenches. I think a screenshot (photoshoped) of a final product/use case would be the best way to explain it. From what I do understand, what you present is a perfect example of a system that could be built to showcase the usefulness of my research.
Background:
I am working on a replacing the entire data path in Linux, from filesystem to raw storage. The idea is to create a logical system that runs orthogonal (fancy for saying it can be accessed by any layer) to the current data path. There are two main components (1) logical relations and (2) storage and layout. Currently, the logical relation layer is built and working on fudging the storage and layout (save/load state). The system is similar to a database. Only two abstractions are needed to build and understand the system: types, nodes, and edges.
How it differs from a database:
Control over how nodes are stored. This translates to being able to control how your data is stored. The hope here is that you match the storage pattern with your access pattern.
The storage layer has intimate knowledge of the relationships created at the logical layer.
Example:
Hopefully this picture will clear up a lot (http://i46.tinypic.com/2u9h7rl.jpg). Imagine building a dependency graph for the CSS. You can add arbitrary tags to other tags.
Queries such as “Give me all the font css classes” would be very easy to run on such a graph. Efficiency of such queries can be increased because the user provides the code to traverse the graph (think Berkeley DB but easier).
User Interface:
It seems that what you are talking about would be best integrated into something like Eclipse or Netbeans. I have no used these two products very much but I am sure they have a something like a drop down list for object oriented languages to suggest functions belonging to the object you are operating on. This would be similar.
Maybe I can use this to showcase the usefulness of my research
The hard part of quantifying the usefulness, time to develop/change a webpage maybe? Also, the time to build the feature itself using Nodes/Edges.