Tuesday, 18 February 2014

Anonymous online community

I have an idea for an anonymous online service that can maintain anonymity whilst facilitating community. The basic concept is that each user would have a unique identifier for each other user. For example:


User 1 User 2 User 3
User 1
Mr Blue Mr Red
User 2 Mr Green
Mr Orange
User 3 Mr Yellow Mr Purple

In the above example, when User 1 sees posts on the online forum that are made by User 2, he/she sees them as coming from Mr Green, but when User 3 sees the same posts he/she sees them coming from Mr Orange. Likewise, when User 1 replies to User 2's posts, User 2 sees that response as coming from Mr Blue.

On all posts, the users would be able to reference the target user names as an object embedded in the text of the response. This would then be changed when viewed by other users. So in the above example, when User 1 responds to User 2, he/she might say "I agree with ". Then when User 3 sees this post, they would see Mr Red saying "I agree with Mr Orange".

When a user first joins the online service they would begin interacting in the public spaces (e.g. forums, Q&A, blogs, micro-blogs etc), but having got to know other users in the public spaces, the user would be able to add the other users as friends (social network functionality) or send private messages (email functionality). It is worth noting that the public spaces would not be open to the internet - the user would need to have an account (similar to existing social media services).

There is a risk that anonymity would deteriorate if users didn't refer to other users by the embedded object method, or if other uniquely identifying information is provided (e.g. photos) (or potentially via stylometry / writeprint). Obviously there would also be a risk in the event the servers are compromised.

Saturday, 8 February 2014

Automated fold out stairs and elevators

In the average house of more than one story, a significant proportion of the space is taken by staircases. This space consumes resource: a larger house for the same living area to accommodate the staircase; and power to maintain the air temperature of the staircase area. So how can this be made more efficient?

One approach is a steeper staircase, but this is likely a false economy due to the increased risk of accidents. Another would be a fold-out staircase that would not consume space when not in use. A fold-out staircase would typically not be an attractive solution however due to the hassle of folding it out each time for use. However, if such a fold-out staircase could be mechanised, this "hassle-factor" could be significantly reduced.

A simple design would be a set of boards that when not in use are folded upwards against a wall. The banisters would be folded against the boards, and would fold up when the board is in down position. Around the hole in the floor in the upper room an automated guard rail would be required.

A similar approach could be taken with an elevator: the floor of the elevator would default to being in the upper floor; guard rails would be folded away when not required.

Such solutions would require relatively sophisticated technology: mechanisms to efficiently fold away the banisters, rails, etc; sufficiently strong materials; sensors to ensure people, pets and other objects aren't in the way when deploying.

Obviously, the space saved could not actually be used to place furniture or any objects, but would enhance the visual space of the house.

Sunday, 2 February 2014

MarkMyHomework.com

It is relatively easy to learn from books and web resources; it's relatively easy to ask questions to help clarify your knowledge (e.g. Stack Overflow); it's relatively easy to find quiz papers; but, it's hard to the kind of insight you can get from someone reviewing your work without someone actually reviewing your work.

Often it's not about whether your right or wrong, but about why you're wrong, what gaps are there in your knowledge, your mental models, your logic, etc. Some of this can be achieved from Q&A type websites, but often they require the questioner to articulate the question quite specifically. They don't let the user do something like say "Here's what I've been working on, what do you think?". And they're not grading essays.

I think there's a need and an opportunity for a web service for learners that goes beyond Q&A type support, but is actually set up with a focus on people submitting homework and having it reviewed. I suspect it might be necessary to pay people for such review given it would be more time consuming that simple Q&A response.

Such a service could incorporate all of the useful features of existing Q&A type services (e.g. reputation scores for reviewers, published reviews that are easily findable by other users, strong code of conduct and moderation, question tagging / categorisation), along with those of paid online micro-tasks (such as those of Amazon Mechanical Turk).

Build form like functionality into email

In some ways it's surprising that this hasn't already been done (or perhaps it has and I haven't seen it). Often people ask for structured data via email, with that email going to a number of recipients. There are a variety of ways this is currently done: a simple message to and fro; a message with an attachment to hold the data in a structured fashion; or the use of a web-based tool like SurveyMonkey.

It seems to me that most email programs these days handle HTML (and potentially javascript?) and as such it might be possible to build form functionality into the body of an email. The recipient would not need to go online to fill in a form, or download and open an attachment, but natively respond via email in a structured format.

The process would look something like the following:

  • the sender (who requires the data) builds an email with a form generator tool (selecting widgets such as dropdowns and input boxes);
  • the sender then sends the email to the recipients
  • the recipients open the email, fill out the form and reply
  • local javascript input validation would prevent the reply email being sent without required fields being filled in
  • the original sender would receive the reply in a structured format
  • the email application of the original would collate all responses, tracking those not received and build up a database (single table spreadsheet / RDBMS style / object oriented) of the responses (or potentially the receiving email address application could be set up to pump the received data into a server-hosted database)
The advantages of this system are that there is no need to move outside of the email application to use web forms (can be done offline, then sync), and that structured data is collected into a useful format without manual copy-paste.


Abrastraction costs efficiency

I hadn't really thought about it until recently, but it seems to me that often (not necessarily always) that abstraction costs efficiency. In order to provide a abstracted and simple interface, it may be necessary to introduce inefficiency into the design. Or the absence of knowledge at the higher levels of how things work at a lower level mean that the high level makes inefficient user of the lower level.

This concept applies to computers, but I think also to the structure of organisations and societies.

REM

A hypothesis from personal observation: when sleep we are more likely to respond to external stimuli during the REM phase.

GUI object data application

This is probably an anathema to database people, but to my mind spreadsheets are a cousin of relational database management systems: data is stored in tables, there are lookups between them (e.g. vlookups in Excel), there are rows and columns. Often data is stored in spreadsheets that should be stored in RDBMSs, but the flexibility of spreadsheets and their relatively easy GUI mean that they're used instead. They're a gateway drug to RDBMSs, but a lot of people don't progress onto the strong stuff.

It seems to me that there's no such equivalent to spreadsheets for NoSQL / object databases (and even graph databases). There's nothing (to my knowledge) in common office suites for storing object type data (i.e. with a less defined schema) with a user-friendly interface. And this is a gap that should be filled.

Each document (file) would contain combinations of lists and objects similar to JSON. In the GUI, the user would be able to add objects and lists to the document, and remove them and delete them. And then with these elements the user would be able to add items to the list, and add properties to objects.

I would also envisage some kind of ability to do formulae like in spreadsheet programs. For example, the property of object B is calculated by reference to a property of object A. So the user would be able to specify unique identifiers for the object and then be able to look up objects and access their properties.

Such a program would be able to save data in XML and JSON for easy transfer to other applications.