{"id":19514881,"url":"https://github.com/ndp/dizzidotz","last_synced_at":"2026-06-15T17:31:34.902Z","repository":{"id":10767740,"uuid":"59771822","full_name":"ndp/dizzidotz","owner":"ndp","description":"dizzidotz source code","archived":false,"fork":false,"pushed_at":"2023-02-17T21:32:48.000Z","size":14234,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-08T03:55:28.691Z","etag":null,"topics":["circle","es6","functional","noise","rxjs"],"latest_commit_sha":null,"homepage":"http://dizzidotz.com","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/ndp.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-05-26T18:00:41.000Z","updated_at":"2023-04-18T17:21:20.000Z","dependencies_parsed_at":"2024-11-10T23:38:03.266Z","dependency_job_id":"6d7c46ca-bb5a-4938-926e-154d34efb94e","html_url":"https://github.com/ndp/dizzidotz","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ndp/dizzidotz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ndp%2Fdizzidotz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ndp%2Fdizzidotz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ndp%2Fdizzidotz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ndp%2Fdizzidotz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ndp","download_url":"https://codeload.github.com/ndp/dizzidotz/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ndp%2Fdizzidotz/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34374146,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["circle","es6","functional","noise","rxjs"],"created_at":"2024-11-10T23:37:54.763Z","updated_at":"2026-06-15T17:31:34.880Z","avatar_url":"https://github.com/ndp.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dizzidotz\n\n__Source code for dizzidotz.com__\n\n\u003e There's this circle. \n\u003e A bar goes around it like a clock hand and hits \"pegs\" that are placed in it. \n\u003e It makes noise.\n\nI saw a real one of these at the Exploritorium. Or at least I think I did. I remember it had twelve holes \naround in a circle, and you could place pegs in them. Then a bar went around and range a bell. \nSo you could then make some music-like noise. This is kinda like one of those.\n\n[![Node.js CI](https://github.com/ndp/dizzidotz/actions/workflows/node.js.yml/badge.svg)](https://github.com/ndp/dizzidotz/actions/workflows/node.js.yml)\n\n### Thoughts and Mission\n\nA few themes are driving this project:\n\n  * to explore RxJS and _naked functional reactive programming_ (FRP without a framework). I'm evolving the codebase organically, and I rework the design as I figure out how to make it more reactive. I am using *cycle.js* as an inspiration, but adding pieces as I run across them to see if I end up at a different place.\n  * improve my knowledge of specific technologies: SVG, HTML5 MIDI  sound, in-browser ES6, browser DOM api, CSS animations, Heroku pipelines.\n  * let my kids be my \"project owner\" and drive feature implementation\n\n### Development Logistics\n  \nSee `package.json` for the most important script actions.\n  \n### Test Suite\n\n  * `yarn test`\n  * manual suite:\n    * add peg: verify sound and highlight\n    * restore old pegs: verify sound and highlight\n    * save pegs\n    * restore newly saved pegs: verify sound and highlight\n    * scratch\n  \n### DevOps\n\n  * [Heroku dashboard](https://dashboard.heroku.com/pipelines/68ffa886-6dea-4a15-ad6a-eed1aeb03cbb)\n  * [Staging](https://dizzidotz-staging.herokuapp.com/)\n  * [Prod](https://dizzidotz.com)\n\n### Source Code Style Guide \u0026 Glossary\n\n  * Use `eslint` and editconfig\n  * **El**: Suffix added to variables denoting an HTML **element**.\n  * **$**: Suffix added to variables denoting a stream. Can be read as \"stream.\"\n  * **Iter**: Iterator.\n  \n  \n  \n### Colors\n\nTBD \n\nWhat would a set of colors be?\ntonality sets theme\n * background to wheel\n * arm\n\nInstruments\n * on screen\n * playing\n * growing\n\n\n### References\n\n  * http://tonejs.org/docs/, https://tonejs.github.io/\n  * https://plus.maths.org/content/magical-mathematics-music\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndp%2Fdizzidotz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fndp%2Fdizzidotz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndp%2Fdizzidotz/lists"}