Effective Java

This blog contains notes on Joshua Bloch’s Effective Java. I may also include some Java 8 specific entries after that. There are following parts:

  • Creating and Destroying Objects
  • Methods Common to All Objects
  • Classes and Interfaces
  • Generics
  • Enums and Annotations
  • Methods
  • General Programming
  • Exceptions
  • Concurrency
  • Serialization

    Read More

Intro to Philosophy

This blog is based on the notes on Coursera’s Introduction to Philosophy, taught by University of Edinburgh. There are 8 sections:
(1) What is Philosophy? What does “do philosophy” mean?
(2) Morality
(3) Epistemology
(4) Political philosophy
(5) Minds and Machines
(6) Philosophy of Science
(7) Determinism: do we have Free Will?
(8) Time travel.

Read More

Systems Software

This blog is a short review for ECE353 (Systems Software, 2017 winter by Professor Baochun Li) at University of Toronto. This course talks about 7 categories of basic information about computer systems:

  1. Concurrency
  2. Scheduling Policy
  3. Virtualization
  4. File System
  5. I/O
  6. Security
  7. BLITZ

    Read More


This blog is a review of probability information.

  • Probability Distributions
  • Conditional Probability and Bayes Theorem
  • Estimation: ML, MAP
  • From condition probability to Bayesian Networks
  • Example: Naive Bayes Model
  • Example: Bayesian Tracking, Temporal Model and the Plate Model
  • From Directed Model to Undirected Model
  • Exact Inference
  • Message Passing and Belief Propagation

Read More

JavaScript notes

Functionality, scoping and asynchronous executions are three interesting features of JavaScript. This blog notes down some points:

  • Functionality of JavaScript
  • Scoping, this, and bind()
  • The closure pattern
  • Asynchronousity and callback hells

    Read More

Small Things in a Hackathon Website

Recently I have been using Flask to write this site. During the process I came across many small issues which took long time, and which should not, had I known about them in advance. Well, if you are also proceeding to writing your first 2000-line-scale Hackathon site, this blog might save you some time.
There are a few notes worth writing down.

  • Frontend: Use template or not
  • Backend: Deploying to AWS EC2 and RDS
  • Flask/Werkzeug: Scaling it up to enable multi-threadding
  • Flask: Submitting forms with data;
  • Practical problem: security
  • Practical problem: log-in control
  • Notes on redirecting
  • Apache: How to log and debug?
  • Discuss, Debug, and Deploy
  • Acknowledgements

    Read More