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."
Friday, September 14, 2007
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.
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.
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.
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.
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.
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.
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.
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
"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.
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
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:
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.
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:
- it allows people to take notes for themselves for easy browsing/search; and
- 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:
(Via TEDBlog.)
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:
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.
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.
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
* 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:
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.).
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:
http://www.cutecircuit.com/now/projects/wearables/fr-hugs/
From the Lover's Cups web page:
http://web.media.mit.edu/~jackylee/cups.htm
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?
After all, if potential customers are likely to see your product via personalization, why bother with paid advertising?
Subscribe to:
Posts (Atom)