From 853c728d9ce0482478740d34dd80d10461354a9c Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Mon, 10 Aug 2015 20:13:13 -0700 Subject: [PATCH] improve get-started view and fix duplicate bonfire issue --- seed/challenges/expert-bonfires.json | 304 ------------------------ server/views/resources/get-started.jade | 66 ++--- 2 files changed, 34 insertions(+), 336 deletions(-) delete mode 100644 seed/challenges/expert-bonfires.json diff --git a/seed/challenges/expert-bonfires.json b/seed/challenges/expert-bonfires.json deleted file mode 100644 index d5322b08f3..0000000000 --- a/seed/challenges/expert-bonfires.json +++ /dev/null @@ -1,304 +0,0 @@ -{ - "name": "Expert Algorithm Scripting", - "order": 0.013, - "challenges": [ - { - "id": "aff0495970f5d3034dc0bfc9", - "title": "Validate US Telephone Numbers", - "difficulty": "4.01", - "description": [ - "Return true if the passed string is a valid US phone number", - "The user may fill out the form field any way they choose as long as it is a valid US number. The following are all valid formats for US numbers:", - "555-555-5555, (555)555-5555, (555) 555-5555, 555 555 5555, 5555555555, 1 555 555 5555", - "For this challenge you will be presented with a string such as \"800-692-7753\" or \"8oo-six427676;laskdjf\". Your job is to validate or reject the US phone number based on any combination of the formats provided above. The area code is required. If the country code is provided, you must confirm that the country code is \"1\". Return true if the string is a valid US phone number; otherwise false.", - "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." - ], - "tests": [ - "expect(telephoneCheck(\"555-555-5555\")).to.be.a(\"boolean\");", - "assert.deepEqual(telephoneCheck(\"1 555-555-5555\"), true);", - "assert.deepEqual(telephoneCheck(\"1 (555) 555-5555\"), true);", - "assert.deepEqual(telephoneCheck(\"5555555555\"), true);", - "assert.deepEqual(telephoneCheck(\"555-555-5555\"), true);", - "assert.deepEqual(telephoneCheck(\"(555)555-5555\"), true);", - "assert.deepEqual(telephoneCheck(\"1(555)555-5555\"), true);", - "assert.deepEqual(telephoneCheck(\"1 555 555 5555\"), true);", - "assert.deepEqual(telephoneCheck(\"555-555-5555\"), true);", - "assert.deepEqual(telephoneCheck(\"1 456 789 4444\"), true);", - "assert.deepEqual(telephoneCheck(\"123**&!!asdf#\"), false);", - "assert.deepEqual(telephoneCheck(\"55555555\"), false);", - "assert.deepEqual(telephoneCheck(\"(6505552368)\"), false);", - "assert.deepEqual(telephoneCheck(\"2 (757) 622-7382\"), false);", - "assert.deepEqual(telephoneCheck(\"0 (757) 622-7382\"), false);", - "assert.deepEqual(telephoneCheck(\"-1 (757) 622-7382\"), false);", - "assert.deepEqual(telephoneCheck(\"2 757 622-7382\"), false);", - "assert.deepEqual(telephoneCheck(\"10 (757) 622-7382\"), false);", - "assert.deepEqual(telephoneCheck(\"27576227382\"), false);", - "assert.deepEqual(telephoneCheck(\"(275)76227382\"), false);", - "assert.deepEqual(telephoneCheck(\"2(757)6227382\"), false);", - "assert.deepEqual(telephoneCheck(\"2(757)622-7382\"), false);" - ], - "challengeSeed": [ - "function telephoneCheck(str) {", - " // Good luck!", - " return true;", - "}", - "", - "", - "", - "telephoneCheck(\"555-555-5555\");" - ], - "MDNlinks": [ - "RegExp" - ], - "type": "bonfire", - "challengeType": 5, - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "", - "descriptionEs": [], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "a3f512de51cf954ede28891d", - "title": "Symmetric Difference", - "difficulty": "4.02", - "description": [ - "Create a function that takes two or more arrays and returns an array of the symmetric difference of the provided arrays.", - "The mathematical term symmetric difference refers to the elements in two sets that are in either the first or second set, but not in both.", - "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." - ], - "challengeSeed": [ - "function sym(args) {", - " return arguments;", - "}", - "", - "sym([1, 2, 3], [5, 2, 1, 4]);" - ], - "tests": [ - "assert.deepEqual(sym([1, 2, 3], [5, 2, 1, 4]).sort(), [3, 4, 5], 'should return the symmetric difference of the given arrays');", - "assert.deepEqual(sym([1, 2, 5], [2, 3, 5], [3, 4, 5]).sort(), [1, 4, 5], 'should return the symmetric difference of the given arrays');", - "assert.deepEqual(sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]).sort(), [1, 4, 5], 'should return an array of unique values');", - "assert.deepEqual(sym([1, 1]), [1], 'should return an array of unique values');" - ], - "MDNlinks": [ - "Array.reduce()", - "Symmetric Difference" - ], - "type": "bonfire", - "challengeType": 5, - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "", - "descriptionEs": [], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "aa2e6f96cab3ab736c9a9b24", - "title": "Exact Change", - "difficulty": "4.03", - "description": [ - "Design a cash register drawer function that accepts purchase price as the first argument, payment as the second argument, and cash-in-drawer (cid) as the third argument.", - "cid is a 2d array listing available currency.", - "Return the string \"Insufficient Funds\" if cash-in-drawer is less than the change due. Return the string \"Closed\" if cash-in-drawer is equal to the change due.", - "Otherwise, return change in coin and bills, sorted in highest to lowest order.", - "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." - ], - "challengeSeed": [ - "function drawer(price, cash, cid) {", - " var change;", - " // Here is your change, ma'am.", - " return change;", - "}", - "", - "// Example cash-in-drawer array:", - "// [['PENNY', 1.01],", - "// ['NICKEL', 2.05],", - "// ['DIME', 3.10],", - "// ['QUARTER', 4.25],", - "// ['ONE', 90.00],", - "// ['FIVE', 55.00],", - "// ['TEN', 20.00],", - "// ['TWENTY', 60.00],", - "// ['ONE HUNDRED', 100.00]]", - "", - "drawer(19.50, 20.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]);" - ], - "tests": [ - "expect(drawer(19.50, 20.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]])).to.be.a('array');", - "expect(drawer(19.50, 20.00, [['PENNY', 0.01], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]])).to.be.a('string');", - "expect(drawer(19.50, 20.00, [['PENNY', 0.50], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]])).to.be.a('string');", - "assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]), [['QUARTER', 0.50]], 'return correct change');", - "assert.deepEqual(drawer(3.26, 100.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]), [['TWENTY', 60.00], ['TEN', 20.00], ['FIVE', 15], ['ONE', 1], ['QUARTER', 0.50], ['DIME', 0.20], ['PENNY', 0.04] ], 'return correct change with multiple coins and bills');", - "assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 0.01], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]]), 'Insufficient Funds', 'insufficient funds');", - "assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 0.50], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]]), \"Closed\", 'cash-in-drawer equals change');" - ], - "MDNlinks": [ - "Global Object" - ], - "type": "bonfire", - "challengeType": 5, - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "", - "descriptionEs": [], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "a56244aff60341a09ed6c480", - "title": "Inventory Update", - "difficulty": "4.04", - "description": [ - "Compare and update inventory stored in a 2d array against a second 2d array of a fresh delivery. Update current inventory item quantity, and if an item cannot be found, add the new item and quantity into the inventory array in alphabetical order.", - "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." - ], - "challengeSeed": [ - "function inventory(arr1, arr2) {", - " // All inventory must be accounted for or you're fired!", - " return arr1;", - "}", - "", - "// Example inventory lists", - "var curInv = [", - " [21, 'Bowling Ball'],", - " [2, 'Dirty Sock'],", - " [1, 'Hair Pin'],", - " [5, 'Microphone']", - "];", - "", - "var newInv = [", - " [2, 'Hair Pin'],", - " [3, 'Half-Eaten Apple'],", - " [67, 'Bowling Ball'],", - " [7, 'Toothpaste']", - "];", - "", - "inventory(curInv, newInv);" - ], - "tests": [ - "expect(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']])).to.be.a('array');", - "assert.equal(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]).length, 6);", - "assert.deepEqual(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]), [[88, 'Bowling Ball'], [2, 'Dirty Sock'], [3, 'Hair Pin'], [3, 'Half-Eaten Apple'], [5, 'Microphone'], [7, 'Toothpaste']]);", - "assert.deepEqual(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], []), [[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']]);", - "assert.deepEqual(inventory([], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]), [[67, 'Bowling Ball'], [2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [7, 'Toothpaste']]);", - "assert.deepEqual(inventory([[0, 'Bowling Ball'], [0, 'Dirty Sock'], [0, 'Hair Pin'], [0, 'Microphone']], [[1, 'Hair Pin'], [1, 'Half-Eaten Apple'], [1, 'Bowling Ball'], [1, 'Toothpaste']]), [[1, 'Bowling Ball'], [0, 'Dirty Sock'], [1, 'Hair Pin'], [1, 'Half-Eaten Apple'], [0, 'Microphone'], [1, 'Toothpaste']]);" - ], - "MDNlinks": [ - "Global Array Object" - ], - "type": "bonfire", - "challengeType": 5, - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "", - "descriptionEs": [], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "a8bf800cd123b9a54eef01d5", - "title": "No repeats please", - "difficulty": "4.05", - "description": [ - "Return the number of total permutations of the provided string that don't have repeated consecutive letters.", - "For example, 'aab' should return 2 because it has 6 total permutations, but only 2 of them don't have the same letter (in this case 'a') repeating.", - "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." - ], - "challengeSeed": [ - "function permAlone(str) {", - " return str;", - "}", - "", - "permAlone('aab');" - ], - "tests": [ - "expect(permAlone('aab')).to.be.a('number');", - "expect(permAlone('aab')).to.equal(2);", - "expect(permAlone('aaa')).to.equal(0);", - "expect(permAlone('aabb')).to.equal(8);", - "expect(permAlone('abcdefa')).to.equal(3600);", - "expect(permAlone('abfdefa')).to.equal(2640);", - "expect(permAlone('zzzzzzzz')).to.equal(0);" - ], - "MDNlinks": [ - "Permutations", - "RegExp" - ], - "type": "bonfire", - "challengeType": 5, - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "", - "descriptionEs": [], - "namePt": "", - "descriptionPt": [] - }, - { - "id": "a19f0fbe1872186acd434d54", - "title": "Friendly Date Ranges", - "difficulty": "4.06", - "description": [ - "Implement a way of converting two dates into a more friendly date range that could be presented to a user.", - "It must not show any redundant information in the date range.", - "For example, if the year and month are the same then only the day range should be displayed.", - "Secondly, if the starting year is the current year, and the ending year can be inferred by the reader, the year should be omitted.", - "Input date is formatted as YYYY-MM-DD", - "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." - ], - "challengeSeed": [ - "function friendly(str) {", - " return str;", - "}", - "", - "friendly(['2015-07-01', '2015-07-04']);" - ], - "tests": [ - "assert.deepEqual(friendly(['2015-07-01', '2015-07-04']), ['July 1st','4th'], 'ending month should be omitted since it is already mentioned');", - "assert.deepEqual(friendly(['2015-12-01', '2016-02-03']), ['December 1st','February 3rd'], 'two months apart can be inferred if it is the next year');", - "assert.deepEqual(friendly(['2015-12-01', '2017-02-03']), ['December 1st, 2015','February 3rd, 2017']);", - "assert.deepEqual(friendly(['2016-03-01', '2016-05-05']), ['March 1st','May 5th'], 'one month apart can be inferred it is the same year');", - "assert.deepEqual(friendly(['2017-01-01', '2017-01-01']), ['January 1st, 2017'], 'since we do not duplicate only return once');", - "assert.deepEqual(friendly(['2022-09-05', '2023-09-04']), ['September 5th, 2022','September 4th, 2023']);" - ], - "MDNlinks": [ - "String.split()", - "String.substr()", - "parseInt()" - ], - "type": "bonfire", - "challengeType": 5, - "nameCn": "", - "descriptionCn": [], - "nameFr": "", - "descriptionFr": [], - "nameRu": "", - "descriptionRu": [], - "nameEs": "", - "descriptionEs": [], - "namePt": "", - "descriptionPt": [] - } - ] -} diff --git a/server/views/resources/get-started.jade b/server/views/resources/get-started.jade index 5dd1ac3452..6f5d353b74 100644 --- a/server/views/resources/get-started.jade +++ b/server/views/resources/get-started.jade @@ -1,60 +1,60 @@ extends ../layout block content .jumbotron - h2.text-center Do these steps to get ready for Free Code Camp (this only takes 10 minutes): - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/RlEk2IF.jpg' alt='a gif showing how to install this') + h2.text-center This 10-minute guide will help you get the most out of Free Code Camp. + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/RlEk2IF.jpg' alt='a gif showing how to install this') p.large-p.gif-caption Welcome to Free Code Camp. We're an open source community of busy people who learn to code, then practice by building projects for nonprofits. .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/pYsTbjI.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/pYsTbjI.jpg' alt='a gif showing how to install this') p.large-p.gif-caption Learning to code is hard. To succeed, you'll need lots practice and support. That's why we've created a rigorous curriculum and supportive community. .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/Gtf8aIq.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/Gtf8aIq.jpg' alt='a gif showing how to install this') p.large-p.gif-caption Free Code Code camp is self-paced, browser-based, and free. .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/D7Y5luw.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/D7Y5luw.jpg' alt='a gif showing how to install this') p.large-p.gif-caption If you can finish Free Code Camp, you will be able to get a coding job. There are thousands of coding jobs currently going unfilled, and the demand for coders grows every year. .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/dLx8nrg.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/dLx8nrg.jpg' alt='a gif showing how to install this') p.large-p.gif-caption During the first 800 hours of Free Code Camp, you'll learn technologies like HTML5, Node.js and databases. .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/yXyxbDd.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/yXyxbDd.jpg' alt='a gif showing how to install this') p.large-p.gif-caption During the last 800 hours, you'll build several real-life projects for nonprofits. .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/PprMPUx.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/PprMPUx.jpg' alt='a gif showing how to install this') p.large-p.gif-caption By the time you finish, you'll have a job-winning portfolio of real apps that people use every day. .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/EAR7Lvh.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/EAR7Lvh.jpg' alt='a gif showing how to install this') p.large-p.gif-caption Now let's join Free Code Camp's chat rooms. You can come here any time of day to hang out, ask questions, or find another camper to pair program with. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/sign-up-for-github.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/sign-up-for-github.gif' alt='a gif showing how to install this') p.large-p.gif-caption span.text-info Try this:  a(href='https://github.com/join' target='_blank') Create an account with GitHub | . Be sure to use your real email address - GitHub will keep this private. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/github-profile.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/github-profile.gif' alt='a gif showing how to install this') p.large-p.gif-caption span.text-info Try this:  | Click the pixel art in the upper right hand corner of GitHub, then choose settings. Upload a picture of yourself. A picture of your face works best. This is how people will see you in our chat rooms, so put your best foot forward. You can add your city and your name if you want. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/star-repository.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/star-repository.gif' alt='a gif showing how to install this') p.large-p.gif-caption span.text-info Try this:  a(href='//github.com/freecodecamp/freecodecamp' target='_blank') Go to Free Code Camp's open-source repository |  and "star" it. "Starring" is the GitHub equivalent of "liking" something. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/join-gitter.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/join-gitter.gif' alt='a gif showing how to install this') p.large-p.gif-caption span.text-info Try this:  | Now that you have a GitHub account, you can  @@ -62,64 +62,64 @@ block content | . Introduce yourself by saying "Hello world!". Tell your fellow campers how you found Free Code Camp. Also tell us why you want to learn to code. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/gitter-notifications.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/gitter-notifications.gif' alt='a gif showing how to install this') p.large-p.gif-caption span.text-info Try this:  | Our chat rooms are extremely active. You should change your settings so you're only notified if someone mentions you. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/private-messages.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/private-messages.gif' alt='a gif showing how to install this') p.large-p.gif-caption Please note that all of our chat rooms are visible to the public. If you need to share sensitive information, such as an email address or phone number, do it in a private message. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/keep-chat-open.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/keep-chat-open.gif' alt='a gif showing how to install this') p.large-p.gif-caption Keep our chat room open while you work through our challenges. That way, you can ask for help if you get stuck. You can also socialize with other campers when you feel like taking a break. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/download-gitter-app.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/download-gitter-app.gif' alt='a gif showing how to install this') p.large-p.gif-caption span.text-info Try this:  a(href='https://gitter.im/apps' target='_blank') You can also download the chat room app to your computer or phone | . .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/challenge-map.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/challenge-map.gif' alt='a gif showing how to install this') p.large-p.gif-caption span.text-info Try this:  | Click the "Map" button in your upper right hand corner. Our map shows all our coding challenges. We recommend that you complete these from top to bottom, at a sustainable pace. .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/9NJfPQv.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/9NJfPQv.jpg' alt='a gif showing how to install this') p.large-p.gif-caption After you finish all of our challenges, you'll start building projects for nonprofits. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/wiki.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/wiki.gif' alt='a gif showing how to install this') p.large-p.gif-caption span.text-info Try this:  | Click the "Wiki" button in your upper right hand corner. Our community has contributed lots of useful information to this searchable wiki. .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/RlEk2IF.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/RlEk2IF.jpg' alt='a gif showing how to install this') p.large-p.gif-caption span.text-info Try this:  | Check out your portfolio page. Click your picture your upper right hand corner. Before you can see your portfolio page, you'll need to link your GitHub account with Free Code Camp. .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/RlEk2IF.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/RlEk2IF.jpg' alt='a gif showing how to install this') p.large-p.gif-caption Your portfolio page shows your progress and how many Brownie Points you have. You can get Brownie Points by completing challenges and by helping other campers in our chat rooms. If you get Brownie Points on several days in a row, you'll get a streak. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/camper-news.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/camper-news.gif' alt='a gif showing how to install this') p.large-p.gif-caption span.text-info Try this:  | Click the "News" button in your upper right hand corner. You can browse links on Camper News and upvote ones that you enjoy. .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/Elb3dfj.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/Elb3dfj.jpg' alt='a gif showing how to install this') p.large-p.gif-caption Our Campsites help you code with campers in your city. You can coordinate study groups or attend local coding events together. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/join-facebook-group.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/join-facebook-group.gif' alt='a gif showing how to install this') p.large-p.gif-caption span.text-info Try this:  a(href='https://github.com/FreeCodeCamp/freecodecamp/wiki/List-of-Free-Code-Camp-city-based-Campsites' target='_blank') Find your city on this list @@ -128,38 +128,40 @@ block content | . .big-spacer - img.gif-block.img-center.img-responsive(src='https://www.evernote.com/l/AnuMiYJUMhFOzqKu2bAjL88LIrCiuHr998sB/image.png' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://www.evernote.com/l/AnuMiYJUMhFOzqKu2bAjL88LIrCiuHr998sB/image.png' alt='a gif showing how to install this') p.large-p.gif-caption a(href='https://github.com/FreeCodeCamp/freecodecamp/wiki/List-of-Free-Code-Camp-city-based-Campsites' target='_blank') Go back to our list of Campsites  | and click "Gitter" to join your city's chat room. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/add-linkedin.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/add-linkedin.gif' alt='a gif showing how to install this') p.large-p.gif-caption You can  a(href='https://www.linkedin.com/profile/edit-education?school=Free+Code+Camp' target='_blank') add Free Code Camp to your LinkedIn education background | . Set your graduation date as next year. For "Degree", type "Full Stack Web Development". For "Field of study", type "Computer Software Engineering". Then click "Save Changes". .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/6VtsD1K.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/6VtsD1K.jpg' alt='a gif showing how to install this') p.large-p.gif-caption Let's cover one last thing before you start working through our challenges: how to get help. Any time you get stuck or don't know what to do next: RSAP (Read, Search, Ask, Post). .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/99BfAcK.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/99BfAcK.jpg' alt='a gif showing how to install this') p.large-p.gif-caption First, R - Read the documentation or error message. A key skill that good coders have is the ability to interpret and then follow instructions. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/google-search.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/google-search.gif' alt='a gif showing how to install this') p.large-p.gif-caption If that didn't help, S - Search Google. Good Google queries take a lot of practice. When you search Google, you usually want to include the language or framework you're using. You also want to limit the results to a recent period. .big-spacer - img.gif-block.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/ask-for-help.gif' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='https://s3.amazonaws.com/freecodecamp/ask-for-help.gif' alt='a gif showing how to install this') p.large-p.gif-caption If that didn't help, A - Ask your friends. If you have trouble, you can ask your fellow campers in our  a(href='https://gitter.im/FreeCodeCamp/Help' target='_blank') help chat room | . .big-spacer - img.gif-block.img-center.img-responsive(src='http://i.imgur.com/rWeBOhF.jpg' alt='a gif showing how to install this') + img.gif-block.img-center.img-responsive.thumbnail(src='http://i.imgur.com/rWeBOhF.jpg' alt='a gif showing how to install this') p.large-p.gif-caption Finally if you still haven't found an answer to your question, P - Post on Stack Overflow. This is a popular question and answer site where you can get help with coding questions. + .big-spacer h2.text-center Nicely done. Now you have all the tools you need to succeed. Happy coding! + .spacer a.btn.btn-cta.signup-btn.btn-block(href="/map") Take me to my Challenge Map