Saturday, February 25, 2017

Elina Svitolina - top 10 debut

Feb. 25, 2017

Julia a big fan of tennis, she studied one tennis star a time. So, today she will spend 20 - 30 minutes to learn a new player, she never remembered her name before, called: Elina Svitolina.

Julia will study some statistics of the player, the coach, and the player's practice, the player's interview.

Here are videos she watched.

top 10 debut

WTA Can Challenge

August 7, 2015 14 minutes press conference - WTA - Bank of the West Classic Est. 1971

Julia's note

6:30 / 14:32 - it takes her time to move ranking to top 10. Not just go upward directly. Step by step, not rushing myself.

The top 5 or top 10 has more confidence to play against top 20 or 30, even she loses the first set, she does not show any emotion, wait for the chance to get back.

3 minutes video - know about Elina Svitolina - The move through Mutrid Madrid

Notes she took for the training, competing:

Always give your 100%. No matter how you feel, etc.

Julia's Ph.D. study

Feb. 25, 2017

Julia's Ph.D. study 

First time in her life, Julia was told that she had excellent education from most important person in her career. She could not believe that. So many good memory through her Ph.D. study spanning whole 10 years from 2000 to 2010. She could name 10 of them in a row:

1. Two years intern at Motorola from 2000 to 2002
2. Teaching assistant work on programming, logic design and micro process
3. Network research
4. Freedom to choose several graduate courses: education leadership, biology statistics, introduction to cryptography
5. Write one book chapter
6. Intern at a startup company called Siva near 1 year and then full time work less than 10 months
7. Start a Chinese living water bible club around 2004
8. Go back to Ph.d. study in 2007
9. Write one book chapter and one conference paper
10. Work on research on anonymity protocol research
11. Onsite interview from General Motors
12. Onsite interview from Microsoft

Graduate courses 

Julia took one graduate course in education department when she worked on computer science Ph.D. in 2005, and then she took "biology statistics" mathematics graduate course as well. She tried to innovate her Ph.D. study and also tried a few ideas, worked as a teaching assistant in information technology department to grade C# programming course a few semesters. She registered too many independent study and she should have learned so many other things through the process.

Innovation is hard

Most of her classmates in education leadership are the teachers in elementary school or other similar institution. She enjoyed the structure of class teaching, around 10 of us were sitting inside the classroom, study and communicate through the whiteboard. The course name is "education leadership".

One of the complaints is that the teaching lacks depth of learning and working-together activities, old-fashion. Students do not bond together and help each other in growing career, zero activities together outside the classroom. At end of the semester, Julia got B+.

Innovation is hard, Julia worked on her computer science Ph.D. program, and then she tried so many things but she failed so many time and so many ways.

To be continued 

After 10 years ph.d. study, Julia started a new career in Canada, Vancouver city. She is kind of going back to old route, lack of innovation and motivation to push forward from 2010 to 2015. But Julia learned something through the involvement of the community, tech community and other activities, she sets a goal to attend the hackerrank programming contest and continuously improve the performance starting from April 2016, and also document great things daily in her life through up-and-downs.

Julia likes to set some goals to learn courses on about C# programming courses.

Laszlo Bock on Google's Approach to HR

Feb. 25, 2017


Thinking about real world, Google tries so many ways to innovate, the human resource management is really great idea to brand the company and help the company go succeed. Julia listened the video this Saturday morning 4 or 5 times while she did house cleaning over 1 hour period, clean bathroom, living floor, and oven and sink etc.

The talk is called Google's approach to HR, 9 minutes.

Human resource study 

Will come back to write down the idea adopted by Google.

perks, like massage programs, dogs, dry cleaning etc. - create community,
informal place to have a meeting, come together
drive innovation - listen conversation among those places
efficiency - gas change etc. onsite

focus on data, experiment and users

Engage the employees - Top 4 places to work
freedom and transparent to the information

3 models - ? HR hiring and team build
traditional one - outstanding benefit plan
not HR consultancy, but other things

put the following two skills together:
Great problem solving skills
Deep business sense

statistics and Ph.D. etc.

Advanced degree of people with analytical skills - raise the bar of ...

Long term people challenge?
big company, how to motivate people to volunteer ideas, less conscientious
keep the connections close and tight

Economy slowdown - how to handle from HR?
Salary increase, bonus
particular careful - when people leave Google, the severance benefits

retention study - annual employee survey
upward management feedback as well
annual survey - 96% ?

executive team goal - real, tangible and follows-up.
say somethings, it matters - positive.

middle managers skills?
credit ability -
ability to articulate situation

Cost of switching jobs is low compared to the past - tap in the talent, open offices in the world
mobility is the central
create an environment
people will go away to express themselves


vocabulary: perks - benefit
severance pay - spelling check, google it and spell correct
first time to use list box option - heading, minor heading, subheading provided by blogger

Recursive function code review

Feb. 25, 2017

Julia reviewed 2 years ago in 2015, how she wrote a recursive function in less than 15 minutes, in the important meeting. She was never a manager before, image that she met 2 years ago herself, and read the code, how she thought about the learning style. So many issues in her writing, she found out by herself that there are 5 problems at least, but there are more. Here is ternary tree preorder traversal, middle, left and right in that order, and here is the blog she wrote.

Code review

It is important to take courses about C#, and take down some notes, and learn one thing a time. 

Here is C# version Julia wrote on Feb. 25, 2017. 

Here is the C# code review on

Thursday, February 23, 2017

code review - Hackerrank stone division

Feb 23, 2017


Julia always chooses a topic to study, today her topic is about Google recruiting.

She came cross the article on Hackernews about Google interview, and she likes to put some number together to help her analyze the situation: (hypothetical skills)

Recruiter goes over millions resume, and start from 2000 people, try to fill 3 positions:

1: 2000 for 3 positions 

resume screen - 100,000 resume -> 2000 resume
phone screen   - 2000 people, each 30 minutes 
code screen     - ?
phone screen   - ?
in-person interview - 1 in 10 or 1 in 20 from that point

and then read the comment from an ex-googler 1825 days ago, probably in 2011: 

With all that said, I haven't found any degree (at least from any school I've interviewed applicants for) to be a reliable signal for programming. Even if they went to a really good school, there's a good chance that they spent all their time learning network protocols and low-level mechanisms, and will happily write up a sliding-window implementation for me, but will stare at me blankly when I ask for a simple recursive algorithm. It's just tough to find people that spent time studying and practicing general-purpose computer science.

An googler's comment on onsite interview more than 5 years ago, Julia is the first time to get the idea:
"So what you are saying is that for me to not have made it through I must have equally messed all my interviews or at least a majority of them. I surely didn't feel like that after the interview, but who knows, since I still don't have a way to know if that is the case. Then this really sucks."
Just a comment from another Google engineer who does interviews (and didn't do yours, since I haven't done any for a couple months now): your own feeling at the end of an interview may not at all reflect your actual performance in the interview, because you have no visibility into what questions weren't asked.
I like to interview candidates by asking them to solve a simple programming problem and then modifying the specification little by little, having them adjust their solution to implement new functionality. There are about 8 steps in my question, and frequently I'm gauging the quality of the candidate by how long it takes him to get through the first N stages; we fix bugs in earlier stages before moving on to the next stage. To calibrate myself, I've tried this question on several of my coworkers, and they were universally able to get about halfway through the question with bug-free code in about 10 minutes. Only one required prompting on my part to fix a bug. Most every candidate I've interviewed has taken 20-30 minutes to get to the same halfway point; by that time I've only got 15-25 minutes left in my interview, and the candidate seems so far like a "no hire", so I move to a different question to find out if the candidate has other strengths to counterbalance his weakness at solving this (simple) coding problem.
From the candidate's perspective, he only sees me ask a series of programming questions which he answers satisfactorily with a little prompting from me. If he answers another question or two satisfactorily, he may think he's done well, but he doesn't know that I wanted to delve more deeply into every question I asked him, and just didn't have time because the pace of his solutions was too slow.
I wish I could give this feedback to the people I've interviewed, but sadly, I can't.

So, Julia searched her blog using keyword: recursive function, and then she read the first blog through the search results, and the blog is about the fact that she failed to deliver recursive function design, code in Nov 24, 2016, after so many years Ph.D. study and 7 years full time work in the city of Vancouver, and then she did some research to catch up. 

More detail, she worked on stone division more than a few hours in the contest - hackerrank woman codesprint, a medium level algorithm, maximum score 50, Julia overcooked the solution, had weak muscle on recursive thinking, and out-of-her-control, scored 0. The algorithm is called stone division.  

Here are five blogs about stone divisions, documented her experience in the hackerrank woman codesprint, series from 1 to 5, failed to score any thing from a medium level algorithm, maximum score 50, over a few hours (5 hours?) in the contest in Nov. 24, 2016, and then she took action to do some research on recursive function, and then she found code review on As a matter of fact, she got used to isolate herself so long, and in order to improve hackerrank contest performance, she seeks the change. From a lone coder, work ass off, she barely stays afloat, so she decided to find her new schools one by one, the 3 months old new school is called, she found the site just after the Nov. 2016 woman codesprint contest. 

So, she spent one hour to review the algorithm, wrote a more readable C# version this time, with 3 months experience with the code review school, with top-rated teachers from JavaScript, C#, algorithm help her to code review her code line by line, debate on basics - hash function, coding style, API design, and numerous rich experience. 

Code reivew

C# code for stone division is ready to be posted to for a review. And code review link is here

Wednesday, February 22, 2017

Blitzscaling 08: Eric Schmidt on Structuring Teams and Scaling Google

Feb. 22, 2017

Watch the video, 1 hour 22minutes.

Ask five-year question
14 years Java
-> Novell
-> Understand the cash, revenue, from Novell

150 people when Schmidt joined Google
-> same professor 18 years difference - two founders hired the CEO
-> 18 months plan, no deliverable, like a graduate school
-> raw talent matters ?
-> Talk about playboy interviews
-> professional vs. founders
-> 100 > 60 plus thousand
-> 3 of you read every resume
-> cautionary tale: no product should ship before it matures
barely work,
debate, operation and
performance of firefox -> invent Chrome -> 10 more people
Bought Android -> 1.4 billion operating system
Big management of lesson - Eric is wrong all the time (?)
compound value of decision

Sell the dream ? (20:00 - 25:00)
hire incredible intelligent people - debate
hire people who can get job done -
lesser universities/ not your friend/
controversial -
glue people -
Let us all reviewing all hiring, smell like glue people
Huge argument - we never fire anyone, hiring is crucial
normal people who have done something special
hire generic people, CFO who goes to bankrupt
Review all packets - how to score the people 1-5 bias - average weight - future performance
unconscious bias - understand bias
interview 16 time, this gentleman, cannot interview people more than 8 times -> 5 or 4 times
simple techniques -> analytical bias

Be a disruptive and be a good way
Chrome - 20 people 40:00
120 engineer works for one manager - run that in 2 years
CEO is to manage the chaos.

Not to do and move fast? No.
Keep Google innovative - don't be evil and 20% time

How did you end up growing managers?
business analytical skills -
you should hire divas - drive culture of excellence

the attitude: "Just start it and make it work out "

Excellent talk - finished 85 minutes one time.

Eric Schmidt & Laszlo Bock talk at re:Work

Feb. 22, 2017

Watch the video 28 minutes, and take down some notes.

Establish trust and ...
Use humor ...
appeal to high power vs customer is a judge

Laszlo Bock - a pioneer to decide with data
here are the facts

incentive and intent -

Hackerrank - week of code 29

Feb. 22, 2017

Plan to work on week of code 29 later in the week. Do not miss the opportunity to win a bronze medal.

A programmer writes her first blog about driving safely

Feb. 22, 2017

Julia learned a lesson a long time ago. First year she moved to Vancouver from south Florida in 2010, and then she made wrong U turns in the city of Vancouver. And then she learned her first lesson. And then, second year, she got a moving violation ticket. As a scholar, she knew that she has to study BC driver license book page by page, word by word. She spent one month to study the book, and she just loved to read the book again and again.

And after 6 years, Julia experienced her first car accident in Vancouver, she tried to yield a bus when driving to work, and then, she heard something in the back.

Long story short, it is time for her to find some material to study, and learn how to be a defensive driver, get some statistics update, acquire some new skills.

Remember a bible verse shared from FAU professor, a Chinese living water bible club in 2007, 10 years ago, Psalm 121: 6, the sun will not harm you by day, nor the moon by night

Accident location: Rupert street near worthington drive, 9:20am, Feb. 22, 2017, city of Vancouver. 


Will continue later.
The idea is to read driver license book again, understand all rules, terminology, and situation analysis, reasoning. Write down some notes here.

Tuesday, February 21, 2017

Becoming a Googler...and Other Opportunities

Feb. 21, 2017

30 minutes video, Laszlo Bock has a conversation with thomas L. Friedman

Take down some notes:

First round, 31 minutes:

You can learn vs you know what you are doing

What google looks for:

1. Learning ability

2. Emergency leadership
team 4 - 6 people, step in/ step out

3. Culture fit - just like us, people are comfortable with ambiguity.
humanity, conscientious

3. Expertise, good engineer, great at it.

5 - 10 times, comes out something new - Look at the problem again and again.

14% percent no college degree - How google selected them?

Online training, self-taught. Pick up a lot of places, how to assess these?

Look at deep, net hire each year 5000 - 8000, 2 million application.

Every day MIT people size of people applies every day, 11,500 students.

Recruiter, screen, assessment - phone screen - engineer, technical coding ability
Come to campus after phone screen
Ask transcript - 15 years out of school - people 1/3, people lies. Small recruiting is making sense.

Performance - 300 independent variables, like school, first two years, velocity - how quickly you get promoted.

Grades are only for first 2 years after the school.
Grades - curve in different colleges.

Recruiter - big mistake in writing job resume/ answer: poorly write what they accomplished.
Give people understand - grow x by doing y based on z

How to avoid big mistakes in the interview? Do not wear suits.
Do not wear suit. Curious, demonstrate interest.

Talk about a candidate, she asked if it is not for interview - authentic interest.

1. Great question, why took hard course and got low grade instead of getting easy course?

Julia should learn how to answer question like this, ask herself: why taking hardest contest on hackerrank, what you learn? your performance can go so low compared to others?

People shy away from pain.
Learn analytical skills - could not get A.
More objective skills ...

The things you learned through those tough classes - grades are tough, professors are not friendly, very valuable in your life.

First you learn analytical skills, very valuable. Most of people do not understand compound interest, pay off high interest rate or student loan.

Second you learn resilience of ..... (17:38/31:23), repeat twice last 5 minutes.

Minority hiring?

2. Cost of education
- advise for parents of young people, college choice.
1. Look for signals, brands recognize, every one else? Write a big check to get the education.
Related understandable - skills are transferable to any environment
fundamental - think of cost

14% vs 86% for big employer - 1/3 goes to college.
Short term is better to assess the people, screening

Push them to take math, physics class

Cultivate people long term - build a relationship first
Related to resume screening as well - certain type

83 years old - look at age, gender, ......
conscience bias - a lot of work to be done

Second round, 30 minutes

How Google Thinks About Hiring, Management and Culture

Feb. 21, 2017


Thanks for a comment from linkedin on Feb. 21, 2017:
Ben Lai
Read about how Google started out in Laszlo Bock's wonderful book on their unique culture, "Work Rules". In particular, if you are super patient in hiring only the best, then you will keep the bar very high and not settle. Take away as much bias as possible. Get many points of view. Use the same interview questions for all candidates. Be as transparent as you dare. Don't let individual managers make hiring decisions. Those are lessons from that book.

Book: work rules - insights from inside Google that will transform how you live and lead, 2015

Study of video:
21 minutes video, take down some notes:
First round, 21 minutes:
1. How manager plays role? What kind of trials failed, 500 engineer reports to 1 manager.
2. Hiring committee, maintain the bar vs hiring manager decision.
3. Deliberate concentrated practice, work on very small thing a time.
4. Book - fairness about compensation, 10 thousand to 2 million in stock option, wide distribution
Distributed - pay transparent, no one is happy.
Procedural adjustment - validate, test and make sure outcome is fair
Market value - adjust to keep them

Second round, 21 minutes:
1. Evaluate the hiring manager's power, take it away.
Bias -> 10 second rules -> trained psychologist vs college sophomore - > 20 minutes -> 10 minutes -> 10 second rules, confidence, agreeable, conscientious

2. Separate committee - hiring committee makes decision -> evidence, hiring objectively
Structure questions - screen problem solving ...

3. Don't make decision on one person's opinion

4. Get work done.
Manager may control everything vs peer review, take away as much power from the manager.
One time 500 engineers reports to one person.

5. Training people - tiger practices golf in the rain, came back in 3:00 am morning. Good chance to practice, deliberate concentrated training.

Learn best to work on a small thing.

6. GE -> Google, 6000 employee -> 55,000 employees.
Interview process takes a long time. Focus on people and culture.

Small signal you send out is very important. Healthy paranoid to lose the culture.

7. HR - Do not worry about hiring HR until you have 50 people or more.
How to manage and lead so many people?

8. Pay unfairly - power of laws distribution - business, law, and sports
Performance - athletes
Average people know the performance is observable, measurable.
Best people are way way better than average people.

10 times more for average person - 10 thousand vs 1 million
Be able to justify in your team. Transparent - no one is happy.
Procedural adjustment - validate, measure and test.

Based on job, not prior pay. No gender difference.

People will get it in the market.

3rd round:
Talk about deliberate concentrated practice:
Give two things, first one (?), one is feedback
Small things adds up to large thing <- argument? 

Every single year, compensation, 20% 30% more or 10 times more, exponential. 

How Laszlo Bock answered question very well? 

Avoid halo effect, hire same type people - - master Visual Studio 2012

Feb. 21, 2017

Plan to take the course: Master Visual Studio 2012. - Provable Code

Feb. 21, 2017

Provable Code - Michael Perry, 5 hour 51m, plan to take the course.

Pluralsight: Code Contracts

Feb. 21, 2017

Plan to take the course - code contracts, John Sonmez, 1hour 51minutes.

Monday, February 20, 2017

Pluralsight: Defensive coding in C#

Feb. 20, 2107


It is a new year and Julia likes to build a good habit to follow, learn one course a time. She noticed that she spent a lot of hours to solve a problem in the contest, but she does not have time to watch courses. She needs to work on defensive coding in C# first, write down some notes.

Course Study

Hackerrank university code sprint #2 - Bronze medal

Feb. 20, 2017

Julia was so happy to know that she got a bronze medal for her most favorite codesprint - university codesprint. She scored 50, spent more than 15 hours, compared to highest rank scoring 100%, score 430, in less than 3 hours, she has a long way to go. But she knew that how hard she has to work on, to make that extra 30 points, her last university codesprint was 20 points, because she spent over 10 hours to work on hard algorithm array construction, ended up scoring 0 on the algorithm.

The university codesprint is by far most challenge codesprint one.

She did look up ranking in Canada, and tried to learn through leaderboard, she ranks at 38, and also she found a good article to read from Bai Li, ranking , score 179.80, 245/6591.

Read his blog about competition programming to talk about rankings.

Study other players, and try to figure out how they got so advanced skills in competitive programming. 

Bai Li - HackerRank
How to succeed in your intern?
Erick Lin - How does an undergraduate do?

Hieu Le

Corey Chen

Marek Cygan
Abu Naser Bikas

competitive programming blog

Sunday, February 19, 2017

Lakshmi Mittal's Top 10 Rules For success

Feb. 19, 2017

Read chinese article about Lakshmi Mittal first. And watch the video of Top 10 rules for success.

1. Knowledge is the key

2. Take bold decisions

3. Be responsible

4. Don't set high goals

5. Seize the opportunities

6. Prove your critics wrong

7. Don't lose focus

8. Get experience

9. Lead by example

10. Do things differently

Azim Premji's Top 10 ruls for success

Feb. 19, 2017

Read the chinese article about Azim Premji. Watch the video and take down notes about top 10 ruls for success.

1. Find your purpose

2. Fail as fast as you can

3. Cherish your strengths

4. Be persisten

5. Get ideas from customers

6. Earn your rewards

7. Deal with disagreements

8. Disrupt your industry

9. Practice
Integrity is practice. Innovation is practice. Keep them simple as possible.

10. Start small

Michelle Obama's Top 10 Rules For Success

Feb. 19, 2017

Julia spent hours to listen the talk 21 minutes a time, again and again. She likes the first rule, keep moving forward.

Here is the video link.

10 rules

1. Keep moving forward
Some of them are homeless. Live month by month, day and day, meal by meal. You should not be ashamed your struggle.

When I worked as dean of college, kids with rich family some of them got their first poor grade. Falling short, life will put a lot of obstacles in your life. You experience loss and many more, you already develop resilience, keep moving forward.

2. Be authentic

3. Work hard

4. Don't be afraid to fail
We all here, some of people helped us.

5. Choose your own path

6. Earn success
How hard you work is more than what you make.

7. Take your role seriously

8. Enjoy the balance

9. Do what is hard

10. Have fun

Hackerrank Game of Two Stacks - in the contest

Feb. 19, 2017

This is by far most challenge problem Julia has in last week, and she likes the difficult level of university codesprint. She understood that she should have more reasoning what she can do, after she made an effort to gain 10 points of maximum 30 points. 30% success rate tells that most of people did not push their analytical ability to the most, Julia could not believe that she can find optimal solution, but playing game is like a real life experience, define the rules, how to play against the rules to your best benefit. Play safe to get some points first, since Julia spent hours to debug the code for extreme test cases, then Julia ran short of time to think about the optimal solution.

In terms of growth mindset, how to grow from a 30% performance on first medium level today, in 3 months or 6 months, become a 60% or 100% performance on a first medium level? Recently, Julia did some study on this through sport performance coaching.

In the contest

Her C# submission only made 30% of maximum score, but she spent hours to make it best, learned the importance to avoid complicate code.

Feb. 20, 2017
Search Canada ranking board on university codesprint #2, go over one by one in Canada, Julia ranks at 38.
Find Bai Li, ranking , score 179.80, 245/6591
Read his blog about competition programming to talk about rankings.

Hackerrank the story of tree - in contest

Feb. 19, 2017

Julia spent over a few hours to work on the algorithm - the story of tree, she really learned an important lesson about understanding a graph. She had fun to play with code, after a few hours, she scored points of 6, and then she continued to work on, scored up to 12 of maximum 50.

It is a struggle to push herself to think about the timeout issue, where to find the breakthrough to solve the timeout? Julia knew that the algorithm with a medium level should not be complicate, she enjoyed her struggle through early in the morning.

The algorithm is the second medium level one in university codesprint #2 on hackerrank. The contest is Julia's most favorite one, she still remembered the lesson she learned last year. It is hard and she remembered the pain as a programmer but she did better this time.

In the contest

Here is the C# code she submitted, the last submission over 10 of them in the contest. She continued to work on issues, through a few hours work after she scored points 6, she learned the important lesson how to make code simple, more simple, therefore, she can try some new idea.

What she missed is the time complexity of algorithm.

Julia got familiar with graph implementation, she knew that graph can be in any form, maybe, she does not have time to define node, edges, all she has time to make a list of hashtables. But it is a graph she likes to write for herself.

Saturday, February 18, 2017

Hackerrank university code sprint - in the contest

Feb. 18, 2017

Julia spent the whole day starting from 10:00 am to work on Hackerrank university code sprint, here is the summary so far 8:34pm, compared to best performer in the world.

She likes to look at the chart, and tell herself that every algorithm someone works hard and can perform in less than 30 minutes. In other words, do not write too much code, avoid complicated code.

3:58am, Feb. 19, 2016

Falling sleep, last minute to try to get more points on the algorithm - The story of a tree.

Let us review the progress so far.

Comparison shows that the google employee completed the algorithm "The Story of a Tree" 20 minutes, starting from 655:29 to 675:22. And it took him 9 minutes to work on "Game of Two Stacks".

Try to avoid complicated code. Last 10 minutes to go over the algorithm again.

Thursday, February 16, 2017

Leetcode 317: Shortest distance from all buildings (Part 4)

Feb. 16, 2017


Julia was trying to find a good one to ask code review on, and the she noticed that her blog is coming to a landmark 100,000 views. So, she likes to celebrate her hard work, she saw one of visitor was from search result using keyword: Leetcode 317 in last 7 days. So, the user of the blog solved her problem - find a nice algorithm to review. She worked on the algorithm before, she did twice. 

Her first practice is more than 12 months, she reviewed the blog in January 2016In May 11, 2016, she practised again the algorithm. Her practice code is here. Through her practice, she likes to track her progress. She likes to say just so so, coding is like tennis sport, she has to learn from best - Roger Federer.


Julia likes to rewrite the C# code based on last practice in January, 2016. And here are the highlights of change.

To challenge herself, she designed several classes to track intermediate result, for example, empty land and building distance, building key and empty land position should also be recorded, so she can test the API first.

Because there is no concern about timeout or space limitation, Julia likes to design a few APIs, and also learn how to write code to follow S.O.L.I.D. principles.

In C# code, function WalkFromBuildingBFS is set as public API, and also a test case is added. Make sure that BFS search algorithm is working fine.

Here is the C# practice ready for review. Here is the code review link

Read some posts about SOLID principles on first.

Feb. 17, 2017 10:15pm 
Read the post about SOLID principles, the link is here.

Feb. 18, 2017 11:05am 
1. Update the question of Leetcode 317 to make it more instructional - the breadth first search, including some research I did on community challenge. 

2. Study the community challenge question code review, Rainfall challenge.
     Study Java code implementation first, and then write a C# one to ask for review.

Feb. 20, 2017
Read leetcode solution discussion, one of discussion is to expedite the search, great idea I read first time:
I also tested the other three C++ solutions posted so far, they took 340-1812 ms. I think mine is faster because I don't use a fresh "visited" for each BFS. Instead, I walk only onto the cells that were reachable from all previous buildings. From the first building I only walk onto cells where grid is 0, and make them -1. From the second building I only walk onto cells where grid is -1, and I make them -2. And so on.

Winning ugly - Brad Gilbert

Feb. 16, 2017

Watch the video twice, one hour video.

Winning ugly, talks at Google.

Another 30 minutes chat, nice interview to watch.

Coaching videos:
Tennis baseline strategy with coach Brad Gilbert.

Wednesday, February 15, 2017

Pluralsight: object-oriented programming

Feb. 15, 2017

Julia subscribed pluralsight courses over 24 months. She did spend a lot of time to learn a few courses the first few months. And then, she stopped to watch the courses, focused on the other priorities.

Now, she likes to spend 30 minutes a time in the evening to do some study. Compared to read on wechat every day, she should work on more every day instead.


Write down some notes, and build a good habit to study some course. It is different learning style to watch courses. 

Learning path:  pluralsight courses 
Defensive coding in C#
Clean code: writing code for humans
C# interface
Dependency Injection On-Ramp
SOLID principles of object-oriented design
Design patterns On-Ramp
Design Patterns

Actionable Items:

Conduct some analysis last 24 months study on, and write down something to improve.

Monday, February 13, 2017

Sunday, February 12, 2017

How to spot A-player?

Feb. 12, 2017

Do some study on the topic, how to spot A-player?

Another article also is related to the topic very well, using structure interview.

This one talks more in detail, 7 questions:
  1. Have they been promoted at least once in a previous role?
  2. Have they had to lead a big project in a previous role? How did they handle it?
  3. Is this the same role as a previous job or is it somewhat/completely different?
  4. Can they speak about your company and tell you what they like and what they might change?
  5. Are they confident without being cocky?
  6. Are they committed to continual learning? Can they prove it?
  7. How would you rate the quality and quantity of questions they ask YOU during the interview?A-players care about the team they'll be on, their manager and where you want to take your company moving forward. 

Microsoft social research - FUSE lab

Feb. 12, 2017

Duncan Watts - Microsoft principal researcher. 

Lili Cheng - The sociable researcher in Microsoft. 

Keynote: Building a Social-Search Engine From Scratch, one hour video. 

Read a blog on the site:

Justin Cranshaw,  a Ph.D. graduate, researcher.

One hour talk - The livehoods project: Utilizing Social Media to Understand the Dynamics of a City.

How does Julia choose to study the topic?
Julia worked on code review ->
She checked her performance and found some one working in Google ->
Linkedin profile shows course social network ->
Study social network course ->
One of Microsoft principle researcher gave a talk in the lecture ->
Microsoft lili cheng - FUSE lab ->

A giver or taker - a small research and study

Feb. 12, 2017

Julia likes to do some research and study, she came cross this article through linkedin connections:
Interview question, who are 4 people you are helping them to succeed?

and then, she watched the talk - Adam Grant: Are you a giver or a taker?

Adam Grant -

Hackerrank RookieRank 2 - KnightL on a chessboard

Feb. 12, 2017

Problem statement

Julia spent close to 3 hours in the contest and then scored maximum score. Here is her C# code.

She likes to post a code review on, since she spent over 2 hours in writing, she still has a big room to improve her performance.

Udemy - Failure & Success Are Just An Illusion

Feb. 12, 2017

Plan to take the course on

Good teaching from Agassi, failure & success are just an illusion. The only reality is to choose what you do in every day life. Focus on today, and do not look at the past too much. From No. 1 in the world, thinking about achievement, fell behind 100 in the world. Either I decide to quit or go back to work, take ownership of my life. One thing I can do is to do better, control what I can control, my relentless spirit can do better. But I finally got back to the top, I felt more engaged.

Failure and success is an illusion. Wake up every day with goals and objectives. Take care what is front of us.

Watch 20 minutes talk - hall of fame 2011

Hackerrank RookieRank 2 - prefix neigbhors (II)

Feb. 12, 2017

After the contest, Julia likes to study a few of solutions in C#, Java and other languages.

Code study of submissions

C# code

C# code.

Have some difficulty to understand the algorithm behind Index.Add method. Need to figure out later. Add some test cases to C# code, debug and understand the code one line by one line.

Study a few things about C# coding style, pascal case, set, get, and then using GroupBy, OrderBy, Aggregate, Stack, HashSet, Dictionary.

Second Study 

C# code study II
C# code is here

Third Study 

Java implementation


The most readable code is here with trie implementation. Julia chose one solution from near 100 solutions, this one is easy to follow. Will rewrite the C# solution based on this Java implementation.

Actionable Items

1. Instead of studying other people's code, Julia decided to look into test case 11 and figured out why her submission failed the test case. 

2. Read editorial notes from hackerrank, understand the idea, google search them:

This problem can be solved using Trie and DP. Create a trie from the given set of strings. Find the prefix neighbor of each string. Now create a graph such that each string is a node and there exist a bidirectional edge between two nodes only if they are prefix neighbors. Now find the maximum weighted independent set.

Difficulty: Medium
Time Complexity:

Required Knowledge: Trie
Publish Date: Mar 25 2016

Read the wiki article - Independent set ( graph theory)
GeeksforGeek problem - Largest independent set problem

3. Julia did not know the importance of problem solving in the contest and after the contest from Feb. 11 - 13, 2017. She tried to understand the other people's submission after the contest, and she had difficult time. She needs to understand the algorithm first, just follows the notes: find the maximum weighted independent set

4. Spent over 2 hours to rewrite the C# code, and post
 a question on  

Problem solving - community help

Feb. 25, 2017 5:27pm

With the help from Peter Taylor through his code view, Julia learned so much about the problem solving skills. She answered code reviews one by one, and then felt so comfortable with the algorithm problem solving. The code review experience is top-rated performance. 

Share some comments here:

Advice #6, KISS, why? what is wrong to insert them all into one trie? This is a good question. I tried to use the above code, but use one trie instead of going through A to Z one by one, run the code on hackerrank, error from test case 6 to 19; And then, I tried not to sort by the length of string, error from test case 6 to 19. – Jianmin Chen Feb 15 at 5:06   

Very good review, I did spend over a few hours in the contest and also a few hours after the contest. I like the last review "KISS, why?" most, remind me 5 whys for root cause analysis. Bravo! – Jianmin Chen Feb 15 at 5:11