Giter Site home page Giter Site logo

scanlime / fadecandy Goto Github PK

View Code? Open in Web Editor NEW
1.2K 127.0 378.0 10.48 MB

Easy to use open source hardware to drive WS2811 LEDs with high-quality color

License: MIT License

Makefile 0.77% C 67.08% C++ 24.74% HTML 0.38% JavaScript 1.75% CSS 0.12% Python 4.08% CMake 1.06% Shell 0.03%

fadecandy's Introduction

STOP DOING FADECANDY

  • LEDs were not supposed to be given data pins
  • YEARS of "temporal dithering" but no real-world use found for having more than three colors.
  • Wanted to see some cool lights anyway for a laugh? We had a tool for that, it was called LSD.
  • "Just buy some parts from this company that rents a huge space in manhattan, so they can help you get excited enough about technology to get a job building the next panopticon". "If it's cool enough you might be the next Google"- thoughts dreamed up by the utterly deranged

fadecandy's People

Contributors

ak15199 avatar arressjay avatar che-effe avatar debilski avatar djcapelis avatar erinxocon avatar hobzcalvin avatar inio avatar issackelly avatar j9brown avatar joakimsoderberg avatar jravetch avatar keroserene avatar kitschpatrol avatar linenoise avatar luxcapto avatar m-i-kessler avatar mfeif avatar nemik avatar nurikabe avatar paintyourdragon avatar plong0 avatar robojay avatar ryoshu avatar scanlime avatar shinyshinyben avatar spearl avatar supsup avatar theskorm avatar thetechromancer 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

fadecandy's Issues

Compiling on Ubuntu.

I'm getting the impression that fadecandy server is out-of-sync with rapidjson. I pulled both from GIT and get lots of errors.

After switching

-#include "rapidjson/filestream.h"
+#include "rapidjson/filereadstream.h"
+#include "rapidjson/filewritestream.h"

and

-    size_t len = buffer.Size() - LWS_SEND_BUFFER_PRE_PADDING - LWS_SEND_BUFFER_POST_PADDING;
+    size_t len = buffer.GetSize() - LWS_SEND_BUFFER_PRE_PADDING - LWS_SEND_BUFFER_POST_PADDING;

I'm getting:

error: no matching function for call to ‘rapidjson::GenericValue<rapidjson::UTF8<> >::AddMember(const char [5], const char*&, USBDevice::Allocator&)’

Is it possible for FadeCandy to work wirelessly?

I'm working on a project that uses FadeCandy but would like it to be able to communicate wirelessly to a Windows/RPi machine. I tried just connecting the FadeCandy to a different machine on my WiFi network, but the latency was too high for my application (I'm doing a lot of fading etc.). Maybe Bluetooth would be faster? I know there are talks about the Raspberry Pi integration, but in the meantime, is there any way to make FadeCandy run wirelessly? I didn't know if this is really a Github issue, but this was the only place I could post this question. Thanks!

Can't execute server binary in Raspberry Pi

I know this is not a fadecandy issue and is more of a linux issue, but I'm hoping somebody can point me in the right direction. I can't execute the fcserver-rpi script on my Raspberry Pi, and can't figure out for the life of me why.

bash: ./fcserver-rpi: No such file or directory

I have cloned the repo to ~/fadecandy and have tried executing the script both as root and as default "pi" user. I've tried chmodding to 777 and 755 with no luck, and I have also tried building the binaries with the make commands at https://github.com/scanlime/fadecandy/tree/master/server. Each time I try running the script, an error message comes back with the same text...

sudo: unable to execute ./fcserver-rpi: No such file or directory

I'm hoping that this is a simple syntax error that I'm not picking up on. Does anyone have any experience with running this on a pi?

Internet Explorer compatibility for fcserver UI

I haven't tried fcserver's web UI on Internet Explorer 11, which is the first version to support Web Sockets. Thomas Kunka reports that it doesn't work. This issue should cover testing the web interface on IE 11 and debugging whatever is wrong with it.

Memory leak problem in fcserver with repetitive connection

When I use open and close a connection for each packet. fcserver seems keep allocate memory and never release them. And finally the server fails because of that.
capture
I think this will also be an issue if the server runs for a long time.

Automatic mapping from LEDs to 3D coordinates

Further enhancing Issue #5, this would use multiple viewpoints to calculate an automatic 3D mapping.

Some projects may want an accurate 3D volumetric mapping. Some projects may want something more like unwrapping a texture in UV space: a way to take several different viewpoints of the same object, then manually arrange them in a virtual 2D coordinate space.

Example project: Basic Raspberry Pi thing

I'm really interested in the effortless rPI support in Issue #1, but until then it makes sense to have a simple rPI demo.

This could include setting up fcserver, writing effects in Python, and speeding them up with C++ code.

Or maybe this should jump straight to coding for Node, which might be fast enough to forgo the C++ code.

Example project: Numeric sign

This example project idea is a numeric sign. Built like a 7-segment display, but with fast and high quality color and brightness control at each pixel. So, maybe more inspired by pinball machine scoreboards.

Layered construction with CNC-routed plywood and laser-cut diffuse acrylic. LED strips attached to inside edges of routed plywood, pointing toward the interior of each segment.

Controlled by 2D mapping plus metadata that associates LEDs with segments.

Inexplicable tearing

This is easy to see with the "ganzfield.html" demo. The display exhibits "tearing", in which it looks like each frame is getting randomly truncated prior to interpolation.

Some more debugging reveals that this is probably a firmware issue rather than an fcserver issue.

Clean up READMEs and examples

Examples should have a sensible naming convention, the top-level README should be carefully scoped, and the protocol documentation should all be in a findable location.

P5js examples not running

I'm trying to run the p5js examples with an 8x8 WS2812 neopixel matrix, but nothing is showing up.

Create video example for dithering

The Fadecandy dithering algorithm makes a big difference, but it's hard to describe and hard to photograph. We should create a good video example to show what it is and how it can help.

Having issues changing RGB to GRB

On the front end I want to mention I have been stuck on this issue for a week now. I have followed all the steps mentioned in previous threads with similar questions... with no luck.

I need to swap the default.json config for my custom grb.json config. I need to know what I am missing here. I can run the brg.json config that comes in the examples with no issue. Here is what I am running...

screen shot 2015-11-12 at 7 09 42 pm

screen shot 2015-11-12 at 7 10 05 pm

Command Line Not Accepting Alternate Configuration File

Hello,

I'm working with both a RaspberryPI and OSX, and I'm trying to get a project setup, which is similar to Phillip Burgess's NeoPixel Curtain Project. I am working with 3 fadecandy boards and am trying to pass the fadecady server a different configuration file to use so that I can properly map the LEDs I have in my project. However, I noticed (both with RPI and OSX) that whenever I try to run the server from the command line, as it says to in the help, fcserver [config.json], I get the following return:

"Error opening config file: No such file or directory"

This happens whether I am running from the relative directory I have both the sever and the JSON file in, or giving the command with absolute paths. I am new at this, so perhaps I am doing something wrong.

Can anyone tell me how I can get the server to use a different configuration file other than the default one? I can't seem to get this to work, and I'm hoping it's me and not a bug.

Example project: Music-responsive display

Example project idea: Light bars (stacks of 8x8 grids, and/or LED strips) controlled by music synthesis tools.

For example: Ableton -> Processing -> fcserver

Light effects are synchronized over Open Sound Control. Controls include automatic cues in the music, and manual cues from performers.

Compatibility with Madmapper

This is some pro software used for big projection mapping and LED mapping installations. Looks like compatibility could be via ArtNet or Syphon or other protocols.

ledStrip() will block/black out other strips in Processing window

I am trying to map out the orientation of multiple led strips. The issue is that when strips are close to each other, you cannot see both strips. These two examples work by themselves, but not when both are displayed in Processing:

opc.ledStrip(1,21, 370, 620, 10, 0, false);
opc.ledStrip(0,26, 160, 700, 10, 2.5, false);

Error in FC schematic

Hello.

I have found a error on the FC schematic the RESET_B pin is not the number 26 but its the 34

In the PCB it is connected to the correct place but in the schematic it is not.

Thank you...

Not actually Python3 compatible

I know some effort was made to make the Python resources compatible with Python3, but it wasn't complete.

The remaining incompatibility is that in Python2, socket.send() takes a string argument, whereas in Python3, socket.send() expects a bytes object. I made some small changes to the OPC libraries to make them work with Python3.

In opc.py, the problem is in put_pixels(). The current version uses chr() to build a list of Unicode string representations of RGB values, then concatenates them with join(). I changed this by instead building a list of integers, then concatenating them with bytes(). Here's the new code (the rest of the function is unchanged):

# build OPC message
len_hi_byte = int(len(pixels)*3 / 256)
len_lo_byte = (len(pixels)*3) % 256
header = [channel, 0, len_hi_byte, len_lo_byte]

pixels = [x for rgb in pixels for x in rgb]  # flatten into 1D list of rgb values
clamp = lambda x: max(min(255, int(x)), 0)
rgbvals = [clamp(x) for x in pixels]  # floats to ints, and constrain vals

message = bytes(header + rgbvals)

In fastopc.py, the problem is in putPixels(). Here things are less straightforward because the function accepts various types of pixel sources. I changed it to accept either a list of (R,G,B) 3-tuples, or a flat NumPy array of RGB values. I did this partly to enable the same data structure for pixels used by opc.py, partly because it didn't seem to make sense to send the values as strings if we need to convert them to bytes objects, and partly just because I'm a little out of my depth. The new code:

rgbvals = []
numvals = 0

for source in sources:
    if isinstance(source, list):
        source = [x for rgb in source for x in rgb]  # flatten the list
    elif isinstance(source, numpy.ndarray):
        source = source.tolist()  # convert (assumed flat) NumPy array to a list

    clamp = lambda x: max(min(255, int(x)), 0)
    source = [clamp(x) for x in source]

    rgbvals.extend(source)
    numvals += len(source)

header = struct.pack('>BBH', channel, 0, numvals)  # returns a bytes object
message = header + bytes(rgbvals)
self.send(message)

I verified that the new libraries work with examples both from Fadecandy and Open Pixel Control. Some caveats:

  1. I didn't explicity mention changing the shebangs to #!/usr/bin/env python3.
  2. Although these changes make the libraries compatible with Python3, they render them incompatible with Python2. I'm sure that something snazzy could be done to automagically determine which version of the put pixel function to use, but I didn't write that.
  3. While the modified fastopc.py works just fine, I'm not at all certain it's as fast as it could be, and performance is after all the reason it exists in the first place.
  4. fastopc.py also contains a second function that sends data over sockets: sysEx(). It looks okay as is to me, because it generates a message from struct.pack(), the Python3 version of which returns a bytes object instead of a string. But someone who knows more than me should take a look at it.

wrong sysEx packet length in python firmware examples

the files:
examples/python/firmware-config-ui.py
examples/python/color-correction-ui.py

used that line to create a packet:

 s.send(struct.pack(">BBHHH", 0, 0xFF, len(data) + 4, 0x0001, 0x0002) + data)

I think the 4 should be a 8, because your doc (fc_protocol_opc.md) said the header is 8 bytes long.
When I try this code with a null message:

>>> import struct
>>> msg=""
>>> systemId=1
>>> commandId=2
>>> header = struct.pack(">BBHHH", 0, 0xFF, len(msg) + 4, systemId, commandId)
>>> len(header)
8

the result is 8 - as expected and ">BBHHH" are 2 bytes + 3 words => 8 bytes

The curious thing is, the examples worked for me. Can somebody tell me whats going on here and whats the correct python code for sending sysex messages.

thx and have a nice day :-)

Standard 2D mapping tool

A lot of projects are going to want to map LEDs to positions in 2D, either manually or with some tool assistance.

A lot of effects are going to want to consume these positions.

So let's have a way to do this sensibly.

I'm imagining something where the fcserver maintains a JSON object that describes the LED mapping. This should probably be based on the layout format defined by the Open Pixel Control project.

Fcserver should support loading and storing this object over JSON, with notifications sent back when the layout is changed. OPC clients need to be able to query the layout, and receive notifications when it changes.

The fcserver web UI can include a client-side tool for viewing and editing layouts. Edited layouts could optionally be persisted, by generating a new JSON config file for fcserver that includes the layout. Layouts may also be stored in client-side storage on the browser, and the editor should include sample layouts for common parts.

It needs to be really easy to define a layout based on common off-the-shelf parts.

It needs to be really easy to use this layout in a Processing sketch. In fact, the default action taken by the OPC library should be to use the server's provided layout if it has one.

Long strip mode

Currently, the Fadecandy firmware uses a fixed strip length of 64 LEDs in order to support temporal dithering. Longer strips have a lower maximum update rate, and much above 64 LEDs there's too much flickering for it to work.

Strips with longer than 64 LEDs will never be the recommended configuration for WS2811 LEDs with Fadecandy, but it would be really useful to have a new firmware configuration mode that would support these long strips anyway.

Internally, this would require some refactoring so that we can use different RAM layouts for different firmware configuration modes. Most of the bits in the first byte of firmware configuration space will probably turn into a "mode" number, which selects a RAM layout and a redraw engine to use for that mode.

This would also require some fcserver support, so it knows about the different strip lengths. And any layout editor tool we build would really like to know this as well.

fcserver linux support

I saw support for the RPI, but not for Ubuntu (or other flavors of linux). Can this be done easily?

Example project: LED Sphere

An idea for an example project:

A hollow wire sphere, with LED strips wound around it like a ball of string, all pointing outward. The light shines out in every direction, covering the room. An automatic mapping tool traces where each LED is pointed, creating a mapping in polar coordinates between LED number and an angle in space. Patterns are written in that polar coordinate space, projecting light outward onto the room.

Example project: Foldable 32x16 grid

Example project idea:

Uses eight 8x8 grid PCBs. Each grid is hinged to its neighbors to the left and right, or possibly with other hinge patterns.

The whole grid can fold flat for storage, or it can stand up as a pseudo-cylindrical display.

Reversable OPC mapping in fcserver

I was debugging why my pixel mapping was a little weird and had a "ahah" moment.

I was trying to set the end of the led strip as the first pixel. Unfortunately my pattern generation code is a bit dumb and expects the opc pixel layout files to have pixels monotonically ascending on the Z axis, in order to detect different parts of my art structure.

It'd be really neat to be able to specify a negative pixel count in the config to be able to reverse the order pixels turn up in the opc message.

I tracked down the pixel mapping to here:

https://github.com/scanlime/fadecandy/blob/master/server/src/fcdevice.cpp#L553

As an example, the following line in the "map" key:

[0, 0, 63, -64]

Would send data from opc channel 0, from pixels 0-64 in the opc message, to the first strip on a fadecandy board but reversed. So OPC pixel 63 would be the first pixel on the first strip of a fadecandy, OPC pixel 0 would be the 64th pixel on led strip.

Not sure if it'd be more intuitive way to do the mapping with a flag or something.

As always I'm doing this at last minute before a festival, but might be able to tackle this later next week.

assigning new fcserver config json

Hello!
I'm having some difficulty pointing fcserver to a new config file. It says in your documentation that this can be done via command line, but there is not much more guidance given. I've made a new JSON config file and tried following the instructions provided here but have had no luck. Once I figure it out I would be more than glad to submit a pull request on the readme to add this information. Any guidance would be much appreciated!

fcserver crash on USB disconnect

Working with my art project based on a raspberry pi, I disconnected USB cables from two fadecandies then plugged them back in. My neopixel strips wouldn't update after reconnecting.

Checking what happened via ssh, I was surprised to find that fcserver was no longer running. Checking the logs, there was no error message. The log registered the disconnection of the first fadecandy, but not the second so I assume it crashed somewhere in between.

I am running on a Raspberry Pi 1 Model B+, with a raspiado 4 port USB shield (and the fadecandiess plugged in via the shield).

$ uname -a
Linux 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux

Restarting fcserver manually everything started working as expected.

I wanted to open this in case other people have experienced similar behaviour and we can get more evidence/context. I don't expect there is enough information to go on here, but I'll update this issue if I experience the same behaviour.

FadeCandy not showing up or connecting with fcserver

Hello,

Might not be the right place to post this, but figured I would try, as I feel there may be some software issue whether it is driver related or fcserver related. Here is my problem:

I briefly saw fadecandy connected in fcserver when I first plugged my fadecandy in; I also heard the USB acknowledgement noise. When I checked localhost 7890 it did not show up. I then tried a second FadeCandy, and I did not hear the USB noise or see a connection in fcserver.

I then tried again on another machine, and the same thing happened again with both FadeCandys as did on the first machine.

Both computers are running Windows 10.

I have fadecandy package 2, and fadecandy MES '13, LED Controller fc64x8 Rev B with the miniUSB connection.

I appreciate any help! :)

Noticeable flickering on low pixel values

Test case: grid8x8_dot with mouse centered. A few or more pixels at the very edge of the circle before the pixels are dark should be visibly flickering, maybe 5-10 times/second. The effect is more visible with a lower whitespace, like [0.5, 0.5, 0.5].

I'm guessing these pixels are only turning on a few times per second as the pResidual value adds up to enough to trigger the pixel to go from 0x00 to 0x01. Maybe these low values should be filtered out so the pixels just remain off so the flickering doesn't become a distraction.

I'll look into this more and add some more thoughts after getting a better understanding of what's going on.

Specifying color order for device map

Seems the order of my led's is GRB instead of RGB. Based on the example configs, I thought adding the string "grb" to the map would address this:

{
    "listen": ["127.0.0.1", 7890],
    "verbose": true,

    "color": {
        "gamma": 2.5,
        "whitepoint": [1.0, 1.0, 1.0]
    },

    "devices": [
        {
            "type": "fadecandy",
            "map": [
                [ 0, 0, 0, 512, "grb" ]
            ]
        }
    ]
}

I get 'unsupported json mapping instruction'. What is the correct way to modify this?

Effortless Raspberry Pi support

We need a solid and effortless way to move art projects from prototyping to deployment. Some people may choose to run their projects on full-size computers, but I suspect most people will want to use some flavor of embedded device.

It's still an open question as to what the best way to do this would be. For example, one way of doing this may be an automatic SD card image builder. You give it a Processing sketch, and it gives you an SD card image.

I suspect the best option, though, will be an interactive way to develop and deploy sketches on a Raspberry Pi. This could be a distro that runs a web-based interactive development environment for Javascript. Something like nide or Cloud9.

Ideally, the rPI would be "connected" to an account once, then you could push code to it from a web-based editor any time the device has internet connectivity. Of course, sketches must run offline, and must be deployable offline. None of this can require internet access.

Rasberry pi / Examples

I am using Raspberry Pi with Fadecandy. The server is running and it works via test patterns pulldown. My issue is that I am unable to get any of the examples to respond. Any suggestions?

Thanks in advance.

Native 48-bit color mode

It would be nice to have support for native 48-bit color in Fadecandy. This would use Dithering but no color lookup table, and possibly no interpolation. Applications would use 48-bit-per-pixel color throughout the whole pixel pipeline.

This may be implemented as an alternate video mode with a new memory layout, much like Issue #2.

Animation recorder

It would be great to have a tool for recording animations to disk.

This tool could be integrated with fcserver, but maybe it makes more sense for it to be a standalone OPC server.

The recorded animations could be played back by the same tool, on a computer.

The recorded animations could also be played back by some special-purpose appliance, like a minimal rPI distro or an Arduino Due.

If the recorded animations can be compressed small enough, it would even be practical to store them in the on-board flash on a Fadecandy board. This would be useful for projects with very simple looping animations. It would be maybe even more useful for "startup" animations that loop while the computer attached to a Fadecandy board is booting.

Animation compression could be fun. I'm imagining a simple frame-difference encoding that uses a stream of instructions to build new packet buffers from the data already present in the FC framebuffer.

Video using cpp

I saw the sample of running a video using processing in the examples and I think it is very interesting.

Unfortunately, for the pcduino, (the board I have currently interfaced with fadecandy) running video on processing is very very slow and I would like to use maybe cpp to directly to run a video with a shader (I think its the way to go, pipe the video from ffplay or so. I am okay with c but my shader knowledge is a bit limited)

BTW, I currently have the following setup to run the video, I externally read the pixel rgb using python on a computer and write them to a file. I load the pixels using node to read the file and set the frames with the desired framerate. It works perfectly until you add audio to it. Since you run audio and video separately this way, they have a 100 ms out of sync issue most of the time. So, it ruins the experience.

I would be grateful to anyone who can point me to a solution, just a pointer on how to proceed. Alternatively, if anyone has bumped into this issue and have found any solution I would be so happy if you could share it here.

reflashing the fadecandy

Hi,

When I first connected my FC to the usb port of my RPI, the server was able to detect it but I was only able to light up three out of 60 pixels in my neopixel (only the first three ones were on) when using the testing links from the webapp (all on, 50% brightness, etc...).

I then tried to load a new firmware $ sudo dfu-util -D fc-firmware-v107.dfu. After that, the server wasn't able to detect the FC anymore.

Is there anyway to reset the firmware to the original state?

Thanks!

Teensy 3.1 compatibility

I haven't tried the Fadecandy firmware on a Teensy 3.1, but some users are having trouble with this configuration and it seems likely there's a compatibility bug that needs fixing.

Automatic mapping from LEDs to 2D coordinates

It would be really useful to have an automatic tool for mapping an LED array in 2D using computer vision.

A brief proof-of-concept demo for this is in the "mapping2d" example. It uses a slightly fancy method- instead of turning on each LED in sequence and looking for the bright spot, it displays a binary pattern on each LED which it then tries to detect.

This functionality probably wants to be built-in to a layout editor in the fcserver web UI.

Standalone mode / read "canned shows" from USB OTG flash drive

It would be awesome if you could pre-record a show onto a USB flash drive and plug it directly into a Fadecandy for playback without a host computer. I think this should be possible in principle as the MK20DX128 has USB OTG capability.

Some Teensy folks have done some work on getting OTG working but I haven't looked into how much more work it would be to port to Fadecandy and support mass storage: https://forum.pjrc.com/threads/28173-Teensy-3-x-NATIVE-USB-HOST-PREVIEW-AVAILABLE

More info on USB OTG in chapter 41: https://www.pjrc.com/teensy/K20P64M72SF1RM.pdf

support for WS2801 strips

hi,
i'm really interested in using fadecandy as a replacement for my hacky code in led projects. however, i already own a grid of 15 ws2801 strips and would prefer not to abandon them as being totally out of date so soon. is it possible for fadecandy to support WS2801 strips? i think the best way to make this happen would be to use FastSPI instead of OctoWS2811z. thoughts?

cheers!

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.