Thursday 22 December 2011

Camping

Awww... My roommate is going camping and I wish I could go too.

But at least some of my gear is going with him, like the sleeping bag, headlight and titanium spork...

Hopefully the gear will return nicely.

Monday 12 December 2011

Dell desktop strange.

I managed to get my Dell to DDOS at startup.
I changed msconfig to kill some services and turned out I killed a required one. But it didn't start crashing immediately after changes.

I wonder if the Dell Windows 7 is locked down somehow. That could explain why the same changes work on my Acer laptop.

Ridiculous.

Sunday 11 December 2011

segmentation...

Segmentation problem
Once segmented, evaluate.

OR

segmentation as first level processing of visual data. output as tree, with observation parameters (HOW the environment was observed). With consistent observation method, assumptions can be made concerning meaning. (fair test principle)

AND

segmentation implemented as tree branching at many different points.

Saturday 10 December 2011

From thinking about Algorithms to thinking about AI

Thinking up algorithms.

This is the major aspect lacking in the CS curriculum in general. We are taught many examples, and while it allows some inductive learning, I don't think I have really mastered the art of writing algorithms. Sure we can understand them quickly after learning, but it's just amazing how great algorithms require a lot more thought to create, even if it can be stated in one A4 page.

We don't really know which path to go down and can only guess by experience. The rest appears to be plain hard work/luck/intuition. Following the frameworks of thinking will get you half the way, but there are intellectual hurdles that really differ in difficulty for different minds.

This all seems so similar to the P NP problem, where a solution can be checked very quickly, but getting to that solution takes exponentially longer.

In the context of programming, the issue is roughly equivalent to how some programmers always write less efficient code, use more memory/steps. Some people just don't look ahead so far enough to see the alternatives.

Refining and learning are integral parts of computer science. The only trick is to do that faster and more thoroughly and reduce repeating identical problems. And how do you learn faster? By making more, different mistakes while doing what you want to do. And that's probably the best thing a CS course should teach, especially to most students who are not gurus at what they do.

( Many CS students actually dislike programming and try to avoid such courses whenever they can, because let's face it - bugs can be scary and annoying. They directly mirror your thinking, of which they are a product of. They make you see what you don't want to face. I suspect most people don't want to see themselves as flawed and prone to error. It just doesn't seem to fit the self-image (and socially approved/generated image) of a professional, a "good engineer", or excellent student, or successful person. I find that too. It can be psychologically straining because your mirror image isn't what you want. )

The same philosophy should be applied AI. Instead of having to get the whole thing right from a top-down design to working prototype, working on efficient self-learning with minimal code should be the method. Allowing it to make mistakes and take chances, but having the capabilities to learn about itself and the universe. (And eventually defining for itself what a mistake is.)

But isn't this contrary to many applications that we want to use AI in, where we want them to be perfect, bug-less and infallible or else the mission fails? This is where the field of AI splits. On one hand we want predictable, correct behavior all the time, preferably proven algorithmically correct. On the other we want them to be as adaptable as possible and be autonomous and free, hopefully doing things we don't expect. I argue this division is mainly due to what we think the role of AI ought to be, what we want them to do and how we think about intelligence.

Do we want them to be like slaves to be commanded and made to serve, or free individuals?
(This has a lot to do with how we already see other people and objects in our environment. )

Wednesday 7 December 2011

Yay, last assignment of the semester.

Having Complete the last programming assignment of this semester, I wonder what could be coming next.

Through these trials, I think most Computer science students have become better at coding and thinking accurately about practical problems. However, it's never going to be "enough" because the set of challenges are infinite and even though it's always those building blocks (eg. loops, recursion, types, parsing, data structures, algorithms), these sets themselves are infinite and subtle superficial changes in the problem lead to greatly different data structures and algorithms.

It's awe-inspiring.

I'm particularly happy with this assignment because it was really quite a group effort. I wasn't good at regular expressions, and this guy had studied it before. He taught me that, but he was also stuck on grammar rules. I figured those critical issues out (which were not even documented in assignment nor manuals), and we leapfrogged through to the finish line. I suspect either of us would have found it far less motivating and more troublesome if we did it alone.

That felt awesome and has defined a new standard/expectation of the software development process. I guess you make career decisions subconsciously then and there, whenever you are actually working on something challenging.

And soon, I will be doing the same in Singapore...

Tuesday 6 December 2011

Keyboards and Typing.

I've realized that since studying computer science I've been unconsciously typing faster than before. I think it is like a 60% increase on average from around 40wpm.

And for some reason, the more I type, the happier I get. I enjoy the feeling of my fingers on a smooth light bouncy keyboard that sounds like rain on a plastic roof. I am particularly fond of DELL keyboards in general (but especially the newest versions, worn down by a semester of finger pounding by UST students). I dislike Lenovo keyboards because they have Chinese typing inscriptions on them that makes them really rough on the fingers with all the friction, and not being as crisp and light.

I like the thrill of typing quickly and subconsciously, especially when the code/English just flows.

Having said that I'm looking out for some better keyboard all the time. If it's really worth it, I don't mind having my own private USB keyboard.

Monday 5 December 2011

Reading speed

After 1.5 years of college and 19 years of living experience of which I spent 5 years able to read sentences and paragraphs, I conclude there are only two speeds that people should read at.

1. Very Slowly
Reading so slowly (and out loud for comfort) that by the end of reading an incredibly difficult question, I figure out exactly how to do every step to solve it. Slowly is actually quick because you increase speed naturally while maintaining comprehension.


2. As quickly as you can:
For noticing particular things I want to think through. This can be at least over 10 times over the speed of slowness.

For reading the bloody newspapers. These days, most newspapers are generally full of blood-soaked news. I set the emotion behind and pick out the details very quickly.

Also things like facebook and slashdot comment sections. I find it sad that people can stare at their facebook walls for so long.

Other speeds are pretty much unnecessary and unworthy in the digital age.