These are chat archives for FreeCodeCamp/HelpJavaScript

10th
Jan 2018
Dan Couper
@DanCouper
Jan 10 2018 00:10
Umm sort of, you have to manually traverse the DOM to get them. Node type is 8, you'd be searching for that to grab them.
You use that API, eg create a node iterator then run over it looking for nodes with a type of 8
Ah shit forget that I didn't read up the thread far enough
Thought you meant html comments not your comments sorry
Dan Couper
@DanCouper
Jan 10 2018 00:15
Put a reference somewhere you can access later like an array/map/object where you push the comment IDs and whatever else you need then use that to grab em I guess is easiest
Nick Cleary
@Hijerboa
Jan 10 2018 00:19
I'm currently working on my TicTacToe project, and for some reason, a function which is passed an array does not seem to be able to modify it. For instance if I call TicTa(myArray); and tell it to change some value in that array, it doesn't throw any sort of error, just literally does not change that item in the array. At all. Any ideas?
Jason Luboff
@JLuboff
Jan 10 2018 00:24
@Hijerboa Show the code?
Its the last section of the JS that's calling the function in question
Jason Luboff
@JLuboff
Jan 10 2018 00:29

This function?

function findBestMove(board) {
    bestVal = -1000;
    bestMoveRow = -1;
    bestMoveCol = -1;
    for (var i = 0; i < 3; i++) {
        for (var j = 0; j < 3; j++) {
            if (board[i][j] == "-") {
                if (classType == "j") {
                    board[i][j] = "h";
                } else if (classType == "h") {
                    board[i][j] = "j";
                }
                moveVal = minMax(board, 0, false);
                board[i][j] = "-";
                if (moveVal > bestVal) {
                    bestMoveRow = i;
                    bestMoveCol = j;
                    bestVal = moveVal;
                }
            }
        }
    }
    bestMove[0] = bestMoveRow;
    bestMove[1] = bestMoveCol;
    return bestMove;
}

Where board is passed in via findBestMove(gridder)?

Nick Cleary
@Hijerboa
Jan 10 2018 00:33
@JLuboff yep
for some reason the board is not being modified at any point, which means the program overall doesn't work :/
Jason Luboff
@JLuboff
Jan 10 2018 00:36
Part of the problem is classType is undefined
Nick Cleary
@Hijerboa
Jan 10 2018 00:37
shoot. Forgot I changed that on my local machine but not on codepen. That was my initial thought too, but its not the issue
Jason Luboff
@JLuboff
Jan 10 2018 00:38
From what I'm looking at... the only part of the board that would change would be where the element is a - but in the current context, it will just be set back to itself?
Nick Cleary
@Hijerboa
Jan 10 2018 00:38
That is true, but I've noticed by printing out the board every time the function is called recursively that the board never changes.
It should change, then revert itself later
Jason Luboff
@JLuboff
Jan 10 2018 00:42
Eh.. I'm not too sure then. Too much code for me to go through right now :D
Nick Cleary
@Hijerboa
Jan 10 2018 00:44
@JLuboff haha i understand. Thanks for trying though mate! :)
CamperBot
@camperbot
Jan 10 2018 00:44
hijerboa sends brownie points to @jluboff :sparkles: :thumbsup: :sparkles:
:star2: 2290 | @jluboff |http://www.freecodecamp.org/jluboff
Stephen James
@sjames1958gm
Jan 10 2018 01:22
@Hijerboa So why do you think the array is not changing?
FlashHero
@FlashHero
Jan 10 2018 01:23
Is it possible to disable a div element for the user but enable for the computer to modify it
Brad
@bradtaniguchi
Jan 10 2018 01:24
@FlashHero what do you mean disable a div element?
FlashHero
@FlashHero
Jan 10 2018 01:27
For example the Simon game my strategy is the computer actually clicks on an div which then triggers the blink animation, so when the pattern is repeating I don't want the user click to work, is that possible
Brad
@bradtaniguchi
Jan 10 2018 01:28
Theres a few approaches to handle this, one would be to wrap the click function with a wrapper that only performs the rest of the code if its the computers turn. The click callback function is still called if the user clicks on it, but it wont run any of the important code
FlashHero
@FlashHero
Jan 10 2018 01:30
let me check if i know what you mean
Brad
@bradtaniguchi
Jan 10 2018 01:31
I'd also not make the computer actually click on the div, its uneccessary, you should be able to run the code without actually clicking
FlashHero
@FlashHero
Jan 10 2018 01:34
I didn't want to confuse myself with other stuff, so just keeping it simple when the computer selects random then clicks it and in those div there's a click function which triggers the animation
Brad
@bradtaniguchi
Jan 10 2018 01:34
How do you have the computer "click" exactly?
FlashHero
@FlashHero
Jan 10 2018 01:34
I think i get what you mean, just wrapping the code even the clicks into a function and calling it when necessary thanks
$(element).click();
and element listens for click events
@bradtaniguchi thanks
CamperBot
@camperbot
Jan 10 2018 01:35
flashhero sends brownie points to @bradtaniguchi :sparkles: :thumbsup: :sparkles:
:cookie: 343 | @bradtaniguchi |http://www.freecodecamp.org/bradtaniguchi
Brad
@bradtaniguchi
Jan 10 2018 01:37
Yes exactly, instead of using the .click() function, np :)
Stephen James
@sjames1958gm
Jan 10 2018 01:49
@Hijerboa If you think that the array is not changing due to console.log statements try
console.log(JSON.stringify(board)) rather than console.log(board) because the latter will have a reference to the
board array and will track that array as it is reset back to the original state
Nick Cleary
@Hijerboa
Jan 10 2018 01:55
@sjames1958gm Well, that shows that it is in fact changing
for some reason its not outputting a result, but that solves at least one issue. Thanks mate @sjames1958gm
CamperBot
@camperbot
Jan 10 2018 01:55
hijerboa sends brownie points to @sjames1958gm :sparkles: :thumbsup: :sparkles:
:star2: 8834 | @sjames1958gm |http://www.freecodecamp.org/sjames1958gm
Stephen James
@sjames1958gm
Jan 10 2018 01:56
@Hijerboa You maxMin function doesn't return a value after the first three returns? The recursive calls are not passed back up the recursion chain
Nick Cleary
@Hijerboa
Jan 10 2018 02:02
@sjames1958gm what do you mean?
Stephen James
@sjames1958gm
Jan 10 2018 02:02
@Hijerboa You don't return the best value that you calculate
best = Math.max(best, minMax(board, depth++, !isMax)); since you don't return a value minMax will be undefined
Nick Cleary
@Hijerboa
Jan 10 2018 02:07
@sjames1958gm You are correct... I think I implemented that when I was working on the algorithm but wasn't sure about how it would precissely
the variable best is irrelevent
Stephen James
@sjames1958gm
Jan 10 2018 02:08
@Hijerboa So when you hit a point where there is a win or loss you pass back a value, but that value never gets passed back further so you never
end up with a value in the find best move function - it is always undefined
Nick Cleary
@Hijerboa
Jan 10 2018 02:09
oooohhhh
I feel like a bloody moron -_-
Stephen James
@sjames1958gm
Jan 10 2018 02:22
@Hijerboa Programming will do that to you. I call myself dumbass as least once a week for some stupid mistake
Nick Cleary
@Hijerboa
Jan 10 2018 02:42
@sjames1958gm change that to three times an hour and you and I are one and the same :P
shivam gupta
@shivamg11000
Jan 10 2018 04:23
can someone tell me why this weird thing is happening in the background
Peek 2018-01-10 09-48.gif
Idowu Wasiu
@Hoxtygen
Jan 10 2018 04:24
hello, anybody home?
Ken Haduch
@khaduch
Jan 10 2018 04:31
@shivamg11000 - what weird thing in the background? I only the the lines transforming to an "X" and back when I click on them? I don't see what appears to be on the image that you posted with a rectangle popping up, at least I don't see it in my browser window? What browser are you using?
shivam gupta
@shivamg11000
Jan 10 2018 04:32
@khaduch see the gif
chrome
Ken Haduch
@khaduch
Jan 10 2018 04:32
I'm running it on Opera on windows. Let me see what it looks like in Chrome...
Idowu Wasiu
@Hoxtygen
Jan 10 2018 04:32
how to overcome CORS?
shivam gupta
@shivamg11000
Jan 10 2018 04:33
@Hoxtygen I think use jsonp
Idowu Wasiu
@Hoxtygen
Jan 10 2018 04:34
@shivamg11000 care to explain how to use that in vanilla js?
Ken Haduch
@khaduch
Jan 10 2018 04:36
@shivamg11000 - I just ran it on Chrome (Windows, again) - I do not see the "mysterious" background activity?
shivam gupta
@shivamg11000
Jan 10 2018 04:36
@Hoxtygen add ?callback=? at then end of your url used
@khaduch its happening for me as you can see in the gif
Ken Haduch
@khaduch
Jan 10 2018 04:37
@shivamg11000 - yes, I see it in the GIF, but I do not see it in my browser, either Opera or Chrome?
shivam gupta
@shivamg11000
Jan 10 2018 04:37
@khaduch its hapenning in chrome only, not firefox
Ken Haduch
@khaduch
Jan 10 2018 04:38
it is strange... but I do not see it at all, in Chrome or Opera
shivam gupta
@shivamg11000
Jan 10 2018 04:38
strange indeed
shivam gupta
@shivamg11000
Jan 10 2018 04:39
@Hoxtygen yes
Idowu Wasiu
@Hoxtygen
Jan 10 2018 04:39
@shivamg11000 didnt work, problem persists
shivam gupta
@shivamg11000
Jan 10 2018 04:40
@Hoxtygen jsonp wont work with your xhr request
use fetch() @Hoxtygen api instead
Ken Haduch
@khaduch
Jan 10 2018 04:40
@shivamg11000 - One thing that I do see in FireFox is that the ends of the lines are not nicely rounded off as they are in Chrome or Opera, they have a curve on the bottom and flat edge on top?
Idowu Wasiu
@Hoxtygen
Jan 10 2018 04:41
@shivamg11000 i'm not using jsonp, thats json up there
@shivamg11000 how do i use the fetch and where do i place it?
shivam gupta
@shivamg11000
Jan 10 2018 04:44
example
fetch(url)
  .then(data => data.json())
  .then(data => console.log(data))
@Hoxtygen
@khaduch I saw that too
Ken Haduch
@khaduch
Jan 10 2018 05:00
@shivamg11000 - well, I'm not seeing the flickering rectangle anywhere that I've looked... so I couldn't even make a guess
Stephen James
@sjames1958gm
Jan 10 2018 10:48
@Hoxtygen With the wiki api you can add the query parameter origin=* and the API will return the correct CORS headers no jsonp needed
Michael Grienauer
@mgrienauer
Jan 10 2018 12:05
I'm on the inventory update challenge and was wondering if it's a good idea to use map to update the array https://forum.freecodecamp.org/t/freecodecamp-algorithm-challenge-guide-inventory-update/16019
or should i just use for loops
Markus Kiili
@Masd925
Jan 10 2018 12:06
@mgrienauer You can use loops or iterators. I found reduce more suitable here.
Michael Grienauer
@mgrienauer
Jan 10 2018 12:08
@Masd925 so reduce or map would work for updating items that already exist, but could I use it to add items that arent in the array?
Markus Kiili
@Masd925
Jan 10 2018 12:09
@mgrienauer Map cannot change the number of elements, so that is why reduce might be better here.
Christopher
@bradley1492
Jan 10 2018 12:10

Hello guys,
is it possible to concat all the arguments of a function together with a for-loop?
Like the args of this example:

function test(args){
  for(var i = 0; i < arguments.length; i++){
    //concat in here
  }
}
test([1,2,3],[2,3,4],[2,5,6]);

Or do I have to use reduce?

Michael Grienauer
@mgrienauer
Jan 10 2018 12:11
@bradley1492 you could use a for loop, but reduce would be more succint
Christopher
@bradley1492
Jan 10 2018 12:11
@mgrienauer thanks but what would be my basic approach in a for loop?
Because I can only think of concatenating two arrays...
CamperBot
@camperbot
Jan 10 2018 12:11
bradley1492 sends brownie points to @mgrienauer :sparkles: :thumbsup: :sparkles:
:cookie: 301 | @mgrienauer |http://www.freecodecamp.org/mgrienauer
Stephen James
@sjames1958gm
Jan 10 2018 12:12
@bradley1492 You'd need to start with an empty array variable outside the loop and concat onto that
Michael Grienauer
@mgrienauer
Jan 10 2018 12:12
@mgrienauer you could make an array from the arguments by using Array.from(arguments)
and then loop through that, concatenating (i + 1)
Stephen James
@sjames1958gm
Jan 10 2018 12:13
   var result = []
   for () {
      result = result.concat(arguments[i]);
    }
Christopher
@bradley1492
Jan 10 2018 12:13
@sjames1958gm oh sure thats good! I'll just create an array. :)
Often answers are too simple to see I think^^, I get too used to think complicated
Markus Kiili
@Masd925
Jan 10 2018 12:14
@bradley1492 There are also JS tricks you can use here:
function test(args){
  return Array.prototype.concat.apply([],arguments);
}
test([1,2,3],[2,3,4],[2,5,6]); // [ 1, 2, 3, 2, 3, 4, 2, 5, 6 ]
Christopher
@bradley1492
Jan 10 2018 12:15
@Masd925 This also converts the arguments into arrays does it? The previous solution doesn't?!
Markus Kiili
@Masd925
Jan 10 2018 12:15
@bradley1492 Both do the same.
Christopher
@bradley1492
Jan 10 2018 12:17
@Masd925 But if I would just create an empty array and concat the arguments to the array, then the placeholder array is an array and not an argument anymore is it? I hope this is clear enough..
Stephen James
@sjames1958gm
Jan 10 2018 12:17
Or even this if you are not into typing Array.prototype
function test(args){
  return [].concat.apply([],arguments);
}
Markus Kiili
@Masd925
Jan 10 2018 12:18
@bradley1492 Both ways use concat that makes a new array from the original(s). Both use an original empty array and the argument arrays.
One concats explicitly and other implicitly under the hood.
Christopher
@bradley1492
Jan 10 2018 12:19
@Masd925 Alright then I don't worry about having arguments for the following operations..
@sjames1958gm Thanks, I have to admit, I would not be able to write something like this, but I will just use it, as it is so short... :)
CamperBot
@camperbot
Jan 10 2018 12:21
bradley1492 sends brownie points to @sjames1958gm :sparkles: :thumbsup: :sparkles:
:star2: 8837 | @sjames1958gm |http://www.freecodecamp.org/sjames1958gm
HumaDeng
@HumaDeng
Jan 10 2018 13:19

function titleCase(str) {

myArr=str.split(" ");
for(var i=0;i<myArr.length;i++){
myArr2=myArr[i].split("");
myArr2[0].toUpperCase();
myArr[i]=myArr2.join("");
}
str=myArr.join(" ");
return str;
}

titleCase("I'm a little tea pot");

The first letter of a sentence is capitalized
why dosen`t it work?
help help
Marianissimus
@Marianissimus
Jan 10 2018 13:25
@HumaDeng You should first define myArr2 somewhere outside the loop, even if it's empty // var myArr2 = [];
then you should reconsider the logic; if you loop through the myArr array, reassign myArr[i] to something else, not myArr2;
Markus Kiili
@Masd925
Jan 10 2018 13:26
@HumaDeng myArr2[0].toUpperCase(); returns a new string that you don't use.
-> myArr2[0]=myArr2[0].toUpperCase();
The inventor of strings (if he/her is dead) would turn in his grave if he saw you fiddling with character arrays.
Marianissimus
@Marianissimus
Jan 10 2018 13:28
@Masd925 he loops through myArr, it makes no sense to reassign myArr2[0] with every loop;
Markus Kiili
@Masd925
Jan 10 2018 13:29
@Marianissimus myArray2 is a new character array in each loop, and that changes the first character.
Code works fine after changing that one line.
@HumaDeng You should declare those variables you use with var.
Christopher
@bradley1492
Jan 10 2018 13:50
Hey I have another question,
https://codepen.io/bradley1492/pen/eyMgpr?editors=0012
does anyone know why the code logs out ["3", "4", "5"] and not [3,4,5]?
Razvan Jackson
@RazvanJackson
Jan 10 2018 13:52
try to parseInt before pushing...
arr.push(parseInt(number));
or whatever you have there..
Christopher
@bradley1492
Jan 10 2018 13:52
@RazvanJackson Alright thanks for the answer
I'll try that
CamperBot
@camperbot
Jan 10 2018 13:52
bradley1492 sends brownie points to @razvanjackson :sparkles: :thumbsup: :sparkles:
:cookie: 279 | @razvanjackson |http://www.freecodecamp.org/razvanjackson
Razvan Jackson
@RazvanJackson
Jan 10 2018 13:52
@bradley1492 Tell me if it's working
Christopher
@bradley1492
Jan 10 2018 13:53
@RazvanJackson jop
Markus Kiili
@Masd925
Jan 10 2018 13:53
@bradley1492 Object property keys are always strings.
Christopher
@bradley1492
Jan 10 2018 13:55
@Masd925 @raana1988 alright so I convert them to ints...
Markus Kiili
@Masd925
Jan 10 2018 13:56
@bradley1492 It would be much easier to just manipulate the array you have, instead of using an object.
Christopher
@bradley1492
Jan 10 2018 14:00
@Masd925 @RazvanJackson Okay thanks for all your tips, unfortunately I have to go now, I'll try it later and then right here :)
CamperBot
@camperbot
Jan 10 2018 14:00
bradley1492 sends brownie points to @masd925 and @razvanjackson :sparkles: :thumbsup: :sparkles:
api offline
:star2: 4645 | @masd925 |http://www.freecodecamp.org/masd925
Jason Luboff
@JLuboff
Jan 10 2018 16:26
:fire: \
Blauelf
@Blauelf
Jan 10 2018 16:28
Is :fire: a drive name? Like c:?
Jason Luboff
@JLuboff
Jan 10 2018 16:30
@Blauelf It is now :P
Blauelf
@Blauelf
Jan 10 2018 16:35
<grandpa_mode>When I was young, computers had floppy drives, sometimes even two, so you could play Civilization (and juggle with its 8 disks of 360kB each) while keeping your operating system in the other drive</grandpa_mode>
Well, I actually had the 4x720kB 3 1/2" version. And hard disk (a little), so I could skip the disk juggling on that one :D
Jason Luboff
@JLuboff
Jan 10 2018 16:40
I started using computers when 3.5" floppies were dominant, never dealt with 5" floppies
Stephen James
@sjames1958gm
Jan 10 2018 16:41
You kids make me chuckle
Blauelf
@Blauelf
Jan 10 2018 16:42
Never experienced U880-based computers (U880 was our Z80 clone, I think they fixed one Z80 bug that made it incompatible in some cases)
@JLuboff It's 5.25", and there were also 8" (those are the only real "floppies", without the 3.5"'s hard case)
Jason Luboff
@JLuboff
Jan 10 2018 16:44
@sjames1958gm Glad we could make you laugh
Kaz Baig
@kbaig
Jan 10 2018 16:44
pfff if you think that's retro, I had to deal with my USBs only being 2 GB in high school
Jason Luboff
@JLuboff
Jan 10 2018 16:45
@kbaig I used zip drives in high school ;)
Kaz Baig
@kbaig
Jan 10 2018 16:46
@JLuboff I had to google what that even is
I'm not even one of those 13 year olds on fCC..
Jason Luboff
@JLuboff
Jan 10 2018 16:46
zip disks/drives were actually pretty cool for the time in comparison to floppies
Stephen James
@sjames1958gm
Jan 10 2018 16:47
When I was in high school I stored my programs on cards and paper tape
Blauelf
@Blauelf
Jan 10 2018 16:47
Oh, I seem to own a Z80-based computer. Inherited my grandpa's TI-83. But don't have a compatible serial port. USB adapters might work.
Kaz Baig
@kbaig
Jan 10 2018 16:47
Your grandpa gave you a calculator??
Blauelf
@Blauelf
Jan 10 2018 16:48
Well, he passed away, and he had many programmable devices. Family of nerds.
Kaz Baig
@kbaig
Jan 10 2018 16:49
Nice to have that in common. My dad was clearly disappointed when I went down the more technical route in my business degree
Blauelf
@Blauelf
Jan 10 2018 16:49
@JLuboff My grandpa owned the only zip drive I've ever seen in real life. Their 100MB was pretty impressive, though.
Stephen James
@sjames1958gm
Jan 10 2018 16:50
I had an HP-16C programmers calculator in college - they sell on eBay for > $200 these days, more than I paid
Blauelf
@Blauelf
Jan 10 2018 16:51
I found the LS-120 more interesting, as it also served as a regular 3,5" floppy drive. But that was even less common.
@sjames1958gm I own an old Microsoft optical mouse, probably not cheap back then (one of the first optical, 5 button mouse). Those, when new, sell for around €160 :D
Jason Luboff
@JLuboff
Jan 10 2018 16:54
@Blauelf My grandpa was the first person I knew to have one, then my school was the only other place to have them that I was aware of
oh and I had the 250 MB zip disk instead of the 100 ;)
Blauelf
@Blauelf
Jan 10 2018 16:58
Our school, when we finally got computer science, had MS-DOS, Windows 3.1, and Thin Ethernet (slightly displace the adapter in one place and the whole network goes down because of signal reflections, you can imagine how long it takes to search for the place). Turbo Pascal. Taught the teacher, as expected.
All our files would go to a 3,5" disk. No such thing as zip drives. Computers were cheap as they were refurbished stuff bought via state contract (in Germany, states are responsible for education, as we had bad experience with central organization).
Blauelf
@Blauelf
Jan 10 2018 17:04
@sjames1958gm Glad there were no punch cards any more, my grandpa used those when he studied physics in the sixties.
HumaDeng
@HumaDeng
Jan 10 2018 19:35
@Masd925 :+1:
Diego Mayer
@Chrono79
Jan 10 2018 21:34
@JLuboff @Blauelf in highschool we still used 5"1/4 floppy disks and one day the teacher gave me mine (where I stored the class work) bent in half, so lucky you
Kaz Baig
@kbaig
Jan 10 2018 21:36
Oh yeah well in college we used to store things by singing them to each other in order to memorize them
Jason Luboff
@JLuboff
Jan 10 2018 21:42
@Chrono79 Lol. "I couldn't access your class work..not sure why"
Diego Mayer
@Chrono79
Jan 10 2018 21:43
@JLuboff I kept looking at him like wtf? Should I iron it and try to see if it works?
Obviously I said I did all the work and he couldn't say otherwise (actually he didn't care at all)
Jason Luboff
@JLuboff
Jan 10 2018 21:44
I'd be pretty pissed
Diego Mayer
@Chrono79
Jan 10 2018 21:44
I was, but it was some stupid work with Lotus 1-2-3
Jason Luboff
@JLuboff
Jan 10 2018 21:47
I think the only Lotus product I ever dealt with was their email program and I didn't really use it, just saw it used lol
Diego Mayer
@Chrono79
Jan 10 2018 21:49
I wish I have one of these ;)
Jason Luboff
@JLuboff
Jan 10 2018 21:51
Too bad they axed all the new models. I think it was 5 or 6 years ago they had 4-5 new models in the pipe work. Was taking the concepts to car shows and what not then just said Nope! And haven't released anything new (besides reworked current models if I remember correctly)
Idowu Wasiu
@Hoxtygen
Jan 10 2018 22:24
anybody home?
I'm trying to get the textt in a searchbox using js but it's not working. below is my code
<form id="searchForm" action="www.wikipedia.org/search-redirect.php" class="search-container">
                    <div class="input-container">
                        <input type="text" name="search" value="" id="searchBox" placeholder="Input search text" size="20" autofocus="autofocus" autocomplete="on" class="search-box">
                    </div>
                    <div class="button-container">
                        <button type="button" class="btn btn-1" id="searchButton">Search Wiki</button>
                        <a href=" https://en.wikipedia.org/wiki/Special:Random" target="blank" type="button" class="btn">Get A Random Article</a>
                    </div>
                </form>

var searchTerm = document.getElementById("searchBox").value;
Aditya
@ezioda004
Jan 10 2018 22:36
@Hoxtygen The text is empty, that's why you arent't getting any value, using an Event Listener you can get the input text.
Heres the working fiddle
Idowu Wasiu
@Hoxtygen
Jan 10 2018 22:38
@ezioda004 its a searchbox, i actually put something in it in my end. just realised that i cant get the value within the search box
@ezioda004 here's the project i'm working on https://codepen.io/hoxtygen/pen/eyVaoV trying to get the input of the searchbox. will try your code now
Aditya
@ezioda004
Jan 10 2018 22:51
@Hoxtygen I see, like I said when you do window.onload the input is empty so you'll always get an empty string. Adding an event listener is the only option if you want grab the input from user here via input.
Idowu Wasiu
@Hoxtygen
Jan 10 2018 22:54
@ezioda004 oh i see, thanks
CamperBot
@camperbot
Jan 10 2018 22:54
hoxtygen sends brownie points to @ezioda004 :sparkles: :thumbsup: :sparkles:
:cookie: 371 | @ezioda004 |http://www.freecodecamp.org/ezioda004