Git Product home page Git Product logo

keyv2's People

Contributors

bear454 avatar colegleason avatar dependabot[bot] avatar ihatemyisp avatar joshcarter avatar lenbok avatar limitium avatar lvisintini avatar mahksy avatar melmaliacone avatar michal-szczepaniak avatar mrebersv avatar mylesmetzler avatar rsheldiii avatar ryukojiro avatar superhappychris avatar xuis 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

keyv2's Issues

Layout module enhancement

Just started openscad with this awesome project, I added some features for the layout module that could be useful to the project.

Multiple legends : layout-legends-multiple

I had some issues with the recursive scope, just started openscad and I don't know how I can solve that ugly issue for the legends...

  • font alignment : $font_align, $font_align_front
  • font size : $font_size_front
  • legends position : $legends_position, $front_legends_position
  • updated doc for legends positioning doc
  • example : layout_legend_multiple
    multiple_legends

Spacebar 3u support: layout-3u-spacebar

  • updated spacebar api to add key size and stab size, kept stab sizes to what already existed
  • updated layout to handle 3u spacebar
  • example : spacebar

Progressive corner radius for rounded square: rounded-square-progressive-radius

  • use a linear corner radius from bottom to top : $corner_radius_bottom
  • example : rounded-corner-progressive-radius

progressive_radius


Cherry Home key bump / dish: layout-cherry-home-bump

  • enable dish on Home keys (F-J) : $cherry_home_dish (false | number)
  • enable bumps on Home keys : $cherry_home_bumps
  • key bump width : $key_bump_width
  • key bump radius : $key_bump_radius
  • Detection based on column index..

cherry_bumps

Cherry ML support

I discovered this great library while making a numpad to go along with my Cherry G84. It occured to me that it would be awesome to be able to print keycaps for that board as well. It uses the not very common Cherry ML switches. I am quite the newcommer to openscad so I don't know how easy it is to add a new stem to the library but I would be welcome to test the results :P.
All documentation I could find on the keys are these pdfs:
https://datasheet.octopart.com/MX1A-C1NW-Cherry-datasheet-15918975.pdf
https://nl.mouser.com/datasheet/2/71/Keymodule_ML_EN-462672.pdf
Also there is this https://deskthority.net/wiki/Cherry_ML.
I also don't know how much of a problem it is that their unit size is a tad smaller than the usual.

By all means, this isn't an urgent issue but I would be very happy if this could become a thing.

suggestion to support double extrusion printers

hey there, i was thinking of potentially printing backlit-compatible keycaps, is that possible with this library?
i know some printers allow to use two materials at once, so what if one makes a model that uses black and transparent white filaments to make a, for example, a backlit-compatible 1.75u shift?

Can't get $font_size to take effect

Snippet:

include <./includes.scad>

$stem_support_type="disable";
$legends = ["A"];
$font_size = 2;
$font = "Futura Hv BT";
dsa_row() key();

No matter what I value set for $font_size on key.scad, it is stuck on the default value (which I believe is 6). Not present on customizer.scad. Not sure if I am doing something wrong, or if it is a bug.

2uh() key, correct row number?

If a 2uh() key occupies 2 rows, say for oem keys, what is the correct value to pass for oem_row()? Trying to figure out how to properly define number pad Enter and Plus keys...

Tests

With the development of the examples directory, It would be nice to implement some kind of snapshot testing, where the output of the examples on your current changes are compared with the output of master.

Unlike snapshot testing for say, React, the fixtures (stl files) are going to be multiple megabytes, so it might not make sense to store them alongside the code. It might be better to generate the fixtures, then check out master and regenerate them, and compare the files.

This means that merging into master implicitly updates the fixtures, but I think that's ok.

Row sequence?

I'm confused by the row order. Which one is correct?

5 -> F keys
1 -> Number row
2 -> Tab row
3 -> Caps row
4 -> Shift & Ctrl row

Or

5 -> F keys
4 -> Number row
3 -> Tab row
2 -> Caps row
1 -> Shift & Ctrl row

ISO enter via skin_shape_hull

A glaring issue with this library for a while now has been that it doesn't support ISO Enter.

For context, this began when we switched from using linear_extrude to generate keycaps to convex_hull. convex_hull was definitely the right choice, paving the way for proper top tilt, full sculpting, sculpted sides a la SA and DSA, etc etc. Unfortunately since the ISO enter key is a concave shape, plugging it into convex_hull doesn't work.

The solution to this is to instead use skin instead of convex_hull. skin is similar in that you pass it two (or more) shapes and it stitches them together, but it requires that:

  1. The shapes be lists of vertices
  2. The lists of vertices have the same number of elements

and then it stitches the lists together, in order. In theory, you lose one feature of convex_hull, which is stitching together shapes with different numbers of vertices, but you can now do concave shapes. In practice though, convex_hull takes 3d primitives as input, whereas skin() requires lists, and there is no way to currently generate a list of vertices from a shape.

it'd be great if I or someone could figure out how to generate the list for input into skin, which is a list of x,y coordinates.

I think there's a few ways to tackle this problem:

  1. as an MVP, just take the coordinate function from the original iso enter shape and use that as the skin version. I might do this right now
  2. do it the hard way, like rounded_rectangle_profile, and generate the entirety of the shape via math
  3. create a generic offset function that works on lists of x,y vertices and apply it to the list in 1. In order to generate the inset rounded corner (the "armpit" of the ISO enter if you will) you'll need to apply a negative offset first, so it'll have to be able to support that as well.

Color Layouts

key_colors

I was having trouble deciding what colors to print keys in and decided it might be worth to try a color layout. The example below is quick and dirty but should let anyone play around with the idea. I'm not quite sure how a merge-worthy feature should be approached. Key labels do get very hard to read so it might be worth passing the colors down to lower levels so the individual parts of a keycap can be colored slightly differently.

diff --git a/src/layouts/layout.scad b/src/layouts/layout.scad
index cd3c9c2..f371b6d 100644
--- a/src/layouts/layout.scad
+++ b/src/layouts/layout.scad
@@ -20,7 +20,7 @@ function double_sculpted_column(column, row_length, column_sculpt_profile) =
         1hand(column, row_length) : (column_sculpt_profile == "cresting_wave") ?
           cresting_wave(column, row_length) : 0;
 
-module layout(list, profile="dcs", legends=undef, front_legends=undef, row_sculpting_offset=0, row_override=undef, column_sculpt_profile="2hands", column_override=undef) {
+module layout(list, profile="dcs", legends=undef, front_legends=undef, color_legends=undef, row_sculpting_offset=0, row_override=undef, column_sculpt_profile="2hands", column_override=undef) {
   for (row = [0:len(list)-1]){
     /* echo("**ROW**:", row); */
     row_length = len(list[row]);
@@ -36,7 +36,8 @@ module layout(list, profile="dcs", legends=undef, front_legends=undef, row_sculp
       // supports negative values for nonexistent keys
       if (key_length >= 1) {
         translate_u(column_distance - (key_length/2), -row) {
-        
+          
+          color(color_legends ? color_legends[row][column] : "") 
           key_profile(profile, row_sculpting, column_value) u(key_length) legend(legends ? legends[row][column] : "") front_legend(front_legends ? front_legends[row][column] : "") cherry() { // (row+4) % 5 + 1
           $row = row;
           $column = column;

Example layout:

include <../layout.scad>

60_percent_default_layout = [
  [1,1,1,1,1,1,1,1,1,1,1,1,1,2],
  [1.5,1,1,1,1,1,1,1,1,1,1,1,1,1.5],
  [1.75,1,1,1,1,1,1,1,1,1,1,1,2.25],
  [2.25,1,1,1,1,1,1,1,1,1,1,2.75],
  [1.25,1.25,1.25,6.25,1.25,1.25,1.25,1.25]
];

home="crimson";
letters="#222222";
numbers="gray";
space=numbers;
other="saddlebrown";
shift=other;
non_letters="purple";
ctrl=other;
alt=ctrl;
fn="goldenrod";

60_percent_color_legends = [
  [other, numbers, numbers, numbers, numbers, numbers, numbers, numbers, numbers, numbers, numbers, non_letters, non_letters, other],
  [other, letters, letters, letters, letters, letters, letters, letters, letters, letters, letters, non_letters, non_letters, non_letters],
  [other, home, home, home, home, letters, letters, home, home, home, home, non_letters, other],
  [shift, letters, letters, letters, letters, letters, letters, letters, non_letters, non_letters, non_letters, shift],
  [ctrl, fn, alt, space, alt, fn, fn, ctrl],
];

module 60_percent_default(profile) {
  layout(60_percent_default_layout, profile, [], [], 60_percent_color_legends) children();
}

What fonts/font types are supported?

I'm trying to use a nerd font on my keycaps so I can include the various symbols which nerd fonts include, however when I try and use them, it just uses the default font. I've tried using the font name shown in Windows Font settings and the "Full Name", with and without :style=Regular however none of this seems to work.

How can i create the 60% Layout in OpenSCAD? (How can i import the 60_percent_default("dcs") key(); into OpenSCAD?)

Sorry i am a complete noob in coding but i want to learn. I really love this easy to use code you have created but i have this question: to generate single keycaps is quite simple but on this github page there is a topic called layout. I was just wondering where i have to insert this: 60_percent_default("dcs") key(); in the code to create multiple keys at once?
Sorry if im just too blind to see the obvious answer! Thank you for this and i would really appreciate help!
Thanks again and kind regards
maxwefter

Is there a way to define different font for legends on front and top?

First of all - thanks for the wonderful repo - this is amazing! As title said, want to use front legends to depict what is going in with layers - some of these can be better represented in symbols. I am wondering if different fonts can be used. Here is the snippet I am using:

include <./includes.scad>

// Basic key ID
row = 3;
column = 2;
leg = "Q";
frnt_leg = "Vol +";
//font = "Wingdings";
font = "Zilla Slab"; <--------

// Legend
leg_size = 4;
leg_top_size = 4;
leg_pos = [0,0];

// Front legend
frnt_leg_size = 3;
frnt_leg_pos = [0,-0.75];


sa_row(row) 
translate([25*column, 25*row, 0]) 
legend(leg, size=leg_size, position = leg_pos) 
front_legend(frnt_leg, size = frnt_leg_size, position = frnt_leg_pos)

        {
            // Key dimensions
            $key_length = 1;
            // Stem parameters
            $support_type = "flared";
            $stem_throw = 4;
            $stem_inset = 1;
            $stem_support_type = "disabled";
            $rounded_cherry_stem_d = 5.5;
            $cherry_bevel = true;
            // Key bump? probably only for k and d
            $key_bump = false;
            $key_bump_depth = 0.1;
            $key_bump_edge = 2;
            // Legend
            $font=font;    <-------
            $inset_legend_depth = 0.2;
            $outset_legends = false;
            // Speed it up
            $skin_extrude_shape = true;
        key();
        }

Is a multiline legend possible?

I was wondering if it's possible to have multiple characters beneath each other as the legend. I was thinking of printing some keycaps for a keyboard with 3 layers and I'd like to print the characters from each layer on the keycap.

BTW, thanks for the great project, it's been very helpful!

Question - stepped caps / iso enter

dcs_row(3) stepped_caps_lock() key();

I can see what you are doing, but, why cant the right side of the cap sink, so it actually models as stepped?

image
image

A similar story for ISO enter. I've read through the docs, and there's a strange issue around the 'elbow'. Notice also by running the following, you see the bottom stab clipping. Ideally if its just calling the module, can we just update that code? I was a bit lost on the elbow explanation however.

dcs_row(2) iso_enter() key();

image

Thank you for this work so far! I have forked it for some custom keysizes (think calling spacebar1() or spacebar7() etc). Will make a public DCS model template available once I get everything together. You did amazing work!

SA ISO Enter Key possible to print

Hey apologies for ignorance!

Trying to figure out how to print he ISO Enter Key with the SA profile, is this possible? I saw the open issue on it?

Function parameters inconsistent: $stem_inner_slop vs $stem_slop vs slop

What version of OpenSCAD are you on?
Master branch

Describe the bug
OpenSCAD Configurator uses $stem_inner_slop, and the code inside of upside_down(...) checks for $stem_inner_slop, however the stem code itself uses $stem_slop

To Reproduce
Pull master and open the keys.scad
Use this snippet for rendering a key:

sa_row(5)
u(1.25)
inset(val=1)
rounded_cherry($stem_slop=0)
inverted()
upside_down($stem_inner_slop=0)
key();

Replace rounded_cherry($stem_slop=0) with rounded_cherry(0) or rounded_cherry(slop=0) and notice the stem reverts to the default 0.2 slop.
Replace upside_down($stem_inner_slop=0) with upside_down() and click render, notice the Echo error about stem slop should be 0 for upside down printing.

Additional context
Add any other context about the problem here.

Enhancement: print on the back of keycaps

I developed a way to print on the side of keycaps, but why not print on their backs? the smooth side of the keycap would face away from the user and you could do something like .1mm layers to make sure the front is smooth enough to look nice.

The side printing code should be general enough to use for this with a little tweaking

An option to print the legend on the side?

I was looking for a way to print the legend on the side of the keycap instead of on the top.
I couldn't find a way to do it. Is it coded in? If not, would it be difficult to add it? :)

cherry_cross has vertical and horizontal dimensions reversed

Maybe I'm misunderstanding how this function works, but it appears the cherry cross tine thicknesses are reversed. Here is the function in question

// .005 purely for aesthetics, to get rid of that ugly crosshatch
function cherry_cross(slop, extra_vertical = 0) = [
  // horizontal tine
  [4.03 + slop, 1.15 + slop / 3],
  // vertical tine
  [1.25 + slop / 3, 4.23 + extra_vertical + slop / 3 + .005],
];

This gives the horizontal tine and vertical tines thicknesses of 1.15 and 1.25, respectively. When measuring gateron switches with calipers, the opposite appears to be the case.

I have printed a full set of keycaps with 0.3 slop, and they have significant side-to-side wobble despite being very tight vertically. When swapping the tine dimensions here, and lowering the slop to 0.24, I'm now getting far better fitment.

Here is the version of the function I'm using to print my keycaps now

function cherry_cross(slop, extra_vertical = 0) = [
  // horizontal tine
  [4.03 + slop, 1.25 + slop],
  // vertical tine
  [1.15 + slop, 4.23 + extra_vertical + slop],
];

(I removed the divide-by-three for my personal implementation just so the entered slop value would correspond to the exact amount of clearance)

Is it be possible to create multiple lines of text?

Hello,
Thanks for sharing this amazing work with the world.

I was guessing if it will be possible to create two lines of text on the same keycap. Something like the may and secondary function of the key. Or maybe being able to position a different text on each corner, or something like that.

Thanks!

Please suggest "cherry_stabilizer" for stabilized()

The wiki suggests using "cherry" in the "type" argument for stabilized(), but this will generate extra cherry keystems rather than cherry stabilizers (which super duper don't fit on my Cherry-stabilized Pok3r).

I think this should be suggesting "cherry_stabilizer"?

Parallelize layout render

To render a blank layout of 60keys it takes ~7 min on my project.
To reduce the time to 2 min I have to render each row in a separate openscad process.
Is there any more convenient way to do it ?

[Enhancement/Feature Request] MT3 Profile

I really love this library, it's fantastic! However, my favorite keycap profile is absent!

Here's a write-up by the creator, Matt3o, about the profile.
https://matt3o.com/about-mt3-profile-and-devtty-set/

I'd love to see this in here, and hell, I'd even buy you a set of MT3 @rsheldiii, should you choose to enter this profile into the library. I lack the technical expertise, as well as the calipers and other tools, to make this happen.

Any thoughts on if it's possible?

Support for ANSI keyboard layout

I was wondering if there is a way to generate the standard ANSI 104 key layout with your library, does the generator support 1Ux2U Keys in the vertical orientation?

Key Length

Unable to input any key length as decimal (3.5 or 6.25). Using OpenSCAD Customizer.

[question] How to achieve a smooth curve across all keys?

Hello, I came across this sculpted keyset and was inspired to recreate it using KeyV2

Desired effect

printed_ergo_keys

My attempt
module render_key(info) {
    
    pos = info[0] - [4, 2.5];
    
    x = pos[0];
    y = pos[1];
    
    x2 = pow((x + 2) * 0.75, 2);
    y2 = pow((y + 0) * 1.75, 2);
    y3 = pow((y + 0) * 1.20, 3);
    
    tilt = y3;
    depth = min(max(7, x2 + y2), 12);
    
    $top_skew = 0;
    $dish_depth = 1.2;
    $dish_type = "spherical";
    $dish_skew_y = 0;
    
    $top_tilt = tilt;
    $total_depth = depth;
    
    cherry() key();
}
Results

render

image

image

I hope these screenshots do justice in showing how choppy my results are

Is there a recommended or built-in way to achieve the desired effect?

ISO-enter

I am having problems making a correct ISO-enter. The code I am using is:

translate_u(0,0) iso_enter() key();

Please find the attached pictures of the enter it generates.
As can be seen on the pictures, there's something wrong in the elbow point and the stabilizer parts (sorry dont know the name) come out of the keycap.

isoEnterBottom
isoEnterTop

Legend Position on function()

What version of OpenSCAD are you on?
2019.08.04.ci3200 (git 4952cb9a)

Describe the bug
nothing happens when the position is changed in the legend function

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'keys.scad'
  2. paste following code legend("F7",[-1,0],3) cherry() oem_row(n=1) key();
  3. the key legend don't get moved

Stem by itself – no keycap?

How would I go about generating a stem by itself (to glue into an artisan keycap)? I've tried setting top & wall thickness to 0 with no luck…

OEM with box or rounded stem causes supports to protrude key

Hi.

Brand new to your fantastic key design tool. I'm trying to print some custom OEM row 5 (escape) keys for some friends. But I've run into a bit of an issue, probably due to being unfamiliar with OpenSCAD and your library.

I initially printed the OEM key with the default stem, but forgot that I use Kailh Box Jade key for my escape. So I went to alter this to the rounded_cherry stem but desired to include stem supports to help in the printing. (I'm printing on my own Form2 SLA). The issue is best described with the image bellow:

image

As can be seen the "tines" stem supports protrude the outside of the key. If I change the key profile to dcs this is no longer an issue. But I would like to print both oem and dcs types for friends, depending on their keyboard.

Do you know how I could fix this?

WARNING: len() parameter could not be converted, in file src/libraries/scad-utils/trajectory.scad, line 7

What version of OpenSCAD are you on?
OpenSCAD-2019.12.21 and some earlier

Describe the bug
scad-utils generates warnings in the terminal when testing if arguments are a list

Additional context
creating this now to keep track of it - this was caused by an update in behavior in OpenSCAD, where checking len() on a non-list returns a warning now. This does not currently affect behavior, so that's good, but it would be nice to get rid of

Stemless keys have incorrect overlapping model

What version of OpenSCAD are you on?
2019.05

Describe the bug
When rendering a key without a stem, a second, larger key model overlaps the key we want to render.

To Reproduce
Render the following code:

use <src/key.scad>
include <src/settings.scad>
include <src/key_sizes.scad>
include <src/key_profiles.scad>
include <src/key_types.scad>
include <src/key_transformations.scad>
$stem_type="disable";
key();

Additional context
Removing or commenting out $stem_type="disable"; fixes the rendering. Screenshot here

Support for lithophany

With RGB gaming keyboard being the de-facto standard for gamers, I thought it could be cool to support litophany in the library.

This would be achieved by "carving" the symbol on the keycap on the underside of the top surface of the keycap. However, because of the stem being there, a different joint between stem and top surface (with a gap) should be engineered.

Alternatively (but less cool!) one could bypass the stem problem by having lithophanic symbols on the front (vertical) face of the keycap.

Just an idea. I use a blank keyboard (no symbols on it) to do office work. How cool would it be to switch on the RGB at night and having the same innocent keyboard turning in a badass frag-ready FPS gaming machine? :P Clark Kent meets Stella Pajunas-Garnand!

Keyboard health concerns

This is a really awesome generator! However, I am questioning whether 3d printing keycaps is a good idea. According to this and this, keyboards and 3d printed parts both have a huge bacteria problem. Printed keycaps put both those problems together!

I think this should be mentioned in the readme.

Any ideas on how to lessen the risk? Unlike when printing kitchenware, I don't think food-safe filament is going to help!

Legend fails to render on g20 keys

What version of OpenSCAD are you on?
2015.03-2

Describe the bug
When using g20 keycaps "g20_row(x)" legends that are not children of the key function "legend(x) key();" do not render, regardless of whether or not the legend is set to inset through the key function "key(inset=bool)"

To Reproduce
Steps to reproduce the behavior:

  1. Type and render: "1u() dsa_row(5) cherry() legend("1",[0,0],6) key(inset=true)".
  2. Key should render with the legend defined in the code.
  3. Change code to: "1u() dsa_row(5) cherry() legend("1",[0,0],6) key(inset=false)" and render.
  4. The legend should no longer be inset, but the key should be otherwise unchanged.
  5. Change code to: "1u() g20_row(5) cherry() legend("1",[0,0],6) key(inset=true)" and render.
  6. Key will render as a g20 version of the key in step 1, but will not have a legend.
  7. Change code to: "1u() g20_row(5) cherry() legend("1",[0,0],6) key(inset=false)" and render.
  8. Once again, the g20 variant of the key will fail to render its legend, regardless of inset parameter.

Add tooling for automatic customizer.scad generation

OpenSCAD and Thingiverse's customizers both require the variables being customized be local to the file opened. Thingiverse's customizer goes further and requires the entire project be in a single file.

I wrote a Gulp task to cat everything together a few years ago but it's an incredibly simple task that could:

  1. be done in a git hook via a bash script
  2. be tested for with CI

both or just #1 would be fine

How do i indent the legends

Hello I am new to coding and I wanted to ask how do I indent text on a keycap that i am making. I dont know if this is the right place to ask or not. Thank you ahead of time for the assistance

example sa_ergo produces multiple keyboards

What version of OpenSCAD are you on?
2019.01

Describe the bug
opening sa_ergo.scad from the examples creates two keyboards

To Reproduce
i just opened sa_ergo.scad in openscad.

Additional context
Add any other context about the problem here.
Screenshot from 2020-12-01 13-48-09

Front legends on 60% default or in customizer

Hi, I have very little coding experience but have been picking up a little of how to utilize OpenSCAD thanks to this project :) I made an entire set of front-legend keycaps individually (not through the customizer) before I realized I could theoretically just use the premade 60% default keyboard (which would take significantly less time...) The only problem is that when I add the following to the 60% default's coding:

$front_print_legends = true;

and try to render, it comes back within seconds appearing the same. The same coding for the 60% default with top legends takes about an hour to render and the changes (such as font change) are visible. I'm not sure if I'm using the wrong code, it needs additional coding/lines to do this, or if this is just because the feature is still in beta.

Also, as far as I can tell, the customizer has no front legend capabilities. Is there a workaround for this?

I appreciate any advice. I feel like I am missing something obvious. Thanks!

Rotate legends on keycaps

I could not find a way to rotate the direction of legends on a keycap. For example: to model a vertical keycap for an ErgoDox style keyboard
Screen Shot 2021-01-07 at 10 36 52 AM

Is this possible? Did I miss something simple (highly likely)?

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.