Let's code a neural network in plain JavaScript Part 1

Поділитися
Вставка
  • Опубліковано 3 жов 2024

КОМЕНТАРІ • 196

  • @thomaslinssen1426
    @thomaslinssen1426 6 років тому +40

    Damn, im learning how to make an AI by Tony Stark himself.

    • @JKCD
      @JKCD 3 роки тому

      Underrated comment 😂lol

  • @sandman7155
    @sandman7155 5 років тому +31

    Says 'No libraries. beginner mindset, etc'
    First line of code: R = require('ramda')

  • @mserrano
    @mserrano 6 років тому +5

    Can’t wait for the “build your own Skynet” episode!

  • @Bhuvaneshbabu0712
    @Bhuvaneshbabu0712 6 років тому +26

    Observable makes it kinda hard to follow along on.

    • @funfunfunction
      @funfunfunction  6 років тому +2

      How so?

    • @Bhuvaneshbabu0712
      @Bhuvaneshbabu0712 6 років тому +1

      Probably the way of writing bottom to up instead of top to bottom. I think I might get used to it eventually.

    • @Bhuvaneshbabu0712
      @Bhuvaneshbabu0712 6 років тому +1

      And thanks a lot for the wonderful video.

    • @re8nifle
      @re8nifle 3 роки тому

      Really dig your profile pic my dude.

  • @DivjotSingh
    @DivjotSingh 6 років тому +43

    I love your videos. Even though they're longer and usually with less content per minutes, the very human nature of your videos makes the concept much more easy to grasp and is remembered for long. It's like we're sitting in a cafe and having a legit conversation about stuff to do with a keyboard and a screen. 💜

    • @funfunfunction
      @funfunfunction  6 років тому +8

      Thank you for noticing this! The human aspect of it is very much intentional and I don't spend a lot of time trying to condense the subject, as there are so many videos doing that already. We're taking it slow instead and talking through how it feels and muse about it here. :)

    • @Eoliann
      @Eoliann 6 років тому

      Definitely LOVE that too

    • @kalm42
      @kalm42 6 років тому +2

      +1 Because liking this comment doesn’t do enough.

    • @Jemmeh
      @Jemmeh 6 років тому

      I really like this about your videos, I can watch them for hours without getting a headache because of the pacing. :D

    • @smreason
      @smreason 6 років тому

      Divjot Singh up

  • @MistaT44
    @MistaT44 6 років тому

    features should be the word that classifies something and should be distinct and useful. Excellent video once again MPJ!

  • @hatrick3117
    @hatrick3117 6 років тому +27

    that intro will never gets old

    • @robincEPtion
      @robincEPtion 6 років тому +1

      absolutely! Never thought to skip forward

  • @Harshavardhan-gd4eu
    @Harshavardhan-gd4eu 6 років тому +1

    I was waiting for this MPJ :) . Becoz of you i started learning JavaScript and now Machine Learning :)

  • @thorleach6988
    @thorleach6988 2 роки тому

    Lol! Such a true and honest moment at 14:00 minutes. Made even funnier by the fact that I was just thinking exactly the same thing 🙂

  • @cintron3d
    @cintron3d 6 років тому

    Loving this! Can't wait for Monday!

  • @exxzxxe
    @exxzxxe 4 роки тому

    My god- I stumbled into the Barnum and Bailey clown circus!

  • @thomashoffmann9349
    @thomashoffmann9349 6 років тому +1

    That feeling when you finally catch up to the latest episode and have to wait a whole week for the next one :(

  • @mengyangchen8563
    @mengyangchen8563 6 років тому

    Some of my colleagues hate Machine Learning and Neural network, they are frontend developers, but I feel that's the most interesting thing now, javascript developers now have the chance to get on the train since Tensorflow has support written in Javascript, and for Nodejs soon

  • @tom-snively
    @tom-snively 6 років тому

    Awesome. Can't wait for next week.

  • @VladTrishch
    @VladTrishch 6 років тому

    Hey MPJ, you are quite good at explaining the "why" part

  • @unchartedthoughts7527
    @unchartedthoughts7527 5 років тому +1

    Wunderbar!

  • @codeblobsTV
    @codeblobsTV 6 років тому +9

    Hey MPJ great video - just a note that there is native javascript way of creating a "range" like you did here which is not actually a range per se as you change the values so the following code works as well ----> Array(200).fill(0).map(_ => rand(-1, 1))

    • @funfunfunction
      @funfunfunction  6 років тому +1

      Nice!!!

    • @dimitarmarinov3584
      @dimitarmarinov3584 6 років тому

      Yes you are right, when you just need something for the map to enumerate on this would also work: [...Array(200)].map( _ => rand(-1, 1))

    • @codeblobsTV
      @codeblobsTV 6 років тому

      yeah thats even better :)

    • @blackbird9854
      @blackbird9854 6 років тому

      Well theres even better way...
      Array.from({length: 200}, () => rand(0,400))
      And there are milion more ways you can do that ;p

    • @grafgrantula6100
      @grafgrantula6100 6 років тому

      @@blackbird9854 Your way is a more obscure to me than codeblobTV's, because I have to know that Array.from uses the length attribute of the object literal. It's interesting though, thanks for sharing!

  • @bruhmode283
    @bruhmode283 4 роки тому +1

    how do you create ai that is based off a api and takes action based on the api and the variables or functions you set BTW im new to javascript kindof i know it but i lost all my knowledge on it. and really am trying to create a really awesome program.

  • @Saiphes
    @Saiphes 6 років тому +4

    Great energy! I really think you have the ratio right: Two Funs for every Function.

  • @lithiumyacht
    @lithiumyacht 6 років тому

    Awesome video - love observable - and what you have done on this. please do more machine learning stuff

  • @volimsir
    @volimsir 6 років тому

    I was just thinking about getting into this. You read my mind!

  • @zyst6
    @zyst6 6 років тому

    Thanks MPJ I'm really looking forward to next week!
    I would love to see a video (series?) on SVG at some point! It's one of those things I've been telling myself I'd learn for the last two years or so, and I have never gotten around to actually doing it!
    Or is there a particular resource in particular you could point to which you would recommend?
    Thanks again! Have a great day.

    • @funfunfunction
      @funfunfunction  6 років тому +1

      Honestly, I just started using it, it's so simple that it doesn't really need much reading unless you're doing very complicated things.
      developer.mozilla.org/en-US/docs/Web/SVG

    • @zyst6
      @zyst6 6 років тому

      Thanks! I'll check it out.

  • @mathgag555
    @mathgag555 6 років тому +1

    11:31 "[...] there! ... and then it didn't work, at all, it not whatsover, shit!"

  • @shpleemcgert
    @shpleemcgert Рік тому +1

    What a shame to discover your channel so long after you have left UA-cam. Your approach to teaching is one of the best I’ve seen in all my years as a student.

  • @darshanmehta7057
    @darshanmehta7057 Рік тому

    Great job mpj .
    By the way you look more like rdj (Robert Downey Jr.) 's Tony stark

  • @OscarRieken
    @OscarRieken 6 років тому +1

    I think you would be able to create the same type of collection with
    ```
    Array.from({ length: 100}, _ => ({ x: rand(-1,1), y: rand(-1,1) }));
    ```

  • @rborissov
    @rborissov 6 років тому +1

    Hello MPJ,
    What do you think about Pattern Matching?
    Is it good idea?
    Great videos!

  • @JordanShackelford
    @JordanShackelford 6 років тому +1

    I am using a neural network for a problem which requires that I get 3 outputs (x, y, and z coordinates) instead of 1 output and they should be actual coordinates in the range of 0 to 5000 for example, rather than a probability value between 0 and 1. Any ideas on how I could implement this?

  • @falconmick
    @falconmick 6 років тому +30

    Are you looking forward to the “not using a js framework? Well then why rambda” questions?

    • @funfunfunction
      @funfunfunction  6 років тому +18

      Yeah, programming tends to attract people that a very literal and have a hard time interpreting intent from what is expressed. :)
      To be incredibly, overly clear, for people that cannot do this: I meant that we're not going to use machine learning libraries like tensorflow, or math libraries. I don't think it would add anything to the video if we wrote a range function.

    • @falconmick
      @falconmick 6 років тому +4

      Fun Fun Function I dno! Ranges and random numbers sound pretty mathy to me. Watch out the fun fun fun police are on their way!

    • @funfunfunction
      @funfunfunction  6 років тому +1

      Good point, I'll keep that in mind!

    • @NilsWesthoff
      @NilsWesthoff 6 років тому +1

      It was a little weird because you JUST stated you wouldn't use libraries, but I agree with your sentiment otherwise. Everybody understands what the random functions do, so it doesn't obscure the logic of the actual neural network.

    • @falconmick
      @falconmick 6 років тому

      Nils Westhoff NPM is javascripts standard library in a way.

  • @IsfhanAhmed
    @IsfhanAhmed 6 років тому +4

    Observable make hard to understand

  • @JurajPecháč
    @JurajPecháč 6 років тому

    My comment to video ua-cam.com/video/Bc8UC_m7M_Y/v-deo.html
    :You can use javascript observables instead of console ( similar to jupyter notebook).

  • @sarahyiskah3147
    @sarahyiskah3147 6 років тому +1

    Can you do a tutorial on making a simple app using the spotify api and react-native please? I've been trying to figure out how to use them together for a while but I can't find any tutorial for this...

  • @AbhishekKumar-mq1tt
    @AbhishekKumar-mq1tt 6 років тому

    Thank u for this awesome video

  • @theja63
    @theja63 6 років тому

    Christoph Waltz!!! Is that you?

  • @manualvarado2212
    @manualvarado2212 6 років тому +2

    Where do the rand function came from? ): I get an error when trying to use it and it does not seem to come from the ramda library.
    Observable is quite cool by the way!

    • @funfunfunction
      @funfunfunction  6 років тому +1

      I paste it in at one point in the video - you can find it in the observable notebook. It was written by an audience member during the Twitch stream of this video.

    • @ZahidIrfan
      @ZahidIrfan 6 років тому

      Its Math.rand() function being used not from ramda library. Also the rand function is written by him which takes high and low and returns a random number between those limits.

    • @manualvarado2212
      @manualvarado2212 6 років тому

      Thank you MPJ and Zahid!
      I tried to implement my own, but i am not used to Observable so i did it wrong hahaha. I will do it again later.

    • @manualvarado2212
      @manualvarado2212 6 років тому

      Could you please tell me if this is a good implementation of that function?
      const rand = (start, end) => {
      const decision = Math.random();
      if (decision

  • @mayankbhaisora2699
    @mayankbhaisora2699 3 роки тому

    Can you please make a neural network in plain JS not using observable?

  • @estranhokonsta
    @estranhokonsta 6 років тому +3

    Nice topic. I hope you give us more of your journey.
    As for intuition and since, in this example, you are doing Logistic Regression (a straight line), I would like to give my two cents. You could consider explaining the concept in this manner or another approximation to it (I have not seen the future videos, but I think it is similar to your approach and I hope it help someone in any way):
    • There is 2 kind of Points (blue and red) in the 2d plain and one want to divide/classify them with a line. How can we achieve that? First let us consider how one can construct a line.
    • A simplified definition: a line is defined by a Slope and a Height. So we end with just two variables to discover. (Spooky math. Do not look at it: Slope * x + Height)
    • We will call the Slope as an Weight (w) and the Height as a Bias (b)
    • A Neuron (in this simplified case) has two algorithms. First the Forward Propagation, where one try a random line (random Weight and Bias) and compare it to a Point with a rule: is the Point red or blue and is the Point above or below the line.
    • This comparison will help us create a Loss value. A normal Loss function in this case (many others can be used) is simply a binary (not binary in a strict mathematical or computing definition) yes or no (1, 0) case (i.e. is it wrong?). The sum of the Loss for each Points will be called Cost (divided by the number of points tried by the neuron).
    • The second algorithm is called Back Propagation (Gradient Descent in this case) and is simply an iterative process where one will try step by step to minimize the Loss by adding or subtracting some values/gradients (math: a derivatives) to the Weight and the Bias.
    • In more general terms (just an approximate intuition in multi layers neural networks), one can see the process of a neural network as an iterative algorithm to construct multi-dimensions surfaces (manifolds) that divide the space in regions, so that the ‘Points’ in each regions have distinct characteristics.
    • One very important concept not mentioned in the above intuition is the Activation function. They are a way of adding non-linearity (curves and complexity) to the construction of the surface because just adding ‘lines’ to each other will only give ‘lines’ as a result.
    • The idea is that each neurons in a multi layers neural network will help construct this surface with a little more of a certain ‘curve’ form each other.
    These definitions and intuitions are not to be taken too seriously. For that, the only way is passing by the different theories and math. This field is in a constant evolution and grows.
    One point to consider: why are the matrixes (with libraries such as NumPy in Python) used instead of arrays? Mainly because of the possibility of exploiting the power of parallel computing of the CPU or the GPU which give tremendous performance gains.

    • @yngve1993
      @yngve1993 6 років тому +1

      Great comment, I only have one nitpick, which is that Numpy does not use any parallelism (or rather it only uses one CPU core). The reason for its efficiency is solely from minimising cashe misses and using SIMD (Single instruction multiple data optimisation). This will, however, still give you an immense speedup in comparison with a naive implementation.

    • @estranhokonsta
      @estranhokonsta 6 років тому

      Thanks for the reply.
      Re-reading my comment, i have also many nitpick on it and some of them more than nitpick :)
      But i will leave them for other people to contribute if they wish. It seem, to me, as more interesting, than editing the original comment.
      As for Numpy and the 'parallel computing', it does gives a wrong image of multi-threading and more. What i was aiming at, was the SIMD part that you mentioned and its vectorization power. Vectorization can be considered as parallel processing by the CPU. Much more could be said about Numpy but, i consider myself just as a layman on it...

  • @re8nifle
    @re8nifle 3 роки тому

    Beginning of the video: "no libraries".... 6 minutes later, the first line of code: require('ramda') .......

  • @bjornkihlberg2103
    @bjornkihlberg2103 6 років тому

    Neural network in F#:
    let neuron (f: float -> float) xs (b::ws) =
    List.map2 (*) ws xs |> List.fold (+) b |> f
    let layer f = List.map

  • @marcocastellano2451
    @marcocastellano2451 5 років тому

    rambda is cool, but it isn´t needed.
    const rndPoints = new Array(100).fill(Point(Math.random(-1), Math.random(1)))
    works just fine :D

  • @navroze92
    @navroze92 6 років тому

    Yes Yes. ML lets do it. I believe you are the only person who can teach ML in a interesting way. I don't know why I am so excited but lets do it!!!! Also I believe you can collaborate with Dave since he is a proper engineer and must be knowing a shit ton of Maths. Also I would like to know if you would be diving into ML with Maths and Stats in the future

  • @lilbahr
    @lilbahr 6 років тому +1

    An idea for some episodes: Take some product with source code and break it apart by going through it. It can even take forever to go through, I would watch it just for fun, how you do it.

  • @slugger777
    @slugger777 6 років тому

    How does literate programming sound with ramda. We have been using this quite a lot and it's been great for reading code almost like sentences.

  • @MichielVermandel
    @MichielVermandel Рік тому

    Can you / someone please explain why the guess() function calculates the sum as it does? How do you get to that formula? Is there some rule to create such function?

  • @Xy-gx8ou
    @Xy-gx8ou 6 років тому +1

    You know Daniel Shiffman? Subbed.

  • @michaeladams4999
    @michaeladams4999 5 років тому

    where are you writing the html svg and declaring x_max and y_max? do we initializing x_max and y_max in the neural network file? this weird text editor is too new for me. Why is the radius the only thing displaying in chrome when trying to load html in chrome

  • @pascovicidinmoscova
    @pascovicidinmoscova 5 років тому

    This is fucking great
    A lot of us (or at least our kids, if we decide to have them) will be doing these kinds of things, we all have to start somehow

  • @dmh20002
    @dmh20002 6 років тому

    I had just learned what a tagged template literal is right before seeing you use it with the html function. Coincidence? I think not.

  • @chrisdel1483
    @chrisdel1483 3 роки тому

    I'm not using observable. What is rand? That doesn't work for me. It's undefined.

  • @johnjelatis2033
    @johnjelatis2033 5 років тому +1

    Just ran into this series and shared with a friend or seven- best one I have seen, simple enough and no libraries are absolutely required, plus easily portable to languages like C because generating an array is easy to do (still don't understand why you used that require though, I followed along with a for loop and it was just as easy).
    Thanks for making this, I have subbed now :D
    --
    Will edit typos because phones auto-carrot is a pain to deal with, sorry about that

    • @johnjelatis2033
      @johnjelatis2033 5 років тому

      john-jelatis.github.io/Neural-Names/
      Thanks for this tutorial! Can’t thank you enough for explaining it enough for me to understand!
      My implementation would probably need a bit more training data, but it works seemingly well right now so :D

  • @kensyjolicoeur
    @kensyjolicoeur 2 роки тому

    who is here for the first time 🤣🤣🤣🤣, i enjoy this intro so much

  • @chickenzwings
    @chickenzwings 6 років тому +1

    This is going to be a great series! This has always been a topic that terrifies me but I think i'll give it a go now that I have you and Dan holding my hand through it!

  • @esplanode1027
    @esplanode1027 6 років тому

    iterations iterations iterations loop it +_+_+_+bayes systems

  • @esplanode1027
    @esplanode1027 6 років тому

    how many paper towels did it take to clean up the coffee

  • @shubhamkamble68
    @shubhamkamble68 6 років тому +1

    You look like Tony stark

  • @coreywilson353
    @coreywilson353 3 роки тому

    finally someone who dosnt use libraries

  • @nickmarks6693
    @nickmarks6693 6 років тому

    I think you are great man

  • @KnThSelf2ThSelfBTrue
    @KnThSelf2ThSelfBTrue 6 років тому

    I think one improvement you could make is the way you refer to classical coding versus machine learning coding. The way you talk about it here, it's like you're claiming that machine learning is not code, when truly it is. I think a more clear and precise distinction would be defining a function with a classic coding, versus approximating a classic custom function with ML coding.

  • @samsteele5139
    @samsteele5139 6 років тому

    I've done this whole software development thing completely backwards. Nailed the machine learning early on at university now battling to figure out how websites work every day ._.

  • @Gol_D_Roger_The_Pirate_King
    @Gol_D_Roger_The_Pirate_King 6 років тому

    I love how MPJ try to reason out how to build your own Nueral Network from scratch. TO really understand thing you must build them by yourself. There are some pitfalls but you can learn from it.

  • @Djzaamir
    @Djzaamir 6 років тому

    yes yes yes, Neural Networks In JS

  • @FPChris
    @FPChris 2 роки тому

    How many parts?

  • @slimhmidi6398
    @slimhmidi6398 6 років тому

    Very interesting video . What do you think about realizing graph application exercice?

  • @mathgag555
    @mathgag555 6 років тому

    Observable HQ seems to be a LOT useful for that kind of work, it reminds me of Jupyter Notebook (for Python) and RStudio (for R) that I used in the past. Really useful to see your data and charts at the tip of the hand :)

  • @calebprenger3928
    @calebprenger3928 6 років тому

    I'm curious, Why would you use ramda instead of something like...I dunno. Math.random()?

    • @funfunfunction
      @funfunfunction  6 років тому

      Huh? We’re not using Ramda to replace Math.random in the video?

    • @calebprenger3928
      @calebprenger3928 6 років тому

      Sorry I misunderstood video.

  • @SublimeSimplicity
    @SublimeSimplicity 6 років тому

    If anything happens to MPJ this week, it's because the would-be creator of skynet learns AI from part 2 of this series.

  • @Ram-jt1ky
    @Ram-jt1ky 5 років тому

    you look like Tony Stark

  • @koukiadem
    @koukiadem 6 років тому

    you got a new follower

  • @foundev
    @foundev 4 роки тому

    so its not plain javascript

  • @CodingByMyself
    @CodingByMyself 4 роки тому

    This is MPJ with much POWER and motivation! Damn good! :) Im watching at the end of 2019 and im watching it with smile on my face.

  • @maxvlaarhoven
    @maxvlaarhoven 6 років тому

    Hey! I am an AI student, and I find your explanation really good! Like how you visualize the weigths to a brain state! Great metaphor! Neural networks are so interesting!

  • @renecouture3719
    @renecouture3719 6 років тому

    Remember to add mini-batching to the training function. The training examples have to be randomly mixed up and re-used many times.

  • @dimitricharles9784
    @dimitricharles9784 6 років тому

    Glad I am not the only one procrastinating about ML

  • @DanielRamBeats
    @DanielRamBeats 6 років тому

    awesome I coded along the first part. Really great explanations. I've been studying math -> calc, lin algebra, geometry along with learning neuroscience to understand machine learning and I was missing this block that is like a bridge in terms of bringing them together!
    I noticed when you mentioned the guess function which uses the weights and being able to guess how wrong it was and then nudging itself slightly closer to the right value, this can be called to 'learning rate' or perhaps the 'gradient descent', or at least I think that is what it refers to? A larger learning rate will still end up wrong and a smaller learning rate will require the neural net significant amount of time before it is accurate, but a learning rate that itself is progressively and dynamically adjusting its weights can then set a 'state' of the brain that knows more accurately how to predict the data, at least I think so?
    I agree with you that the terms and the math language used to describe all this... it is very challenging because they are truly within their own domains of understanding and web development is often separate from them. Unless it's within your own neural network of understanding the terms of knowledge of the topics, the hurdle to learn ML practically can be incredibly difficult. I think the way you have approached it, is perfect and very helpful!

  • @ninojovic
    @ninojovic 6 років тому

    I've been following both you and Shiffman for years now, this feels like favorite TV shows crossover...

  • @MudassirZulfiqar
    @MudassirZulfiqar 6 років тому

    I love the way you teach us problems. Very nice idea. Please continue this new series

  • @wcdeich4
    @wcdeich4 Рік тому

    Is there a github repo for this little silly example?

  • @IgorHaraSerafim
    @IgorHaraSerafim 6 років тому

    MPJ Do you have any Brazilian ancestry?

  • @sinyolinuxozy
    @sinyolinuxozy 6 років тому

    thank you MPJ :), i owe you big
    then let me pay it by dedicating myself on learning more javascript.
    Thanks sir

  • @durchschnittlich
    @durchschnittlich 6 років тому

    The first minutes of this video were really motivating. It's uplifting to hear that a former Spotify dev doesn't know much about all the mathy things I thought will be essential for a university degree in software engineering

  • @lithiumyacht
    @lithiumyacht 6 років тому

    @mpj didn't see the link to the observable ??

  • @aronkoffler
    @aronkoffler 6 років тому

    Hell yeah, the very best channels I've ever watched. Yours and shiffmans!

  • @patrickstival6179
    @patrickstival6179 6 років тому

    I find this is familiar and intuitive. Please continue the series

  • @zanzibarmystic
    @zanzibarmystic 6 років тому

    When did Guy Fieri learn to code?

  • @GameFunHQ
    @GameFunHQ 6 років тому

    The intro alone deserves a thumbs up

  • @JackBrunsion
    @JackBrunsion 6 років тому

    Whoaaaaaaaaa...

  • @andriann-rak
    @andriann-rak 5 років тому

    I see Tony Stark in your face, dude

  • @tiennes2403
    @tiennes2403 6 років тому

    such a cliffhanger now I have to wait a whole week. buhuhuh

  • @PierreSoubourou
    @PierreSoubourou 6 років тому

    Shifmann does great zooming everything, please think of people watching on their phones

    • @funfunfunction
      @funfunfunction  6 років тому

      Zooming is an interesting idea, I'll see what I can do.

  • @ryuhaneda
    @ryuhaneda 6 років тому

    You, sir, rock. Thank you for posting this!

  • @francispires
    @francispires 6 років тому

    i love it, please continue this subject!

  • @francojohnc
    @francojohnc 2 роки тому

    how to make AI by johnny depp

  • @RocketLR
    @RocketLR 6 років тому

    Pretty cool but is there a dark mode on that site? Its so damn white and bright I cant tell if im dying and seeing heaven or my eye sockets are getting fried xD

    • @funfunfunction
      @funfunfunction  6 років тому

      Programmers seem to have some interesting belief that dictates that white background is harmful for the eyes, which contradicts all research on the subject, which pretty consistently concludes that black text on white background is the least straining on the eyes. It seems to be very specific to programmers, I've never heard a writer say this, for example, and I'm fascinated as to why. What does your workspace look like? Is it well lit? Also, do you wear prescription eyeglasses/contacts? If so, is the prescription recent?

    • @RocketLR
      @RocketLR 6 років тому

      Fun Fun Function I have no idea how the brightness affects overall health of the eyes. I just have a hard time looking at super white screens. Unless it's reaaaally bright around me.
      At work and home I have everything dark mode, EEVVEERYYTHING xD

  • @blasttrash
    @blasttrash 5 років тому

    the real stuff starts at 6:21

  • @NyaowYeon
    @NyaowYeon 6 років тому

    Excited for the next episode!

  • @rockywright4237
    @rockywright4237 6 років тому

    what is the weird html?

    • @funfunfunction
      @funfunfunction  6 років тому +1

      Its just normal html. Perhaps you’re new to JavaScript template literals?

    • @rockywright4237
      @rockywright4237 6 років тому

      I am. That's pretty cool

  • @ganeshumashankar
    @ganeshumashankar 6 років тому +3

    great video. so, when are getting started with Skynet?

  • @loyaldoge7948
    @loyaldoge7948 5 років тому

    10/10 intro

  • @Gingercats69
    @Gingercats69 6 років тому

    starts at 6:10