Chess… more elusive than I had imagined

I used to be a passionate chess player while in High School and even played in a few tournaments. But even though a faint lingering interest has persisted in me, I only played very occasionally as a hobby during undergrad.

Recently I came across a very interesting article about chess, and a group of people who are on a mission to solve it! Does white win? Does black win? Or is it a forced draw? (my bets are on black by the way). They are working backwards and so far they can resolve any situation with 6 or less pieces on the board (The lookup table is on the order of 1Tb!!). Below is a summary of some of the most interesting things I got from the article and a little bit of associated research.

Look first at the image on the left: white can force a win in 99 moves. Even better, it turns out that there is only a SINGLE winning move for white, and every other non-suicidal move results in a draw. Can you figure out the move? I couldn’t. No offense but I agree with the original article when it says that noone could. The winning move is actually Kf2-g2 (i.e. King moves to the right)… pretty random! The other figures are taken from Wikipedia. The one on the right (517 moves) is the longest forced win sequence known.

I find these examples amusing. To me it shows that human players are most likely just barely scratching the surface of the game because we are simply not good enough to do better. If they take the search further to the middle game or even the openings, is it possible that we find out that some moves that are generally accepted as good idea are in fact a bad idea? Is it possible that we are “doing it wrong”? Does the standard opening move pawn to e4 lead to forced loss in 1700 moves? This article seems to suggest that chess may be much more volatile than we originally thought, and that the answer could be yes.

This link is the project website.
In particular, if you are interested, I encourage you to also check out this interactive applet that lets you set up any of these positions and actually step through the solutions.

Fully appreciating the difficulties of Computer Vision

My parents asked me recently about this “Computer Vision” course that I am taking. I told them that it is mostly about making computers “see” and recognize objects in an image. Naturally, just as many other people I’ve come across before, they were confused about why that is difficult. I mean, for example you look at the picture on the left and see a chair in it. It’s so effortless! What’s the problem? The problem, I always go on to explain, is that the programs we write do not come with a Visual Cortex that does … not for a lack of better word, magic… and our task is MUCH more difficult than most people often realize. To illustrate the problem I always like to show explicitly what the computer really has to work with to accomplish the recognition task: a huge array of all pixels’ Red Green and Blue component that together give the color of that pixel. Below is a MUCH-truncated listing of one such array that stores an image:

(17, 16, 11), (124, 120, 85), (120, 112, 76), (122, 114, 78), (122, 124, 87), (118, 114, 79), (126, 118, 81), (122, 114, 78), (123, 115, 79), (103, 110, 69), (123, 119, 84), (124, 116, 77), (122, 114, 75), (126, 118, 82), (115, 112, 79), (121, 117, 82), (124, 116, 80), (125, 117, 81), (50, 55, 23), (121, 116, 78), (119, 111, 74), (121, 113, 74), (126, 117, 84), (20, 17, 12), (121, 117, 82), (119, 111, 75), (120, 112, 73), (121, 115, 79), (115, 111, 76), (117, 109, 70), (118, 110, 74), (123, 115, 78), (105, 111, 85), (122, 116, 82), (115, 110, 70), (117, 107, 71), (120, 114, 80), (112, 109, 74), (121, 112, 81), (102, 101, 57), (117, 110, 66), (60, 63, 36), (112, 106, 72), (106, 101, 63), (106, 98, 62), (115, 111, 66), (18, 18, 18), (109, 107, 66), (34, 34, 10), (110, 101, 62), (115, 110, 72), (116, 108, 72), (102, 94, 55), (94, 91, 58), (110, 103, 61), (24, 27, 10), (108, 100, 63), (74, 73, 42), (100, 91, 58), (114, 109, 67), (111, 109, 70), (95, 86, 53), (27, 24, 17), (94, 87, 43), (87, 88, 57), (99, 94, 62), (76, 73, 42), (77, 70, 41), (78, 73, 44), (20, 19, 17), (81, 79, 54), (18, 18, 18), (75, 70, 38), (107, 103, 66), (102, 93, 60), (72, 66, 40), (59, 57, 34), (14, 10, 1), (88, 92, 65), (72, 64, 51), (52, 53, 35), (42, 37, 17), (104, 95, 66), (101, 99, 60), (53, 46, 30), (21, 22, 17), (62, 61, 43), (61, 62, 28), (75, 70, 38), (33, 31, 16), (29, 27, 15), (50, 44, 30), (15, 16, 11), (6, 5, 1), (25, 27, 22), (47, 44, 35), (91, 85, 49), (89, 81, 44), (54, 48, 34), (20, 18, 21), (7, 7, 5), (103, 109, 71), (14, 10, 0), (28, 29, 21), (19, 18, 14), (88, 80, 44), (76, 75, 47), (46, 44, 29), (7, 9, 8), (8, 10, 7), (63, 65, 28), (77, 69, 48), (12, 11, 7), (7, 5, 8), (77, 73, 46), (20, 24, 23), (12, 12, 10), (18, 18, 18), (16, 16, 16), (84, 81, 46), (57, 57, 47), (11, 11, 11), (11, 11, 11), (63, 62, 44), (103, 113, 88), (21, 26, 19), (13, 13, 13), (24, 24, 24), (85, 80, 51), (14, 16, 11), (32, 32, 30), (26, 26, 26), (13, 9, 8), (100, 100, 74), (15, 14, 9), (14, 14, 14), (9, 9, 9), (80, 74, 38), (19, 25, 25), (6, 6, 4), (19, 19, 19), (7, 7, 7), (80, 75, 46), (13, 14, 16), (13, 13, 13), (18, 18, 18), (81, 76, 47), (131, 132, 100), (13, 13, 13), (12, 12, 12), (13, 13, 13), (75, 65, 38), (18, 16, 17), (12, 12, 14), (9, 9, 9), (47, 47, 39), (75, 71, 44), (14, 13, 18), (13, 13, 13), (10, 10, 10), (53, 48, 26), (20, 16, 15), (12, 12, 14), (10, 10, 10), (12, 12, 12), (46, 45, 27), (23, 14, 17), (7, 7, 7), (8, 8, 8), (12, 14, 3), (49, 51, 30), (8, 7, 12), (9, 9, 9), (14, 14, 14), (21, 15, 19), (39, 24, 21), (9, 8, 13), (10, 10, 10), (11, 12, 16), (13, 13, 11), (20, 18, 21), (6, 6, 6), (10, 10, 10), (12, 13, 15), (101, 67, 42), (20, 20, 22), (8, 8, 8), (10, 10, 10), (15, 16, 20), (54, 43, 37), (17, 17, 17), (11, 11, 11), (11, 11, 9), (16, 15, 13), (39, 39, 41), (17, 17, 17), (11, 11, 11), (11, 11, 9), (94, 72, 51), (32, 32, 32), (6, 6, 6), (14, 12, 13), (7, 8, 10), (28, 32, 31), (18, 18, 18), (20, 20, 20), (17, 17, 17), (97, 73, 47), (27, 27, 27), (17, 17, 17), (27, 27, 27), (18, 20, 19), (37, 36, 31), (25, 25, 25), (20, 20, 20), (35, 35, 35), (18, 20, 19), (33, 33, 33), (18, 18, 18), (24, 24, 24), (37, 37, 37), (39, 41, 36), (31, 31, 31), (6, 6, 6), (31, 31, 31), (37, 41, 40), (41, 41, 39), (21, 21, 21), (20, 20, 20), (36, 36, 36), (41, 38, 33), (31, 31, 31), (19, 19, 19), (27, 27, 27), (32, 36, 35), (36, 40, 41), (29, 29, 29), (22, 22, 22), (35, 35, 35), (27, 33, 31), (36, 36, 36), (21, 21, 21), (26, 26, 24), (38, 38, 38), (38, 42, 43), (31, 31, 31), (6, 6, 6), (32, 32, 32), (30, 36, 34), (37, 41, 40), (20, 20, 20), (18, 18, 18), (37, 39, 38), (42, 44, 43), (32, 32, 34), (19, 19, 21), (27, 25, 26), (31, 37, 35), (40, 42, 39), (28, 28, 28), (23, 23, 25), (35, 37, 36), (29, 33, 32), (38, 38, 40), (18, 18, 18), (25, 20, 24), (32, 36, 35), (44, 45, 40), (31, 30, 35), (10, 10, 10), (33, 33, 31), (33, 37, 36), (41, 42, 37), (25, 25, 25), (7, 5, 6), (31, 35, 34), (47, 48, 43), (37, 37, 37), (20, 20, 18), (28, 27, 23), (34, 38, 37), (42, 43, 38), (25, 26, 30), (20, 22, 19), (33, 37, 38), (28, 32, 31), (38, 40, 39), (14, 15, 19), (21, 20, 16), (32, 36, 35), (45, 46, 41), (27, 29, 26), (22, 23, 27), (33, 35, 30), (33, 37, 36), (40, 41, 36), (18, 21, 28), (4, 5, 7), (32, 36, 35), (45, 46, 41), (24, 28, 29), (25, 27, 39), (28, 29, 24), (32, 36, 35), (43, 44, 39), (25, 28, 37), (29, 31, 46), (31, 35, 36), (30, 34, 33), (32, 37, 41), (38, 42, 51), (11, 12, 16), (32, 36, 35), (47, 48, 42), (33, 36, 41), (48, 50, 62), (33, 38, 41), (33, 37, 36), (43, 44, 39), (36, 43, 53), (42, 46, 55), (32, 36, 35), (46, 47, 42), (36, 43, 51), (43, 50, 60), (22, 25, 30), (34, 38, 37), (44, 44, 42), (43, 49, 61), (50, 59, 68), (24, 28, 27), (32, 36, 35), (37, 42, 46), (47, 56, 65), (43, 50, 58), (33, 37, 36), (47, 47, 47), (40, 49, 66), (46, 56, 65), (29, 34, 37), (33, 37, 36), (43, 43, 43), (44, 53, 62), (45, 56, 62), (34, 38, 37), (51, 51, 51), (46, 50, 59), (45, 55, 64), (45, 54, 59), (34, 38, 37), (47, 47, 47), (44, 53, 62), (43, 52, 59), (40, 44, 43), (34, 38, 37), (45, 46, 50), (42, 49, 59), (48, 58, 59), (34, 38, 37), (49, 49, 49), (44, 51, 61), (38, 45, 51), (47, 53, 51), (35, 39, 38), (48, 48, 48), (44, 51, 61), (13, 22, 21), (34, 38, 37), (54, 54, 54), (41, 45, 46), (40, 45, 49), (25, 31, 27), (35, 39, 38), (48, 48, 48), (46, 49, 54), (22, 26, 29), (31, 35, 34), (33, 37, 36), (45, 45, 43), (33, 36, 41), (6, 10, 9), (35, 39, 38), (51, 51, 51), (41, 46, 42), (20, 21, 23), (31, 37, 35), (35, 39, 38), (49, 49, 49), (30, 36, 36), (15, 16, 18), (34, 38, 37), (56, 56, 56), (44, 45, 40), (27, 27, 25), (7, 8, 10), (37, 41, 40), (54, 54, 54), (36, 39, 32), (15, 15, 15), (28, 32, 31), (36, 41, 37), (48, 49, 44), (29, 30, 24), (13, 17, 20), (37, 38, 40), (52, 53, 48), (38, 40, 35), (10, 11, 15), (16, 17, 19), (40, 42, 37), (49, 50, 45), (39, 39, 41), (20, 24, 27), (38, 40, 39), (54, 54, 52), (44, 45, 40), (12, 13, 17), (18, 22, 25), (41, 42, 36), (53, 54, 48), (37, 37, 35), (18, 22, 25), (19, 19, 17), (43, 44, 38), (46, 47, 42), (26, 26, 26), (19, 23, 26), (40, 40, 40), (52, 53, 48), (39, 40, 35), (20, 24, 27), (21, 25, 26), (44, 45, 39), (52, 53, 48), (38, 38, 38), (18, 22, 25), (41, 41, 41), (54, 54, 52), (45, 46, 41), (21, 25, 28), (27, 31, 34), (45, 46, 40), (53, 54, 49), (35, 35, 35), (24, 28, 31), (30, 30, 32), (46, 47, 41), (47, 48, 43), (23, 23, 23), (28, 32, 35), (43, 44, 38), (50, 51, 46), (39, 40, 35), (26, 30, 33), (29, 32, 37), (47, 48, 42), (47, 48, 43), (42, 42, 42), (32, 36, 39), (40, 40, 38), (50, 51, 46), (42, 43, 37), (28, 32, 35), (31, 35, 38), (47, 48, 42), (45, 46, 41), (30, 30, 30), (32, 36, 39), (40, 39, 45), (48, 49, 43), (42, 43, 38), (28, 28, 28), (33, 37, 40), (42, 44, 33), (45, 46, 41), (32, 33, 28), (33, 37, 40), (36, 37, 42), (49, 49, 41), (37, 37, 35), (42, 43, 37), (36, 41, 45), (42, 41, 37), (37, 39, 38), (31, 33, 30), (30, 35, 38), (32, 37, 41), (45, 45, 37), (30, 32, 29), (24, 26, 25), (33, 37, 46), (36, 40, 43), (48, 48, 38), (22, 24, 23), (31, 33, 28), (35, 40, 44), (48, 45, 38), (38, 40, 39), (14, 16, 15), (37, 41, 44), (36, 42, 42), (44, 45, 37), (56, 58, 55), (26, 29, 20), (41, 46, 49), (33, 37, 36), (65, 68, 61), (64, 66, 63), (35, 40, 46), (38, 43, 47), (31, 32, 27), (65, 66, 60), (53, 53, 53), (39, 45, 43), (41, 43, 55), (30, 29, 25), (54, 51, 42), (35, 31, 30), (37, 42, 46), (27, 32, 25), (83, 77, 61), (53, 47, 31), (37, 42, 45), (43, 48, 52), (43, 39, 27), (110, 104, 82), (43, 36, 17), (35, 40, 43), (44, 45, 27), (142, 135, 106), (133, 126, 100), (44, 46, 45), (36, 41, 45), (57, 50, 31), (146, 133, 101), (136, 125, 97), (37, 46, 43), (48, 51, 58), (88, 80, 44), (148, 135, 100), (124, 111, 76), (37, 40, 45), (131, 115, 79), (164, 149, 108), (146, 133, 91), (47, 56, 51), (43, 51, 54), (125, 117, 68), (175, 162, 117), (142, 127, 72), (40, 43, 48), (126, 119, 77), (181, 170, 140), (182, 170, 122), (109, 102, 74), (37, 42, 45), (127, 118, 61), (181, 169, 131), (183, 170, 117), (42, 46, 55), (53, 54, 56), (133, 121, 69), (178, 169, 126), (182, 168, 121), (39, 45, 43), (164, 149, 116), (170, 161, 120), (179, 170, 131), (47, 58, 44), (46, 49, 56), (182, 170, 128), (171, 162, 119), (180, 167, 132), (42, 44, 41), (185, 180, 148), (151, 147, 102), (171, 161, 126), (171, 162, 121), (43, 49, 49), (178, 172, 136), (143, 135, 98), (166, 160, 124), (50, 50, 48), (74, 72, 60), (175, 169, 137), (158, 150, 113), (162, 158, 121), (47, 52, 56), (176, 162, 135), (105, 99, 67), (142, 136, 100), (139, 140, 109), (59, 58, 56), (183, 177, 145), (121, 114, 88), (122, 123, 83), (60, 60, 52), (162, 156, 120), (114, 113, 83), (132, 127, 97), (129, 125, 87), (98, 99, 83), (167, 161, 125), (130, 124, 98), (132, 130, 91), (149, 144, 122), (137, 132, 102), (169, 161, 122), (121, 116, 87), (135, 133, 94), (134, 135, 103), (160, 154, 106), (99, 92, 73), (112, 107, 77), (124, 120, 85), (140, 132, 109), (169, 157, 119), (111, 107, 69), (112, 107, 75), (118, 112, 80), (127, 118, 89), (104, 97, 71), (111, 107, 69), (119, 116, 81), (118, 112, 78), (172, 160, 120), (115, 110, 72), (122, 117, 79), (126, 122, 87), (117, 111, 77), (166, 154, 114), (122, 117, 87), (129, 121, 84), (129, 121, 85), (170, 160, 124), (112, 103, 70), (121, 117, 82), (123, 120, 85), (126, 121, 83), (169, 160, 117), (136, 127, 96), (131, 122, 91), (125, 120, 82), (117, 109, 70)

there. Now can you tell me if there is a chair in the above image? After few moments of shocked gaze, and after one minute spent clarifying the problem, my parents proclaimed the task impossible. And indeed, the task looks much more daunting but this is exactly what we are faced with in the field, and it is exactly the task that we are making good progress on.  Slowly but surely…

My class projects this semester

With three classes came three projects for me this semester.

For my Vision project I created a program that can find a Rubik’s cube in a video stream in real time and extract the sticker colors. Full report, video, and code can all be found here.

For my Animation class I used Machine Learning tools (Adaboost, KNN, AdditiveRegression) to learn a sensorimotor robust walking controller.  In other words, given pressures at your feet, and the velocity of your root, what are the torques you should apply at every body part so that the end result is walking? And also you have to be able to recover from pushes. And also you have to be able to handle variable terrain.  My training data consisted of a pre-existing hand-crafted controller that used a lot of manually specified rules and a finite state machine. I don’t think you need all that! :) Besides, engineering specific solutions to specific problems is boring. Full report and video can be found here.

Finally for my Machine Learning project I created a small library for learning Deep Belief Networks. This is achieved by stacking RBM’s on top of each other. Every RBM extracts features from raw data in an unsupervised fashion, so the network ends up learning features of features of features. This work and Jeff Hawkins’ work on HTM’s share common goals. On top of my report I point you to Recent Developments in Deep Learning, a very recent Google Tech talk talk given by Hinton (skip to 44:00 for nice pictures of features). Exciting things are happening in the deep learning community! The library I created will soon be uploaded to here (Google Code link)

All of the above had to be done in span of about 2 weeks… phew! Now that the courses are over I finally have time to breath a little and get back to my evolutionary simulations :) , among other things. I will start working on my Master’s Thesis too, so there is a lot of reading ahead of me! My thesis will most likely deal with fundamental problems in motor learning: How are humans so good at learning novel motions? How do we generalize our previous experiences to novel tasks? How can we construct controllers from sensorimotor soup of data? I don’t know, but I have a few ideas, let’s see… :)

Philosophy. Determinism: thought experiment

I have come up with a thought experiment that I find very thought provoking. I would not be surprised if a similar experiment was already thought of by someone else, but a brief Google search did not reveal anything. So here goes:

Let us start with a few assumptions to set up the thought experiment:
1. First lets assume that the world is completely deterministic, driven by rules of physics that we know exactly. So on a microscopic level, every elementary particle, whatever they may be, evolves in time exactly the same way given the exact same initial conditions.
2. Let us also assume that it is possible to have a device that can measure exactly the state of an entire physical system. In other words let’s assume that we can create a black box, and when we press a button, the entire state of the system is read and stored in a computer.

I am perfectly aware that neither of the two assumptions may hold in our world. In fact our best guess at microscopic physics is not exactly deterministic, and there are all kinds of problems with measuring states of particles as well.

But let us explore the implications nonetheless: First imagine putting our box around some physical system, like a small pendulum. We can read the state into the computer because of 2, and we can simulate the system forward because of 1. So it is possibly in principle to generate a small “movie” of the system in future.

Now let’s imagine putting the box around an entire room with some person in it. This is just another physical system with same particles, and we can simulate it forward just as in the first experiment. This time, however, we would appear to observe high level results because the box had a whole person in it. We would see that, for example, the person gets hungry and tries to go out of his room to get food, in exactly 1 minute and 20 seconds.

That’s all good. But what if I try to put the box around my room, which contains the computer itself, the button, and myself at the computer screen. Imagine that I push the button to read the state of all the particles in my room, and then I ask my computer to simulate 5 minutes forward. Suppose that my computer is fast enough and that it can resolve all of these particle collisions in only 10 seconds. After the 10 seconds are up, suppose that I let the generated movie sit on my desktop without opening it, and wait patiently until 5 minutes has elapsed, in my chair. Then I open the movie and watch it: What would I see? Well the world is COMPLETELY deterministic, so I would see a movie of EXACTLY what happened in the real world… I would see myself, sitting there for 4 minutes and 50 seconds, bored in my chair.

But now let’s imagine that I repeat the experiment, except that this time I open my movie and watch what happens right after the 10 seconds of computation are up. What would I see? How would I react? I would look at the movie: the first 10 seconds I would see myself at the computer terminal, waiting for the results of the computation. But then I see myself actually open the movie, and start watching the screen. In that screen, I could see another copy of me, waiting those 10 seconds until the computation is over. How would I, sitting in original room, react to all of this? Imagine now that I play the movie at 4x the speed, and see the future of my room! Imagine that I see myself freak out and run to the door at exactly 1:00 mark. What if it is 0:40 in the actual world as I am watching all of this?

The simple, completely unavoidable conclusion is that under all of my assumptions, against all of my will, I would do exactly that: I would freak out, and I would run to the door in exactly 1:00 mark just as I saw it in the movie. It’s unavoidable because the room is completely deterministic, and the state of the world is exactly the same in the movie, as it is in the world. The molecules will move exactly in the same way, and that’s simply that, end of story.

The conclusion seems to be very unintuitive. It seems that if I saw myself freak out and run at 1:00, I would have the power to “trick the universe”, and simply choose not to do that. I am therefore inclined to think that one or more of my assumptions is false. Thinking about the set of all assumptions I’ve made is almost as fun as entertaining their consequences.

- I assumed the world is completely deterministic. Is it? And if it isn’t, how could it change in my story?
- I assumed it is possible to read the state of the entire system. Is this even theoretically possible?
- I assumed that the world is completely materialistic. There is no “soul” of the body, anything else outside of the physical realm.
- I assumed that it is possible to have a computer that can compute faster than “real world”. Even though the computer is itself embedded in the real world! Is this even theoretically possible? My intuition says no, but like any of the other conclusions (and being a proper scientist) I cannot ever exclude the possibility.
- I assumed that we know (and CAN know) the laws of physics fully. (Thanks Sancho for pointing this out!)

So, there you go. I must have thought about this experiment for at least a few hours. The fun thing to do in this experiment is to flip back and forth between interpreting it on a level of atoms and molecules, and interpreting it on a high level as a room with a thinking human being inside it. Hilarity ensues. Cheers!

Why doesn’t twitter grow? #twitterfail

I came across this article by Mashable yesterday: The Twitter Flatline: Why Doesn’t Twitter Grow? [STATS].

Essentially the article shows that the number of users visiting Twitter has stopped increasing and they give a couple of speculations as to why this can be. And while I fully acknowledge that this trend is most definitely not due to one single reason, I think I can confidently point to one of the biggest reasons (which I actually do not see mentioned explicitly in the article.)

Put simply, I think Twitter is forgetting that their service is MOST useful when people are well networked (and I don’t mean only in quantity). It is in Twitter’s BEST interest to make sure that every person finds all of his/her friends on the service, and gets the best possible suggestions on who they should follow. Not only that: Twitter should make it extremely easy for people to find other like-minded individuals in the network, even if they do not know them. A user that is well integrated into the network is a happy user; I strongly believe that Twitter is failing badly in making sure that their new users become very happy, very fast.

First lets look at finding your existing friends. Lets assume that you know at least a few of your friends that already use Twitter. So you follow them and check out the list of who they follow, or are followed by. You come across this lovely design-fail list of users (left).

Let me elaborate– The three most important pieces of information about people are: Their picture, their name, and their bio. This best describes a person to another human being. Now while the picture is there, the name is only written in tiny letters right under the (arbitrary and overemphasized-for-no-reason) username, and finally, the bio is completely missing. Instead we are presented with the latest tweet of that particular person– 99% of the time giving COMPLETELY irrelevant information. Who ever thought this was a good idea?

But alright: Now that the person has discovered some of his/her real life friends, they can move on to following a lot of other people that they don’t know but are still interested in. This is where twitter has HUGE advantage over other closed websites like Facebook– because in case of twitter this not only includes celebrities, but also other people with mutual interests/hobbies! But how does Twitter facilitate this process? Well, if you click on this tiny link on twitter page that says “Find People”, and then click on the last tab, you are presented with a HUGE list of people packed into a tiny box with the dreaded miniature scroll bar handle. Honestly, could they have contained that giant list in a SMALLER box? And why go sorting these 100+ people in some particularly useful way, or grouping them in some categories, when they can just dump them in a linear list at random?

I would honestly expect much better from a company with this high profile and I only use sarcasm and mocking language in my commentary because I find it completely unbelievable that this is how the social-networking giant facilitates… networking.

That being said, Twitter has taken a good step when they recently introduced lists. People love organizing things into groups and Twitter not only gave them that option, but more importantly also created an alternative way for people to discover other interesting people to follow.

Lastly, here are some of my thoughts on how Twitter should go about making networking on their website even easier:

1. Suggest people to follow periodically on the side, based on some clever machine learning algorithm (something similar to what Facebook does). But unlike Facebook, please make sure you don’t suggest that same person for more than a month. People will rarely go out of their way to actively look for more people to follow, but if those people come to them instead, it would substantially improve the odds of networking.

2. Extend personal bio to a bigger profile with several specific fields, drop downs, tags, and many many other things. People need to be able to find each other very easily and efficiently. Help them out! Give them the opportunity to network efficiently!

3. Completely rethink the “people discovery” page. At the very least implement a decent bio/location search. It is embarrassing that people have to do this search on other shady third party add-infested websites.

I hope twitter can address these issues quickly. I consider myself (shamelessly) to be a little bit of an internet guru and I searched for many like-minded people on Twitter that I could follow using variety of methods and third party websites, but I still doubt I discovered any noticeable fraction of them. And if it requires an extensive research for an internet-savvy person like me to carry out this discovery, something is definitely wrong.

EDIT: This post is pretty old, and I'm glad that Twitter is addressing the issues I have pointed out!

More Neurobiology, Genetics, and Blue Brain.

Neocortical Column

And… my obsession with Neurobiology and Genetics continues!

I found this to be a great resource for various genetics-related animations: http://learn.genetics.utah.edu/
I wish there were more resources for these kinds of animations out there on the internet. If done right, the bandwidth of information that can come from an animation is several times greater than that of plain text.

I also did some research on the Blue Brain project and presented my findings to our neuroscience reading group. The Blue Brain project aims to reconstruct human neocortex in the computer. So far they were able to simulate a single neocortical column, and they are currently pursuing two separate endeavors in parallel: extending their cellular level simulation to the entire brain, as well as creating a simulation of the single column, but on a molecular level.

The part that I was slightly disappointed by is that they are not reconstructing the full structure of any particular neocortical column. Instead, they study and analyze the statistical patterns associated with distributions of different kinds of neurons in the column, and then they place these neurons in the approximate positions, and jiggle them around until their connections match the learned distributions. On one hand, I am worried that this might destroy some very important structure in the column that is crucial for its function. On the other hand, there is no way to encode the entire structure of all neurons and their connections in the genome, so perhaps the computational power does not come from any particular structure, but from an emergent property of a network connected in this approximate statistical pattern.  After all, there is too much noise in the development of a human and the brain itself, so I am forced to believe that its function is robust to small perturbations in the morphology.

As a computer scientist, the above project is fascinating to me: I am after the computational principle (the algorithm) that is implemented in the hardware of our neural machinery. How much of the network deals with this abstract principle, and how much is just a biological “implementation detail”  that nature had to employ to overcome its natural constraints? Exactly what parts are relevant? How much can we abstract away without loosing its computational power?

Naturally, the question is ill posed because theoretically speaking a vast number of non-trivial dynamical systems turn out to be Turing complete. What we are really after is the most elegant implementation– And I will make no effort to define “elegant” here, because all I have in my mind is an intuitive idea that I can not even begin to describe quantitatively. Having said that, it is clear that nature has AN implementation, and perhaps this is a good place to start. My feeling is that when we do stumble by the nature’s secret, having spent countless of hours analyzing our brains in vivo,vitro and silico, we will know when we find it. I’d like to (perhaps naively) believe that at that moment, it will just click.

In closing, I wish to point out that progress is being made on this front. See NUMENTA for one particular company that does research in this area and creates computer vision systems inspired by rigorous study of the neocortex. Their technology is discussed in more detail in Dileep George’s Ph.D thesis– I recommend reading at least Chapter 1 for an overview for anyone who is interested.

my iPhone

I should comment on my iPhone 3GS: I Absolutely LOVE it.
To be more specific, I am mostly in love with having an internet-connected smartphone. Here are my top 10 reasons:

1. I am always up to speed on news that matter to me. If the Higgs Boson gets discovered, I will know. Fast.

2. I get new email pushed to me almost instantly. This is IMMENSELY useful. I can be very prompt with issues that need my immediate attention.

3. It gives me things to do when stuck in boring situations. Stuck on a long bus ride? Boring lecture? Why not read over what’s new in the world? Catch up with friends on Facebook/Twitter?

4. The device is absolutely invaluable when traveling, especially in cities like Vancouver because the entire public transit system database is built into Google Maps. The Google Maps app can plan out my entire journey, what buses to take, where/when to transfer, and it gives me information on when I will arrive at my destination. I can never get lost in the city. The iPhone 3GS also has a compass built in, so it can rotate the map to match the direction that I am currently facing.

5. Wikipedia on-the-go? Need I say more? Any technical information I need is right away available to me.

6. More iPhone specific, it has a good (Video) Camera. Whenever I run into something interesting, I can easily record & share later.

7. I started to use the Google Calendar regularly. I cannot even begin to describe how invaluable it is. I never miss an event or a deadline. I can see every one of my days laid out in front of me: All my classes, reading groups, events, … everything.

8. The iPhone apps are Good. They do small things, but it all adds up. I have apps that calculate bar tips, logic games/puzzles, conversion apps, weather apps, graphing calculator app, gtalk app, … list goes on.

9. It has a built in MP3 player. You can also stream internet radio.

10. Oh and its also a phone :)

In summary, it allows me to stay very organised (and I have benefited from that many times), it lets me have instant access to any information, and it allows me to be prompt with my responses to important email. It has made me a better person profesionally, and there is plenty of room for fun too. I don’t know how I lived without this little device.