{"id":34193849,"url":"https://github.com/initialed85/dinosaur","last_synced_at":"2026-03-09T22:31:22.999Z","repository":{"id":104289783,"uuid":"530931915","full_name":"initialed85/dinosaur","owner":"initialed85","description":"A training tool that gets you to write code like a dinosaur.","archived":false,"fork":false,"pushed_at":"2024-06-16T07:03:27.000Z","size":435,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-18T17:35:51.798Z","etag":null,"topics":["coding-challenge","go","gotty","polyglot-programming","react","typescript"],"latest_commit_sha":null,"homepage":"https://dinosaur.initialed85.cc/","language":"Go","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/initialed85.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":"2022-08-31T04:15:17.000Z","updated_at":"2024-06-16T07:03:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"f5b20659-f3a0-42b9-8164-26a1150a3a27","html_url":"https://github.com/initialed85/dinosaur","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/initialed85/dinosaur","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/initialed85%2Fdinosaur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/initialed85%2Fdinosaur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/initialed85%2Fdinosaur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/initialed85%2Fdinosaur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/initialed85","download_url":"https://codeload.github.com/initialed85/dinosaur/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/initialed85%2Fdinosaur/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30314627,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T20:05:46.299Z","status":"ssl_error","status_checked_at":"2026-03-09T19:57:04.425Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["coding-challenge","go","gotty","polyglot-programming","react","typescript"],"created_at":"2025-12-15T16:49:24.646Z","updated_at":"2026-03-09T22:31:22.987Z","avatar_url":"https://github.com/initialed85.png","language":"Go","readme":"# dinosaur\n\n# status: working but parked, [use it in your browser](https://dinosaur.initialed85.cc/)\n\nA training tool that gets you to write code like a dinosaur.\n\n## Concept\n\n-   User picks a language\n-   User is presented w/ 2 panes; editor and live feed to their code being executed\n-   User makes changes to code to achieve some goal\n\n## Ideas\n\nI don't really know what the goals will be yet, but I'm thinking about about multiplayer challenges- something like:\n\n-   Two players need to exchange some messages with each other\n-   Two players need to complete a set of calculations (over a series of messages) and each player can only see the odd or even half of the\n    steps\n-   Two or more players need to develop a decentralised chat system (discovery etc) without knowing who's out there\n-   Same as above, but now there are adversaries (also players) actively trying to hinder the other players\n\nUltra hard mode would be players on the same team need to discover and communicate with each other using only the code in front of them; in\nthe case where there are adversaries there'd be a whole element of validating that the person you're talking to is a teammate, not an\nadversary.\n\n## Architecture\n\n-   Backend\n    -   [Go](https://go.dev/) w/ built-in HTTP server and subprocess orchestration libs\n    -   [entr](https://github.com/eradman/entr)\n    -   [sorenisanerd's](https://github.com/sorenisanerd) fork of [gotty](https://github.com/sorenisanerd/gotty)\n-   Frontend\n    -   [Create React App](https://create-react-app.dev/)\n    -   [Microsoft Monaco Editor](https://github.com/microsoft/monaco-editor)\n\n## Flows\n\n-   `Frontend` makes a GET request to the backend to be allocated a session\n-   `Frontend` mounts `Shell` component that gives the live feed of the `gotty` session (just as an iframe)\n-   `User` makes edits in `Editor` component\n-   `Editor` component text POST'd to `Backend`\n-   `entr` in `Backend` re-runs code process\n-   `Shell` component in frontend continues to display live feed\n\n## TODO\n\n-   Ability to group sessions together / isolate them from other groups\n-   Record all the packets and interactions for a group with timestamps\n\n## How to run it\n\n### Prerequisites\n\n-   [Go](https://go.dev/)\n-   [Docker](https://www.docker.com/)\n-   [Docker Compose](https://docs.docker.com/compose/)\n\n### Steps\n\n**Build and run in the foreground**\n\n```shell\nmake  # will block and teardown on Ctrl + C\n```\n\n**Build and run in the background**\n\n```shell\nmake up\nmake logs  # optional\nmake down  # teardown\n```\n\n## How to use it\n\nOnce you've got the services up and running, navigate to [http://localhost/](http://localhost/) to see the frontend and select a language to\nplay with.\n\nYou can also navigate directly to a particular language, e.g. [http://localhost/?language=rust](http://localhost/?language=rust).\n\nYou can also share a session by navigating to it's URL in another browser window;\ne.g [http://localhost/?language=rust\u0026session_uuid=(some_uuid)](\u003chttp://localhost/?language=rust\u0026session_uuid=(some_uuid)\u003e)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finitialed85%2Fdinosaur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finitialed85%2Fdinosaur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finitialed85%2Fdinosaur/lists"}