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


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.


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.

Promises to yourself

Don't make promises to yourself that you can't keep and don't set yourself unrealistic targets: because if you fail to keep those promises, or to meet those targets, you undermine your own confidence in yourself.

Kitchen micro-automation

One day I'd like a fully autonomous humanoid robot that'll do everything in the kitchen for me. But that still seems a little way off unfortunately. So here are some minor automations to help in the meantime:


The auto-toaster would be similar to a normal toaster, but equipped with some kind of reflectivity colour sensor and some kind of smoke/particulate sensor (like those used in smoke alarms). These sensors would allow users to program the toaster to toast "until it's done", rather than relying on fixed time settings.

The ability to sense "when something's done" also allows flexibility around the heating rate: the user would select the heating rate (low, medium, high) rather than time taken. This would allow for foods that toast better under a longer slower heat.

Tilting cooker

Well, not really a tilting cooker, but a tilting pan grid (i.e. the thing that the pan sits on). A very slight rotating tilt movement would cause movement in the contents of the pan, reducing the amount that food sticks to the pan.

(An alternative is a laboratory style magnetic auto-stirrer, but that could potentially be intrusive into the cooking experience, and of course needs to be washed up.)

Auto-filling sink

A sink tap that fills bowl to optimum quantity and temperature (valve actuator, temperature sensor, flow control sensor). The user would program the system once, (potentially "recording" you filling the sink), then press a single button to use.

Auto extractor hood

An extractor hood with humidity / particulate sensor that automatically turns on and off.

Automated dry products dispenser

Dry products such as herbs, spices, flour, sugar are placed in containers within a dispenser. The dispenser will move the container to position, and dispense by volume (teaspoons, tablespoons, etc) and by mass. This product combines storage and dispensing. It saves time in dispensing, and is also an efficient use of space.

Vibration may be required such that the dry ingredients fall from the container into the measuring receptacle.

Automated wet products dispenser

As with the dry products dispenser, this would be a series of contains of liquid products in an array. When selected the dispenser moves a tube to the mouth of the dispenser and opens the valve allowing the fluid to flow into the measuring receptacle. The measurement would be by mass or volume.

It would be necessary to flush the tube with water and some kind of organic solvent after each use. This could be automated.

It may should be possible to combine refrigerated containers for fluids like milk.


This is a bit of a high level concept (and perhaps one that I may flesh out later), but I think it's worth writing down, even if it's only a prelude to an idea.

The problem I'm considering is that whilst there's a lot of data being generated in the world, it's not in a standardised format, and it's not centralised.

I am wondering whether it would be possible to design an online data hosting service where users could submit any form of data, adhering to a specific format (possibly one of a number of formats). For example, if a data point related to a day (e.g. the closing stock price of a particular stock on that day), the day from that dataset would be structured in that dataset in exactly the same way as another dataset recording the average temperature in Los Angeles by day.

A key consideration of this type of service is that there would be strict requirements on metadata, enabling users of the data to understand the tools and methodologies that were used in collecting it.

The advantage of a centralised repository would be a single location from which to search for data sets. It may even be possible to search on something like "find datasets that correlate with my dataset" rather than just a keyword search of the metadata.


I've written before about what I want from an online media service. And I'm still not getting it. So I've come up with an idea of how we might push ourselves in this direction.

The concept is a service-independent website where users can document what media they were unable to find on what services. For example, a user might list the films they're frustrated aren't on Netflix or Hulu. And then other users can vote on these requests, such that the most significant gaps in content become most obvious.

The service would be a bonus for the online media services as: it would link into their libraries such that when a person reports "I can't find X on Netflix" the system tells them "Don't worry, it's on Hulu". And similarly, when the online media services do finally get the content, the website can update the request and put a link out to the site.

The concept applies across all kinds of online media services, but would be particularly relevant to the mainstream services covering TV, music and film.

The service would be relatively easy to build, as many online information sites (e.g. IMDB) provide APIs to allow details of the media content to be pulled in.

It may be necessary to make the documentation of gaps and voting region-specific due to the regional specificity of some online media services.