GithubHelp home page GithubHelp logo

cnmat / cnmat-odot Goto Github PK

View Code? Open in Web Editor NEW
114.0 114.0 11.0 54.37 MB

Multi-paradigm Dynamic Programming

License: Other

Max 85.00% Shell 0.18% Makefile 0.46% C 13.82% Perl 0.02% C++ 0.50% JavaScript 0.01%

cnmat-odot's People

Contributors

adrianfreed avatar equilet avatar ilzxc avatar lvangelis avatar maccallum avatar rafaelvalle avatar ramagottfried avatar samgmansfield avatar wagne342 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

cnmat-odot's Issues

value() address check

some oddness with value() and address strings


----------begin_max5_patcher----------
751.3oc4X9zjZBCFF+L9oHSNoSsJI7W6sdom6c0oCBotYKFrPvZ6N628BIvX
bUbC5tr5tW.SH7xC+xKuuOiOzy.tHYKICB9BXJvv3gdFFhoJmvnZrAbUv1v3
fLwxfIiVQxxBVRfCkWkS1xEWY7JZDkx.NH.B6AlwFq7KLXFbbVLMhjNFOCVL
W88GSYjvjblHHVUStNkjQX7.NMg8iTRHWJQaG2QlCA3I3xSlUG.yqtKV9pjb
dLgKjJpNVA7v6nrkGIN99kmPNhHYaqDJZj7scw8eFYVK0elv3rfUDwk9ZJMH
VEBgIwIox3apJuhGfRfkBj+20D4RgPU4SY0pGq7Lyn+SrZTQfJm8wd8JOLTy
srl1vjaOvSibGOAibMuLhWEFI2k7F40.uQOOueCnHi7mB0c.DSFQ1tNETrJ5
RV+MAw4j9femmvI8GO.7IP0WESmZNeNXvrYC2MCZ97AvVm5JAIZhU4IKKK4n
FPI9LP42xii+dP3uH7FfJ5kCpmnZRQ14tRFHQIiCKibzhH3SmQ65fJYlO5xx
nqBimmRIDKbC6CV23kPZL4OmU.2moDRcJqi8EV01SsbMR1DnwTe6WiT+t.oq
KDPcQBMIK18kgrXARqqvz.Xctxqoz.XaCPuztc160saxHmSfS2y.mT1aas4i
4zaFb+Z00ipVxIs60BvpuusIeHrsoM5PtSz0Al+sqALUqWu9lwjHUOuXN23V
wT95t0bBaiOvqTSbx9CgUo1lhokmGq2SVdZKgzw6B98f0kVBFsLgz0dPD2nv
KvS9ymDuFkyuOkxRxSCqex016A6dWhHYbJS3lScQ38VzcznHh35l02FMKXQL
Q.hiueosdv5nGyhEg5F8Xoidr6N83pidb5t8KGc4SGoGz0EezI8o6TiNaVS5
rbYeMTS2U4QmBOVcWd7UEar0jMmSdirEVv50aHoYUgTHjhV52Ksl5NTLjxjC
E8EgojMz50aKlIHsnyMunscdprw6VeWXuxmyi89OcOf8IC
-----------end_max5_patcher-----------

o.table info should be its own bundle

When a single instance of o.table needs to differentiate between (info) message and actual data output, I use the following hack:

<pre><code>
----------begin_max5_patcher----------
538.3ocyU90aSCCD.+4jOEV9gIPpzk3zz0xG.DOg3c.gbRt14QhcUrSoio8c
Gae0kDZYJckg3k33K2c97u6O4g3HZgZGnoj2R9DIJ5g3nHuHmfn86inM7ck0
bsWMZopoAjF5D7aFXmwKWHWoBBWojFs3Gf6CoroI6EKp7ZpJt6MrjftxtFgr
FLdumFbP65B29jC1ZUS0YB5kz6fj7F+AQeOTuELhRN4CPGD7+lVPaiWtQnje
sEJM3kMc4BquIYIybKI6eP9RvJto7VgbcOKx7JkNOGsy8j4MwYwiwwtGStPH
VwM7wCwzk+yf3w3fkm2mGytHdHguauPGgC0TwJRgpSV8pqKsKlWSt5pffh6M
.J7LH1MOIwFxG134CZk49M.BG565pq+Hu7afMGOX2SUgMCIJtvXyuHjpl1.Z
MeMbDUu1cY9rDIJIw91ATRNzVVKjnHmIYiGvy6ebkpZUKd2R52lYuj850FjJ
XmLUjdAohQfbFCIetO1ls3Yh7+DvOuQio4z+a.CNlKiMM2RmE+satM7hZ3L.
S1Yz79BClkXkxMmrE0atuC529yp2cN4CokV00VFN7vXJxuZPp.sQH8+AquR1
VMR5AktUTUAx9y0qDZGf8.L4j4sQGOYiIdFFzunwS9XhmrmY7foO9lMagV8d
e5CEaY8c37r4S7aERbquXi1BaEA8QE3s1pG6nUSWKV.tawbZr6bdL9m.9N5N
0C
-----------end_max5_patcher-----------
</code></pre>

However, it'd be great if the table data would be wrapped inside of the subbundle:

/table/info [
    /name myTable
    /count 22
    /bytecount 352
]

o.table @name attribute fails to set @name attribute

Snippet:

<pre><code>
----------begin_max5_patcher----------
660.3ocyWF0jZBCDG+Y3SwN4k1aFOEPD0qubO1m5WfZmNQXQyIj3PBpWu49t
WRBp3oWq5Us9BLYY2jke6eRVdw0gLVrBkD3A36fiyKtNNFSZCN0icH4zUwYT
owMhncNJkzIHok8ooBtRx9EpepePauZyrDq6ie5de+09pvUpXQlnvthdUd23
heaO3G0dxKyY7LTYVzfsFEkp0V8aj.bZtIAHeEyVfJVLE9FVtIGsQoddNZWX
BYyBMu.kHWQULA+mEXrx5Q2fA5Tp6vdMywsQQUwSY7IMhHHzyFg8com4VfIH
cLu55puz5bwrFclmzIUH.+Q7NioEPP6f0Njw3XrnjqZRrin33cKWb1Gycsbc
PuFTta3YRYNtrhA6gXQaEcbFBOpybnifeBh8AjCAI++CJ39CsrI7TUvgV152
+Cofu.rs+0msum.7eDjhE44U0t8nTFlptONiEOCDbPMEAsEv7RCJAHQDVPyJ
QITMUrIbLA9LiCwTIBhT3wY3y2ATdBLhTxmwEK4iH65gFJ28kQ7Q7kSopOIg
DTxJz0lGN3VJgGcYJ5OVlRKlLVO1aSn6V37N9B2ApN9QAl5xf5sIL6hqscQz
vUTFTnTc7R3vaGIbMi78BtnemqYTmSCRcugfTuZHEcE1L7znTvsCkp644Zbh
wowH+aGFEUynvODidutBmi3rTVwIwlCKftx8yU2zQvvt5a8hr6L8F5Xl.ywQ
u4eULSn19tHSJJKhWu70ckAa68o5jNEiaZXpgO5eSA723zTVRBxadhTBSpEh
FB5cvZ2wlNZz+Wymcy4KZ53cDoS+yLcr0N574KvBY8TZxjJg8S1e1HpkYHia
GZzZjBbAas+VGnEUhGUkxorvp+VMHh3pWmWc+MPNTgXp
-----------end_max5_patcher-----------
</code></pre>

o.timetag issue

Hello everyone! Hope all is well,
I ve noticed something weird,
On windows o.timetag adds the time stamp to the bundle without the quotation marks. That leads to o.route not being able to route that message. Could you please let me know if that is the case in general or this is an issue that is already resolved in newer o. versions?
Many thanks


----------begin_max5_patcher----------
575.3oc0V0zbaBCD8LYl7ePCmwDjPX.eqW54dnmZSlLxfBQofjGgH0sY5+8p
OL1XOwtjZGlIWPCqV18sOV8V8x0W44uTrl15CV.9Nvy6EsEOqMiEudCd9Mj0
E0jVqi9hvFZaKoh5GrYaEcspPTKjt.EEFEL3ALLBbWuqOH3JNogZizmjLR81
nvJcge4SyfIwaMuhnJdjwqtWRKTtD.wXWjyPlEbLzrfhFlHdWCiWSUVLiFl9
V1usoGZ93cdK5T8tC6M6ro90JpKw99f6ra8mquxrpWBFMuwo+TWa6QZa3SoN
OTvMJVyNNcjDUb5IIpXbtknPXyRZ5kkmPGmmB.9etqt9KjhePUmCqoDUU0zW
u1iNcsCwgIAf3j9h9jkNbWnjZZWQk2S4jk01J5M2mv3p2iVEMtjBcU7F6RxF
SOhimRxlpiRKI7pygidcYH6V27fP.f.DHF79oQgFCoN2dhCFg+HHPMNF8VtU
nRWMv3YP3LD9qn3EIYKvogvLHNO9a2x2FgZFmVH53p8pxK+.CT9nFX.SGLvH
F+Qcfg4GfhT8+Mx.gGSmatskMKerxlWdhxkQaGzg2PwhayFGPeshNYQeD2Vr
fAfuj1pXbhhI3CcyLFcnaOxJKo78j9KYslwAVhL53+Su3PyzYqO5MoP6P53H
PybKsIFZnwwY3o+2o41H+ankM4.KaLvBcVvZyIUxpUOSksahrCQZEsmbx7yC
buy3t2cRA9R5yr9OIwYhH0hRJshTmzoksNatudGaB0O9KnvrLKK
-----------end_max5_patcher-----------

o. release help patch review

Minimize verbiage.
Maximum self description in messages.
The messages are the API
GIve many examples of use in tabs
Minimize dependencies on functions outside "o.", baseline Max/MSP and PD
Include a testing tab with a modest set of verifications of basic functionality
No branding
No authorship (these go in the abstraction or external)

o.port needs a bypass

when no aspects have been opened.
We need this for efficiency but also because we probably won't advertise aspects as port of the o. 1.0 release.

o.message and o.pack behave in an inconsistent manner

Repro steps in this patch:

<pre><code>
----------begin_max5_patcher----------
558.3ocyVFrbaBCDF9L7TnQSO5PPfg5lGfN8R6z6MYxHCqcTBHQkDttMSd2K
RBLXWGblPZquHOZ0Z1+8ies1O56gWJ1BJL5Jz2PddO564YCYB30t2CWR2lUP
U1zvYhxRfqwybmogsZa7URQ4WoYOfVCZEhhRmewRlFspPP2k7J45kljCCBai
TQ0Y2w3quUBYZmLhhVzbLhDmX+H0jLJpYEcS2iQv0bZIXq6mfhMflkQQeApg
tJwxsGJVd+Eocw30kLdQi5LGQ5CJp0cQCGTAE6W1JPhBBMQex22rL6MfSeFT
J5ZnCUwQuRTQhCR5I0BxDIUx+GRwgezT8+.TURFWavRqwBOhkYt0jPBsf3Co
SjCwmsbn03LBJlmLfDDxhIhhnyJTHBpLSXtT88ZpDtTJzTMSvOsy38N+Q7Tc
FjQwgiE5eVAthi+XcQgw5BMp4lixLxaGyDAk66N1gsC4E5Z76HWiQmzF0hsj
oNBN931nnmia8zxzCYhBgzchUH8KjAJ5uFWUErbPtatrYHcSgpp0Cqyyhv3g
SlHICD7Pa03SbpnxFTqA4s.mtr.FdYaD1002Ig8+HxATZ.NreMbAie3eGv1Z
l36yHknVl0UztWxn91KGTZF2c+rOo8y4NVdNvG1N4LkoCsn43urdoxwvzSJm
3yL8P92ImWBcdkpwYknUUa.op8QZERyEq6cWkSmY2x3tsVmNVBaXc4GaiPkM
2pzMWopktQMaWjh8M04I+eifOfX4
-----------end_max5_patcher-----------
</code></pre>

Summary:

When a floating point value is provided to an o.message (with $1 substitution) and an o.pack object, their outputs differ. Specifically, o.pack packs the address with a 64-bit float. In constrast, o.message packs the address with a 32-bit float.

o.table and getkeys

The "getkeys" msg to o.table doesn't seem to work - I would expect that the msg "getkeys" outputs a list of keys.

Is this is the case? I seem to remember this working a while back, but I haven't used o.table in a while...

bug

not really a bug, just wanted to say hi!

o.expr help file love needed.

Here is an itemized list of errors one gets when evaluating the example function usage for the current list of functions in o.expr. I'm including it mainly because I still find the example uses helpful, even though they might not mimic the exact functionality of what you might type in real use cases.

I might argue that you should supply defaults in all cases, so that the user has a more concrete idea of how to use these:


multiply: osc_expr.c: osc_expr_err_badInfixArg(): 4808: invalid arguments for function: bad argument for expression "$1" * "$2" . arg 1 is a string
osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

divide: osc_expr.c: osc_expr_err_badInfixArg(): 4808: invalid arguments for function: bad argument for expression "$1" / "$2" . arg 1 is a string
osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

++: osc_expr_parser.y: error parsing expression: /result = $1++;
syntax error

decrement: osc_expr_parser.y: error parsing expression: /result = $1--;
syntax error

+=: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

-=: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

*=: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

/=: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

%=: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

??: osc_expr_parser.y: error parsing expression: /result = $1
--> ??
$2;
syntax error

++: osc_expr_parser.y: error parsing expression: /result = $1++;
syntax error

--: osc_expr_parser.y: error parsing expression: /result = $1--;
syntax error

+=: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

-=: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

*=: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

/=: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

%=: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

sub: osc_expr.c: osc_expr_err_badInfixArg(): 4808: invalid arguments for function: bad argument for expression "$1" - "$2" . arg 1 is a string
osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

mul: osc_expr.c: osc_expr_err_badInfixArg(): 4808: invalid arguments for function: bad argument for expression "$1" * "$2" . arg 1 is a string
osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

le: osc_expr_parser.y: error parsing expression: /result = lte($1, $2
--> )
;
unknown function "lte"

cross: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

det: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

assign_to_index: osc_expr.c: osc_expr_err_unbound(): 4816: address is unbound: =: address ��� is unbound
osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

list is listed as "/list" and doesn't print in the comment box

map: osc_expr.c: osc_expr_specFunc_apply(): 410: error parsing expression: unrecognized function $1

lreduce: osc_expr_parser.y: error parsing expression: /result = reduce($1, $2
--> )
;
unknown function "reduce"

rreduce: osc_expr_parser.y: error parsing expression: /result = reduce($1, $2
--> )
;
unknown function "reduce"

eval: osc_expr_parser.y: error parsing expression: $1;
syntax error

prog2: osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

apply: osc_expr.c: osc_expr_specFunc_apply(): 410: error parsing expression: unrecognized function $1
osc_expr.c: osc_expr_specFunc_assign(): 749: error evaluating expression:

Do we need an "o." shell gui object?

These tiresome relentless problems from Max's object box could be finessed if we built an o. gui object box which didn't process its arguments with the insane legacy ",", """, ";" junk that is getting in the way of template metaprogramming and a decent code box etc. etc.
WIth some visual branding we could even drop the need to type in the "o." in front of the objects.
What is the simplest gui text object example code we could build a prototype of this idea from?

o.expr - lreduce's div doesn't seem to function as expected

I'm including an example here- I believe the call to div in lreduce() is actually calling 'add', but I could be mistaken:


----------begin_max5_patcher----------
547.3oc0U97aaCBEG+r8eEHeZSJy0fcb5lzNrK67tuTMQLujPGFh.bV5p5+6
ieDu51l03zIE0dAKd734u7g2WwsoIYKT6.SF5SnuiRRtMMIIDxGHY+7jrV5t
FA0DRKqQ01BRa1j3ZVXmMD2tFL.xrV0IXna3fajwWtDztjQZvzIrl77798I3
RnQ0ICalrOHmEJkZw0efzm3RkzJosPXkun4TQ+JxtVUmU.1fvJ5yWuZQXddw
fJX3+NTAL4ugcamK62MdevMTayZtb0OzPiMhkxBeoP3oC+TVlWftxum6RS8C
SFI9jvubGumPOUNraiFcQDTnOiDZf00.uiw2Ne9DzEac5Qoee1AHU0ohJ7yC
lXl1a1.Q.j80Ng3azleBNsd0oRuYAdQlUlO0QuOdYXVwKjdp7VvXnqfm.v8.
BUilhpPkHBBOW1iSBdzscSeovzqjFkPoim6vo99Ar+.ehX+e.axy.65XyII9
OKBvtr5b.6CzXhqeKyRRcsuikTDabKl9e03dp1dJicDaOt70rsGWNz1SJpdc
a6wUukaUw3YdJeDaenrAR7n26CUzG+g2.FUmtoWT89Yz8mGFXrbI0xUxgIU9
fjVyYLPN78YF2PWHf.6KNXuvn0S4Xzi6lEgOK5w+P7Q0i+AlyjdF080iD830
SrchtYyVPa1WyfTbV2qi1g5IgobYbZvxjogs797qBQnZWCs00M2oi1tcWVmk
5+O2k9G.POneXA
-----------end_max5_patcher-----------

Time based examples for release

o.metro, o.poissonprocess are good examples of why you need o.
and timestamp based scheduling.
We also need a simple sequencer example that isn't based on o.table.
John, can you point us to some of your example code from last year's class to
build from?

o.diff

The basic use case of testing "o." patches is to test output against known good answers.
The o. set operations don't cut it for this because they operate on addresses not values.

o.diff would output a list of bundles collecting up addresses whose values differ, addresses that exist in the first and not in the second inlet, vice versa and eventually a reflection of difference in the order the addresses appear.

o.context doesn't get the full argument list that patcherargs does

This is probably because of a private API in Max/MSP that patcherargs uses.
This is perhaps related to the documented problem that patcherargs in patchers can only get args 1-9

Is it better to pull the announcement of arguments from o.context or just label that this is
partial in the address space?

o.expr type promotion

automatic promotion to double should be dropped in favor of promoting to highest resolution present in the expression. Do we support all the input syntax for floating point and integer sizes?

o.table silent delete

Proposal to delete contents of a table without output. For example, messages

  • delfirst
  • dellast
  • delnth $1

o.schedule api - output side

we can avoid having multiple outlets by injecting booleans into the output stream:

/late false
/immediate true
/queuesize 3
/queuemax 1000

o.display (was o.show) and PD anxieties

For future research exploration we can explore scrolling history etc. Note that o.show has another important function (persistence) to catch brief messages. This may be hard to integrate into a scrolling history o.display.

For the 1.0 release we just need
o.message 2nd outlet functionality
correct pretty printing of sub bundles according to improvements going into o.message.
flashing dot indicator of new message

o.schedule api input side

The input parameters should be settable with o. messages:

/emptyqueue (instead of reset)
/queuemax 1000

There shouldn't be buffermax (what is that?) at all.

o.expr refactor

Documented in a session with Adrian.

/math/operator/logical

  • && -> &
  • || -> |
  • o.if /foo should be a valid thing

/math/operator/assignment

  • ??= to be added to /math/operator/assignment

/math/arithmetic

  • fmod unnecessary
  • det unnecessary

/math/constant

  • add phi
  • add twelfth_root_of_2
  • add thirteenth_root_of_3

/vector

  • sort is not general (what happens if there's a sub bundle?)

/string/function & /string/operator

  • need to verify the API for concatenation, etc.

/conditional

  • need to document the semantics of o.if LHS/RHS evaluation

/core

  • delete needs to take a list of addresses to delete
  • imu gone
  • tokenize gone (or part of debugging)
  • typetags should be gettypetags (consistent nomenclature)
  • type promotion

o.uniform should be an external

for efficiency and to tap into the C library or posix standard we need my o.uniform patch to be replaced by an external for max and PD.

o.table and read msg

I find that the read message requires a specified filepath. Is it possible to allow for the user to select on on disk when a read message omits one?

Thanks for considering,
jml

o.expr doesn't issue warning/error for bogus parameter names

if you try to construct a new bundle parameter via assign(), i would expect to get some information that o.expr doesn't know what you'd like to do when you don't issue a slash (/) first. Here's an example:


----------begin_max5_patcher----------
499.3oc4V0zabBCD8LQJ+Gr7oFIJKFX+n8Vuzy8dHJxK3rwor1HaSJMQ8+dr
GCaX2nrKQIYUh5E+DyXF+7yiev8mdR.dorkownuiNGEDbuMR.DyEInOP.dMs
snhpgIhkQqYZMcECG1k1vZMPpIDTNdIIG6fTOj3gLGHlHX+4.SYSUq3BVgrQ
.kNoOprwTwLl+Vy7rFiQWzm6JovHnqgL3en3zpMEiW549xa9JYSvZpo3ZtX0
kJVgwWtjYjnogHRVbTrElBPZVT71qhleGrJjDa9ApPgrRp7UBdyGGHCKgnYM
WX2F5s1Z1n9cGDl.Q+2om3PKDdDNfvucpbxdU44SAcEFIIoNHI9SkHaajsay
mpvxHVasBYmFek3K444XWOuCyyCQSHm87Z7Oapp9Es32LyKVsSGgZO2KQYyG
uZukDR93zmNvk302oltXehW5rm5G7IqU8CgeP521mJ24y9egevQvNHK9vhcu
cP16qcfupvGy28+L.p4RritpkMphdUnycCMfdkLsgKnFtTLXR1OqiHONoq4k
kLH+F5Wx0zkULPlhe9C5QSqjwPqc39QfVtC+QvqEGc8xYAbXhsK8egDqqeiV
WeKSo6JsmS1Kr23MJlE5elK7O66kwJ1s79WYtODUYu8XrWcZT96bsKlgsYfE
zN7.9cSfyA
-----------end_max5_patcher-----------

sliposc.c missing error code

This line in the code:
" } // else bad packet not a multiple four length…"
needs to be replaced with proper error reporting. Otherwise malformed packets are silently dropped considerably slowing down development of oscuino among other things.

The best route is to do a full validation here because we never want to see an unvalidated Fullpacket created.

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.