Skip to content

Commit

Permalink
Updated links to use dashes instead of spaces
Browse files Browse the repository at this point in the history
  • Loading branch information
braydie committed Jul 14, 2017
1 parent 820900f commit b536d9e
Show file tree
Hide file tree
Showing 202 changed files with 842 additions and 842 deletions.
128 changes: 64 additions & 64 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,79 +27,79 @@ Welcome to the tribe.

1. [Beginner](en/1-Beginner)
- Personal Skills
- [Learn to Debug](en/1-Beginner/Personal-Skills/01-Learn%20To%20Debug.md)
- [How to Debug by Splitting the Problem Space](en/1-Beginner/Personal-Skills/02-How%20to%20Debug%20by%20Splitting%20the%20Problem%20Space.md)
- [How to Remove an Error](en/1-Beginner/Personal-Skills/03-How%20to%20Remove%20an%20Error.md)
- [How to Debug Using a Log](en/1-Beginner/Personal-Skills/04-How%20to%20Debug%20Using%20a%20Log.md)
- [How to Understand Performance Problems](en/1-Beginner/Personal-Skills/05-How%20to%20Understand%20Performance%20Problems.md)
- [How to Fix Performance Problems](en/1-Beginner/Personal-Skills/06-How%20to%20Fix%20Performance%20Problems.md)
- [How to Optimize Loops](en/1-Beginner/Personal-Skills/07-How%20to%20Optimize%20Loops.md)
- [How to Deal with I/O Expense](en/1-Beginner/Personal-Skills/08-How%20to%20Deal%20with%20IO%20Expense.md)
- [How to Manage Memory](en/1-Beginner/Personal-Skills/09-How%20to%20Manage%20Memory.md)
- [How to Deal with Intermittent Bugs](en/1-Beginner/Personal-Skills/10-How%20to%20Deal%20with%20Intermittent%20Bugs.md)
- [How to Learn Design Skills](en/1-Beginner/Personal-Skills/11-How%20to%20Learn%20Design%20Skills.md)
- [How to Conduct Experiments](en/1-Beginner/Personal-Skills/12-How%20to%20Conduct%20Experiments.md)
- [Learn to Debug](en/1-Beginner/Personal-Skills/01-Learn-To-Debug.md)
- [How to Debug by Splitting the Problem Space](en/1-Beginner/Personal-Skills/02-How-to-Debug-by-Splitting-the-Problem-Space.md)
- [How to Remove an Error](en/1-Beginner/Personal-Skills/03-How-to-Remove-an-Error.md)
- [How to Debug Using a Log](en/1-Beginner/Personal-Skills/04-How-to-Debug-Using-a-Log.md)
- [How to Understand Performance Problems](en/1-Beginner/Personal-Skills/05-How-to-Understand-Performance-Problems.md)
- [How to Fix Performance Problems](en/1-Beginner/Personal-Skills/06-How-to-Fix-Performance-Problems.md)
- [How to Optimize Loops](en/1-Beginner/Personal-Skills/07-How-to-Optimize-Loops.md)
- [How to Deal with I/O Expense](en/1-Beginner/Personal-Skills/08-How-to-Deal-with-IO-Expense.md)
- [How to Manage Memory](en/1-Beginner/Personal-Skills/09-How-to-Manage-Memory.md)
- [How to Deal with Intermittent Bugs](en/1-Beginner/Personal-Skills/10-How-to-Deal-with-Intermittent-Bugs.md)
- [How to Learn Design Skills](en/1-Beginner/Personal-Skills/11-How-to-Learn-Design-Skills.md)
- [How to Conduct Experiments](en/1-Beginner/Personal-Skills/12-How-to-Conduct-Experiments.md)
- Team Skills
- [Why Estimation is Important](en/1-Beginner/Team-Skills/01-Why%20Estimation%20is%20Important.md)
- [How to Estimate Programming Time](en/1-Beginner/Team-Skills/02-How%20to%20Estimate%20Programming%20Time.md)
- [How to Find Out Information](en/1-Beginner/Team-Skills/03-How%20to%20Find%20Out%20Information.md)
- [How to Utilize People as Information Sources](en/1-Beginner/Team-Skills/04-How%20to%20Utilize%20People%20as%20Information%20Sources.md)
- [How to Document Wisely](en/1-Beginner/Team-Skills/05-How%20to%20Document%20Wisely.md)
- [How to Work with Poor Code](en/1-Beginner/Team-Skills/06-How%20to%20Work%20with%20Poor%20Code.md)
- [How to Use Source Code Control](en/1-Beginner/Team-Skills/07-How%20to%20Use%20Source%20Code%20Control.md)
- [How to Unit Test](en/1-Beginner/Team-Skills/08-How%20to%20Unit%20Test.md)
- [Take Breaks when Stumped](en/1-Beginner/Team-Skills/09-Take%20Breaks%20when%20Stumped.md)
- [How to Recognize When to Go Home](en/1-Beginner/Team-Skills/10-How%20to%20Recognize%20When%20to%20Go%20Home.md)
- [How to Deal with Difficult People](en/1-Beginner/Team-Skills/11-How%20to%20Deal%20with%20Difficult%20People.md)
- [Why Estimation is Important](en/1-Beginner/Team-Skills/01-Why-Estimation-is-Important.md)
- [How to Estimate Programming Time](en/1-Beginner/Team-Skills/02-How-to-Estimate-Programming-Time.md)
- [How to Find Out Information](en/1-Beginner/Team-Skills/03-How-to-Find-Out-Information.md)
- [How to Utilize People as Information Sources](en/1-Beginner/Team-Skills/04-How-to-Utilize-People-as-Information-Sources.md)
- [How to Document Wisely](en/1-Beginner/Team-Skills/05-How-to-Document-Wisely.md)
- [How to Work with Poor Code](en/1-Beginner/Team-Skills/06-How-to-Work-with-Poor-Code.md)
- [How to Use Source Code Control](en/1-Beginner/Team-Skills/07-How-to-Use-Source-Code-Control.md)
- [How to Unit Test](en/1-Beginner/Team-Skills/08-How-to-Unit-Test.md)
- [Take Breaks when Stumped](en/1-Beginner/Team-Skills/09-Take-Breaks-when-Stumped.md)
- [How to Recognize When to Go Home](en/1-Beginner/Team-Skills/10-How-to-Recognize-When-to-Go-Home.md)
- [How to Deal with Difficult People](en/1-Beginner/Team-Skills/11-How-to-Deal-with-Difficult-People.md)
2. [Intermediate](en/2-Intermediate)
- Personal Skills
- [How to Stay Motivated](en/2-Intermediate/Personal-Skills/01-How%20to%20Stay%20Motivated.md)
- [How to be Widely Trusted](en/2-Intermediate/Personal-Skills/02-How%20to%20be%20Widely%20Trusted.md)
- [How to Tradeoff Time vs. Space](en/2-Intermediate/Personal-Skills/03-How%20to%20Tradeoff%20Time%20vs%20Space.md)
- [How to Stress Test](en/2-Intermediate/Personal-Skills/04-How%20to%20Stress%20Test.md)
- [How to Balance Brevity and Abstraction](en/2-Intermediate/Personal-Skills/05-How%20to%20Balance%20Brevity%20and%20Abstraction.md)
- [How to Learn New Skills](en/2-Intermediate/Personal-Skills/06-How%20to%20Learn%20New%20Skills.md)
- [Learn to Type](en/2-Intermediate/Personal-Skills/07-Learn%20to%20Type.md)
- [How to Do Integration Testing](en/2-Intermediate/Personal-Skills/08-How%20to%20Do%20Integration%20Testing.md)
- [Communication Languages](en/2-Intermediate/Personal-Skills/09-Communication%20Languages.md)
- [Heavy Tools](en/2-Intermediate/Personal-Skills/10-Heavy%20Tools.md)
- [How to analyze data](en/2-Intermediate/Personal-Skills/11-How%20to%20analyze%20data.md)
- [How to Stay Motivated](en/2-Intermediate/Personal-Skills/01-How-to-Stay-Motivated.md)
- [How to be Widely Trusted](en/2-Intermediate/Personal-Skills/02-How-to-be-Widely-Trusted.md)
- [How to Tradeoff Time vs. Space](en/2-Intermediate/Personal-Skills/03-How-to-Tradeoff-Time-vs-Space.md)
- [How to Stress Test](en/2-Intermediate/Personal-Skills/04-How-to-Stress-Test.md)
- [How to Balance Brevity and Abstraction](en/2-Intermediate/Personal-Skills/05-How-to-Balance-Brevity-and-Abstraction.md)
- [How to Learn New Skills](en/2-Intermediate/Personal-Skills/06-How-to-Learn-New-Skills.md)
- [Learn to Type](en/2-Intermediate/Personal-Skills/07-Learn-to-Type.md)
- [How to Do Integration Testing](en/2-Intermediate/Personal-Skills/08-How-to-Do-Integration-Testing.md)
- [Communication Languages](en/2-Intermediate/Personal-Skills/09-Communication-Languages.md)
- [Heavy Tools](en/2-Intermediate/Personal-Skills/10-Heavy-Tools.md)
- [How to analyze data](en/2-Intermediate/Personal-Skills/11-How-to-analyze-data.md)
- Team Skills
- [How to Manage Development Time](en/2-Intermediate/Team-Skills/01-How%20to%20Manage%20Development%20Time.md)
- [How to Manage Third-Party Software Risks](en/2-Intermediate/Team-Skills/02-How%20to%20Manage%20Third-Party%20Software%20Risks.md)
- [How to Manage Consultants](en/2-Intermediate/Team-Skills/03-How%20to%20Manage%20Consultants.md)
- [How to Communicate the Right Amount](en/2-Intermediate/Team-Skills/04-How%20to%20Communicate%20the%20Right%20Amount.md)
- [How to Disagree Honestly and Get Away with It](en/2-Intermediate/Team-Skills/05-How%20to%20Disagree%20Honestly%20and%20Get%20Away%20with%20It.md)
- [How to Manage Development Time](en/2-Intermediate/Team-Skills/01-How-to-Manage-Development-Time.md)
- [How to Manage Third-Party Software Risks](en/2-Intermediate/Team-Skills/02-How-to-Manage-Third-Party-Software-Risks.md)
- [How to Manage Consultants](en/2-Intermediate/Team-Skills/03-How-to-Manage-Consultants.md)
- [How to Communicate the Right Amount](en/2-Intermediate/Team-Skills/04-How-to-Communicate-the-Right-Amount.md)
- [How to Disagree Honestly and Get Away with It](en/2-Intermediate/Team-Skills/05-How-to-Disagree-Honestly-and-Get-Away-with-It.md)
- Judgment
- [How to Tradeoff Quality Against Development Time](en/2-Intermediate/Judgment/01-How%20to%20Tradeoff%20Quality%20Against%20Development%20Time.md)
- [How to Manage Software System Dependence](en/2-Intermediate/Judgment/02-How%20to%20Manage%20Software%20System%20Dependence.md)
- [How to Decide if Software is Too Immature](en/2-Intermediate/Judgment/03-How%20to%20Decide%20if%20Software%20is%20Too%20Immature.md)
- [How to Make a Buy vs. Build Decision](en/2-Intermediate/Judgment/04-How%20to%20Make%20a%20Buy%20vs%20Build%20Decision.md)
- [How to Grow Professionally](en/2-Intermediate/Judgment/05-How%20to%20Grow%20Professionally.md)
- [How to Evaluate Interviewees](en/2-Intermediate/Judgment/06-How%20to%20Evaluate%20Interviewees.md)
- [How to Know When to Apply Fancy Computer Science](en/2-Intermediate/Judgment/07-How%20to%20Know%20When%20to%20Apply%20Fancy%20Computer%20Science.md)
- [How to Talk to Non-Engineers](en/2-Intermediate/Judgment/08-How%20to%20Talk%20to%20Non-Engineers.md)
- [How to Tradeoff Quality Against Development Time](en/2-Intermediate/Judgment/01-How-to-Tradeoff-Quality-Against-Development-Time.md)
- [How to Manage Software System Dependence](en/2-Intermediate/Judgment/02-How-to-Manage-Software-System-Dependence.md)
- [How to Decide if Software is Too Immature](en/2-Intermediate/Judgment/03-How-to-Decide-if-Software-is-Too-Immature.md)
- [How to Make a Buy vs. Build Decision](en/2-Intermediate/Judgment/04-How-to-Make-a-Buy-vs-Build-Decision.md)
- [How to Grow Professionally](en/2-Intermediate/Judgment/05-How-to-Grow-Professionally.md)
- [How to Evaluate Interviewees](en/2-Intermediate/Judgment/06-How-to-Evaluate-Interviewees.md)
- [How to Know When to Apply Fancy Computer Science](en/2-Intermediate/Judgment/07-How-to-Know-When-to-Apply-Fancy-Computer-Science.md)
- [How to Talk to Non-Engineers](en/2-Intermediate/Judgment/08-How-to-Talk-to-Non-Engineers.md)
3. [Advanced](en/3-Advanced)
- Technological Judgment
- [How to Tell the Hard From the Impossible](en/3-Advanced/Technical-Judgment/01-How%20to%20Tell%20the%20Hard%20From%20the%20Impossible.md)
- [How to Utilize Embedded Languages](en/3-Advanced/Technical-Judgment/02-How%20to%20Utilize%20Embedded%20Languages.md)
- [Choosing Languages](en/3-Advanced/Technical-Judgment/03-Choosing%20Languages.md)
- [How to Tell the Hard From the Impossible](en/3-Advanced/Technical-Judgment/01-How-to-Tell-the-Hard-From-the-Impossible.md)
- [How to Utilize Embedded Languages](en/3-Advanced/Technical-Judgment/02-How-to-Utilize-Embedded-Languages.md)
- [Choosing Languages](en/3-Advanced/Technical-Judgment/03-Choosing-Languages.md)
- Compromising Wisely
- [How to Fight Schedule Pressure](en/3-Advanced/Compromising-Wisely/01-How%20to%20Fight%20Schedule%20Pressure.md)
- [How to Understand the User](en/3-Advanced/Compromising-Wisely/02-How%20to%20Understand%20the%20User.md)
- [How to Get a Promotion](en/3-Advanced/Compromising-Wisely/03-How%20to%20Get%20a%20Promotion.md)
- [How to Fight Schedule Pressure](en/3-Advanced/Compromising-Wisely/01-How-to-Fight-Schedule-Pressure.md)
- [How to Understand the User](en/3-Advanced/Compromising-Wisely/02-How-to-Understand-the-User.md)
- [How to Get a Promotion](en/3-Advanced/Compromising-Wisely/03-How-to-Get-a-Promotion.md)
- Serving Your Team
- [How to Develop Talent](en/3-Advanced/Serving-Your-Team/01-How%20to%20Develop%20Talent.md)
- [How to Choose What to Work On](en/3-Advanced/Serving-Your-Team/02-How%20to%20Choose%20What%20to%20Work%20On.md)
- [How to Get the Most From Your Team-mates](en/3-Advanced/Serving-Your-Team/03-How%20to%20Get%20the%20Most%20From%20Your%20Teammates.md)
- [How to Divide Problems Up](en/3-Advanced/Serving-Your-Team/04-How%20to%20Divide%20Problems%20Up.md)
- [How to Handle Boring Tasks](en/3-Advanced/Serving-Your-Team/05-How%20to%20Handle%20Boring%20Tasks.md)
- [How to Gather Support for a Project](en/3-Advanced/Serving-Your-Team/06-How%20to%20Gather%20Support%20for%20a%20Project.md)
- [How to Grow a System](en/3-Advanced/Serving-Your-Team/07-How%20to%20Grow%20a%20System.md)
- [How to Communicate Well](en/3-Advanced/Serving-Your-Team/08-How%20to%20Communicate%20Well.md)
- [How to Tell People Things They Don't Want to Hear](en/3-Advanced/Serving-Your-Team/09-How%20to%20Tell%20People%20Things%20They%20Don't%20Want%20to%20Hear.md)
- [How to Deal with Managerial Myths](en/3-Advanced/Serving-Your-Team/10-How%20to%20Deal%20with%20Managerial%20Myths.md)
- [How to Deal with Organizational Chaos](en/3-Advanced/Serving-Your-Team/11-How%20to%20Deal%20with%20Organizational%20Chaos.md)
- [How to Develop Talent](en/3-Advanced/Serving-Your-Team/01-How-to-Develop-Talent.md)
- [How to Choose What to Work On](en/3-Advanced/Serving-Your-Team/02-How-to-Choose-What-to-Work-On.md)
- [How to Get the Most From Your Team-mates](en/3-Advanced/Serving-Your-Team/03-How-to-Get-the-Most-From-Your-Teammates.md)
- [How to Divide Problems Up](en/3-Advanced/Serving-Your-Team/04-How-to-Divide-Problems-Up.md)
- [How to Handle Boring Tasks](en/3-Advanced/Serving-Your-Team/05-How-to-Handle-Boring-Tasks.md)
- [How to Gather Support for a Project](en/3-Advanced/Serving-Your-Team/06-How-to-Gather-Support-for-a-Project.md)
- [How to Grow a System](en/3-Advanced/Serving-Your-Team/07-How-to-Grow-a-System.md)
- [How to Communicate Well](en/3-Advanced/Serving-Your-Team/08-How-to-Communicate-Well.md)
- [How to Tell People Things They Don't Want to Hear](en/3-Advanced/Serving-Your-Team/09-How-to-Tell-People-Things-They-Don't-Want-to-Hear.md)
- [How to Deal with Managerial Myths](en/3-Advanced/Serving-Your-Team/10-How-to-Deal-with-Managerial-Myths.md)
- [How to Deal with Organizational Chaos](en/3-Advanced/Serving-Your-Team/11-How-to-Deal-with-Organizational-Chaos.md)
4. [Glossary](en/GLOSSARY.md)
5. [Appendix A - Bibliography/Websiteography](en/5-Bibliography.md)
6. [Appendix B - History (As of January 2016)](en/6-History.md)
Expand Down
2 changes: 1 addition & 1 deletion en/1-Beginner/Personal-Skills/01-Learn-To-Debug.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ Debugging tools are wonderful when they are stable and available, but printlinin

Some beginners fear debugging when it requires modifying code. This is understandable - it is a little like exploratory surgery. But you have to learn to poke at the code and make it jump; you have to learn to experiment on it and understand that nothing that you temporarily do to it will make it worse. If you feel this fear, seek out a mentor - we lose a lot of good programmers at the delicate onset of their learning to this fear.

Next [How to Debug by Splitting the Problem Space](02-How%20to%20Debug%20by%20Splitting%20the%20Problem%20Space.md)
Next [How to Debug by Splitting the Problem Space](02-How-to-Debug-by-Splitting-the-Problem-Space.md)
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ To a true beginner, the space of all possible errors looks like every line in th

Once you have evenly subdivided the space of all that can go wrong, you must try to decide in which space the error lies. In the simple case where the mystery is: ‘Which single unknown line makes my program crash?’, you can ask yourself: ‘Is the unknown line executed before or after this line that I judge to be executed in the middle of the running program?’ Usually you will not be so lucky as to know that the error exists in a single line, or even a single block. Often the mystery will be more like: ‘Either there is a pointer in that graph that points to the wrong node, or my algorithm that adds up the variables in that graph doesn't work.’ In that case you may have to write a small program to check that the pointers in the graph are all correct in order to decide which part of the subdivided mystery can be eliminated.

Next [How to Remove an Error](03-How%20to%20Remove%20an%20Error.md)
Next [How to Remove an Error](03-How-to-Remove-an-Error.md)
2 changes: 1 addition & 1 deletion en/1-Beginner/Personal-Skills/03-How-to-Remove-an-Error.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ In fixing a bug, you want to make the smallest change that fixes the bug. You ma

Sometimes, there are really several bugs that look like one. It is up to you to define the bugs and fix them one at a time. Sometimes it is unclear what the program should do or what the original author intended. In this case, you must exercise your experience and judgment and assign your own meaning to the code. Decide what it should do, and comment it or clarify it in some way and then make the code conform to your meaning. This is an intermediate or advanced skill that is sometimes harder than writing the original function in the first place, but the real world is often messy. You may have to fix a system you cannot rewrite.

Next [How to Debug Using a Log](04-How%20to%20Debug%20Using%20a%20Log.md)
Next [How to Debug Using a Log](04-How-to-Debug-Using-a-Log.md)
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ The amount to output into the log is always a compromise between information and

If you have a permanent log, printlining can now be done in terms of the log records, and some of the debugging statements will probably be permanently added to the logging system.

Next [How to Understand Performance Problems](05-How%20to%20Understand%20Performance%20Problems.md)
Next [How to Understand Performance Problems](05-How-to-Understand-Performance-Problems.md)
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ There are many dimensions to the performance of a computer system, and many reso

Contention for shared resources that are synchronized can cause deadlock and starvation. Deadlock is the inability to proceed because of improper synchronization or resource demands. Starvation is the failure to schedule a component properly. If it can be at all anticipated, it is best to have a way of measuring this contention from the start of your project. Even if this contention does not occur, it is very helpful to be able to assert that with confidence.

Next [How to Fix Performance Problems](06-How%20to%20Fix%20Performance%20Problems.md)
Next [How to Fix Performance Problems](06-How-to-Fix-Performance-Problems.md)
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ Often, the bottlenecks in performance will be an example of counting cows by cou

What do you do when you start to run out of low-hanging fruit? Well, you can reach higher, or chop the tree down. You can continue making small improvements or you can seriously redesign a system or a subsystem. (This is a great opportunity to use your skills as a good programmer, not only in the new design but also in convincing your boss that this is a good idea.) However, before you argue for the redesign of a subsystem, you should ask yourself whether or not your proposal will make it five to ten time better.

Next [How to Optimize Loops](07-How%20to%20Optimize%20Loops.md)
Next [How to Optimize Loops](07-How-to-Optimize-Loops.md)
2 changes: 1 addition & 1 deletion en/1-Beginner/Personal-Skills/07-How-to-Optimize-Loops.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ Sometimes you'll encounter loops, or recursive functions, that take a long time

The cost of each of these operations depends on your specific system. On some systems compilers and hardware do these things for you. Clear, efficient code is better than code that requires an understanding of a particular platform.

Next [How to Deal with I/O Expense](08-How%20to%20Deal%20with%20IO%20Expense.md)
Next [How to Deal with I/O Expense](08-How-to-Deal-with-IO-Expense.md)
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ Representations can often be improved by a factor of two or three from their fir

A third technique that is sometimes possible is to improve the locality of reference by pushing the computation closer to the data. For instance, if you are reading some data from a database and computing something simple from it, such as a summation, try to get the database server to do it for you. This is highly dependent on the kind of system you're working with, but you should explore it.

Next [How to Manage Memory](09-How%20to%20Manage%20Memory.md)
Next [How to Manage Memory](09-How-to-Manage-Memory.md)
Loading

0 comments on commit b536d9e

Please sign in to comment.