Entries Tagged 'Ideas' ↓

Nonlinear speedometer

As everyone knows, excessive speed is one of the main causes of traffic accidents. One of the reasons for reckless speeding is that when we think of the possible impact of a collision, our intuition fools us. We tend to assume that if we go twice as fast (say, at 80 km/h instead of 40 km/h), then the impact of a collision will be twice as large. In fact, the impact of a collision is proportional not to the speed (V), but to the kinetic energy of the vehicle (m/2 * V²), which is transformed to work as the car decelerates to zero. Here m is the mass of the vehicle, which we cannot do much about, but the other term is the square of the velocity. This means that the “impact” of hitting a wall at 80 km/h is four times as large as that of the same collision at 40 km/h.

To capture this intuition, the idea of this post is a speedometer design, that scales as the square of the velocity, to give the driver a more realistic view of the effects of speeding.

nonlinear speedometer
(larger image)


  • after sketching this drawing, I found that in 1995 Goetz Kluge was thinking along similar lines and produced a similar design. There are however some differences – see next.
  • besides showing the speed in the more familiar, circular layout, I also made the decision to draw the smaller lines at uniform density (i.e. they are spaced proportionally to the kinetic energy, not to the velocity). This design might make it harder to estimate the exact speed, say between 40 km/h and 50 km/h, but it makes the increased kinetic energy easier to grasp – when we speed from 120 km/h to 130 km/h, the hand crosses more “small lines” than from 20 km/h to 30 km/h.
  • while I haven’t seen a similar speedometer in any real car, some of the existing speedometers are in fact nonlinear. Unfortunately, they seem to achieve the exact opposite effect to the design shown above. See this example. On the linked image, and in many other modern speedometers, the manufacturers try to put more resolution in at the lower half of the range, dilating the velocities between 0 and 80. My guess is that car makers do this, because the car accelerates faster at low speeds, so dilating the lower range makes the hand movement seem more uniform at all speeds – this is probably aesthetically more pleasing, but it might come at a cost of an increased (false) sense of security, and in effect a reduced safety.

    (I got this exactly wrong – thanks Tobias for pointing it out – it is actually the opposite, on the proposed speedometer design, the hand would move more evenly – so besides being safer, it would be more aesthetical as well, the only downside seems to be the reduced resolution in the low range)

Quick web app ideas

A few quick web app ideas, to get the ball rolling.. Some previous ones.

1. Your English is so 1890.

There was a popular widget some time ago, in which you paste some text that you wrote (or it processes your blog) and through a statistical analysis of word frequencies it tells you whether you write like Hemingway or more like Virginia Woolf or like Edgar Allan Poe or whoever. Then you get a badge you can put on your blog or on your wall in your favorite social network. It was quite nice and popular, although I can’t find it anymore (EDIT: here it is).

Mine is a tweak on this idea. Google has released a data set with the frequencies of words in books throughout the years (ngrams.googlelabs.com). Say, you might find that “computer” appeared in 5% of the books in 1970 and in 15% of those in 1985 (I am making this up). So, given any year, you can easily find out how likely a certain word is to appear in a randomly picked text. With Bayes rule and some reasonable assumptions we could reverse this and for a given snippet of text, compute the probability that the text was written in 1800 or in 1850 or in 1900, etc. We would pretend that a priori the text is just as likely to come from any year. This is not exactly true, since we know the text comes from the present, or at least we know that the amount of text available from any year grows as we get closer to the present, but let’s ignore all that for a moment. It would be more fun than exact science anyway. However, it could still generate interesting comparisons between the style, choice of words, favorite topics of different people, or the styles of different authors from the past. For example we might discover that some authors had a language that anticipated (or influenced) the future, while others were stuck using the language of the past.

2. World map with radios.

Online radios are a nice tool in learning any language, but often it is hard to find suitable ones. For learning or practicing a language the topic is perhaps less important as long as it is at least mildly interesting and as long as there is sufficient amount of talking (instead of just music), with a clear pronunciation that is representative for a given language/dialect. So what I would like is a world map with a curated list of online radio stations, placed on the map with pins, and for each station it would be given exactly what language/dialect they use, approximately how difficult are the topics discussed, what is the amount of slang, etc.

3. World map with unofficial regions.

Finding a political map with the official borders for countries/states/counties/etc. is easy. There exist however, many other types of regions:

  • historical ones (those that in the past might have formed an administrative unit but they don’t anymore)
  • linguistic regions (the region where a language/dialect is spoken)
  • geographic regions not necessarily corresponding to administrative units (Silicon Valley, Gangetic Plain, etc.)
  • regions of scientific interest: (the range of the Neanderthal man, the region of influence of classical Greek culture, the range of the Bengal tiger in 1900)
  • etc.

It would be nice to have a tool for annotating maps in this way (possibly based on Google Maps) just as easily as we can add locations or paths between different points. Such regions, once drawn could be saved, embedded, printed, used in presentations, news articles, lectures, etc. or shared similarly to how users can share photos attached to places on Google Maps. Then, instead of the usual political/geographic view of the world, we could choose other filters/overlays created by others.

Another type of overlay would not have strict borders like regions, but would be a mapping of values onto geographical coordinates. The function value could be shown in colors or using contour curves or any other visualization, and the values could come from uploaded datasets or from some specified function. These types of visualizations exist of course, but I don’t know of a simple interface where users could create such maps.

4. World map live postcard.

A simple service that shows an empty world map and generates a unique url on demand. If someone visits the url, their geographic location appears on the map. This can be done of course with analytics software, but the key here is that a) this is real-time b) accessible to everyone who has the url and c) starting a new map is just one click with no registration and then the url can simply be copy/pasted and sent to others.

Example usage: I am regularly visiting a forum, I am curious where the other visitors are from, so I put the link in the message and watch the map in real time.

Example 2: I am chatting with a group of friends and I hear that a common friend of ours is ill. I create a new map, and send the link to everyone, so when they click it, they appear on the map. They can also watch as more and more people click the link. They can also leave one liner messages that will be displayed on the map next to their location. As our friend checks the link, he/she can see “get well soon” messages popping up from all over the world. This is all a bit similar to Wikipediavision, but more user-generated and with throw-away urls.

5. Centralized phpBB spam filter.

PhpBB is a robust, well-known and loved dicussion board (forum) software that has been around for a long time. The main aspect in which I find it inferior to centralized services like Disqus is spam. Spam filtering is something that is simply easier to do in a centralized way than for each individual board separately. This centralized filter would be a subscription-based API that I can call whenever I get a message on my board and it returns a spam/not spam flag. This can be integrated into my phpBB installation and the necessary action is taken automatically. This way, I wouldn’t have to bother users with captcha’s, registration, senseless restrictions, and I could still have them use the familiar interface of phpBB. If such a service works for WordPress comments and other blogging software, surely it can be retrofitted for phpBB (?).

6. Name face search.

When picking a baby name, many parents would like to find out as much as possible about it, including the history and etymology of the name, which historical persons have had that name, current popularity of the name, etc.

In this service you type in a first name and it gives you the photos of 100 random people having that name. Looking at the age of people on the photos, you can guess whether the name was more popular one or two generations ago than it is today. Also useful if you hear a name in a foreign language and you are not sure whether it is a male or female name. Images of faces can be found on Facebook or on Google Images, but there are still some technical difficulties: a) all 100 should be different persons b) the images should be filtered so that they only contain photos of people and not other random images.

More random ideas

Another bunch of random ideas off my chest. If interested, check out the previous set also, or the web app ideas before them. The usual disclaimers apply…

1. Facebook downvote button

Obligatory disclaimer: I don’t have a Facebook account. But I did have one for a short period, so I have a rough idea what it is about. Unless things have changed dramatically, what is sorely missing is the dislike button. Of course it goes against the feel-goody nature of the whole experience, so probably it will never be added.

On the other hand, many elements that are “likable” are also commentable in some way. So the idea is a browser plugin that adds the thumbs-down button within the browser (something like a GreaseMonkey script). When the user clicks it, it writes a comment with the text “I don’t like this”. Those who have the plugin installed will have these comments hidden and only see the dislike-count summary of them. Those without the plugin will see the comments, which make sense on their own, so the whole system degrades gracefully.

2. Software feature matrix

This one is a website built around the idea of unbiased comparison of products. It groups existing software or web apps into categories and lists a large set of agreed-upon features, ticking those that a software product implements, with extra information where it does not fully implement it, etc. Such tables have been written for many categories of software, for example this list of CMS software on wikipedia, but the hypothetical website would contain tables for every imaginable category, both Desktop software and web apps, with up-to-date price information and many other features. How to collect the data and how to ensure the information is unbiased, are nontrivial questions, but if done well, such a website could be quite useful.

3. Namespace explorer

There exist very good services that help us in coming up with domain names for a project. However, nowadays you might also want to ensure that you can find a matching account name on Twitter, Gmail, Facebook and who knows what other services. This application would suggest names that are available on all these services and would automate to some extent the creation of accounts. Some intuitive navigation interface or visualization of these namespaces to help find available names.

4. Paper airplane simulator

Software for modeling paper airplane folding and simulation of their aerodynamic behavior. Additionally, a system that comes up with new folding designs, evaluates and improves them using genetic algorithms or other optimization techniques.
Karl Sims’ evolved creatures meet Robert Lang’s origami work.

5. Juggling tricks optimizer

And you thought the previous idea was childish and useless. This one supposes a rich language for describing the mechanics of juggling n balls. Basic siteswap notation (although beautifully compact) doesn’t capture the full range of possible patterns. The hypothetical language could describe throws, catches, multiplexes, hand movements, the anatomically possible range and speed of movements and the physical plausibility of every ball trajectory, possibly including collisions.

Using this language we can describe any juggling pattern ever performed in the past or in the future. Now all we need is a pair of scoring functions. The first function tells how difficult a pattern is (described as a string in our language), based on the speed of movement, the resting time between throws/catches and various physiological considerations. The other function tells how interesting the pattern is. I am not even speculating on how such function would look like. Interestingness is related to difficulty, but there are some easy tricks which are very nice (and vice versa), so there is something more happening here. Having these components in place (a big if, I know), we can start optimizing using our favorite genetic algorithm from the previous idea.

The system then invents the most interesting, most hard to perform (but possible!) juggling trick. Then it designs the most interesting – yet easy pattern. Tweak the two functions, optimize again, invent, juggle, etc.

6. Car parking game

A simple game (mobile or desktop) with realistic mechanics but extremely simple graphics and control. Actually control would not necessarily be simple, but it would instead resemble the control of a (manual) gear shift car with the 3 pedals and all. The cars are basically rectangles, but the acceleration, steering, braking, collision are realistic as much as possible. Possible tasks include parking in some small place, side-parking, turning in 3 steps in a small place, etc. etc.

Also suitable as a programming project for children.

7. Song illustrator

This plays on a misconception I had when I was 4 or 5. I was familiar with audio cassettes, from which I would listen to stories and songs for children that my parents would put on for me to hear. I had heard about video players before, and I vaguely understood that they are playing moving images (I was familiar with TV already), but I seriously misunderstood something: I thought that video players could play the same audio cassettes I was listening to (say, “The Little Prince”, being read by someone). As they played the audio cassettes, I thought they would render the moving images on the spot, creating vivid animations similar to those I imagined upon hearing the text (or more interesting). It never crossed my mind that in order to have a video version, a bunch of actors would have to go through the trouble of acting it all out in front of a camera. That is so much worse than the way I originally imagined it.

So this idea is a modest version of the original concept: take a song together with the lyrics, feed it into this program, which then creates a video for it automatically and synchronizes it to the music. As a first approximation it finds Flickr images corresponding to the words from the lyrics and makes a slideshow out of those. I know, reality is not so interesting sometimes.

8. Visa matrix

Back to more realistic waters, this one is a useful tool for world-travelers and world-citizens. If there are 200 countries, make a 200-by-200 matrix, where the column shows your citizenship, the row shows which country you want to travel to and the entry shows what document you need to travel there. For a summary view (for example as a printable poster), the entries can be color-coded: from green to red showing “no document needed”, “passport needed”, “visa needed”, “entry not allowed”, etc. In the online version the cells contain links to the embassy websites where more information is available and the visa application can be initiated. All the necessary information is publicly available already, it is just not collected (as far as I know) in one place like this.

9. Online store where you can negotiate

Extremely half-baked, I am thinking this out as I write it down. They say “everything is negotiable”. While that holds only in a limited way, say in a usual mall in North America, it is very true in a bazaar, in the other side of the world. The price you get depends on how much you need it, how desperate the seller is to get rid of it, your and his/her negotiation skills and many other factors. While not all of these can be captured in an online store, certainly some subset of it could be. Currently the online stores give “offers” to you, which is too rigid. They might even give personalized offers, knowing your shopping history, personal data, etc.

In many cases, however, they might be perfectly willing to sell the product at a cheaper price if they knew for sure that I was not going to buy it for anything more than that. On the other hand they want me to pay the maximum amount that I can afford and that I am willing to pay. Probably there are legal restrictions on the exact ways to perform such price segmentation, but in theory there could be an online store where I can make a counteroffer: “oh no, I’m not buying that e-book reader for $129, I’ll pay $99 maximum, and that’s it. At most, I can spend another $20 to buy some books, but that’s all I can spend today. Take it or leave it.” Once an offer is made (from either side), it is binding. The online store would have my purchasing- as well as negotiation history, so it could decide whether it would take my offer or would rather make a counter-counter-offer and so on, ad-infinitum.

10. Random wiki image as wallpaper

Wikipedia has a nice “Random article” feature, that can easily take information-addicts on an hours-long semi-pointless article-hopping ride. Something slightly less addictive is the WikiMedia random file feature:


The results are mostly images. You clicked it? Now click it again! A slideshow of these would make a nice, educational screensaver or periodically-updated wallpaper. There should be some check to filter out images that are too small, that are obviously uninteresting (such as portions of maps or flags of countries), and some context would be nice also, such as title, description, maybe titles of a few of the linking articles.

EDIT: I made this: http://lkozma.net/blog/random-wiki-image-wallpaper/

Random web app ideas

Here are some more web app ideas. As I am not implementing any of them right now, I’m posting them in the hope that someone else will find them interesting and build something similar. They might not be useful in their current form, but maybe they can be further iterated and inspire someone to come up with something else. Let me know in the comments what do you think, especially if any of these exist already.

You might find interesting the seven web app ideas I posted previously.

1. Wikitravel itinerary

The way I travel might not be the most typical, but here is how I usually prepare before leaving: I download and print all the relevant articles from Wikitravel and Wikipedia. These include the place where I actually go, nearby sites worth visiting, places I will pass by on the train, generic articles about the region, country, etc. I then usually read all this while traveling or whenever there’s nothing better to do during the trip.

To reduce the amount of paper I carry, I slightly edit and compress the articles before printing, removing some sections or pictures, text that is common between articles, etc. For the places where I stay longer I leave most of the information, for places I just pass through on the train I remove the restaurants, hostels section, leaving just a short description of the place. If I travel with other people we often share some of this preparation, but it still takes a few hours of work that could be easily automated. In particular it takes some effort to hunt down all the relevant articles, because when you don’t know much about a place, you won’t know what is in its neighborhood either, that might have an article about it.

By the way, Wikitravel is great, this method has given us so far more up-to-date, more interesting and more reliable reading material than most traditional travel guides. So the web app would do the following: I enter where I will go, possibly a few other places that I pass by and it fetches all the possibly relevant articles from Wikipedia and Wikitravel using geographical location of places and returns a small, ready to print document. It can also ask what languages I understand and look for articles written in those. Possibly other sources could be added, such as maps or train timetables, but this alone would be quite useful already. If not for printing personalized travel guides, it could work as a mobile app: download the articles on a mobile phone to allow offline browsing while on the road.

2. External sites analytics

There is a trick described here that uses the different styling of visited links to sniff whether the user has visited some other websites or not. It was suggested that this hack could be used to customize the social “share” buttons, in order to show only those services that the visitor has used in the past. The same technique could be used to find out more useful information about the visitor: which search engine they use, whether they read the NY Times or the WSJ, if they are a Gmail or Yahoo mail user, whether they use the competitor’s product, etc. The technique does not allow reading the full browsing history, it just gives yes/no answers for a predefined set of websites.

The user of this analytics service would choose which other websites they want to follow, and for each visitor they would get the list of websites from this set that the visitor has actually visited before. Combined with the traditional analytics data: referring site, browser version, length of visit, this could be valuable business information.

Some immediate disadvantages:

  • the technique can raise some privacy and ethical issues, although the information is leaked by the browser anyway, it is considered a bug, so it might reflect negatively on a website that wants to exploit this data. Also, most users would not be aware that this type of information can be collected. On the other hand many users are unaware of traditional analytics as well, which doesn’t deter websites from collecting it.
  • the method is not 100% accurate, and it does not work if the visitor has deleted their browsing history
  • it could potentially be embarrassing for a website to expose the list of other websites they care about (acknowledging competitors, important news sources, etc.)

3. Related page 404

Larger web sites such as those of big corporations or universities suffer inevitably from the deterioration of links. Pages often change addresses, and even though the material is still available, it can not be found at the original address. Services like Google Cache come in handy sometimes, but they might not have indexed a correct version of the page or they might contain outdated content (often the page is available somewhere else with more up-to-date content, for example a university admissions page).

A quick solution would be if the “page missing” message would be followed by suggestions of pages which are similar to the old page that used to be there. This could be achieved by a site search engine that stores important keywords of indexed pages and would search within the domain for those keywords, if the page is currently missing. This could be a feature of site search engines, either hosted on the server or managed remotely. This is similar to the second idea in this list.

4. Stacked source widget

World map widgets that show where your website visitors are from used to be very popular. Also, there exist real-time widgets that show where the last 5 or so visitors are from (both geographically and also from which site they were referred). One combination I haven’t seen yet is a stacked graph visualization of traffic sources in the past week/month or year. This would show how total traffic numbers have changed, and also when certain sites were sending more traffic than others. It could be interesting for example to see how at some point your page was featured on reddit, later on slashdot, how traffic was picked up by other sources afterwards, etc. Of course, all these can be visualized by existing analytics packages, but I am thinking of a widget that would make this information available to the visitors of the site. The various sources would be clickable and the visitor could discover related interesting material by going to the sources. I am not sure there would be an incentive for site owners to use this, however, which is why this idea is half-baked :)

5. Unicode obfuscator

This is a very simple service inspired by this post. I enter some plain English text and it returns a set of unicode characters from other languages or special characters that visually resemble the latin letters (ignoring the actual pronunciation or history of the letters). It can be specified how much distortion should be added to the text:

at level 1: hello -> hello

at level 2: hello -> ⱨěłļō

at level 3: hello -> ɧԐԼ˪◌

While I don’t have a specific use case in mind for this, it could be used wherever you want text to be human-readable but not searchable. Otherwise it could be just a fun and useless way to write on forums, not unlike metal umlauts in band names.

6. Comment whiteboard

This one is simple: instead of the usual text comment box after a blog post or article, have a whiteboard on which visitors can draw whatever they want. This would need just the minimal tools, such as picking colors, drawing, erasing, perhaps zooming. Visitors could draw at the same time and they could overwrite each other’s drawing anytime. The history of the whiteboard could be played back, so nothing would be actually lost. Obviously, most of the time nothing would happen so the playback could be sped up significantly to include only the times before something was erased/overwritten.

I am trying really hard to think of a scenario where this would be useful. Articles on math, where formulas would be difficult to type in comments? Nah, there are ways to let users type LaTeX or just dumb down formulas to plain text. Blogs for children who can’t write yet? Hmm, maybe not. Perhaps this one really is useless. Although it could feel quite natural on touch-screen devices.

7. Rotor game

This is a game idea which I couldn’t actually make to work. If anyone would pick it up and make something out of it, I would be super happy. It is based on the rotor-router model where each node is in one of a number of states. Let’s suppose it is actually a checkered paper and each cell can be in one of four states (indicated by an arrow pointing in one of four directions). A walker is passing through these cells, following the arrows, but after he passes a cell, the arrow in that cell will turn clockwise by 90 degrees.

This set-up leads to very interesting, seemingly chaotic behavior which is of interest to mathematicians and physicist, but I am curious whether some interesting board game could be designed from this premise. My first attempt was to have the user design the initial configuration of arrows such that they will guide a ball from start to finish. To make it more difficult, there can be several balls with intersecting paths, and the arrows have to be configured such that each ball gets to its destination. The problem is that this way the puzzles become either trivial or impossible to solve. If several balls can be moving at the same time, there are additional complications: can they pass through each other? What if they get to the same cell at the same time? etc.

I still hope some interesting game/puzzle could be designed from these rules, perhaps slightly modified (hexagonal field?), but I have given up searching for it for the time being. Well, this is not strictly a web app idea, but if the game turned out to be interesting, it could be implemented as one.

8. Zooming GUI for web

Zooming GUIs are a beautiful concept and there are some uses when they feel quite natural in practice (exploring graph data, browsing photo collections, certain data visualizations, mindmap-like tools, calendars, etc.) but somehow they didn’t become as widespread as they could have. There are many websites (mostly flash-based) built on zooming UI concepts, but I don’t know of a JavaScript based toolkit that would allow quick prototyping of zooming web-apps (using vector graphics, not bitmaps). I’m thinking of something similar to the Piccolo project for the Desktop, but in JavaScript. With proper controls, this could be most usable on touch-screen devices, although I’m not familiar at all with the current best native systems on those devices.