Tag Archives: community

Excel Rules

Excel

Excel

It is quite surprising for me to see how Excel rules the world of business. I know that many people in different companies, big or small use Excel for their daily jobs. But, until recently, I have understood how much impact Excel does have in the business world, and why it is the case.

These 2 excellent posts describe most of the use case of the Excel, why people still use it in the professional world, even in JP Morgan. I think Excel will rule even in the next few years, due to its ubiquitous usage, and many people support it (or its format): Microsoft (of course!), Google (with Google Docs).

Sorry Geeks, Microsoft Excel is everywhere

The importance of Excel

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.

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


 

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

My book: Community and Opportunities


My iPhone Book

My iPhone Book

I am happy to announce that I encountered a book contract with Apress to write about iphone development. This will be a great opportunity and new experience for me when I have never written a real book before.

That is just part of the main content of this blog, I want to share my own thought over community support (as I already said at this blog post about Community Support) and how it would help me to reach this kind of opportunities. An Apress staff contacted me after he read my blog series about iphone development. This helps me to restate again that if you do good thing for other people, chance will come back. Real chance, real value, not an artificial reputation.

Supporting community and make lives better is my personal long-term goal as well as my company’s long-term goal.

 

Advertising:

Visit vworker to hire best employees

Why should we join and support community?

There are always people keep asking me the same question: “Why do I actively join free community like Stackoverflow/BarcampSaigon/MobileDevCamp/My Blog/Top Coder? What is the value and the benefit?”. It is nice that people ask this question and actually think about it. And I hope that I can answer them fully with this post somehow.

vodkhang on stackoverflow

1/ Fun.

It is fun. Really? Yeah, it is actually fun. Wait a little bit, why is it fun for working? I love playing game, I love to see my level going up and my mark changes everyday, I love beating the top challenging problem. It is just so fun there. If you still suspect this for somehow, I would rather ask you why you play football and play guitar in the church outside of working time. If you think this is not a good example because people don’t have headache over those things, then we take a look at some others. Do you play chess? Why do people play chess and what is the value and benefit when playing chess? If you can figure out the answer at this point of time, then we are done. It is fun, that should be it.

At this point of time, if you still don’t feel anything fun to do so, I don’t know if you should continue reading about other benefits: brand advertising, learning and contributing. If you don’t get fun out of the work, especially the overtime work, it is hard to persuade the goal just by other visible benefits. Moreover, these benefits are only long-term seeing and require lots efforts and time.

2/ Brand Advertising/Social Networking & Trust.

WordPress Sharing

WordPress Sharing

Brand Advertising and Social Networking is important. When you actively join communities, you get to know more people and more people get to know about you. Nobody knows if these people turn out to be your next employer or your next friend that can help you out in the difficult situations.

I partly believe in the theory that sometimes, we should hire people that we are familiar and can trust rather than hiring some talented stranger. So, when people can see how you engage to help the community, people started to trust you. The more people know about you, the more people may trust you. And when people can trust you, they can give you the chance to work together or hire you as an employee or even work for you.

Moreover, these things are not built overnight, there is no overnight success. It may take you couple of months, or even years to write a blog and only your friends read it. It is the same with answering on stackoverflow, topcoder. It takes years for you to reach to an acceptable point that people start to recognize your name/your company’s name.

3/ Learning & Contributing.

Open Source

GNU Open Source

Now, we go to the last reason. It is the last not because it is the least important reason, it may be the most important reason for many people. However, many people want to see the something visible, something that either gives them lots of money or reputation to move forward to their career first. So, I just leave them read things they want to read first.

It is so obvious. When you answer something in stackoverflow, it is either help you to solid your knowledge or help you to think deeply to debug. I really like debugging on stackoverflow, it is challenging. You have to find the bug as soon as possible, and sometimes, you don’t have debugger, you don’t even have IDE to help you. You just read over the code, verify each line of the code and try your best to guess the part that can create the bug. That’s challenging and fun, actually.

References:

http://iphonedevelopment.blogspot.com/2010/12/non-deterministic-problems-aka-finding.html

Image Sources:

http://stackoverflow.com/users/flair/227698.png

http://en.flossmanuals.net/floss/publish/WordPress/rsrc/WordPress/Introduction/icon_big.png

http://t0.gstatic.com/images?q=tbn:ANd9GcQj7UR1webcv1NlEzFaRpAUeudZjWyOYYAA27iiaxot4X9vdDa2

iPhone development tools

Working with Iphone development is working with OSX, and we always need good tools and software for both IPhone and OSX environment to boost our productivity and reducing the repetitive, boring jobs

1/ Multitouch, Accelerometer and more : ISimulate

An application allows you to use your real iphone to control the IPhone Simulator. There is nothing better than the real IPhone device to get the real user feeling. The reason is that it will save a lot of time for you when you only build on simulator, debugging on simulator and you have a wide screen to see.

2/ Memory static analyzer : Clang

Help you a lot in the managed memory environment of iphone development. Good news is that the new XCode (3.2) will integrate directly with Clang help you to analyze and find memory leak much faster.

3/ Google tool box for Mac

You cannot write a good iphone app development without writing good unit testing. And I suggest you to use Google toolbox for Mac with a lot of supports, easy to integrate into your project. It is better than the default OCUnit in XCode. It also really runs your code, which takes more time, but gives you a real, better result and can help you to deal with some File IO or real code you need to run when running unit test.

4/ UI Automation Test: XCode Instrument

Stop running the UI everytime you fix a bug or adding new feature. UI Automation Instrument is a best tool for you like robot proxy in web testing.

5/ Screen capture software: Jing

Good, free software with high quality captured video. Good use for demo.

Catupre Screen Software

6/ Chat client: Adium or Imo

Why do I put a chat client here? Everybody need some way of communication, especially if some of your co-workers or clients are not there. In Mac, you can use Adium to integrate a lot of chatting services like Gmail, yahoo…

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/

Usability for Users

I am currently working at a mobile phone development company (Multinc) and I started to see and learn many more things about usability, which can be said as the main strength of iphone. So, I want to share some usability experience when developing and working with iphone team and as usual, I also wanted to hear more experience from other people from other cultures. Usability is a ambiguous term and almost depends on the culture and users’ type. I will try to give out experience about normal, ordinary users more than advanced (e.g IT) users because most of us create software for ordinary users rather than advanced one and may be this one is only for a group of users like American.

Most Users are stupid and lazy

First and foremost, the most important thing should stick into our, developers’ mind, is that “Most, or even all users are stupid and lazy”.  How many cases that you can teach your friends, your families or anyone using IT successfully? How many cases, even IT guys spend on reading instructions of a new software/game/websites, and how many hours for non-IT people? Our answers will make us understand clearly about users, especially non-IT people. They want to finish their jobs on computer without caring or have to care about technology at all. Why do they have to spend their valuable time for something supposed to help them make their job easier and faster?

Users are never false

The second thing is that users have problem, the fault should never be their faults, or more precisely, it must be software providers’ fault. They type some bad password, text input that we do not parse or check before and system crash. It is our faults. They use our system not in the way we want, it is our fault. IMO, there is no such thing in the world that the customer is false, they are always true, by default. So, if there is some bug, or some crash and users give bad feedback, any classic excuse (like “It works on my machine”, “They should never use my system like that” … ) never works.

Never teach users at all

The third thing can be “you should never teach or try to teach your users at all”. All assumptions like “They have to/need to read our instruction and manual” are really stupid. It is like the first one, all users are lazy (and also stupid to learn new thing), if we give users software with an instruction on how to install it, most of cases they may give up so soon, the only thing they may know is click “Next”. Despite the great idea of our software, if user can not use it in a short enough time, user will move away from it. I do not have many experience on business but with a period of time working as marketing and sales assistant teaches me one important thing: Marketing for users to come is 1 thing, keep them is another story. If users come and they leave, they will never come back. So, IMO, having a user leave is worse than not having that user at first.

Final List

Some suggestions for software development, this list is really long but I want to list few important ones:

_Be aware of any users’ problem and compatibility. One problem I still see a lot in famous/good start up is compatibility. It looks bad on my browser, and I will never come back. This depends much on our market, but I even see an anti-virus website shows ugly on Google Chrome.

_A good feedback system is important. I will never come back to any company that the customer service dare to say: “It is your fault”. Make the user feel free to write any feedback and respect them. We need them (except you are Microsoft or Google), but they do not need us yet. Treat them as “God”

_Implicit learning can always be implemented. Explicit learning is too difficult, except we have awards for any feedback or we hire people to do so, so implementing implicit learning may be a good idea. Some ways of implicit learning in software/website I can know is : logging, look at any click, any move around our system, relationships between service and product they buy, time they spend on something. Add more if you can.

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.