{"id":15540297,"url":"https://github.com/rm-hull/programming-enchiladas","last_synced_at":"2025-04-14T22:37:22.666Z","repository":{"id":7538911,"uuid":"8891070","full_name":"rm-hull/programming-enchiladas","owner":"rm-hull","description":"A ClojureScript-based HTML5 Canvas and SVG Graphics Playground, much like http://bl.ocks.org/ but specifically for showcasing small ClojuresScript code demos: The underlying agenda is to show how small simple functional programs can generate complex behaviour.","archived":false,"fork":false,"pushed_at":"2016-10-02T18:30:52.000Z","size":762,"stargazers_count":138,"open_issues_count":2,"forks_count":18,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-10-03T12:17:43.726Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"programming-enchiladas.destructuring-bind.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rm-hull.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-03-19T22:36:46.000Z","updated_at":"2020-11-13T20:54:13.000Z","dependencies_parsed_at":"2022-07-09T20:31:18.007Z","dependency_job_id":null,"html_url":"https://github.com/rm-hull/programming-enchiladas","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fprogramming-enchiladas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fprogramming-enchiladas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fprogramming-enchiladas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fprogramming-enchiladas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rm-hull","download_url":"https://codeload.github.com/rm-hull/programming-enchiladas/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248974717,"owners_count":21192187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-02T12:13:28.801Z","updated_at":"2025-04-14T22:37:22.639Z","avatar_url":"https://github.com/rm-hull.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[Programming Enchiladas](http://programming-enchiladas.destructuring-bind.org)\n======================\n\nA ClojureScript-based HTML5 Canvas and SVG Graphics Playground, much like\nhttp://bl.ocks.org/ but specifically designed for showcasing small\nClojuresScript code demos: The underlying agenda is to show how small simple\nfunctional programs can generate complex behaviour.\n\nI was getting sick of setting up yet another lein/noir for every new folly, so\nit made more sense to have a framework which loads public ClojureScript gists\ndirectly from github, compiles them on the fly and serves them out.\n\nThis allows shared/social and version-tracked editable ClojureScripts to be run\nby anyone anywhere with a reasonably modern browser (tested in\nChrome/FF/Safari).  In order to compile and run any .cljs files in gist\nhttps://gist.github.com/rm-hull/5278162 (for example), go to\nhttp://programming-enchiladas.destructuring-bind.org/rm-hull/5278162 - see\nbelow for more examples.\n\nAs part of the available 'stack' (for want of a better word), the\nfollowing client-side clojureScript bindings are available:\n\n| Function | Notes |\n|:---------|:------|\n| enchilada/canvas | A canvas object, which you can resize, move, whatever. |\n| enchilada/ctx | The graphics context, on to which you draw your stuff. |\n| enchilada/svg | An SVG object, on to which you insert DOM stuff (initially hidden). |\n| enchilada/proxy-request | Returns a URL which will be proxied through self. |\n| turtle.* | https://github.com/rm-hull/turtle graphics library |\n| dommy.template/* |  Templating based on Clojure's [Hiccup](https://github.com/weavejester/hiccup/) html templating library. |\n| monet.* | All the https://github.com/rm-hull/monet canvas drawing functions. |\n| jayq.* | https://github.com/ibdknox/jayq jQuery bindings. |\n| c2.* | Kerninglabs C2 data visualization library. |\n| vomnibus.* | https://github.com/lynaghk/vomnibus bindings. |\n| cljs.core.logic/* | MiniKanren implementation. |\n| cljs.core.async/* | Communicating sequential processes implementation. |\n| tailrecursion.priority-map/* | Clojurescript implementation of data.priority-map |\n\nThe following javascript libraries are loaded and available:\n\n* http://jquery.com/ v2.0.1\n* http://arborjs.org/ v0.9.2\n* http://www.senchalabs.org/philogl/ v1.5.2\n\n**NOTE**: This software is definitely alpha work-in-progress, please treat as such.\n\n## Examples\n\n* [WebGL Photospheres](http://programming-enchiladas.destructuring-bind.org/rm-hull/9842972)\n* [OM - Chess Demo](http://programming-enchiladas.destructuring-bind.org/rm-hull/8906851)\n* [3D Polyhedra Taxonomy](http://programming-enchiladas.destructuring-bind.org/rm-hull/9261323)\n* [Big-Bang - Rock Paper Scissors](http://programming-enchiladas.destructuring-bind.org/rm-hull/8723389)\n* [Big-Bang - Parametric Equations](http://programming-enchiladas.destructuring-bind.org/rm-hull/8776719)\n* [OM mouse move](http://programming-enchiladas.destructuring-bind.org/rm-hull/8617445) vs. [Big-Bang mouse move](http://programming-enchiladas.destructuring-bind.org/rm-hull/8617788)\n* [OM - Google Maps](http://programming-enchiladas.destructuring-bind.org/nodename/8762403)\n* [OM - Contacts Demo](http://programming-enchiladas.destructuring-bind.org/mynomoto/8787765)\n* [WebGL Planets](http://programming-enchiladas.destructuring-bind.org/rm-hull/7778650)\n* [Tumbling 3D Torus](http://programming-enchiladas.destructuring-bind.org/rm-hull/7098992)\n* [Boids!](http://programming-enchiladas.destructuring-bind.org/rm-hull/7145520)\n* [Dijkstra's Maze Solver](http://programming-enchiladas.destructuring-bind.org/rm-hull/6857333)\n* [US Choropleth C2](http://programming-enchiladas.destructuring-bind.org/rm-hull/5514551)\n* [World Choropleth C2](http://programming-enchiladas.destructuring-bind.org/rm-hull/5537192)\n* [Psychedelic Animation](http://programming-enchiladas.destructuring-bind.org/rm-hull/5522065)\n* [Quadratic Residues \u0026 Fixed Points](http://programming-enchiladas.destructuring-bind.org/rm-hull/5694738?optimization-level=simple)\n* [3D Auto-stereograms](http://programming-enchiladas.destructuring-bind.org/rm-hull/5736733)\n* [Champernowne's Constant and other transcendentals](http://programming-enchiladas.destructuring-bind.org/rm-hull/5233367)\n* [Flower of Life](http://programming-enchiladas.destructuring-bind.org/rm-hull/5257851)\n* [Turmites](http://programming-enchiladas.destructuring-bind.org/rm-hull/5259306)\n* [Chroma-Spirals](http://programming-enchiladas.destructuring-bind.org/rm-hull/5278162)\n* [Heighway Dragon](http://programming-enchiladas.destructuring-bind.org/rm-hull/5285431)\n* [Penrose Tiling](http://programming-enchiladas.destructuring-bind.org/rm-hull/5732587)\n* [Arnold's Cat-map](http://programming-enchiladas.destructuring-bind.org/rm-hull/5491968)\n* [ClojureScript says Boo!](http://programming-enchiladas.destructuring-bind.org/rm-hull/5201050)\n* [Turtle graphics demo](http://programming-enchiladas.destructuring-bind.org/rm-hull/5229369)\n* [Compilation error](http://programming-enchiladas.destructuring-bind.org/rm-hull/5272126)\n* [Ajax example (from stack overflow)](http://programming-enchiladas.destructuring-bind.org/mjg123/1098417)\n* [Core.async - Daisy chain benchmark](http://programming-enchiladas.destructuring-bind.org/swannodette/6542719)\n* [Core.async - Rob Pike](http://programming-enchiladas.destructuring-bind.org/swannodette/5903001)\n* [Core.async - Hello world!](http://programming-enchiladas.destructuring-bind.org/swannodette/5882703)\n* [Core.async - Martin Trojer's Sine Generator](http://programming-enchiladas.destructuring-bind.org/rm-hull/7758795)\n* [Core.async - Timothy Baldridge's Blocks](http://programming-enchiladas.destructuring-bind.org/rm-hull/8262502)\n* [Core.logic - simple demo](http://programming-enchiladas.destructuring-bind.org/rm-hull/6816151)\n* [Core.logic - Classic AI](http://programming-enchiladas.destructuring-bind.org/rm-hull/6816234)\n* [Core.logic - Unit Test Suite](http://programming-enchiladas.destructuring-bind.org/rm-hull/6859633)\n* [Core.logic - Einstein's Zebra Puzzle](http://programming-enchiladas.destructuring-bind.org/rm-hull/6952960)\n* [ClojureScript Quine](http://programming-enchiladas.destructuring-bind.org/rm-hull/7060918)\n\n## Prerequisites\n\nYou will need [Leiningen](https://github.com/technomancy/leiningen) 2.1.2 or\nabove installed.\n\n## Running\n\nTo start a web server for the application, run:\n\n    $ lein ring server\n\nThis will start the server at port 3000 or thereabouts. Then create your\nClojureScript gist, and slot in the login and id, and hack on.\n\n**Optional:** If a connection to a MongoDB database is supplied via config variable\nMONGODB_URL as below (substitute values for user, password, host and db as appropriate),\nthen minimal usage stats will be written out for gamification purposes:\n\n    $ export MONGODB_URL=mongodb://user:password@host:10046/db\n\nIf using heroku, add a config param:\n\n    $ heroku config:add MONGODB_URL=mongodb://user:password@host:10046/db\n\n**Optional:** By default, Github aggressively throttles requests if requests are anonymous\n(60 requests per hour); Set GITHUB_OAUTH_TOKEN to a generated authentication token to\nincrease the rate limit to 5000 requests per hour:\n\n    $ export GITHUB_OAUTH_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxx\n\nor\n\n    $ heroku config:add GITHUB_OAUTH_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n(See application note on authorizing 3rd party access to github here:\nhttp://developer.github.com/v3/oauth/#create-a-new-authorization)\n\n## Troubleshooting\n\nQ. Why doesn't my clojurescript compile, it looks ok?\n\nA1. Did you include a namespace? e.g. `(ns example)`\n\nA2. Did you name it with a .cljs extension?\n\n### NEW! Now supports source maps\n\nClojurescript debugging/line-stepping in Chrome is now supported. And it works really well! :)\n\n## TODO\n\n* ~~UI -\u003e home page (carousel of recently viewed, most viewed, rated, etc)~~\n* UI -\u003e allow in-page editing\n* ~~Stats / tracking~~\n* More examples\n* Documentation\n* ~~Stop using local storage - using Heroku's ephemeral FS not so good for permanent storage (github, Amazon S3 instead?)~~\n* ~~Sitemap based on mongo-db rather than Heroku's ephemeral FS.~~\n* Automatic screenshot capability with https://github.com/ariya/phantomjs/wiki/Screen-Capture\n* ~~Add CORS headers to proxy~~\n* ~~Implement simple big-bang (http://docs.racket-lang.org/teachpack/2htdpuniverse.html#(form._world._((lib._2htdp/universe..rkt)._big-bang)))~~\n\n\n## Known Bugs\n\n* ~~Routing does not support private gists properly~~ FIXED: 21/12/2013\n* Arbor/PhiloGL externs don't work properly - must be compiled with no optimization\n* Capture all error scenarios (inc. Google closure warnings and errors \u0026 trap javascript errors)\n\n## Contributing\n\nIf there are other ClojureScript (or JavaScript) libraries that would be\nuseful to include, please create a\n[new issue](https://github.com/rm-hull/programming-enchiladas/issues/new).\n\nThere is plenty to do, let me know if you can help out; submit a request\nfor commit access.\n\n## References\n\n* _The (New) Turing Omnibus_, A.K.Dewdney\n* http://himera.herokuapp.com/index.html\n* http://codepen.io/stuffit/pen/KrAwx\n* http://js1k.com/2013-spring/demo/1362\n* http://bl.ocks.org\n* [Closure Compiler Externs Extractor](http://www.dotnetwise.com/Code/Externs/)\n\n## License\n\nCopyright © 2013 Richard Hull\n\nUse/copy/fork as per: [Creative Commons](http://creativecommons.org/licenses/by/3.0/legalcode).\n\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rm-hull/programming-enchiladas/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frm-hull%2Fprogramming-enchiladas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frm-hull%2Fprogramming-enchiladas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frm-hull%2Fprogramming-enchiladas/lists"}