Tag Archives: Learning

It is never too late for you

 


Just read this fantastic post on Quora feeling that I might have some further thoughts about it. I have seen many people obsessing about getting things right at the first time, and if they cannot, they think things are too late. However, what I see is that chances and opportunities are almost everywhere and after every couple of years, those chances and opportunities will come back.

Should I switch what I am doing?

I was once asked by my friend, a developer, if he should switch to Business Analysis or not. He feels like it more than programming but if he tries it and he does not fit it, he would waste 2 years of his career. And this kind of switching is raised a lot by my friends and other people. “Should I switch from a big company to work for startup/startup by myself?”, “Should I switch and try doing this/that?”, “My first job/internship was terrible, it would affect my career…”. The answer is you should not worry.

Any Experience Counts

Any experience that you learn, either from a big company, from a small company, from another job or career would bring you a unique point of view into the new career. If you work as sale and now want to move to programming, your sale knowledge is unique, 90% of programmers I know have no knowledge in sales. Understanding sales and customer would bring you a competitive advantage that most don’t have. And vice versa, if you work as programmer before and switch to be business analysis, you really understand the programming work, you understand the technical difficulties and you can help the customers and programmers to talk better. Any experience counts, any unique experience counts twice.

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.

Education would be the next wave

This is our research about the electronic education market, as the CMU Assignment

To look at the whole report, you can read it from here:

In short, we are seeing the new trends in technology, business, politics and market landscape is moving to allow better competition and creates better platforms.

In technology, we have better network bandwidth, better cloud computing, better consuming device (ipad/iphone) and better content generation tools like iBook Author.

In business, we have seen recent trends in education, from traditional education, to distant learning with the materials downloaded/sent to you via DVD, and then to e-learning when you can get interactions with teachers in the online place. The e-education would bring it further, to help you with more interactions with the teachers, with other students, and you can study wherever and whenever you like.

Me in RMIT and Vietnamese Newspaper

You can read the Vietnamese version here



Many software engineers and IT professionals dream of developing a ‘killer App’ for popular products like the iPhone, which will make them rich. Other people dream of one day having a book published.


Not many achieve either – and even fewer do so in their early 20s. But Vo Duy Khang (formerly student 3184092), an alumnus of RMIT Vietnam’s Bachelor of Information Technology program, has hit the jackpot with success in both of these areas – and now has the makings of a successful business spanning both Vietnam and Australia.


Khang graduated from RMIT Vietnam in November 2010 and travelled to Adelaide, Australia, where he is now completing a Master of Information Technology with Carnegie Mellon University, under a full scholarship.


With the benefit of the scholarship, Khang has been freed up to apply his own financial resources fully to get a small business off the ground while he also continues his studies.


His hard work and talent have been recognised by US publisher Apress, which has just decided to publish a book by Khang on how to build better iPhone applications. Khang’s book, Pro iOS Apps Performance Optimization, fills a need in the market for more practical guidance in this booming area of consumer technology.


Khang’s creativity and expertise has also been applied to a new business start-up in this field which already has five people on staff in Australia. Khang has been visiting Vietnam in the past month seeking further talent from Vietnam to join his operation.


Almost all his development team to date are RMIT students or graduates.


“They speak English well, and they all have a good understanding of what is needed,” Khang says.


According to Khang, the basis of a good user experience of any iPhone or iPad App is good performance. There is enormous potential in helping social networking applications such as Facebook to provide a better user experience by moving data in a quicker and smarter way over the net.


Apress has been impressed by his thinking in this area, as shown on his own website and as shared amongst the online community overseas.


One of Khang’s mentors has been Barend Scholtus, Academic Services Manager for the Bachelor of IT program, and the two continue to discuss shared interests regularly.


“We hope – in fact we are pretty sure – that Khang’s learning experiences at RMIT Vietnam have made contributions to his achievements to date, and we hope the best is yet to come.”



 





Khang (sitting) sharing knowledge with friends in Barcamp 2011


 


Khang’s book on Amazon: http://www.amazon.com/Apps-Performance-Optimization-Professional-Apress/dp/1430237171/ref=sr_1_1?ie=UTF8&qid=1321662306&sr=8-1


Facebook page: http://www.facebook.com/vodkhang
Contact info: Phone +61 478146872 
Email: vodkhang@gmail.com


 

iTunes U – a great learning hub

Stanford in iTunesU

Stanford in iTunesU

 

It would be so surprised for me that very few people ever knew about iTunes U. Come on, what’s wrong here? It is a great place for you to study through Harvard, Yale, MIT, Stanford and Carnegie Mellon. And all courses are free. Many people dream about these universities, so I think it is worth my efforts giving an advertisement and some introduction.

 

 

 

 

1/ Open iTunes and choose iTunesU

General iTunesU

Select iTunesU

 

2/ Select the university you want to learn

iTunesU

iTunesU

3/ iTunesU has a lot of cool universities: Harvard, MIT, Stanford, CMU

iTunesU Schools

iTunesU Schools

 

4/ Courses at Yale

iTunesU Yale

iTunesU Yale

 

5/ Download the video you like

 

Yale - Game Theory

Yale - Game Theory

Robocode New Beta Release

Robocode Logo

Robocode Logo

 

Robocode has released a beta version for 1.7.3.0, I am happy to contribute 1 feature and 1 bug fix in this release. Please download, test it and tell us any bugs you found

 

 

 

Reference:

Robocode in SourceForge

Remote working and management


My Office

My Office

Working as a freelancer, I have to deal with many remote works, including working remotely with my customer, my colleagues and my employees and it certainly has some different difficulties from other sitting together jobs. Here are lessons that I have been learning from these jobs:

Communication
Our good tool for communication is skype, IM and teamviewer. We try to keep a good and frequent communication with clients before our approach is too far from what they expect, or in case they want to change their requirement frequently.

As other oursourcing jobs, it is normal that we have to wake up early or sleep lately to match clients’ time as well as developers’time. Communication requires lots of patient and understanding from both sides. Many clients told me that they never meet a software developer like me, who can sit down, listen and talk with them about what they need, how to improve their app’s qualities. I am happy with this commendation. Sometimes, I even do not need to ask for bonus, but they are generous to give me more bonus to reward my efforts working for them.

Trust
Remote management requires trust on your employee. I am never a fan of a strict manager. My strategy is to manage adult, not manage children; therefore, we have to trust them working hard and passionate. We try to hire best developers that we can, and they should do their jobs automatically with integrity without any strict control from managers.

People may keep asking me how I manage my employees when I am in Australia, how to prevent them from cheating me. I do understand that with a loose management like this, it is hard to ensure 100% no cheating but whenever I hire a best developer with high motivation, they will just work on it themselves. An important part of managing is to foresee, to plan over the next few months to few years strategies not to just stand behind every developer to make sure they do not cheat. Trust and integrity are important.

This reminds me the time working at MultiNC, my first job. My boss was never in office, rarely asked us where the project was going on. What we, as developers do, is to try our best to create a best application based on the strategy that we set up. We frequently brought the products to the manager and asked for feedback.

Self-motivation
Trust will relate to self-motivation. You can only motivate yourself when you know that your managers trust you and you feel happy and freedom about your work. I would not be surprised when many developers feel bad about their jobs and think that they just do low level jobs. Because managers treat them as resources, give them low level jobs and never trust them in doing their jobs best. Money is not enough to motivate people. For me, people are motivated by giving them enough money, enough challenge and enough respect to do what they love doing.

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.

Logging class/method/variable name in Objective-C

Just a small post for an effective tip in Objective-C.

Usually if you use the

NSString *name = @"Hello World";
NSLog(@"%@", name);.
Output: Hell world

And usually, when we debug the program and viewing the log, we really want to know the class/method/variable name and line number as well. You can manually hard code it like

NSLog(@"ApplicationDelegate - applicationDidFinishLaunching - name - Helloworld");

But, it is really time consuming and repetitive task. For our company, we use

#define NCLog(s, ...) NSLog(@"<%@:%s:{%d}> %s = %@",
[[NSString stringWithUTF8String:__FILE__] lastPathComponent],
 NSStringFromSelector(_cmd), __LINE__, #__VA_ARGS__ , [NSString stringWithFormat:(s), ##__VA_ARGS__])

Another variant of this is (it combines both class name and method name into __FUNCTION__):

#define NCLog(s, ...) NSLog(@"<%s:{%d}> %s = %@", __FUNCTION__, __LINE__, 
 #__VA_ARGS__, [NSString stringWithFormat:(s), ##__VA_ARGS__])

Then you can just use it like NSLog. For example:

NCLog(@"Hello world");

Output: <ApplicationDelegate:applicationDidFinishLaunching:100> name: Hello World

Good luck to your new productivity:). For your programming language, stop using the System.out.println() and Console.WriteLine, find a version of yourself

References:
Log the method name in objective-C posted in stackoverflow

Print out the variable name in Objective-C posted in stackoverflow

RoboCode Team Battle (Week 4)

Hi, everybody, the robocode competition goes up to another level, promising more fun and more jobs for you guys. We just released a new rule this morning requiring people to compete in team, 2-2 battle. The era of 1-1 battle ended. This morning is just a practice for a new game. You do not have time to improve your robot a lot, that’s ok now. You just need to have a better communication with your ally.

Now, we just take a look at battles between 2-2. There would only have 4 teams this morning but creating a lot of fun and entertain for people. Poor you guys, the people not joining this morning

The first match:

The Red and the Blue guy on the same team while the White and Black on the other team. The match was quite in the first team when the Black guy use the still strategy, which was good for some robot cases that can not shoot the still robot

The second match:

The 2 yellow guys compete with Gray and Blue guy. The 2 yellows shoot quite correctly but the strategy of the other team is against the Yellow team when they move in line but change direction really fast.

The third match:

We found the anti-Indian guy. Welcome to Yellow guys, you guys did a really well job when running in a spin strategy and the Indian strategy almost dies.

Wait for tomorrow, when we will have a real team battle. Never have the case that we will shoot each other any more. And AWARDS, will officially be given for the first 2 teams tomorrow.