Wednesday, July 31, 2019

Notes from "It's not how good you are, it's how good you want to be"

  • All creative people need something to rebel against, its what gives their lives excitement.
  • There is no instant solution, the only way to learn is through experience and mistakes.
  • Aim beyond what you are capable of.
  • People who are conventionally clever get jobs on their qualifications (past), not on their desire to succeed, (the future).
  • Do not seek praise. Seek criticism.
  • If you accept responsibility, you are in a position to do something about it.
  • If you give away everything you have (ideas), you are left with nothing. This forces you to look, to be aware, to replenish.
  • Don't look for the next opportunity. The one you have in hand is the opportunity.
  • Accentuate the positive. Eliminate the negative.
  • Do not put your cleverness in front of the communication.
  • Don't promise what you can't deliver.
  • Give your client what he wants and he may well give you what you want.
  • Don't take no for an answer. Work out a new approach.
  • When it can't be done, do it. If you don't do it, it doesn't exist.
  • If you can't solve a problem, its because you're playing by the rules.
  • The pesron who makes mistakes is unlikely to make anything.
  • It is wrong to be right, because people who are right are rooted in the past, rigid-minded, dull and smug.
  • It is right to be wrong. Being wrong isn't in the future, or in the past. 
  • Don't be afraid of silly ideas.
  • Play your cards right.
  • It's not what you know, it's who you know.
  • Don't give a speech. Put on a show.
  • Getting fired can be a positive career move.
  • Rough layouts sell the idea better than polished ones.
  • If you get stuck, draw with a different pen.
  • Don't be afraid to work with the best.
  • Do not try to win awards.

Saturday, July 20, 2019

How to solve problems

Some notes from the book How to Think Like a Mathematician by Kevin Houston. I found this chapter in the book interesting because I was able to relate to the  process when solving competitive programming problems.

Definitions
  • Exercise - something that can be solved by a routine method
  • Problem - something that will require more thought; will require the application of routine methods learned in exercises
"The best way to learn how to solve problems is to solve problems."

Sample Problems
  1. How many zeroes are at the end of 100! (100 factorial)
  2. Suppose that X and Y are two infinite sets. Find a formula that relates |X|, |Y|, | X intersection Y| and |X union Y|.
  3. Show that the equation x^2 + y^2 = z^n has positive integer solutions for every n = 1,2 ,3, ...


Polya's four-step plan

Understanding the problem
  1. Understand all the words and symbols in the problem - Know the meaning of the symbols as well as the important definitions and theorems
  2. Guess - use your intuition - Make an educated guess
  3. What do you know about the hypothesis and conclusion? - Write down what you know about the hypothesis and conclusion
  4. Work backwards and forwards - You can start with the conclusion and think what it would imply.
  5. Work with initial and special cases - Some problems have an index (n in P3). Solve for the initial cases to get a 'feel'.
  6. Work with a concrete case - For abstract problems, look at a concrete case. Create instantiations of the variables. (P2)
  7. Draw a picture - Venn diagrams (P2)
  8. Think about a similar problem - Recall problems you've solved before that may be related to the problem you are solving.
  9. Find an equivalent problem - Reformulate a problem, say to show that two functions are equal, they can be represented as a new function with difference of zero.
  10. Solve an easier problem - In P1, solve 10! first to get a feel.
  11. Rewrite in symbols or word -
Devising a plan
  1. Break the problem into pieces -
  2. Find the right level - there are many ways to approach a problem so select the right one
  3. Give things names - "Let X be ..."
  4. Systematically choose a method - A proving problem can be solved solve using different approaches.
Executing a plan
  1. Check each step - don't use intuition
Looking back
  1. Check the answer - Test.
  2. Find another solution
  3. Reflect - Think about what solved the problem.



Saturday, July 13, 2019

Internship at KAIST

This Midyear (June 24-August 16, 2019), I am a research intern at the Computer Architecture Laboratory of the School of Computing in KAIST under the supervision of Prof. Youngjin KwonKAIST ranks high in the areas of Systems that I am really interested so this internship is a very good opportunity for me. My teammate for the internship project is Jongyul Kim who is a PhD student in the lab. We are working on improving the performance of distributed storage systems using RDMA, programmable NICs, and NVM.


    Tuesday, May 28, 2019

    Sections I read in an SP paper

    A Special Problem (SP) paper is a form of documentation for capstone projects of students. It is in the format of a journal article. As a panel member, it is only during the SP presentation itself that I get a copy of the SP paper of the presenter. So given the limited amount of time to read the paper, I only read certain parts of it before the presentation starts.

    First I read the title to identify the general area(e.g. web/mobile app, ML, algorithms) of the project. Second,  I read the abstract to get an overview view of the work. Third I focus on the objectives to know the specifics of what should be achieved by the project. Lastly, the results and discussion to check whether the objectives were met.

    It is unfortunate that some advisers don't bother to read/edit the SP papers of their students before the presentation. Nonetheless, the four sections I mentioned above, I think, should be written with care.

    Saturday, May 4, 2019

    Programming Tips for Student Projects

    • Use git for version control. Follow this simple workflow model.
    • Create separate folders for frontend and backend components especially if using the MERN stack. You can also create a data folder inside the backend. An example application template.
    • Use config files to set values for database configuration such as dbhost, dbuser, dbpass, dbname
    • Create .sql files that contains initialization data and stored procedures.
    • Use relative URLs in your app.
    • Write an INSTALL text file that describes how to install your application. Indicate the dependencies (OS version, package names, version number). If possible, create an install.sh or setup.sh to automate the installation process.
    • Use a coding convention for naming variables, functions, methods, etc.
    • Do not store passwords in plaintext.
    • Learn Docker and Docker Compose and TravisCI.  Check my app template.
    • Write automated tests.
    • (more to follow)

    Thursday, April 4, 2019

    PCSC 2019 Experience

    This year's PCSC 2019 was held at the National University in Manila. According to the organizers, approximately 200 participants registered. There were three of us from UPLB. Although I did not present a paper, I enjoyed the presentations. Most are in the field of AI, ML and algorithms. It was good to see familiar faces in the computing research field in the country.  In the picture below is Dr. Roxas, the current president of the Computing Society of the Philippines delivering the opening remarks.