Category Archives: Motivation

Online Education and Interaction

Education Video

Education Video

Coursera is cool. Online Education is cool. Content is cool. But do you know what is not? The interaction. It is damn boring to stay focused in 3 hours for a video lecture. Recently, my wife and I tried our best to study Introduction to Finance and Financial Computation Econometric. The interaction environment in the normal classroom is not always interesting, it is even worse in an online course. Maybe we haven’t used all the resources we have or we haven’t tried hard enough. But to make the model more successful, interactions would be the key.

Offline watching has its benefits: people can watch anytime, anywhere and any videos you like. It sounds good until it comes to practice. People get lazy, some of them are watching half the video and have to stop to do something else. When they come back, they lose time to get into focus again. It takes more time and efforts to really focus and learn quickly with offline video.

Obviously, they are still free, I have no complaint about a specific site. What I mean is “Hey, this is my problem and may be others’ problems, hope you guys can fix it”. I think we need to give more benefits for people, as gamification and gaming theory often do, to let them spend a specific of time in their schedule to finish the video, to really focus. Maybe these sites offer some chance to chat with the professor, some small quiz that can be both challenging and rewarding.

In the long term, I really think that solving this problem is the business key and competitive advantage for any company.

My 1st lesson – Altitude

Second Prize Medal

Second Prize Medal

The picture is the medal that I got for the Second Prize in Ho Chi Minh city Mathematics Olympiad. It has always been in my desk since that time. Not because it is the greatest thing I have ever done. It is there to remind me of one of the biggest failure in my life. It is there to remind me what I did and felt when I was in 11th grade.

 

 

 

 

My feet were off the ground
The second highest winner in the Southern Mathematics Olympiad turned out to be a bad motivation for me. It killed my love with maths. It made me feel that I am too special. It made me overestimate myself. I believed that I couldn’t fail. That was a big mistake.

I didn’t prepare well enough and didn’t try hard enough on the next city contest. The result is: I couldn’t step into the next round. My friends and family wouldn’t know what happened. But I knew what was wrong. I put myself off the ground!

This failure led to the next big failure.
Depression

Now, imagine that everybody is looking at you; the next second, nobody gives you a shit. That was what happened to me. I felt totally useless and lose my orientation. I did not know what to do next, if I should continue studying maths or focusing on other subjects to pass the university entrance exam. I did not know what to do when losing all the attentions people gave to me. I was thirsty for that fame.

This made me lost my focus, forgot what was good for me, what I would like to do. It cost me 4 months living in jeaulous feeling with winner guys before I could realize what was meaningful to me. It was maths! Not the prize, but maths! I felt good that I recognized it early enough to be back on the right track and focus on what I love.

Both of them gave me a difficult time, and always kept reminding me of what is my true value, what I should aim for.

The purpose of this post is to try to remind me of what happened in the past. I know that people are talking a lot about me right now, but keeping my feet on the ground, being focused on my long term goal was the highest priority work.

Try, Run, Fail and Motivate

,Running And Failing

Running And Failing

I am extremely happy these days, I got a full scholarship of CMU – the first one I got after, uhm…, 10 or more scholarship submissions. This one goes by some luck. You may not believe in that, I don’t either till it happens. I started applying and the decision is out for less than 2 weeks and I had no plan for this scholarship until the chance came and I took it seriously. Here are 3 things I learnt from this happy event.

1/ Keep trying, you do not know what happens next.

Some people love perfection and are scared of failures to try. In many cases, trying does not cost you much except, some money and efforts and in some cases, it is free to try. One important decision I made is to talk and then email CMU representatives to ask some information about my specific case with important background. That let me know some important information about the admission process and I took advantage of it successfully.

For things that are uncertain, the only way you can be sure about is to try it. Start up, scholarships and R&D job is like this. Sometimes, things go out of your hand and strategy, then you just keep moving fast to the next goal.

2/ Everything you do, either succeed or fail make you one step further

I am happy that I tried to apply for President Award of RMIT Vietnam although I didn’t get it. It was a huge step preparation for me for the scholarship. There is no way that I can prepare all documents like transcripts, recommendation letter in around 3 days without any earlier work.

Another thing that I learnt from the fail of President Award is that my approach is kind of not correct. I tried a with a crazy approach in the award essay just to see what happens. And, I think the result gives me some feedback over the approach for the next one.

3/ Fail and run again

I mean RUN, actually run not just to go ahead step by step. I am willing to fail while I am running rather than moving slowly to the goal without any failure. For some people, failure is not an option, you are not allowed to fail. However, in my opinion, passionate is necessary but not enough for people to be successful; sometimes what matters is to keep the highest motivation for long time. Only challenges keep me motivated and moving with my best skills and efforts. That’s why I love the Google quote: “Achieving 65% of the impossible is better than 100% of the ordinary” (Don Dodge’s blog) . Here is what you get from that kind of fail, you know that you did a great thing, you are motivated about what you do all the time and you know you are doing something only a few, the best people can do.

And I always remember the Edison quote, you don’t fail 1000 times, you just found 1000 ways that things do not work, and I am happy to get a confirmation if a way is a fail as soon as possible.

CMU Students

CMU Students

Just some information about CMU and my courses there:

- Top 6 in 2008 in Engineering and IT QS World University Rankings

- Top 12 in 2010 in Engineering and IT QS World University Rankings

- #1 in Computer Science Schools (US News and World Reports)

I hope that this is a great step to the next big goal:)

Open source and the openess

After learning and discussing to developers around me, I have some of my thoughts on open-source world and the more general one, the openness of the world. I will try to walk through some posts about this issue to discuss around those things. From now on, I will use open source software as a general term for open source software, library and framework. The viewpoint is quite based on start up environment.

What is open source?

Open source software is software that allows people to view the source code, to change, to modify or to link it (library, framework) with your software or system to build a new, bigger or better one.  It really depends on the license of the open source that I will list and discuss some of them later.

Open Source Users’ benefit?

In short, it can be quoted by Newton:”If I have seen further it is only by standing on the shoulders of giants” (http://www.cippic.ca/open-source/). Open source software development embraces this principle.

  • No buying cost => can try and fail then try another easily. (but it is not free, read the disadvantage part)
  • When there is an error, everybody knows and tells it out.
  • If you work with something really new, nobody else works on that before or no library reaching to the point that is acceptable to your application. You will know how much important it is to allow you to modify and extend a library. Famous companies will not take a big risk to go ahead in risky and new area to support you.
  • Can be already tested well by the huge community if there is a bug, people can find it already for you, already posted a patch for you.
  • Community Documentation is also a benefit when many people already asked and answered about the software.

Any risk or drawbacks?

  • Not all the open source software is good. Those open source software require a lot of testing from community. You may sometimes take a big risk yourself. My team already experienced some stupid bugs from an open source library. There is no 100% guarantee. If you buy some service/framework/library, you can sue them for the bad quality.
  • “Linux is free, if your time has no value” is correct no matter how you love Linux. You have to pay time for learning it, for testing the new library to make sure it runs like it is declared.
  • Many open source software is really bad at documentation. Some people create open source software just for fun, so they sometimes are not expert, not professional and not responsible enough to document it well.
  • The open source software can become out of date at sometime. When the authors start getting bored about their products and become too busy, they just don’t update it frequently. I have quite few experiences on open source software development, but I can see that all software need a leader, it can be an original author or can be any other people. It can be right that the whole community can contribute. However, if the software has no shared vision to grow or no people make sure that it keeps growing, it will become out of date soon

Licenses of Open Source

Now, I will move to the next part, which somebody may still misunderstand about it, the license. I will move from the most generous license to the strictest license. The license will really determine how we can use the open source software, varying from almost open like you can copy and redistribute it to really strict like you can only link to the library

Absolutely open, you can distribute, recreate, copy using whatever means you want.

Like public domain, but with a little bit more restriction: the name of its contributors is not allowed to be used to promote the software use the open source. Both of them have a little bit difference that you may want to read more yourself.

  • GNU GPL General Public License

This one is like BSD and Apache but it is stricter. If you modify the copy/copies or a portion of it, use it or distribute it, your program MUST BE under the GNU GPL.

It is GPL but with less strict. It means, if you modify the program, you still have to distribute your work under the same license. However, if you just use the open source program like a library (which means you link to it by source and compiled code), you are allowed to distribute your program

References and additional Materials

Software Engineering Process and Tools lecture, Quang Tran

http://www.informit.com/articles/article.aspx?p=376255

http://www.tamingthebeast.net/articles5/open-source-software.htm

http://googleblog.blogspot.com/2009/12/meaning-of-open.html

http://www.cippic.ca/open-source/

http://en.wikipedia.org/wiki/BSD_licenses

http://www.apache.org/licenses/

Anonymous class Java

Some days ago, when answering a question on stackoverflow , I just recognized that I didn’t understand much about anonymous class in Java. Maybe I am not the only one, so I post it here. I think this should be in some book already, but by my bad, I didn’t read it well.

Ok, here is a simple question on stackoverflow:

 public static void main(String[] args) {
        System.out.println(
          new myClass() {
             public String toString() {
               return "myInterfacetoString";
             }
           });

        System.out.println(
          new myClass() {
              public String myFunction() {
                return "myInterfacemyFunction";
                }
          });
    }
and the user asked why the output is:
               myInterfacetoString
               primitivedemo.Main$2@9304b1

It is extremely easy, right? Because you override the method toString() of the Object class. But then, the questioner asked more: how about change from new myClass() –> new myInterface() with some interface myInterface already declared, what would happen?

My first thought is that the class name of the anonymous class is not necessary and having no relationship with the real class, interface sharing the same name

But I just remembered about some of my snippet code before with

      new Runnable(){
       @override
       public void run() {}
      }

will behave well like a runnable object

So, what is a correct way of anonymous class. After asking Google, I found a good link about it:

http://www.developer.com/java/other/article.php/3300881/The-Essence-of-OOP-using-Java-Anonymous-Classes.htm

There are 2 main important points:

new className(optional argument list){classBody}

This expression instantiates a new object from an unnamed and previously undefined class, which automatically extends the class named className, and which cannot explicitly implement any interfaces. The body of the new class is given by classBody.

The result of executing this expression is that a new class that extends className is defined, a new object of the new class is instantiated, and the expression is replaced by a reference to the new object.

new interfaceName(){classBody}

This expression instantiates a new object from an unnamed and previously undefined class, which automatically implements the interface named interfaceName, and automatically extends the class named Object. The class can explicitly implement one, and only one interface, and cannot extend any class other than Object. Once again, the body of the new class is given by classBody.

Learn new things in IT

 

What and how to study in IT

What and how to study in IT

Generally, I think in every area, not just IT, people face 2 questions on their studying lives. What to learn and how to learn it as fast and as deep as possible.

What to learn

In fact, the problem with “What to learn” is in some case really hard to answer, in some other cases it is really easy when somebody like your teachers, your bosses tell you that you need to learn this specific topic to serve for the assignments or for working this project. However, when you decide yourself, it is a big challenge requires a lot of experience and high vision on What will be the next technology/idea coming and if it worths spending time learning that new ideas in a big forest of technology. Our time is valuable, there are many interesting outside, you can not learn all of them.  I will not focus yet on this problem but I want to Open Discussion for everybody to share their experience and vision to answer the big question “What Will be The Next”

How to learn

Now, I focus on the easier question, how to learn fast and deep enough.

Here is an interesting post that you can read it yourself. BuuNguyen’s blog, learn new things from books. Overall, it says something about why you have to learn new things from books.  If you have any arguments with that post. You should reply on that blog, that guy is willing to answer you. I want to extend it and share some thing more here.

That post only focus on convincing the advantage of books. I want to suggest that you should learn from many books on the same topic.  It is not a new suggestion also, I read it on blog KHMT (I forgot the link of the post, search it later).  Why do you have to do so?No matter how good the book is, it is coming from an individual or a small group of actors,  that is restricted, and not enough.  Every books has a different way of addressing the problem, and that particular addressing model, in most cases, is not always excellent for every chapters/problems. My experience is picking some good books, looking through table of contents, looking through explaining model (graph, text, code, examples, mathematics, science, technology solution, tutorial…). Usually, the explaining model is consistent through a whole book (or many chapters of that book).  Moreover, different books can suggest other ideas, concepts that a book lacks which will be seen when looking at the preface or table of content.

There are many other ways of learning suggested by Thanh Cong (slides) on barcampsaigon. In brief, he suggested team working, tutorials, pair programming. One more thing suggested by me on barcampsaigon also is Teaching (thanks to huyzing and eric hosick). IMO, you will not be an expert in a specific topic until you can teach other guys to be as good as you. You will need to understand the problem deeply before you can tell it by your language by your ways. Moreover, different people learn by different approaches, you have to teach them based on their approach, their way of thinking. Another value is that you will immediately know what you lack in that topics when standing before a huge number of different kinds of questions.