Wednesday, March 31, 2010

Security - random thoughts

Just some quick reflections.

The lecture was about hacking/security/privacy issues. When I was asked in class : "what is the difference between privacy and security", I was shocked -- not being shocked that prof named me even without looking at me, but I really had no words to answer. "They are just different." Sometimes getting more privacy means more secured, sometimes it means otherwise -- like surfing on the Internet and checking luggage in airports.

OK, no more mess up with words... let me start with my random thoughts --

" learn , build, hack, customize "

-- this is the road that all computer geeks will go through.

I want to focus more on the last two , since the first two are quite self-explanatory.

Hack:
"Hack" by here means "taking apart". After building yourselves some applications, you find flaws in your program (and some of them have no solutions), then:
1. you would want to hack other people's applications/computer systems -- to see if they had same headaches. This is called "comfort in shared suffering", and that is quite a distorted kind of happiness :D
2. maybe you fail to hack other people's applications -- then you learnt something!

Customize:
Then you can choose to:
1. rebuild your app! Rome is not built in ONE DAY, and good apps are not built ONCE!
2. take that man's work and customize it! -- I prefer this way, and that is why I like Linux. :)

Monday, March 1, 2010

Team Dynamics

Yes, choosing the best players does not guarantee the success of a project. It is the issue of team dynamics.

1. Who to work with? Someone talented or someone whose working style you like? It is a tricky question and the answer DEPENDS (provided that there is no such guys who are talented and you like at the same time)

As a programmer, it will be someone you like. As a team lead or project manager, the answer will be someone talented, however. I guess that is why some of the soccer/basketball club managers like getting the best players available while the present players in the club do not actually buy it. -- There will be communication overhead. The players whose hands (or feet :p) get to touch the ball directly will like to work with people they are comfortable with, if not playing together for years. Similarly, coders probably prefer coders whom they have worked with before. THEY ARE THE ONES WHO ARE PLAYING. They know how it feels when having no clue of others' codes. When this happens, it means a lot of trouble.


2. What features are most important?

I mean if a team should aim at "cool" features or common features in the first place WHEN they start from scratch. It depends (although this may seems obvious to a lot of people, please read and judge whether my words make sense).

After two web assignments, I find web programming boring -- we are programming for "damn stupid" users... I believe most programmers are excited by solving big problems, instead of implementing buttons and designing "good" UI for stupid users. This is where I find web programming not fun. Hmm, but you will say that my app will not survive without users. Yes, that is quite true, I wont deny. But I don't care -- that is the job of marketing people -- I feel shoik when I am programming some *working* stuff instead of beautiful stuff.

I find myself writing irrelevant stuff now.. So.. for programmers, they probably want to implement cool features first -- sometimes even without UI, and they test using JavaScript console.... .....

As for project lead.... no need to repeat the "have something you can show people" words liao.

That is it .. for now.. get to sleep, the item on top of my to-do stack now.