Archive for the ‘Personal’ Category

Dune Art

Thursday, December 29th, 2011

Why is there so little Dune art? The setting is so colorful and the stories so rich, it is unlikely that artists reading it are not inspired. I can only imagine it’s not read by many.

Leto II & Siona:

Duncan Idaho, one of my favorite characters:

Also, check this site out if you were also puzzled by the end of original series; Dune: Marty and Daniel

Bookmark and Share

Was it the imperialism that made the west rich?

Wednesday, November 16th, 2011

I had a friend who kept talking about how he cares about ideology and how he is willing to sacrifice and all… In the meantime he was in a bad financial state. It could prevent him continuing his education. He changed the topic back to politics and socialism when I asked what he was going to do about his own situation. I had to end the conversation by saying “save yourself first, then you can save the world” finally. I had enough with that.

I remembered that conversation when I was watching the TED talk The 6 killer apps of prosperity by Niall Ferguson. It is not an in depth analysis of course, but underlines some of the obvious facts and also includes some surprises.

This talk also touches how Ottoman Empire lost its power by giving in to bigotry. And the funniest thing is, according to the speaker, İbrahim Müteferrika was the one who realized the advantages of western empires. The very own İbrahim Müteferrika of Ottoman Empire, who brought the printing technology.

Oh, and it ends with a surprise. If you are really observant or you have watched it till the end, you will see that the trend is reversing.

Bookmark and Share

Sign of a Stupid Programmer

Thursday, September 29th, 2011
if some_boolean_expression:
    return True
else:
    return False

Unlike programmers who can’t program, stupid programmers can and do program. That is the problem.

joined = '%s%s%s%s%s%s' % (
    some_list[0],
    some_list[1],
    some_list[2],
    some_list[3],
    some_list[4],
    some_list[5],
    some_list[6])

You just wish they were unable to program. Every single time you encounter their code you question yourself. You ask if this is programming, what the f#ck is it I have been doing all this time?

def __unicode__(self):
    return '%s' % self.some_unicode_attribute

I have been reading on stupidity lately. It all started with Onur tweeting this article. Then I have found the following definition of stupidity:

A stupid person is a person who causes losses to another person or to a group of persons while himself deriving no gain and even possibly incurring losses.

They’re both good reads. I just wish I was introduced to these concepts earlier. I felt stupid for my ignorance on stupidity.

def some_func(**kwargs):
    param1 = kwargs.get('param1', 'param1_default')
    param2 = kwargs.get('param2', 'param2_default')
    param3 = kwargs.get('param3', 'param3_default')
    param4 = kwargs.get('param4', 'param4_default')
    param5 = kwargs.get('param5', 'param5_default')
    param6 = kwargs.get('param6', 'param6_default')

Watch out for the stupid programmer. He is destructive.

Bookmark and Share

Our Fear of Success, Reptilian Brain and Principles

Wednesday, September 21st, 2011

I have been reading whatever I can find about game theory1 for some time. I am trying to understand the fundamental rules behind how we make our decisions. One thing that fascinated me all my life is human beings’ unwillingness to walk the path, that which has been demonstrated to yield better results with not significantly more requirements than the alternatives. One instance is very well described in this article. I will not go into the details and try to analyze it.

I have learned to recognize this behaviour and walk away. There are better ways to waste your time than trying to convince someone who doesn’t want to help himself, to do something fruitful. This education cost me a lot of time. But I think I have finally learned.

While I was reading Ray Dalio’s Principles, I found these two paragraphs below. They simply explain the whole issue:

Unlike any other species, man is capable of reflecting on himself and the things around him to learn and adapt in order to improve. He has this capability because, in the evolution of species man’s brain developed a part that no other species has—the prefrontal cortex. It is the part of the human brain that gives us the ability to reflect and conduct other cognitive thinking. Because of this, people who can objectively reflect on themselves and others —most importantly on their weaknesses are—can figure out how to get around these weaknesses, can evolve fastest and come closer to realizing their potentials than those who can’t.

However, typically defensive, emotional reactions—i.e., ego barriers—stand way of this progress. These reactions take place in the part of the brain called the amygdala. As a result of them, most people don’t like reflecting on their weaknesses even though recognizing them is an essential step toward preventing them from causing them problems. Most people especially dislike others exploring their weaknesses because it makes them feel attacked, which produces fight or flight reactions; however, having others help one find one’s weaknesses is essential because it’s very difficult to identify one’s own. Most people don’t like helping others explore their weaknesses, even though they are willing to talk about behind their backs, For these reasons most people don’t do a good job of understanding themselves and adapting in order to get what they want most out of life. In my opinion, that is the biggest single problem of mankind because it, more than anything else, impedes people’s abilities to address all other problems and it is probably the greatest source of pain for most people.

If we can successfully classify people into these two groups, I think we can do more meaningful things. Of course, it’s OK to become friends with the people who fall into the second category. As long as you don’t forget about their limitations and pick suitable activities.

Now, the second group of people are quite a different story. They would not only accept your help for their personal development, they would welcome it. But, why should we care? It’s their personal development, their problem. Shouldn’t we be worried about our own personal development? These people would have a momentum in their life that will affect your own pace. Moreover they will probably try to engage you and try to help you overcome your weaknesses. You should be worried about your own growth primarily. This is why surrounding yourself with these people is a great idea.

I have been very fortunate to meet people who are not afraid to review and renew themselves. I have managed to understand myself and others better, thanks to their mentoring. You don’t need to wait for a mentor to appear out of nowhere2 and give you all the answers and keys though. You can start with Seth Godin’s Quieting the Lizard Brain talk (below) and hopefully begin learning and changing things. After all noone can adapt for you, you will eventually need to exert some effort. Great effort.

1: Also I have been reading about game design but it is not really related to this post.

2: I consider myself really, really lucky, what kind of person would I be if those fantastic people hadn’t appear out of nowhere. I don’t think I would have ever dared to challenge myself.

Bookmark and Share

Programming is Debating

Thursday, July 14th, 2011

Programming is human activity, but this image still has nothing to do with it.

How difficult is it to start programming? By starting I mean producing real code, be it a personal project or something you will get paid for. But it is not written for the purpose of learning.

Most of the readers of this blog are professional programmers. I am sure for many of you starting was quite easy and natural. But for a lot of people it is an extremely difficult obstacle. I know people, more than 50 people, who studied CS or CE in university but has never written any real code. They get anxious when the possibility presents itself.

The problem with the start is usually the false expectations about programming. There are certain myths about heroic programmers writing incredible programs in impossible conditions with little or no effort. This is of course bullshit. But I have witnessed again and again people setting their expectations about the experience of writing code by these absurd standards. The actual experience inevitably fails to deliver these expectations and the person gives up. This doesn’t have be so. Programming is supposed to be fun.

When we open a book and start reading, the words we see are unlikely the author’s original words. The original, raw content get edited before printing. It is an iterative process. I don’t want to get into the details about publishing1 but beginners should study this process carefully. Because the process of programming is same, sans the magic.

So the act of programming is also an act of debating. You debate with your tests using your code. When all tests pass, the debate is over. When you are making design decisions, no matter how small they are, there is a debate going on between the requirements, the resources and your professional judgement. Therefore it would be unreasonable to expect programming to be a smooth, frictionless process. If you want to start you should be prepared for it.

I would like to share a few pointers that I hope will make the start more predictable if not easier:

  1. Try to find a real problem to work on. Forget about educational/theoretical problems. Solve a real, practical problem. There is one extremely important thing to remember here; the scope of the project must be as small as possible. A series of 2-day projects are much better than a 2 week project.
  2. Start by documenting the usage of the code. Write an example script that imports your hypotetical code and uses its functionality. In other words; design top-down, program bottom-up.
  3. Then flesh out the structure. Create files, classes, functions, comments. Writing code is good for warming-up to write some code.
  4. Divide and conquer. Implement incrementally, accomplish one thing at a time. If a functionality is giving you hard time, try to write something that produces some results but not exactly what you expect. Then continue iterating until you get it right. Don’t wait for the programming muse to come and light the way. Sometimes you need to invent all the wrong implementations before figuring out the correct one.
  5. Never hesitate to ask for help. Programming is debating, why not introduce your peers and mentors into the process. If you are asking for help make sure you have a concrete question. Input, expected output and your current code is usually enough. Even when you don’t have a problem or question, share your work with others and try to get as much feedback as possible.
  6. Do your research. There is no getting around the reading. I would be lying to you if I said otherwise. If you want to win the debate you need to be well prepared. It may be a little overwhelming in the beginning. But as you build up your knowledge (and experience) you will enjoy reading more.

I hope these pointers are helpful. But I think the most important thing to remember is programming is not a mechanical process but it is very human, I call it a debate, some call it art.

1: Nor am I an expert on the subject.

Bookmark and Share