Friday, September 14, 2007

Dangerous Knowledge

http://video.google.com/videoplay?docid=-3503877302082311448

"In this one-off documentary, David Malone looks at four brilliant mathematicians - Georg Cantor, Ludwig Boltzmann, Kurt Gödel and Alan Turing - whose genius has profoundly affected us, but which tragically drove them insane and eventually led to them all committing suicide.

The film begins with Georg Cantor, the great mathematician whose work proved to be the foundation for much of the 20th-century mathematics. He believed he was God's messenger and was eventually driven insane trying to prove his theories of infinity. Ludwig Boltzmann's struggle to prove the existence of atoms and probability eventually drove him to suicide. Kurt Gödel, the introverted confidant of Einstein, proved that there would always be problems which were outside human logic. His life ended in a sanatorium where he starved himself to death.

Finally, Alan Turing, the great Bletchley Park code breaker, father of computer science and homosexual, died trying to prove that some things are fundamentally unprovable.

The film also talks to the latest in the line of thinkers who have continued to pursue the question of whether there are things that mathematics and the human mind cannot know. They include Greg Chaitin, mathematician at the IBM TJ Watson Research Center, New York, and Roger Penrose.

Dangerous Knowledge tackles some of the profound questions about the true nature of reality that mathematical thinkers are still trying to answer today."

Thursday, September 13, 2007

The imperative vs functional decision in Scala

When programming in Scala, one needs to think about whether to use an imperative or functional approach (or some hybrid thereof) when writing most methods. Thinking about which approach to use so frequently could result in a significant waste of time.

One thing that makes OO development easier is the use of automated refactorings for evolving a class hierarchy. So getting things right at the start is not so important because you can easily change things later.

To address the imperative vs functional decision that one encounters in most Scala methods, one can similarly have automated refactorings for transforming code fragments from one paradigm to the other. In this way, you don't need to worry much about getting this decision right because it is easy to change it later.

Moreover, for those not so familiar with functional programming, such refactorings can provide guidance by helping them transform imperative code to functional code.

Wednesday, September 12, 2007

How Google could beat Facebook at its own game

Google could obtain a social network graph quickly from gmail accounts.

Moreover, it could release a platform similar to Facebook based on GWT but take it another step further by providing free hosting on its massive computer cluster.

There would be some sort of revenue sharing system in place for apps created using this platform.

Instead of hiring so many software engineers worldwide, Google could "outsource" much of their app development to entrepreneurs.

Although Google already acquires a few startups here and there, one would expect thousands of apps to be developed quickly in what I described above.

Thursday, August 9, 2007

Why social networks use bidirectional links even though unidirectional links are probably better

I think the main reason is simply to get people to invite their friends to the site, thus increasing the number of users via peer pressure.

For specialty social networks (or specialties within a general social networking site), your friends are probably not the best people to connect to. In that case, it would probably be better to use unidirectional links so that you can "subscribe" to anyone whom you would like to learn from.

Yet these unidirectional links -- while better suited in such cases -- are not great in attracting people to the site. And so such sites probably won't get enough critical mass to be interesting.

Instead of friend requests and acceptances, users should just be able to subscribe to other people via unidirectional links.

Such unidirectional links don't designate friendship at all, but rather, interest in keeping in touch with someone's activities (e.g., their subscriptions to discussion groups, the apps they add to their profile, etc.).

You could use some sort of reward to encourage people to invite their friends that has nothing to do with these links.

For example, wherever people are listed throughout the site, you could rank them based on the number of friends that they have invited to the site.

Sunday, August 5, 2007

Why not let online ads fight it out in a geometric real-time game played by advertisers and consumers?

In this approach, the advertiser would display his/her ad along with all the other ads currently on display.

Larger ads have the disadvantage that they will overlap with other ads and may end up being underneath many of them.

Advertisers may resize and/or move their ads at any time to reduce overlap.

Whenever two ads overlap, they will then have to fight it out to see which one will go on top. This fight is on-going and may involve one ad appearing on top, later underneath, then on top again, and so on.

To determine which of two overlapping ads goes on top, we would compare their current scores, where the score of an ad could be the number of visits minus the number of "hide" requests from consumers say.

One can view this approach as a geometric version of social news.

For a non-geometric version of this idea, we could have something like reddit but where the submitter determines and can change the rank of his/her link on the front page.

The issue is that a link ranked highly will have to share that rank with many links. We can have the probability that a user will see a link at rank k depend on the score of that link with respect to the scores of other links with rank k.

Monday, July 30, 2007

Why it is in Microsoft's self-interest to have an OS that is susceptible to viruses

If you are a commercial software developer, you would like an operating system where security risks (e.g., viruses) discourage users from pirating your software.

Yes, there's a limit to what users will tolerate. A system that is too insecure would not work. But the virus threat needs to be real to discourage piracy.

Ultimately, users do care about an OS with lots of software available. Many users will put up with some security threats to get that.

Saturday, July 28, 2007

Making random people famous

Consider a service that crawls the web for home pages and then displays one chosen at random each day for all to see and discuss.

It would be sort of like this Facebook app:

http://apps.facebook.com/fifteen/

The difference though is that people would not sign up requesting they be made famous. Rather, the service would do it without their permission.

Wednesday, July 25, 2007

The Software Garden: Software Quality Visualization for Non-programmers

The idea here is to come up with a visualization of source code that would give some indication of quality to non-programmers.

Imagine for example a service that indexes open source code and provides such a visualization in the form of gardens. A non-programmer could quickly examine and compare the gardens for some competing open source software applications.

Bad smells in the source code would manifest themselves in the form of a poorly maintained garden.

You could also show code evolution via an animation of the garden over time.

Tuesday, July 24, 2007

Visualizing Software Systems as Cities

From the abstract:

"This paper presents a 3D visualization approach which gravitates around the city metaphor, i.e., an object-oriented software system is represented as a city that can be traversed and interacted with: the goal is to give the viewer a sense of locality to ease program comprehension.

The key point in conceiving a realistic software city is to map the information about the source code in meaningful ways in order to take the approach beyond beautiful pictures.

We investigated several concepts that contribute to the urban feeling, such as appropriate layouts, topology, and facilities to ease navigation and interaction.

We experimented our approach on a number of systems, and present our findings."

http://www.inf.unisi.ch/projects/evospaces/publications/Wettel07b.pdf

If lifecasting is too much for you, why not try "Lifehinting"?

For many people, lifecasting is just too much of an invasion of privacy.

So why not consider "Lifehinting"? The idea here is to give clues as to what your life is like.

For example, you could do this by an algorithm that transforms a lifecasting feed into abstract animations, perhaps resembling VisualID Scenery. Similar sorts of activities would result in similar sorts of abstract animations.

After a while of doing this, your friends will start to get clues as to the sorts of things you do -- at least, for those activities that they are familiar with.

Monday, July 23, 2007

“I Am the Very Model of a Modern Major Googler” (Song)

Via Google Blogoscoped:

http://lauren.vortex.com/modern-major-googler.mp3

http://lauren.vortex.com/googler-lyrics

Also, check out the CSE Band, especially Theory Girl.

Study Stickies Facebook Application

I would appreciate feedback on my Study Stickies Facebook application:

http://apps.facebook.com/studystickies/

Study Stickies allows you to take notes (stickies) from books as well as online resources (e.g., pdf/html documents, videos, etc.).

The vision behind Study Stickies is two-fold:

  1. it allows people to take notes for themselves for easy browsing/search; and
  2. these notes accumulate allowing you to learn from others.

Imagine for example getting stuck on page 147 of your algorithms textbook or SQL reference. You might then see if others have made any insightful stickies for that page.

Tuesday, July 17, 2007

Using human computation games to promote your startup

In a previous post, I described a variation of the Listen Game that could be used to get people to look at online advertising carefully.


Another approach would be to build a custom human computation game for your startup to promote your startup in a more domain-specific way.


For example, if you are building an online video site, then you could provide a game similar to the ESP Game but adapted to video. Not only would this give you useful data to improve video search on your site, but it would also provide an engaging form of advertisement for your online video startup.

Will Wright: Toys that make worlds

From the talk description:
In a friendly, high-speed presentation, Will Wright demos his newest game, Spore, which promises to dazzle users even more than his previous masterpieces. Here Wright encourages users to create not households, as in The Sims, or cities, as in SimCity, but the entire universe, from single-celled life forms to galactic physics. While guiding us through his mesmerizing beta, Wright shares his thoughts on Montessori schools, Darwinian theory and long-term thinking, emphasizing, throughout, that Spore is not so much a game as an opportunity for discovery -- "an imagination amplifier."


(Via TEDBlog.)

Friday, July 13, 2007

Justin.tv + NeuroSky: Not just lifecasting but also mindcasting

From the NeuroSky site:

NeuroSky has developed a cost effective bio sensor and signal processing system for the consumer market. Our wearable technology unlocks worlds of new applications such as consumer electronics, health, wellness, education and training.

The neurons that comprise the brain work on electrical impulses. The last century of neurological research has shown us that brainwaves of different wavelengths indicate different emotional states, like a focused awareness, a meditative state, or drowsiness. Brainwaves have been used in medical research and therapy for years. We're bringing it to the consumer world.

Adding this technology to Justin.tv would allow viewers to get into the lifecaster's state of mind, thus making the lifecast more interesting to watch.

Thursday, July 12, 2007

Combining blogs and chat rooms

The idea here is to associate a chat room with each blog post. So instead of having people submit comments, they would participate in a real-time discussion associated with a particular blog post.

It is important to have a "chat schedule" for each blog post. For example, you might announce 3 chat sessions, each 20 minutes long, for a particular blog post. This sort of schedule is important because you would like to have a reasonable number of people available for real-time chatting.

Tuesday, July 10, 2007

Some unusual subreddit suggestions

Some unusual suggestions for subreddits:

* really new subreddit: accept only urls that are not indexed by google yet

* no longer there subreddit: accept only urls in the Internet Archive that are no longer functional

* give them a chance subreddit: accept only urls with low pagerank

* crawler subreddit: can only submit a url that is linked to from one of the urls on the front page of the crawler subreddit

* domain subreddit: accept only high level domain urls (e.g., http://cnn.com but not http://cnn.com/...)

* reddit user subreddit

Sunday, July 8, 2007

Using Photosynth as a tour guide

In case you still haven't seen Photosynth:

Our software takes a large collection of photos of a place or an object, analyzes them for similarities, and then displays the photos in a reconstructed three-dimensional space, showing you how each one relates to the next.

http://labs.live.com/photosynth/

Note that the software actually identifies the positions of the cameras that took the pictures in the collection.

So in fact, you can use this approach as a tour guide, taking you to places from which many pictures were taken (i.e., the positions of the cameras).

Imagine for example walking around a city while a device points you to nearby places from which many pictures were taken and orienting you in the direction of the often photographed scene.

Such a device could take into account context (e.g., time of day, season, purpose of the photograph, etc.).

The Hug Shirt and Lover's Cups

From the Hug Shirt web page:

The Hug Shirt is a shirt that makes people send hugs over distance! Embedded in the shirt there are sensors that feel the strength of the touch, the skin warmth and the heartbeat rate of the sender and actuators that recreate the sensation of touch, warmth and emotion of the hug to the shirt of the distant loved one.

http://www.cutecircuit.com/now/projects/wearables/fr-hugs/

From the Lover's Cups web page:

Lover's Cups explore the idea of sharing feelings of drinking between two people in different places by using cups as communication interfaces of drinking. Two cups are wireless connected to each other with sip sensors and LED illumination. The Lover's cups will glow when your lover is drinking. When both of you are drinking at the same time, both of the Lover's Cups glow and celebrate this virtual kiss.

http://web.media.mit.edu/~jackylee/cups.htm

Why personalization done well is not in Google's self-interest

If web search personalization is done really well, then it could have a very bad effect on paid advertising.

After all, if potential customers are likely to see your product via personalization, why bother with paid advertising?

Your percentile rank in terms of effort among single founders is...

Single founders often have problems with motivation. So why not build a service to motivate single founders to try harder?

For example, effort could be determined by looking at how much coding gets done each day. You would see your percentile rank among single founders in terms of this and other measures.

Effort isn't everything, but having that intense motivation that you find in multiple founder startups will probably help.

Mining your email to automatically broadcast your mood

This can give you useful information. For example, you might delay an email asking for something if the receiver is currently in a bad mood or too busy.

This could also be useful for suicide prevention. Imagine Google doing this with gmail to keep its users mentally healthy and safe. Signs of depression would be reported automatically to mental health professionals.

Justin.tv suggestions

Some ideas for Justin.tv:

* allow viewers to control imaginary friends who can interact with Justin; only he and the viewers would be able to see and hear them.

* have one channel that gives the most interesting video among all other channels in (near) real-time based on user feedback (e.g., in the chat rooms)

* a search engine for clips based on associated chat text; yes, the chat is pretty noisy data but I think you will get interesting results anyway

* imagine using justin.tv to augment your mind, taking advantage of the intelligence and knowledge of your viewers

* use justin.tv as a way to interview people for jobs

* when Justin meets someone for the first time, viewers can show flashbacks from Justin's life to give a first impression (and the choice of flashbacks would depend on the person he is meeting for the first time)

* have a prediction market about all sorts of short-term events (e.g., in the next day/week) in Justin's life

Remote flying of real model planes over the net

Consider a web 2.0 startup where you would pair up people with
model airplanes with people who would like to fly them remotely via
the web from the comfort of their homes.

A video camera would transmit live video from the plane and/or the
ground.

The owner of the plane would be responsible for the safety of the
plane. If flight inputs coming in via the web put the plane in danger,
then the owner can override them temporarily.

Flight inputs may come in from one person or a combination of people
via some voting mechanism. Users who would like more control over the
plane would pay more.

Ranking search results based on IQ

Instead of using PageRank, how about computing an "IQRank" that takes into account the IQs of people?

For example, you could consider the IQ of the creator of the site as well as the IQs of people who link to the site.

The creator of a site would have a greater incentive to undergo IQ testing so as to have some chance of ranking highly.

Not sure what sort of incentive you could have for encouraging people linking to a site to undergo IQ testing.

How to get people to look at online ads carefully

Take a look at Listen Game, a human computation game in the style of the ESP Game. From the Listen Game site:

Listen is a game that lets you tell others what you think about music. It also lets you hear what other people think about music.
Music is a subjective form of art. We all have our own unique experince when listening to a song. Even though you might think that "Hangin' Tough" by New Kids on the Block is "explosive and revolutionary", your friend may think it's "cheesy and annoying". Play Listen Game and see if the world agrees with you!

Now clearly, this idea can be used to give first impressions on all sorts of things -- not just music. And so why not apply it to online advertising? Not only would this motivate people to look at ads very carefully, but it would also give advertisers meaningful feedback on their ads so that they can improve them.

A variation on likebetter.com to detect cheating in online chess

Maybe we could address cheating in online chess by showing various images throughout a game.

The intuition here is that these images will have some impact on your thinking patterns.

So the idea is to see whether you are reacting as a typical human being would when viewing these images while playing chess.

For example, some images may have a negative effect in tactical positions.

One can have players play a against a computer every once in a while without telling them to see if they are cheating.

When will we see "ball cams" in sports?

I think ball cams would make a sport like golf a lot more fun to watch. Also, pitch movements in baseball would become more obvious.

So how would you build one? Where would the ball look generally? How would you provide stable video in the presence of a spinning ball?

Building a general purpose 'human computer'

This is a computer that anyone can program.

Functions are written using high-level English. Each such function along with the input can be viewed as a two-player game.

As with the ESP Game, when two players agree on the output, they would then move on to the next function (possibly from a different program).

As with the ESP Game, players can pass if they are presented with something that is difficult. And "programmers" get feedback on what parts of their program caused problems. They can try rewriting those parts.

Issues include quality control, debugging, profiling, and refactoring your program into parts that are easy enough to be games.

Designing a twisty puzzle construction set

Many people have a fascination with twisty puzzles:

http://www.byrden.com/puzzles/MainFrames.html

I suspect that many people would like to invent new ones as well.

So how would you build a twisty puzzle construction set program to help them do so?

What sorts of constraints would you put on the puzzles so that the program can provide instructions to build them for real?

Saturday, July 7, 2007

Justin.tv vs God

Does lifecasting compete with religion as a way to keep you well-behaved? Does it also encourage people you meet to treat you better than they normally would?

Religious people are careful about their actions because they believe that God is always watching them.

With lifecasting, you are being watched all the time also. In essence, the viewers play the role of God.

Why cheating is good for human computation games

After reading about Luis' new game for identifying beautiful images, it occurred to me that cheating would enhance human computation games.

The reason being is that cheating adds a new dimension to these games, namely strategy.

So in the game for identifying beautiful images, you can try to get into your partner's head based on the results of previous image pairs. This adds a new dimension to the game that is missing in the ESP Game.

So instead of combating cheating, why not encourage it explicitly by providing features to help players cheat? For example, in this beautiful image game, one can show the results of past image pairs while the game is in progress.

Even in the presence of such cheating, one may still get lots of useful data for subjective problems. In fact, one may get more as the games would have a new dimension to them.