{"id":31885289,"url":"https://github.com/keredson/unotebook","last_synced_at":"2025-10-13T04:48:45.556Z","repository":{"id":317924528,"uuid":"1069297806","full_name":"keredson/unotebook","owner":"keredson","description":"An on-device Juypter Notebook like tool for Micropython.","archived":false,"fork":false,"pushed_at":"2025-10-03T23:19:36.000Z","size":50,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-03T23:26:54.937Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keredson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-03T17:54:20.000Z","updated_at":"2025-10-03T23:18:45.000Z","dependencies_parsed_at":"2025-10-03T23:27:00.042Z","dependency_job_id":"690bdc3d-c975-4ae8-82d1-9b49f7abfc0e","html_url":"https://github.com/keredson/unotebook","commit_stats":null,"previous_names":["keredson/unotebook"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/keredson/unotebook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Funotebook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Funotebook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Funotebook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Funotebook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keredson","download_url":"https://codeload.github.com/keredson/unotebook/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Funotebook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279013678,"owners_count":26085390,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"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":[],"created_at":"2025-10-13T04:48:43.536Z","updated_at":"2025-10-13T04:48:45.542Z","avatar_url":"https://github.com/keredson.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# µNotebook\nAn Juypter Notebook like tool for Pybricks and other Micropython devices.\n\n\u003ca class=\"button-link\" href=\"//unotebook.org/code\"\u003eStart Coding\u003c/a\u003e\n\n## About\nThis started as a way for my kid to program an ESP32-based robot we built.  I've since\nadded support for [Pybricks](https://pybricks.com/) (since he joined [FLL](https://www.firstlegoleague.org/)).\n\nIt supports notebook-style programming in a *mixture* of Python and visual block-style cells.\n\nIt connects to Pybrick devices (like the [Spike Prime Hub](https://education.lego.com/en-us/products/lego-technic-large-hub-for-spike-prime-/45601/)\nand [Mindstorms Inventor Hub](https://www.lego.com/en-lt/product/large-hub-88016)) via Bluetooth and [Micropython](https://micropython.org/) devices\nvia [WebREPL](https://docs.micropython.org/en/latest/esp32/quickref.html#webrepl-web-browser-interactive-prompt).\n\n## Why Notebook-Style Programming for Robotics?\n\nNotebook-style programs are ideal for robotics because they blend code, data, and documentation in one place.\n\nThey enable:\n- Interactive experimentation — run small code cells to move motors, read sensors, or tune parameters without reflashing.\n- Fast iteration — adjust control or perception algorithms and instantly see results.\n- Integrated visualization — plot trajectories, sensor data, or camera frames inline.\n- Reproducibility and sharing — every experiment records its code, output, and notes together.\n- Bridging simulation and hardware — the same notebook can command real robots or virtual ones.\n\nThis workflow shortens the test-observe-refine loop that defines robotics development.\n\n## Why Mix Python and Block Coding?\n\nOur notebook lets students mix block-based and Python code in the same workspace.\n\nThis makes it ideal for learning — beginners can start visually, then see and edit the exact Python code that’s generated.\n\nIt bridges the gap between drag-and-drop logic and real programming, helping students gradually build confidence and understanding without switching tools.\n\nA block example:\n\n![block](screenshots/diff_drive.png)\n\nGenerated this code:\n\n```python\nfrom pybricks.hubs import PrimeHub\nfrom pybricks.robotics import DriveBase\nfrom pybricks.pupdevices import Motor\nfrom pybricks.parameters import Port\nfrom pybricks.parameters import Direction\nhub = PrimeHub()\nbot = DriveBase(\n  Motor(Port.A, positive_direction=Direction.COUNTERCLOCKWISE),\n  Motor(Port.B, positive_direction=Direction.CLOCKWISE),\n  56, 120\n)\n```\n\n## Examples\nCheck out some examples [here](https://github.com/keredson/unotebook/tree/main/examples).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeredson%2Funotebook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeredson%2Funotebook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeredson%2Funotebook/lists"}