Git Product home page Git Product logo

iamdinosaur's Introduction

IAMDinosaur

IAMDinosaur

A simple artificial intelligence to teach Google Chrome's offline dinosaur to jump cactus, using Neural Networks and a simple Genetic Algorithm.

Watch this video to see it in action, and learn how it works: Artificial Intelligence with Google's Dinosaur

Installation

  1. Install Node.js on your computer.

  2. Clone/download this folder to your computer.

  3. run npm install within this folder

  4. Open Chrome's dinosaur game and put aside the terminal (It MUST be on the same screen) (Tip: go to developer tools, and under network, set to offline )

  5. run node index within this folder. If the game was located, it will move the cursor of the mouse to the origin of the floor of the dino. Press s key in the terminal to start learning.

How does it work

We have 3 different inputs read from the pixels of the screen:

  1. Distance from the next cactus
  2. Length of the next cactus
  3. Speed of the current cactus

We have also, one output with 3 possible states:

  1. output < 0.45: Press DOWN key
  2. output > 0.55: Press UP key
  3. default: Release both keys

Genetic Algorithm

Each Generation consists of 12 neural networks (Genomes).

Each genome is tested with the game, by constantly mapping the read inputs from the game to the inputs of the neural network, and by getting the output/activation from the network and applying to the keys of the keyboard.

While testing each genome, we keep track of it's "fitness" by counting jumped cactus in the game.

When an entire generation is completed, we remove the worst genomes until achieving N genomes. With those N genomes, we then select two randomly, and cross-over their values/configurations. After that, we apply random mutations in the values/configurations of the Neural Network, creating a new genome.

We do the cross-over/mutation until we get 12 genomes again, and repeat it constantly.

Implementation

All the implementation was done using Node.js, with Synaptic (Neural Network library), and RobotJs (a library to read pixels and simulate key presses).

There are a few files in the project:

  • index.js: It tight all things together.

  • Scanner.js: Basic abstraction layer above RobotJs library that reads the screen like ray tracing. Also have some utilities functions.

  • UI.js: Global scope for the UI management. It initializes and also updates the screen on changes.

  • GameManipulator.js: Has all the necessary code to read sensors, and apply outputs to the game. Is also responsible for computing points, getting the game state and triggering callbacks/listeners to real implementation.

  • Learner.js: It is the core implementation of the Genetic Algorithm. This is where "magic" happens, by running generations, doing "natural" selection, cross-over, mutation...

How to: Load a genome

  1. Make sure Genome is inside genomes folder with a .json extension
  2. Run the program
  3. Click the list in the terminal
  4. Navigate up/down to the wanted file
  5. Press enter (then, to start, press s)

Some shortcuts

  1. Run the program
  2. Press o to save the generation
  3. Press ´escape´, ´q´ or C-c to finish the process

Be aware of a game bug

The dino game has a anoying bug: It starts to "drift" to the right with time making the dino to be wrong offseted from the origin of the game. That, makes the program to read the dino as a cactus, since it is the same color.

You can fix that by continuously refreshing the page, or, by pasting this code inside the console in the element inspector:

// Make sure the dino does not drift to the right
setInterval(function (){Runner.instance_.tRex.xPos = 21}, 2000)

Development guidelines

Please, follow the Node.js style guide from Felix. It is not complex, and has a great simple pattern for things.

Credits

iamdinosaur's People

Contributors

adyavanapalli avatar eduardo-morales-alberti avatar huan avatar ivanseidel avatar octalmage avatar rodrigoalviani avatar tiagosomda avatar tngan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iamdinosaur's Issues

Takes long to load and doesn't seem to detect the dinosaur.

When I run node index, it takes a long time to load and it doesn't seem to detect the dinosaur. It also shows "Playing" status all the time. Using windows 10 and latest chrome.

I think it has to do with the offsets being different.

EDIT: Had to do robot.js mouse position was wrong in HD displays.

Current issue: robot.js seems much slower on windows than on other platforms. This messes up the learning ability.

Credits to IAMDinosaur

I am really appreciated that @ivanseidel has mentioned the credit.

I have also created a browser-only version (here) with different approaches. Please feel free to folk and create an issue.

Dark Mode Not Working

When the game enters dark mode, and starts rotating between light and dark mode, the AI does not realize all the colors just swapped so it doesn't know to keep learning or even to click to restart the game. Is there a fix it this? Thanks.

Bug on the fitness

I noticed that when the learning mutates to a NORM/DOWN behaviour, the fitness counts each NORM/DOWN as if it were a cactus jumped, so the algorithm thinks that its a good behaviour and it goes down to the next generations.

I can´t save new genomes

I downloaded the code, and I ran it but I can´t saved new genomes, how can I save the new genomes, ¿Does anyone know it?

Sensor readings too slow?

I left the code running for all night and didn't learn anything. The readings on the sensors seem to be really slow and innacurate, it kinda read it when the cactus has already hit the dinosaur. I'm doing everything as it's explained.

Confused by Install Steps

I installed Node.js, and where I go from there is maddening. What does 'run 'npm install' within this folder' mean? What does 'run 'node index' within this folder' mean?

I had assumed you'd just type "npm install/node index (folder location)", but 'npm install' tells me "npm should be run outside of the node repl, in your normal shell"

I'm stuck and this is one of the most ingenious things I've come across, and I'd like to see more. If anyone is more experienced with this stuff I'd greatly appreciate the help.

Error: Cannot find module 'robotjs'

Here is the Full Error

Error: Cannot find module 'robotjs'
    at Function.Module._resolveFilename (module.js:455:15)
    at Function.Module._load (module.js:403:25)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (C:\Users\Rugby\Desktop\NEAT\IAMDinosaur-master\index.js:1:75)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)

I'm running on windows 10 and I've run out of ideas on what to do to fix it. Please help.

BUG NOITE

Tem algo em mente de como resolver o bug quando chega de noite no game? porque ele não passa de lå! alguma solução?

Not loading?

After like 2 days of sitting with this i have managed to get the whole UI bit to appear :D Unfortunately, i don't think its working ._. This is all it says http://prntscr.com/d2p3nc. I have left it on that screen for like 10 minutes, do i need to leave it for longer, or am i doing something wrong? I am on windows 10 and latest chrome FYI.

Please help me

i'm a noob and a beginner and would like to learn how to do this. I did the npm install but not sure if I did it right. i'm also confused with the node index thing. can someone really help me out please.
untitled The picture I added is my npm install, did I do it right? someone please help me out please. Also this is very very dumb but do we do this in node and git bash or does only 1 of them work for this project. Please help me out.

Dinosaur Doesn't Jump Or Duck

After finally figuring out how to set everything up, and running the index.js file and pressing s, the dinosaur doesn't actually jump or duck. It just walks right into the first cactus, loses, then restarts again, and it keeps doing it over again.

Cant load synaptic even after installing. (OS X)

$ npm install synaptic --save
$ npm list synaptic
[email protected] /Users/JP/git/IAMDinosaur
└── [email protected] 

$ node index
module.js:440
    throw err;
    ^

Error: Cannot find module 'synaptic'
    at Function.Module._resolveFilename (module.js:438:15)
    at Function.Module._load (module.js:386:25)
    at Module.require (module.js:466:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/Users/JP/git/IAMDinosaur/Learner.js:1:78)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:456:32)
    at tryModuleLoad (module.js:415:12)
    at Function.Module._load (module.js:407:3)

No sensor value

Hi,

I cannot get the sensor to work !
Sometimes the value are changing, but it seems like there is a delay on the input, as you said in your video, but there is no screen recording or stuff like that going on.

Sometimes only the distance value is changing (still with a little delay), size and speed are stuck to 0.

I've tried different window size, platform (OS X, Windows), nothing.
Could it be a problem with node / robotjs version ?

Edit: the "save genomes" button and the file tree cannot be focused too, something in the configuration of the terminal ?

PS: Sorry for my terrible english, it's not my native language

Dark Mode

At certain score, the game changes its colors, and the terminal stops learning.

Not starting on Arch Linux

I've installed the modules and when I try to start it it gives me:

X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 73 (X_GetImage)
Serial number of failed request: 7
Current serial number in output stream: 7

There is a problem when npm install

I'm new to npm and Nodejs. The following error occur when I do npm install:

/bin/sh: 1: node: not found
gyp: Call to 'node -e "require('nan')"' returned exit status 127 while in binding.gyp. while trying to load binding.gyp

capture

What should I do to continue it?

some info:
ubuntu 16.04
node v4.2.6
npm v3.5.2

Node is unable to find 'robot.js' module

I am trying to use robot.js module on node, however it returns an error on line command which says the module cannot be found. I have tried massive troubleshooting steps, including add aditional modules which could be missing, and frameworks on my system. I already have:

Python v. 2.7.12
node v.6.7.0
Windows Software Development Kit v. 8.1
Visual Studio 2015 Community (should works fine)

The error log says:

C...\node index

module.js:457
throw err;
^

Error: Cannot find module 'robotjs'

I instaled the module already. Any help, please?

Unable to execute npm install

Hi,

I am unable to execute the cmd npm install. I obtain the error below :

pc36:IAMDinosaur-master Cyril$ su cyril npm install
Password: *****
/usr/local/bin/npm: npm: line 2: syntax error near unexpected token `;'
/usr/local/bin/npm: npm: line 2: `;(function () { // wrapper in case we're in module_context mode'

For information I use node in v4.2.4 and npm in 2.14.12 in OS X El Capitan 10.11.2

Thanks for your assistance.
Regards

Not starting / Infinite loading

As far as i can everything works properly except This
It stays Stuck like that indefinitely. i left it for a little over an hour and nothing. I tried pushing s at like every stage. Still. Nothing. I can do nothing in the console.

The "game bug"

its just a correction about the description text: what you calls "game bug" its a game design feature, to increase dificult with the time... the best way to deal with it, could be just adjusting your AI, not the game... ;-)

  • ĂŠ apenas uma correção quanto Ă  descrição inicial, o que vocĂŞ chama de Bug no jogo, ĂŠ apenas uma caracterĂ­stica do design do jogo, ao mover o dinossauro conforme o tempo passa, a dificuldade vai gradualmente aumentado, o mais correto teria sido adaptarem a IA ao jogo, e nĂŁo o jogo Ă  sua IA... ;-)

Sensor reading slow

Hi,
For the first time when I ran it, it would not pass the cacti, so then looked on the issues page. I found out that it was because the sensor reading was slow(it was only getting about 1 reading a second), but I couldn't figure out why. I am fairly sure it is not because of my computer speed, I think it might have to do with the fact that I am running windows(10 pro). I tried moving it to the top priority in task manager, but that did basically nothing. Any ideas?

Load genome from command line

Hi,

should be great to load a genome by launching index with arguments

example:
node index genome/ninja.json
or
node index -g ./genome/ninja.json

"node index" gives "BadMatch" error

Hello, and thank you for sharing this project.
I am having some issues running the program. I installed nodejs and npm and ran npm install with no errors. However, the command "node index" gives me the following error:
screenshot from 2018-01-03 18-03-56
I had the browser side by side with the terminal just like your video.
I am new to node and npm, but I have never seen this error before, and google didn't help much. I'm using Ubuntu 17.10.
Thank you

Save/Load genome

Hello !

I just installed your program and it seems to work well.

But I am not able to navigate with up/down in the "saved genome" part of the terminal, I'm new in all of this, maybe I'm missing something ?

Also it seems that when I run a new genome it doesn't save it. I always have only the ninja.json

The first game is ignored!

The first game of the first generation is ignored. From the second game the program starts evaluating the fitness of the genomes. Also, from the second game, the dinosaur can't keep 'DOWN' when the down is kept pressed, i.e. the input taken becomes slow. Any leads on where could possible changes be made on the code?

Cannot install on Windows 7

cannot install on windows 7. Showing error that .NET framework 2.0 SDK is needed and Microsoft visual studio 2005. I aready have the sdk but 2005 is now a very old version that is not even available on microsoft websites. How to fix this issue.

problems while installing - ubuntu

I first installed node.js as described and tried to install this rep with "npm install", but got following error code(Ubuntu)

npm install

[email protected] install /home/clemens/Dokumente/IAMDinosaur/node_modules/robotjs
node-gyp rebuild

make: Verzeichnis „/home/clemens/Dokumente/IAMDinosaur/node_modules/robotjs/build“ wird betreten
CXX(target) Release/obj.target/robotjs/src/robotjs.o
cc1plus: warning: command line option ‘-Wbad-function-cast’ is valid for C/ObjC but not for C++
../src/robotjs.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE keyToggle(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/robotjs.cc:557:17: warning: ‘down’ may be used uninitialized in this function [-Wmaybe-uninitialized]
toggleKeyCode(key, down, flags);
^
CC(target) Release/obj.target/robotjs/src/deadbeef_rand.o
CC(target) Release/obj.target/robotjs/src/mouse.o
CC(target) Release/obj.target/robotjs/src/keypress.o
CC(target) Release/obj.target/robotjs/src/keycode.o
CC(target) Release/obj.target/robotjs/src/screen.o
CC(target) Release/obj.target/robotjs/src/screengrab.o
CC(target) Release/obj.target/robotjs/src/snprintf.o
../src/snprintf.c: In function ‘portable_vsnprintf’:
../src/snprintf.c:557:33: warning: signed and unsigned type in conditional expression [-Wsign-compare]
size_t n = !q ? strlen(p) : (q-p);
^
../src/snprintf.c:704:40: warning: signed and unsigned type in conditional expression [-Wsign-compare]
str_arg_l = !q ? precision : (q-str_arg);
^
../src/snprintf.c:943:62: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
fast_memset(str+str_l, (zero_padding?'0':' '), (n>avail?avail:n));
^
../src/snprintf.c:372:35: note: in definition of macro ‘fast_memset’
{ register size_t nn = (size_t)(n);
^
../src/snprintf.c:943:74: warning: signed and unsigned type in conditional expression [-Wsign-compare]
fast_memset(str+str_l, (zero_padding?'0':' '), (n>avail?avail:n));
^
../src/snprintf.c:372:35: note: in definition of macro ‘fast_memset’
{ register size_t nn = (size_t)(n);
^
../src/snprintf.c:960:47: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
fast_memcpy(str+str_l, str_arg, (n>avail?avail:n));
^
../src/snprintf.c:365:35: note: in definition of macro ‘fast_memcpy’
{ register size_t nn = (size_t)(n);
^
../src/snprintf.c:960:59: warning: signed and unsigned type in conditional expression [-Wsign-compare]
fast_memcpy(str+str_l, str_arg, (n>avail?avail:n));
^
../src/snprintf.c:365:35: note: in definition of macro ‘fast_memcpy’
{ register size_t nn = (size_t)(n);
^
../src/snprintf.c:969:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
fast_memset(str+str_l, '0', (n>avail?avail:n));
^
../src/snprintf.c:372:35: note: in definition of macro ‘fast_memset’
{ register size_t nn = (size_t)(n);
^
../src/snprintf.c:969:55: warning: signed and unsigned type in conditional expression [-Wsign-compare]
fast_memset(str+str_l, '0', (n>avail?avail:n));
^
../src/snprintf.c:372:35: note: in definition of macro ‘fast_memset’
{ register size_t nn = (size_t)(n);
^
../src/snprintf.c:981:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
(n>avail?avail:n));
^
../src/snprintf.c:365:35: note: in definition of macro ‘fast_memcpy’
{ register size_t nn = (size_t)(n);
^
../src/snprintf.c:981:39: warning: signed and unsigned type in conditional expression [-Wsign-compare]
(n>avail?avail:n));
^
../src/snprintf.c:365:35: note: in definition of macro ‘fast_memcpy’
{ register size_t nn = (size_t)(n);
^
../src/snprintf.c:992:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
fast_memset(str+str_l, ' ', (n>avail?avail:n));
^
../src/snprintf.c:372:35: note: in definition of macro ‘fast_memset’
{ register size_t nn = (size_t)(n);
^
../src/snprintf.c:992:55: warning: signed and unsigned type in conditional expression [-Wsign-compare]
fast_memset(str+str_l, ' ', (n>avail?avail:n));
^
../src/snprintf.c:372:35: note: in definition of macro ‘fast_memset’
{ register size_t nn = (size_t)(n);
^
../src/snprintf.c:564:19: warning: variable ‘starting_p’ set but not used [-Wunused-but-set-variable]
const char *starting_p;
^
../src/snprintf.c:369:48: warning: ‘str_arg’ may be used uninitialized in this function [-Wmaybe-uninitialized]
for (ss=(s), dd=(d); nn>0; nn--) *dd++ = *ss++; } }
^
../src/snprintf.c:573:19: note: ‘str_arg’ was declared here
const char str_arg; / string address in case of string argument */
^
CC(target) Release/obj.target/robotjs/src/MMBitmap.o
CC(target) Release/obj.target/robotjs/src/xdisplay.o
SOLINK_MODULE(target) Release/obj.target/robotjs.node
/usr/bin/ld: cannot find -lpng
/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
robotjs.target.mk:154: die Regel für Ziel „Release/obj.target/robotjs.node“ scheiterte
make: *** [Release/obj.target/robotjs.node] Fehler 1
make: Verzeichnis „/home/clemens/Dokumente/IAMDinosaur/node_modules/robotjs/build“ wird verlassen
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack at emitTwo (events.js:106:13)
gyp ERR! stack at ChildProcess.emit (events.js:191:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Linux 4.4.0-57-generic
gyp ERR! command "/usr/bin/nodejs" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/clemens/Dokumente/IAMDinosaur/node_modules/robotjs
gyp ERR! node -v v7.3.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
npm ERR! Linux 4.4.0-57-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v7.3.0
npm ERR! npm v3.10.10
npm ERR! code ELIFECYCLE

npm ERR! [email protected] install: node-gyp rebuild
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the robotjs package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs robotjs
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls robotjs
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! /home/clemens/Dokumente/IAMDinosaur/npm-debug.log

Do not work when the sky turns black

When the game reach 700 points the colors of the game change: sky turns black (#000000) and objects turn grey (#ACACAC). I've read the GameManipulator.js code and it clearly does not handle that case and the game will be over right after that. How can you manage to get over 2k points with that problem not fixed yet?

Error in night time

When the game starts the night phase, the algorithm doesn't detect it and it doesn't do anything. Do you plan on implementing a negative pixel reading?

need help doing npm install

I am a noob and don't know much. Would it be possible for someone to show me step by step guide to run the npm install on a windows 10 OS? Found this a couple days ago and thought it be nice to see it in action. thanks ahead of time.

Not able to NPM Install

Hi,
Newbie here. I'm not able to NPM install. Keep getting the same error:

captura de tela 2016-10-21 10 48 18

Looking forward solving this to play around with the dino.

Auto start new game

When game is end:
GameStatus all time is "PLAYING"
Dont start new game

Chrome version - Version 59.0.3071.109 (Official Build) (64-bit)
OS - Ubuntu 16.04
Screen Width - 928px

Game wont refresh

I got the program to run on Ubuntu. It opens, detects the game, I press "s" then it brings chrome to focus and the Dino runs. The Dino hits the cactus but the program does not recognise this. It just sits on the game over screen. Even in the terminal "GameStatus: PLAYING". It does not change to "OVER". Help would be appreciated : /

Follow style guideline in code

This issue is to fix the lack of a style guideline in the Readme, and convert existent code to a guideline.

My style has been more like Idiomatic (https://github.com/rwaldron/idiomatic.js/), a simpler approach for defining how to write code. Google's is also good, but even simpler (https://google.github.io/styleguide/javascriptguide.xml).

My fear of AirBnB guidelines is that they have a few points that I disagree:

  1. When listing objects, start with the comma in the beginning of the line
  2. Comments AFTER code blocks (In the same line, causing the line to spam, and look ugly
    in the general look)
  3. They don't use much spaces (They make the code less dense, and more readable)

Also, I think that making the code guideline as strict as AirBnB or some others, would discourage people to help, and consume a lot of time verifying every line of code before merging...

Anyway, let's keep it simple for now at least

"Reading genomes dir..."

I'm using Windows 8 with 8.9.4 Node.JS and the latest Chrome.

The application doesn't have any problem finding the dino, it seems to just get stuck at reading the directory. As shown here: https://i.imgur.com/Z0fVBLH.png

If I'm doing something wrong let me know. Thanks.

How to improve the algorithm?

How it work, how can i improve the algorithm, learner.js, i need to study genome mutation?
Where i find more docs about this kind of programming?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.