Joe Javascript's Machine Learning Tutorials project video thumbnail
Replay with sound
Play with
sound
$335
pledged of $0 goal
backers

All or nothing. This project will only be funded if it reaches its goal by .

$335
pledged of $0 goal
backers

All or nothing. This project will only be funded if it reaches its goal by .

About

Machine Learning Tutorials in Pure Javascript:

Lets find and publish as many good Javascript examples of Machine Learning as we can using the Javascript Deep Learning library deeplearnjs.

What is Machine Learning?

Most computer programs make decisions using some form of an "If statement"  If this happens do that else do something different.

if (x == 6) { output something}

else {output some other thing}

Computers have been using "If statements" for a long time and doing some really fancy things. However, recently computers can do something new. A subset of Machine Learning called Deep Learning allows a computer to be given massive amounts of data and from that data learn a human style skill such as playing a game, driving a car, analyzing medical images for signs of cancer, etc, etc. Now with Deep Learning we are just starting to uncover what the computer is really able to do. 

Isn't Deep Learning just for Academics and Data Scientists?

Probably, but I have already used it to generate music of a certain genre and teach the computer to make simple 3D shapes that can then be printed on a 3D printer.

The computer made this shape. So I 3D Printed it.
The computer made this shape. So I 3D Printed it.

Why do this?

The idea for Joe Javascript's Machine Learning Tutorials was born from my own issues with trying to master Machine Learning. Every few months I would have to spend about a week fixing my code in order to have it properly compile with the latest Tensorflow version changes. 

Javascript does not have those same kind of compiler issues. The script tag can call a specific version of deeplearnjs so that the examples will still run long after the code version has changed.

<script src="https://unpkg.com/deeplearn@0.3.2/dist/deeplearn.js"></script> 

Then just switch the script tag to the latest version

<script src="https://unpkg.com/deeplearn"></script>

If the example still runs you know the code is relevant.

For this Kickstarter, I will make a YouTude Video Playlist with a minimum of at least 5 videos to help beginners with Machine Learning working on deeplearnjs a new Javascript library from the Google PAIR program. Along with the video series I will make a Github collection of example programs that will be fully explained in the videos.

The video portion was strongly influenced by this video. My video is not as well made, but has some of the passion for the topic as the original.

Why support me? 

Machine Learning is too important to leave to the specialists, pledging support for me allows the common person's computer language "Javascript" a piece of the Artificial Intelligence pie.

Why such a small Kickstarter goal?

 I really want to do this. Even if only one person is interested in seeing my work, that is enough to complete this project. I also like the "Percent of Goal" data displayed on the main Kickstarter site. When this project does well, I would love to see a high, "Percent of Goal" value for it.

Stretch goal #1: $400 Get a better tripod and some lamps to improve the video stability and lighting. DONE! And thank you to all my backers.

Stretch Goal #2: $400 + $2,200 = $2,600: Travel Allowance. Go visit people who can help with the project .

Stretch Goal #3: $2600 + $2400 = $5000 When working on any big project, I eat and exercise a lot. Lately more eating than exercising :> Seems like a minor issue, but to be worry free about expenses will really help make these tutorials as good as possible.

Why support more than the basic $1 goal?

More money earned will give me more clout to complete the project faster, with higher quality examples, include more people, get more work done and generally make a much better final result to pass on to everyone! Extra funds can help with travel, meeting capable people and getting help to generate much more examples that demonstrate how to use Machine Learning with Javascript

Lets get pledging:

Windows users pledge $1
Windows users pledge $1

 

High School Students pledge $1
High School Students pledge $1

 

 

Web Developers pledge $1
Web Developers pledge $1

 

Javascript Programmers pledge $1
Javascript Programmers pledge $1

 .

.

So enough talk. Lets try it out:

First go to https://deeplearnjs.org/ on your browser (hopefully Chrome or Firefox) and see if you get cool colors that change when you click the Randomize button, meaning your browser works with deeplearnjs.

Deeplearnjs main page should show cool colours if your browser works
Deeplearnjs main page should show cool colours if your browser works

If, however you get this nasty screen (see below) then try another browser. (I had to set hardware acceleration on in the settings for it to work on my version of  the Chrome browser, whereas Firefox worked right away.)

Try a different browser or your mobile phone
Try a different browser or your mobile phone

 

.

Paste this code into your favourite editor (I use notepad) and save with a .html extension (The file type must be set to ALL FILES not .TXT)

------------------------------------ Start Pasting --------------------------------

<script src="https://unpkg.com/deeplearn@0.3.2/dist/deeplearn.js"></script>  

<br>

<input type=button value="Simple Javascript GPU Math Matrix Addition" onclick="{  

 var myMath = new deeplearn.NDArrayMathGPU()  

 var myA = deeplearn.Array1D.new([3.4,5.6,7.8])  

 var myB = deeplearn.Scalar.new(1.2) 

 myMath.scope(function() {  

    var myResult = myMath.add(myA,myB);

    document.getElementById('myDiv01').innerHTML =  

    '<br/>Using deeplearnjs version ' + deeplearn.version +  

    '<br/>The result of GPU Matrix Math [3.4,5.6,7.8] + 1.2 = ' +

    '<br/>[' + myResult.getValues() + ']'  

 })  

}">  

<br/><div id="myDiv01">...</div><br/>

------------------------------------ Stop Pasting --------------------------------

Open the code in your web browser.

After clicking the button you might see something like

 

Your working code might look like this
Your working code might look like this

You did it! You used deeplearnjs to write a beginner matrix math addition problem that used your browsers GPU and is your first step towards creating Machine Learning in the browser using only Javascript.

Well Done. Now go and pledge $1 and tell 2 of your friends about this Kickstarter

In one of the first videos I make, I will explain the code you just used.

.

Make your $1 pledge and go have some fun
Make your $1 pledge and go have some fun

So why do I think I can make this Machine Learning Video Playlist?

I have taught computer programming for almost 30 years, that's a fair bit over 10,000 hours of teaching coding! Like many teachers, I have a very refined ability to reduce complex ideas into much simpler chunks. 

Really, you can do that?

3 years ago, I knew nothing about Robotics but wanted to learn it. I did not want my students entering a set of Robotics competitions but wanted them to actually be able to build internet connected devices. I now have a video series  Particle.io Photon High School Robotics using the Particle.io Photon which does exactly that, allows High School students to make their own Internet connected devices. 

My students can make Cell Phone Apps that control all kinds of internet connected sensors and motors.

Why not just work from the Deeplearnjs site? 

Our goals are different. I think their goal is to make the best Javascript Deep Learning library, whereas my goal is to make the easiest Machine Learning Tutorial using their Deep Learning Library. It took me a few days to clue-in to their workflow. They use a Node.js server to convert Typescript into two embedded files: a deeplearn.js (the main library) and a bundle.js (The main code for the demonstrations). This means all their code examples are in Typescript not Javascript. If this is your normal workflow, go for it, use their site. I think however the majority of Javascript users simply use Javascript inside their webpages. 

Typescript or Javascript?

If you are a Professional Web Developer you have probably already started your journey to learn Typescript. The benefits far outweigh the pain of learning a new language that has Javascript as a subset of it's language. Typescript is a strongly typed language that fits over Javascript and has huge benefits for writing and debugging code. Typescript is then compiled into your final (javascript based) webpage. This means learning two computer languages, but anything that makes coding more confusing is not good for my students. Professional Web Developers are not my target audience. My target audience is anyone who knows and uses Javascript or wants to learn it. For me pure Javascript is a better bet at the moment.

I think this issue can be solved with a stretch goal. If enough companies get involved, I think it makes sense to make both pure Javascript and Typescript examples of the tutorial code!

Why learn from a High School Coding teacher?

There are so many videos about Machine Learning by Research Scientists and other experts that everyone should have no problem learning it. Unfortunately most of us might learn the terminology in a lecture series, but not be able to create anything with just that terminology. Some of us need a slower, more hands on approach, working with lots of code snippets before we take the serious online lecture series.

If you want to learn Machine Learning take as many online courses as you can, I just think a Javascript course might be the best starting point.

Why not call this Joe Javascript's Deep Learning Tutorials?  

Deep Learning is a subset of Machine Learning. There is no reason to exclude other forms of Machine Learning from these tutorials. The potential is huge for Javascript web browsers, PHP or NodeJS web servers, Websocket fast connections and the Internet of Things sensors and actuators to help solve complex real world issues. I think we could have local developers using hundreds of Interconnected sensors with Machine Learning, quickly communicating in a variety of ways to help solve local or even global issues.

A little background:

I taught myself coding in 1977 when I was in grade 8 using a HP97 series desktop calculator. I have taught High School Computer Programming since about 1991.  Around that time in the 90's I was playing around with Neural Networks using Turbo Pascal. Trying to build them from scratch, each node averaging the results from the other nodes based on connected weights. Fairly simple programming but the node activation's never settled to stable values. To work well it needed much more powerful computers and a different approach than Neural Networks, that approach we now call Deep Learning.

But then in the late 1990's Neural Networks seemed to fade from the Artificial Intelligence scene. I think traditional programming, with more powerful computers was the better bet at the time to get simple AI stuff working.

That all changed for me in late 2015 when Google released Tensorflow. I was so excited about it, but the library only worked in C++ and Python programming languages. Both are great languages but very hard to teach. Python was the easiest but it's split between version 2 and version 3 meant online examples might not work for the version you were teaching.

What about Javascript:

I have loved teaching Javascript since the day I learnt about it on Netscape. I even preferred Javascript for High School students when the whole world was going crazy about Java (~2005). The reason I liked Javascript over Java was that I was teaching the general Windows using student population, not just the top Math students who used the Linux Operating System. Compiling and embedding Java applets was just too confusing for the typical student I was teaching.

As operating systems, browsers, GPU video cards and mobile phones got faster, we have seen a resurgence in the usefulness of Javascript (the programming language that I have been teaching for all these years). Why is Javascript a world wide phenomena?  Mainly because it is the language behind every web browser.

But lots of people prefer mobile apps.

I just used PhonegapBuild  version 6.5.0 to convert my pure Javascript deeplearnjs website into an Android app. I have been teaching with Phonegap since version 2.0. It is a very powerful and easy to use process. Phonegap can also convert websites into iOS and Windows apps. 

Machine Learning:

Machine Learning is now sweeping the world, and starting to have a major effect in all areas of technology from self driving cars to speech analysis and everything in between. But Machine Learning is not for the Web Developing, Javascript coding, Windows using, general population. It is mainly developed on a Lynux computer system, using Java, C++ or Python  and using libraries from: TensorFlow, Theano, Torch, Scikit-Learn, Caffe , MatLab, Numpy, and R, each language and library has its own programming nuances that can take years to develop a knack for.

But the general Javascript coding population doesn't understand Machine Learning in the present method of lectures on YouTube. We learn by seeing useful snippets of code and immediately applying them to our own needs. Normally we have thousands of code examples on the web for immediate use on any topic. But for Machine Learning (and specifically Deep Learning), Javascript examples are sadly lacking. 

Javascript and Machine Learning:

This all changed when Andrej Karpathy's wrote ConvNetJS starting around 2014 giving proof that Javascript can do Machine Learning (supporting Atwoods Law: Any application that can be written in JavaScript, will eventually be written in JavaScript.)  Then people began to use the computers video cards to do GPU (really fast) calculations and finally deeplearn.js was born. Deeplearnjs was originally developed by Daniel Smilkov, Nikhil Thorat, and Charles Nicholson with the Google PAIR program. 

Update

Presently there are several Javascript Machine Learning Libraries available, but deeplearnjs is the only Javascript library that I know of that can use the GPU and actually load converted Tensorflow pre-trained models, giving it a huge advantage over the other Javscript libraries.

Note that most Deep Learning Javascript libraries are written in Node JS. Node JS is amazing. Using Javascript NodeJS programmers can write generic programs, web browser Javascript webpages and Web Server side programs. But this project is not about using NodeJS. It is about simply using Javascript in a web page. There is going to be no installation for any of the basic examples. So no need to get stressed out about statements such as npm install someNodeJsPackage.

The Plan:

I plan to teach Machine Learning to the general Web Developing population. I will make a YouTube playlist and accompanying Github site of all the working deeplearnjs examples I can find or make myself, and then simplify and organise them. These examples will work on a normal website on the web or just on your computer. Nothing fancy, just a regular webpage for the majority of the examples.

Finally:

Good luck with your Machine Learning Journey, hopefully you will be using my Joe Javascript's Machine Learning Tutorials and you will pledge  $1 to help with any expenses that I have along the way.

 

Risks and challenges

Problem: Even when I finish making a quality video series most Windows users, High School Students or Web developers wanting to know about Machine Learning will probably not be able to find the video series.

Solution: For anyone who pledges and chooses my rewards I will send the link to the YouTube video playlist. That way even as more videos are added people who have pledged this Kickstarter will always be able to find the videos.

The biggest risk is if Google shuts down the deeplearnjs project, but even if they do, what has already been done is enough to introduce Machine Learning code in Javascript.

Learn about accountability on Kickstarter

Questions about this project? Check out the FAQ

Support

  1. Make a pledge without a reward

    CA$
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  2. Select this reward

    Pledge CA$ 1 or more About $0.78

    You are an Absolute Masterpiece

    You are an absolute masterpiece. You deserve all the good things that happen to you.

    I will email to you the link to Joe Javascript's Machine Learning Tutorials YouTube video playlist

    Less
    Estimated delivery
    17 backers
    CA$
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  3. Select this reward

    Pledge CA$ 20 or more About $16

    I will promote you

    You are an absolute masterpiece. You deserve all the good things that happen to you and your business.

    I will email to you the link to Joe Javascript's Machine Learning Tutorials YouTube video playlist as well as putting a thank you after the credits of one of the videos.

    The largest pledge over the $20 minimum for this reward will get a special shout-out at the start of at least one of the videos.

    Less
    Estimated delivery
    3 backers
    CA$
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  4. Select this reward

    Pledge CA$ 50 or more About $39

    I will promote you or your business

    I will email to you the link to Joe Javascript's Machine Learning Tutorials YouTube video playlist as well as putting a thank you to your business after the credits of one of the videos.

    The largest pledge over the $50 minimum for this reward will get a special shout-out for your business at the start of at least one of the videos.

    Less
    Estimated delivery
    2 backers
    CA$
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.