August 31, 2016
Spent over 3+ hours to work on the research on CSS - responsive background image. Take time to learn CSS and enjoy the workout.
Learn to design a nice menu page with header and footer, with responsive background image, it is a fun journey. How to make it pragmatic solution? Julia has her own journey recently.
Step 1:
Study the idea to design CSS -
https://www.smashingmagazine.com/2013/07/simple-responsive-images-with-css-background-images/
use a span element, and set padding top to aspect ratio of image -
Step 2: box model issues - footer is cut off, and background image is cut off on mobile devices.
1. Read stackoverflow article to address the issues -
http://stackoverflow.com/questions/8916148/ipad-iphone-full-page-background-image-shows-cut-off-screen-shot-link-includ
https://dev.opera.com/articles/an-introduction-to-meta-viewport-and-viewport/
2. study the blogs:
How div container behaves - box model -
http://stackoverflow.com/questions/9061520/auto-height-on-parent-container-with-absolute-fixed-children
problem: here is the website:
http://jsfiddle.net/dPCky/
Here is the solution blog:
http://jsfiddle.net/blowsie/dPCky/1/
http://www.gsmarena.com/lg_nexus_5-5705.php
The lesson Julia learned is that body is the container - root of DOM tree. The height of body should be bigger than inside elments' height. Otherwise, footer is missing since it is out of box of DOM element - body.
Editorial Notes:
Learn how to search github more often:
1. CSS reading blog:
https://github.com/YuanXiaosong/Front-End-Interview
From January 2015, she started to practice leetcode questions; she trains herself to stay focus, develops "muscle" memory when she practices those questions one by one. 2015年初, Julia开始参与做Leetcode, 开通自己第一个博客. 刷Leet code的题目, 她看了很多的代码, 每个人那学一点, 也开通Github, 发表自己的代码, 尝试写自己的一些体会. She learns from her favorite sports – tennis, 10,000 serves practice builds up good memory for a great serve. Just keep going. Hard work beats talent when talent fails to work hard.
Wednesday, August 31, 2016
A small research on HackerRank - seek excellence
August 30, 2016
Go over HackerRank world code sprint lead board, from ranking 230 to 430, go over one by one, and see how Julia can make it in short future. To be one of them, what is missing, what should learn from those people.
From different backgrounds, computer professors, Google employees, Microsoft employees, and a lot of others, university students. But, most of them attended more than 4 contests, and showed strong interest in things:
1. Some of them take Coursera courses - More than 10 of courses
2. Some of them document their HackerRank contests on Linkedin profile.
3. Some of them are excellent coding, one of them finishes Leetcode over 200 questions.
Julia just forked solution in the next minute, will study the code.
4. Some of them are from Intel, Intuit, Cisco, etc.
Read code, study styles, that is Julia's favorite thing to do.
Julia has to take into consideration, work on difficult level algorithm on HackerRank. She prefers to stay in easy, medium level up to August 31, 2016.
Blogs to read:
1. practice, drills, strategies - a computer science course to help
https://cs.illinois.edu/news/illinois-team-advances-icpc-world-finals
http://goo.gl/ZdJ8C0
2. https://algo.is/
competitive programming course
https://sites.google.com/site/stevenhalim/
Free download - version 1
http://www.comp.nus.edu.sg/~stevenha/myteaching/competitive_programming/cp1.pdf
http://linc.nus.edu.sg/search~S16?/aVerdu%2C+Elena./averdu+elena/-3%2C-1%2C0%2CB/frameset&FF=averdu+elena&1%2C1%2C
Julia is looking for a book talking about suffix array etc. advanced data structure. She found on today.
2B:
http://www.stanford.edu/~liszt90/
Interview:
https://www.youtube.com/watch?v=tZRWUesgqFc&feature=youtu.be
2C: questions and answers about practicing:
https://www.quora.com/profile/Bohdan-Pryshchenko
2. Top 50 - blogs about programming competition:
http://sd-invol.github.io/Archives/
http://sd-invol.github.io/
http://sd-invol.github.io/2015/02/14/Palindromic-tree/
Talk about algorithms - in contest - SRM641 - ?
http://sd-invol.github.io/2015/01/10/Topcoder-SRM-641-650/
SRM
https://github.com/jianminchen/TopCoder
3. Read the algorithm - enjoy time to read
https://threads-iiith.quora.com/
Tutorial on Trie and example problems
4. Look into those contests the contestant chose to take part in - anything interesting?
26 gold medals - read code first
https://www.hackerrank.com/rantd
5. Read one algorithm first: Excellent blog about algorithm - great sharing!
https://aleigorithms.wordpress.com/
https://aleigorithms.wordpress.com/2016/03/11/hfcq2016-problem-analysis/
6. Choose one of algorithms to work on this week:
http://basicjahid.blogspot.ca/search/label/Algorithm%20Tutorials
7. MCSD programming in C#
https://www.microsoft.com/en-us/learning/exam-70-483.aspx
Go over HackerRank world code sprint lead board, from ranking 230 to 430, go over one by one, and see how Julia can make it in short future. To be one of them, what is missing, what should learn from those people.
From different backgrounds, computer professors, Google employees, Microsoft employees, and a lot of others, university students. But, most of them attended more than 4 contests, and showed strong interest in things:
1. Some of them take Coursera courses - More than 10 of courses
2. Some of them document their HackerRank contests on Linkedin profile.
3. Some of them are excellent coding, one of them finishes Leetcode over 200 questions.
Julia just forked solution in the next minute, will study the code.
4. Some of them are from Intel, Intuit, Cisco, etc.
Read code, study styles, that is Julia's favorite thing to do.
Julia has to take into consideration, work on difficult level algorithm on HackerRank. She prefers to stay in easy, medium level up to August 31, 2016.
Blogs to read:
1. practice, drills, strategies - a computer science course to help
https://cs.illinois.edu/news/illinois-team-advances-icpc-world-finals
http://goo.gl/ZdJ8C0
2. https://algo.is/
competitive programming course
https://sites.google.com/site/stevenhalim/
Free download - version 1
http://www.comp.nus.edu.sg/~stevenha/myteaching/competitive_programming/cp1.pdf
http://linc.nus.edu.sg/search~S16?/aVerdu%2C+Elena./averdu+elena/-3%2C-1%2C0%2CB/frameset&FF=averdu+elena&1%2C1%2C
Julia is looking for a book talking about suffix array etc. advanced data structure. She found on today.
2B:
http://www.stanford.edu/~liszt90/
Interview:
https://www.youtube.com/watch?v=tZRWUesgqFc&feature=youtu.be
2C: questions and answers about practicing:
https://www.quora.com/profile/Bohdan-Pryshchenko
2. Top 50 - blogs about programming competition:
http://sd-invol.github.io/Archives/
http://sd-invol.github.io/
http://sd-invol.github.io/2015/02/14/Palindromic-tree/
Talk about algorithms - in contest - SRM641 - ?
http://sd-invol.github.io/2015/01/10/Topcoder-SRM-641-650/
SRM
https://github.com/jianminchen/TopCoder
3. Read the algorithm - enjoy time to read
https://threads-iiith.quora.com/
Tutorial on Trie and example problems
4. Look into those contests the contestant chose to take part in - anything interesting?
26 gold medals - read code first
https://www.hackerrank.com/rantd
5. Read one algorithm first: Excellent blog about algorithm - great sharing!
https://aleigorithms.wordpress.com/
https://aleigorithms.wordpress.com/2016/03/11/hfcq2016-problem-analysis/
6. Choose one of algorithms to work on this week:
http://basicjahid.blogspot.ca/search/label/Algorithm%20Tutorials
7. MCSD programming in C#
https://www.microsoft.com/en-us/learning/exam-70-483.aspx
Monday, August 29, 2016
Beautiful 3 set - code study
August 29, 2016
Plan to work on difficult level algorithm - world code sprint #6. Plan to work on world code sprint some day, be able to solve difficult/ advanced algorithm.
https://www.hackerrank.com/contests/world-codesprint-6/challenges/beautiful-3-set
Will come back very soon to work on this algorithm.
Plan to work on difficult level algorithm - world code sprint #6. Plan to work on world code sprint some day, be able to solve difficult/ advanced algorithm.
https://www.hackerrank.com/contests/world-codesprint-6/challenges/beautiful-3-set
Will come back very soon to work on this algorithm.
Sunday, August 28, 2016
C# StringBuilder Class - study
August 28, 2016
Work on C# StringBuilder class APIs.
https://msdn.microsoft.com/en-us/library/system.text.stringbuilder(v=vs.110).aspx
Will work on the APIs 30 minutes a time. Try to memorize all of them, understand the design in detail: function signatures, overload, optional arguments etc.
Work on C# StringBuilder class APIs.
https://msdn.microsoft.com/en-us/library/system.text.stringbuilder(v=vs.110).aspx
Will work on the APIs 30 minutes a time. Try to memorize all of them, understand the design in detail: function signatures, overload, optional arguments etc.
Bonetrousle - HackerRank world code sprint #6 - Time complexity
August 28, 2016
Worked on the algorithm over 3 hours, Bonetrousle. HackerRank code sprint #6.
Julia started to train herself to get smart on algorithm problem solving - contest level. First and big lesson is to put the time complexity analysis first - she experienced the pain and valued the lesson she learned through 3+ hours.
Editorial notes from HackerRank:
https://www.hackerrank.com/contests/world-codesprint-6/challenges/bonetrousle/editorial
Will work on this blog later!
Come back on Sept. 1, 11:15pm.
The problem is about loops, and let us work on the example used in the editorial notes:
N = 15, K = 8, B =3, in other words, find 3 distinct numbers from set {1, 2, ..., 8}, and the sum is 15.
First idea: brute force one
Brute force, 3 number, each one is chosen from 1-8, 3 time, then, simple combinatorics: 8 * 7 * 6, K (K-1)(K-2), , the order does not matter, so it is should C(8,3).
As we know, N < 10^18, K<=10^18, so, Julia, you like to make any points, try to avoid any brute force solution like the above.
Second idea: How low it can be?
Find B numbers, as we know, from the example,
N = 15, K = 8, B = 3, there are more than 1 solution.
But, there is one definitely taking minimum time. That is to find maximum number in B number set first, and it takes O(1) time. Then, in decreasing order, find one by one. The total time can be small as O(B).
Simple math, we can analyze first if N is in the range of minimum value and maximum value range first.
if B > K, not possible;
Assuming B <= K,
Minimum value = 1 + 2 +... +B,
Maximum value = K + (K-1) + (K-B+1)
Worked on the algorithm over 3 hours, Bonetrousle. HackerRank code sprint #6.
Julia started to train herself to get smart on algorithm problem solving - contest level. First and big lesson is to put the time complexity analysis first - she experienced the pain and valued the lesson she learned through 3+ hours.
Editorial notes from HackerRank:
https://www.hackerrank.com/contests/world-codesprint-6/challenges/bonetrousle/editorial
Will work on this blog later!
Come back on Sept. 1, 11:15pm.
The problem is about loops, and let us work on the example used in the editorial notes:
N = 15, K = 8, B =3, in other words, find 3 distinct numbers from set {1, 2, ..., 8}, and the sum is 15.
First idea: brute force one
Brute force, 3 number, each one is chosen from 1-8, 3 time, then, simple combinatorics: 8 * 7 * 6, K (K-1)(K-2), , the order does not matter, so it is should C(8,3).
As we know, N < 10^18, K<=10^18, so, Julia, you like to make any points, try to avoid any brute force solution like the above.
Second idea: How low it can be?
Find B numbers, as we know, from the example,
N = 15, K = 8, B = 3, there are more than 1 solution.
But, there is one definitely taking minimum time. That is to find maximum number in B number set first, and it takes O(1) time. Then, in decreasing order, find one by one. The total time can be small as O(B).
Simple math, we can analyze first if N is in the range of minimum value and maximum value range first.
if B > K, not possible;
Assuming B <= K,
Minimum value = 1 + 2 +... +B,
Maximum value = K + (K-1) + (K-B+1)
C# string class - API study
August 28, 2016
Previous blog about string class study for C#, Java, JavaScript, C++:
http://juliachencoding.blogspot.ca/2016/07/c-c-javascript-java-string.html
Go over all APIs in string class - C# programming language:
https://msdn.microsoft.com/en-us/library/system.string_methods(v=vs.110).aspx
40 APIs - Go over it 30 minutes a time - start to memorize them: function signature etc.
Clone
Compare
CompareTo
Concat
Contains
Copy
CopyTo
EndsWith
Equals
Format
GetEnumerator
GetHashCode
GetType
GetTypeCode
IndexOf - (8 overloaded version)
IndexOfAny (3 overloaded version)
Insert
Intern
IsInterned
IsInterned
IsNormalized
IsNullOrWhiteSpace
Join (5 overload)
LastIndexOf (8 overloaded version)
Normalize
PadLeft
PadRight
Remove
Replace
Split (6 overloaded version)
StartsWith (3 version)
Substring
ToCharArray
ToLower
ToLowerInvariant
ToString
ToUpper
ToUpperInvariant
Trim
TrimEnd
TrimStart
Previous blog about string class study for C#, Java, JavaScript, C++:
http://juliachencoding.blogspot.ca/2016/07/c-c-javascript-java-string.html
Go over all APIs in string class - C# programming language:
https://msdn.microsoft.com/en-us/library/system.string_methods(v=vs.110).aspx
40 APIs - Go over it 30 minutes a time - start to memorize them: function signature etc.
Clone
Compare
CompareTo
Concat
Contains
Copy
CopyTo
EndsWith
Equals
Format
GetEnumerator
GetHashCode
GetType
GetTypeCode
IndexOf - (8 overloaded version)
IndexOfAny (3 overloaded version)
Insert
Intern
IsInterned
IsInterned
IsNormalized
IsNullOrWhiteSpace
Join (5 overload)
LastIndexOf (8 overloaded version)
Normalize
PadLeft
PadRight
Remove
Replace
Split (6 overloaded version)
StartsWith (3 version)
Substring
ToCharArray
ToLower
ToLowerInvariant
ToString
ToUpper
ToUpperInvariant
Trim
TrimEnd
TrimStart
Bonetrousle - HackerRank world code sprint #6 - code study
August 28, 2016
Study 5+ C# submission code, put some notes here as well.
1. Use Queue, using structure, excellent code to study -
C# submission to study.
rank before 190/ 5332
Great workout using Queue, Julia came out this idea through practice, but she could not write down code. She tried to write recursive function.
2. a while loop, less than 40 lines code
C# submission
rank before 200/ 5332, score around 250/380
3. C# submission
4. C# submission
5. Great code! C# submission
rank in range of 270 - 300/ 5332 participants (score in range of
180- 200/380)
Time to go over C# string class:
C# string class join method
Study 5+ C# submission code, put some notes here as well.
1. Use Queue, using structure, excellent code to study -
C# submission to study.
rank before 190/ 5332
Great workout using Queue, Julia came out this idea through practice, but she could not write down code. She tried to write recursive function.
2. a while loop, less than 40 lines code
C# submission
rank before 200/ 5332, score around 250/380
3. C# submission
4. C# submission
5. Great code! C# submission
rank in range of 270 - 300/ 5332 participants (score in range of
180- 200/380)
Time to go over C# string class:
C# string class join method
Motivation talk:
work hard!
Julia ranks 1112 on world
code sprint #6. If she can work out the algorithm - Bonetrousle, based on her
current score is 100, she can score another 50, from score of 100 to 150, then,
she can get into top 1100 to top 550 - 650 ranking.
Bonetrousle - HackerRank world code sprint #6 - Practice 3
August 28, 2016
Practice 3:
https://gist.github.com/jianminchen/da8be63104ef404e82733669a3d60370
Highlights of practice:
1. Add hashset to filter out the boxes
Statistics:
Score 0 out of 50.
Practice 3:
https://gist.github.com/jianminchen/da8be63104ef404e82733669a3d60370
Highlights of practice:
1. Add hashset to filter out the boxes
Statistics:
Score 0 out of 50.
Bonetrousle - HackerRank world code sprint #6 - Practice 2
August 28, 2016
Problem statement:
https://www.hackerrank.com/contests/world-codesprint-6/challenges/bonetrousle
Try to make any progress on timeout issue, wrong answers issue. Add additional checking to shorten the time to do processing:
https://gist.github.com/jianminchen/ff048969b7b69948eb3dc4db59119591
Highlights of practice:
1. line 113
Statistics:
score 0 out of 50 points.
Problem statement:
https://www.hackerrank.com/contests/world-codesprint-6/challenges/bonetrousle
Try to make any progress on timeout issue, wrong answers issue. Add additional checking to shorten the time to do processing:
https://gist.github.com/jianminchen/ff048969b7b69948eb3dc4db59119591
Highlights of practice:
1. line 113
Statistics:
score 0 out of 50 points.
Bonetrousle - HackerRank world code sprint #6 - Practice 1
August 28, 2016
Problem statement:
https://www.hackerrank.com/contests/world-codesprint-6/challenges/bonetrousle
Julia was naive on planning, management of time, tried to solve this algorithm, without any hesitation. She tried to score any point above 0, found the idea to write code using stack, but with additional 2+ hours to review code, stayed overnight, from 12:00am - 2:45am, a brute force solution. She did not make any (over 10 test cases: 5+ wrong answer, 4+ time out). So, she wrote down the experience to celebrate her weekend, over middle night struggling with an algorithm.
Share some statistics of world code sprint #6 workout:
Current Rank: 1112 - score 100/ 380 (score first 4 algorithms full score)
First practice:
Use stack, brute force, each box has two choice, join or skip. She tried to implement the brute force solution first, and then, she recalled the previous work on algorithm Leetcode: phone number:
https://gist.github.com/jianminchen/872bf70039fa8c61ff208b34a591c8ec
Only pass the test cases provided in the problem description.
https://gist.github.com/jianminchen/e3fc7d23a62274b207ddc41a06030cd4
Statistics:
score 0 out of 50 points.
Brute facts:
A brute force solution does not score any points - even pass the basic test case - test case 1.
Actionable Item:
Write a blog about this algorithm, document the importance of time complexity analysis; how to plan to spend time to work on a solution.
http://juliachencoding.blogspot.ca/2016/08/bonetrousle-hackerrank-world-code_75.html
Problem statement:
https://www.hackerrank.com/contests/world-codesprint-6/challenges/bonetrousle
Julia was naive on planning, management of time, tried to solve this algorithm, without any hesitation. She tried to score any point above 0, found the idea to write code using stack, but with additional 2+ hours to review code, stayed overnight, from 12:00am - 2:45am, a brute force solution. She did not make any (over 10 test cases: 5+ wrong answer, 4+ time out). So, she wrote down the experience to celebrate her weekend, over middle night struggling with an algorithm.
Share some statistics of world code sprint #6 workout:
Current Rank: 1112 - score 100/ 380 (score first 4 algorithms full score)
First practice:
Use stack, brute force, each box has two choice, join or skip. She tried to implement the brute force solution first, and then, she recalled the previous work on algorithm Leetcode: phone number:
https://gist.github.com/jianminchen/872bf70039fa8c61ff208b34a591c8ec
Only pass the test cases provided in the problem description.
https://gist.github.com/jianminchen/e3fc7d23a62274b207ddc41a06030cd4
Statistics:
score 0 out of 50 points.
Brute facts:
A brute force solution does not score any points - even pass the basic test case - test case 1.
Actionable Item:
Write a blog about this algorithm, document the importance of time complexity analysis; how to plan to spend time to work on a solution.
http://juliachencoding.blogspot.ca/2016/08/bonetrousle-hackerrank-world-code_75.html
Abbreviation - HackerRank world code sprint #6
August 26, 2016
Problem statement:
https://www.hackerrank.com/contests/world-codesprint-6/challenges/abbr
C# practice:
https://gist.github.com/jianminchen/12e7c74b57c5780a069b0e9df66f77c3
Study editorial notes about the algorithm, using dynamic programming, a DP solution.
Study other submissions through HackerRank.
Problem statement:
https://www.hackerrank.com/contests/world-codesprint-6/challenges/abbr
C# practice:
https://gist.github.com/jianminchen/12e7c74b57c5780a069b0e9df66f77c3
Study editorial notes about the algorithm, using dynamic programming, a DP solution.
Study other submissions through HackerRank.
Saturday, August 27, 2016
Blog writing - aiming for good writing talent
August 27, 2016
It is a nice journey to write a lot of blogs in last 12 months. Julia learns to handle a lot of stress, spend a lot of time to proofread, feel headache about the content, organization of ideas etc. Sometimes, she notice that she writes something she does not know, she does not have best solution, since she is still developing, in the cooking process. Or she just pushes herself, just do it. It may be an interesting topic, start first, come back to work on.
What is about good writing talent? It is not just English writing, also about communication skills, inspiration to share, good language skills.
A true short story about her personal experience:
She went through 3 IELTS test in 2008 from June to August in order to score 2 of 7/ 9 on English (reading, writing, speaking, listening) - apply Canadian immigration. She did 3 tests in 3 months, because Fort Lauderdale test center only gives one test a month. She even filed an appeal against the scoring result after 2nd test, costed her $160 dollars, same amount as the test fee. She practiced old tests in the time range of 3 month - 3 hours for one test, she did again and again.
More detail about IELTS:
http://www.ielts-blog.com/ielts-results-competition-winners-2008/
End of the true short story.
And then, in 2015, Julia learned that in order to
get best result of
build up some writing talent continuously in long term,
grow up from a junior software developer to talent programmer,
she has to write down her coding practice everyday, speak out her unique experience, ideas/ practice log, show her progression, weakness, highlights, one step a time, one practice a time. There is no way to avoid hard work, embrace it. She learns from her favorite tennis sports.
So, she try to push herself to work on writing. Being a good software programmer, writing code is much more challenging.
Here are some ideas:
From blog - how to improve your blog writing skills
1. Make writing a habit
As the old saying goes: Practice Makes Perfect.
2. Get back to basics
3. Proofread your articles
4. Remove the filler - tighten your article and make it easier to read
5. Evaluate your writing
6. Be an avid reader
passionate writer should be a passionate reader.
7. Establish good writing habits
Google search keyword:
blog writing help English writing
Second blog - Improve writing skills
Notes:
1. Brush up on the basics
2. Write like it's your job
Keep practising, writing is no exception.
diminish your fear of the blank page (or blinking cursor)
develop a unique style
even if nobody reads it, keep writing.
3. Read like it's Your Job
reading on a regular basis
pay attention to sentence structure, word choice, and how the material flows.
4. Find a writing partner
a solitary activity - writing?
cast an eye over your work?
spot mistakes that you may overlooked
5. Join a workshop or take a night class - not applicable right now
6. Dissect writing that you admire
7. Imitate writers you admire
use humour to spice up dry topics?
use pop culture references to make their work entertaining and useful?
8. Remember that outlines are your friend - outline?
solid outline plan? When, who, what, where, why, how? 7 W
9. Edit your work ruthlessly
be your own harshest critic?
editing is a tough skill to learn for beginner?
writing or rewriting?
the cold, hard eye of an editor will serve you well?
discipline to eliminate extraneous words?
resist the temptation to wax lyrically and get to the point?
10. Accept that first draft are almost always crap
write down on paper first, clean up later. Iterative process. Do not beat yourself up.
11. Find a good patient editor
12. Eliminate unnecessary words
13. Take a stroll down memory lane
14. Don't be afraid to say what you think
15. Do your research
16. Don't take weeks to finish a post
Actionable items:
Try 3 ideas first:
14. Don't be afraid to say what you think
testimony:
Share personal IELTS test experience in 2008
It is a nice journey to write a lot of blogs in last 12 months. Julia learns to handle a lot of stress, spend a lot of time to proofread, feel headache about the content, organization of ideas etc. Sometimes, she notice that she writes something she does not know, she does not have best solution, since she is still developing, in the cooking process. Or she just pushes herself, just do it. It may be an interesting topic, start first, come back to work on.
What is about good writing talent? It is not just English writing, also about communication skills, inspiration to share, good language skills.
A true short story about her personal experience:
She went through 3 IELTS test in 2008 from June to August in order to score 2 of 7/ 9 on English (reading, writing, speaking, listening) - apply Canadian immigration. She did 3 tests in 3 months, because Fort Lauderdale test center only gives one test a month. She even filed an appeal against the scoring result after 2nd test, costed her $160 dollars, same amount as the test fee. She practiced old tests in the time range of 3 month - 3 hours for one test, she did again and again.
More detail about IELTS:
http://www.ielts-blog.com/ielts-results-competition-winners-2008/
End of the true short story.
And then, in 2015, Julia learned that in order to
grow up from a junior software developer to talent programmer,
she has to write down her coding practice everyday, speak out her unique experience, ideas/ practice log, show her progression, weakness, highlights, one step a time, one practice a time. There is no way to avoid hard work, embrace it. She learns from her favorite tennis sports.
So, she try to push herself to work on writing. Being a good software programmer, writing code is much more challenging.
Here are some ideas:
From blog - how to improve your blog writing skills
1. Make writing a habit
As the old saying goes: Practice Makes Perfect.
2. Get back to basics
3. Proofread your articles
4. Remove the filler - tighten your article and make it easier to read
5. Evaluate your writing
6. Be an avid reader
passionate writer should be a passionate reader.
7. Establish good writing habits
Google search keyword:
blog writing help English writing
Second blog - Improve writing skills
Notes:
1. Brush up on the basics
2. Write like it's your job
Keep practising, writing is no exception.
diminish your fear of the blank page (or blinking cursor)
develop a unique style
even if nobody reads it, keep writing.
3. Read like it's Your Job
reading on a regular basis
pay attention to sentence structure, word choice, and how the material flows.
4. Find a writing partner
a solitary activity - writing?
cast an eye over your work?
spot mistakes that you may overlooked
5. Join a workshop or take a night class - not applicable right now
6. Dissect writing that you admire
7. Imitate writers you admire
use humour to spice up dry topics?
use pop culture references to make their work entertaining and useful?
8. Remember that outlines are your friend - outline?
solid outline plan? When, who, what, where, why, how? 7 W
9. Edit your work ruthlessly
be your own harshest critic?
editing is a tough skill to learn for beginner?
writing or rewriting?
the cold, hard eye of an editor will serve you well?
discipline to eliminate extraneous words?
resist the temptation to wax lyrically and get to the point?
10. Accept that first draft are almost always crap
write down on paper first, clean up later. Iterative process. Do not beat yourself up.
11. Find a good patient editor
12. Eliminate unnecessary words
13. Take a stroll down memory lane
14. Don't be afraid to say what you think
15. Do your research
16. Don't take weeks to finish a post
Actionable items:
Try 3 ideas first:
14. Don't be afraid to say what you think
testimony:
Share personal IELTS test experience in 2008
Html, CSS style guideline study
August 27, 2016
Always work on code guidelines first, then write more code everyday.
Plan to spend 2+ hours to study html, CSS code guide.
http://codeguide.bootcss.com/
https://google.github.io/styleguide/htmlcssguide.xml
Always work on code guidelines first, then write more code everyday.
Plan to spend 2+ hours to study html, CSS code guide.
http://codeguide.bootcss.com/
https://google.github.io/styleguide/htmlcssguide.xml
Java Design Pattern - code study
August 27, 2016
Plan to spend 3+ hours to go over some Java Design Pattern.
https://github.com/jianminchen/java-design-patterns
Plan to spend 3+ hours to go over some Java Design Pattern.
https://github.com/jianminchen/java-design-patterns
Programming Principles - study
August 27, 2016
Through leetcode practice Algorithm 125 in August 2015, Julia noticed that she still stumbled badly on easy question. Because ..., wild guess?:-) she does not have good understanding of programming principles.
She wrote blogs about the practice of Leetcode 125, 11 practice, through continuously hard word through 3 days, she finally came into realization of best solution - extract one more function called removed noise. She read the code written in C++ in her github forked solution more than 6 months ago. She could not find the best solution through google/ bing, and she studied stackoverflow related articles more than 2 hours, but she just did not come out the idea.
Apply Separation of concerns principle? optimal solution to Leetcode 125.
The above is enough for her to dedicate herself to read more about programming principles.
Programming Principles
https://github.com/jianminchen/programming-principles
Plan to work on reading 3+ hours, write down some notes here.
Through leetcode practice Algorithm 125 in August 2015, Julia noticed that she still stumbled badly on easy question. Because ..., wild guess?:-) she does not have good understanding of programming principles.
She wrote blogs about the practice of Leetcode 125, 11 practice, through continuously hard word through 3 days, she finally came into realization of best solution - extract one more function called removed noise. She read the code written in C++ in her github forked solution more than 6 months ago. She could not find the best solution through google/ bing, and she studied stackoverflow related articles more than 2 hours, but she just did not come out the idea.
Apply Separation of concerns principle? optimal solution to Leetcode 125.
The above is enough for her to dedicate herself to read more about programming principles.
Programming Principles
https://github.com/jianminchen/programming-principles
Plan to work on reading 3+ hours, write down some notes here.
Thursday, August 25, 2016
CSS - Responsive background image
August 31, 2016
Spent over 10+ hours to work on responsive background image issues. So, Julia likes to spend time to serve herself better using CSS.
Google keyword search:
css responsive background image
Spent over 10+ hours to work on responsive background image issues. So, Julia likes to spend time to serve herself better using CSS.
Google keyword search:
css responsive background image
Code study: Leetcode blogs
August 25, 2016
Compile a list of Leetcode blogs to read, 10 minutes a time, look for excellence through blogs:
1. http://bangbingsyb.blogspot.ca/ (Microsoft, C++)
2. http://fisherlei.blogspot.ca/ (facebook, blogs, C++)
C++ solutions in github:
1. https://github.com/jianminchen/leetcode-1 (C++, ex-amazoner)
2. https://github.com/liaoxl/leetcode/tree/master/code (Neteaze, C++, China)
3. https://github.com/jianminchen/Leetcode-13 (UBC, C++)
4. https://github.com/jianminchen/myleetcode (China, Microsoft, C++)
5. https://github.com/jianminchen/LeetCode-IIII (C++, HackerRank Silver medal)
6. Inside github, search HackerRank, find this: (MSFT, top performer, with time spent for each algorithm)
https://github.com/jianminchen/LeetCode-17
Java solutions in github:
1. https://github.com/jianminchen/LeetCode-Java-Solutions
2. https://github.com/jianminchen/LeetCode-Java-Solutions (Java, computer PH.D.)
3. https://github.com/jianminchen/LeetCode-Sol-Res (Nine chapter etc., Java)
4. https://github.com/jianminchen/leetcode-3 (Java solution, Googler)
C# solution:
1. https://github.com/jianminchen/LeetSharp
2. https://github.com/jianminchen/Qilu-leetcode
2. https://github.com/jianminchen/LeetCodeInCSharp
C++ - Lintcode book
https://github.com/jianminchen/LintCodeBook
JavaScript: Leetcode
1. https://github.com/jianminchen/leetcode-28
Friendly remind:
Julia, you should use github's search - use keyword: Leetcode to find solutions -
Compile a list of Leetcode blogs to read, 10 minutes a time, look for excellence through blogs:
1. http://bangbingsyb.blogspot.ca/ (Microsoft, C++)
2. http://fisherlei.blogspot.ca/ (facebook, blogs, C++)
C++ solutions in github:
1. https://github.com/jianminchen/leetcode-1 (C++, ex-amazoner)
2. https://github.com/liaoxl/leetcode/tree/master/code (Neteaze, C++, China)
3. https://github.com/jianminchen/Leetcode-13 (UBC, C++)
4. https://github.com/jianminchen/myleetcode (China, Microsoft, C++)
5. https://github.com/jianminchen/LeetCode-IIII (C++, HackerRank Silver medal)
6. Inside github, search HackerRank, find this: (MSFT, top performer, with time spent for each algorithm)
https://github.com/jianminchen/LeetCode-17
Java solutions in github:
1. https://github.com/jianminchen/LeetCode-Java-Solutions
2. https://github.com/jianminchen/LeetCode-Java-Solutions (Java, computer PH.D.)
3. https://github.com/jianminchen/LeetCode-Sol-Res (Nine chapter etc., Java)
4. https://github.com/jianminchen/leetcode-3 (Java solution, Googler)
C# solution:
1. https://github.com/jianminchen/LeetSharp
2. https://github.com/jianminchen/Qilu-leetcode
2. https://github.com/jianminchen/LeetCodeInCSharp
C++ - Lintcode book
https://github.com/jianminchen/LintCodeBook
JavaScript: Leetcode
1. https://github.com/jianminchen/leetcode-28
Motivation talk:
1. Sometime, google, bing search do not provide best source code, so, it is time to look up github forked solutions.
Friendly remind:
Julia, you should use github's search - use keyword: Leetcode to find solutions -
2. Look for optimal solution, do not miss the best solution in practice of Leetcode algorithm. Do not rush, try to go through all kinds of practices, search for great ideas out there. Get the best idea to practice. One algorithm a time.
3. Follow more people through github, easy to fork leetcode solutions. Sometimes, it is hard to tell best code, just get some code running first, write first C# practice, and then, ideas will come, what to search, issues etc.
4. Evaluate practices (junior/middle/senior level practice), and then compare to 5-10 practices. (0-3 junior practice, 4-7 middle level, 1-2 optimal solution, senior level practice)
4. Look up stackoverflow to get more ideas, specially from high reputation/ high voted opinions, terms to know when practicing Leetcode algorithms. Try to expand the things to work on through the practice, one algorithm can bring good study about coding style. See the blog:
http://juliachencoding.blogspot.ca/2016/08/leetcode-125-valid-palindrome-summary.html
5. When practicing Leetcode questions, try to work on more through the practice. There is an idea that if you work on thoroughly on one problem a time, you may be able to solve unseen problems as well.
Actionable Items:
1. Study programming principles:
Programming principles
https://github.com/jianminchen/programming-principles
4. Evaluate practices (junior/middle/senior level practice), and then compare to 5-10 practices. (0-3 junior practice, 4-7 middle level, 1-2 optimal solution, senior level practice)
4. Look up stackoverflow to get more ideas, specially from high reputation/ high voted opinions, terms to know when practicing Leetcode algorithms. Try to expand the things to work on through the practice, one algorithm can bring good study about coding style. See the blog:
http://juliachencoding.blogspot.ca/2016/08/leetcode-125-valid-palindrome-summary.html
5. When practicing Leetcode questions, try to work on more through the practice. There is an idea that if you work on thoroughly on one problem a time, you may be able to solve unseen problems as well.
Actionable Items:
1. Study programming principles:
Programming principles
https://github.com/jianminchen/programming-principles
Leetcode 348: Design Tic-Tac-Toe
August 25, 2016
Problem statement:
Problem statement:
Design a Tic-tac-toe game that is played between two players on a n x n grid.
You may assume the following rules:
- A move is guaranteed to be valid and is placed on an empty block.
- Once a winning condition is reached, no more moves is allowed.
- A player who succeeds in placing n of their marks in a horizontal, vertical, or diagonal row wins the game.
Will work on the algorithm very soon.
System Design: Design a URL shortening service
August 25, 2016
Problem statement:
Design a URL shortening service
Problem statement:
Design a URL shortening service
- What do you think the requirements are?
- What is your high level design?
- You might be asked to implement interesting portions
- How do you test it?
Will work on the design very soon.
1. Read the website first: 5 - 10 minutes
stackoverflow.com - how do short urls services work
2. Hired in tech website - the system design process
Step 1: Constraints and use cases
Step 2: Abstract Design
Start from step 1:
System constraints (Do you clarify?)
Use cases ( the list to satisfy?)
Scope system (agree?)
Gather requirements -> design a solution to cover them well.
Use cases:
1. Shortening:
2. Redirection:
3. Custom Url
4. Analytics
5. Automatic link expiration
6. Manual link removal
7. UI or API
And then, discuss and exchange ideas with requirements:
For example, add one more use case 4, and move 4 - 7 out of scope, not for now.
1. Shortening:
2. Redirection:
3. Custom Url
4. High availability of the system
Out of scope:
4. Analytics
5. Automatic link expiration
6. Manual link removal
7. UI or API
Constraints:
Top 10 shorten URL services:
Math to figure out, for example:
15 billion new tweets in twitter,
All shortened URLs per month: 1.5BN - 10 percent
Sites below the top 3: shorten 300M per month
1. New urls per month: 100MLN - 100 millions request to shortening
2.
3.
4.
20% urls generate 80% traffic -> 1BN request per month -> 10% shortening, 90% redirection.
4. Requests per second: 400+ requests per second (40: shortens, 360: redirects)
5. 6BN urls in 5 years -
6. 500 bytes per URL (100 to 1000 characters per URL)
7. 6 bytes per hash
8. 3TBs for all urls, 36GB for all hashes (over 5 years, not 10 years)
9. how much data goes through each second?
New data written per second: 40 *(500 + 6): 20K
10. Data read per second: 360 *506 bytes: 180K
scope the problem beautifully - it takes a while, but 15 minutes in the video, with practice, it takes 5 minutes to clear up everything.
Sept. 3, 2016
Spend 2 hours to watch the video, hiredintech.com, the video link is here. System design - scalability, the link is here.
Take some notes here.
1. Read the website first: 5 - 10 minutes
stackoverflow.com - how do short urls services work
2. Hired in tech website - the system design process
Step 1: Constraints and use cases
Step 2: Abstract Design
Start from step 1:
System constraints (Do you clarify?)
Use cases ( the list to satisfy?)
Scope system (agree?)
Gather requirements -> design a solution to cover them well.
Use cases:
1. Shortening:
2. Redirection:
3. Custom Url
4. Analytics
5. Automatic link expiration
6. Manual link removal
7. UI or API
And then, discuss and exchange ideas with requirements:
For example, add one more use case 4, and move 4 - 7 out of scope, not for now.
1. Shortening:
2. Redirection:
3. Custom Url
4. High availability of the system
Out of scope:
4. Analytics
5. Automatic link expiration
6. Manual link removal
7. UI or API
Constraints:
Top 10 shorten URL services:
Math to figure out, for example:
15 billion new tweets in twitter,
All shortened URLs per month: 1.5BN - 10 percent
Sites below the top 3: shorten 300M per month
1. New urls per month: 100MLN - 100 millions request to shortening
2.
3.
4.
20% urls generate 80% traffic -> 1BN request per month -> 10% shortening, 90% redirection.
4. Requests per second: 400+ requests per second (40: shortens, 360: redirects)
5. 6BN urls in 5 years -
6. 500 bytes per URL (100 to 1000 characters per URL)
7. 6 bytes per hash
8. 3TBs for all urls, 36GB for all hashes (over 5 years, not 10 years)
9. how much data goes through each second?
New data written per second: 40 *(500 + 6): 20K
10. Data read per second: 360 *506 bytes: 180K
scope the problem beautifully - it takes a while, but 15 minutes in the video, with practice, it takes 5 minutes to clear up everything.
Follow up
Sept. 3, 2016
Spend 2 hours to watch the video, hiredintech.com, the video link is here. System design - scalability, the link is here.
Take some notes here.
Array Queue
August 25, 2016
Problem statement:
Implement a Queue using a circular array.
Read circular array:
http://www.mathcs.emory.edu/~cheung/Courses/171/Syllabus/8-List/array-queue2.html
Will come back very soon!
Problem statement:
Implement a Queue using a circular array.
Read circular array:
http://www.mathcs.emory.edu/~cheung/Courses/171/Syllabus/8-List/array-queue2.html
Will come back very soon!
Monday, August 22, 2016
Leetcode 125: Valid Palindrome (III)
August 22, 2016
Continue to review solutions on Leetcode 125.
1. study code:
https://github.com/jianminchen/leetcode-1/blob/master/algorithms/validPalindrome/validPalindrome.cpp
extract one more function - removeNoise - practice #10
C# practice
Great idea to extract one more function, SRP - single responsibility principle
- make the code much more easy to follow, test, static analysis
Two tasks - put into one function - first ask if the function can be broken into two, what is the checkpoints?
Both are with time complexity O(N), N is the string length;
Two tasks can be separated easily, task 1 can be done first.
1. remove noise
2. compare chars
Easily, combine the above 1 and 2 cases, there are 4 cases in the function to handle.
2. use continue keyword - practice #11
study code:
C# practice:
Sunday, August 21, 2016
Leetcode 125 - Valid Palindrome - Code styles study
August 21, 2016
Here is the blog with 5+ practice.
8th practice code
Summary of study:
Go over blogs, read 2+ hours, and then, write 9th practice; Be able to find issues in 8th practice.
9th practice
10th practice
- best solution - extract one more function called removeNoise
11th practice
Julia likes to study code style blogs to help better performance on Leetcode 125:
1. if-else discussion on stackexchange.com
2. fail fast
3. a branched arrow head antipattern
4. https://blog.codinghorror.com/flattening-arrow-code/
5. Refactoring: Book: "improving the Design of Existing Code" - if-else structure sections
6. http://programmers.stackexchange.com/questions/167607/how-can-i-reformat-my-condition-to-make-it-better?noredirect=1&lq=1
7. http://stackoverflow.com/questions/1364946/what-is-the-highest-cyclomatic-complexity-of-any-function-you-maintain-and-how
8. A lot of discussions:
http://stackoverflow.com/questions/36707/should-a-function-have-only-one-return-statement
9. Guard clauses
10. Try this tool - static analysis tool
Study notes:
Get some keywords for google search, or ideas to help review of function:
1. inconsistent levels of abstraction
2. prevent inclusion in if
3. two calls to one function violate DRY principle
Execution paths concern:
1. multiple returns - avoid it
2. only return from a function in one spot - (Good ? Bad?)
Julia made a terrible mistake in 2 sum algorithm, about the return issue - took more than 20 minutes to find out return issue.
3. multiple return paths
4. early returns help to avoid the arrowhead anti pattern.
Readable code
1. use a flag variable to avoid giant expression/ gross if statement.
2. orthogonal ?
3. early returns help to avoid the arrowhead anti pattern.
4. flattening arrow code
5. cyclomatic complexity value - execution paths
6. reduce a module's cyclomatic complexity make code easy to test
Avoid If statement
1. replace conditions with guard clauses.
2. decompose conditional blocks into separate functions
3. convert negative checks into positive checks
4. always opportunistically return as soon as possible from the function.
5. the goal to make code more flat, scroll vertically not horizontally
Book "code complete" about cc - cyclomatic complexity value:
Here is the blog with 5+ practice.
8th practice code
Summary of study:
Go over blogs, read 2+ hours, and then, write 9th practice; Be able to find issues in 8th practice.
9th practice
10th practice
- best solution - extract one more function called removeNoise
11th practice
Julia likes to study code style blogs to help better performance on Leetcode 125:
1. if-else discussion on stackexchange.com
2. fail fast
3. a branched arrow head antipattern
4. https://blog.codinghorror.com/flattening-arrow-code/
5. Refactoring: Book: "improving the Design of Existing Code" - if-else structure sections
6. http://programmers.stackexchange.com/questions/167607/how-can-i-reformat-my-condition-to-make-it-better?noredirect=1&lq=1
7. http://stackoverflow.com/questions/1364946/what-is-the-highest-cyclomatic-complexity-of-any-function-you-maintain-and-how
8. A lot of discussions:
http://stackoverflow.com/questions/36707/should-a-function-have-only-one-return-statement
9. Guard clauses
10. Try this tool - static analysis tool
Study notes:
Get some keywords for google search, or ideas to help review of function:
1. inconsistent levels of abstraction
2. prevent inclusion in if
3. two calls to one function violate DRY principle
Execution paths concern:
1. multiple returns - avoid it
2. only return from a function in one spot - (Good ? Bad?)
Julia made a terrible mistake in 2 sum algorithm, about the return issue - took more than 20 minutes to find out return issue.
3. multiple return paths
4. early returns help to avoid the arrowhead anti pattern.
Readable code
1. use a flag variable to avoid giant expression/ gross if statement.
2. orthogonal ?
3. early returns help to avoid the arrowhead anti pattern.
4. flattening arrow code
5. cyclomatic complexity value - execution paths
6. reduce a module's cyclomatic complexity make code easy to test
Avoid If statement
1. replace conditions with guard clauses.
2. decompose conditional blocks into separate functions
3. convert negative checks into positive checks
4. always opportunistically return as soon as possible from the function.
5. the goal to make code more flat, scroll vertically not horizontally
Book "code complete" about cc - cyclomatic complexity value:
If the score is:
- 0-5 - the routine is probably fine
- 6-10 - start to think about ways to simplify the routine
- 10+ - break part of the routine into a second routine and call it from the first routine
Might be a good idea to write unit tests as you break up the original routine.
A quick comparison image:
Leetcode 125 8th practice vs 9th practice on the change - if conditions inside a while loop:
Continue to review solutions on Leetcode 125. (August 22, 2016)
1. study code:
C++ code - valid palindrome
extract one more function - removeNoise - practice #10
Julia wrote a C# version.
Great idea to extract one more function, SRP - single responsibility principle
- make the code much more easy to follow, test, static analysis
Two tasks - put into one function - think if the function is designed for more than 1 task.
Both are with time complexity O(N), N is the string length;
Two tasks can be separated easily, task 1 can be done first.
1. remove noise
2. compare chars
Easily, combine the above 1 and 2 cases, there are 4 cases in the function to handle.
2. use continue keyword - practice #11
study code:
using continue - C++ valid palindrome
Julia wrote a C# solution.
Saturday, August 20, 2016
Confidence and determination coaching - Nishikori Kei and his coach
August 20, 2016
Review Nishikori and his coach's video.
https://www.youtube.com/watch?v=LfoYUQIsrg4&feature=youtu.be
Nishikori:
Not tall, ...
Coach's talk:
You are a little bit smaller, but ability to cover more court, quicker. Use speed to be many many advantages.
Early in the career, have a book, write down who to play with, write down strength/ weakness, why I lose, be prepared, be smart; It is not hitting a good forehand or backhand; Tennis, at the end of day, it is to find the way to win.
People interviewed you before the final match, you told that you admired Roger Federal.
First of mistake, not ready in mental to play final. Your opponent should not be your admire. A great achievement to play final; admire Roger Federal, should be off the court.
Mentality and determination:
But, you are in my way. I do not care about what you have accomplished, prior achievements, no matter whoever is, find the way to beat the guy.
More videos to watch:
1. https://www.youtube.com/watch?v=s36vSwgn9A0
2. https://www.youtube.com/watch?v=fQBTvSqpRCI
3. https://www.youtube.com/watch?v=zMokexfhTIY
4. https://www.youtube.com/watch?v=mBluyNvnSlc
IMG - how to build a champion?
Most favorite coaching - on-court coaching:
1. https://www.youtube.com/watch?v=zfZGX_f3BOs
Coach - great motivator/ ...
2. https://www.youtube.com/watch?v=g-wKFSkHl3Q
3. https://www.youtube.com/watch?v=2REF6qaUSG4#t=93.0502
4. https://www.youtube.com/watch?v=iK6MMYnNr-M
5. Novak Djokovic
https://www.youtube.com/watch?v=9rHV9nDGHXM
Review Nishikori and his coach's video.
https://www.youtube.com/watch?v=LfoYUQIsrg4&feature=youtu.be
Nishikori:
Not tall, ...
Coach's talk:
You are a little bit smaller, but ability to cover more court, quicker. Use speed to be many many advantages.
Early in the career, have a book, write down who to play with, write down strength/ weakness, why I lose, be prepared, be smart; It is not hitting a good forehand or backhand; Tennis, at the end of day, it is to find the way to win.
People interviewed you before the final match, you told that you admired Roger Federal.
First of mistake, not ready in mental to play final. Your opponent should not be your admire. A great achievement to play final; admire Roger Federal, should be off the court.
Mentality and determination:
But, you are in my way. I do not care about what you have accomplished, prior achievements, no matter whoever is, find the way to beat the guy.
More videos to watch:
1. https://www.youtube.com/watch?v=s36vSwgn9A0
2. https://www.youtube.com/watch?v=fQBTvSqpRCI
3. https://www.youtube.com/watch?v=zMokexfhTIY
4. https://www.youtube.com/watch?v=mBluyNvnSlc
IMG - how to build a champion?
Most favorite coaching - on-court coaching:
1. https://www.youtube.com/watch?v=zfZGX_f3BOs
Coach - great motivator/ ...
2. https://www.youtube.com/watch?v=g-wKFSkHl3Q
3. https://www.youtube.com/watch?v=2REF6qaUSG4#t=93.0502
4. https://www.youtube.com/watch?v=iK6MMYnNr-M
5. Novak Djokovic
https://www.youtube.com/watch?v=9rHV9nDGHXM
Friday, August 19, 2016
Leetcode 125 - valid palindrome - 5+ practice
August 19, 2016
1. No nested if statement
2. No else statement
3. return early in the function
4. work smart to work around the logic to fit in rule 1, 2, 3
Arguments of goal:
1. even if the code is written with a bug, easy to find, quick to find
2. at least more readable, aesthetic better.
Practice to win - have some strategy -
1. Using nested while loops twice, 8 out of 10, no bug with excellent code.
2. Use if, and else if 3 times, 3 out of 10, easy to create bug, hard to argue
3. Use all if, no else, no nested if, 10 out of 10. In future practices, figure out later!
(after 3+ hours study on code styles, work on issues on practice #8)
9th practice C# code
5+ practices - a journey with online judge/ blog searching/ what to search after practice I - (try to find a smart person working on if/else statement)
Leetcode 125
1. Choose the study code
Leetcode 125 - write code based on this version
short function name - isalnum - very good name
a blog to read
5 practices - interest journey !
failed static analysis - miss a bug - easy to spot --, not++
1st practice C# code
there is a bug in first writing, line 62, shoud be right--; not right++.
static analysis did not catch the bug - be careful next time.
2nd practice C# code
highlights of practice 2:
1. Fail to pass the online judge
2. line 24 - 27, logic and reasoning has flaws
logic with a mistake:
both are alphabetic/ number
first one is not
else -
should be:
both are ok
both are failed
A is failed
B is failed
Those are 4 cases - in the specific order as well.
highlights of 3rd practice:
1. Fix the bug first, add these line 59 -67 two "else if", one "else", pass online judge
2. But code "else if" from line 59 -67 can be shortened, avoidable.
C# code
break Remove "else if" statement, make it more flat - line 60 - 65, only two if, avoid " else if" in 3rd practice.
In other words, avoid too complicated if checking
3 cases:
3 if statements:
1st if:
both are ok
Two ifs:
a is not
b is not
Good things in the 4th practice:
1. Inside 1st if statement, line 51 - 56, positive checking first (line 49), then negative.
Declare explanation variable for line 49, and line 51, make it more readable.
Good news! Julia sets pragmatic goal - easy to control - no else statement, no nested if statement.
Practice 8 based on practice 4:
https://gist.github.com/jianminchen/54200adc1b68928b46fef5a087721f57
End of Good news!
https://gist.github.com/jianminchen/8f9ae3839499718790180aa58965d3de
Actionable Items:
Based on practice 4, work on practice 8th, and set practical goals which are easy to control, even it takes more time to write but easy to maintain/ share the code - help to reduce bugs.
Controllable goals:
problem statement:
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"
is a palindrome."race a car"
is not a palindrome.Summary of practice:
After 2+ hours workout on coding, with 8th practice, Julia sets pragmatic goal - easy to control:1. No nested if statement
2. No else statement
3. return early in the function
4. work smart to work around the logic to fit in rule 1, 2, 3
Arguments of goal:
1. even if the code is written with a bug, easy to find, quick to find
2. at least more readable, aesthetic better.
8th practice code:
A table to summarize the workout:
ID | Problem | Practice | Summary | Statistics |
1 | a bug | 1st practice | increment one, should decrement | |
2 | a bug | 2nd practice | run time error, logic with a mistake | |
3 | pass Leetcode online judge | 3rd practice | Fix bugs in 1st and 2nd version. But code is too much with if/else | if - 2 times, else if - 3 times, else - 1 time |
4 | pass Leetcode online judge | 4th practice | Work on 3rd practice, remove else if statement | if - 4 times, else - 1 time |
5 | 5th practice | Remove extra checking in while staement (line 44) | if - 4 times, else - 1 time | |
6 | 6th practice | Break the rule, nested while loop, but it works better, code is more clean | while - 2, if - 1 time | |
7 | 7th practice | skip left char, or skip right char or fail because unmatching pair of chars, else statement for rest | if - 1 time, else if - 2 times, else - 1 time | |
8 | 8th practice | Set pragmatic goal, no nested if statement, no else, based on 4th practice | if - 4 times |
Practice to win - have some strategy -
1. Using nested while loops twice, 8 out of 10, no bug with excellent code.
2. Use if, and else if 3 times, 3 out of 10, easy to create bug, hard to argue
3. Use all if, no else, no nested if, 10 out of 10. In future practices, figure out later!
9th practice:
(after 3+ hours study on code styles, work on issues on practice #8)
9th practice C# code
5+ practices - a journey with online judge/ blog searching/ what to search after practice I - (try to find a smart person working on if/else statement)
Leetcode 125
1. Choose the study code
Leetcode 125 - write code based on this version
short function name - isalnum - very good name
a blog to read
5 practices - interest journey !
1st practice
failed static analysis - miss a bug - easy to spot --, not++
1st practice C# code
there is a bug in first writing, line 62, shoud be right--; not right++.
static analysis did not catch the bug - be careful next time.
2nd practice
2nd practice C# code
highlights of practice 2:
1. Fail to pass the online judge
2. line 24 - 27, logic and reasoning has flaws
logic with a mistake:
both are alphabetic/ number
first one is not
else -
should be:
both are ok
both are failed
A is failed
B is failed
Those are 4 cases - in the specific order as well.
3rd practice
C# codehighlights of 3rd practice:
1. Fix the bug first, add these line 59 -67 two "else if", one "else", pass online judge
2. But code "else if" from line 59 -67 can be shortened, avoidable.
4th practice
C# code
In other words, avoid too complicated if checking
3 cases:
3 if statements:
1st if:
both are ok
Two ifs:
a is not
b is not
Good things in the 4th practice:
1. Inside 1st if statement, line 51 - 56, positive checking first (line 49), then negative.
Declare explanation variable for line 49, and line 51, make it more readable.
Good news! Julia sets pragmatic goal - easy to control - no else statement, no nested if statement.
Practice 8 based on practice 4:
https://gist.github.com/jianminchen/54200adc1b68928b46fef5a087721f57
End of Good news!
5th practice:
https://gist.github.com/jianminchen/8f9ae3839499718790180aa58965d3de
6th practice:
follow the flow of real processing - skip left/right if need, comparison failed, or continue to compare
7th practice:
Actionable Items:
1. If else is a maze, easy to make mistakes. Things can work on:
1. List of approaches -
2. Possible bugs -
3. What is best strategy to approach?
4. What can be trained on?
Based on practice 4, work on practice 8th, and set practical goals which are easy to control, even it takes more time to write but easy to maintain/ share the code - help to reduce bugs.
8th practice
Controllable goals:
1. No else statement - how? practice 8, line 54 - 80, only 4 if statements (line 64, 67, 75, 78)
2. No nested if statement - declare short explanation variable, make a few of conditions checking. (two if statements, line 64 go first, even it is negative checking, line 67 after line 64)
3. let return case go first
4. hide else relationship - but with more careful static analysis
Things to break:
1. Always check is True, no negative checking
2. Extra variable for explanation, summarize
3. Scope of variable - not ideal case
4. Avoid nested while loop, let outside while take care of business
5. ...
Problem with practice #8: (After 3+ hour study and study
http://juliachencoding.blogspot.ca/2016/08/leetcode-125-valid-palindrome-summary.html )
study guard clauses,
http://www.refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html
1. first, the style does not match guard clauses style,
All guard clauses should stay together, and before the clause.
Put line 75 if, line 78 if into guard clauses, and then, before the normal business:
line 67, if(isComparable && isSame)
2. 4 if conditions are not the same level (not same abstraction level!)
3. Scope of variable - not ideal case
4. Avoid nested while loop, let outside while take care of business
5. ...
Problem with practice #8: (After 3+ hour study and study
http://juliachencoding.blogspot.ca/2016/08/leetcode-125-valid-palindrome-summary.html )
study guard clauses,
http://www.refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html
1. first, the style does not match guard clauses style,
All guard clauses should stay together, and before the clause.
Put line 75 if, line 78 if into guard clauses, and then, before the normal business:
line 67, if(isComparable && isSame)
2. 4 if conditions are not the same level (not same abstraction level!)
1st if: isCompare && !isSame
2nd if: isCompare && isSame
3rd if: !arr[0]
4rd if: !arr[1]
1st, 3rd, 4rd if are guard clause
put the idea in next practice: 9th practice
1st if: !isCompare && !arr[0]
2nd if: !isCompare && !arr[1]
3rd if: isCompare && !isSame
4th if: isCompare && isSame
9th practice: (after 3+ hours study on code styles, work on issues on practice #8)
https://gist.github.com/jianminchen/ce79fbd9c3c97b628d8857f55e684aab
Editorial notes:2nd if: isCompare && isSame
3rd if: !arr[0]
4rd if: !arr[1]
1st, 3rd, 4rd if are guard clause
put the idea in next practice: 9th practice
1st if: !isCompare && !arr[0]
2nd if: !isCompare && !arr[1]
3rd if: isCompare && !isSame
4th if: isCompare && isSame
Practice #9:
9th practice: (after 3+ hours study on code styles, work on issues on practice #8)
https://gist.github.com/jianminchen/ce79fbd9c3c97b628d8857f55e684aab
It is time consuming messing with if/else statement.
Facts:
1. 2+ hours programming workout
2. Over 5 practice to experience up and downs,
3. Hard to please a programmer if the code is working but take time to reasoning.
4. Celebrate 2+ hour workout on Leetcode 125 - read
De Morgan's laws
Here is the table of 8 practice:
ID | Problem | Practice | Summary | Statistics |
1 | a bug | 1st practice | increment one, mistake: decrement one | |
2 | a bug | 2nd practice | run time error, logic with a mistake | |
3 | pass Leetcode online judge | 3rd practice | Fix bugs in 1st and 2nd version. But code is too much with if/else | if - 2 times, else if - 3 times, else - 1 time |
4 | pass Leetcode online judge | 4th practice | Work on 3rd practice, remove else if statement | if - 4 times, else - 1 time |
5 | 5th practice | Remove extra checking in while statement (line 44) | if - 4 times, else - 1 time | |
6 | 6th practice | Break the rule, nested while loop, but it works better, code is more clean | while - 2, if - 1 time | |
7 | 7th practice | skip left char, or skip right char or fail because unmatching pair of chars, else statement for rest | if - 1 time, else if - 2 times, else - 1 time | |
8 | 8th practice | Set pragmatic goal, no nested if statement, no else, based on 4th practice | if - 4 times |
Practice to win - have some strategy -
1. Using nested while loops twice, 8 out of 10, no bug with excellent code.
2. Use if, and else if 3 times, 3 out of 10, easy to create bug, hard to argue
3. Use all if, no else, no nested if, 10 out of 10. In future practices, figure out!
Google search and find some related topic:
if/else statement -
1. http://programmers.stackexchange.com/questions/206816/clarification-of-avoid-if-else-advice
1. Using nested while loops twice, 8 out of 10, no bug with excellent code.
2. Use if, and else if 3 times, 3 out of 10, easy to create bug, hard to argue
3. Use all if, no else, no nested if, 10 out of 10. In future practices, figure out!
Google search and find some related topic:
if/else statement -
1. http://programmers.stackexchange.com/questions/206816/clarification-of-avoid-if-else-advice
Subscribe to:
Posts (Atom)