Sunday, May 27, 2007

Attack problems

The best way to defend is to attack — common aphorism that we often hear. But what is in it? "Those who need to be on the alert everywhere has a little strength, those who make another to be on the alert everywhere has a lot of strength". That is from Sun Tzu "The Art of War". Recently I watched another part of "Samurai Jack". Main hero ran away from big monster, who shouted at him with strong laser beam. The only thing that Jack was able to do was to run. He even hadn't chance to watch what is happening behind his back. So he couldn't fight or even defend in any way.

Of course Jack found a way to defeat his enemy. But what is in real life? Could anyone be as a main hero of cartoon film? I think no. Sometimes situation is very bad and beats come from many sides and it is even impossible to solve the situation. And the best way top solve problem is to avoid it. Or solve it in its beginning when it is weak. So the problem is a red flag to attack, to attack it. Of course that not mean that you must go forward your problem with naked sword, this can lead more damage than usual waiting for bad news.

First thing to do is to dig problem, understand and classify it. It is also useful to make a formal description of the problem. On this stage it is needed to understand with what fight will be, what will be a condition of win and even is there a necessity of fight.

After that plan to defeat problem can be created. To be formal, plan is a sequence of actions that will lead to the win condition. It is very useful to study solutions for similar problems happened in past. In general, I have to say, studying history is a good practice, that helps to prevent mistakes of predecessors.

And then comes the most interesting part: attack problem with your plan. Defeat it. Celebrate victory...

...and don't forget that problems and enemies doesn't sleep.

And don't wait when your problems will defeat you.

Monday, May 21, 2007

Black and white

There is always white and black stripes in our life. I think my black suit and shoes are the black stripes. So everything other should be white stripe. :)

Saturday, May 19, 2007

xkcd

Two pics from xkcd that I love the most.
Matrix transform
Fourier

Thursday, May 17, 2007

Accidental thoughts...

  1. Why I have a feeling that something is on the wrong place in my life?
  2. I usually live with words "I'm on the way of war" in my mind. Sometimes this phrase is shaded by others by it always back to me. Now is the time when it backs.
  3. Is there any link between first and second?
  4. "On the way of war" — I think soon I'll write a post about this.

Wednesday, May 16, 2007

Big targets and small details

On the last week I saw a part from cartoon film series "Samurai Jack". In that part main hero lost his shoes. He wanted to punish bad guys who broke his shoes but couldn't because he felt uncomfortable without his wooden sandals. He tried different contemporary shoes but he didn't felt good in them and couldn't beat enemies. After all he found a man who made him new pair pf sandals. After that hero beat his enemies.

I think there is a couple of themes to discuss that can be extracted from this film, but I want to mention only one: the importance of small details. No, I don't want to say that big picture is useless and we should concentrate on small details, but inattention to such a small piece of stuff like shoes could break any great plan!

So what to do? How to organize small routines with big plans? How to make them fit together?

As a programmer I could give only one advise: divide and conquer. What's your shoes? It's your equipment as pen, suit and computer. It's not your target activity. You pay attention to your equipment not because they exist, but because they are mean to your target. If your main target is to have pretty shoes and the most advanced computer in the world it's not very good as I think. Main target should produce something or it should be cast out. For what to do something without using it's production?

So in fact only main targets and productive activities make sense. But they are made of smaller pieces which also could be divided on parts. So then you state new task your should understand that "write new computer application" is not a something that make a computer application. It's a bundle for activities that make something, what form new a computer application. You shoes couldn't make a computer application? but they allow you to go on the street without problems and make computer application instead of healing your legs. So is with many different things in your life. That's a stuff that is made on "auto-pilot", without deep thoughts on it meaning. But if over-focus your attention on drawing "great plans" you could fail because of small detail, that you have forgotten...

Forgive my strange linguistic construction and lack of relation between phrases... Just my thoughts...

Summer is coming

Summer is coming... And session follows it... However history has been already passed for best mark — teacher gave me mark without exam on the basis of my participation in seminars. Moreover I've already finished studying English language and Engineering graphics. On physics and discrete mathematics I have only last test works to be done. So now there aren't any problems on my way to the session.

Moreover I continue to work on CodeExplorer. It's rather interesting to develop it, study new features of language and having more ideas on implementation of different solutions. I'm exited with this work!

I think "Code Complete" graved it's mark on my programming style: now I sometimes see new abilities to resolve solution or to implement it better. For example now I'm not using i, j and k as an indices of arrays. I left only them only for prototype code that will be used only once. Furthermore now I'm trying to develop my new habit: writing tests for code before writing code itself. It is called Test-driven development. It is broadly used in Extreme Programming. I think practice of TDD is useful in almost any model of iterational development process. I'm sure it will be useful for me to develop my new habit.

And one more thing... For times I was trying to arrange my time to have a schedule of making tasks. I can't say that I've reached a full success in war with time, but I'm sure that something is changing inside of my mind during my attempts to change myself...

Saturday, May 12, 2007

A lot of news...

Hello! I have a few news about me :)

Some days ago I finished reading "Code Complete". That was a fundamental reading for me. I get a lot of knowledge and wisdom from it. Of course I don't remember all interesting things I've read but I think my programming style will become better after reading. I think in future work while coming to different stages of work I'll get this book from shelf and review checkpoints for my theme, that are pointed in book. All in all I was delighted by "Code complete" and recommend it for all programmers. As for beginners to make a good basis of knowledge and form good habits, so for professionals to improve their skills.

Moreover I started to learn Java programming language. At the moment I'm on basic stages of learning: expressions, statements, etc. They almost like C/C++, so I have no significant problems.

To add more I finished developing first version of CodeExplorer. It works! Now I need to make a list of features to implement in next iteration of development. From first cycle of development I've experienced working with Python built-in PyUnit and distutils. Working with PyUnit was enough successful and in future I continue to write tests for Python software on it. "Communication" with distutils wasn't so good. However I get some knowledge and will make a functional distribution in next iteration. However now I don't understand how to include documentation for software in distribution. All in all I think my experience from this project will be much useful in future life.

In my study life session is coming... So now I pass labs and homeworks. In Engineering Graphics I have only one lab to pass. I think I'll try to make this on Tuesday. In Physics I have only last test to pass. And in programming I need to pass report on penultimate work. However now I'm finding some time not only to study but also for my computer interest. Besides working on CodeExplorer I'm studying Java and taking a breath look ob webbook about data structures. And moreover I'm planning to learn UML.

And I've decided to reread Confucius book while tripping subway.

All in all, life is good! Goodbye, until next post.
— Anthony

Tuesday, May 08, 2007

Todoist

I've discovered new very useful web-tool — Todoist. This tool helps you to organize you tasks and todos.

You can create projects and put into them tasks and subprojects. Moreover you cam embed tasks into another tasks. So you can structure your tasks as a tree withmany branches. Furthermore you can assign to task date on which it should be completed, make it everyday task and set priority. Todoist have a nice set of shortcuts to reduce amount of clicks. What is more while typying your task you type some special marks and it will tell Todoist to make something with this task. For example typed mark !p2 tell app to assign to task priority #2. Moreover there are basic facilities for formatting text.

Also Todoist have been integrated with GMail — you can delegate message to it from GMail and it will be setted as a task. Moreover developer of Todoist provides API of his webapp, so programmers can integrate Todoist into their own apps. For example into Firefox extension.

Hope this application will be usefull for you.

Links: Todoist, GMail

Wednesday, May 02, 2007

Software

Yes, I made it! Yesterday I made some progrees on CodeExplorer — sortware I'm writeing now. And I want to work more on it! However holidays finished, so there will be a problem of finding time for this. Soon I'll prepare first (not very usefull, to be honest) version of CodeExplorer.

And... Yesterday I felt myself as a normal man with life full of something interesting, not depressed one.