Holistic Learning

Recently, I came across “Holistic Learning” technique. Brilliant, Scott H Young, developed and promoted the process. Scott is a challenger and he is doing quite interesting projects. E.g. complete MIT degree course in one year, travel and learn 4 different languages in one year. You can see his challenges and detail stuff from Scott’s blog.

In this posting, I’d like to summarize “Holistic Learning”, which is much different process from a conventional learning technique that I am familiar with. Rote memorization.

Different way of thinking

Naturally, when you encounter a new concept/topic, you are trying to reciting lists of facts, rules or formulas. Instead of doing that, you should seek to connect ideas together just like webs of information. If you properly link ideas together to see the bigger picture, studying should only be a brief refresher. A few summary points :

  • Organized Ideas into Webs
  • Interrelates Subjects and Concepts
  • Many Neural Paths to the Same Idea
  • Views Concepts Through Many Unique Perspectives and Senses
  • Aims to Learn by Relating

Approach (Model & Constructs)

Start with a model. A model is a quick representation of the idea that you are trying to relate or understand. It is an incomplete and temporary solution. Model can be abstract, but visual representation is helpful. A model is not a construct. Links form into simple models which form into overall constructs.


Scott’s blog posting explains the techniques as below.

  1. Visceralize – Not just visualization, but also use all your senses and connecting it to information.  Studies have shown that people remember more vividly information that comes to us in an emotionally aroused state.
  2. Metaphor – Metaphor is a literary term used when you want to relate two things that aren’t actually related. Metaphors help in building constructs by relating a new construct to a previously established one. Use phrase “That reminds me of…”
  3. Ten Year Old Rule – Explain ideas to yourself as you would to a ten years old. You should be able to “dumb down” an idea, so it is obvious to yourself.
  4. Trace Back – Put away your books and start with a random fact or concept. Then relate that idea to another concept in your subject. Keep doing this tracing pattern until you’ve linked many ideas together.
  5. Refresher Scan – Scan through information in your text book. When you encounter information that you either don’t remember or weren’t 100% sure about. Quickly link that information back to existing ideas through visceralization and metaphor.
  6. Compress Information – Not all information works well for holistic learning. If no clear patterns and constructs, your goal should be to compress. Find ways to group information into smaller chunks (chunking) of memory through pictures or mnemonics.
  7. Write – Take a piece of paper and write out the connections in the information. Reorganize the information into different patterns. Key here is writing, not the final product.


Holistic Learning focuses on concepts. In my daily life, I have to deal with lots of abstract concepts as an application architect. I believe this technique will enhance my experience as a life long learner.


AngularJS from Code School


I wanted to have a quick understanding about the AngularJS. I tried to watch some of Videos from egghead.io, but it is difficult to start something with a limited availability (let’s say 1-1.5 hour weekday and 4-10 hours in weekends). So I have been putting AngularJS off on my To-do list for a while and I came across the AngularJS from the Code School sponsored by Google. I thought this was a good opportunity to jump in and learn AngularJS. Normally free course from the Code School is very simple and short, but this course covers all important concept about the AngularJS.

I started to take the first lesson from Monday and spend 1-2 hours/day until Thursday and finally completed on Sunday afternoon. Along the video, I had to make notes for a lab. Hands-on lab was pretty good and it reinforced the learning the concept. I can now explore more about the AngularJS and try to have a pet project to keep that knowledge alive.

I highly recommend this free tutorial if you want to grab an idea about the AngularJS in a short period of time.

My Notes


  • Directive is a marker on HTML tag that tells Angular to run or reference some Javascript code.
<body ng-controller="StoreController">
function StoreController(){}


  • Controllers are where we define our app’s behavior by defining functions and values.
  • Controller must be capital.
  • ng-controller directive with Controller name and keyword “as” and name a variable.
  • Scope of the controller is only inside if DOM element.
  • ng-show directive can use as a conditional based on the value. Ng-show default is false if
  • ng-hide directive can be used.
  • It seems nested div with tags are not working.
  • ng-repeat directive used to iterate array


  • Formatting with filters {{ data | filter:options}}
  • Date : {{‘1388123412323′ | date:’MM/dd/yyy @ h:mma’}}
  • Upppercase & lowercase
  • limitTo. Character display limit or loop item #
  • orderBy : with – decending. Without – ascending order.
  • <img src= …> tag tries to load the image before angular tag tries to do something.
  • Use <img ng-src directive. <img ng-src=”{{product.images[0]}}” />


  • ng-click=”tab = 1″
  • Like {{tab}} expression, expression define a 2 way Data Binding. This means Expressions are re-evaluated when a property changes.
  • ng-init allows to evaluate an expression in the current scope.
  • ng-class directive takes the active tab and assign appropriate css class.
  • ng-class=”{ active:tab ===1}” => active is name of the class to set, tab===1 expression to evaluate if true, set class to “active”, otherwise nothing.
  • Use Panel Controller to consolidate the logic and move things out of html
  • ng-controller=”PanelController as panel”
  • ng-init=”tab = 1″ replaced inside of js. This.tab = 1;


  • ng-submit allows us to call a function when the form is submitted.


  • Turn off default html validation – “novalidate” in the form.
  • Mark the form element with “required”.
  • {{reviewForm.$valid}} – form name and reference to $ built in element.
  • Preventing the submit – only submit if reviewForm.$valid is true.
  • Source before typing email
<input name="author"… class="ng-pristine ng-invalid">
Source after typing, with invalid email
<input name="author"… class="ng-dirty ng-invalid">
Source after typing, with valid email
<input name="author"… class="ng-dirty ng-valid">

border-color : #FA787E;

border-color : #78FA89;
  • Angular validates email, url, number, specify min, max.

Custom directives

  • ng-include => specify name of the file to include. Name of the file with single quote because it is meant to be a variable name. Interesting thing is that it load the html file and once loaded with javascript, it fetches ng-included file as an Ajax request.
  • Custom directive will do the same thing with some additional code. Why write a Directive instead?
  • Directive allows you to write HTML that expresses the behavior of your application. Basically, directive embedded in the HTML can tell much of the story what it is trying to do.
  • Template-expanding Directives are the simplest:
  • Define a custom tag or attribute that is expanded or replaced.
  • Can include Controller logic if needed.
  • Directives can also be used for :
  • ○ Expressing complex UI
  • ○ Calling events and registering event handlers
  • ○ Reusing common components
  • To make a custom directive, need to define it inside of app.js
app.directive('productTitle', function(){
//Configuration object defining how your directive will work
restrict: 'E', // type of directive E for Element use 'A' for Attriibute
templateUrl: 'product-title.html' // Url of a template
  • Dash in HTML translates to camelCase in JS <product-title> to ‘productTitle’
  • Custom directive can have other directive inside. <product-description ng-show=”tab.isSet(1)”></product-description>
  • Attribute vs. Element Directives : Attribute being embedded in html tag and element being independent tag.
  • ○ Don’t use self-closing tag for custom tags
  • ○ Use Element Directives for UI widgets
  • ○ Attributes Directive for mixin behaviors like a tooltip
  • Directives allow you to write better HTML. Allow readers to understand the behavior and intent from just HTML. Likely using custom directives to write expressive HTML.
  • Element example

• Controller directive

restrict: 'E',
templateUrl: 'product-gallery.html',
controller: function(){
this.current = 0;
this.setCurrent = function(imageNumber){
this.current = imageNumber || 0;
controllerAs: 'gallery'


  • Group directive or other types of javascript functions into a new module.
  • New module can be referenced in a parent module, new module js file needs to be referenced in html.


  • Angular provides various services; $http, $log, $filter
  • $http({method: ‘GET’, url: ‘/proudcts.json’});
  • $http.get(‘/products.json’, {apiKey: ‘myApiKey’});
  • Dependency Injection – service name in array, service name as an argument. Ultimately services are injected in the controller.
app.controller('SomeController', ['$http', function($http){
var store = this;
store.products = [];
store.products = data;
  • More than 1 service example
app.controller('SomeController', ['$http', '$log', function($http, $log){

  • Besides get(), post(), put(), delete()
$http.post('/path/to/resource.json', {param: 'value' });
  • Other HTTP method using config
$http({method: 'OPTIONS', url: '/path/to/resource.json'});
$http({method: 'PATCH', url: '/path/to/resource.json'});
$http({method: 'TRACE', url: '/path/to/resource.json'});


Model Thinking – Decision Tree problem

Currently I am taking Model Thinking from Coursera and I’d like to share interesting problem solving technique using a decision tree model.


Basic is very simple. You use tree like model to support your decision. See more info here. Without knowing the tool/model, we use this technique often in our real life. Really interesting thing about decision tree is you can quantify your decision with numbers.

Example problem

Here is one of the questions from the week 2 quiz.

You want to go to a concert in Detroit, but you have only $80. The cost of driving will be $30. When you get to the concert, there’s a 40% chance you’ll be able to get a ticket for $50, and a 60% chance that tickets will cost more than $50. If it’s worth $130 to you to go to the concert, should you drive to Detroit to attend this concert? To solve, use a decision tree.




Answer to the question is “Yes” because “Go” decision will give me $2 gain.

In the decision tree, there is no point of exploring “No Go” option because I don’t gain anything from not going. Let’s look at “Go” decision. When I decided to go, I have two possibilities: 40% of getting a ticket at $50, 60% of not getting a ticket. I need to exam each possibilities.

With 60% chance that tickets will be over $50, I can’t buy a ticket due to lack of money. I only have $80, so I ended up loosing the cost of driving which is $30. With 40% chance that ticket will be $50, it requires little bit of calculation. One important statement is that I have to see if it is worth spending $130 for the whole thing. This means my net gain calculation should be based on $130. Starting from $130, subtract driving cost $30 and concert ticket $50, so I have $50 of net gain.

From “Go” decision, I need to calculate overall net gain, so my total net gain from “Go” decision is $2 (see above picture). This means it is worth for me to “Go”.


I found this technique is fascinating. It allows you to think rationally with numbers and possibilities, also allows you to see your reasoning clearly. One of the challenges are understanding the problem from the model thinking. It seems easy when you look at the solution, but actually it is hard to apply the concept to the scenario. Just like every problem solving technique, you will get better as you spend more and think more about the problem.

On Strategy : What Managers Can Learn from Great Philosophers – Coursera course experience

What a great course! I became a big fan of Professor Luc de Brabandere. With his unique French accent, throughout the course, he pointed out very important things about thinking.  This course explores the ultimate question – How do we think? By answering this question throughout the course, Professor Brabandere explains Induction and Deduction. Continue from Creativity, Innovation, and Change (CIC) course, I have been thinking about being creative and way of thinking. This course exceed my expectation and inspire me many different ways.




Learning points

  • Idea always generated in two steps – good old ^ new idea => new good
  • Rule : To have a best idea, you will need to have many many ideas.
  • How do we think?
  • In front of us is “reality(world)”. You simplify everything. Simplification of thought represents as Box/Model.
  • Induction is the other way of thinking – much more complicated process.
  • Deduction example : You have a concept of car in your box/model. Answer to “Car is…” is easy. Simply finding car brand. Like Toyota, Volvo or something.
  • Induction example : You have Reality/World in front of you and you need to bring that into your box/model. Answer to “Car is an example of …” is much harder to answer because it requires your existing or new box/model.
  • You can’t have perfect induction.
  • Algorithm, analysis, number is deduction. Heuristics, synthesism, concept is induction
  • Deduction is a form of thinking involving the application of an existing box, such as a framework, to details observed in the world in front of you, testing the box’s capacity to interpret them.
  • Induction is a form of thinking involving moving from fragmentary details (particulars) observed in the world in front of you to a connected view of a situation, a binding principle, which eventually forms a theory, a working hypothesis, a box.
  • Thinking is about organizing facts, data, and observations from the world in front of you by introducing connecting links and then using this information.
  • Managers with a strategic vision will have scenarios based on the mega trends.
  • Strategic Vision : An ambitious image of a future state that is radically preferable to the current state, according to those who develop it. It is a box that becomes a reference for a company, and thus serves as a guide allowing each employee to approach work more effectively.
  • A megatrend is a sweeping but relatively predictable change that is expected to affect the world in front of you (usually our customers, competition, market, etc). It happens independent of your company and your issues. Megatrends can serve as sources of idea in the search for new boxes.
  • A scenario is a story about a possible future; it is a box consisting of the description of an end state, a related interpretation of current reality, and an account of how the world gets from one state to the other.




I’ve learned how we think. Understanding how we process our thinking helps me in many different ways. In the end, I understood what “thinking outside of box” truly means. This course is highly recommended, especially someone who are interested in “Metathinking”.


Building RESTful WebService/Client using WildFly 8.0.0 Final, RESTEasy, and Maven Deployment

WildFly 8.0.0 Final was released recently. For a new project, I had to convert a legacy WebService into RESTful WebService using RESTEasy on JBoss Application Server. Not only converting RPC style JAX-WS WebService (Axis2-1.3), but I have to convert Ant base build/deployment process to Maven. My experience around RESTful WebService was around Jersey and Maven experience was limited before this project. As for my first step, I built a small prototype using WildFly + RESTEasy + Maven combination based on JEE7. There are several tutorials & resources that I could find in the internet, but it was difficult find a complete example. JBoss RESTEasy API and Java EE 7 tutorial have good reference and sample codes. However, I had difficult time finding the best practice based on my requirement. Most of the internet resources are either out of date or too simple for what I need to achieve. Also, most of examples are contained within the Eclipse environment, so considering deployment on a remote server was additional challenge . Eventually, I put things together and share my experience. 


  • JDK 1.7 u51
  • Eclipse Keploer
  • WildFly 8.0.0 Final
  • Maven 3.1.1
  • RESTEasy 3.0.6 – comes with WildFly.


  1. Create a RESTful WebService using RESTEasy deploy to WildFly using Maven.
  2. Prototype should have a WebService and client.
  3. Build a web page that can be exposed by calling a WebService client.
  4. Retrieve a list of object by passing a list of String as a parameter.
  5. Application uses a single properties file fed from pom file based on environment profile. Assuming DEV/TEST/PROD environments are running on WildFly 8.0.0.
  6. Prototype will be deployed to WildFly standalone server. For this reason, portability wasn’t considered in this prototype.


  • WildFly plugin added
  • Two profiles are created ‘development’ and ‘prod’ to simulate different environment.
  • ${project.version} is a maven project property
  • ${maven.build.timestamp} is a special variable in maven
  • Most of JBoss specific jars are defined as ‘provided’ scope.



After “mvn package -P development” command application.properties are populated as below.

build_date=2014-03-30 19:29:52


  • I wanted to prefix the RESTful WebService URL with ‘rs’, so I can differentiate normal Web Application from the WebService.

WebService Challenges

I need to retrieve a list of object based on user selected strings from list box. This list box has about 100 of items and there is a possibility that user can select “All” from the list box. There seem to be two ways of doing this : Convert string collection to JSON or comma delimited single string, use @PUT instead of @GET if string collection is too long. @PUT is for update, but I can safely pass the parameter in the body rather than URL as a @QueryParam. Also, I came across another way of doing this by passing long string parameter in the Header, but I couldn’t find an example code to follow. Especially, building WebService client passing long string to Header.


WebService Client

JAX-RS 2.0 defines client API, which makes it much easier to develop client side. I always felt developing RESTful WebService Client side is difficult because of different implementations use different classes/methods although underneath principle is the same.


mvn clean compile package -P development wildfly:deploy-only

Source Code



I felt importance of RESTful WebService becomes bigger and bigger. It is due to modern Web Application development is moving away from server side generated front end pages. For this reason, I feel I need to improve hands on experience and understand the details. Some of learning points from this experience.

  • New JAX-RS 2.0 spec in JEE 7 made client side development easier. At least defines a standard way of implementation.
  • Working on the latest technology requires time and patient : much of the configuration resources are based on the old version.
  • Haven’t handled the security. Need to expand that later post.






Creative, Serious and Playful Science of Android Apps – Coursera course experience

When I was waiting for an Android Course in November, a friend of mine told me about this playful Android course. I always wanted to put my hands on Android development but higher priority work always take precedence because no Android project at work.


The course focused on the beginners in first half and second half was little bit advanced topics. The videos are fun to watch, especially, a professor with a British accent was very animated. Especially last video, he posted geeky music video made by him!

There are few points I’d like to remember from this course.

  • Finding my phone driver wasn’t fun in the beginning. I don’t know why it is so hard to find Galaxy S2 phone driver.
  • Better emulator. I remember I had first emulator installed few years ago on my old work laptop. It was so slow at that time. It is not lightening speed, but much better than before and workable.
  • One thing I’ve noticed, actual phone works much better. Of course, a phone has its own CPU and no need to depend on laptop’s CPU.
  • Stop Eclipse, kill adb.exe and restart Eclipse if Emulator or my phone do not work.
  • No luck running xxhdpi base emulator.
  • In general, Activity, Intent, Fragment are straight forward. However, playing around the layout is very tedious and time consuming work. It will take lots of time to make things look right.
  • This course focused on hands-on work rather than spending time on theory, so it was fun to work on various assignments. However, there is no extension of assignment and mid-January to early February was particularly hard because of the other Android course overlapped with this course.


It was a great course! I got to play with music and pictures on the Android App. Most importantly, I had so much fun with this course! I am also taking Programming Mobile Applications for Android Handheld Systems now (started in January). The Playful Android course helped me a lot as I am working through Labs in this course. My goal is building an application that can be shared and used by close friends and family.

Creativity, Innovation, and Change (CIC) course experience & summary


Beginning of September, I took “Creativity, Innovation, and Change” course by Penn State University from Coursera.org. This course covers various topics, especially focused on creativity and innovation in total 8 weeks. According to the professors, there are over 100,000 students enrolled this course from all over the world. We had three professors with different backgrounds and experience. The course, as name suggested, covers various techniques and tools to help me to become better at creativity. One interesting thing was that there are two types of creative style : Innovative, Adaptive (part of week 1 assignment). I found myself a moderate adaptive style. This means I apply my creativity from the situation that I am familiar with. Resource can be found here. Workload was not too heavy. Average 3-4 hours per week was good enough for me. This course offers different path with different goals in their mind. Course Info. Below techniques are posted as exercise from the course and I put the content for my own usage.

Idea Generation Techniques

  • Brainstorming Techniques : Various brainstorming techniques explained.
  • Random Stimuli : Participants use free association in connection with a random word or image to generate new ideas.
  • SCAMPER : SCAMPER = Substitute, Combine, Adapt, Modify, Put to different use, Eliminate, Reverse. Participants use a set of directed questions to help evolve an existing product, service, or solution into one that is more ideal.
  • Morphological Matrix : An existing product or system is broken into parts/functions. Various ways of achieving each part or function are identified and then (re)combined to create new forms of the product or system.
  • Brainwriting 6-3-5 : Brainwriting 6-3-5 is a modified form of classic brainstorming that encourages equal participation from all team members using written rather than verbal idea generation. There are many varieties, but the general process is that all ideas are recorded by the individual who thought of them. They are then passed on to the next person, who uses them as a trigger for their own ideas. Clearly, this is a group technique.
  • Concept Tree : A concept tree or concept fan starts with an idea and uses that idea to identify concepts, or connecting points, from which alternative ideas can be derived. This is more of an individual technique, but a group could develop a concept tree together in stages.
  • Superheroes : Superheroes is a fantasy-based version of Role Storming and is similar to other boundary-stretching techniques such as Exaggeration and Reversals. Participants pretend to be a fictional (or real) super-hero (Superman, the Incredible Hulk, Batman, James Bond, Wonder Woman, Sherlock Holmes, etc.) and use their ‘super’ characteristics to trigger and develop ideas. This technique could be applied individually or in a group.
  • Spare Diamonds : When we start a new Venture, we often find that we are short on resources: money, knowledge, equipment, people contacts, and many other items.  Our first tendency is sometimes to seek as much funding as possible, in order to help our ideas move forward.  And sometimes funding is important.  And yet, there are many other resources right in front of us as well … resources that we miss.  For each of the following categories, try to list 1 to 5 “Spare Diamonds” that might be of great service or use in your Venture:
    • friends. Do any have particular skills that could help you?
    • interns. Is there “excess skill” looking for experience?
    • space. Do you have excess space at home, in the office, or elsewhere?
    • land. Is there park land or side-walk space you might be able to use, just for asking?
    • tools. Have an extra shovel, power saw, portable cement mixer, computer, radio?
    • transportation. Have a mostly-un-used car? Bicycle?
    • internet. Is there an open web site you can access?
    • knowledge. Do you have useful, but un-used, knowledge?
    • other items. Have frequent flyer miles? Coupons? Lumber?

How can you apply these and other “spare diamonds” to a Venture?  Remember, it is often more difficult to find “spare money” lying around.  However, these other diamonds often lie un-unused, until someone sees a need for them – that is often the magic of creativity!  Find value where others do not.


Step 1: First, you need to record some ideas! Choose a particular day and a particular time period in which to record them. It could be 15 minutes on a Tuesday, or an hour on Saturday morning, or the 2-hour train ride to a business meeting, or an entire weekend! If you can, choose several different days and times to record your ideas, so you can see how your ideas vary under different circumstances. For whichever times you’ve chosen, record your ideas in some concrete way – write them down, tweet them, leave a voice mail, send an email, use a voice recorder, or draw a picture … whatever works for you!

Step 2: Now, we’d like you to measure your ideas using the 4+ metrics listed below. It’s important to remember that you are NOT judging your ideas in this exercise. The point is to observe and measure your ideas in different ways, so you can decide for yourself how you want to improve them. So, start here:

Quantity: How many ideas did you generate each time?

Variety: How different are the ideas from each other? (You might use a simple Likert scale for this – e.g., very similar, moderately similar, moderately different, very different).

Novelty: What kind of novelty do your ideas represent? Are they more adaptively creative (i.e., ideas that refine, polish, or tune up something) or more innovatively creative (i.e., ideas that reframe, reconfigure, or dismantle something) – or do you have some of both?

Efficiency: How efficient are your ideas in terms of implementation? Can they be put into practice right away using things that already exist, or will new systems or infrastructure be needed before they can be realized?

Your Choice! What other ways can you measure your ideas? Choose other metrics that you think are meaningful and apply them to your ideas as well.

  • Planning for Action


Once you have something you want to implement, it can be intimidating to figure out where to begin – what to do first, second, third, and so on. In this exercise, we’re going to show you one way to get started. The general idea is to prioritize your action steps using short, medium, and long term thinking – and then to build some structure around your expectations for each action step. Speaking of action … let’s get started!


Step 1: Identify. Identify the specific idea or solution that you want to implement. It could be and idea you generated in this course, or it may be another solution that you have in mind.

Step 2: List. Generate a list of action steps that will be needed to bring your solution to life. Don’t worry about making this list absolutely complete or putting the action steps in precise order. Just do your best to identify key actions that will need to be taken. You can always add more action steps later!

Step 3: Define. Determine what “short”, “medium”, and “long” term mean in the context of your situation. For example, short term to a research scientist might be 1 year, medium term may be a decade, and long term may be 50 years. For a teacher, short term might be at the end of the current instructional unit, medium term might be the end of the semester, and long term might be the end of the school year. For a parent, short term might mean a few hours, medium term might mean the end of the week, and long term might mean the end of the month. Be clear about what you mean by short, medium, and long term before sorting your action steps.

Step 4: Sort. Now, sort your actions using the following phrase: “What I see myself doing in the short term is …” Make this specific by replacing “in the short term” with whatever you have decided is “short term” for you. Identify all the steps from your initial list that fit with this phrase. Now, move to your personal definition of medium term and repeat the process: “What I see myself doing in the medium term is …” Then move to your long term action steps. Add more action steps as needed along the way. To jump-start your efforts, be sure to include at least one short-term action that can take place in the next 24 hours.

IMPORTANT: As you move through this process, WRITE DOWN YOUR ACTION STEPS! Action steps are just like all ideas: if you write them down, you are more likely to do them.

Step 5: Order. Now, take the action steps in each category (short, medium, and long term) and see if you can put them in order from soonest to latest, or from least to most important – whatever makes sense for your solution. Compare across categories to make things consistent.

Step 6: Own. For each action step in each category, write down these details:

a. Who is responsible? – Is this an action you must take yourself, or do you need someone else to do it for you? If you need help with this step, who will help you?

b. Target dates – Begin and End dates for the action step. When will you start and finish it?

c. End product/Measurement – How will you know when the step is complete? How will you measure success?

d. Status – Finally, identify a way to keep track of the status of each action step. Is it completed? Partially done? Just started? Update this information regularly, so you can see your plans moving forward, even if progress is slow.

  • CENTER : CENTER is an acronym that stands for Character, Entrepreneurship, owNership, Tenacity, Excellence, and Relationship. There is not “one big secret” to success. Rather, learn the system that enables “ordinary people” to have extraordinary victories, with self, family, work, and community.

Exercise Introduction

Previously, I mentioned that one of the villains of pursuing your passions and purposes, is busy-ness. My friend Brian Cunningham, a highly accomplished entrepreneur who lives near Washington DC, introduced me to a version of a “Life Ring. This is a document that forces you to focus, by stating “I am _____” on a single sheet of paper.

When I made my first draft of my Life Ring, I had more than 20 ovals on it! I came to realize that I was trying to make everything a priority, like bolding every letter in a book. Trying to do too many items, splintering our time and energy into too many bins, is what I see from most of the students and professionals with whom I interact. Who doesn’t have too many things to do?

In my own case, with time I made the hard decisions to stop doing certain items at work, halt leadership roles in some organizations I was part of, and decline various invitations and offers. I made the decision to say a “big YES” to those few items in which I would invest most heavily. I pruned the vine. My effort in life is higher than it has ever been, and now that the effort is focused on roughly one third the items, my impact has increased, by my own measure.

Having a few bullets under each oval heading can also be helpful. First, by clarifying detail within each category, I can paint a more clear picture of what I am doing. Furthermore, the wisdom in sticking with the 1-page Life Ring is that each morning, I can review it and refocus. Because I am able to fit only 3 or 4 short bullets under each heading in the Life Ring, I must choose what to do, and what to exclude, in clear ways.

Exercise Instruction

Draw your Life Ring. You can use the template above, or create your own template. Focus on roughly 5-9 major life arenas where you will invest your time, with self, family, work, and community (SFWC). Put your “master in the middle”; this is the primary driving force behind all your decisions – and in every life, there can only be one master. If you try to have more than one master, eventually your Life will intersect events so that you have an “identity quake”, and must choose your primary master. Under each arena bubble, list those most important habits that you will commit to each day or each week. This is not simply a “to do list”, but a list of habits. When the Life Ring has a clear “master in the middle”, 5-9 arenas, and a short list of habits under each arena, it is complete.

Purpose: Focus your effort

Drawing and continually asserting a Life Ring is a powerful way to focus. Following Miller’s “magic number 7, plus or minus 2”, having 5 to 9 major arenas, each summarized in a bubble around the center, and then add a few sub-bullets, that still fit on 1 page. This is likely as much as you can focus your mind around.


I’ve learned various ways of idea generating techniques throughout this course. This course offers fun exercises and definitely I can use techniques at my work and outside of work. Highly recommend to anyone who are interested in generating new ideas and wants to be creative.

Personality Test – INTJ

I remember had this test when I was in the University. I don’t remember what type I was, but I remember it was “I” introvert.

Here is the link for the free personality test Here. Result Description Here. Strength & weakness Here.

Some famous INTJs:

Vladimir Putin, President of Russia
Augustus Caesar, Roman emperor
Paul Krugman, a famous American economist
Rudy Giuliani, former New York mayor
Donald Rumsfeld, U.S. Secretary of Defense
Colin Powell, U.S. Secretary of State
Lance Armstrong
Richard Gere, actor
Hannibal, military leader of Carthage
Arnold Schwarzenegger, actor and California governor
Thomas Jefferson, a former U.S. president
John F. Kennedy, a former U.S. president
Woodrow Wilson, the former U.S. president
Walter White (“Heisenberg”) from “Breaking Bad”
Gandalf the Grey from The Lord of the Rings
Hannibal and Clarice Starling from “Silence of the Lambs”
Professor Moriarty, Sherlock Holmes’ enemy
Gregory House from “House, M.D.”

MongoDB for Node.js developers – Course Experience

10Gen – MongoDB company offers free courses. In March 2013, I downloaded and configured MongoDB on my machine.  At that time, I knew 10Gen offers free courses of their product, but didn’t have a chance to get onto it. In August, I started MongoDB for Node.js developer course. The course was 7 weeks duration with estimated 5 hours per week commitment. This week was Final Exam week and I just completed my final exam. I have my own best practices and some regrets that I’d like to share.  For anybody who wants to understand the NoSQL and how it is different from traditional RDBMS, I highly recommend this course. Only thing is that you will need to know basics of Node.js. At least Javascript. There is a MongoDB for Java developer couse, but weekly commitment is double the Node.js course (10 hours per week).


Course material covers the main concept of MongoDB using Node.js driver and Mongo Shell. Someone without Node.js experience will likely having a hard time doing a homework, but most of home works are generally not too difficult to complete. Forum is pretty well maintained and staffs are pretty good at responding. Week 5, 6 focused on aggregation and shard, so not so much Node.js was discussed. I found the week 2 was the most difficult week. Not only so much knowledge, but also length of videos. Somebody in the forum wrote that he spent 15 hours to do the homework. I spent about 10 hours of watching videos and completed the homework. Sometimes, instructor explained the concept and ran his own Mongo shell really fast, so I had to rewind the video several times to understand the concept and do my own Mongo shell run side by side. Even though some homeworks uses Node.js and need to run code in Node.js, I felt more comfortable doing the same thing in the Mongo shell. Maybe because it gives me a result right away without starting Node.js. Also, lecture always uses Mongo shell to explain the concept.

Best Practice & Regrets

One thing I did well was taking a note from the video lecture and run my own command right after the concept is introduced. By doing this way, it took twice longer than just watching video lecture, but it paid back later during the final exam week. I just simply reviewed my notes and sample code from the note instead of searching for MongoDB manual.  I started to take a note from week 4. I didn’t think about this practice because of very well documented MongoDB manual. During the final exam, I felt I really need to refresh my memory in a short period of time and wish I had a note from earlier weeks.

Looking ahead

So now what? Course is over and I know how to use MongoDB including configuring replication environment. This opens up a perfect opportunity for me to experiment MongoDB with Hadoop. Next week or so, I will solidify my understanding of MongoDB and start to explore more options how Enterprise programming uses MongoDB in the real world. I will analyze real world situation when to use MongoDB and focus on why MongoDB is better in that situation.


NoSQL is a buzz word in a modern web development. MongoDB is one of the well known NoSQL DB and I believe it has its own place in the application development. With many years of RDBMS experience, using MongoDB requires a paradigm shift. No table relationship, no join. Just document itself represents the state of data. The syntax didn’t bother me so much because of JSON experience (I read an article complaining about MongoDB ruining JSON structure), but there are several things that requires strong mental notes :  Schema design, index strategy, and choosing a shard key in replication environment.

It was interesting 7 weeks with MongoDB and hope to identify my own unique usage of MongoDB in the real world project.

Standford Startup Engineering online course – completion & experience

Finally it is over, after 12 weeks of long campaign. The course had few interesting turns, but in the end I learned what I wanted to learn. Most of all, collaboration with friends are very unique experience. Before the course, I thought about taking the course together with others and suggested to my coworkers. When I suggested the idea, 6 other people at work showed interests. We were all motivated and enthusiastic about the course. However, it was very difficult to manage time in summer and some of us couldn’t complete the course. I had a week long camping scheduled during the course and I managed to handle it by working late on a weekend before the camping. At work, we had a weekly meeting to encourage and discuss the idea. The course offers the forum to discuss the issues and idea, but I felt offline meeting was really helped me focus on the course. Also, knowing other coworkers’ progress gave me enough peer pressure to stay on the course.


Michael Jo Certificate

Course Content 

The course was extended to 12 weeks from 10 weeks. Up to 3 weeks, all the videos are posted on time, but things got delayed as summer approached. With over 125,000 students, the professor and his team did the best they can do, but I felt it was quite difficult to cover all the topics for all different levels of experience. Topics that I learned were Entrepreneurship, emerging technologies, Node.js, AWS EC2, Heroku, Unix commands, emacs, Git, GitHub, BitCoin, and Bootstrap. Not like what I expected in the beginning – I thought I will have a product at the end of course, the course duration was too short for the actual product development. I think the purpose of this course – my own interpretation – is to open up the door for different possibilities by knowing what’s out there and provide basic knowledge to follow on our own. In the end, the course ran out of time to cover the DB and Coffeescript in more detail.


I highly recommend this course to anyone who wants to understand how modern web technology is evolving. Especially, someone who is thinking about their own product to sell. This course shows both technical and philosophical aspects of starting up business in the modern web environment. From the Enterprise Java application development/support perspective, I learned the benefit of using Cloud and potential power of server side Javascript.

Lunch & Learn presentation : AWS EC2, Heroku, BitCoin

Upcoming courses

I am at my final week of MongoDB for Node.js developer from MongoDB University. Also, week 5 of Creativity, Innovation, and Change course and Disaster Preparedness from Coursera. My next courses are Data Analysis course and Inspiring Leadership through Emotional Intelligence course starting in the end of October. I felt that I need to understand how to analyze Big Data and also need to learn more about leadership skills.

Most anticipated course, at least for me, is Programming Handheld Systems with Android starting next January. Already 8 coworkers are signed up for this course. Although it is not easy to manage your own time and balance with your family life, it is worth taking advantage of free online courses.

Let another collaborative learning begin!