Skip to main content


Showing posts from June, 2017

Google I/O 2017 Notes

WOW! How meaningful this below video explains about the name of  "I/O".
Sundar Pichai talked a lot of Machine Learning Machine Learning is a very hot trend these days. Google uses it for their products.
Google Assistant: Easily booking an online meal by talking with Google Assistant like a staff of partners, for example.Google Home: Hands-free calling.Google Photos: sharing suggestion, shared library, photo books and google lens.Youtube: 360 degree video, live stream. Kotlin became an official programming language for Android

I'm on the way to Kotlin! ^^


Why Functional Programming Matter

What issues do we concern when implementing and maintaining systems? One of the most concern is debugging during maintenance: "this code crashed because it observed some unexpected value."

Then, it turns out that the ideas of no side effects and immutability, which functional programming promotes, can help.
Shared mutable data is the root cause Shared mutable data are read and updated by more than one of the methods. Share mutable data structures make it harder to track changes in different parts of your program.

An immutable object is an object that can't change its state after it's instantiated so it can't be affected by the actions of a function. It would be a dream to maintain because we wouldn't have any bad surprises about some object somewhere that unexpectedly modifies a data structure.
A new thinking: Declarative programming There are two ways thinking about implementing a system by writing a program.

- Imperative programming: has instructions that …

Agile Design

How can you design the software which is built in tiny increments?

How can you ensure that the software has a good structure which is flexible, maintainable and reusable?


Not really! In an agile team, the big picture evolves along with the software.

How? With each iteration, the team improves the design of the system so that it is as good as it can be for the system as it is now. They focus on the current structure of the system, making it as good as it can be.
How do we know if the design of software is good? Avoiding these following symptoms of poor design (design smells) should be a way.

1. Rigidity - The design is hard to change.
2. Fragility - The design is easy to break.
3. Immobility - The design is hard to reuse.
4. Viscosity - It is hard to do the right thing.
5. Needless Complexity - Overdesign
6. Needless Repetition - Mouse abuse
7. Opacity - Disorganized expression

These symptoms are similar in nature to code smells, but they ar…