March 25, 2011

19 Guidelines for creating good Open Source Software

I really admire Eric .S . Raymond by the fact that how he overcame his childhood problem  and used it to his advantage and converted that stumbling block for the stepping stone of his success. He suffers from  congenital cerebral palsy which motivated him to chase a future in computing.
      Got a chance to read his well known book " The Cathedral and the Bazaar " based on his observations of the Linux kernel development process and his experiences managing an open source project, fetchmail.

I really liked the 19 points which he has mentioned in the book as guidelines for creating a good open source software and those are as follows:-


There are 19 guidelines for creating good open source software listed in his essay:
  1. Every good work of software starts by scratching a developer's personal itch.
  2. Good programmers know what to write. Great ones know what to rewrite (and reuse).
  3. Plan to throw one away; you will, anyhow.
  4. If you have the right attitude, interesting problems will find you.
  5. When you lose interest in a program, your last duty to it is to hand it off to a competent successor.
  6. Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
  7. Release early. Release often. And listen to your customers.
  8. Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.
  9. Smart data structures and dumb code works a lot better than the other way around.
  10. If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource.
  11. The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
  12. Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
  13. Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.
  14. Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected.
  15. When writing gateway software of any kind, take pains to disturb the data stream as little as possible—and never throw away information unless the recipient forces you to!
  16. When your language is nowhere near Turing-complete, syntactic sugar can be your friend.
  17. A security system is only as secure as its secret. Beware of pseudo-secrets.
  18. To solve an interesting problem, start by finding a problem that is interesting to you.
  19. Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.
Hope everybody will like it. These points are really very helpful not only to improve ourself on professional front but also on personal front.

March 24, 2011

Exam Writing Technique


We all face the exam time jitters while sitting in exam hall and thinking what kind of paper it will be, whether it will have questions that we have prepared or not. Lot of thoughts wander our mind during those nerve wrecking few minutes from entering the exam hall and till getting exam paper in hand. But instead pf panicking we need to hold on our nerves and need to concentrate on the things we have learned and keeping our mind cool and at the same time thinking about the way to write the paper. So below are some techniques which we can use to write the papers. I also used to apply some most of it and they really proved very helpful.

 
At the start of the exam...
    • Read through the paper.
    • Check how many questions of each type you need to answer. [If you have done plenty of past papers you should have a good idea of what to expect – but you should still check to make sure there has not been a change.
    • Divide up the time you have available into an allowance for each section, according to the marks available (don’t worry about dividing it down question by question for multi-choice and short answers, but do give yourself a time allowance for the whole section.)
    • Leave 5-15mins aside from your allowance [depending on the length of the exam] for attempting the most difficult questions and checking your answers.
 
Which order should I answer the questions?
  • Not all exams will have all types of question, but, in general, to gain the maximum number of marks you can in the available time, tackle most of the questions in the following order.
    • Multi-choice questions
    • Short answer questions
    • Essay questions
 
Answering Multi-Choice Questions
    • Check the rules carefully about how to mark your answers, how many answers to give and how to alter any you have changed your mind about.
    • Read through the questions.
    • Against each question put a mark indicating to you whether the question is one you:
    1. 1. are certain or almost certain about
    2. 2. are fairly confident about
    3. 3. think you might be able to do
    4. 4. have no idea about.
    5. [If the rules of your exam indicate that you should not write anything on the paper except your answers write the question numbers down in 4 columns on a piece of scrap paper]
    • Answer any that you are certain or fairly certain about first (re-read each question that appears obvious very carefully to check there are no catches!)
    • Next answer the questions you are fairly confident about
    • Next answer the questions you think you may be able to do
    • In this section eliminate answers one at a time. First read the question and all the possible answers carefully. Eliminate any answers you are certain are incorrect. Read the question and any remaining answers again. Eliminate any more answers you have decided cannot be correct. If necessary read the question and any remaining answers for a third time. If you are still not sure mark the question as one you have no idea about and go on to the next question [make a note of the remaining feasible answers against the question number]
    • Leave any questions you have no idea about at this point and move on to the short answer questions. [If you have any time remaining from your allowance for multi-choice questions make a note of this and if possible make use of it at the end of the exam].
 
Answering Short Answer Questions
  • Check through the rules about how many questions you need to answer
  • Read through the questions, sorting them into groups of:
  • 1. Questions you know how to answer straight away
  • 2. Questions you think you know the answer to, but will need to think about
  • 3. Questions you think you might be able to work out the answer to
  • 4. Questions you have no idea about
    • Answer the questions in group 1 followed by the questions in group 2.
    • If you still have time left from your allowance in this section try the questions in group 3, but do not overrun your time.
    • Do not answer the questions in group 4 at this stage even if you have spare time available.  
 
Answering Essay Questions
    • Check through the rules about how many essay questions to answer. Watch out for any word limits or rules indicating e.g. one essay from section A and 2 from section B.
    • Select the correct number of questions from those remaining – if you are not sure which to choose, select the question you think you know the most about – even if it looks more boring than other questions!

    • Method for Answering Essay Questions in Exams
      1. Write down the number of the question you are doing followed by bullet points on everything you can remember about the essay topic. Do not cross these out as you can get marks for notes even if you do not complete the essay (unless the instructions on your exam paper tell you otherwise)
      2. Structure the bullet point notes in a way that will answer the question – e.g. by putting paragraph numbers against them or numbering them in order
      3. Use the notes to write the essay. Your thought process should have started during the note making, letting you write the essay much faster.
      4. Structure your essay in the following way:
      • Introduction: 1 paragraph indicating what you will discuss, what main points you will make and one sentence saying what your conclusion will be [in case you do not finish the essay].
      • Main Section: Expand on the each of your main points. If your time allocation runs out while you are doing this STOP and start the next essay. [You will get more marks for attempting the required number of essays than by spending all your time making one of them superb!]
      • Conclusion: Explain what you have looked at, what possible conclusions there are, which you have chosen and why.
    • Identify any questions that are on topics you have studied in your lessons. Cross out any other questions – DO NOT be tempted to answer any questions you have not studied even if the ones you have studied look difficult!
 
Finishing Off
  • When you have completed the above steps or when your time allocation runs out, finish off / check your paper in the following order…
    1. 1. Check through the paper to make sure you have answered the correct number of questions. If you have not answered enough questions and you still have time available, go back and complete the steps above. If you are short of time or have answered too many questions follow the emergency procedure [further down the page] once you have completed steps 2-4 below.
    2. 2. Check that you have numbered all your short questions and essay questions and that the numbers match the questions you have answered!
    3. 3. Make sure your name / candidate number / centre number etc. have been filled in and you have followed any instructions on the paper – e.g. writing the numbers of questions you have answered on the front of the paper / writing your name on each sheet etc.
    4. 4. Go back and complete any remaining multi-choice questions. If you have time follow the elimination method again. If you are short of time select one of the remaining feasible answers for any questions you have already attempted. For any others, select one answer letter and use this on all the remaining questions – the probability is that at least some of them will be correct!
    5. 5. Attempt any remaining short answer questions from your group 3, followed by group 4. If you really have no idea at all, try to write something that could be sensible. [Never write anything rude or silly on your exam paper]
    6. 6. If you still have time available read through your essay answers, making sure everything you have written makes sense and checking for grammatical or spelling errors.
 
Final Minute Preparation 
    • If you reach the checking stage with not much time left and discover you have not answered enough essay questions….DON’T PANIC
  • Select the first remaining question that you have studied and can remember anything about.
    Follow step 1 of the essay question method, putting down in bullet points everything you can remember.
    Check you have put the question number against the notes and included it on any list of answered questions.
    If you have time, follow step 2 and number your bullet point notes in order
    If you still have time, begin to write the essay.
    • If you reach the checking stage and discover you have answered too many questions…
    If you have answered too many short questions, cross out any questions that were in your group 3 first. If you still have too many answers, cross out those in group 2 that you were least sure about.
    If you have answered too many essay questions cross out the one(s) you feel least confident about – not necessarily the shortest!
 
Time Saving Tips
  • If you think you may need extra paper in the exam do not wait until you cannot write any more. Put up your none writing hand to ask for more paper as soon as you start writing on the last sheet (keep writing with your other hand!)
    • Practice : Do as many past papers as possible and follow this method whilst doing them. This will get you into good exam habits and you will not need to waste time trying to remember how to tackle the questions in the exam itself.